diff --git a/.gitignore b/.gitignore index 8184bca213cbca5e514eb076c15b9230ecb0ec3e..eecef48abaa0b012c465f31bc3a1d2dcb4eaff22 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,8 @@ node_modules/ *.log prepare.sh +__pycache__/ +*.pyc +*.pyo +backend/omr-service/src/.umi/ +backend/python-services/.env diff --git a/Dockerfile b/Dockerfile index cf52b250a4dc202143138590669c5a2fe44e9491..a00819096a0e6dd1d3cea9149ea118fe6c8de1fd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,8 +17,18 @@ FROM node:20-slim ENV DEBIAN_FRONTEND=noninteractive +# Build-time proxy — pass via --build-arg; transparent proxy, not MITM +ARG HTTP_PROXY +ARG HTTPS_PROXY +ARG http_proxy +ARG https_proxy +# Export for all RUN commands during build +ENV http_proxy=${http_proxy:-$HTTP_PROXY} \ + https_proxy=${https_proxy:-$HTTPS_PROXY} + # --- System deps --- RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ postgresql postgresql-client \ nginx \ tini \ @@ -46,6 +56,9 @@ RUN pip install --no-cache-dir --break-system-packages \ pyzmq>=22.0.0 \ msgpack>=1.0.0 +# Clear proxy from final image env +ENV http_proxy= https_proxy= + ENV TF_USE_LEGACY_KERAS=1 ENV PYTHONUNBUFFERED=1 diff --git a/backend/cluster-server/dist/tsconfig.build.tsbuildinfo b/backend/cluster-server/dist/tsconfig.build.tsbuildinfo index 42965d4e24003226d5c3dcb5e4da909995f4fba6..b69089d87452cd7ebb70f6ac5e80b6240c16d27e 100644 --- a/backend/cluster-server/dist/tsconfig.build.tsbuildinfo +++ b/backend/cluster-server/dist/tsconfig.build.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2017.full.d.ts","../node_modules/@mikro-orm/core/naming-strategy/NamingStrategy.d.ts","../node_modules/@mikro-orm/core/naming-strategy/AbstractNamingStrategy.d.ts","../node_modules/@mikro-orm/core/naming-strategy/MongoNamingStrategy.d.ts","../node_modules/@mikro-orm/core/naming-strategy/UnderscoreNamingStrategy.d.ts","../node_modules/@mikro-orm/core/naming-strategy/EntityCaseNamingStrategy.d.ts","../node_modules/@mikro-orm/core/naming-strategy/index.d.ts","../node_modules/@mikro-orm/core/cache/CacheAdapter.d.ts","../node_modules/@mikro-orm/core/cache/NullCacheAdapter.d.ts","../node_modules/@mikro-orm/core/cache/FileCacheAdapter.d.ts","../node_modules/@mikro-orm/core/cache/MemoryCacheAdapter.d.ts","../node_modules/@mikro-orm/core/cache/index.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/ts5.6/globals.typedarray.d.ts","../node_modules/@types/node/ts5.6/buffer.buffer.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/ts5.6/index.d.ts","../node_modules/@mikro-orm/core/entity/EntityIdentifier.d.ts","../node_modules/@mikro-orm/core/entity/EntityValidator.d.ts","../node_modules/@mikro-orm/core/entity/EntityAssigner.d.ts","../node_modules/@mikro-orm/core/entity/EntityHelper.d.ts","../node_modules/@mikro-orm/core/exceptions.d.ts","../node_modules/@mikro-orm/core/platforms/ExceptionConverter.d.ts","../node_modules/@mikro-orm/core/enums.d.ts","../node_modules/@mikro-orm/core/types/Type.d.ts","../node_modules/@mikro-orm/core/types/DateType.d.ts","../node_modules/@mikro-orm/core/types/TimeType.d.ts","../node_modules/@mikro-orm/core/types/DateTimeType.d.ts","../node_modules/@mikro-orm/core/types/BigIntType.d.ts","../node_modules/@mikro-orm/core/types/Uint8ArrayType.d.ts","../node_modules/@mikro-orm/core/types/BlobType.d.ts","../node_modules/@mikro-orm/core/types/ArrayType.d.ts","../node_modules/@mikro-orm/core/types/EnumArrayType.d.ts","../node_modules/@mikro-orm/core/types/EnumType.d.ts","../node_modules/@mikro-orm/core/types/JsonType.d.ts","../node_modules/@mikro-orm/core/types/IntegerType.d.ts","../node_modules/@mikro-orm/core/types/SmallIntType.d.ts","../node_modules/@mikro-orm/core/types/TinyIntType.d.ts","../node_modules/@mikro-orm/core/types/MediumIntType.d.ts","../node_modules/@mikro-orm/core/types/FloatType.d.ts","../node_modules/@mikro-orm/core/types/DoubleType.d.ts","../node_modules/@mikro-orm/core/types/BooleanType.d.ts","../node_modules/@mikro-orm/core/types/DecimalType.d.ts","../node_modules/@mikro-orm/core/types/StringType.d.ts","../node_modules/@mikro-orm/core/types/UuidType.d.ts","../node_modules/@mikro-orm/core/types/TextType.d.ts","../node_modules/@mikro-orm/core/types/UnknownType.d.ts","../node_modules/@mikro-orm/core/types/index.d.ts","../node_modules/@mikro-orm/core/decorators/Property.d.ts","../node_modules/@mikro-orm/core/decorators/PrimaryKey.d.ts","../node_modules/@mikro-orm/core/decorators/Entity.d.ts","../node_modules/@mikro-orm/core/decorators/OneToMany.d.ts","../node_modules/@mikro-orm/core/decorators/OneToOne.d.ts","../node_modules/@mikro-orm/core/decorators/ManyToOne.d.ts","../node_modules/@mikro-orm/core/decorators/ManyToMany.d.ts","../node_modules/@mikro-orm/core/decorators/Check.d.ts","../node_modules/@mikro-orm/core/decorators/Enum.d.ts","../node_modules/@mikro-orm/core/decorators/Formula.d.ts","../node_modules/@mikro-orm/core/decorators/Indexed.d.ts","../node_modules/@mikro-orm/core/decorators/Embeddable.d.ts","../node_modules/@mikro-orm/core/decorators/Embedded.d.ts","../node_modules/@mikro-orm/core/decorators/Filter.d.ts","../node_modules/@mikro-orm/core/unit-of-work/ChangeSet.d.ts","../node_modules/@mikro-orm/core/unit-of-work/ChangeSetComputer.d.ts","../node_modules/@mikro-orm/core/entity/Reference.d.ts","../node_modules/@mikro-orm/core/entity/ArrayCollection.d.ts","../node_modules/@mikro-orm/core/entity/Collection.d.ts","../node_modules/@mikro-orm/core/drivers/DatabaseDriver.d.ts","../node_modules/@mikro-orm/core/drivers/index.d.ts","../node_modules/@mikro-orm/core/unit-of-work/ChangeSetPersister.d.ts","../node_modules/@mikro-orm/core/unit-of-work/CommitOrderCalculator.d.ts","../node_modules/@mikro-orm/core/unit-of-work/IdentityMap.d.ts","../node_modules/@mikro-orm/core/unit-of-work/UnitOfWork.d.ts","../node_modules/@mikro-orm/core/unit-of-work/index.d.ts","../node_modules/@mikro-orm/core/events/EventSubscriber.d.ts","../node_modules/@mikro-orm/core/events/EventManager.d.ts","../node_modules/@mikro-orm/core/events/TransactionEventBroadcaster.d.ts","../node_modules/@mikro-orm/core/events/index.d.ts","../node_modules/@mikro-orm/core/decorators/Subscriber.d.ts","../node_modules/@mikro-orm/core/MikroORM.d.ts","../node_modules/@mikro-orm/core/decorators/UseRequestContext.d.ts","../node_modules/@mikro-orm/core/decorators/CreateRequestContext.d.ts","../node_modules/@mikro-orm/core/decorators/hooks.d.ts","../node_modules/@mikro-orm/core/decorators/index.d.ts","../node_modules/@mikro-orm/core/metadata/EntitySchema.d.ts","../node_modules/@mikro-orm/core/metadata/MetadataStorage.d.ts","../node_modules/@mikro-orm/core/metadata/MetadataDiscovery.d.ts","../node_modules/@mikro-orm/core/metadata/MetadataProvider.d.ts","../node_modules/@mikro-orm/core/metadata/MetadataValidator.d.ts","../node_modules/@mikro-orm/core/metadata/JavaScriptMetadataProvider.d.ts","../node_modules/@mikro-orm/core/node_modules/reflect-metadata/index.d.ts","../node_modules/@mikro-orm/core/metadata/ReflectMetadataProvider.d.ts","../node_modules/@mikro-orm/core/metadata/index.d.ts","../node_modules/@mikro-orm/core/drivers/IDatabaseDriver.d.ts","../node_modules/@mikro-orm/core/platforms/Platform.d.ts","../node_modules/@mikro-orm/core/platforms/index.d.ts","../node_modules/@mikro-orm/core/utils/EntityComparator.d.ts","../node_modules/@mikro-orm/core/entity/EntityFactory.d.ts","../node_modules/@mikro-orm/core/entity/EntityLoader.d.ts","../node_modules/@mikro-orm/core/entity/BaseEntity.d.ts","../node_modules/@mikro-orm/core/serialization/SerializationContext.d.ts","../node_modules/@mikro-orm/core/entity/WrappedEntity.d.ts","../node_modules/@mikro-orm/core/entity/wrap.d.ts","../node_modules/@mikro-orm/core/entity/index.d.ts","../node_modules/@mikro-orm/core/EntityManager.d.ts","../node_modules/@mikro-orm/core/entity/EntityRepository.d.ts","../node_modules/@mikro-orm/core/logging/colors.d.ts","../node_modules/@mikro-orm/core/logging/Logger.d.ts","../node_modules/@mikro-orm/core/logging/DefaultLogger.d.ts","../node_modules/@mikro-orm/core/logging/SimpleLogger.d.ts","../node_modules/@mikro-orm/core/logging/index.d.ts","../node_modules/@mikro-orm/core/utils/Configuration.d.ts","../node_modules/@mikro-orm/core/utils/ConfigurationLoader.d.ts","../node_modules/@nodelib/fs.stat/out/types/index.d.ts","../node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts","../node_modules/@nodelib/fs.stat/out/settings.d.ts","../node_modules/@nodelib/fs.stat/out/providers/async.d.ts","../node_modules/@nodelib/fs.stat/out/index.d.ts","../node_modules/@nodelib/fs.scandir/out/types/index.d.ts","../node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts","../node_modules/@nodelib/fs.scandir/out/settings.d.ts","../node_modules/@nodelib/fs.scandir/out/providers/async.d.ts","../node_modules/@nodelib/fs.scandir/out/index.d.ts","../node_modules/@nodelib/fs.walk/out/types/index.d.ts","../node_modules/@nodelib/fs.walk/out/settings.d.ts","../node_modules/@nodelib/fs.walk/out/readers/reader.d.ts","../node_modules/@nodelib/fs.walk/out/readers/async.d.ts","../node_modules/@nodelib/fs.walk/out/providers/async.d.ts","../node_modules/@nodelib/fs.walk/out/index.d.ts","../node_modules/fast-glob/out/types/index.d.ts","../node_modules/fast-glob/out/settings.d.ts","../node_modules/fast-glob/out/managers/tasks.d.ts","../node_modules/fast-glob/out/index.d.ts","../node_modules/globby/index.d.ts","../node_modules/@mikro-orm/core/utils/Utils.d.ts","../node_modules/@mikro-orm/core/utils/RequestContext.d.ts","../node_modules/@mikro-orm/core/utils/TransactionContext.d.ts","../node_modules/@mikro-orm/core/utils/QueryHelper.d.ts","../node_modules/@mikro-orm/core/utils/NullHighlighter.d.ts","../node_modules/@mikro-orm/core/utils/AbstractSchemaGenerator.d.ts","../node_modules/@mikro-orm/core/utils/upsert-utils.d.ts","../node_modules/@mikro-orm/core/utils/index.d.ts","../node_modules/@mikro-orm/core/connections/Connection.d.ts","../node_modules/@mikro-orm/core/connections/index.d.ts","../node_modules/@mikro-orm/core/serialization/EntityTransformer.d.ts","../node_modules/@mikro-orm/core/serialization/EntitySerializer.d.ts","../node_modules/@mikro-orm/core/serialization/index.d.ts","../node_modules/@mikro-orm/core/typings.d.ts","../node_modules/@mikro-orm/core/errors.d.ts","../node_modules/@mikro-orm/core/hydration/Hydrator.d.ts","../node_modules/@mikro-orm/core/hydration/ObjectHydrator.d.ts","../node_modules/@mikro-orm/core/hydration/index.d.ts","../node_modules/@mikro-orm/core/index.d.ts","../node_modules/reflect-metadata/index.d.ts","../node_modules/@nestjs/common/cache/cache.constants.d.ts","../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../node_modules/rxjs/dist/types/internal/Subscription.d.ts","../node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../node_modules/rxjs/dist/types/internal/Operator.d.ts","../node_modules/rxjs/dist/types/internal/Observable.d.ts","../node_modules/rxjs/dist/types/internal/types.d.ts","../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../node_modules/rxjs/dist/types/internal/Subject.d.ts","../node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../node_modules/rxjs/dist/types/internal/Notification.d.ts","../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/onErrorResumeNextWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../node_modules/rxjs/dist/types/operators/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/timerHandle.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../node_modules/rxjs/dist/types/testing/index.d.ts","../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/dist/types/internal/config.d.ts","../node_modules/rxjs/dist/types/index.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../node_modules/@nestjs/common/enums/index.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../node_modules/@nestjs/common/services/logger.service.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/index.d.ts","../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../node_modules/@nestjs/common/interfaces/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-manager.interface.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-module.interface.d.ts","../node_modules/@nestjs/common/cache/cache.module.d.ts","../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/index.d.ts","../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/index.d.ts","../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/index.d.ts","../node_modules/@nestjs/common/decorators/index.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-key.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-ttl.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/index.d.ts","../node_modules/@nestjs/common/cache/interceptors/cache.interceptor.d.ts","../node_modules/@nestjs/common/cache/interceptors/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/index.d.ts","../node_modules/@nestjs/common/cache/index.d.ts","../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../node_modules/@nestjs/common/exceptions/index.d.ts","../node_modules/@nestjs/common/file-stream/streamable-options.interface.d.ts","../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../node_modules/@nestjs/common/file-stream/index.d.ts","../node_modules/axios/index.d.ts","../node_modules/@nestjs/common/http/interfaces/http-module.interface.d.ts","../node_modules/@nestjs/common/http/interfaces/raw-body-request.interface.d.ts","../node_modules/@nestjs/common/http/interfaces/index.d.ts","../node_modules/@nestjs/common/http/http.module.d.ts","../node_modules/@nestjs/common/http/http.service.d.ts","../node_modules/@nestjs/common/http/index.d.ts","../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../node_modules/@nestjs/common/pipes/index.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../node_modules/@nestjs/common/serializer/index.d.ts","../node_modules/@nestjs/common/services/console-logger.service.d.ts","../node_modules/@nestjs/common/services/index.d.ts","../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../node_modules/@nestjs/common/utils/index.d.ts","../node_modules/@nestjs/common/index.d.ts","../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../node_modules/@nestjs/core/adapters/index.d.ts","../node_modules/@nestjs/core/injector/module-token-factory.d.ts","../node_modules/@nestjs/core/injector/compiler.d.ts","../node_modules/@nestjs/core/injector/modules-container.d.ts","../node_modules/@nestjs/core/injector/container.d.ts","../node_modules/@nestjs/core/injector/module-ref.d.ts","../node_modules/@nestjs/core/injector/module.d.ts","../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../node_modules/@nestjs/core/application-config.d.ts","../node_modules/@nestjs/core/constants.d.ts","../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../node_modules/@nestjs/core/discovery/index.d.ts","../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/index.d.ts","../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../node_modules/@nestjs/core/helpers/index.d.ts","../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../node_modules/@nestjs/core/metadata-scanner.d.ts","../node_modules/@nestjs/core/scanner.d.ts","../node_modules/@nestjs/core/injector/injector.d.ts","../node_modules/@nestjs/core/injector/instance-loader.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader.d.ts","../node_modules/@nestjs/core/injector/index.d.ts","../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../node_modules/@nestjs/core/middleware/builder.d.ts","../node_modules/@nestjs/core/middleware/index.d.ts","../node_modules/@nestjs/core/nest-application-context.d.ts","../node_modules/@nestjs/core/nest-application.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../node_modules/@nestjs/core/nest-factory.d.ts","../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../node_modules/@nestjs/core/router/interfaces/index.d.ts","../node_modules/@nestjs/core/router/request/request-constants.d.ts","../node_modules/@nestjs/core/router/request/index.d.ts","../node_modules/@nestjs/core/router/router-module.d.ts","../node_modules/@nestjs/core/router/index.d.ts","../node_modules/@nestjs/core/services/reflector.service.d.ts","../node_modules/@nestjs/core/services/index.d.ts","../node_modules/@nestjs/core/index.d.ts","../node_modules/@mikro-orm/nestjs/typings.d.ts","../node_modules/@mikro-orm/nestjs/mikro-orm.module.d.ts","../node_modules/@mikro-orm/nestjs/mikro-orm.common.d.ts","../node_modules/@mikro-orm/nestjs/mikro-orm.middleware.d.ts","../node_modules/@mikro-orm/nestjs/multiple-mikro-orm.middleware.d.ts","../node_modules/@mikro-orm/nestjs/index.d.ts","../node_modules/@mikro-orm/sql-highlighter/Tokenizer.d.ts","../node_modules/ansi-colors/types/index.d.ts","../node_modules/@mikro-orm/sql-highlighter/enums.d.ts","../node_modules/@mikro-orm/sql-highlighter/SqlHighlighter.d.ts","../node_modules/@mikro-orm/sql-highlighter/index.d.ts","../node_modules/@ts-morph/common/lib/typescript.d.ts","../node_modules/@ts-morph/common/lib/ts-morph-common.d.ts","../node_modules/ts-morph/lib/ts-morph.d.ts","../node_modules/@mikro-orm/reflection/TsMorphMetadataProvider.d.ts","../node_modules/@mikro-orm/reflection/index.d.ts","../mikro-orm.config.ts","../src/app.service.ts","../src/app.controller.ts","../src/scores/dto/create-measure.dto.ts","../node_modules/@nestjs/swagger/dist/decorators/api-basic.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-bearer.decorator.d.ts","../node_modules/@nestjs/swagger/dist/interfaces/open-api-spec.interface.d.ts","../node_modules/@nestjs/swagger/dist/types/swagger-enum.type.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-body.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-consumes.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-cookie.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-exclude-endpoint.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-exclude-controller.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-extra-models.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-header.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-hide-property.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-oauth2.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-operation.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-param.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-produces.decorator.d.ts","../node_modules/@nestjs/swagger/dist/interfaces/schema-object-metadata.interface.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-property.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-query.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-response.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-security.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-use-tags.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-extension.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/index.d.ts","../node_modules/@nestjs/swagger/dist/interfaces/swagger-custom-options.interface.d.ts","../node_modules/@nestjs/swagger/dist/interfaces/swagger-document-options.interface.d.ts","../node_modules/@nestjs/swagger/dist/interfaces/index.d.ts","../node_modules/@nestjs/swagger/dist/document-builder.d.ts","../node_modules/@nestjs/swagger/dist/swagger-module.d.ts","../node_modules/@nestjs/swagger/dist/type-helpers/intersection-type.helper.d.ts","../node_modules/@nestjs/swagger/dist/type-helpers/omit-type.helper.d.ts","../node_modules/@nestjs/swagger/dist/type-helpers/partial-type.helper.d.ts","../node_modules/@nestjs/swagger/dist/type-helpers/pick-type.helper.d.ts","../node_modules/@nestjs/swagger/dist/type-helpers/index.d.ts","../node_modules/@nestjs/swagger/dist/utils/get-schema-path.util.d.ts","../node_modules/@nestjs/swagger/dist/utils/index.d.ts","../node_modules/@nestjs/swagger/dist/index.d.ts","../node_modules/@nestjs/swagger/index.d.ts","../src/scores/entities/score.entity.ts","../src/scores/entities/measure.entity.ts","../node_modules/tarn/dist/PromiseInspection.d.ts","../node_modules/tarn/dist/utils.d.ts","../node_modules/tarn/dist/PendingOperation.d.ts","../node_modules/tarn/dist/Resource.d.ts","../node_modules/tarn/dist/Pool.d.ts","../node_modules/tarn/dist/TimeoutError.d.ts","../node_modules/tarn/dist/tarn.d.ts","../node_modules/knex/types/result.d.ts","../node_modules/knex/types/tables.d.ts","../node_modules/knex/types/index.d.ts","../node_modules/@mikro-orm/knex/query/enums.d.ts","../node_modules/@mikro-orm/knex/typings.d.ts","../node_modules/@mikro-orm/knex/schema/SchemaHelper.d.ts","../node_modules/@mikro-orm/knex/schema/DatabaseTable.d.ts","../node_modules/@mikro-orm/knex/schema/DatabaseSchema.d.ts","../node_modules/@mikro-orm/knex/query/QueryBuilderHelper.d.ts","../node_modules/@mikro-orm/knex/SqlEntityRepository.d.ts","../node_modules/@mikro-orm/knex/SqlEntityManager.d.ts","../node_modules/@mikro-orm/knex/query/QueryBuilder.d.ts","../node_modules/@mikro-orm/knex/query/CriteriaNode.d.ts","../node_modules/@mikro-orm/knex/query/ArrayCriteriaNode.d.ts","../node_modules/@mikro-orm/knex/query/ObjectCriteriaNode.d.ts","../node_modules/@mikro-orm/knex/query/ScalarCriteriaNode.d.ts","../node_modules/@mikro-orm/knex/query/CriteriaNodeFactory.d.ts","../node_modules/@mikro-orm/knex/query/index.d.ts","../node_modules/@mikro-orm/knex/AbstractSqlDriver.d.ts","../node_modules/@mikro-orm/knex/schema/SchemaGenerator.d.ts","../node_modules/@mikro-orm/knex/schema/SchemaComparator.d.ts","../node_modules/@mikro-orm/knex/schema/index.d.ts","../node_modules/@mikro-orm/knex/AbstractSqlPlatform.d.ts","../node_modules/@mikro-orm/knex/AbstractSqlConnection.d.ts","../node_modules/@mikro-orm/knex/MonkeyPatchable.d.ts","../node_modules/@mikro-orm/knex/index.d.ts","../node_modules/@mikro-orm/sqlite/SqliteConnection.d.ts","../node_modules/@mikro-orm/sqlite/SqliteDriver.d.ts","../node_modules/@mikro-orm/sqlite/SqliteSchemaHelper.d.ts","../node_modules/@mikro-orm/sqlite/SqliteExceptionConverter.d.ts","../node_modules/@mikro-orm/sqlite/SqlitePlatform.d.ts","../node_modules/@mikro-orm/sqlite/SqliteMikroORM.d.ts","../node_modules/@mikro-orm/sqlite/index.d.ts","../src/scores/dto/create-score.dto.ts","../src/scores/scores.service.ts","../src/scores/dto/pagination.ts","../src/scores/scores.controller.ts","../src/scores/scores.module.ts","../node_modules/@types/send/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/http-errors/index.d.ts","../node_modules/@types/mime/index.d.ts","../node_modules/@types/serve-static/node_modules/@types/send/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/express/index.d.ts","../src/shared/interceptor/transform.interceptor.ts","../src/filters/http-exception.filter.ts","../src/app.module.ts","../src/main.ts","../node_modules/@types/argparse/index.d.ts","../node_modules/@rushstack/ts-command-line/dist/ts-command-line.d.ts","../node_modules/umzug/lib/cli.d.ts","../node_modules/umzug/node_modules/emittery/index.d.ts","../node_modules/pony-cause/lib/error-with-cause.d.ts","../node_modules/pony-cause/lib/helpers.d.ts","../node_modules/pony-cause/index.d.ts","../node_modules/umzug/lib/storage/contract.d.ts","../node_modules/umzug/lib/storage/json.d.ts","../node_modules/umzug/lib/storage/memory.d.ts","../node_modules/umzug/lib/storage/mongodb.d.ts","../node_modules/umzug/node_modules/type-fest/source/primitive.d.ts","../node_modules/umzug/node_modules/type-fest/source/typed-array.d.ts","../node_modules/umzug/node_modules/type-fest/source/basic.d.ts","../node_modules/umzug/node_modules/type-fest/source/observable-like.d.ts","../node_modules/umzug/node_modules/type-fest/source/empty-object.d.ts","../node_modules/umzug/node_modules/type-fest/source/is-equal.d.ts","../node_modules/umzug/node_modules/type-fest/source/except.d.ts","../node_modules/umzug/node_modules/type-fest/source/tagged-union.d.ts","../node_modules/umzug/node_modules/type-fest/source/simplify.d.ts","../node_modules/umzug/node_modules/type-fest/source/writable.d.ts","../node_modules/umzug/node_modules/type-fest/source/trim.d.ts","../node_modules/umzug/node_modules/type-fest/source/is-any.d.ts","../node_modules/umzug/node_modules/type-fest/source/internal.d.ts","../node_modules/umzug/node_modules/type-fest/source/writable-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/omit-index-signature.d.ts","../node_modules/umzug/node_modules/type-fest/source/pick-index-signature.d.ts","../node_modules/umzug/node_modules/type-fest/source/enforce-optional.d.ts","../node_modules/umzug/node_modules/type-fest/source/merge.d.ts","../node_modules/umzug/node_modules/type-fest/source/conditional-simplify.d.ts","../node_modules/umzug/node_modules/type-fest/source/merge-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/merge-exclusive.d.ts","../node_modules/umzug/node_modules/type-fest/source/require-at-least-one.d.ts","../node_modules/umzug/node_modules/type-fest/source/require-exactly-one.d.ts","../node_modules/umzug/node_modules/type-fest/source/require-all-or-none.d.ts","../node_modules/umzug/node_modules/type-fest/source/partial-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/required-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/partial-on-undefined-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/readonly-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/literal-union.d.ts","../node_modules/umzug/node_modules/type-fest/source/promisable.d.ts","../node_modules/umzug/node_modules/type-fest/source/opaque.d.ts","../node_modules/umzug/node_modules/type-fest/source/invariant-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/set-optional.d.ts","../node_modules/umzug/node_modules/type-fest/source/set-readonly.d.ts","../node_modules/umzug/node_modules/type-fest/source/set-required.d.ts","../node_modules/umzug/node_modules/type-fest/source/set-non-nullable.d.ts","../node_modules/umzug/node_modules/type-fest/source/value-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/async-return-type.d.ts","../node_modules/umzug/node_modules/type-fest/source/conditional-keys.d.ts","../node_modules/umzug/node_modules/type-fest/source/conditional-except.d.ts","../node_modules/umzug/node_modules/type-fest/source/conditional-pick.d.ts","../node_modules/umzug/node_modules/type-fest/source/conditional-pick-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/union-to-intersection.d.ts","../node_modules/umzug/node_modules/type-fest/source/stringified.d.ts","../node_modules/umzug/node_modules/type-fest/source/fixed-length-array.d.ts","../node_modules/umzug/node_modules/type-fest/source/multidimensional-array.d.ts","../node_modules/umzug/node_modules/type-fest/source/multidimensional-readonly-array.d.ts","../node_modules/umzug/node_modules/type-fest/source/iterable-element.d.ts","../node_modules/umzug/node_modules/type-fest/source/entry.d.ts","../node_modules/umzug/node_modules/type-fest/source/entries.d.ts","../node_modules/umzug/node_modules/type-fest/source/is-unknown.d.ts","../node_modules/umzug/node_modules/type-fest/source/set-return-type.d.ts","../node_modules/umzug/node_modules/type-fest/source/asyncify.d.ts","../node_modules/umzug/node_modules/type-fest/source/numeric.d.ts","../node_modules/umzug/node_modules/type-fest/source/jsonify.d.ts","../node_modules/umzug/node_modules/type-fest/source/jsonifiable.d.ts","../node_modules/umzug/node_modules/type-fest/source/schema.d.ts","../node_modules/umzug/node_modules/type-fest/source/literal-to-primitive.d.ts","../node_modules/umzug/node_modules/type-fest/source/literal-to-primitive-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/string-key-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/exact.d.ts","../node_modules/umzug/node_modules/type-fest/source/readonly-tuple.d.ts","../node_modules/umzug/node_modules/type-fest/source/optional-keys-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/override-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/has-optional-keys.d.ts","../node_modules/umzug/node_modules/type-fest/source/required-keys-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/has-required-keys.d.ts","../node_modules/umzug/node_modules/type-fest/source/readonly-keys-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/has-readonly-keys.d.ts","../node_modules/umzug/node_modules/type-fest/source/writable-keys-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/has-writable-keys.d.ts","../node_modules/umzug/node_modules/type-fest/source/spread.d.ts","../node_modules/umzug/node_modules/type-fest/source/tuple-to-union.d.ts","../node_modules/umzug/node_modules/type-fest/source/is-never.d.ts","../node_modules/umzug/node_modules/type-fest/source/is-literal.d.ts","../node_modules/umzug/node_modules/type-fest/source/if-any.d.ts","../node_modules/umzug/node_modules/type-fest/source/if-never.d.ts","../node_modules/umzug/node_modules/type-fest/source/if-unknown.d.ts","../node_modules/umzug/node_modules/type-fest/source/split-words.d.ts","../node_modules/umzug/node_modules/type-fest/source/camel-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/camel-cased-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/camel-cased-properties-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/delimiter-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/kebab-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/delimiter-cased-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/kebab-cased-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/kebab-cased-properties-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/pascal-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/pascal-cased-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/pascal-cased-properties-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/snake-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/snake-cased-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/snake-cased-properties-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/includes.d.ts","../node_modules/umzug/node_modules/type-fest/source/screaming-snake-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/join.d.ts","../node_modules/umzug/node_modules/type-fest/source/split.d.ts","../node_modules/umzug/node_modules/type-fest/source/replace.d.ts","../node_modules/umzug/node_modules/type-fest/source/get.d.ts","../node_modules/umzug/node_modules/type-fest/source/last-array-element.d.ts","../node_modules/umzug/node_modules/type-fest/source/global-this.d.ts","../node_modules/umzug/node_modules/type-fest/source/package-json.d.ts","../node_modules/umzug/node_modules/type-fest/source/tsconfig-json.d.ts","../node_modules/umzug/node_modules/type-fest/index.d.ts","../node_modules/umzug/lib/storage/sequelize.d.ts","../node_modules/umzug/lib/storage/index.d.ts","../node_modules/umzug/lib/types.d.ts","../node_modules/umzug/lib/umzug.d.ts","../node_modules/umzug/lib/file-locker.d.ts","../node_modules/umzug/lib/index.d.ts","../node_modules/@mikro-orm/migrations/Migration.d.ts","../node_modules/@mikro-orm/migrations/typings.d.ts","../node_modules/@mikro-orm/migrations/MigrationStorage.d.ts","../node_modules/@mikro-orm/migrations/Migrator.d.ts","../node_modules/@mikro-orm/migrations/MigrationRunner.d.ts","../node_modules/@mikro-orm/migrations/MigrationGenerator.d.ts","../node_modules/@mikro-orm/migrations/JSMigrationGenerator.d.ts","../node_modules/@mikro-orm/migrations/TSMigrationGenerator.d.ts","../node_modules/@mikro-orm/migrations/index.d.ts","../src/migrations/Migration20220316063840.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/cookiejar/index.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/jest-diff/build/cleanupSemantic.d.ts","../node_modules/pretty-format/build/types.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/types.d.ts","../node_modules/jest-diff/build/diffLines.d.ts","../node_modules/jest-diff/build/printDiffs.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/methods/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/prettier/index.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/superagent/lib/agent-base.d.ts","../node_modules/@types/superagent/lib/node/response.d.ts","../node_modules/@types/superagent/types.d.ts","../node_modules/@types/superagent/lib/node/agent.d.ts","../node_modules/buffer/index.d.ts","../node_modules/@types/superagent/lib/request-base.d.ts","../node_modules/form-data/index.d.ts","../node_modules/@types/superagent/lib/node/http2wrapper.d.ts","../node_modules/@types/superagent/lib/node/index.d.ts","../node_modules/@types/superagent/index.d.ts","../node_modules/@types/supertest/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../../../node_modules/@types/ace/index.d.ts","../../../node_modules/@types/color-name/index.d.ts","../../../node_modules/@types/color-convert/conversions.d.ts","../../../node_modules/@types/color-convert/route.d.ts","../../../node_modules/@types/color-convert/index.d.ts","../../../node_modules/@types/color/index.d.ts","../../../node_modules/@types/dom4/index.d.ts","../../../node_modules/@types/downloadjs/index.d.ts","../../../node_modules/@types/hapi__joi/index.d.ts","../../../node_modules/@types/react/ts5.0/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/react/ts5.0/index.d.ts","../../../node_modules/@types/hoist-non-react-statics/index.d.ts","../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../node_modules/@types/invariant/index.d.ts","../../../node_modules/@types/js-cookie/index.d.ts","../../../node_modules/ajv/lib/ajv.d.ts","../../../node_modules/@types/jsoneditor/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/offscreencanvas/index.d.ts","../../../node_modules/@types/react-beautiful-dnd/index.d.ts","../../../node_modules/@types/react-dom/index.d.ts","../../../node_modules/@types/react-image-crop/index.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/base_factory.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/display_utils.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/optional_content_config.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/annotation_storage.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/shared/util.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/metadata.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/shared/message_handler.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/api.d.ts","../../../node_modules/@types/react-pdf/dist/Document.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/editor/tools.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/editor/editor.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/editor/annotation_editor_layer.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/annotation_layer_builder.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/text_accessibility.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/annotation_editor_layer_builder.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/event_utils.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/pdf_find_controller.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/text_highlighter.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/text_layer_builder.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/xfa_layer_builder.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/interfaces.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/annotation_layer.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/worker_options.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/text_layer.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/svg.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/xfa_layer.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/pdf.d.ts","../../../node_modules/@types/react-pdf/dist/Outline.d.ts","../../../node_modules/@types/react-pdf/dist/Page.d.ts","../../../node_modules/@types/react-pdf/dist/pdfjs-dist.d.ts","../../../node_modules/@types/react-pdf/index.d.ts","../../../node_modules/redux/index.d.ts","../../../node_modules/@types/react-redux/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/spark-md5/index.d.ts","../../../node_modules/@types/stylis/index.d.ts","../../../node_modules/@types/three/src/constants.d.ts","../../../node_modules/@types/three/src/Three.Legacy.d.ts","../../../node_modules/@types/three/src/math/Quaternion.d.ts","../../../node_modules/@types/three/src/math/Euler.d.ts","../../../node_modules/@types/three/src/core/Layers.d.ts","../../../node_modules/@types/three/src/scenes/Fog.d.ts","../../../node_modules/@types/three/src/math/Vector2.d.ts","../../../node_modules/@types/three/src/math/Triangle.d.ts","../../../node_modules/@types/three/src/math/Box3.d.ts","../../../node_modules/@types/three/src/math/Sphere.d.ts","../../../node_modules/@types/three/src/math/Line3.d.ts","../../../node_modules/@types/three/src/math/Plane.d.ts","../../../node_modules/@types/three/src/core/EventDispatcher.d.ts","../../../node_modules/@types/three/src/renderers/shaders/UniformsLib.d.ts","../../../node_modules/@types/three/src/renderers/shaders/ShaderLib.d.ts","../../../node_modules/@types/three/src/textures/Texture.d.ts","../../../node_modules/@types/three/src/materials/Material.d.ts","../../../node_modules/@types/three/src/scenes/Scene.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLShader.d.ts","../../../node_modules/@types/three/src/math/Vector4.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLUtils.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLTextures.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLUniforms.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLObjects.d.ts","../../../node_modules/@types/three/src/objects/Group.d.ts","../../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts","../../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts","../../../node_modules/@types/three/src/core/BufferGeometry.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts","../../../node_modules/@types/three/src/lights/LightShadow.d.ts","../../../node_modules/@types/three/src/lights/Light.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLShadowMap.d.ts","../../../node_modules/@types/three/src/textures/DepthTexture.d.ts","../../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts","../../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts","../../../node_modules/@types/three/src/renderers/webxr/WebXRManager.d.ts","../../../node_modules/@types/three/src/textures/DataTexture3D.d.ts","../../../node_modules/@types/three/src/textures/DataTexture2DArray.d.ts","../../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts","../../../node_modules/@types/three/src/math/Ray.d.ts","../../../node_modules/@types/three/src/core/Raycaster.d.ts","../../../node_modules/@types/three/src/math/Interpolant.d.ts","../../../node_modules/@types/three/src/math/interpolants/DiscreteInterpolant.d.ts","../../../node_modules/@types/three/src/math/interpolants/LinearInterpolant.d.ts","../../../node_modules/@types/three/src/math/interpolants/CubicInterpolant.d.ts","../../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts","../../../node_modules/@types/three/src/objects/Bone.d.ts","../../../node_modules/@types/three/src/animation/AnimationClip.d.ts","../../../node_modules/@types/three/src/core/Object3D.d.ts","../../../node_modules/@types/three/src/cameras/Camera.d.ts","../../../node_modules/@types/three/src/math/Spherical.d.ts","../../../node_modules/@types/three/src/math/Cylindrical.d.ts","../../../node_modules/@types/three/src/math/Vector3.d.ts","../../../node_modules/@types/three/src/math/Matrix4.d.ts","../../../node_modules/@types/three/src/math/Matrix3.d.ts","../../../node_modules/@types/three/src/core/BufferAttribute.d.ts","../../../node_modules/@types/three/src/math/Color.d.ts","../../../node_modules/@types/three/src/utils.d.ts","../../../node_modules/@types/three/src/animation/tracks/VectorKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/tracks/StringKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/tracks/QuaternionKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/tracks/NumberKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/tracks/ColorKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/tracks/BooleanKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/PropertyMixer.d.ts","../../../node_modules/@types/three/src/animation/PropertyBinding.d.ts","../../../node_modules/@types/three/src/animation/AnimationUtils.d.ts","../../../node_modules/@types/three/src/animation/AnimationObjectGroup.d.ts","../../../node_modules/@types/three/src/animation/AnimationAction.d.ts","../../../node_modules/@types/three/src/animation/AnimationMixer.d.ts","../../../node_modules/@types/three/src/audio/AudioContext.d.ts","../../../node_modules/@types/three/src/audio/AudioListener.d.ts","../../../node_modules/@types/three/src/audio/Audio.d.ts","../../../node_modules/@types/three/src/audio/PositionalAudio.d.ts","../../../node_modules/@types/three/src/audio/AudioAnalyser.d.ts","../../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts","../../../node_modules/@types/three/src/cameras/StereoCamera.d.ts","../../../node_modules/@types/three/src/cameras/OrthographicCamera.d.ts","../../../node_modules/@types/three/src/textures/CubeTexture.d.ts","../../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts","../../../node_modules/@types/three/src/cameras/CubeCamera.d.ts","../../../node_modules/@types/three/src/cameras/ArrayCamera.d.ts","../../../node_modules/@types/three/src/core/Uniform.d.ts","../../../node_modules/@types/three/src/core/InstancedBufferGeometry.d.ts","../../../node_modules/@types/three/src/core/InstancedInterleavedBuffer.d.ts","../../../node_modules/@types/three/src/core/InstancedBufferAttribute.d.ts","../../../node_modules/@types/three/src/core/GLBufferAttribute.d.ts","../../../node_modules/@types/three/src/core/Clock.d.ts","../../../node_modules/@types/three/src/extras/objects/ImmediateRenderObject.d.ts","../../../node_modules/@types/three/src/extras/core/Curve.d.ts","../../../node_modules/@types/three/src/extras/curves/EllipseCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/ArcCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/CatmullRomCurve3.d.ts","../../../node_modules/@types/three/src/extras/curves/CubicBezierCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/CubicBezierCurve3.d.ts","../../../node_modules/@types/three/src/extras/curves/LineCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/LineCurve3.d.ts","../../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve3.d.ts","../../../node_modules/@types/three/src/extras/curves/SplineCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/Curves.d.ts","../../../node_modules/@types/three/src/extras/core/CurvePath.d.ts","../../../node_modules/@types/three/src/extras/core/Path.d.ts","../../../node_modules/@types/three/src/extras/core/Shape.d.ts","../../../node_modules/@types/three/src/extras/core/ShapePath.d.ts","../../../node_modules/@types/three/src/extras/core/Font.d.ts","../../../node_modules/@types/three/src/extras/DataUtils.d.ts","../../../node_modules/@types/three/src/extras/ImageUtils.d.ts","../../../node_modules/@types/three/src/extras/ShapeUtils.d.ts","../../../node_modules/@types/three/src/extras/PMREMGenerator.d.ts","../../../node_modules/@types/three/src/geometries/BoxGeometry.d.ts","../../../node_modules/@types/three/src/geometries/CircleGeometry.d.ts","../../../node_modules/@types/three/src/geometries/CylinderGeometry.d.ts","../../../node_modules/@types/three/src/geometries/ConeGeometry.d.ts","../../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts","../../../node_modules/@types/three/src/geometries/DodecahedronGeometry.d.ts","../../../node_modules/@types/three/src/geometries/EdgesGeometry.d.ts","../../../node_modules/@types/three/src/geometries/ExtrudeGeometry.d.ts","../../../node_modules/@types/three/src/geometries/IcosahedronGeometry.d.ts","../../../node_modules/@types/three/src/geometries/LatheGeometry.d.ts","../../../node_modules/@types/three/src/geometries/OctahedronGeometry.d.ts","../../../node_modules/@types/three/src/geometries/ParametricGeometry.d.ts","../../../node_modules/@types/three/src/geometries/PlaneGeometry.d.ts","../../../node_modules/@types/three/src/geometries/RingGeometry.d.ts","../../../node_modules/@types/three/src/geometries/ShapeGeometry.d.ts","../../../node_modules/@types/three/src/geometries/SphereGeometry.d.ts","../../../node_modules/@types/three/src/geometries/TetrahedronGeometry.d.ts","../../../node_modules/@types/three/src/geometries/TextGeometry.d.ts","../../../node_modules/@types/three/src/geometries/TorusGeometry.d.ts","../../../node_modules/@types/three/src/geometries/TorusKnotGeometry.d.ts","../../../node_modules/@types/three/src/geometries/TubeGeometry.d.ts","../../../node_modules/@types/three/src/geometries/WireframeGeometry.d.ts","../../../node_modules/@types/three/src/geometries/Geometries.d.ts","../../../node_modules/@types/three/src/objects/Line.d.ts","../../../node_modules/@types/three/src/objects/LineSegments.d.ts","../../../node_modules/@types/three/src/helpers/SpotLightHelper.d.ts","../../../node_modules/@types/three/src/helpers/SkeletonHelper.d.ts","../../../node_modules/@types/three/src/lights/PointLightShadow.d.ts","../../../node_modules/@types/three/src/lights/PointLight.d.ts","../../../node_modules/@types/three/src/helpers/PointLightHelper.d.ts","../../../node_modules/@types/three/src/lights/HemisphereLight.d.ts","../../../node_modules/@types/three/src/materials/MeshBasicMaterial.d.ts","../../../node_modules/@types/three/src/helpers/HemisphereLightHelper.d.ts","../../../node_modules/@types/three/src/helpers/GridHelper.d.ts","../../../node_modules/@types/three/src/helpers/PolarGridHelper.d.ts","../../../node_modules/@types/three/src/lights/DirectionalLightShadow.d.ts","../../../node_modules/@types/three/src/lights/DirectionalLight.d.ts","../../../node_modules/@types/three/src/helpers/DirectionalLightHelper.d.ts","../../../node_modules/@types/three/src/helpers/CameraHelper.d.ts","../../../node_modules/@types/three/src/helpers/BoxHelper.d.ts","../../../node_modules/@types/three/src/helpers/Box3Helper.d.ts","../../../node_modules/@types/three/src/helpers/PlaneHelper.d.ts","../../../node_modules/@types/three/src/objects/Mesh.d.ts","../../../node_modules/@types/three/src/helpers/ArrowHelper.d.ts","../../../node_modules/@types/three/src/helpers/AxesHelper.d.ts","../../../node_modules/@types/three/src/lights/SpotLightShadow.d.ts","../../../node_modules/@types/three/src/lights/SpotLight.d.ts","../../../node_modules/@types/three/src/lights/RectAreaLight.d.ts","../../../node_modules/@types/three/src/lights/AmbientLight.d.ts","../../../node_modules/@types/three/src/math/SphericalHarmonics3.d.ts","../../../node_modules/@types/three/src/lights/LightProbe.d.ts","../../../node_modules/@types/three/src/lights/AmbientLightProbe.d.ts","../../../node_modules/@types/three/src/lights/HemisphereLightProbe.d.ts","../../../node_modules/@types/three/src/loaders/Loader.d.ts","../../../node_modules/@types/three/src/loaders/LoadingManager.d.ts","../../../node_modules/@types/three/src/loaders/AnimationLoader.d.ts","../../../node_modules/@types/three/src/textures/CompressedTexture.d.ts","../../../node_modules/@types/three/src/loaders/CompressedTextureLoader.d.ts","../../../node_modules/@types/three/src/textures/DataTexture.d.ts","../../../node_modules/@types/three/src/loaders/DataTextureLoader.d.ts","../../../node_modules/@types/three/src/loaders/CubeTextureLoader.d.ts","../../../node_modules/@types/three/src/loaders/TextureLoader.d.ts","../../../node_modules/@types/three/src/loaders/ObjectLoader.d.ts","../../../node_modules/@types/three/src/loaders/MaterialLoader.d.ts","../../../node_modules/@types/three/src/loaders/BufferGeometryLoader.d.ts","../../../node_modules/@types/three/src/loaders/ImageLoader.d.ts","../../../node_modules/@types/three/src/loaders/ImageBitmapLoader.d.ts","../../../node_modules/@types/three/src/loaders/FontLoader.d.ts","../../../node_modules/@types/three/src/loaders/FileLoader.d.ts","../../../node_modules/@types/three/src/loaders/LoaderUtils.d.ts","../../../node_modules/@types/three/src/loaders/Cache.d.ts","../../../node_modules/@types/three/src/loaders/AudioLoader.d.ts","../../../node_modules/@types/three/src/materials/ShadowMaterial.d.ts","../../../node_modules/@types/three/src/materials/SpriteMaterial.d.ts","../../../node_modules/@types/three/src/materials/ShaderMaterial.d.ts","../../../node_modules/@types/three/src/materials/RawShaderMaterial.d.ts","../../../node_modules/@types/three/src/materials/PointsMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshStandardMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshPhysicalMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshPhongMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshToonMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshNormalMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshLambertMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshDepthMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshDistanceMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshMatcapMaterial.d.ts","../../../node_modules/@types/three/src/materials/LineBasicMaterial.d.ts","../../../node_modules/@types/three/src/materials/LineDashedMaterial.d.ts","../../../node_modules/@types/three/src/materials/Materials.d.ts","../../../node_modules/@types/three/src/math/interpolants/QuaternionLinearInterpolant.d.ts","../../../node_modules/@types/three/src/objects/Sprite.d.ts","../../../node_modules/@types/three/src/math/Frustum.d.ts","../../../node_modules/@types/three/src/math/Box2.d.ts","../../../node_modules/@types/three/src/math/MathUtils.d.ts","../../../node_modules/@types/three/src/objects/LOD.d.ts","../../../node_modules/@types/three/src/objects/InstancedMesh.d.ts","../../../node_modules/@types/three/src/objects/Skeleton.d.ts","../../../node_modules/@types/three/src/objects/SkinnedMesh.d.ts","../../../node_modules/@types/three/src/objects/LineLoop.d.ts","../../../node_modules/@types/three/src/objects/Points.d.ts","../../../node_modules/@types/three/src/renderers/WebGLMultisampleRenderTarget.d.ts","../../../node_modules/@types/three/src/renderers/WebGLMultipleRenderTargets.d.ts","../../../node_modules/@types/three/src/renderers/WebGL1Renderer.d.ts","../../../node_modules/@types/three/src/renderers/shaders/UniformsUtils.d.ts","../../../node_modules/@types/three/src/renderers/shaders/ShaderChunk.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLBufferRenderer.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLClipping.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLCubeUVMaps.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLAttributes.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLGeometries.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLIndexedBufferRenderer.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLLights.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLCubeMaps.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLBindingStates.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLPrograms.d.ts","../../../node_modules/@types/three/src/renderers/webxr/WebXRController.d.ts","../../../node_modules/@types/three/src/scenes/FogExp2.d.ts","../../../node_modules/@types/three/src/textures/VideoTexture.d.ts","../../../node_modules/@types/three/src/textures/CanvasTexture.d.ts","../../../node_modules/@types/three/src/Three.d.ts","../../../node_modules/@types/three/index.d.ts","../../../node_modules/@types/use-sync-external-store/index.d.ts","../../../node_modules/@types/workerpool/index.d.ts","../../../node_modules/@types/xmldom/index.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"f3d4da15233e593eacb3965cde7960f3fddf5878528d882bcedd5cbaba0193c7","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},"d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed","91f234f3341d1bd687aea2e25de03a8e6267770d2f4669e3dccc78275bb34760","c8cae60655bda122e8d9508e399020685fc34b17c94758b15580db1b9685bdba","e4f1c2a34e1cc1584f1913b995c1bbd91659c520f9fdb46d7528a0ca17ad430e","6e2c1b15722a5b10663e9b852dd406398c509b9c3dd5a95b7e25e9bd76fb41db","76413eccfefcd2d0225c2650d305674cff4f0a1c214b3abe743b720fd5ba01cf","2ea65f27b385babe21b96371d6bcff1c4f72b94e3a75afcd229ffad5d474e340","3d453f4fa5042c507e31b45d4b7d545b869d0e45fad32529068fa93ee1c64158","37f5b734154dcf35a46dfbda49bf9e1d6830be62dc7a2c6734473e23126cadf8","68d4b9357e8709a3711d0e748f5de8b5d7557a2bd6bee01900311681a7fa3e4f","9a437866f41be1b35d10752d502829f0858a49402c95034ad9729a24dae1a23b","5ac0414d15fa38f0f583bcc8151c4e8b210af077a76e03014054554b896c9b8c",{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true},"2e864ea827318e5f490863a8cd412744d9ddb175acf488dd02a941703dad1e38",{"version":"613b21ccdf3be6329d56e6caa13b258c842edf8377be7bc9f014ed14cdcfc308","affectsGlobalScope":true},{"version":"894dae169f8193e3f07c3fec14149a60592d1f13720907ffdf7b0c05cfb62c38","affectsGlobalScope":true},{"version":"df01885cc27c14632a8c38bdeb053295e69209107bb6c53988b78db5f450cb3c","affectsGlobalScope":true},"38379fa748cc5d259c96da356a849bd290a159ae218e06ec1daa166850e4bf50","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","f51b4042a3ac86f1f707500a9768f88d0b0c1fc3f3e45a73333283dea720cdc6",{"version":"a29bc8aa8cc100d0c09370c03508f1245853efe017bb98699d4c690868371fc7","affectsGlobalScope":true},"6f95830ca11e2c7e82235b73dc149e68a0632b41e671724d12adc83a6750746d","7aa011cda7cf0b9e87c85d128b2eeac9930bda215b0fee265d8bf2cec039fb5f",{"version":"92ec1aeca4e94bdab04083daa6039f807c0fce8f09bc42e8b24bf49fa5cdbbff","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","8463ab6a156dc96200b3d8b8a52dc8d878f13a6b7404439aa2f911d568132808","5289750c112b5dd0e29dfa9089ddbf5d3ed1b544d99731093881e6967f5af4d1","7693b90b3075deaccafd5efb467bf9f2b747a3075be888652ef73e64396d8628","bd01a987f0fcf2344a405e542ee681e420651eaff1222a5a6e0c02fda52343bc","693e50962e90a3548f41bff2c22676e3964212a836022d82e49eca0b20320a38",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},"300b0c12998391154d7b9115a85554e91632a3d3e1b66038e98f2b9cb3c1061d",{"version":"222e742815b14d54db034788a7bee2d51197a2588c35b1fbefe04add6393021c","affectsGlobalScope":true},"93891e576a698609695e5b8117bb128336e4b7b28772e7d7e38e8075790eb42f","69d90a2f13511eeaae271905c8615a93e20335530d1062a93cb04e754e5f04ad","d723063c56101b34a7be5b28dbde80a3ae3dfd5e08fd49a3b569473337ead1f9","fab49059d6c2026bdb2e53e4e5cde1a39da44e61daff1867c8b3b10b507bfe17","5a551275f85bcc4003e543a1951a5b2f682cfba9b2922f65ae0df40ab71724a5","22d1a3163b9a961dbe78b0aedbd7bcbc071ce1f31efb76eb013b0aee230fef0e",{"version":"c31695696ade4514cfcbb22799997b690d3dca7fb72beab68fb2e73b6ef450dd","affectsGlobalScope":true},"d99ad56d57f2c96daaf4475a8b64344b24dedafdb8f3c32d43552bcc72279a75","a101ef17aece908c1029a1bd3f97132794dcff21b4ca0b997d9a633f962c46aa","511575e18249b64b90d8f884fdb8a383c767d1a7efccd9d66a4e125a4dc5c462",{"version":"6d8001f2c3b86c4f1de1d45ecb3f87f287ed7313d6999f8c8318cec4f50e6323","affectsGlobalScope":true},{"version":"9e413bb587e01ba0cb1a87828cc9116669a4a71a61fe3a89b252f86f0c824bc2","affectsGlobalScope":true},"9c3d1222e6e3d8c35a4293d7a54d4142ebb8f7f70ec4111b8136df07fdc66169","70173c475c6e76ccebc37412b02b2e26f62bf45fc1534c3ebe6d7fa60fb88819","87ced739f77d80886ef2b923a7c52c363c549ad8799ae28eb8cc810892f511ad","863bc4e31de6c75423bb02da16190d582b0a69b8964b61d45920e5b2cb3832dd","849484324695b587f06abee7579641efe061b7338f9694ec410a76f477fe4df3","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","6e191fea1db6e9e4fa828259cf489e820ec9170effff57fb081a2f3295db4722","49e0da63a2398d2ae88467f60a69b07e594b7777e01120cd9ebcefa1932484cf","0435070b07e646b406b1c9b8b1b1878ea6917c32abc47e6435ec26d71212d513","f71188f97c9f7d309798ec02a56dd3bf50a4e4d079b3480f275ac13719953898",{"version":"c4454589a0aa92c10d684c8c9584574bc404d1db556d72196cd31f8f7651af1a","affectsGlobalScope":true},"b17790866e140a630fa8891d7105c728a1bd60f4e35822e4b345af166a4a728c","c50c75f4360f6fc06c4be29dafe28210e15c50cd6b04ad19c4808fa504efb51a","d4a1f5f7ee89b2afffd3c74282f8ee65b24266c92b7d40398c12a27054ed745c","900b5a9802192bc77eba35a5b87ce770df7b867a6d61772c554058c9ed635386",{"version":"d291d3d16fa252f6d460687491ea2c5c23098c9dc0d3e106b2803fdc98f48f29","affectsGlobalScope":true},{"version":"f43fcf89d75f13d0908a77cd3fa32b9fd28c915deded9b2778b08f2e242d07a7","affectsGlobalScope":true},"b9a616dec7430044ae735250f8d6a7183f5a9fba63f813e3d29dcab819fd7058","aebf613f7831125038942eba891005fd25fa5cadcc3e3d13af4768dc7549161f","0faee6b555890a1cb106e2adc5d3ffd89545b1da894d474e9d436596d654998f","247e5c34784d185bc81442e8b1a371a36c4a5307a766a3725454c0a191b5cfad","1c382a6446d63340be549a616ff5142a91653cea45d6d137e25b929130a4f29a","729ad315d8fa8556a1cbf88604ce9bfd73f4cc2459b0b9f6da00f75150c2bf9d","ca1bb9e40299a2a42de0799499d521cc1799347ac73b520f0ad0ef1565db3af8","f21d648335c8f2a68b5d4ab94694f2f240f0ef1125e2bd13da1c716c4b26c5f3","5632b2946fb25a854ef87c5430d4603069c3ca8588a359004ef3e566bff6e86b","21d69e54b8eb46b50a11f02e36d0ace40da583bd2cae17441f0ae031d3c92edd","5f4f83ac7c88d373d0850314ab840e5e737871b17975a88f84972575bcc52a0a","7b5bd9f795f54e859192bb0cc96eb8678d2421092b18e5061a4611bd75f4ea85","190eb9b195944067b751c6f1f1973fffaf6e2e224fff006234fe315421a939f5","ddf7988dccb6e90150aeb031ddfa91c7a616027809e210ffe9448df8c841e2c0","0711d8775231b088686c97d7c2aff31562e3d5f52525f2ea51444b0a390da25c","a912c4d7400f9b7b8c9798dca073b35d9cbab74856b5c4c507e8da3bd8a6fc2c","434f680ed7f0b6e853395db4814c8ef4ea53edc940af22bd2493446689c49247","f142391b7dcb26c7150ab5722c6331c7f08a486f9621aae2036f6201db6a0cb2","5eccdee2560388d06f517ccf0f71f6574e6afb7721c055aebf6f2b95911f09d7","4a37d452036764892827db5f6c3e032577bc0bb45cec1a7a07183bc7ac1e8ef7","a3c894635582e25634467faf5af1e5659f872f740fa3e0c08fc036acca7bd074","bc9b2bc85e4043596e4f84d196fe4f646cf9539ad63f7e917186aed38bdc2c99","5d7ce408cdc2ace5a4388ddbf3cb2e7050bc46fbb9d360fa2e7686bf68e36728","bb1212482141b70002831681d9edc857e7ddeb9a95653bfa187cbbfe3bf793e7","4a24231929566cddc0d833d79b9f9e1d0404964a0d2873a95351135752e083fb","4183c7750a4228b1f92ce592c1c3f5d1c4134740a8f8242b08fd430decf62aa9","b77f5cf2ad5766582e44f3ba2ecc734ba29dca949756a4656c29c2050da39dc9","72c35d25f5e92c075510829e400bb03edab3ac66728e89c991271e64b46c2905","8657262e85cae0021926329993ee183fde26bde0594c57c8e88d8f294e0bd580","dce4ba03ed7fc894cf730c90f5f9f50591a7ee812b94e867b5adebae15d2b618","b75b633c3dc74dc588db9affc29112c9b6965f51c8e53d01895511dceaf7bc66","0d7b0eb06c7e1498961517e036e6299a3a55bc2a7700fad7c49a2bea2e17756b","99405e9f3b753a7dde9817d983872f441c0ebfe13e838d9789883f35d584ba93","06d4ff7c4a587446c96749e51c4102bec7a34a69c53c8413904312e24a1b81b5","e815de5f24cac96fb9555f65afda2ead6a0e7547b00425b6f0bf86a5b6a2552f","9183abbb1cce269d5094ebecb44b8182e5aed26ae4bf7718959d15b15665f147","9632a3e1be6e564a0901e476fbb712c82c5872ab611e3dbc847f437ac548ce22","1d72fc46a55985235e8d8785c4e707c7620734a693bfa65e1b0d13a9dc72a16a","dc8b6c104d6ef65a596025cda17ce229a9321e8fd1d32753e4d731ef44fbb945","dd480cd3cbe2600e3322412adf31d8a6b04ad8eb731e61107eefc5e1e8c98645","4a0fd94f4f59daf6f8aa868b30f1a0f307a01d187e5992c26b9bc7260948a465","fd625f33ea578b49a397582930220c66889bc45268d6bb3a6f380554d42e5005","374968f553d7ada834b9c411471d56e6f9fbb2b31170f362028942c173e4b82b","5a0d52cbbcd09392206ce1690f77655cb283e0a68d5010f1d9cda0b3867170ff","293081f2064aed4e77c9565fbb6c8d625eade6606f21f50a9b8a86c27741a8d2","6dd6ec38169645549e14f5e956f167be1cfef5adb48e1842e4a4948454d44d65","ba48ca9660da15e546cb4437b272e700c777196fb7505faa0b4c1557f401f7ba","9675d1891047249384d827afb8c392b9fd4deceb11871f9185cce69089eef87f","a0923f7ef0a41a316cc066bb0571204aef18c461f18828b63bded2d0ec7049c2","4382d8d597b36095586056718ad777a010d68c0bfdc31b65785c9a94865de06e","5720d5bdcdd38e81b64e2130538c6c7893711c98b6eb42ae4972276ef998049b","eb6680f35761c15489c0c1a89785d183cb07b5d1baf2f44e34db607563499990","c87bd71d68a937e09ce33ea5ee2099f12f554ed3141e068cff2b3bc39e2a54b8","8659bbecbe5634309e332b85b9c5d917cc4e0f4df0fd06e2df9b13a980344e7b","70d402c7f13d482c46f3e8aea54d70b43c336bcc9c86620c35c6295057693efd","6ef08c60078ef28fa6fe191891ea186ec30d6f6b48d2483f25d64322e1df412a","f04e0409ff5c7ac69549172b902cc9be661fb275c84df802752b670f03d89c03","7fe6ff804c72875e13a63a1750e5281ca5279b122e2051b768a79e0c274d5258","fc2906e214caf70a117ebd2eca8c5af935f98f856c3c11b78fec48249d8cb00f","d7d2bb0ab4c122c0fa89190708c4be3146b289e25d448544d351630e70c8e979","5b81a2f9b8fb7425803347c5e9bfe804495a6304e892bd1f61c8369a4872cdb4","4fd64a47a60d67cacc0c1b013d39e157cec017673d285dbc5ae4be70b1e133e4","0ffe64e6243362e186cdbb6b55ce0aefb6d1f961e65f097cb9ee4a6377ea854a","3848a42dbcf354c5bd597360f39fd6d8bac0d5434700bd7de55795e6398feaf8","66e7ee4009b98477818175b41a630ebeb5abd70e354734043f8afcce917ba4ca","66da56dc594b4fbd04935e7316baf32db72c172fe6df47a386fe1d806417f715","12b3a143203b7dfd22ad10d6eed8ba6a4f51203571d3a95f3e9c96eb55459731","6752fb2a8acd01061a98601e77fb2819d669786256ac8923e8d8f51c2a9cdd1d","bc727202225bc7fa45844ddb857d829a96af1695bb11c14fa481f99e4c278ae0","ca9a1959792738d04cb97bcd582042e099c10caf2b93b14b9bfbbdcf0676967c","dc92f396d6491d3bcd80ba3771edeadab9e449fa0364c75c0be57a23349fe359","e0fa49f0189db44f25ade39d3df57adbe9bf7601c8690f8917adf5497d640a81","a7c73369ee3caa83274aea79ccf4e7dbaa1ebd5b74bfc528d095a69083ec7990","cdb06d3a184b002d7552151dfaed57d7fc4fe1e8c804692901082e4ffc80f3aa","62c2bbde44a6cd4e266acfa7c009418263dcefd328449c8135cd48352e38e14a","73ccf82b069f1a2b6af470c6e5d298d2ed8a2355edca625f9918fa7f8524ec19","1a27b8ce59b4f67b78f40e3656e1daafeda53708c3be45efa6b401f9f5ebdf18","e8e982c0dc56863be0a74853d76cb962b8a4806dc625879b872a71988011d14a","71596ef9c4670f994635af4cdaf3d8c0976400f6b7727d6ecbcf98db3c9c8bc0",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"2bc583eb7c88c4151310dd67546670b78d4aa2dbf476b0b583ae79ac3fb5c0a5","4298089df5a9fc6ddc6edb7a57267f28e729d69cac37759853d30389174f20ef","b33d7ee7c1b1e930552a3c17ce1ef4158d41e76fe36e2743eb32070e46f1004b","da3e8b8af3d950be73ae2d1a4efadcf0de7c17d13de377ad4c803087bde5a5fe","f81b1c338fc1643cd5d4e6ba8e8a97d35ab7ec305209f8607e36e2176401ed29","ad21b2c119f2dbda16118d8771b211695a9b09953d3f415a005ec7329ee4afac","4b10637abf9b243e007a597a3fd664f143731156c4896f6b7d2e993c1659766c","0d67b03dafe1eba1a2b1fc240e463df40c17463c2c3606c02bc84c6bfd70fae6","4882e2cd1e114b5a90e223543bbe013ae5ff8e1cfe5768c5bc33ea44134a2abf","4a6fed47bfcbe188980017faff1575b71207f7b236c51faecec74e332bba075d","59b21f2868c2648e95c6b8eaf2e722321609883e6631f0391d19f6cc948c3d55","6af150eb5fcd8f9aeacaf450b9da2693edd70493de67bac69bed053da580c6ff","1cef25b0a827c0d5acd0ea1a0b998fffa62975e2cdc06f0a6e2a0e0513edbe4b","92055b3765c13ab12ae6dad516b9cf32683fe7f76191bbc232fd9b0c55154910","4304baeb399d7086de3d520f1d4ab150c87ea97ba80866dfa26a13bf2d27eb55","d14c39443d8ed3ce646754a436cf9a5f59d126e0a31ca8b854a0dafd43fa3a7c","6103bad9d0c14fa780b2e725adb18a819977eb3eca148a5c8971d1eb177a7008","41c4e4e32359e20a630055cff9db1c3cdf1737f0cbfef8cd4e08c40e815d8cf5","f540a1f77029b585534c248edd4f14e6137f4c4d81b872b240367683c4607290","4bc6fef15d789042067caa79c67b08fc8d1763937c5dcd64412381e39bf22823","792518b1cc241dde95a665ea6419009dfb0fa031bc2d68aa7fa9ed4a655bcce3","9650ee1b814813a1eea9f45cc88f5390334542a0e87e123d0915e9c02797ec2c","46324183533e34fad2461b51174132e8e0e4b3ac1ceb5032e4952992739d1eab","d3fa0530dfb1df408f0abd76486de39def69ca47683d4a3529b2d22fce27c693","d9be977c415df16e4defe4995caeca96e637eeef9d216d0d90cdba6fc617e97e","98e0c2b48d855a844099123e8ec20fe383ecd1c5877f3895b048656befe268d0","ff53802a97b7d11ab3c4395aa052baa14cd12d2b1ed236b520a833fdd2a15003","fce9262f840a74118112caf685b725e1cc86cd2b0927311511113d90d87cc61e","d7a7cac49af2a3bfc208fe68831fbfa569864f74a7f31cc3a607f641e6c583fd","9a80e3322d08274f0e41b77923c91fe67b2c8a5134a5278c2cb60a330441554e","2460af41191009298d931c592fb6d4151beea320f1f25b73605e2211e53e4e88","2f87ea988d84d1c617afdeba9d151435473ab24cd5fc456510c8db26d8bd1581","b7336c1c536e3deaedbda956739c6250ac2d0dd171730c42cb57b10368f38a14","6fb67d664aaab2f1d1ad4613b58548aecb4b4703b9e4c5dba6b865b31bd14722","4414644199b1a047b4234965e07d189781a92b578707c79c3933918d67cd9d85","04a4b38c6a1682059eac00e7d0948d99c46642b57003d61d0fe9ccc9df442887","f12ea658b060da1752c65ae4f1e4c248587f6cd4cb4acabbf79a110b6b02ff75","011b2857871a878d5eae463bedc4b3dd14755dc3a67d5d10f8fbb7823d119294","d406b797d7b2aff9f8bd6c023acfaa5a5fc415bfbf01975e23d415d3f54857af","7d71b2d1a537fe41760a16441cd95d98fcb59ddf9c714aba2fecba961ab253b6","a9bd8a2bbd03a72054cbdf0cd2a77fabea4e3ae591dd02b8f58bda0c34e50c1c","386cc88a3bdee8bc651ead59f8afc9dc5729fc933549bbd217409eabad05ba3e","41c78f187749098f9b8e8982839a010b6bf00dacc654d759b9c169127bcda034","06a5faf6d1b529c86f39d95b262c8ae08b25cf629c0ee1b186aa2e69998969f4","bb844c597aecf3333951199d984081a3e2449989a69250dc9a431c6057e00ff0","b18a4fb0ef76e4999a628217d3528ab0dc53458c3e400815226a325402f94c91","9fc9fb73150a533962cb7a8d01cacf96a84c774e4a8c5b829e9bb9bdb3442b73","9396a2791ac1604a985a3d2a7ce486a10c51315ff4da6b26792a58125d5994cd","bc2786996cb0860724a35468151ddf97d0820c346237c7503c5a4a141d8aa7e9","6f31a43374a6a6606bb6e5d3475d20ef46e4476bfe240d01eff88a852d899c99","c5aaeefb408d3f04bc9969bf014fb8c7611ce52888220d5475b48984cb4d0b39","d7b06808e65bb7d659c19d79f6edc709ad022185c3516834f5734df64139f4a1","2a9882946dde4c703874ab1ff989d2763e93adc1f436fff25f66b4ef5141563f","20da430b68557166733bafdf364517d0f764d67cfcba27534401cb2cc71089e1","e1173fafa86337002ba631af9338eb529130d57e8cae20be7b858495420d9825","7aad6d1aa696061a8ebfd0461c5bd0d5296e08b67162e586bf6689f530f40298","28ffacb3a1d45a7ab4fc20030c2d501913c0aecb6a076821af1f99f687f59e7b","f70d82a2fbfd6ee96d3f370c0faeeab4a5ef88df5b70b3554d972056d277329e","bbaaea19731242a537955ae226bd9d9b986e6ce8b96ee430276dac958a493ce9","3427e1d44561a0821408b616cf2ac46070506ef7db7f7775b92375e228b71fbf","367f427f2cc43c27873990e68149979078e11f93b100ef818c897cc8e2327a7e","2933dfdebae9d93a923c5e6ba49b54f3ff4f9f6cb5c9463058611255d2ab0646",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"3346a737f29b700e7c6c2a694973ceb70a738c3ac5212ffbefac8a27048fa8d6","e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","1a25c4d02a013b4690efa24ab48184a2c10b1906a379565ba558b2c3ba679a6d","ba6f9c5491bcf018dbbc813e1dd488beb26f876b825007ba76db485df341a8ee","75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","5c7d5b50366ad358850cb764d54517a02e4c6a535ad63339341b919a01d25fae","004f3c14f064b567224f8d0bee55016099f60b286b26f7e45ea2398640425090","dd8331d0a5190a4735ce6c152e420230188c4966067a756673c36dd7ba72b10e","d87f383e3e2146c5fa07f9db97108695a291049d1758a05d9c474bcca847d119",{"version":"288182a3032203d20a0cb426b35c2b5e53725e06b2505a0b0b33c56d02560bb4","affectsGlobalScope":true},"0f882d4ae58f431454030289154feb0132e1b00ca5c3197c6b749bd098aed73a","412a285b5215287476bb954c160ced85718b34958f6d4eabd8a74541be17d8df","1e352dc6863536f881c894f17c46b5040db7c9423a18957a8fbc001dfe579b78","814a65fd55b6f21484b699acb5faa9dd858a7577e304fb05c9155f4a82a4c3d9","4d59c6a10b6c79a0927c79efa89b3c9f71d174ec14ec2792076cfd2330d0cf8e","a496f51933422872de22729b7a0233589325a1a1707cccd05cd914098944a202","c27066bdab263d8ea4799e97296fdc5e62c69b45e9ad908f4b8edefcca20f265","06a38095ad4368314366bc08f7cbc0fe274ef7321ec611005d0bdd9c6565e4d5","4599793db9aed9b84677f0ca1cf7ef3c69bb91cda4fe4329cbab778ca4d80a58","ad0028f96921778931fb8419d8de33b10908314fa99699de1702020f69235da1","ccd2a35321c0786bd3808042dc43b960cac13f2cc660ac37a0087e12bc97d2fc","df524ed01de4f19efb44bded628dbba9f840148be4b6cfe096e29d4b01589de3","2e3981b9cee48174ff85ae15019fd72933f7023a4ed05094740f7e6f7775623c","836ebdc3b9e4c006acc4f405b7e558e56d47830e05c40d991b1e27fe8bc91157","2cc6b617c6120ba64b5778ccd4b74c951adc3a3941bb6b39f47d48701c44af39","eca02b99615a8f1652e21399d832618e38bf166c0747c9247349bc901a2f7741","7f7d6d42e5780e86f5b860a6f95179fae06a368b3af28c1c4230397c47021a59","4740a7d11ab3b381be0f269f1903fb3ff226a2fba55a01756b2997e67cd853f2","863dbc4e77f0353e6f9d6bc0e2b4622d5c07ff6f099ff66cafd7924b2ff4dd3f","bf034a18ed7e2a058f9e48c4c2480a124138fbd3586a80c77736a9ec079d12a8","1c23e5522e794b2cfcb234a09406f44bf988e899a83458d43effa0d896188621","c249e9ae33bfcad97deec3c73c9ed2656e112fbdf22deace0b39724be6a5dcf0","5f16a149d633c7354cc6d9828fd6d443eb6090ed3dbfbf5cc72ac2b10447208e","c6f72b9a53b7819f056268c221d7eeb14c26e2582aa1547b0f6922d65bcfde72","feddabf6ab0eb191e721f0126f3db8688db97c77a1234968bde7a2d70c4ae513","a968efe0db090c2ed75ee8c77162534f7ffde3dfa9d9ee9f79c47784c43df96e","cde0568b836865a24f4ee5859462004a326dfb76d514e6f56c8e78feedebed58","7f5cb3a03588ed46d52a6c2138315d930cd6ffb5c2134247cd07bc23cbea0b5a","9eb225532dc87924b92933cfd48845558f230df315ba9c0e5254180affd906e4","f39fb20b83c3f9853c13d4ac95533760979d3023c0a5affe2c0a62d91ab3afd8","e4fca08aed8afb32bb8643d7469810bc8681115fe398e56a028df9e73b2d867f","8a59503e8c995d688174ab27cd32c3ab6afed7c41cb5282aee1e964f7d7b863d","078966067552650f44ca96c68eddbb8539f30ee48a9ab3f24abdcf0a4037b535","2cd6250c43dba360377481c98d48db6ab1532a7527339edb0deffddc28ba66b1","7a9d600990fbe263a23daebed9ba1bbc5761e45679a7e2b2774a42756ef077a2","66bc155515fbea8c31a4efccbbac44de7c037b01f3aa00b76312cf7252725d30","9fdd988a57c29bb94c3fd946457e031415fac3c88b681ae7403cc51efad949dd","0dfd353f0c16dd5107a7e0713dc52d0a2538293b0a0eac6000a017f9c0a60b56","9cd683a4663ef4d9c6486f1b8a34c73bdbc344d69490931bfe2fbcada12ab35b","42f6a409bad5259ece69df25d2b8ace2ff2ade45fe6386ee45203bdd9329f971","fb486aa15606ee3738eccc1f344d895588fc50b9956a8b50cedac7a3ac1d03c4","2eb162efd6dba5972b9f8f85141d900d09da4fba23864f287f98f9890a05e95f","3f878fb5be9ebe8bd0ac5c22515d42b8b72d3745ef7617e73e9b2548ccbdf54b","e9ed562b7599c8c8c01595891480a30f9945a93a46456d22ee67ebf346b7538a","e7bf975a98cecefe2e8902fb7da9314675ecdce553aea722aaec97327668e18b","3d36f93648518338c875d9f77a8eab52905365483dbb3afe43ed68f1b712b67c","4fa54df9184d291bd78b36f5063372042cd995460e906cb14014e40d1442a326","40c96d03a1fdc7223379b68fc28a885475269f61606258e311176cad8e398cf4","f6bd1aa152ca2b5064e06282ee3137842ae6825b6b09aa89a2ff063b976a56f3","72fff5572fbfd9ba6cc32b135b2df773fbcb062cdbfbf3599b0e4c0c0b9304f8","fbdc8d7cc7daf4101bf567512c67fb990d8fe300e0ba7f213171192177f44aa0","540e6ae4ddea7fc6ce1abf41ecc1351ab5ad0a945f9450a83d5d1cdbd4b32c73","3b6457fb3866562d279377f923cf3758c80ed7bfcc19414b72a24d0a98188e0c","4fb5d7efb3520b92c1b767ce18968057c5e70886d7fb3416c487231df9275af9","df2303a61eb57b2717d17123e82bc0f3fd60f6e4673cb5506192dfe23c9480bf","1c03bb7c4a812bff9cf39601c9f1172b4dbbada100970e2402f136a767fa2544","a35ca245eb852b70b20300546443abb1fcbac6e5066e4baaa092af4ea614d9b5","82fe707c2c25376601868e9eb7d3da6ecab4e1ec3919369f6357a79ae4dee6a9","1a39e51e3362aec7d4edec9b317ff83916fe0471f86ddf2d3ef3af5952e87d9e","4b3f36b96f129a8e125c91d41a05f711e73b3285f80bceb3a1aecb13c97c4502","852779920fc4220bc42ec6d3c9b6164e23ea9371a788531b48b4005fe0cb4392","6863aa26d38fb3c96d7b04547d677967d83ebe421a093e4dede6fd48ad23890d","515b97cede17d91c9669cc1c7fb7a8a5f0a5f2d8999f925a5f70b4ebea93723e","3a873d9c7fff0fc99f7994f8a49c126242a9a52947d8a6c2b9882aee7b476aba","944af466f063d4bd090ab9d988c620b90a014e919d5f78963f6074a136ea225e","644addd4811636da491c9546654bc005ba8599f23df6d731d91eba86f3137fc2","a9249493114b181814728cbfeb7234738193a4169b654ec4705d48d7a4d25222","aad6f20d6eb01192ae02294361faa6e1f320d72447b56f433db853bbe80b15ca","876fbedec2f494eb6f834ce8636b07d581c657d205d81a3ba894eff0facc6b84","58527aa45f11c9b259a6a9d78b397f35020bfbb104f4d3bb177039b5c18146bd","91b8b61d45b5d22f3458a4ac82e03b464a0926bab795a920fe0eca805ec476eb","2744532f8fb960eb78497ac660db719f503a10c801f87131d26fd9cbef75dcef","6fd4019d704fe42eecd8bbb6e37e19b3dc8fc8e8d74bc62a237539387ca4a710","d4733ddb92eccfba6947052161cb2ba04cd158bcb41ded178a3a46d984cf746c","cb46657d3237f80742d5701ebcced8f6e5cf8938442354387d6c77d7048dfae6","5c5e91212eb0c3f301f741b9c4a8c316dfd0641392ef8792909ec5797bf7dc5d","661f322e45545a554e4ffc38db6c4068a66e1323baf66acb0d8a9fa28195a669","9d787416f04d0867e8a46c317056f6ad365e328074c73fa3a1612285fa24465d","e9977eb2676f4d622229fb0f21f4e3b849adbb643de91307e5233b301e10411f","f2d3567210ca4d559d8297d6c4402599c93e3bc7485054192d38db5e132fbc0a","50d22a2dfdbf2dda7b333edf980566feb3f61813695c8f3b52fc866c8d969404","bdb95f4b6e845ec1c0ae95eb448c55a68a2752473e1d2107348abe40421cc202","ea546a7ed9eaa71ba78d4d392509dadea4bafed283269dd6c4b09e7d8824e986","4ec0f2a141a9ae7d3557b8efe630ac2021bc3a9ac61238b59293f4cf2f196e82","e062b1c4e638a95c2e2701973e6613fb848abb1f7673d4b54e6f729a87428606","0863a5876c85fbaffbb8ec8aeda8b5042deb6932616139706d2b82cde9d3f7c7","12f8b72e3c3a333814f4fa87d5b9a7ef1ece703f3b7ec7919ad2ffb58c48c1db","ba9c46725e2a0bd9df59d3a1e801cc60f90db3ef7817131c53945dce2b8c0c56","281d373eeabf80c4851f8de991e6abe4d385c30379d80897bbc3df3dcac99cee","624c5dce95672d9dcca40d9d9d82ef855f5f902292f43aa265cc8fd963c6ce84","8a48d9c6184992d1c3ed5daa55f83d708c37582916926a5555a900608f804b60","605dd288c636cf9b5317fe76dec75d3c7fb855fdcd3ee8cb4fea7d7091ca6fb4","95addea67857d4e568a02e429b15458cec203876b2ea5f5ea18ccfeeb91b8ce0","b5a615b0ad865ffa562980a10bda162ac1744fd363b4edc2cfc664222071cbcf","bbccd721363897950a55ce09529503f25a69522e5c91a22679b66e941e5f8654","d3a1e70795c38d7851b6e4f3b441c5ffdae171d6e2576a2204b7d79059aeea66","94c9ac65af8048cd33c05c16d40c0ef3534a12805277b7f998078ef1d431755d","063fe3004728b8516a4d799ee16f9a71801ba24e0443dd98638cef1bd4353a7c","0267341e780d4967cbd069ea57db7aa4e1fdfe74702ab0366a7a4c1da0ca332b","ec5a0291f1bcbd2662640e7a6ae0a632ce8f0fd55c02236bb43203f38436ca36","7ffd42ac60bedb9b97e7c35b48af9f71b0a2289f3324f414826eeaea937d144b","b20bc124abd8ee572d0d756713ff987b116cdae908a6fcbc40e80d4b999f56b4","1b42aac0e117a5a04d4314130a44e532253d48e00ec315ab2b75c72c1a23d4ee","a9cc62c0a1a6a88bae9ad7adcb40a722a0b197505fa26276aff0e830a29ab04c","f068ff5b7fb3bdc5380e0c677e21de829bd25cdac63a9b083fdc220fcb225280","09d2fdca6ea6c135897a26976ad3c0db724adaf23ef4e38ad852b1d8efef1ae6","15de5b7739bf7e40213a200853bf78455ee5958af08eda786605a54a7f25ade6","aa31b69fc0094a66e771e189d387ffed138b53b211903f96ca3737792f69abdf","975367362aaccf979ac4f35cc402b948981c870b03e8b8d28810db1555837a68","89e253db2c2cc9a510c521f14dd2b1aae4de2556ee5159ad8d118d3587e3a880","b580028098f87431266599cbd870b472e88715e29885fa97c2d816b38cad9c26","fa3e9cbc292087a73527497237c523145ab943c435a92dc254fd250a001e8e21","6fdc88b1287c276b55b7f7c4c7b49587813c763eea9751ce0baf0a7e61cd5d89","6a02443704052768bd021f24783aa104b02ae4444e9b735317bf13c6b857a11e","37987b0fe9800cf25473c882ce07bccdab2763c5681c1a2d16816aead46aa8d1","c84c03c721154068e1a60d83e9e85819bd3ef70b824ac2edc498aa31c06e5781","f4e5b4def2ccccfe43c0905074695c349230505faf6ae74a28b0c1090acfda7d","94cf36780aadc31958dc2047723e58acf8b20f1b2ddf4cda68ad51d8237b1918","b54b2b8caa5e36c039d40a2eb9612c28aa033b4aa792f80bb4fbdd6f13b46e25","06bc0b9cc7bf0b92534f1517fe5adde1f23f60cc6cc5c59f8e1c65db48a40067","919a753b0cbb12ccc606c62e2d34884d75a48ba19b1dda497c72621b11dac088","2c27e33ee0bf722988da00abd582cc9b806ce3fd9153a864800a339ad13f3fcf","92d7b3a5aa5dc872e54cbad2a7094b3ea4f72c7901de1d07b4c334ff658297f0","7a52922b38e9686d5bdc6e75774929eec6688d26c1dfe4a03ddec77ede468e87","aa5efca2833d89b55248f1889a6433dab1b1f41768e9a75f8ce35f9bf56c5ec4","f3cb934699bea498259de69c44a4f93b461f079d72cddb041587afd9312efb6e","4ade28b8e7ff47d5cbce4d30ebf6e05ced32d6ea23930b897c377d23f9f2f114","f25ffc20baaea5269b5bcc4f96a4d2628328daa36051fbd031b27c8cf8baa344","36927eafdf230172dbf968749804e6186082eb960ed1bb4e36e1536c6c4a5fd3","1218398da7c8dc4add10bdb3aa2856aad54b123d847eaf574d1d694ac269bfb5","07886b8104556bcc9314b90cd2043f2286e54c1f6ba2ebbc953e1e43232e12be","b637cd92688a6cdf4f8f184ff529dc2bc7f15692828e2c0c66a60e6972f400c7","8131bbadfeef07b067a4fe3fd9bb2b983c2ad631efc15123445324f9cb05e447","e9acc77854461c6072dfe6c0ba7150d304c1e61eabbf00131c921f61a6b04cb1","3fc077734e1ff23401f5fdde3de0f372880393b6e253f3c43f576ba11e23393e","50614c808e099a1d4413786f3783d9eeaaa74b267f2c87fcf8a893287e91c301","f4cb6530f248e87cefa74ef623206fec805f6252f885f8e14ef3d1a5872cef2d","38c332caadd8391566552395d592076470a5e7423f70964620eabf05c02907cd","eb17b5bf1fc763a644c21d76572c0e41e351c3f6dfcde649428d5d829f7294d2","cb124162c87b29ff5121e3ee5bb29c782f101e0135d6c2644ab1b31d530a435e","406d6f5d3707c488362fb40d1c1f8a7b0a42b70554b427160185d93e430228f5","2e9776410c5bc290d9432a9215c67398a273e514a79b9e15f32ecddfde8a03be","313ff8df074b81d3e4f088ff3a3a06df3d9b0d0c7f55469ccc2ac887ecb6b867","c718475bca06806cc243e77777641cb67ba68f2c57321a4773ebb47760a3bcf2","96e6bf811343caab5112b68880905c5d20d9257054afac6c18e718a4c549ed27","a2793bc73ba63ca7d259cb0f0b61d0023820170d08a1f9715006c8042d060165","d5011b38165771fdf75a9a06d6d379a1fc7edd7eb695ebdc52319fb6e3c6d81f","88417fb19d339304e9616a38ea513251047c9e300c81f9467fc317df8a582e71","c6411797a81e3f64f8c2b4fb7575e5b49c2e8a9376d31c2361e8c8df73488ddb","88ab362442cd50cfe62e99c81b10c7d2cceecec31f9fe4d75fc6673f9f37e414","cb155e69fa97f811e48cbd84cbc1c608a6585ee8ba2a152c0835981b8add7ab7","019f4f1cbc781cc15c6173f8be5ef907405722194ab297127b3c3426e5368339","3cd95a72058dbf36275e0ab3cf6ae9711dd2aed11cd0e8a2a6ac8ac3d8b9ebb1","c79f1c8b51d8475dde8d2973f740f43ca34b1f0a95d93649cd76c1ee20abba19","35f0d2bd2c5c05c0cb19095bf5b7c44365b1c88efe6285370855b90417277a64","8264b129f4c4eb4799703f8e5ee2223a184d1cdbfc782158b1f40a88a4435a1f","527ddda6f8be1279f3294714534c49d6e90f238cea325519882ebf88d7ec5bd2","b23877792e8bd00271d0ec5d401b68e4228540a4316de3d9dfb697b955c161a4","35b2eb1de01633db90d41abe93730b29984856fcc840b4c2801bfd3761a2097b","95f0c9127b879c2fc7e31f8e09ff45bb4aae302e60f4b9ceaf4d9ee6bc51ec66","62ad07fac36aa0a7cb5d537c52a902f31a6160ab59cbfe365e4313a9beaceed8","6e3d29fdc96ebbb2ac672d2dae710c689c1ea0d0e9469e0847616f3c38fd085f","d505055b8fadd42da235c85947911d8d198ad70c5f5775991e7821d4f89c90f5","8b5a5852099dca7d7e7a7cef6d681dc1586aafacdb963ca180fe5cabbfa3a24b","0d1aa3341d1ad2064adada71c5d01a2f572e4aac09410e5616d90894105a0eb9","52494ca5a884da3bf11b8165ab31429715f0970d9c6383240c5666f4bd713e01","2d1f9fed2116cc79bfc97765bf8f5259f39b9bf213eb2a73608fcef6d400da56","b4b9b51ee6f6309cda2e539245235a8caeca2b1d6bf12b5e5c162d17333c450f","28d9cd978e05d58f2153924254766cf59fb155639335239949f21066f90937c7","c76053984b39150d00ade365b096a8bc21a4a7f2ee9e0a926711b00f8e7bf701","956b510767e3d6f362ea5800510635197723737af5d19ae07ee987ea4a90bfa5","cd1a8ff61f5063d7e6e2094e25d35c90b499961b63911f2f4ae0ff5555c2b4d7","1cf09b5945779e9bc75c4dcd805fb149c28fc90da3335186ef620647a3c540e1","9cdc0b9a313090ec45b34ea1eb02fbace433f509e753634b043e9b83038261e6","c93474cff0088351a65d3cad24037874a26a5371a48528563e56efe31cb3d8bb","b4580df8ea7f62d7b06588001952bf69426e6b03cf3d2569f5f608e45f29ba08","de27f7bb9be9d8a2b4557ec6503b8a315f74d598ce9a0ab81b5ed5610e1a8e81","fe3c378dcefa7ed8b21bd6822f5d7838b1119836da75ae1e1fb485d27b8ffb62","7365bf3333d4277b6fe374ed055624e5ec080dbb919e2d78f1cb75a3f1a4b4f6","339a76a138b3e22a4c4386cc5abdeef64bd778fb0c35dc2fd9cb58c51fa17dc1","0923e4ac8c894ad507bd2daee0df66b699de88467201381ece011ba5a080e1ff","e4f6626f827ea509255647e1b6db82145a2eb1a6b46202655e7d9bb19145c33b","26e23972c40f378f0301d8d7025ea895557c2865a1a31c8ea9c3fff0dbc27075","818469e2f1c49f6cf6f220a81df013daf6e4dc4af7f9c0890ca63ce06d7d7299","795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","6e87c0c1cf06fe7dd6e545d72edefd61d86b4f13d2f9d34140e8168af94a7b7d","cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","b8d9df5c49858df86ffa6c497f1840528963c14ca0dea7684e813b008fe797b3","340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","b1f8c85b27619ccfae9064e433b3b32a11d93d54de5a1afdaeca23c8b30e38a5","0ed6417b905cddb85f98281cb3b5b137d393955521993d9ce069d5e2d6b26ee8","f9ceab53f0d273ccaa68ef125974305dc26fe856af9a5be401ca72d0f78659d4","99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","8e1453c4f07194ab558fa0648cc30356c7536b134a8d7516edf86fd93706c222","eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","ebf6ea6f412af15674333149f7f6561c0de9e36a4d4b350daccf6c5acbbf9fa3","1d6cc6dc76a777be3856c8892addb58d60b8957730951f9ab8b721e4f7fdf7e9","7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","1f9cc8013b709369d82a9f19813cd09cd478481553a0e8262b3b7f28ab52b0b2","a314a39426700ba2b5a76c01bab321bbe79cfef898dae996e930b017fc2b0af9","7f2c10fc5de794bf7ddad2ff13b46e2b7f89ced296c1c372c5fdb94fc759d20d","c2014a7a2718e8f1f953ced2092cff39de89d0bffe5a7d983ce12625e5493b9d","fc4439e09b1562f72a4dcaa193b1ff070e0217ac94d240282871b0642953f049","0b52cb3bbccb5d4f9aea4116aff8deb8f9bee11fdb9fcb363046fbb434a0711d","ab51b8f50db5f65229eb57e8be504c5a25208d61af752a5f3175a2e3126aee22","5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","8a4a75382ad915be014991cffdfef0e8d78572fe6dfa7f8f8eb748288bec27e2","44ec212fbf43580505de3d6054376ced252c534ced872c53698047387213efb9","4880c2a2caa941aff7f91f51948ebfb10f15283ff0b163f8ea2a74499add61aa","19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","c3befd91fe65a95f9a70f9fb62cdc98f0ffd28bebbc12ab09298de70f9cddc66","b1048a866abac5d678376310d28fd258fd4d663942ac915a5fa90e585cf598f8","c9c6eed8faed23fc697b79d421ac443594a3458ae2a60150083ee1e860171971","29bd5b39f6742ef7a907f41a855653ce7af240c8c4f9b5aa78b02355321755a5","9ddf8e9069327faa75d20135cab675779844f66590249769c3d35dd2a38c2ba9","d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","69196fa55fab9cd52c4eecba6051902bd5adff63ecf65e0546cb484b5a279fb1","35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","686b884e32299679a1489be7051752bcebc82255c7f1f1929f8b2ef565fd84b8","b75aa590b103f8491e1c943f9bc4989df55323d7e68fba393d3de11f4aae6bb8","b494648c291d0fb42660e97cca99fdb65d722cebf30c0eeb7fa390f205af0d51","970866cb5213e259a6c10b736d96cdfaeb65697bf2e80b4461f4edb34e4f463f","90433c678bc26751eb7a5d54a2bb0a14be6f5717f69abb5f7a04afc75dce15a4","3ce6884df19ea1f29b33f1aa8529eb2b061ce71ed50828e4fd3b065f1d2e93ec","c818e48bec39aca06abe82c635eba9199672f9e2257bf78b0fa7062a7e531ce7","87b0d2695c5c37692dc0a6dbf4cadbdde3d22fe068d7d3e3eabe54125a131a8d","6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","c18f4f72a68275b7602e5968b862cb9b7b76ea4a1ac1b3e622f99e0b672569e8","0fdb1ed509382bd388896d3770655b0cda8c80c36f8c54b3899992f7a3a8665c","d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","f55fc3e536ab193aaabb9b6ded5f93181f81294ee65fe3199c9f4415f0f1e53c","ec8053ec564993a885ba2e2c31408369270a190a332a29fac7a825bb7e60b37c","542ecc66e4fcc33f46695ae22b1d14c075054a78c019915d556636be642465af","476b5c25e85b94e15d761bb9503f55fb11e81167df451f187f5080fca825273b","72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","52ff5e1ea35c54428b46c75fd14f87b7a7158a8f4a1ecfc4a9b996a03185c738","605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","0d276d377a0bf0f35e8d7a5b871922ebfa6aff1757d1bbe27a7982b15ce78516","9cbb45413acfdf0cc384d884de88c3f951319004450c88a2bcdad62a11bd21d9","d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","ced87f58b05e2b07e314754f0a7ab17e2df9c37ee2d429948024b2c6418d6c9f","3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","3ac0b94ba8f884f63d38450ce9e29ecd59ff00805ffdd609193d7532b8605459","a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","2828dabf17a6507d39ebcc58fef847e111dcf2d51b8e4ff0d32732c72be032b3","c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","473bf3574a48185f71b70fe839fb1a340a176d80ea7f50dee489c2dc8e81613f","2b14b50de7e32a9882511d1b06be4eb036303bc72ce4a10f93a224382731500d","eeb24fa259f000f6b51a1fe89123f55de081eb2a0ef8d8f847afd67af49cfb68","91d8f3c1c3ae5efb8564ec7cb1f8ac8bf5714eb94078fb50a761ab811963e324","e21bb2cfbcdd8ce7eebb72422f3660806724f2b16cd6ce126d527511abb3a379","c04146836a55ea071b435298335e47f569db0e4d3ae420e35c83e448f944192f","31f71fe23daabea143fc8bd21dae0d5908227180fcda38ad3674df70351f9761","1e488188e99db261e338e0683813d20599f14c86b9b3546d35623c2caa6e23b0","4e1579c45e1a102078b0d24d7d05301657cf7cb2e77e2ade0c05d74e7922188b","0cb819e67e1b9dd575f53cce1a1f7267d22772b37ca60cd2516f24533b04e437","8d907f5e50623adc4e85632f1d233635dadde838208273310a11cbabb653b497","c802e72abaf33b77a58b9581d2f8e611a5fb0c94fdc4ea101ee59a78dd6ca746","8e64d7568722e6f6674e399c9e785ff23be6f970675da012f1c6f9b118b82a16","540e0eda4a2a78372dfd06a35bddca942f7ef6ca111d50be5a03836808270b6d","caafdf3ef4ee8163d9d4dcfe6bcb68a23b6c639480139407f682e13cedb473b6","ab5a144caffaf363fdb9a4ce41b1d70fc9e9efcf666f94ce463d4b239fd108c0","f171acb46af0a675915a5f5b73905d49a7255eecbc7b934878886af243d6783f","fbe89dae6da8f8e1d2c8e88014db73db978099027af2bc57883034af40e5b04a","33a9f0b6918da8adb508a6a052bf19c35d1eab2f77feed5cd1ee05201f498dd8","e80b39c0514911ee7b9130f12f9a48e7fde7e5740b7f2eea329299bd8f4c8a19","dd14d9057877b9a03fbac9e927910de0f44d2d9325e85057e6573f99560e18a1","cd57825cdf7b92345ebdd7b6f6a906731c3be41a86215c68bd83bd730ad2ff55","34916ef889a5d6dff6f613b8884e125ecc59883357126d7f69bdeb793d66fc1d","e66be854335b1fa96aa810524a94d14f324617c2d5f5437933044b0d76fe897f","42cf47eccccdd04432b96fa186c0705b89bff6689e3222c82d444b77ba458b11","641acdfefef7b22bc327a25c3923f93dbeb47ad8d74186f020bcf490978041ca","305da33cf8c29dbc59b8dd392d1c95e478bead6c18842349654a9cdb63f0b59a","3c11addb000e273a744992873f30b1a25eab9f0248f3ea6dadd1716a4ac37228","f5e0f3e2a52ac4c095380a0ec5ef2991a23773b91f42a3f97f32f2b50100713b","b9c89b4a2435c171e0a9a56668f510a376cb7991eaecef08b619e6d484841735","b85baa660305c65d45f97f5b227b1505a8023955f1bf27da178232e7be99cc12","988f547b3b2352a26ab1574c2dd63b6f2c4aa234e36dc99da4fe320e7b4a28bb","89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","d88dc05fd345b7a4e1816bbfd2dd087eefa9b9e36096818c2348f5b246971125","fb986dd9763020d8b0bb92257a2be89f18d286947762d93788b8518c4a3db2ef","6b8861483f8d90261908256836f1b8951d1f4ac9a2a965e920fb18603c8d1d0a","39f178509d1b8a5efff97f086c415dfaa47d4fdc9fd0722c402af2e72e07ca78","89d8275e44668b0869d4009258aeb1949f6efc5fa12bd9cdb9d57bd3b868cc72","fa39c1480d2cc6b9474b6a5d7d56a5db98ae9c6433a05581551722a603773ce9","3a93e73ecbb7a89241c58fcf30ecfbf788c3e98d01f5eab4573ce0f8635b6506","a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","ac10457b51ee4a3173b7165c87c795eadd094e024f1d9f0b6f0c131126e3d903","b2f2311d7085a1feec3f6a85d7cc8bdaf1d976de1874c1f92940ad8ce6a34d39","954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","4ee1e0fea72cd6a832c65af93b62fbf39b009e3711384bb371b48c9abba66781","d35fb65da678a4971822249d657f564ff6bdb6618428642235c4858ebafb2379","b27a613e49e00740db23e2e267b8e44e51ee85a448e787b7fa7c7a7be7316104","4d54136f3080a92f0b031115719321fa25bd855582c30f7f6b6e78969ffe7ec5","6c7554f14f08d3264e220f6ac82cf00e3b6a3bd15ec676bd97bf0e06da79e18d","a2506732a96c864f9336a4fc0403f7f4f3831cfe1db4a40ddf95866dbe2d28ef","8aa451aa2c6e762f359e6fae74e2903f6e3304b1a5ae19c1da548128ddf25add","e3f5060e98d678e320df7fed7391e6c1291849df4b9e36c8b2ab6dc5604d8f37","380970ed12c5382fa1bd36a84c8562b042aeafa6de618a64d27e682e493965c2","1f02c62e0a52828473d9a60bcd7befd9b333e9209fae90fec30af1fb16f7ba19","9c89ab413cd620c91d82ef9a9631eca3fe3b65090df1cc729a43e1fdc9f8ed37","5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","0b7109542117ad1529021dc091535820f0c2c42cc2399a751ba8af5c119af6a9","a33c72cfb6c71ffe8074a297ebd448d8a3b504895fc7b64c13d3aaee48b2a02c","9f96b9fd0362a7bfe6a3aa70baa883c47ae167469c904782c99ccc942f62f0dc","5df9a68835c1e020625127d8c951c90808d319c811fc3a780d24f64053192ea4","71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","a644ad1efc0cff5a46014b5c14e85ec216f790db47966d5c3bf78e81680063c7","10b23826a1c4289b040789481c970f07dd2a2bf0573777267c27149487dedefd","8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","27484cb3aa328bc5d0957fcb34df68a5db1be280af510d9ed3a282b1a0a93b38","6c2b8c78eb1476ad2668898923fda9c3e67b295b9a6dc7a7312ead2582a76883","d8fb0821bcebbcc5ef87655a6442e8909313eb0bd7960f696b10cdb31576fdaa","1053398d8fd9b1a45170b5cca30bd54abe7ec7061ef2929c4da9feaa71737930","c21f2aa4d38c2e9fea29dde79c15aed25f532ed1cb295794879cbeb8372a3ce7","7afedbfdd1a5220d472faacc2943242abb1f3f274b80984b11e804d6a8d8f17f","e9daeeada73c75f2fdf18f3125d91c10ec71d0ae3f6c5d3f4e6815409c46cf90","c86ad86cc7a3ec3794deab9b943a823d9aaf09b846bb581a06bf263117e8d6d9","cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","f23601713615719b1a1394deae884fb9f507de819a086d5a019c63793da9efc6","50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","ad5ad568f2f537a43dcc1588b2379f9dc79539ae36b8821b13a5d03625211eb2","99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","d2d58166965f631fa203f405f3713b0f86f1f8b80755e9daea43057a25311e16","ce7dbf31739cc7bca35ca50e4f0cbd75cd31fd6c05c66841f8748e225dc73aaf","942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","4f795f66a057de6e1755d0b56cd1d7d08eff7f804fc5d7ede301cc9c54fee7bb","0256d60785ede7860b5262f504f139aa68f74db44ba9f03807b752864580772c","396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","7cb9b6d5c1e3508fbc81e7bbab314eac54715f9326ac72fd0eb65f17a4393d50","a2799b303fcc12ca3688630b4aa430bc4eed65397ed4300e3f68c96199a52b6f","629a35f2caa6fbeea73058fed930b53302c35178c86a6f2baef4a66993d5a88e","da1449ff588ec5fc9e8930be2995c730133fd0fac0d06311922c6c5e5f8e6cd9","50183ad09541522ef0471069f8900599767392678fe3a1a62570ab7c82e604a1","e8b556459403cfae6d8d14eefbb85c6246bccc41ecde7be616d643df513aed6b","903bb69c5e5ce0cb8f8159a86acca9116275f8c78253db80004fe0d78f436ef4","9daabcf8cac2bd41d4cb83511c0358fc24650fd08f9ae73e888582285a116a3f","82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","691e990c527fc0abefa2cd0922b0dcfd83cf98a3f0c11a96a854f34fc85361f5","862b3a5f6637c3826ea615378ba203a3cb4e8320bb2f4422aa055f69c7e7422f","e3d221660c0b79a9a3ba1111b3dfbb1136c0b52d7609b0054d3ce09ce711a3e6","892adfd3427fa4ed24bede88e8e46e4cb67e53e794365023fd473f3be796981d","992fda06eebba15d37625007500bef5b3fdd1c5e2f5a334064efeb1604c7bce3","07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","abdc0a8843b28c3cafbefb90079690b17b7b4e2a9c9bbf2cd8762e11a3958034","2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","7b5ed961a0e03965299591d73de8b8c41e8a68105ff4fc07a240b0dfb94a5a3d","28b374712835278e5cd241ba89c102da726195edb230243fd04392fa1f2408cc","019491fba0fda26e7cd7c99821e036b01a0ccf3e7f0ccecc389d98553016861d","e59ad6eabd780c5d95b436e267bbd5ca60859cec9bab89998fa0d76a31f8a57e","a63f2262f1d48fb91c2a036359f3cca6d08ca707f7ee0e69605dd17d08c2b636","01229d1acba9cf46efe658c47460363cff4865b80d690dcdca077da6b5258b0b","c78c4d03cd663ed702e4e6ffc9fcce26831d1af95d517622f6662040282e24ac","5c0bb63f50ee2c1a05a50296b0726e87ff2a56a1d6b35730d9d001aaa88776c0","a3a48fbe8782048f74752a1ef300ade63777f62bca44aadd9bd99a4ebdf9b9eb","2731e9ac06adfae7b4968f72de6f8741fcae568d99acd172ca00428acb44a1e0","2ebca051934f745e29f877cc200171c0287fa39f209f344a92bbaa8f31f4fb41","e5f8c5c592e84037e152b13929384d48d8389857f913e996c483f7d470478c33","a45e69faf1b52f74580cec77f328b5b392b7543bf9d6e28fc3dfba489ba1c75e","7001f9a69a5ca9c05afad9a45a2af1d4718e8a15571516f9c572340a544e830a","95f76002be67108bec5337348c9f6fb1ae77dd3081fae9d73d7b3117f2e6d681","6bc3d452c2417247010a37309cc31cbceefe8415c24ae73874c22190dc48f4e8","607f26a2aa0b59736200bbab26fa1eadbfe158c4a3bc35e6b0d3894a28eb2aa9","b4a5c84503433136ab631988ee69db855c7e4434415acf96800cb37b9d563d7b","83f08a89e5f22e805b5e5e7b04464411a83c316d4c75118a803b89cad00ab158","ba1dde1e19202c7a0664678df9b68d3ef4df9bc8cb38ae19d2493a2ae77c28a3","d5630d9a809f159383cd2a59770b82eae1d37d9e1e6ee9397eb7c906a2696edf","6ecc423e71318bafbd230e6059e082c377170dfc7e02fccfa600586f8604d452","772f9bdd2bf50c9c01b0506001545e9b878faa7394ad6e7d90b49b179a024584","2a28ac2343b34a610a32beb5bd62953f95ee64b3656febc819bb70f5a85d15d6","02dafa194c95b7c0293059512b8ea3bd95402c6e4bc8331dab7e92e842260c56","4cd537bc0fa84016be29bb4245fd1724c6954322f397f9c30a3fd8d96b47f26b","cd1ccdd9fd7980d43dfede5d42ee3d18064baed98b136089cf7c8221d562f058","d60f9a4fd1e734e7b79517f02622426ea1000deb7d6549dfdece043353691a4e","403d28b5e5f8fcff795ac038902033ec5890143e950af45bd91a3ed231e8b59c","c73b59f91088c00886d44ca296d53a75c263c3bda31e3b2f37ceb137382282be","e7aa2c584edb0970cb4bb01eb10344200286055f9a22bc3dadcc5a1f9199af3e","bfeb476eb0049185cb94c2bfcadb3ce1190554bbcf170d2bf7c68ed9bb00458e","ae23a65a2b664ffe979b0a2a98842e10bdf3af67a356f14bbc9d77eb3ab13585","eccf6ad2a8624329653896e8dbd03f30756cbd902a81b5d3942d6cf0e1a21575","334ed2e25a7ebc8db8aac231bab5a5b57a1b6f8063186a92314f4ddf3d74d4e2","41ef6b546d3da1ea3de9b2e72ac7b9a219cc9905df631c01ecaeff477cfeae40","62463aa3d299ae0cdc5473d2ac32213a05753c3adce87a8801c6d2b114a64116","c9c2eabaad71c534d7de16385977f95184fdf3ddd0339dadbd5d599488d94f90","bdf0a372e233a8f5ab5daba2763ab8897e1044d735c1698a261b8e2ab08d8d13","9cca15b1c8c4fca29fc938964765d521690d320f1cc478ce3d907abef60b7711","1205f9908206109effcfe3649bdac82907939bae2e3cb132f8f6236b587515ac","f689c0633e8c95f550d36af943d775f3fae3dac81a28714b45c7af0bbb76a980","fef736cfb404b4db9aa942f377dbbac6edb76d18aabd3b647713fa75da8939e9","45659c92e49dfca4601acc7e57fbb03a71513c69768984baf86ead8d20387a01","0239d8f6a3f51b26cbdbb9362f4fde35651c6bd0ff3d9fc09ee4a2da6065cb4e","f848fa58526e715c62b20c820a0a0b3ace7175bca1201bc7c0747a6e49502372","17b5469df1d2c13496e90752122e1236d9ebd057fe5ff3b37f1e3b4613ea3969","8fc97ef271771dc6f81a9c846d007ac4f0cb5779e3f441c1de54dfda5046fe7b","ddb199b4aa8eb41c7de43c8fc4fb4177fa5309690e094e652fd9651884af6d0f","b64fec482d5c612291eebd81e32993663ee90a5dc05cfe43464e6ef5ee1cae73","2dd9d764938d20a0613b89b14d7da644f7be4a70d22f18c3019254029d7a7a3c","021034a82ea821144b711eeba792f824f03d30b5cdb3b20a63e9bc5ad0531fdf","b251114717c08c462c1a8388155ded58cbdfbadc13488b775a4eaaa59863dc46","a2e546426763a9d5d4b5b10b928fb312f8b76e581c8a985362cd04a01859e51a","33bb0d96cea9782d701332e6b7390f8efae3af92fd3e2aa2ac45e4a610e705d6","ae3e98448468e46474d817b5ebe74db11ab22c2feb60e292d96ce1a4ee963623","f0a2fdee9e801ac9320a8660dd6b8a930bf8c5b658d390ae0feafdba8b633688","7beb7f04f6186bdac5e622d44e4cac38d9f2b9fcad984b10d3762e369524dd77","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","0d9efc693fa6a92c5e50d62b7d1f912d50dbb3b7a5eb7d615d0df65b6685c4f3","f7a79f4a3d3ca7deacd5dea69aeea04547b2f777c158e957cf095884ed76bf6e","7c54c4b7f7752b0315f14b9ae63f00d7a3f39308e598c670d8a96afdcb8e0a4e","9f559e612c27cce4bc181decc88ba90b00e5be42b6ed7fe9316d6c61476d7439","03dfcf3d00c60a769e705eb5b080c3674cd59ae830ee7ad82aed8f1883f60f06","ca8cec5a09c4323e1fcd9e0f0f84727c9b0818802fabae4ecf7f42a380483037","92d06124389a259ec6f17fa490dd2da4a8aff8fd9055047036e63211793a556b","aa8c0e10f176c156cfea40f5acdbc08cb44a43ba5411c743be645743ed3b1c02","b1bf7de0413303c8bd9424cf4955b433606e90eb31339202c8bffdb1dec982e9","979a151b6741901c83c365c97b7e55dcaccd92402fe6095dedd7be206bb23bae","ec982ebee52d26bdc7a7520612216c9c55e7a44e6fe0f654fb26e6ee41bc16c4","91cd91dca4b299e4a9c125f9c25d442f59e3e6e591170ce2c08c975d29206f69","eb8b953a086eb190829bfca1622b1afe51e9ab3b243414f4ade9747494a5aa7a","72525cd996374e557811cc99b4d11478ad743b2cdca9400b29d183b87d6db6b2","488802186d1872ed533dfbaf8fdfacd8494700bd04634c4248d1e1c3f4045a78","58a91345b1b8060e59cce2c1843031035a313f7633efc56748621d26f70c39f8","5b9d477c5a2b3893cb008c4d55c602cf53e8e80330f089c048d1868d9372b6f7","8457eda41803df7ac9959429ac83bfed0bb4308e373a168915d6fcfe0beefb9f","a37a01b20fa5b139a741d72389e07987d65bf9883ccff8cb90601cc7442a6751","112265c7781d416cb18038de361cf84a49ffd39cb8e2c41457877ca288281642","b4b915d13ddb891a67eb9020a22484c623fb7301e59c9e75da1d897a443ab2cd","b1f580fd45c8fba8718ed7c3f4695604dcee962ee5976d79d77d0b0d77e7391b","02caa34de9617dfba730219a360f489bdc804c6213cc748ad7dd334f77b08b27","bb44a110636d08b1b3cac893279ad08a0de67fde825010fdfc4c624e4d307c02","fdaa5513a1d1e18b29da3b02ca51a5877f01a856e2df4414cd2fc2cfe469aafb","a8b0b8013626a817b30eae6145aa7bc74c0efa0fd18b4afad347050fc71ae0c9","6d048e32e69fd6edfeadc5251bdeaba7dedbb66b384556eb7c8bc418ebcbf214","e664cbf5fd9b983a7777732266b7fd22073348499b102331035609027d6a5647","0f9bdbe60cbfc72b81678841d30bd94b0c51fff9ee3808ae36747eaa73243ecc","2c6a49dae306019555a3e357e2f5664b7c8a09ed31f8861f1471a8d5b53f63ec","da7d955a5e559d4ecf7d06db5d6005bc4a7b85b64902a7909754304f223d5a2a","e76823fc7ac580977618a1c0a99fc2a1462ebc351f2f6c1ba1e7cadf27f0a8e3","41babab2dc633535340ffbd79dd992c2385d47a8aef3c5d16f9f81e8b9b237d2","05ea8f375b8e4699aecceaa3534aadf66f61fcbd326df3af8c20f2ea7d87c53f","8089349a78207ef55517287cc3f86bd7f630c4b2a7394e02987a89d1d99112ed","fa90c04b1098ac24800a5007e5683038b51c04de180e55a2f001e120e694bc4a","5bfc236c563af10e5120f867adf9e25f86ec2a1378e5d75095d63e4b255b4447","e844a85e94164563336c5a4206ece17e31c8f03395748272f47493ac97bba964","c7c1ac2ba58daf1a3c592f22617ea6d6e6eee359ae30c22aeba33346b004e4e1","35ed6b6b8a38edce2a74737274c8e9e27fab879bcca014bd5693d8ed2d5b8752","a02938b99586d48eea55ba704a4d63fea6628fe4e5f3262e5b9af06234442ef6","fc7208f6d3efb1e8c3fc9fba27b70a697cd8454c30ca41b866b40cf433b6ca3d","2ed79f8d0b9ed516a0e8a55ae52652f3fce8837f688497d561263d82b15d3610","737fa7a7960a782f86bf64476afe25573fc1e263c5cd45a7958aeadb8b663a49","a6f1efe3f89496579ad74eb91a24c671b646a31cf0bbaf7ba19075217b680c5b","5a3347789a9243294950218ec9823a279f65a039abf1bb8a7384c104a33248ce","ce5455ebf901151b03920a257c74bd45f5edda43dfbe00d437db3a4454fd53ac","d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed",{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true},"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","cb90077223cc1365fa21ef0911a1f9b8f2f878943523d97350dc557973ca3823","18f1541b81b80d806120a3489af683edfb811deb91aeca19735d9bb2613e6311","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","232f118ae64ab84dcd26ddb60eaed5a6e44302d36249abf05e9e3fc2cbb701a2","32dc570ff4592224a8d565ed68342de74d4933df8330d70060e79514b69583b3","3a85ca9d6fb08404ebaf292d8f472193c80d9f4172e04f70d8d28dc68ef09cd9","27c2a3763cac4fb744f8be91dd7282f3bfffe8923de2c4a4833b606c497654f8","ca1d1e89e3f43811c1a3ed33db4b3279c240e2768e68f6dc66b6ca002e5d040b","dc3b172ee27054dbcedcf5007b78c256021db936f6313a9ce9a3ecbb503fd646","15c112a3458aa50760b2df80601f1e14d24ac176e176b7af4d0ce7b5cc1f972d","9163267f997ebab031fc6ffcbfb0a1aea0381e8696b3e8e2b995f74b649cd145","6ab1224e0149cc983d5da72ff3540bc0cad8ee7b23cf2a3da136f77f76d01763","15f7afbede2947a3591c3748d141c73b75348b3fd78e7dceb571d8d5d6f87fc6","1201fd4fa101ad2c422f0aa7c0606c68090a2656bc31cbd7f7d459d9900c9a95","99b72c2392295dd9a52af0b4d3a2f3ee425407cc26aec5095fef070eff8a4c31","6de1c686b82ffb276398c0f499ed7f086caccf18cbd7269f85d5fe63a9cdf25b","f0fdc4fcfcedd7300969a22f9e413c9dbb888e3db35edae0d06b4d7ecc9bc719","6f8a416a3bf1abfe226200427d5a62e0cbbf0c942fdac01b2229d8c8d1ea27c9","3cc16303a32f31182bb66acb3b80b21362f7f7384d69efb21659d500fe5b8fa0","cd51ceafea7762ad639afb3ca5b68e1e4ffeaacaa402d7ef2cae17016e29e098","1b8357b3fef5be61b5de6d6a4805a534d68fe3e040c11f1944e27d4aec85936a","26dc8314c91b71c393777840a087650e63face85904ea8bb7c1c1895f01e8391",{"version":"4f24c2781b21b6cd65eede543669327d68a8cf0c6d9cf106a1146b164a7c8ef9","affectsGlobalScope":true},"86b484bcf6344a27a9ee19dd5cef1a5afbbd96aeb07708cc6d8b43d7dfa8466c","15ab3db8aa099e50e8e6edd5719b05dd8abf2c75f56dc3895432d92ec3f6cd6b","6ff14b0a89cb61cef9424434ee740f91b239c09272c02031db85d388b84b7442","5d6f919e1966d45ea297c2478c1985d213e41e2f9a6789964cdb53669e3f7a6f","884eaf5bcae2539fd5e7219561315c02e6d5cb452df236b7d6a08e961ec11dad","d274da8ba27079a593a7de4fbe82f3aab664724bf4f1b080e977f6e745e690e1","8504003e88870caa5474ab8bd270f318d0985ba7ede4ee30fe37646768b5362a","1cf99fe49768500d01d873870085c68caa2b311fd40c1b05e831de0306f5f257","4fa55de63944a9f7796825eca0b2289da27886677daaa91864268543fbc7f90d","f3874b59c93e93a77549a0ab68f900b809c33f75276d11d6e2cc7588bea442ba","4502caaa3fff6c9766bfc145b1b586ef26d53e5f104271db046122b8eef57fd1","382f061a24f63ef8bfb1f7a748e1a2568ea62fb91ed1328901a6cf5ad129d61c","952c4a8d2338e19ef26c1c0758815b1de6c082a485f88368f5bece1e555f39d4","bfa7e8a9830bf5f390b4ccb4286b32239e6ddc4dca515aac187705a478de86ed","ef4c9ef3ec432ccbf6508f8aa12fbb8b7f4d535c8b484258a3888476de2c6c36","dee75c873b20a13839a8ce9ea9d32696682c6db4b1e9f4fb6bc431ed31b0fb8a","f981ffdbd651f67db134479a5352dac96648ca195f981284e79dc0a1dbc53fd5","865f3db83300a1303349cc49ed80943775a858e0596e7e5a052cc65ac03b10bb","a1c85a61ff2b66291676ab84ae03c1b1ff7139ffde1942173f6aee8dc4ee357b","a24c4fe21d5b13a9ecbbb39b5e22f5d4c6fe5feebb074865ba2de273381a73ae","f8d55b6b0661a60188d3fd0d4c39c38b6823c78b71f55d59f467f78c46607ad5","5a0d920468aa4e792285943cadad77bcb312ba2acf1c665e364ada1b1ee56264","76800125dd98b705a09e3cbc702d5f698514354e5aeac9fa56f80a1c9f6fdc74","8aa592b47f4deed833a11daa86ef6779ddbd02dacc74e67103c8ecb675dc02a4","da2aa652d2bf03cc042e2ff31e4194f4f18f042b8344dcb2568f761daaf7869f","03ed68319c97cd4ce8f1c4ded110d9b40b8a283c3242b9fe934ccfa834e45572","de2b56099545de410af72a7e430ead88894e43e4f959de29663d4d0ba464944d","eec9e706eef30b4f1c6ff674738d3fca572829b7fa1715f37742863dabb3d2f2","b0cefbc19466a38f5883079f0845babcb856637f7d4f3f594b746d39b74390f7","16219e7997bfc39ed9e0bb5f068646c0cdc15de5658d1263e2b44adf0a94ebef","4ccedab1527b8bf338730810280cce9f7caf450f1e9e2a6cbabaa880d80d4cf9","1f0ee5ddb64540632c6f9a5b63e242b06e49dd6472f3f5bd7dfeb96d12543e15","18b86125c67d99150f54225df07349ddd07acde086b55f3eeac1c34c81e424d8","2d3f23c577a913d0f396184f31998507e18c8712bc74303a433cf47f94fd7e07","4d397c276bd0d41f8a5a0d67a674d5cf3f79b79b0f4df13a0fbefdf0e88f0519","aa79b64f5b3690c66892f292e63dfe3e84eb678a886df86521f67c109d57a0c5","a692e092c3b9860c9554698d84baf308ba51fc8f32ddd6646e01a287810b16c6","3c2e543e5913aca16ba24e406cebbf84bac298f79c249ea255016fabaf8be744","0b9bcc98884f81d8adda2c5d2ebb0361c7a53af6713e72138c4457e6016ff708","1848ebe5252ccb5ca1ca4ff52114516bdbbc7512589d6d0839beeea768bfb400","31073e7d0e51f33b1456ff2ab7f06546c95e24e11c29d5b39a634bc51f86d914","f60149e188145ebf3e6edf735576a2c26e805ac575bfdfa839a27929175e0855","31d18349ccfc45ce4f82990c71aed8901272a8edc9c6d1b2d330aabf36f50aec","a90339d50728b60f761127fe75192e632aa07055712a377acd8d20bb5d61e80c","37569cc8f21262ca62ec9d3aa8eb5740f96e1f325fad3d6aa00a19403bd27b96","fa18c6fe108031717db1ada404c14dc75b8b38c54daa3bb3af4c4999861ca653","3146e973c617598b8e2866b811fdfcafe71e162e907d717758d2412ba9b72c28","a653bd49c09224150d558481f93c4f2a86f9a282747abd39bd2854207d91ceba","efa00be58e65b88ea17c1eafd3efe3bc02ea403be1ee858f128ed79e7b880bd4","f5f716848e9b1e873519aa6408c35ac70c1ec471c460497842f28644dd906cb1","55d3747b2a8949561a78f7327647e54418ab3746f7dced6cfe75d76f2b051aa8","cd8aa48c26b3de057cfd76706c0cff88ace0f23f548b8dee974088497780e5ae","95956d470e8b5a94cb86d437480e3e2cb65d00cd5f79f7521b57de3fc0726de9","e79e530a8216ee171b4aca8fc7b99bd37f5e84555cba57dc3de4cd57580ff21a","ceb2c0bc630cca2d0fdd48b0f48915d1e768785efaabf50e31c8399926fee5b1","f351eaa598ba2046e3078e5480a7533be7051e4db9212bb40f4eeb84279aa24d","c63a0620a7fa59bbcac4ae218d477fdeafac72b689fede1e3acbbb1b8d90f36c","4ce53edb8fb1d2f8b2f6814084b773cdf5846f49bf5a426fbe4029327bda95bf","1edc9192dfc277c60b92525cdfa1980e1bfd161ae77286c96777d10db36be73c","421703860812c1dc29f83893f89434c855e09354c49012ff63b70c21243d997e","0a0bf0cb43af5e0ac1703b48325ebc18ad86f6bf796bdbe96a429c0e95ca4486","75a7db3b7ddf0ca49651629bb665e0294fda8d19ba04fddc8a14d32bb35eb248","eb31477c87de3309cbe4e9984fa74a052f31581edb89103f8590f01874b4e271","22fcfd509683e3edfaf0150c255f6afdf437fec04f033f56b43d66fe392e2ad3","f08d2151bd91cdaa152532d51af04e29201cfc5d1ea40f8f7cfca0eb4f0b7cf3","3d5d9aa6266ea07199ce0a1e1f9268a56579526fad4b511949ddb9f974644202","b9c889d8a4595d02ebb3d3a72a335900b2fe9e5b5c54965da404379002b4ac44","587ce54f0e8ad1eea0c9174d6f274fb859648cebb2b8535c7adb3975aee74c21","1502a23e43fd7e9976a83195dc4eaf54acaff044687e0988a3bd4f19fc26b02b","f9b229aaa696a31f6566b290305f99e5471340b0a041d5ae9bd291f69d96a618","6592ae1f1eec2e4cd4db11033b6936c8d9e009ddc48c164e46ef101a0dfc2c70","d9c6f10eebf03d123396d4fee1efbe88bc967a47655ec040ffe7e94271a34fc7","0f2c77683296ca2d0e0bee84f8aa944a05df23bc4c5b5fef31dda757e75f660f","309586820e31406ed70bb03ea8bca88b7ec15215e82d0aa85392da25d0b68630","11e4e2be18385fa1b4ffa0244c6c626f767058f445bbc66f1c7155cc8e1ec5b4","f47280c45ddbc8aa4909396e1d8b526f64dfad4a845aec2356a6c1dc7b6fe722","7b7f39411329342a28ea19a4ca3aa4c7f7d888c9f01a411b05e4126280026ea6","7f89aebd8a6aa9ff7dfc72d12352478f1db227e2d79d5b5f9d8a59cf1b5c6b48","7d936e6db7d5d73c02471a8e872739f1ddbacf213c159e97d1d94cca315ea3f2","a86492d82baf906c071536e8de073e601eaa5deed138c2d9c42d471d72395d7e","789110b95e963c99ace4e9ad8b60901201ddc4cab59f32bde5458c1359a4d887","92eb8a98444729aa61be5e6e489602363d763da27d1bcfdf89356c1d360484da","074343ca788a38f572d8bdb0985956c0ad1a4d8ca8b6ef8c1a19a0e11cf09db0","d729b8b400507b9b51ff40d11e012379dbf0acd6e2f66bf596a3bc59444d9bf1","fc3ee92b81a6188a545cba5c15dc7c5d38ee0aaca3d8adc29af419d9bdb1fdb9","7d05ac926705ce932b6e41e5e273333b380d08b6a036ad0c8b01139586b34548","0bc13111c65ef1373c84c86c039416127579469828f0e01e03ffe00fb8fd6785","c00b402135ef36fb09d59519e34d03445fd6541c09e68b189abb64151f211b12","e08e58ac493a27b29ceee80da90bb31ec64341b520907d480df6244cdbec01f8","c0fe2b1135ca803efa203408c953e1e12645b8065e1a4c1336ad8bb11ea1101b","d82c245bfb76da44dd573948eca299ff75759b9714f8410468d2d055145a4b64","25b1108faedaf2043a97a76218240b1b537459bbca5ae9e2207c236c40dcfdef","c65a41b9185521fb1d98111fd30fa4b3a5020c0e9cd8bb8c691d5536c8688156","5a4d0b09de173c391d5d50064fc20166becc194248b1ce738e8a56af5196d28c","0e0b8353d6d7f7cc3344adbabf3866e64f2f2813b23477254ba51f69e8fdf0eb","008ed9b6d1fdb68f9d98e6fd238d99be77e738892c3a1c6cf8b7616de4f8b114","08f95bee0619072d2c49854434af3e53d94e7e762fc082b49cea59e77db06905","9e5c7463fc0259a38938c9afbdeda92e802cff87560277fd3e385ad24663f214","8d59c3a0e8eacafde3525d8fab814d635e73f8f2264f461283a1ee829a67d33a","2ab9b3b4938022c0078d38ce47fe7863e259d855f04fd5a92fb8af6649b57632","7900170d0aa04a0e64ae6c9c5fa9a9307a9b86f386ff28a5c741e011929b2de9","27a7310e2ce35b87726a7407eea5acdafa79b1af695cfc6d6e9646d3fae6fe9d","c659e3b84a2946aca970719d6ce9d592af739e896b897796a01654ec6739b5d7","d1bad5c65bb5d892171ff5fa91d1488a1f9f1ea05cd186999ac6f4c87f5f5296","0af75cf944cb034d4e82703f4dd66962420dba9e5eb54efd4afb1c72a4e9a1e7","da52550d65066ae8abe7a40b78d83d241add6e5c856c3fde44ad41d329c16ec0","fdffa303e099083d53b036f3894bfb6a5897ecb8ccd862cb7a1bc48bb33188a6","0acdd3e54a0f8e171b900c2c0f91ded4eee67d66f8a5c2c3df71665d916cd5d3","2db8218540b707a68c44418f622d70613e7f48bdbd1d1c588b6d59328a317385","1b6f82081278dd8b8a2d9ac15ecf011c50fd9eec473db4522b7dcc6a48472eee","1073a0280fe97ef51e67a403729022eb7edf708fe06f6d141e14452a9b2237d4","20578c3a48ab1f580264175b665873b7887240e076c50cdbac6c483e3e759324","db6a7b3675989db344c7ffe936f7e3f75414b95b0c92328fa65c5dfc2b620bd9","f1243bcdbf01634537d5c18f9dff7f8a505e3f4b829e94c5ad68fdf03c01c8e7","8c4df0fe9e6af0d04ff7f23dcb54991cb4f2286302a95bdab923abd1e7791556","c4650a260ad06ea391ae83f42b1b95450fb2224b2531e8e3c03efb4850be1972","8abc73ce3a5accc857d06c6f2c385807c2e7401bdd40871cad126b905570dd26","556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","0dc6940ff35d845686a118ee7384713a84024d60ef26f25a2f87992ec7ddbd64","a1c79f857f5c7754e14c93949dad8cfefcd7df2ecc0dc9dd79a30fd493e28449","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190",{"version":"e9f2cdc4e98e73a606ff68c470a8cb4f23cd638c47649d71b90a2d9413102080","affectsGlobalScope":true},"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","b0f9ef6423d6b29dde29fd60d83d215796b2c1b76bfca28ac374ae18702cfb8e","916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","d88a5e779faf033be3d52142a04fbe1cb96009868e3bbdd296b2bc6c59e06c0e","ce6a3f09b8db73a7e9701aca91a04b4fabaf77436dd35b24482f9ee816016b17","20e086e5b64fdd52396de67761cc0e94693494deadb731264aac122adf08de3f","6e78f75403b3ec65efb41c70d392aeda94360f11cedc9fb2c039c9ea23b30962","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","eefd2bbc8edb14c3bd1246794e5c070a80f9b8f3730bd42efb80df3cc50b9039","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a56fe175741cc8841835eb72e61fa5a34adcbc249ede0e3494c229f0750f6b85","ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","e7bb49fac2aa46a13011b5eb5e4a8648f70a28aea1853fab2444dd4fcb4d4ec7","464e45d1a56dae066d7e1a2f32e55b8de4bfb072610c3483a4091d73c9924908","da318e126ac39362c899829547cc8ee24fa3e8328b52cdd27e34173cf19c7941","24bd01a91f187b22456c7171c07dbf44f3ad57ebd50735aab5c13fa23d7114b4","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","4738eefeaaba4d4288a08c1c226a76086095a4d5bcc7826d2564e7c29da47671","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","dbec715e9e82df297e49e3ed0029f6151aa40517ebfd6fcdba277a8a2e1d3a1b","097f1f8ca02e8940cfdcca553279e281f726485fa6fb214b3c9f7084476f6bcc","8f75e211a2e83ff216eb66330790fb6412dcda2feb60c4f165c903cf375633ee","dbe69644ab6e699ad2ef740056c637c34f3348af61d3764ff555d623703525db","bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","c3e5b75e1af87b8e67e12e21332e708f7eccee6aac6261cfe98ca36652cdcb53",{"version":"b602bb320b708a4b9543d2f41d30ac68c61277642686d7e744f413305d583e6a","affectsGlobalScope":true},"4c9da7d99c94f1da3eca35c7ee44cf62569f3b69863ceed9afaaedb95a86337c","206fabd39297fecdcd46451a5695bbb4df96761f4818564f1ae4f3a935b8f683","9f5868b1ffbb19aabaf87e4f756900bb76379f9e66699a163f94de21dba16835","754907a05bb4c0d1777d1d98f8d66132b24f43415bbca46ae869158d711d750d","43c6306851a66a06e170fc898fb8a6b0a1cbfa8c32c4d7c72e6b203b7d4f99e3",{"version":"e9f0a43ce9419111406ea47fe0393e28bbc847099da92c90ed36a405a877f39d","affectsGlobalScope":true},"fe5b14aee53ee37f6fde7bc62b5e1136660977ec9cbe01ab0620d108821a72e4","a7db923226c71a1567a79e6561c600f4f8d2bb7cfc7592ac8d62d1a423ebeb55",{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true},"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc",{"version":"6e2d92523017b7f8b254c2127758e5871c3467fd9de7e7f189d9bfae0eed74a8","affectsGlobalScope":true},"b2d0630483bf337ef9dac326c3334a245aa4946e9f60f12baf7da5be44beafbb","ee65fe452abe1309389c5f50710f24114e08a302d40708101c4aa950a2a7d044","2dc77a2ce0f71c340a0258ecab0260da33275b7b0951b279459eb4e50ba2c571","b3338366fe1f2c5f978e2ec200f57d35c5bd2c4c90c2191f1e638cfa5621c1f6","67f129ed8b372622ff36b8b10e39d03e09e363a5ff7821105f92f085b8d1ccba","94e9befabaf0bc4bde4db2627e186d638e720dc38bbae85ad14c1558b03e1aa2","fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592",{"version":"921394bdf2d9f67c9e30d98c4b1c56a899ac06770e5ce3389f95b6b85a58e009","affectsGlobalScope":true},"e66f26a75bd5a23640087e17bfd965bf5e9f7d2983590bc5bf32c500db8cf9fd","17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","d341315220412b777feebc300e6a39244da42b23611668442f679208c395f679","5cf1e3dc83023bd97f6af435e1a546f3accd6801a8d616c636930c1db1fdcccf","0d950aa908dd8814536f41be36ec182410b5c771cb093a2830f6efdb518b8220","3d34f76107e372a6d0a3b4af15aee9e2af06ffdf567611c2a9aca3790a069bdd","91c9e0b1f740f498aa1dd27ca1e32800f61ad3c42518820253fb17dbaad0fc98","eccce84f0a83c0bd86d225c57a37be27e2f31d06ef442e397c0813376400bfb7","bfe509ace8b6e6bce9f85d5ab2be31044ee6c677932dd7e491a8eb2852ad4757","732d52d21605680f2e79e561b8033f3fe857813cf5c8ff77b4d99705b07c63ac","847e25124f973d7a9887312fcf320799cba76890b7209d2bed59d87e05e725f8","06a1bd08f568defeb13da11d2400d79e82d87cebbea014f238f19bb83670aa21","f51d8d87d3c9fb088b96c84bd6da9c290957b16f6a1a914a166d5800a4e9c6a9","9880d7aac7a1f60610354d8b1ad3ed3ec1c4c879f57c42e58e60098ecfb6981e","0a2a79f00f363fd68b76d3f78192e44e3c1ee633691325e3efcfc6f9c7a976a3","61dfbad6fffdc39760e3f74293b0c01891b50252666ebe1a6863470777c2723b","f3959b223dfbd0ca97229fa2031439201190253fde1c4f6d9db763a60420da69","c843d0eae9a1481f1702202cbeb7046d6e1a2f4d76ed97d042c54c73d78abfa1","06697fb60e372fbf0dcbbe2692bdb867c38081fa56772794a711f81520d46eab","c7ffa1e241da90c0588bc7e482afb4002081bf512ad1ee1562dfd51efdde0cf6","4f411fb3a58cd7750232726fbe47dd1ed2b8b9c525d4f4ab1d71b8eae79b4db4","b6172b582a34ff1ebe32d787d132cc7d031b5ca129bc44902ce217477b8dd3e9","1dcfc83d6dcc841e73e01bd10386924c0fb911774b780ee3c8983f1410a16463","f8615b9ba37b28a7c51feba0af11f3754949819727829fbc41bba638218abf50","8d5012b87f56060744979802aa8de75f76fadcac780df4aeececf0a332ff1cb9","db92a953c9126e6dae09e7542693b7dba83bbfb06121279359a77846ba835727","dd3c5686d72b5fb6145e9555e3f803f35a9c2d4524565bab07d9917785f64095","20783d45056ae38369d9a8a81918bc8f33febf0c707264d01c877e683e360353","dc0d1b83f54ecfa1e1d46dc1e91d6703d7183b186bd30057edc28912dc88d7bb","efcce62c06ed8db84eb873de3f10fb115b582d7f4e9f64126384896c02cf49de","dc52ecb513b99508e6d00e5b11716d00e14e17f4288ed6be297e41c0fbcd08f7","1359f8763dfcbdd7dc4f8279b96cfdc4004cd50b1757c45a9fd41b551321c5ea","e965c122e9ba814126e1f3db30cb7280068291c69f563907fdde4707ba726be9","e07e9c5b6e57d734750c282039bcf0b0e24e9348b2e61188316744fc4ff36e47",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true},"7233cac35711f43b7493061d2fe7636deb6d14f8cb58e4b3ff248be46f0b543d","5aca5a3bc07d2e16b6824a76c30378d6fb1b92e915d854315e1d1bd2d00974c9","7ac531d447b3a02a20edb470eb3475bb48c9660883d03415c09379d36183d0db","893cd2b5a7a59d55edc9584cffc0ac51e35ad0290c60d671b61be53d87a02702","c753d9f4b5de5146ff13ec6b62e8fadb08643b1eccdc26fa723263765fe93dfd","8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","4b0d794d065f1a45a8d6d2adda907ef81dba7df4fac3bce75ec307d1a22a349e","d12f5fb934377314a0e5dbf6cb65c1be5ab6178ca5fbfc8546c50d3eee458647","51d508d4ff9616032a769e6048f2ada3e54a729c251e5dcff834ee9e0c2b828a","5273a936870e6f0a324df8e1d9b80190265fd3c9e7a6c1c889817ae9c60fa909","c660f4adf75a5c4725a46f7f73ba9a19c24d5b67101d7e282398ed483f3590c1","df198c163afabf78a6f6284ab8e26c0a64cac78383085d05972c936a247fb355","6d2a46050aaf02cf513f501e7df478b031018461c2fe85c91233e2b54ae366d8","8e9c191443e616c30bd47669cc59e4946b5fc23ff03c42c4578a48396688d526","0d040d689a5b08f47143fae77e8447caead3fc54c18b0213d99679e7f304e660","d5dd35a3ab9b497d3932fb0b6f40d5c1c063ba1579ff53b9a6ed4199a3bcb0b9","89005628a158578cfb8bc873c4bb6dbfc08e3b2c0fdab46ee7e5d9703cb8528e","8868268b7cb5bfb508e3844fc129cbdde23e24fae35024fca6798653a3eed289","166c027b2bfc241c7540aaf3832fdee69018185a3f8a5c8e52baba6fdbcfbd20","7b1dbd9aa1f1f5ff572521d92db24abbe319f85292019f62e4dca2741a376a35","ea49295b6d79f2e18ce98dcaa47c6ef0454a8b88e1a175970213d40271c42b1e","6930fdbc3cfdab7d0afc49022405717674ea095c77d045219d213bbd82c3b570","60c34643c5d1be4050f79a4e589bfa7e46792440efad2a3c49cfda8a72135308","fc3596b10eb99c07fccec7b04b9404d36bea341b9f486173aff1e234aceaccff","b71e7f69e72d51d44ad171e6e93aedc2c33c339dab5fa2656e7b1ee5ba19b2ad","030b5aba86fdbc5d46ffb2c024d7764791848520332a03b662dd26962e1125ad","3755d34ddf0835f31833c825aaf3c996d22d96dfc6db6d04b55e8c29213bac0a","281eb8e4ddd65b6733cf1f175dd1af1bb2595bbcea7c12324f028079ba78fdf9","54d68fee094e2ec6d34c4b7d89ba849ff87a2030fb8e907b0c4ad252009d40cf","e0fdf687219271c3031ae25cd8d3e9fe7c16ce46453ce775292887f486c2aa16","f17592fc258a847bb7d38ab25799eabce4865f24fcb441cc69a6a6277a48e6a7","512d2b3f264aac071278060d3e4f019508b8a504283708a0fc503198f244c363","5f477e9897e29f47b860b52218d645178362d3ebd17c990df9f36b0c52d0e6ff","0df7497ada3a4f6459420803ecf7e555f1ad1e7bd43c1e17bdafbc34e19d7162","2923047a1c951231f48fe77a6c2fffba8198c20dd05d4ec1b90f9e45f129adea","c688c76a19a30efa6f73cc6c133caf2cf8f9568120ff6f1b314e1fad98528681","8314c95ca15641f2a2c25704752dc2d9fc10f533986b312dcbf1f8fe544f939d","74952846d3e9b6c9ddaa3003f962a5b83f55f58f3b55525a962087fafab7f6c7","5942fb99d686253869e7f4c804b2239938cc267eb4bd78fa767ab3ee9e76d0bf","abf87d0100ab99c9d55a4ea52f0351e5261388cf4a5ad5d79cf8a5d6e8ebd1f7","1e4d12496a28dfeafbe1e5debbfe5e146df5a39e581a0ee2344a435c941458dd","10757352393ef1239b2efb42b41aa940ff67d9a40409958e9b9d3a9c7a524a64","367bba45eb437cea29f41c3a382c292c6fe6cdb7b26a389ee5d3a5eea5d75040","16ae8a0bdbb8d72fc63437587e08d0eee84ec1c165a7ea12e7d7e6f6457b7a63","9e22a3941d4e9ff901b1e3efa2f18efb5cced7f1248c2af03a511d59dd1f37e2","1e0477cba50bdeed193409008aea9e008380d7ceb9c41e4bcac9281248875570","432fe3b8769c1e1090be43baff32bccfb436c1fce8d470a45fef5a8016dbaab1","ed0e3159c03180a7ae7fe891f12b386eb311a9440a3a97e546c4d57039e43162","dc2461473d24379c8b31d308d782d27b7cd6cefa7cad8e2c89b7de03d73c0b16","b4ec3dcc11e8a52b81878d7aa998218182c36e3222e6c55177172880434823e3","aaf784daa602b58d53fb06e89a9feb03fc2c1bbe46bb2cf01a1adc8773fd4a73","4ba733d1a5ff0a0779b714468b13c9089f0d877e6fbd0147fac7c3af54c89fe0","a39e9304639454356f4a1fe20741899de0c3163e1f040d0e0acfdc8532f779e3","3bf8a15acc2dbde99020f0ebe9d16ceba9e6220e41e034003fc8f835b47642af","eae4d78e9a2660a6af2a638ac809a81d2bba1b90ec36620b2035a65cf296646b","1e21eb1938604e43aea31c89888967c7c39774d26074057ac87582208b349adc","f677a74b2b038509ea5aef4030fadc0e090cc9fd4dca4c71147934e6697c23b0","78b1daa0a8aa1f54530c110600cdcadf70c1238c0d71fd7208c1bd5b31b77db1","6e767f67b713d0507a4c5c450cee1d3b27ce1b523d5e6ade7d225da613e0318a","3470118b64b6e9ea140a7be15b04f8e39d9b17869182a177fd12be31b524c383","f4cadee14617809fe2c126a40aae853ca83700eaac4711bcde7e8b87fa349d76","63162eaa0e0e77c318006455f7053f006a974ee71206a51efd669fd762b4349c","272d5770bd166ee663a66e473a96c6c2a028a587a1d35ed68b313755b27a643c","418728880845307b1f5ce97a2f2f20e3d9f116886dfbed928b047377c661fe55","18076eca74d509e15742ef6733a1c96689485664c1a3e771d0d705fbe560007b","aa090f388d526153627ee51507c40e659a6fb9d7c669b57db95314bf429076b0","6a6bea61fbd65654e92ee68eb084d26300f7eb194bac5dcb7c3721611ec6fd8d","f8fd4518f157df6d897a336595dac0833595b4e97bdd4cc380cddfc856d51642","b688ddf5ad2d24f3fa58efd84f9ac9e3e1455031d8881dd917d72432a951e9e8","8cc83bf53997f80f7ddf98c0b70d4c625c3cd5b93ae2efe2fc0084a26d997a7a","71eb65c9011c56ea56932a87d9d171cf225f29c3aa601cffdd5818ebd0e16bd7","164f1c5c8ad203e80b827350fe3ca1c59c8106c8613e20a3ec4ea9e63dd2e730","a228ab0a7976c724d6135bbc153016418e3b8560a44101999192c5204fd31dfd","7a921991afa2ab5da7c9d94d6ee81de34724f82520fb3fabbe6eeaa29a7b5661","4c136da3b1dce49c12eac152699c6b4bc64fa93d6c7224a43c816f7e51b00930","bfac6d6a4817bf56d574b1f32b174f655e05ce45c5ddf6d17c9b592660f10935","bc7d1326a9187df243a5af0eddbc3095dc3442ffcc153c23e3974553e11b7972","0e6b3c7f300f6e2587c62783ebf78c74e61e7e85d37591e1e1ecf82cc15adc01","139ab16e09553addf17cfb7122108eb39cd406b8009692c4d1d9e3dea96ef83d","69f3d18ee459096c5e1426df332673a939b56b8bafeeec0b31b3cab1a9e4dadd","192ad3de0ae2044e97d375c601ef54149382bcf59a9eec35066465a73c434c0a","a99712388b38c17ca788b4b93cee993cc487ba69e18d98dba66000031e90c378","c8ac2f17b13f98787daf66f81b0f215e296c7f2acf5b0b43463d685700059653","e1b5820a2298308c97ac20096c391a4a064c02819ea897a20ea3f08f15051035","9d948541e42e0af1cf6e33967c13bdb3193d6507c4ff2bfde6849fe4ee15366c","a37385e604ee8726100c207afa819823079a766c30f5c38a242a9368d8c28e45","ab8c6e4a2b49a17c71848a8c7d14aa7fae2a2620c734922d8d004d59baf59ffb","c53f1e0dcd4a2c1c3e86c83345fd078ff75425ffb78654306b0f58521dc30f50","21b08a722f729d8d95892465be0977a8563dcf630b38d87886517ce6f027389c","80639ea4472a40009209e18013d543954e3e2379c712b571101ac2e8c5da0fcb","1fc98030aad398bba258e0fd2d5d6e39ab085c5d22257fbcd8181e0c2621489f","c60124cf00efc8b113c643d222cc146d15d5ea184c04df3cce9ce8652e42a6fc","7bf91a5d5e38618029b7d1703db7c0219f9eda3024fd816360d2ae791e89d1b3","0f4e57b76239328d40d68e9c6271b4f17a19970bdbff18d90e08031b04efc19d","bd683b2b79122ede787c445f2a35505d9dc60cdd3c2ed08cc05d1140c6807241","361ec213e909dea3b00f0aa91e1f1ccafe04eaae327a45bf33fe3c3a9a28d13d","6a60665f3bf35c7be844746ab2f796bb4076118559a7c660cf95fe01163bc79f","6e322a837838dbaad00bd298c6f33f5dfc9a5fed6792b0ae1d00b2da68afc2ac","f54c06d4e8fbc4f666c8c0830ac3c1cd06e39bf682347dbd84bc0ae05d3a162f","bd307a41d5962bb877f46e5447db73aead39ca6e87ec7fb9c29368a78731cd32","0f638672b9749835cda995e8eea6ffd2c17c505eb5b51cd263686b1abb5af9ea","105d7842497ad972a7f358d57aa0f95f722d67ce8fb0efc7d93247be6e7b025d","beb69bf7a052aa881fc18d7f7ccd47918719c1ba9ea2c92304bca4266a95df6e","1f0a034bc92b2b6bf1579253aa20a4983b2170cebdad9ff1e13718c5b58aadbc","07d41369f44f66a60cdd99267d7fd3b4c195d8fb9576a7a326b439bf3cc7b11a","8eb1f35d3bd99cfb4a61c87f756ae9389709e3cfdc0c4a54589b2e37c814b5a5","8027a5c97cc51405a3382c6b59d9690fd4ad8166dbb43e7976e62efc4a49fdce","d6fc38421f16d0a68a6d782a94f567464c1c441fc14949441a140b87a29d7ddd","9e9e3b18823c2179e426b11a6945f6586450d9db21e9eea0eb60491d018fa62b","d7a12dd03519d05cf43d70990cff5caf033f9b283aac0706e11519ddebf4e945","4998cbff67e76f385d9955674a9f2ac385926e807ed371ed357ccb6f03a4d72e","248195b6ec3d8c14855fa7ba39147abdcf4f2f6bab9c80b70252a96ae6fb1cec","1c548e5976ee7f2a3c46b88c09db5d1e7d95d464eff7536cb26515eb62b68694","a1e35cae2fcc3e93644f0c69984e138e84b3732961a3b9e91225d612946b4d4d","848c83b9294d41fc9fd8eb360b5a28563cc24f3e8f045f169b5cf1a7201a551a","6bc8df13510289edc16bf48bff69384ae05288c9c5c0fd2c38e454dd222a9499","08f77f39ef225aadaa1351d0ae1c4ca7a1d1886b1425c7cb63ef910885582c69","b29f216a35d3fd0688b305d31f483781b27c64a40cf76816020a1dcda4816fe5","9fe3723a3f5f2daa1317099c833ddf6e9859c3298fdc0edb4e06b463f9805761","09f59f210312b40890556fb204cc7822a41b918bdb90ba2618a932ab4af715da","371ddc98c5d6b8e553cf188d0b4037e773f4e1c5838dc0d68d23a3a8e376f312","a4ef836229dea41c44c1263d9abcf8b5d671969db90b3c6bb791094dc39a9a53","78f98988f34eef18c7b8e6853a3f5a4cf6247ae21832467932fbcc09a1287cab","1bdf5b5d4a633c4f5f246f81935cbce1cf5e5d8d9803b51fce46e1bd77cd892e","0c743b9395951a19992751718944e5efe0ba9db0f5fc4d55f348ab28760be918","62141f6672ab5a102d856e071fe459b2d83c973e150b842e9c1921965546d00b","d3de1f092f689c00d81dc2fee835ea7589e898b5bbaec44ffe3185020169900f","3e64a146b4c55e0d1278492b0643d8eb16cc6b79174295715f7e401a7aa4af2e","1ea27fff2ec857fa8a4dace7d210563a6c1f6b137fef3ec9455b4075124f35f9","b6f1c1fe1e0d3cb2c803e3a0685f029de6bbbdc3fcbd6d6df297d01a21848cc1","49d91fb60620bc8b3be5c1907cfc9a4811af9059b9e431941ca3b9a27309a185","c7dd8530f4cf12cc2955e1d5ccc5d556934862f0b11649e1cfcc94a3d96df146","f359dfb36d9ff7a94275b957a1c44709260497699a91bdfe1a5d2fd027a57b29","477f83ae5ac7bbc5e9bbf9981eaf7e720bb5a4f81d71427a9599f77a98889b64","fefe2547c95f38f79fc4d3d104319ff3d04d717323b45d62d4a3c46773b30f47","c78a500c32fa34be839024265a785c8172a655e270bd726f596716400ccb6191","b7fc8c07ca728c94149ce0e5ee64c21100aca7be97cc53917eb5b8b18976bd59","ea80eb37e9e11c4c2749ee3129e0d1d9f82e5b85723649f513afe1b2c8f5e51a","88b73800dc18e1470090faaf16765668ae154f87788da73214713a05980f68e6","5afeb741b747e4ca22dbcfd57b569c68eb7012c628841ef194eda42ba5b408ab","3d2022e40c2049f7ed484bb084c1a82add9b9e3c4647c23cbf3cd82797b5a59d","5791278922d75f7f3aa13b64d3f8ec2821302c7d3b660c8bc6b98d4a6b7ceddd","76f3f959fcce95b9ada79dfac10b7c5df81ecd85bacaf4d15ce5478e8ac2dd31","5265463dd08020db16b1763ce461004ba99f7d90288ce9444b765cd5060a51bf","3d55311307c15709ca243752aa8a7975fabd92dcc05e6121b2d48ad3213d39f1","b5c5844591132b944b7e5ab87bd288637ecacb23d945637de4ddc9344f25a20d","5e739c6cdb908e7546e5da530ba079166632e69cddd942736660e570acb92479","8f7482100023e5397eb7c1d8fd2595c929727ff423ea1f0b904cebdd37051bc7","7610fe0373d65bcc33f21d57eeba77551e8ce06a8a6abf7576298c69425f81a6","0313fbd97cac12034f11dea9fe85423e240c36ad36d646b00c5d4bbe57f33d7b","ff3765ee3b28da17a4537c891a04883e9f48bb5634f131f5860a85c8ec6dfd75","05c84e8c5123994a210f56d11a4cb9e623f6ad1897c1728c22e4f42f7dd1bf33","dfdc40f6fb796f1bf2f6e2336d711542fd7f3babe1da9d0acb5567e529fb4ab6","ba60980f49610f5e93009be094d68bc20f63568b1aa0c1d08151466390c0c203","9118804631fdd772a2164f6d7f94f290950b317aa4b81a543a9bcb1c9a01aa0a","37bfbfbec5d900c379b7dc65bf3ad2a9a0312fad4c91778ae3c73590d2d37b6b","64ca3e8fbfbfcae6d0d1e584a89bd169d7dc49233868d2a1b91301436fa95c7d","747199468ebdc82eb604ad75091390d5a1312bfc6e4a2411aa2e69a01b9b6062","0ba73f979f6f0846573338b7391911f80115004c5bed0e2e01b5d83064fbc06f","9b8829ef6f4c70d21e9a9f4653b1b69bc122b482aeccb6e1f7344bbe226837b2","afd5b50a4d20db25e060396161acdf718fffa3b73a85fb3ec75f2607cfed03c6","752e7f35c0b26df44e99a773ca1f37195dacce8847394a28fb29fc2984d98bda","d3eb2f8d171b641149c42a27d8d9d046ddfcd7d80ecc13aabf745eb77aec83ea","cd5588e6cb3863212109cb8f531b5715b23818491a1f7cce7633fc25db67d855","8c14b1e1ad4ddf5e8145459bc11ffdc84a35bad032d0671d67f4e62f9fcb6848","9fa45eaaf2626085d031569a52f54714405cec7b6bacb041f28fe7adfd247a05","56e3c947d17551543a81da36538d51efe75cc56a8576f89bbbdba62934b0b3b1","349d0ef543aa9bfccd41b52a48cfd9a413e0b256b6cb146278eeb8a9cef006e9","5d729de8b0b70bb4a4f0de2c263f42a3fc9612234665cb5d4f147e82e4ff7419","8350938747a211bf7666131edf2bcf38b464c048aff5a3b64e119fb9b900280c","25987a832e6a9303585accbe47950a9880445f1da53144094f6fc1090335392f","cceaa2d33e02d167889ed2484bd540d08792a8dc695e2352f1ea32b061d9d8b9","55a3a1e1a6b1d91c3a233e3e1eaee28db13e3fc917941f3f5022f28469480cad","a70bf51744ec939a5c87a636c383e0118d3b9332b9863b2c1df158194e1680a6","e52ad7566b687e35a98b4a202e3ee380ecfd5babfec74f79519a52d70211260e","24551b8482b56cba01f5a76871010c9898f87ef22c066b654bc79d6851fb65d8","e1b7d8ebc348369c2636d0548fcb95772a41f13669a92484998636d5c6f6f84c","0c39a6721f4481d28125672874d12f869db7beeb63efa5ea207a894a06b01990","5a4b056c4c7b1af3d3310ef90287b814f28062f2eb1b7ba1fbba74024ff751d5","fbf180777acc17ed6f59f0fd1639745c64dedecb2ca7886214999c0535ff02da","473a574ee3ffd1ab73bf001acb92d443c50c7ce58854c08c78ae89522f3b2af1","28cf4b88597d75f21d50d3e89cc60914ef1100ca7647c0bca0d44d0e04a83fdc","b93c28cb909567706ed85fcead09cd9ec116a9951727e9560a908b8e92c31ebe","3e0528d53eb3f2386d770412b4dcdd508ea8db6d7a32fac07b27e857b200c6bc","7efce11f987fd2d555babdcbbf505520c31671ad4ac08b298bc237f62ddd6941","5d96064fd7419a9faf2ec2118c273a6245d4933ff18774b39237e3a130ba0ea0","94755c3ecfcf813ef35c06e17b0494cea726eff490be46ec7f10b343cd6d6c66","780d4988de0352edd1800224ae70dced2a527a8d6bff3a7ab13927f3d778740d","59bf56dbda4409f8e87676340c5bfb65cf674442e611a680f9f461c8898c46dd","7c9de3d7e945f169a38c135a9f3799746d5774958edc38e7cb800451ce551c6b","57f2d9377264cf90b169ba4bbbcee8135d1350d8523d60a41d5523cf8456f226","8d2a53c59c82a8fac953afd36ca75783f60dcc5dec4740f1a00e8986f1119634","9fbae82aa0cef1eb7c06998fafcaaf8b7b049c1fb95db6e9bed4ae0138617a17","a708f4132704cfb8b845d32c02cd098651a52a1d63881e31dd62c6cbb030f1ba","6b49104db548c557a2f8aca0f0880297ce3a28185cc7930ae109b795b8be50d9","1b905f84eb4131fdbbaa1df421065c1eabca4eb7c0836a52e3975b9f1a57ca3c","2946da37f4281a3ae5953029d73da48da996766b7bd4fffa79e075c3d417e42c","6fc46a5d53ec8adf91eab29757341dafa54f9501c82289215f36a5bd43c6931c","984f1339e461e3a66b54b3689ff8726fdc621eae56063b9a9cef72aab669b208","13152f53e825223b643376711dc4ddbf3fc02d0f2f1ded4e78ff3abe860f563f","81404cf1eb59c372d341a4e4e9ccadaf97cd3fe7e8ff0d46e428d4dc4470bd5e","7ff73f6c8e866cf4d94c06eda365b1e24185a070f66d8d14191ae8a53943d1d9","fa7641ba6b65ee5cc712bb8e79d55aefabc3d9f77595370fde1b344b56798293","fbae464f654de7497f07a70e88429222c0b6a5fcc785f54809b6774ecba8f88b","fe0e99fc2ff678d100b516eef3c5989c5cc49ecac82569630944f6b561e7599e","0312f4bdc9c7ac185ae0fefc98a77d86121aaecb95ad620adec260ebb813af73","d90f57351d3732b66e3245e3e38c3327396a25a9d638c81313307110d99b5cdc","d7065c2df449f17ae78a3a7382deac2e388ada6bc0428c5747a4a80d0718e283","355d745d283e4f89bd785542bdba50ae1ab31ca5fa9618f2e221fbe12b9933cc","384fddf003645c4e2212b1a9cf7709ac125dc572e0fec9c9378a2bf9ba6369d3","bbcd46158e4cc0eccc0043c93b22cdc522148ab501cb09c90e96820f8d87d9ee","6d72d622f589ff41ab26a4cb2adcd01fcb3d271c26b2985ec29c17bcafc82649","6c703676e52e268bd57f00eb52f4ea47a8490b103ede7db6259a83e73cfbbc1b","c6b0ce58e6fd87a883d690422cbd04b16346cf268acbffc434df6c3f88716c65","ef64d9a231218149fd0ca3a1ef5c27332ec1048288f7703e12d1ae69efb2d941","af6a3de59db11678db7db38b4ec09e563013bfc0a7f7a06b89c57069bdacb700","a8044bef7f524d3a03f0666eb260818025177c1cbc6ed6c17c0c1639b7892a04","c9034cec3d059fd9345ab9b5f9c35ce88e1293b6cd0e7449422d91faf5a2bd2a","46f7c04e8a6fc8476293af851ad39f5dd275aad4a8ada115dc7831fd2a86644b","aaff0d72aa207f1558cbfb1a4748c5a5a9a7e0257abadc338cab6a019eb3c0c8","a1325c800e29589d0931806b33b36eb23d44b735138734d0e7280d524e814a10","d78cadcff2b7eee1aecf1fda437d844617e64507e640f47ea729c80aef632fe8","6f887e3afb0de4b6a4e79fb8512910736c1cb43909dabded07521a98fb3ab493","1e23c65f00a3bbb5a94f4a344e7d16762fcc7a9abaf7be7600a8cd38f22531d8","b428ef19e21c3a1895fef811262cc7ae0bde0274e77fe0426663c27ce86a1946","6996398eb3a1f3ee5bc2540f38f716ab941c9ad70fbdfc5a7d7eea87ba6c3cab","85a60dc56301151a1290f2935618f1c10642db39c9385d85bb56580f0481bdb3","a57dd6772ffab02f233287ba6a8f769e35906316605e82ed4f023f409319f2c8","a26ac33854e8d27ef4253f517861b287eb5e7f7c3eb53b3f8a06e28b0e3cfa23","c0052b367c598946d934581c9156f5bf06846a543bd8f1a419fbbedf0c49db5d","2360668f67c85a1ea07864282b797189555b9b9928be94685773ed8381302588","59fc39062aec81b871c29e9f246333d14d0c60ce3d5e3a01b3eb6336f69b6473","ccc6589b9029f32ed53b59cbe7bc71ce795ce0006a93b7cb2427f573856c74e9","821d22def6acf0fb49cdb3e0912881f47c5039f8dd730db1113bef321b9bb4ff","6c5c5605ae801d8af7781b57643e379106763ba7c30d7535e42f65e5ed957b58","31ac52f37d77ba63441903136b65f863071d22fa41ce8ca3bd12fdaa8fbae4b2","408d7457ea4c677bac1a16b0266eba485959ebd5bb49cbc2653d3dbeb0ac38a4","cf11f4e19b500ba6f488bdb61a1810c23e15d7bdb994e821d405470158ada1cf","9736f4d069b690ae03aab866b7d899230edb963c3291db0290373bf6891ed2f8","9d32399dfb6664d547d295c129375260a51ae3c066dc11d2b0917bcddab9f55e","9276db2dda8f3679dcc0ac11f32603d90d41486025fe5d7c5bde82598e70b953","61f41da9aaa809e5142b1d849d4e70f3e09913a5cb32c629bf6e61ef27967ff7","a431e70dbd282c8a6d7794d88c92fd552f6cef7f22c81b3db0acb422d7e03cac","c2eb1bc18bcba42184bd385ae433db3657f9f0f2804c40a3df3b233e448f6899"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"experimentalDecorators":true,"module":1,"noFallthroughCasesInSwitch":false,"noImplicitAny":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":false,"strictNullChecks":false,"target":4},"fileIdsList":[[61,66,249,642,647,652],[61,66,889],[61,66],[61,66,107,113,120,165,170,174,189,193,200,238,240,244],[61,66,165,189,201,238,244],[52,61,66],[52,53,54,55,61,66],[61,66,120,173,189,191,207,238,244],[61,66,239],[61,66,244],[61,66,176],[61,66,190,244],[61,66,145,244],[61,66,120,145,244],[61,66,148,244],[61,66,145],[61,66,120,144,244],[61,66,174,244],[61,66,145,146,147,148,149,150,151,152,153,154,155,156,157,158,175,177,178,179],[61,66,118,120,163,189,190,192,201,238,240,244,249],[61,66,118,120,163,189,192,201,208,240,244],[61,66,164,190],[61,66,107,113,161,244],[61,66,116,161,195,244],[61,66,120,161,162,190,239,244],[61,66,201,244],[61,66,193,201,244],[61,66,120,190,201,244],[61,66,116,161,190,195,201,244],[61,66,107,113,120,244],[61,66,107,113,114,116,120,161,195,197,201,244,249],[61,66,114,115,116,117,161,162,163,194,195,196,198,199,202],[61,66,240,244],[61,66,120,171,244],[61,66,170,201,240,244],[61,66,120,170,201,240],[61,66,171,172,173],[61,66,182,191,194,208,244],[61,66,194,244,246],[61,66,246,247],[51,56,61,66,118,120,144,165,170,174,176,180,189,192,200,201,207,238,240,243,244,245,248],[61,66,204],[61,66,204,205],[61,66,203,204,205,206],[61,66,120,144,180,202,244],[61,66,184,244],[61,66,182,192,208,244],[61,66,174,201,244],[61,66,120,182,244],[61,66,184,187,244],[61,66,181,182,183,184,185,186,188],[46,61,66],[47,61,66],[46,47,48,49,50,61,66],[61,66,118,244],[51,61,66,119,121,144,176,190,200,201,208,244],[61,66,119,191],[61,66,197,241,242],[61,66,121,192,244],[61,66,113,126],[61,66,121,128,192],[61,66,132,192,244],[61,66,107,113,192,244],[61,66,113,121,192,244],[61,66,140,191,244],[61,66,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143],[61,66,120,144,165,174,189,192,200,201,238,240,243],[61,66,107,113,244],[61,66,159,189,192,200,238,244],[61,66,159,165,189,200,238,244],[61,66,159,166,168,190,200,201,244],[61,66,159,160,166,167,168,169],[61,66,182,190,208,244],[51,56,61,66,120,121,174,176,181,182,184,190,192,193,201,202,207,244],[61,66,165,208,244],[61,66,192,244],[61,66,182,192,244],[61,66,201],[61,66,106,113,120,163,192,230,244],[61,66,193,208,209,231,232,233,234,235,236,237],[61,66,249,706,726],[61,66,249,706,708,714,721,726,727],[61,66,249,725],[61,66,249,706,713,721,722],[61,66,249,706,714,721],[61,66,706,708,713,714,721,722,725,726,727,728],[61,66,708,716],[61,66,107,113,249,708],[61,66,249,708],[61,66,107,113,249,706,707,708,712,714,722,729],[61,66,249,706,707,708,722],[61,66,707,712,715,716,717,718,719,720],[61,66,249,710,726,727],[61,66,249,708,709,726],[61,66,249,708,710,711,726],[61,66,249,708,711,722],[61,66,249,706,708,710,711,726,727],[61,66,709,710,711,723,724],[61,66,249,706,707,725],[61,66,884],[61,66,249,729],[61,66,249,729,879],[61,66,249,729,878,880],[61,66,249,729,878,879,880,881],[61,66,879,880,881,882,883,884,885,886],[61,66,249],[61,66,637,638,639,640,641],[61,66,592,637],[61,66,249,592],[61,66,249,592,637],[61,66,249,592,636],[61,66,249,650],[61,66,651],[61,66,644,645],[61,66,643,646],[61,66,729],[61,66,249,729,730],[61,66,249,731],[61,66,249,729,732,733],[61,66,729,730,731,732,733,734,735],[61,66,498,500],[61,66,529],[61,66,449,529],[61,66,530,531],[61,66,251,501,532,534,535],[61,66,445,498],[61,66,533],[61,66,498,499],[61,66,499,500],[61,66,498],[61,66,478,485],[61,66,592],[61,66,502,503,504,505,506,507,508,509,510,511,512,513,514,515],[61,66,454,485],[61,66,478],[61,66,451,498,592],[61,66,520,521,522,523,524,525,526,527],[61,66,456],[61,66,498,592],[61,66,516,519,528],[61,66,517,518],[61,66,489],[61,66,456,457,458,459],[61,66,537],[61,66,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558],[61,66,561],[61,66,95,113,560],[61,66,498,566],[61,66,445,563],[61,66,566,567,568],[61,66,498,563],[61,66,564,565],[61,66,113],[61,66,250,460,498,529,536,559,562,569,583,587,589,591],[61,66,255],[61,66,255,445],[61,66,454,571],[61,66,448,573],[61,66,445,449],[61,66,255,498],[61,66,453,454],[61,66,465],[61,66,467,468,469,470,471],[61,66,460,473,477,478],[61,66,479,480],[61,66,252,253,254,255,256,446,447,448,449,450,451,452,453,454,455,465,466,472,477,478,481,482,483,485,493,494,495,496,497],[61,66,476],[61,66,461,462,463,464],[61,66,454,461,462],[61,66,454,460],[61,66,454,463],[61,66,454,489],[61,66,484,486,487,488,489,490,491,492],[61,66,252,454],[61,66,485],[61,66,252,454,484,488,490],[61,66,462],[61,66,486],[61,66,454,485,486,487],[61,66,475],[61,66,454,458,475,493],[61,66,473,474,476],[61,66,450,452,466,473,478,479,494,495,498],[61,66,256,450,452,455,494,495],[61,66,459],[61,66,445],[61,66,455],[61,66,570,576,577,578,579,580,581,582],[61,66,455,498,576],[61,66,455,575],[61,66,455,575,592],[61,66,448,454,455,571,572,573,574,575],[61,66,445,498,571,572],[61,66,585],[61,66,529,571],[61,66,584,586],[61,66,475,588],[61,66,484],[61,66,460,498],[61,66,590],[61,66,473,477,498,592],[61,66,593],[61,66,498,592,601,602],[61,66,597,600,601],[61,66,605,606],[61,66,592,594,608],[61,66,609],[61,66,601],[61,66,608,611],[61,66,250,594,603,604,607,610,612,615,620,623,624,625,627,633,635],[61,66,498,595],[61,66,454,482,592,595,596,597,600,601,603,636],[61,66,597,598,599,601,614,619],[61,66,254,454,482,592,600,601],[61,66,613],[61,66,592,598,600,617],[61,66,498,592,600],[61,66,592,596,597,599,616,618],[61,66,592,598,600,601],[61,66,454,592],[61,66,454,498,598,599,601],[61,66,600],[61,66,482],[61,66,461,465,498,621],[61,66,622],[61,66,498,598],[61,66,454,498,592,598,600,601,617],[61,66,466,473,477,592,594,598,603,624],[61,66,476,477,592,593,626],[61,66,629,631,632],[61,66,628],[61,66,630],[61,66,592,597,600,629],[61,66,254,454,482,498,592,598,600,603,615],[61,66,634],[61,66,592,659,660],[61,66,659,660],[61,66,659],[61,66,673],[61,66,592,659],[61,66,657,658,661,662,663,664,665,666,667,668,669,670,671,672,674,675,676,677,678,679],[61,66,659,683],[61,66,250,680,683,684,685,690,692],[61,66,659,681,682],[61,66,592,683],[61,66,686,687,688,689],[61,66,691],[61,66,693],[61,66,214,215],[61,66,215,216,217,218],[61,66,113,215,217],[61,66,214,216],[61,66,79,113],[61,66,79,113,210],[61,66,210,211,212,213],[61,66,210,212],[61,66,211],[61,66,95,113,219,220,221,224],[61,66,220,221,223],[61,66,78,113,219,220,221,222],[61,66,221],[61,66,219,220],[61,66,113,219],[61,66,757],[61,66,648],[61,66,889,890,891,892,893],[61,66,889,891],[61,66,81,113,750],[61,66,81,113],[61,66,896,899],[61,66,896,897,898],[61,66,899],[61,66,78,81,113,742,743,744],[61,66,743,745,749,751],[61,66,902],[61,66,903],[61,66,907,911],[61,63,66],[61,65,66],[61,66,71,98],[61,66,67,78,79,86,95,106],[61,66,67,68,78,86],[57,58,61,66],[61,66,69,107],[61,66,70,71,79,87],[61,66,71,95,103],[61,66,72,74,78,86],[61,66,73],[61,66,74,75],[61,66,78],[61,66,77,78],[61,65,66,78],[61,66,78,79,80,95,106],[61,66,78,79,80,95],[61,66,78,81,86,95,106],[61,66,78,79,81,82,86,95,103,106],[61,66,81,83,95,103,106],[61,66,78,84],[61,66,85,106,111],[61,66,74,78,86,95],[61,66,87],[61,66,88],[61,65,66,89],[61,66,90,105,111],[61,66,91],[61,66,92],[61,66,78,93],[61,66,93,94,107,109],[61,66,78,95,96,97],[61,66,95,97],[61,66,95,96],[61,66,98],[61,66,99],[61,66,78,101,102],[61,66,101,102],[61,66,71,86,95,103],[61,66,104],[66],[59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112],[61,66,86,105],[61,66,81,92,106],[61,66,71,107],[61,66,95,108],[61,66,109],[61,66,110],[61,66,71,78,80,89,95,106,109,111],[61,66,95,112],[61,66,918,956],[61,66,918,941,956],[61,66,917,956],[61,66,956],[61,66,918],[61,66,918,942,956],[61,66,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955],[61,66,942,956],[61,66,79,95,113],[61,66,81,113,746,748],[61,66,79,95,113,747],[61,66,966],[61,66,895,914,958,960,967],[61,66,82,86,95,103,113],[61,66,79,81,82,83,86,95,914,959,960,961,963,964,965],[61,66,81,95,966],[61,66,79,959,960],[61,66,106,959],[61,66,967],[61,66,969],[61,66,113,226,227,228],[61,66,226,227],[61,66,226],[61,66,113,225],[61,66,81,95,113],[61,66,229],[61,66,905,908],[61,66,905,908,909,910],[61,66,907],[61,66,78,95,103,703,704,705],[61,66,761,762],[61,66,906],[61,66,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,273,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,313,314,315,316,317,318,319,320,321,322,323,324,326,327,328,329,330,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,380,389,391,392,393,394,395,396,398,399,401,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444],[61,66,302],[61,66,260,261],[61,66,257,258,259,261],[61,66,258,261],[61,66,261,302],[61,66,257,261,379],[61,66,259,260,261],[61,66,257,261],[61,66,261],[61,66,260],[61,66,257,260,302],[61,66,258,260,261,418],[61,66,260,261,418],[61,66,260,426],[61,66,258,260,261],[61,66,270],[61,66,293],[61,66,314],[61,66,260,261,302],[61,66,261,309],[61,66,260,261,302,320],[61,66,260,261,320],[61,66,261,361],[61,66,257,261,380],[61,66,386,388],[61,66,257,261,379,386,387],[61,66,379,380,388],[61,66,386],[61,66,257,261,386,387,388],[61,66,402],[61,66,397],[61,66,400],[61,66,258,260,380,381,382,383],[61,66,302,380,381,382,383],[61,66,380,382],[61,66,260,381,382,384,385,389],[61,66,257,260],[61,66,261,404],[61,66,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377],[61,66,390],[61,66,698],[61,66,78,113,697,699,700],[61,66,701,702],[61,66,697],[61,66,649],[61,66,758,876],[61,66,79,113,876],[61,66,759,874,875,876,877],[61,66,875],[61,66,764,765,766,767,873],[61,66,764],[61,66,764,872],[61,66,872,874],[61,66,759,760,763,875],[61,66,768,769,770,771,772,773,774,775,776,777,778,779,781,782,783,785,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871],[61,66,819],[61,66,846],[61,66,847],[61,66,774,806],[61,66,773,786,798,807],[61,66,806],[61,66,780],[61,66,850],[61,66,776],[61,66,816],[61,66,773,780,798],[61,66,773],[61,66,780,827,865],[61,66,830],[61,66,835],[61,66,833],[61,66,837],[61,66,779],[61,66,841],[61,66,818],[61,66,768,776,778,779],[61,66,798],[61,66,768,780,821,841],[61,66,770],[61,66,769,770,772,779,780,821],[61,66,854],[61,66,852],[61,66,782,825],[61,66,768],[61,66,780,782,783,784,785,786],[61,66,782,783,784],[61,66,773,780],[61,66,785],[61,66,770,796],[61,66,780,785],[61,66,856],[61,66,774],[61,66,850,859,862],[61,66,774,776],[61,66,774,776,833],[61,66,777,780],[61,66,592,654],[61,66,249,592,636,642,654,655,741,753,754],[61,66,636,694,751,755],[61,66,887],[61,66,694],[61,66,249,694,695],[61,66,249,694,696],[61,66,592,694,695,696,737,738,739],[61,66,592,642,695,696,738,740],[61,66,249,592,642,656,695,696,736,737],[61,66,378,445,592,752],[61,66,972],[61,66,973,974],[61,66,973],[61,66,975],[61,66,983],[61,66,971,988],[61,66,983,1003],[61,66,983,1022],[61,66,1022],[61,66,1004,1023,1024,1025],[61,66,997,999,1003,1016],[61,66,997,998,999,1000,1001,1002],[61,66,996],[61,66,999,1005,1006],[61,66,1005,1007],[61,66,1006,1007],[61,66,997,1000,1003],[61,66,997,1016],[61,66,997,1000,1003,1005,1007,1017,1018,1019,1020,1021],[61,66,997,1003,1005,1009,1016],[61,66,997,1003,1016],[61,66,997,1003,1008,1009,1010,1011,1013,1014,1015],[61,66,1003,1011,1016],[61,66,1011,1012],[61,66,997,1009,1011,1013],[61,66,983,984,1027],[61,66,980,981,982],[61,66,1267],[61,66,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1049,1050,1051,1052,1053,1054,1055,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1170,1171,1172,1173,1174,1175,1176,1177,1178,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1257,1258,1259,1262,1263,1264,1265,1266],[61,66,1032,1085,1086,1107],[61,66,1032,1083,1084,1090],[61,66,1032,1044,1085,1086,1105,1106],[61,66,1085],[61,66,1032,1080,1081,1082],[61,66,1083],[61,66,1032,1083],[61,66,1086,1108,1109],[61,66,1110],[61,66,1086,1108],[61,66,1109,1110],[61,66,1113],[61,66,1086,1090,1091],[61,66,1049,1076,1086,1117],[61,66,1087],[61,66,1087,1113],[61,66,1032,1091,1092],[61,66,1032,1034,1038,1040,1041,1044,1064,1090,1091,1093],[61,66,1065,1093],[61,66,1065],[61,66,1063],[61,66,1032,1064],[61,66,1063,1091,1092,1093],[61,66,1034,1035,1036,1044,1048,1049,1062,1065,1076,1078,1085,1087,1090,1091,1092],[61,66,1036,1038,1077,1086,1087,1090],[61,66,1032,1047],[61,66,1047,1049,1071,1076,1116],[61,66,1038,1090],[61,66,1038,1127],[61,66,1141],[61,66,1038,1139],[61,66,1038,1140],[61,66,1038,1094,1141],[61,66,1128],[61,66,1090,1127],[61,66,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137],[61,66,1048,1086],[61,66,1150],[61,66,1152],[61,66,1038,1065,1090,1127,1141],[61,66,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169],[61,66,1038,1065],[61,66,1065,1090],[61,66,1065,1141],[61,66,1143,1155],[61,66,1065,1090,1127],[61,66,1086,1090,1095,1171,1190],[61,66,1094,1172],[61,66,1040,1094,1172],[61,66,1086,1095,1172],[61,66,1087,1172],[61,66,1086,1091,1095,1171,1184],[61,66,1095,1172],[61,66,1086,1091,1094,1095,1178,1179],[61,66,1043,1172],[61,66,1086,1091,1095,1176],[61,66,1084,1086,1091,1172],[61,66,1068,1086,1091,1095,1172],[61,66,1068,1095],[61,66,1095,1198],[61,66,1068,1086,1090,1095,1183],[61,66,1067,1115],[61,66,1068,1090,1094,1095],[61,66,1067,1086,1094],[61,66,1068,1197],[61,66,1038,1053,1066,1068,1087,1091],[61,66,1068,1095,1175],[61,66,1067,1113],[61,66,1068,1086,1090,1094,1095,1193],[61,66,1085,1201,1202],[61,66,1201,1202],[61,66,1065,1121,1201,1202],[61,66,1201,1202,1204],[61,66,1116,1201,1202],[61,66,1201,1202,1206],[61,66,1143,1201,1202],[61,66,1202],[61,66,1201],[61,66,1047,1048,1201,1202],[61,66,1047,1048,1065,1085,1086,1121,1201,1202],[61,66,1047,1201,1202],[61,66,1048,1094,1095],[61,66,1234],[61,66,1032,1043,1044,1046,1047,1076,1094,1095],[61,66,1048,1179,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235],[61,66,1032,1047,1048,1094,1095],[61,66,1032,1047,1048],[61,66,1047,1048,1090],[61,66,1032,1038,1047,1048,1094,1095],[61,66,1032,1038,1047,1048],[61,66,1038,1047,1094,1225],[61,66,1047,1048,1094,1095],[61,66,1222],[61,66,1032,1045,1048],[61,66,1038],[61,66,1039,1041,1043,1086,1090,1091,1093],[61,66,1093,1095],[61,66,1090],[61,66,1034,1090,1091],[61,66,1040,1041,1043,1086,1090,1091,1238],[61,66,1090,1091],[61,66,1034],[61,66,1034,1035,1090,1092],[61,66,1040,1041,1042,1090,1091,1092],[61,66,1035,1090,1091],[61,66,1040,1041,1043,1090,1091],[61,66,1040,1043,1090,1091],[61,66,1038,1040,1043,1090],[61,66,1092,1093],[61,66,1034,1035,1038,1064,1087,1088,1089,1091,1092,1093],[61,66,1034,1038,1091,1093],[61,66,1079],[61,66,1086],[61,66,1048,1065,1091,1093,1094,1190],[61,66,1078,1086,1087],[61,66,1048,1065,1078,1086],[61,66,1048,1065,1171],[61,66,1084,1091,1206],[61,66,1048,1065,1090,1091,1190,1244],[61,66,1038,1065,1078,1086,1236],[61,66,1076],[61,66,1047,1071,1076,1116],[61,66,1044,1047],[61,66,1071],[61,66,1032,1044,1047,1053,1070],[61,66,1032,1038,1040,1047,1048,1049,1050,1051,1053,1054,1055,1059,1060,1065,1066,1069,1071,1072,1073,1074,1075,1086,1087,1090,1094,1095],[61,66,1045],[61,66,1050,1064,1093],[61,66,1048,1050,1051,1059,1065,1086,1093,1256],[61,66,1050,1051,1060],[61,66,1048,1055,1087],[61,66,1050],[61,66,1060,1065,1086,1093,1256],[61,66,1059],[61,66,1050,1051],[61,66,1052,1058,1076],[61,66,1048,1049,1050,1051,1059,1076,1254,1260,1261],[61,66,1048,1049,1055,1059,1062,1065,1086,1087],[61,66,1032,1049,1050,1061,1068,1076,1087],[61,66,1032,1048,1050,1051,1053],[61,66,1050,1051,1054,1055,1056,1060],[61,66,1057,1059],[61,66,1062,1072],[61,66,1044,1062,1072,1087],[61,66,1094,1095],[61,66,1037,1094],[61,66,1037,1047,1048,1076,1086,1087,1094],[61,66,1032,1038,1044,1092],[61,66,1094],[61,66,67,111,113]],"referencedMap":[[653,1],[891,2],[889,3],[201,4],[176,5],[52,3],[54,6],[55,6],[53,6],[56,7],[239,8],[240,9],[152,10],[178,11],[156,10],[157,10],[147,12],[153,13],[158,10],[154,13],[155,10],[151,14],[150,13],[148,14],[149,15],[146,16],[145,17],[175,18],[177,11],[179,3],[180,19],[164,20],[190,21],[165,22],[162,23],[196,24],[163,25],[116,26],[194,27],[117,26],[114,10],[195,28],[202,29],[115,10],[161,30],[198,31],[200,32],[199,10],[120,33],[245,10],[172,34],[171,35],[173,36],[174,37],[118,3],[246,38],[247,39],[248,40],[249,41],[205,42],[204,10],[206,43],[203,3],[207,44],[181,45],[186,46],[183,47],[184,10],[182,48],[185,49],[188,50],[189,51],[47,52],[50,53],[48,53],[46,3],[49,53],[51,54],[187,3],[119,55],[191,56],[192,57],[242,10],[241,10],[197,10],[243,58],[128,59],[125,59],[127,60],[138,59],[124,59],[122,59],[139,59],[137,59],[129,61],[130,59],[136,59],[132,59],[131,59],[135,62],[133,59],[140,59],[142,59],[123,59],[134,59],[121,63],[126,64],[143,65],[141,59],[144,66],[244,67],[159,68],[160,69],[166,70],[167,10],[168,10],[169,71],[170,72],[236,73],[208,74],[209,75],[193,76],[235,10],[234,77],[232,78],[233,78],[231,79],[238,80],[237,12],[727,81],[722,82],[726,83],[728,3],[714,84],[713,85],[729,86],[717,87],[716,88],[720,89],[718,87],[715,90],[712,91],[719,87],[707,3],[721,92],[711,93],[710,94],[724,95],[723,96],[709,97],[725,98],[708,99],[885,100],[879,101],[884,101],[883,102],[881,103],[882,104],[886,100],[887,105],[880,106],[642,107],[639,108],[640,109],[638,110],[641,109],[637,111],[651,112],[652,113],[646,114],[643,3],[645,3],[647,115],[730,116],[731,117],[733,106],[735,118],[734,119],[732,101],[736,120],[251,3],[501,121],[530,122],[531,123],[532,124],[536,125],[533,126],[534,127],[499,3],[500,128],[535,129],[514,3],[502,3],[503,130],[504,131],[505,3],[506,132],[516,133],[507,3],[508,134],[509,3],[510,3],[511,130],[512,130],[513,130],[515,135],[523,136],[525,3],[522,3],[528,137],[526,3],[524,3],[520,138],[521,139],[527,3],[529,140],[517,3],[519,141],[518,142],[457,3],[460,143],[456,3],[458,3],[459,3],[553,144],[538,144],[545,144],[542,144],[555,144],[546,144],[552,144],[537,3],[556,144],[559,145],[550,144],[540,144],[558,144],[543,144],[541,144],[551,144],[547,144],[557,144],[544,144],[554,144],[539,144],[549,144],[548,144],[562,146],[561,147],[560,3],[567,148],[568,149],[569,150],[564,151],[566,152],[565,153],[592,154],[252,3],[253,3],[254,3],[256,155],[446,156],[447,155],[571,3],[473,3],[474,3],[572,157],[448,3],[573,3],[574,158],[255,3],[450,159],[451,3],[449,160],[452,159],[453,3],[455,161],[466,162],[467,3],[472,163],[468,3],[469,3],[470,3],[471,3],[479,164],[481,165],[480,3],[498,166],[482,3],[483,3],[626,167],[465,168],[463,169],[461,170],[462,171],[464,3],[490,172],[484,3],[493,173],[486,174],[491,175],[489,176],[492,177],[487,178],[488,179],[476,180],[494,181],[477,182],[496,183],[497,184],[485,3],[454,3],[478,185],[495,186],[570,187],[583,188],[577,189],[578,190],[581,191],[580,191],[579,190],[582,190],[576,192],[584,193],[586,194],[585,195],[587,196],[588,180],[589,197],[475,3],[590,198],[575,199],[591,200],[593,201],[594,202],[603,203],[604,3],[605,3],[606,204],[607,205],[609,206],[610,207],[611,208],[608,202],[612,209],[636,210],[596,211],[598,212],[620,213],[617,214],[614,215],[613,3],[618,216],[601,217],[619,218],[599,219],[595,220],[600,221],[597,222],[615,223],[622,224],[623,225],[621,226],[624,227],[625,228],[627,229],[633,230],[602,132],[629,231],[628,132],[631,232],[630,3],[632,233],[616,234],[635,235],[634,132],[657,3],[658,3],[661,236],[662,3],[663,3],[665,3],[664,3],[679,3],[666,3],[667,237],[668,3],[669,3],[670,238],[671,236],[672,3],[674,239],[675,236],[676,240],[677,238],[678,3],[680,241],[684,242],[693,243],[683,244],[659,3],[673,240],[681,3],[682,3],[685,245],[690,246],[686,132],[687,132],[688,132],[689,132],[660,3],[691,3],[692,247],[694,248],[216,249],[219,250],[218,251],[217,252],[215,253],[211,254],[214,255],[213,256],[212,257],[210,253],[225,258],[224,259],[223,260],[222,261],[221,262],[220,263],[758,264],[649,265],[648,3],[757,3],[894,266],[890,2],[892,267],[893,2],[751,268],[750,269],[895,3],[900,270],[899,271],[898,272],[896,3],[745,273],[752,274],[901,253],[746,3],[902,3],[903,275],[904,276],[912,277],[897,3],[913,3],[914,3],[747,3],[63,278],[64,278],[65,279],[66,280],[67,281],[68,282],[59,283],[57,3],[58,3],[69,284],[70,285],[71,286],[72,287],[73,288],[74,289],[75,289],[76,290],[77,291],[78,292],[79,293],[80,294],[62,3],[81,295],[82,296],[83,297],[84,298],[85,299],[86,300],[87,301],[88,302],[89,303],[90,304],[91,305],[92,306],[93,307],[94,308],[95,309],[97,310],[96,311],[98,312],[99,313],[100,3],[101,314],[102,315],[103,316],[104,317],[61,318],[60,3],[113,319],[105,320],[106,321],[107,322],[108,323],[109,324],[110,325],[111,326],[112,327],[915,3],[916,3],[743,3],[744,3],[941,328],[942,329],[918,330],[921,331],[939,328],[940,328],[930,328],[929,332],[927,328],[922,328],[935,328],[933,328],[937,328],[917,328],[934,328],[938,328],[923,328],[924,328],[936,328],[919,328],[925,328],[926,328],[928,328],[932,328],[943,333],[931,328],[920,328],[956,334],[955,3],[950,333],[952,335],[951,333],[944,333],[945,333],[947,333],[949,333],[953,335],[954,335],[946,335],[948,335],[742,336],[749,337],[748,338],[957,3],[967,339],[958,3],[961,340],[965,341],[966,342],[959,343],[963,344],[960,345],[968,346],[969,3],[970,347],[644,3],[563,3],[962,3],[229,348],[228,349],[227,350],[226,351],[964,352],[230,353],[905,3],[909,354],[911,355],[910,354],[908,356],[706,357],[704,3],[705,3],[763,358],[761,3],[762,3],[907,359],[906,3],[250,3],[445,360],[418,3],[396,361],[394,361],[309,362],[260,363],[259,364],[395,365],[380,366],[302,367],[258,368],[257,369],[444,364],[409,370],[408,370],[320,371],[416,362],[417,362],[419,372],[420,362],[421,369],[422,362],[393,362],[423,362],[424,373],[425,362],[426,370],[427,374],[428,362],[429,362],[430,362],[431,362],[432,370],[433,362],[434,362],[435,362],[436,362],[437,375],[438,362],[439,362],[440,362],[441,362],[442,362],[262,369],[263,369],[264,369],[265,369],[266,369],[267,369],[268,369],[269,362],[271,376],[272,369],[270,369],[273,369],[274,369],[275,369],[276,369],[277,369],[278,369],[279,362],[280,369],[281,369],[282,369],[283,369],[284,369],[285,362],[286,369],[287,369],[288,369],[289,369],[290,369],[291,369],[292,362],[294,377],[293,369],[295,369],[296,369],[297,369],[298,369],[299,375],[300,362],[301,362],[315,378],[303,379],[304,369],[305,369],[306,362],[307,369],[308,369],[310,380],[311,369],[312,369],[313,369],[314,369],[316,369],[317,369],[318,369],[319,369],[321,381],[322,369],[323,369],[324,369],[325,362],[326,369],[327,382],[328,382],[329,382],[330,362],[331,369],[332,369],[333,369],[338,369],[334,369],[335,362],[336,369],[337,362],[339,369],[340,369],[341,369],[342,369],[343,369],[344,369],[345,362],[346,369],[347,369],[348,369],[349,369],[350,369],[351,369],[352,369],[353,369],[354,369],[355,369],[356,369],[357,369],[358,369],[359,369],[360,369],[361,369],[362,383],[363,369],[364,369],[365,369],[366,369],[367,369],[368,369],[369,362],[370,362],[371,362],[372,362],[373,362],[374,369],[375,369],[376,369],[377,369],[443,362],[379,384],[402,385],[397,385],[388,386],[386,387],[400,388],[389,389],[403,390],[398,391],[399,388],[401,392],[387,3],[392,3],[384,393],[385,394],[382,3],[383,395],[381,369],[390,396],[261,397],[410,3],[411,3],[412,3],[413,3],[414,3],[415,3],[404,3],[407,370],[406,3],[405,398],[378,399],[391,400],[699,401],[701,402],[697,3],[700,401],[702,3],[703,403],[698,404],[650,405],[8,3],[9,3],[13,3],[12,3],[2,3],[14,3],[15,3],[16,3],[17,3],[18,3],[19,3],[20,3],[21,3],[3,3],[4,3],[45,3],[25,3],[22,3],[23,3],[24,3],[26,3],[27,3],[28,3],[5,3],[29,3],[30,3],[31,3],[32,3],[6,3],[36,3],[33,3],[34,3],[35,3],[37,3],[7,3],[38,3],[43,3],[44,3],[39,3],[40,3],[41,3],[42,3],[1,3],[11,3],[10,3],[759,406],[877,407],[878,408],[764,409],[874,410],[765,411],[766,411],[767,411],[873,412],[875,413],[876,414],[760,3],[872,415],[805,3],[820,416],[770,3],[847,417],[849,418],[848,418],[807,419],[806,3],[809,420],[808,421],[786,3],[850,422],[854,423],[852,423],[772,3],[784,424],[817,425],[816,3],[828,426],[774,427],[812,3],[867,428],[869,3],[832,429],[836,430],[834,431],[838,432],[843,433],[844,434],[845,435],[862,427],[780,436],[799,437],[779,3],[773,3],[842,438],[841,3],[818,422],[815,3],[864,3],[823,439],[822,440],[851,423],[855,441],[853,442],[868,3],[826,443],[825,3],[796,444],[787,445],[788,3],[785,446],[813,447],[814,447],[821,3],[771,3],[782,3],[798,3],[830,3],[831,448],[870,449],[792,422],[794,450],[856,418],[858,451],[857,451],[783,3],[768,3],[797,3],[795,422],[835,427],[829,3],[866,3],[791,3],[789,452],[790,3],[793,422],[833,3],[824,3],[863,453],[803,3],[800,454],[801,454],[802,454],[819,435],[776,3],[859,423],[861,441],[860,442],[846,422],[865,3],[839,455],[827,3],[811,3],[775,3],[778,422],[871,3],[840,3],[769,3],[810,3],[804,3],[781,456],[837,427],[777,454],[655,457],[755,458],[654,132],[754,132],[756,459],[888,460],[656,3],[737,3],[739,461],[696,462],[695,463],[740,464],[741,465],[738,466],[753,467],[971,3],[973,468],[975,469],[974,470],[972,3],[976,471],[977,3],[978,3],[979,3],[984,472],[985,3],[986,3],[987,3],[989,473],[990,3],[991,3],[992,3],[982,3],[993,472],[994,472],[995,472],[1004,474],[1023,475],[1024,474],[1025,476],[1026,477],[1017,478],[999,3],[1003,479],[996,3],[997,480],[1007,481],[1006,482],[1005,483],[1001,3],[998,3],[1020,3],[1019,484],[1018,3],[1021,485],[1022,486],[1002,3],[1000,3],[1010,487],[1008,488],[1011,3],[1016,489],[1012,490],[1009,3],[1013,491],[1014,492],[1015,488],[1028,493],[980,3],[983,494],[1029,3],[1030,3],[1031,3],[1268,495],[1033,3],[1267,496],[1106,497],[1085,498],[1107,499],[1105,3],[1104,500],[1083,501],[1103,3],[1102,3],[1101,502],[1100,503],[1099,503],[1098,503],[1097,503],[1096,503],[1110,504],[1112,505],[1108,3],[1109,506],[1111,507],[1119,508],[1087,509],[1118,510],[1115,511],[1113,511],[1114,512],[1032,3],[1093,513],[1065,514],[1125,3],[1044,3],[1124,3],[1123,515],[1121,516],[1122,517],[1063,518],[1064,519],[1036,3],[1086,520],[1078,521],[1120,3],[1144,3],[1145,522],[1147,523],[1146,3],[1127,524],[1139,525],[1143,526],[1140,527],[1141,528],[1142,529],[1129,530],[1130,531],[1131,525],[1132,531],[1138,532],[1128,525],[1133,525],[1134,531],[1135,525],[1136,531],[1137,525],[1126,533],[1148,516],[1149,516],[1151,534],[1150,516],[1153,535],[1154,516],[1155,536],[1170,537],[1156,535],[1157,538],[1158,535],[1159,539],[1160,516],[1152,516],[1161,516],[1162,540],[1163,516],[1164,535],[1165,541],[1166,516],[1167,516],[1168,542],[1169,516],[1191,543],[1192,544],[1188,545],[1187,546],[1186,547],[1185,548],[1181,549],[1180,550],[1189,551],[1177,552],[1182,549],[1174,553],[1173,554],[1196,555],[1199,556],[1184,557],[1183,558],[1178,559],[1200,556],[1068,560],[1198,561],[1067,562],[1176,563],[1175,564],[1195,555],[1194,565],[1193,564],[1203,566],[1219,567],[1212,568],[1218,3],[1205,569],[1208,570],[1207,571],[1216,567],[1215,572],[1214,567],[1213,567],[1201,573],[1217,3],[1202,574],[1211,575],[1210,576],[1209,577],[1234,578],[1235,579],[1048,580],[1236,581],[1179,582],[1231,583],[1232,584],[1230,582],[1233,585],[1229,586],[1227,585],[1226,587],[1225,585],[1228,585],[1224,588],[1223,589],[1222,590],[1220,578],[1221,588],[1240,591],[1040,592],[1094,593],[1089,594],[1035,595],[1239,596],[1079,3],[1042,597],[1241,598],[1092,597],[1091,599],[1043,600],[1034,601],[1077,602],[1041,603],[1088,594],[1197,594],[1039,604],[1038,605],[1090,606],[1053,607],[1082,608],[1080,608],[1081,608],[1237,608],[1084,609],[1062,609],[1243,610],[1242,611],[1171,612],[1246,613],[1172,613],[1190,612],[1247,612],[1244,614],[1245,615],[1238,616],[1250,617],[1117,618],[1249,619],[1248,620],[1071,621],[1076,622],[1252,3],[1046,623],[1045,3],[1251,3],[1256,624],[1261,625],[1253,626],[1050,3],[1254,627],[1260,617],[1255,495],[1051,628],[1257,629],[1258,3],[1060,630],[1259,631],[1061,3],[1059,632],[1262,633],[1055,3],[1066,634],[1052,3],[1069,635],[1054,636],[1057,637],[1058,638],[1056,3],[1072,3],[1263,639],[1073,640],[1037,641],[1264,642],[1049,643],[1266,522],[1204,522],[1116,522],[1206,522],[1075,522],[1074,522],[1070,522],[1047,644],[1265,522],[1095,645],[1269,3],[1270,646],[1271,3],[988,3],[981,3],[1027,3]],"exportedModulesMap":[[653,1],[891,2],[889,3],[201,4],[176,5],[52,3],[54,6],[55,6],[53,6],[56,7],[239,8],[240,9],[152,10],[178,11],[156,10],[157,10],[147,12],[153,13],[158,10],[154,13],[155,10],[151,14],[150,13],[148,14],[149,15],[146,16],[145,17],[175,18],[177,11],[179,3],[180,19],[164,20],[190,21],[165,22],[162,23],[196,24],[163,25],[116,26],[194,27],[117,26],[114,10],[195,28],[202,29],[115,10],[161,30],[198,31],[200,32],[199,10],[120,33],[245,10],[172,34],[171,35],[173,36],[174,37],[118,3],[246,38],[247,39],[248,40],[249,41],[205,42],[204,10],[206,43],[203,3],[207,44],[181,45],[186,46],[183,47],[184,10],[182,48],[185,49],[188,50],[189,51],[47,52],[50,53],[48,53],[46,3],[49,53],[51,54],[187,3],[119,55],[191,56],[192,57],[242,10],[241,10],[197,10],[243,58],[128,59],[125,59],[127,60],[138,59],[124,59],[122,59],[139,59],[137,59],[129,61],[130,59],[136,59],[132,59],[131,59],[135,62],[133,59],[140,59],[142,59],[123,59],[134,59],[121,63],[126,64],[143,65],[141,59],[144,66],[244,67],[159,68],[160,69],[166,70],[167,10],[168,10],[169,71],[170,72],[236,73],[208,74],[209,75],[193,76],[235,10],[234,77],[232,78],[233,78],[231,79],[238,80],[237,12],[727,81],[722,82],[726,83],[728,3],[714,84],[713,85],[729,86],[717,87],[716,88],[720,89],[718,87],[715,90],[712,91],[719,87],[707,3],[721,92],[711,93],[710,94],[724,95],[723,96],[709,97],[725,98],[708,99],[885,100],[879,101],[884,101],[883,102],[881,103],[882,104],[886,100],[887,105],[880,106],[642,107],[639,108],[640,109],[638,110],[641,109],[637,111],[651,112],[652,113],[646,114],[643,3],[645,3],[647,115],[730,116],[731,117],[733,106],[735,118],[734,119],[732,101],[736,120],[251,3],[501,121],[530,122],[531,123],[532,124],[536,125],[533,126],[534,127],[499,3],[500,128],[535,129],[514,3],[502,3],[503,130],[504,131],[505,3],[506,132],[516,133],[507,3],[508,134],[509,3],[510,3],[511,130],[512,130],[513,130],[515,135],[523,136],[525,3],[522,3],[528,137],[526,3],[524,3],[520,138],[521,139],[527,3],[529,140],[517,3],[519,141],[518,142],[457,3],[460,143],[456,3],[458,3],[459,3],[553,144],[538,144],[545,144],[542,144],[555,144],[546,144],[552,144],[537,3],[556,144],[559,145],[550,144],[540,144],[558,144],[543,144],[541,144],[551,144],[547,144],[557,144],[544,144],[554,144],[539,144],[549,144],[548,144],[562,146],[561,147],[560,3],[567,148],[568,149],[569,150],[564,151],[566,152],[565,153],[592,154],[252,3],[253,3],[254,3],[256,155],[446,156],[447,155],[571,3],[473,3],[474,3],[572,157],[448,3],[573,3],[574,158],[255,3],[450,159],[451,3],[449,160],[452,159],[453,3],[455,161],[466,162],[467,3],[472,163],[468,3],[469,3],[470,3],[471,3],[479,164],[481,165],[480,3],[498,166],[482,3],[483,3],[626,167],[465,168],[463,169],[461,170],[462,171],[464,3],[490,172],[484,3],[493,173],[486,174],[491,175],[489,176],[492,177],[487,178],[488,179],[476,180],[494,181],[477,182],[496,183],[497,184],[485,3],[454,3],[478,185],[495,186],[570,187],[583,188],[577,189],[578,190],[581,191],[580,191],[579,190],[582,190],[576,192],[584,193],[586,194],[585,195],[587,196],[588,180],[589,197],[475,3],[590,198],[575,199],[591,200],[593,201],[594,202],[603,203],[604,3],[605,3],[606,204],[607,205],[609,206],[610,207],[611,208],[608,202],[612,209],[636,210],[596,211],[598,212],[620,213],[617,214],[614,215],[613,3],[618,216],[601,217],[619,218],[599,219],[595,220],[600,221],[597,222],[615,223],[622,224],[623,225],[621,226],[624,227],[625,228],[627,229],[633,230],[602,132],[629,231],[628,132],[631,232],[630,3],[632,233],[616,234],[635,235],[634,132],[657,3],[658,3],[661,236],[662,3],[663,3],[665,3],[664,3],[679,3],[666,3],[667,237],[668,3],[669,3],[670,238],[671,236],[672,3],[674,239],[675,236],[676,240],[677,238],[678,3],[680,241],[684,242],[693,243],[683,244],[659,3],[673,240],[681,3],[682,3],[685,245],[690,246],[686,132],[687,132],[688,132],[689,132],[660,3],[691,3],[692,247],[694,248],[216,249],[219,250],[218,251],[217,252],[215,253],[211,254],[214,255],[213,256],[212,257],[210,253],[225,258],[224,259],[223,260],[222,261],[221,262],[220,263],[758,264],[649,265],[648,3],[757,3],[894,266],[890,2],[892,267],[893,2],[751,268],[750,269],[895,3],[900,270],[899,271],[898,272],[896,3],[745,273],[752,274],[901,253],[746,3],[902,3],[903,275],[904,276],[912,277],[897,3],[913,3],[914,3],[747,3],[63,278],[64,278],[65,279],[66,280],[67,281],[68,282],[59,283],[57,3],[58,3],[69,284],[70,285],[71,286],[72,287],[73,288],[74,289],[75,289],[76,290],[77,291],[78,292],[79,293],[80,294],[62,3],[81,295],[82,296],[83,297],[84,298],[85,299],[86,300],[87,301],[88,302],[89,303],[90,304],[91,305],[92,306],[93,307],[94,308],[95,309],[97,310],[96,311],[98,312],[99,313],[100,3],[101,314],[102,315],[103,316],[104,317],[61,318],[60,3],[113,319],[105,320],[106,321],[107,322],[108,323],[109,324],[110,325],[111,326],[112,327],[915,3],[916,3],[743,3],[744,3],[941,328],[942,329],[918,330],[921,331],[939,328],[940,328],[930,328],[929,332],[927,328],[922,328],[935,328],[933,328],[937,328],[917,328],[934,328],[938,328],[923,328],[924,328],[936,328],[919,328],[925,328],[926,328],[928,328],[932,328],[943,333],[931,328],[920,328],[956,334],[955,3],[950,333],[952,335],[951,333],[944,333],[945,333],[947,333],[949,333],[953,335],[954,335],[946,335],[948,335],[742,336],[749,337],[748,338],[957,3],[967,339],[958,3],[961,340],[965,341],[966,342],[959,343],[963,344],[960,345],[968,346],[969,3],[970,347],[644,3],[563,3],[962,3],[229,348],[228,349],[227,350],[226,351],[964,352],[230,353],[905,3],[909,354],[911,355],[910,354],[908,356],[706,357],[704,3],[705,3],[763,358],[761,3],[762,3],[907,359],[906,3],[250,3],[445,360],[418,3],[396,361],[394,361],[309,362],[260,363],[259,364],[395,365],[380,366],[302,367],[258,368],[257,369],[444,364],[409,370],[408,370],[320,371],[416,362],[417,362],[419,372],[420,362],[421,369],[422,362],[393,362],[423,362],[424,373],[425,362],[426,370],[427,374],[428,362],[429,362],[430,362],[431,362],[432,370],[433,362],[434,362],[435,362],[436,362],[437,375],[438,362],[439,362],[440,362],[441,362],[442,362],[262,369],[263,369],[264,369],[265,369],[266,369],[267,369],[268,369],[269,362],[271,376],[272,369],[270,369],[273,369],[274,369],[275,369],[276,369],[277,369],[278,369],[279,362],[280,369],[281,369],[282,369],[283,369],[284,369],[285,362],[286,369],[287,369],[288,369],[289,369],[290,369],[291,369],[292,362],[294,377],[293,369],[295,369],[296,369],[297,369],[298,369],[299,375],[300,362],[301,362],[315,378],[303,379],[304,369],[305,369],[306,362],[307,369],[308,369],[310,380],[311,369],[312,369],[313,369],[314,369],[316,369],[317,369],[318,369],[319,369],[321,381],[322,369],[323,369],[324,369],[325,362],[326,369],[327,382],[328,382],[329,382],[330,362],[331,369],[332,369],[333,369],[338,369],[334,369],[335,362],[336,369],[337,362],[339,369],[340,369],[341,369],[342,369],[343,369],[344,369],[345,362],[346,369],[347,369],[348,369],[349,369],[350,369],[351,369],[352,369],[353,369],[354,369],[355,369],[356,369],[357,369],[358,369],[359,369],[360,369],[361,369],[362,383],[363,369],[364,369],[365,369],[366,369],[367,369],[368,369],[369,362],[370,362],[371,362],[372,362],[373,362],[374,369],[375,369],[376,369],[377,369],[443,362],[379,384],[402,385],[397,385],[388,386],[386,387],[400,388],[389,389],[403,390],[398,391],[399,388],[401,392],[387,3],[392,3],[384,393],[385,394],[382,3],[383,395],[381,369],[390,396],[261,397],[410,3],[411,3],[412,3],[413,3],[414,3],[415,3],[404,3],[407,370],[406,3],[405,398],[378,399],[391,400],[699,401],[701,402],[697,3],[700,401],[702,3],[703,403],[698,404],[650,405],[8,3],[9,3],[13,3],[12,3],[2,3],[14,3],[15,3],[16,3],[17,3],[18,3],[19,3],[20,3],[21,3],[3,3],[4,3],[45,3],[25,3],[22,3],[23,3],[24,3],[26,3],[27,3],[28,3],[5,3],[29,3],[30,3],[31,3],[32,3],[6,3],[36,3],[33,3],[34,3],[35,3],[37,3],[7,3],[38,3],[43,3],[44,3],[39,3],[40,3],[41,3],[42,3],[1,3],[11,3],[10,3],[759,406],[877,407],[878,408],[764,409],[874,410],[765,411],[766,411],[767,411],[873,412],[875,413],[876,414],[760,3],[872,415],[805,3],[820,416],[770,3],[847,417],[849,418],[848,418],[807,419],[806,3],[809,420],[808,421],[786,3],[850,422],[854,423],[852,423],[772,3],[784,424],[817,425],[816,3],[828,426],[774,427],[812,3],[867,428],[869,3],[832,429],[836,430],[834,431],[838,432],[843,433],[844,434],[845,435],[862,427],[780,436],[799,437],[779,3],[773,3],[842,438],[841,3],[818,422],[815,3],[864,3],[823,439],[822,440],[851,423],[855,441],[853,442],[868,3],[826,443],[825,3],[796,444],[787,445],[788,3],[785,446],[813,447],[814,447],[821,3],[771,3],[782,3],[798,3],[830,3],[831,448],[870,449],[792,422],[794,450],[856,418],[858,451],[857,451],[783,3],[768,3],[797,3],[795,422],[835,427],[829,3],[866,3],[791,3],[789,452],[790,3],[793,422],[833,3],[824,3],[863,453],[803,3],[800,454],[801,454],[802,454],[819,435],[776,3],[859,423],[861,441],[860,442],[846,422],[865,3],[839,455],[827,3],[811,3],[775,3],[778,422],[871,3],[840,3],[769,3],[810,3],[804,3],[781,456],[837,427],[777,454],[655,457],[755,458],[654,132],[754,132],[756,459],[888,460],[656,3],[737,3],[739,461],[696,462],[695,463],[740,464],[741,465],[738,466],[753,467],[971,3],[973,468],[975,469],[974,470],[972,3],[976,471],[977,3],[978,3],[979,3],[984,472],[985,3],[986,3],[987,3],[989,473],[990,3],[991,3],[992,3],[982,3],[993,472],[994,472],[995,472],[1004,474],[1023,475],[1024,474],[1025,476],[1026,477],[1017,478],[999,3],[1003,479],[996,3],[997,480],[1007,481],[1006,482],[1005,483],[1001,3],[998,3],[1020,3],[1019,484],[1018,3],[1021,485],[1022,486],[1002,3],[1000,3],[1010,487],[1008,488],[1011,3],[1016,489],[1012,490],[1009,3],[1013,491],[1014,492],[1015,488],[1028,493],[980,3],[983,494],[1029,3],[1030,3],[1031,3],[1268,495],[1033,3],[1267,496],[1106,497],[1085,498],[1107,499],[1105,3],[1104,500],[1083,501],[1103,3],[1102,3],[1101,502],[1100,503],[1099,503],[1098,503],[1097,503],[1096,503],[1110,504],[1112,505],[1108,3],[1109,506],[1111,507],[1119,508],[1087,509],[1118,510],[1115,511],[1113,511],[1114,512],[1032,3],[1093,513],[1065,514],[1125,3],[1044,3],[1124,3],[1123,515],[1121,516],[1122,517],[1063,518],[1064,519],[1036,3],[1086,520],[1078,521],[1120,3],[1144,3],[1145,522],[1147,523],[1146,3],[1127,524],[1139,525],[1143,526],[1140,527],[1141,528],[1142,529],[1129,530],[1130,531],[1131,525],[1132,531],[1138,532],[1128,525],[1133,525],[1134,531],[1135,525],[1136,531],[1137,525],[1126,533],[1148,516],[1149,516],[1151,534],[1150,516],[1153,535],[1154,516],[1155,536],[1170,537],[1156,535],[1157,538],[1158,535],[1159,539],[1160,516],[1152,516],[1161,516],[1162,540],[1163,516],[1164,535],[1165,541],[1166,516],[1167,516],[1168,542],[1169,516],[1191,543],[1192,544],[1188,545],[1187,546],[1186,547],[1185,548],[1181,549],[1180,550],[1189,551],[1177,552],[1182,549],[1174,553],[1173,554],[1196,555],[1199,556],[1184,557],[1183,558],[1178,559],[1200,556],[1068,560],[1198,561],[1067,562],[1176,563],[1175,564],[1195,555],[1194,565],[1193,564],[1203,566],[1219,567],[1212,568],[1218,3],[1205,569],[1208,570],[1207,571],[1216,567],[1215,572],[1214,567],[1213,567],[1201,573],[1217,3],[1202,574],[1211,575],[1210,576],[1209,577],[1234,578],[1235,579],[1048,580],[1236,581],[1179,582],[1231,583],[1232,584],[1230,582],[1233,585],[1229,586],[1227,585],[1226,587],[1225,585],[1228,585],[1224,588],[1223,589],[1222,590],[1220,578],[1221,588],[1240,591],[1040,592],[1094,593],[1089,594],[1035,595],[1239,596],[1079,3],[1042,597],[1241,598],[1092,597],[1091,599],[1043,600],[1034,601],[1077,602],[1041,603],[1088,594],[1197,594],[1039,604],[1038,605],[1090,606],[1053,607],[1082,608],[1080,608],[1081,608],[1237,608],[1084,609],[1062,609],[1243,610],[1242,611],[1171,612],[1246,613],[1172,613],[1190,612],[1247,612],[1244,614],[1245,615],[1238,616],[1250,617],[1117,618],[1249,619],[1248,620],[1071,621],[1076,622],[1252,3],[1046,623],[1045,3],[1251,3],[1256,624],[1261,625],[1253,626],[1050,3],[1254,627],[1260,617],[1255,495],[1051,628],[1257,629],[1258,3],[1060,630],[1259,631],[1061,3],[1059,632],[1262,633],[1055,3],[1066,634],[1052,3],[1069,635],[1054,636],[1057,637],[1058,638],[1056,3],[1072,3],[1263,639],[1073,640],[1037,641],[1264,642],[1049,643],[1266,522],[1204,522],[1116,522],[1206,522],[1075,522],[1074,522],[1070,522],[1047,644],[1265,522],[1095,645],[1269,3],[1270,646],[1271,3],[988,3],[981,3],[1027,3]]},"version":"4.9.5"} \ No newline at end of file +{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2017.full.d.ts","../node_modules/@mikro-orm/core/naming-strategy/NamingStrategy.d.ts","../node_modules/@mikro-orm/core/naming-strategy/AbstractNamingStrategy.d.ts","../node_modules/@mikro-orm/core/naming-strategy/MongoNamingStrategy.d.ts","../node_modules/@mikro-orm/core/naming-strategy/UnderscoreNamingStrategy.d.ts","../node_modules/@mikro-orm/core/naming-strategy/EntityCaseNamingStrategy.d.ts","../node_modules/@mikro-orm/core/naming-strategy/index.d.ts","../node_modules/@mikro-orm/core/cache/CacheAdapter.d.ts","../node_modules/@mikro-orm/core/cache/NullCacheAdapter.d.ts","../node_modules/@mikro-orm/core/cache/FileCacheAdapter.d.ts","../node_modules/@mikro-orm/core/cache/MemoryCacheAdapter.d.ts","../node_modules/@mikro-orm/core/cache/index.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/ts5.6/globals.typedarray.d.ts","../node_modules/@types/node/ts5.6/buffer.buffer.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/ts5.6/index.d.ts","../node_modules/@mikro-orm/core/entity/EntityIdentifier.d.ts","../node_modules/@mikro-orm/core/entity/EntityValidator.d.ts","../node_modules/@mikro-orm/core/entity/EntityAssigner.d.ts","../node_modules/@mikro-orm/core/entity/EntityHelper.d.ts","../node_modules/@mikro-orm/core/exceptions.d.ts","../node_modules/@mikro-orm/core/platforms/ExceptionConverter.d.ts","../node_modules/@mikro-orm/core/enums.d.ts","../node_modules/@mikro-orm/core/types/Type.d.ts","../node_modules/@mikro-orm/core/types/DateType.d.ts","../node_modules/@mikro-orm/core/types/TimeType.d.ts","../node_modules/@mikro-orm/core/types/DateTimeType.d.ts","../node_modules/@mikro-orm/core/types/BigIntType.d.ts","../node_modules/@mikro-orm/core/types/Uint8ArrayType.d.ts","../node_modules/@mikro-orm/core/types/BlobType.d.ts","../node_modules/@mikro-orm/core/types/ArrayType.d.ts","../node_modules/@mikro-orm/core/types/EnumArrayType.d.ts","../node_modules/@mikro-orm/core/types/EnumType.d.ts","../node_modules/@mikro-orm/core/types/JsonType.d.ts","../node_modules/@mikro-orm/core/types/IntegerType.d.ts","../node_modules/@mikro-orm/core/types/SmallIntType.d.ts","../node_modules/@mikro-orm/core/types/TinyIntType.d.ts","../node_modules/@mikro-orm/core/types/MediumIntType.d.ts","../node_modules/@mikro-orm/core/types/FloatType.d.ts","../node_modules/@mikro-orm/core/types/DoubleType.d.ts","../node_modules/@mikro-orm/core/types/BooleanType.d.ts","../node_modules/@mikro-orm/core/types/DecimalType.d.ts","../node_modules/@mikro-orm/core/types/StringType.d.ts","../node_modules/@mikro-orm/core/types/UuidType.d.ts","../node_modules/@mikro-orm/core/types/TextType.d.ts","../node_modules/@mikro-orm/core/types/UnknownType.d.ts","../node_modules/@mikro-orm/core/types/index.d.ts","../node_modules/@mikro-orm/core/decorators/Property.d.ts","../node_modules/@mikro-orm/core/decorators/PrimaryKey.d.ts","../node_modules/@mikro-orm/core/decorators/Entity.d.ts","../node_modules/@mikro-orm/core/decorators/OneToMany.d.ts","../node_modules/@mikro-orm/core/decorators/OneToOne.d.ts","../node_modules/@mikro-orm/core/decorators/ManyToOne.d.ts","../node_modules/@mikro-orm/core/decorators/ManyToMany.d.ts","../node_modules/@mikro-orm/core/decorators/Check.d.ts","../node_modules/@mikro-orm/core/decorators/Enum.d.ts","../node_modules/@mikro-orm/core/decorators/Formula.d.ts","../node_modules/@mikro-orm/core/decorators/Indexed.d.ts","../node_modules/@mikro-orm/core/decorators/Embeddable.d.ts","../node_modules/@mikro-orm/core/decorators/Embedded.d.ts","../node_modules/@mikro-orm/core/decorators/Filter.d.ts","../node_modules/@mikro-orm/core/unit-of-work/ChangeSet.d.ts","../node_modules/@mikro-orm/core/unit-of-work/ChangeSetComputer.d.ts","../node_modules/@mikro-orm/core/entity/Reference.d.ts","../node_modules/@mikro-orm/core/entity/ArrayCollection.d.ts","../node_modules/@mikro-orm/core/entity/Collection.d.ts","../node_modules/@mikro-orm/core/drivers/DatabaseDriver.d.ts","../node_modules/@mikro-orm/core/drivers/index.d.ts","../node_modules/@mikro-orm/core/unit-of-work/ChangeSetPersister.d.ts","../node_modules/@mikro-orm/core/unit-of-work/CommitOrderCalculator.d.ts","../node_modules/@mikro-orm/core/unit-of-work/IdentityMap.d.ts","../node_modules/@mikro-orm/core/unit-of-work/UnitOfWork.d.ts","../node_modules/@mikro-orm/core/unit-of-work/index.d.ts","../node_modules/@mikro-orm/core/events/EventSubscriber.d.ts","../node_modules/@mikro-orm/core/events/EventManager.d.ts","../node_modules/@mikro-orm/core/events/TransactionEventBroadcaster.d.ts","../node_modules/@mikro-orm/core/events/index.d.ts","../node_modules/@mikro-orm/core/decorators/Subscriber.d.ts","../node_modules/@mikro-orm/core/MikroORM.d.ts","../node_modules/@mikro-orm/core/decorators/UseRequestContext.d.ts","../node_modules/@mikro-orm/core/decorators/CreateRequestContext.d.ts","../node_modules/@mikro-orm/core/decorators/hooks.d.ts","../node_modules/@mikro-orm/core/decorators/index.d.ts","../node_modules/@mikro-orm/core/metadata/EntitySchema.d.ts","../node_modules/@mikro-orm/core/metadata/MetadataStorage.d.ts","../node_modules/@mikro-orm/core/metadata/MetadataDiscovery.d.ts","../node_modules/@mikro-orm/core/metadata/MetadataProvider.d.ts","../node_modules/@mikro-orm/core/metadata/MetadataValidator.d.ts","../node_modules/@mikro-orm/core/metadata/JavaScriptMetadataProvider.d.ts","../node_modules/@mikro-orm/core/node_modules/reflect-metadata/index.d.ts","../node_modules/@mikro-orm/core/metadata/ReflectMetadataProvider.d.ts","../node_modules/@mikro-orm/core/metadata/index.d.ts","../node_modules/@mikro-orm/core/drivers/IDatabaseDriver.d.ts","../node_modules/@mikro-orm/core/platforms/Platform.d.ts","../node_modules/@mikro-orm/core/platforms/index.d.ts","../node_modules/@mikro-orm/core/utils/EntityComparator.d.ts","../node_modules/@mikro-orm/core/entity/EntityFactory.d.ts","../node_modules/@mikro-orm/core/entity/EntityLoader.d.ts","../node_modules/@mikro-orm/core/entity/BaseEntity.d.ts","../node_modules/@mikro-orm/core/serialization/SerializationContext.d.ts","../node_modules/@mikro-orm/core/entity/WrappedEntity.d.ts","../node_modules/@mikro-orm/core/entity/wrap.d.ts","../node_modules/@mikro-orm/core/entity/index.d.ts","../node_modules/@mikro-orm/core/EntityManager.d.ts","../node_modules/@mikro-orm/core/entity/EntityRepository.d.ts","../node_modules/@mikro-orm/core/logging/colors.d.ts","../node_modules/@mikro-orm/core/logging/Logger.d.ts","../node_modules/@mikro-orm/core/logging/DefaultLogger.d.ts","../node_modules/@mikro-orm/core/logging/SimpleLogger.d.ts","../node_modules/@mikro-orm/core/logging/index.d.ts","../node_modules/@mikro-orm/core/utils/Configuration.d.ts","../node_modules/@mikro-orm/core/utils/ConfigurationLoader.d.ts","../node_modules/@nodelib/fs.stat/out/types/index.d.ts","../node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts","../node_modules/@nodelib/fs.stat/out/settings.d.ts","../node_modules/@nodelib/fs.stat/out/providers/async.d.ts","../node_modules/@nodelib/fs.stat/out/index.d.ts","../node_modules/@nodelib/fs.scandir/out/types/index.d.ts","../node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts","../node_modules/@nodelib/fs.scandir/out/settings.d.ts","../node_modules/@nodelib/fs.scandir/out/providers/async.d.ts","../node_modules/@nodelib/fs.scandir/out/index.d.ts","../node_modules/@nodelib/fs.walk/out/types/index.d.ts","../node_modules/@nodelib/fs.walk/out/settings.d.ts","../node_modules/@nodelib/fs.walk/out/readers/reader.d.ts","../node_modules/@nodelib/fs.walk/out/readers/async.d.ts","../node_modules/@nodelib/fs.walk/out/providers/async.d.ts","../node_modules/@nodelib/fs.walk/out/index.d.ts","../node_modules/fast-glob/out/types/index.d.ts","../node_modules/fast-glob/out/settings.d.ts","../node_modules/fast-glob/out/managers/tasks.d.ts","../node_modules/fast-glob/out/index.d.ts","../node_modules/globby/index.d.ts","../node_modules/@mikro-orm/core/utils/Utils.d.ts","../node_modules/@mikro-orm/core/utils/RequestContext.d.ts","../node_modules/@mikro-orm/core/utils/TransactionContext.d.ts","../node_modules/@mikro-orm/core/utils/QueryHelper.d.ts","../node_modules/@mikro-orm/core/utils/NullHighlighter.d.ts","../node_modules/@mikro-orm/core/utils/AbstractSchemaGenerator.d.ts","../node_modules/@mikro-orm/core/utils/upsert-utils.d.ts","../node_modules/@mikro-orm/core/utils/index.d.ts","../node_modules/@mikro-orm/core/connections/Connection.d.ts","../node_modules/@mikro-orm/core/connections/index.d.ts","../node_modules/@mikro-orm/core/serialization/EntityTransformer.d.ts","../node_modules/@mikro-orm/core/serialization/EntitySerializer.d.ts","../node_modules/@mikro-orm/core/serialization/index.d.ts","../node_modules/@mikro-orm/core/typings.d.ts","../node_modules/@mikro-orm/core/errors.d.ts","../node_modules/@mikro-orm/core/hydration/Hydrator.d.ts","../node_modules/@mikro-orm/core/hydration/ObjectHydrator.d.ts","../node_modules/@mikro-orm/core/hydration/index.d.ts","../node_modules/@mikro-orm/core/index.d.ts","../node_modules/reflect-metadata/index.d.ts","../node_modules/@nestjs/common/cache/cache.constants.d.ts","../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../node_modules/rxjs/dist/types/internal/Subscription.d.ts","../node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../node_modules/rxjs/dist/types/internal/Operator.d.ts","../node_modules/rxjs/dist/types/internal/Observable.d.ts","../node_modules/rxjs/dist/types/internal/types.d.ts","../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../node_modules/rxjs/dist/types/internal/Subject.d.ts","../node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../node_modules/rxjs/dist/types/internal/Notification.d.ts","../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/onErrorResumeNextWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../node_modules/rxjs/dist/types/operators/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/timerHandle.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../node_modules/rxjs/dist/types/testing/index.d.ts","../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/dist/types/internal/config.d.ts","../node_modules/rxjs/dist/types/index.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../node_modules/@nestjs/common/enums/index.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../node_modules/@nestjs/common/services/logger.service.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/index.d.ts","../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../node_modules/@nestjs/common/interfaces/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-manager.interface.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-module.interface.d.ts","../node_modules/@nestjs/common/cache/cache.module.d.ts","../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/index.d.ts","../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/index.d.ts","../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/index.d.ts","../node_modules/@nestjs/common/decorators/index.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-key.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-ttl.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/index.d.ts","../node_modules/@nestjs/common/cache/interceptors/cache.interceptor.d.ts","../node_modules/@nestjs/common/cache/interceptors/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/index.d.ts","../node_modules/@nestjs/common/cache/index.d.ts","../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../node_modules/@nestjs/common/exceptions/index.d.ts","../node_modules/@nestjs/common/file-stream/streamable-options.interface.d.ts","../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../node_modules/@nestjs/common/file-stream/index.d.ts","../node_modules/axios/index.d.ts","../node_modules/@nestjs/common/http/interfaces/http-module.interface.d.ts","../node_modules/@nestjs/common/http/interfaces/raw-body-request.interface.d.ts","../node_modules/@nestjs/common/http/interfaces/index.d.ts","../node_modules/@nestjs/common/http/http.module.d.ts","../node_modules/@nestjs/common/http/http.service.d.ts","../node_modules/@nestjs/common/http/index.d.ts","../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../node_modules/@nestjs/common/pipes/index.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../node_modules/@nestjs/common/serializer/index.d.ts","../node_modules/@nestjs/common/services/console-logger.service.d.ts","../node_modules/@nestjs/common/services/index.d.ts","../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../node_modules/@nestjs/common/utils/index.d.ts","../node_modules/@nestjs/common/index.d.ts","../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../node_modules/@nestjs/core/adapters/index.d.ts","../node_modules/@nestjs/core/injector/module-token-factory.d.ts","../node_modules/@nestjs/core/injector/compiler.d.ts","../node_modules/@nestjs/core/injector/modules-container.d.ts","../node_modules/@nestjs/core/injector/container.d.ts","../node_modules/@nestjs/core/injector/module-ref.d.ts","../node_modules/@nestjs/core/injector/module.d.ts","../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../node_modules/@nestjs/core/application-config.d.ts","../node_modules/@nestjs/core/constants.d.ts","../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../node_modules/@nestjs/core/discovery/index.d.ts","../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/index.d.ts","../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../node_modules/@nestjs/core/helpers/index.d.ts","../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../node_modules/@nestjs/core/metadata-scanner.d.ts","../node_modules/@nestjs/core/scanner.d.ts","../node_modules/@nestjs/core/injector/injector.d.ts","../node_modules/@nestjs/core/injector/instance-loader.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader.d.ts","../node_modules/@nestjs/core/injector/index.d.ts","../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../node_modules/@nestjs/core/middleware/builder.d.ts","../node_modules/@nestjs/core/middleware/index.d.ts","../node_modules/@nestjs/core/nest-application-context.d.ts","../node_modules/@nestjs/core/nest-application.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../node_modules/@nestjs/core/nest-factory.d.ts","../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../node_modules/@nestjs/core/router/interfaces/index.d.ts","../node_modules/@nestjs/core/router/request/request-constants.d.ts","../node_modules/@nestjs/core/router/request/index.d.ts","../node_modules/@nestjs/core/router/router-module.d.ts","../node_modules/@nestjs/core/router/index.d.ts","../node_modules/@nestjs/core/services/reflector.service.d.ts","../node_modules/@nestjs/core/services/index.d.ts","../node_modules/@nestjs/core/index.d.ts","../node_modules/@mikro-orm/nestjs/typings.d.ts","../node_modules/@mikro-orm/nestjs/mikro-orm.module.d.ts","../node_modules/@mikro-orm/nestjs/mikro-orm.common.d.ts","../node_modules/@mikro-orm/nestjs/mikro-orm.middleware.d.ts","../node_modules/@mikro-orm/nestjs/multiple-mikro-orm.middleware.d.ts","../node_modules/@mikro-orm/nestjs/index.d.ts","../node_modules/@mikro-orm/sql-highlighter/Tokenizer.d.ts","../node_modules/ansi-colors/types/index.d.ts","../node_modules/@mikro-orm/sql-highlighter/enums.d.ts","../node_modules/@mikro-orm/sql-highlighter/SqlHighlighter.d.ts","../node_modules/@mikro-orm/sql-highlighter/index.d.ts","../node_modules/@ts-morph/common/lib/typescript.d.ts","../node_modules/@ts-morph/common/lib/ts-morph-common.d.ts","../node_modules/ts-morph/lib/ts-morph.d.ts","../node_modules/@mikro-orm/reflection/TsMorphMetadataProvider.d.ts","../node_modules/@mikro-orm/reflection/index.d.ts","../mikro-orm.config.ts","../src/app.service.ts","../src/app.controller.ts","../src/scores/dto/create-measure.dto.ts","../node_modules/@nestjs/swagger/dist/decorators/api-basic.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-bearer.decorator.d.ts","../node_modules/@nestjs/swagger/dist/interfaces/open-api-spec.interface.d.ts","../node_modules/@nestjs/swagger/dist/types/swagger-enum.type.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-body.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-consumes.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-cookie.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-exclude-endpoint.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-exclude-controller.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-extra-models.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-header.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-hide-property.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-oauth2.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-operation.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-param.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-produces.decorator.d.ts","../node_modules/@nestjs/swagger/dist/interfaces/schema-object-metadata.interface.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-property.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-query.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-response.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-security.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-use-tags.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/api-extension.decorator.d.ts","../node_modules/@nestjs/swagger/dist/decorators/index.d.ts","../node_modules/@nestjs/swagger/dist/interfaces/swagger-custom-options.interface.d.ts","../node_modules/@nestjs/swagger/dist/interfaces/swagger-document-options.interface.d.ts","../node_modules/@nestjs/swagger/dist/interfaces/index.d.ts","../node_modules/@nestjs/swagger/dist/document-builder.d.ts","../node_modules/@nestjs/swagger/dist/swagger-module.d.ts","../node_modules/@nestjs/swagger/dist/type-helpers/intersection-type.helper.d.ts","../node_modules/@nestjs/swagger/dist/type-helpers/omit-type.helper.d.ts","../node_modules/@nestjs/swagger/dist/type-helpers/partial-type.helper.d.ts","../node_modules/@nestjs/swagger/dist/type-helpers/pick-type.helper.d.ts","../node_modules/@nestjs/swagger/dist/type-helpers/index.d.ts","../node_modules/@nestjs/swagger/dist/utils/get-schema-path.util.d.ts","../node_modules/@nestjs/swagger/dist/utils/index.d.ts","../node_modules/@nestjs/swagger/dist/index.d.ts","../node_modules/@nestjs/swagger/index.d.ts","../src/scores/entities/score.entity.ts","../src/scores/entities/measure.entity.ts","../node_modules/tarn/dist/PromiseInspection.d.ts","../node_modules/tarn/dist/utils.d.ts","../node_modules/tarn/dist/PendingOperation.d.ts","../node_modules/tarn/dist/Resource.d.ts","../node_modules/tarn/dist/Pool.d.ts","../node_modules/tarn/dist/TimeoutError.d.ts","../node_modules/tarn/dist/tarn.d.ts","../node_modules/knex/types/result.d.ts","../node_modules/knex/types/tables.d.ts","../node_modules/knex/types/index.d.ts","../node_modules/@mikro-orm/knex/query/enums.d.ts","../node_modules/@mikro-orm/knex/typings.d.ts","../node_modules/@mikro-orm/knex/schema/SchemaHelper.d.ts","../node_modules/@mikro-orm/knex/schema/DatabaseTable.d.ts","../node_modules/@mikro-orm/knex/schema/DatabaseSchema.d.ts","../node_modules/@mikro-orm/knex/query/QueryBuilderHelper.d.ts","../node_modules/@mikro-orm/knex/SqlEntityRepository.d.ts","../node_modules/@mikro-orm/knex/SqlEntityManager.d.ts","../node_modules/@mikro-orm/knex/query/QueryBuilder.d.ts","../node_modules/@mikro-orm/knex/query/CriteriaNode.d.ts","../node_modules/@mikro-orm/knex/query/ArrayCriteriaNode.d.ts","../node_modules/@mikro-orm/knex/query/ObjectCriteriaNode.d.ts","../node_modules/@mikro-orm/knex/query/ScalarCriteriaNode.d.ts","../node_modules/@mikro-orm/knex/query/CriteriaNodeFactory.d.ts","../node_modules/@mikro-orm/knex/query/index.d.ts","../node_modules/@mikro-orm/knex/AbstractSqlDriver.d.ts","../node_modules/@mikro-orm/knex/schema/SchemaGenerator.d.ts","../node_modules/@mikro-orm/knex/schema/SchemaComparator.d.ts","../node_modules/@mikro-orm/knex/schema/index.d.ts","../node_modules/@mikro-orm/knex/AbstractSqlPlatform.d.ts","../node_modules/@mikro-orm/knex/AbstractSqlConnection.d.ts","../node_modules/@mikro-orm/knex/MonkeyPatchable.d.ts","../node_modules/@mikro-orm/knex/index.d.ts","../node_modules/@mikro-orm/sqlite/SqliteConnection.d.ts","../node_modules/@mikro-orm/sqlite/SqliteDriver.d.ts","../node_modules/@mikro-orm/sqlite/SqliteSchemaHelper.d.ts","../node_modules/@mikro-orm/sqlite/SqliteExceptionConverter.d.ts","../node_modules/@mikro-orm/sqlite/SqlitePlatform.d.ts","../node_modules/@mikro-orm/sqlite/SqliteMikroORM.d.ts","../node_modules/@mikro-orm/sqlite/index.d.ts","../src/scores/dto/create-score.dto.ts","../src/scores/scores.service.ts","../src/scores/dto/pagination.ts","../src/scores/scores.controller.ts","../src/scores/scores.module.ts","../node_modules/@types/send/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/http-errors/index.d.ts","../node_modules/@types/mime/index.d.ts","../node_modules/@types/serve-static/node_modules/@types/send/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/express/index.d.ts","../src/shared/interceptor/transform.interceptor.ts","../src/filters/http-exception.filter.ts","../src/app.module.ts","../src/main.ts","../node_modules/@types/argparse/index.d.ts","../node_modules/@rushstack/ts-command-line/dist/ts-command-line.d.ts","../node_modules/umzug/lib/cli.d.ts","../node_modules/umzug/node_modules/emittery/index.d.ts","../node_modules/pony-cause/lib/error-with-cause.d.ts","../node_modules/pony-cause/lib/helpers.d.ts","../node_modules/pony-cause/index.d.ts","../node_modules/umzug/lib/storage/contract.d.ts","../node_modules/umzug/lib/storage/json.d.ts","../node_modules/umzug/lib/storage/memory.d.ts","../node_modules/umzug/lib/storage/mongodb.d.ts","../node_modules/umzug/node_modules/type-fest/source/primitive.d.ts","../node_modules/umzug/node_modules/type-fest/source/typed-array.d.ts","../node_modules/umzug/node_modules/type-fest/source/basic.d.ts","../node_modules/umzug/node_modules/type-fest/source/observable-like.d.ts","../node_modules/umzug/node_modules/type-fest/source/empty-object.d.ts","../node_modules/umzug/node_modules/type-fest/source/is-equal.d.ts","../node_modules/umzug/node_modules/type-fest/source/except.d.ts","../node_modules/umzug/node_modules/type-fest/source/tagged-union.d.ts","../node_modules/umzug/node_modules/type-fest/source/simplify.d.ts","../node_modules/umzug/node_modules/type-fest/source/writable.d.ts","../node_modules/umzug/node_modules/type-fest/source/trim.d.ts","../node_modules/umzug/node_modules/type-fest/source/is-any.d.ts","../node_modules/umzug/node_modules/type-fest/source/internal.d.ts","../node_modules/umzug/node_modules/type-fest/source/writable-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/omit-index-signature.d.ts","../node_modules/umzug/node_modules/type-fest/source/pick-index-signature.d.ts","../node_modules/umzug/node_modules/type-fest/source/enforce-optional.d.ts","../node_modules/umzug/node_modules/type-fest/source/merge.d.ts","../node_modules/umzug/node_modules/type-fest/source/conditional-simplify.d.ts","../node_modules/umzug/node_modules/type-fest/source/merge-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/merge-exclusive.d.ts","../node_modules/umzug/node_modules/type-fest/source/require-at-least-one.d.ts","../node_modules/umzug/node_modules/type-fest/source/require-exactly-one.d.ts","../node_modules/umzug/node_modules/type-fest/source/require-all-or-none.d.ts","../node_modules/umzug/node_modules/type-fest/source/partial-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/required-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/partial-on-undefined-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/readonly-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/literal-union.d.ts","../node_modules/umzug/node_modules/type-fest/source/promisable.d.ts","../node_modules/umzug/node_modules/type-fest/source/opaque.d.ts","../node_modules/umzug/node_modules/type-fest/source/invariant-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/set-optional.d.ts","../node_modules/umzug/node_modules/type-fest/source/set-readonly.d.ts","../node_modules/umzug/node_modules/type-fest/source/set-required.d.ts","../node_modules/umzug/node_modules/type-fest/source/set-non-nullable.d.ts","../node_modules/umzug/node_modules/type-fest/source/value-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/async-return-type.d.ts","../node_modules/umzug/node_modules/type-fest/source/conditional-keys.d.ts","../node_modules/umzug/node_modules/type-fest/source/conditional-except.d.ts","../node_modules/umzug/node_modules/type-fest/source/conditional-pick.d.ts","../node_modules/umzug/node_modules/type-fest/source/conditional-pick-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/union-to-intersection.d.ts","../node_modules/umzug/node_modules/type-fest/source/stringified.d.ts","../node_modules/umzug/node_modules/type-fest/source/fixed-length-array.d.ts","../node_modules/umzug/node_modules/type-fest/source/multidimensional-array.d.ts","../node_modules/umzug/node_modules/type-fest/source/multidimensional-readonly-array.d.ts","../node_modules/umzug/node_modules/type-fest/source/iterable-element.d.ts","../node_modules/umzug/node_modules/type-fest/source/entry.d.ts","../node_modules/umzug/node_modules/type-fest/source/entries.d.ts","../node_modules/umzug/node_modules/type-fest/source/is-unknown.d.ts","../node_modules/umzug/node_modules/type-fest/source/set-return-type.d.ts","../node_modules/umzug/node_modules/type-fest/source/asyncify.d.ts","../node_modules/umzug/node_modules/type-fest/source/numeric.d.ts","../node_modules/umzug/node_modules/type-fest/source/jsonify.d.ts","../node_modules/umzug/node_modules/type-fest/source/jsonifiable.d.ts","../node_modules/umzug/node_modules/type-fest/source/schema.d.ts","../node_modules/umzug/node_modules/type-fest/source/literal-to-primitive.d.ts","../node_modules/umzug/node_modules/type-fest/source/literal-to-primitive-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/string-key-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/exact.d.ts","../node_modules/umzug/node_modules/type-fest/source/readonly-tuple.d.ts","../node_modules/umzug/node_modules/type-fest/source/optional-keys-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/override-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/has-optional-keys.d.ts","../node_modules/umzug/node_modules/type-fest/source/required-keys-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/has-required-keys.d.ts","../node_modules/umzug/node_modules/type-fest/source/readonly-keys-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/has-readonly-keys.d.ts","../node_modules/umzug/node_modules/type-fest/source/writable-keys-of.d.ts","../node_modules/umzug/node_modules/type-fest/source/has-writable-keys.d.ts","../node_modules/umzug/node_modules/type-fest/source/spread.d.ts","../node_modules/umzug/node_modules/type-fest/source/tuple-to-union.d.ts","../node_modules/umzug/node_modules/type-fest/source/is-never.d.ts","../node_modules/umzug/node_modules/type-fest/source/is-literal.d.ts","../node_modules/umzug/node_modules/type-fest/source/if-any.d.ts","../node_modules/umzug/node_modules/type-fest/source/if-never.d.ts","../node_modules/umzug/node_modules/type-fest/source/if-unknown.d.ts","../node_modules/umzug/node_modules/type-fest/source/split-words.d.ts","../node_modules/umzug/node_modules/type-fest/source/camel-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/camel-cased-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/camel-cased-properties-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/delimiter-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/kebab-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/delimiter-cased-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/kebab-cased-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/kebab-cased-properties-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/pascal-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/pascal-cased-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/pascal-cased-properties-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/snake-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/snake-cased-properties.d.ts","../node_modules/umzug/node_modules/type-fest/source/snake-cased-properties-deep.d.ts","../node_modules/umzug/node_modules/type-fest/source/includes.d.ts","../node_modules/umzug/node_modules/type-fest/source/screaming-snake-case.d.ts","../node_modules/umzug/node_modules/type-fest/source/join.d.ts","../node_modules/umzug/node_modules/type-fest/source/split.d.ts","../node_modules/umzug/node_modules/type-fest/source/replace.d.ts","../node_modules/umzug/node_modules/type-fest/source/get.d.ts","../node_modules/umzug/node_modules/type-fest/source/last-array-element.d.ts","../node_modules/umzug/node_modules/type-fest/source/global-this.d.ts","../node_modules/umzug/node_modules/type-fest/source/package-json.d.ts","../node_modules/umzug/node_modules/type-fest/source/tsconfig-json.d.ts","../node_modules/umzug/node_modules/type-fest/index.d.ts","../node_modules/umzug/lib/storage/sequelize.d.ts","../node_modules/umzug/lib/storage/index.d.ts","../node_modules/umzug/lib/types.d.ts","../node_modules/umzug/lib/umzug.d.ts","../node_modules/umzug/lib/file-locker.d.ts","../node_modules/umzug/lib/index.d.ts","../node_modules/@mikro-orm/migrations/Migration.d.ts","../node_modules/@mikro-orm/migrations/typings.d.ts","../node_modules/@mikro-orm/migrations/MigrationStorage.d.ts","../node_modules/@mikro-orm/migrations/Migrator.d.ts","../node_modules/@mikro-orm/migrations/MigrationRunner.d.ts","../node_modules/@mikro-orm/migrations/MigrationGenerator.d.ts","../node_modules/@mikro-orm/migrations/JSMigrationGenerator.d.ts","../node_modules/@mikro-orm/migrations/TSMigrationGenerator.d.ts","../node_modules/@mikro-orm/migrations/index.d.ts","../src/migrations/Migration20220316063840.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/cookiejar/index.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/jest-diff/build/cleanupSemantic.d.ts","../node_modules/pretty-format/build/types.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/types.d.ts","../node_modules/jest-diff/build/diffLines.d.ts","../node_modules/jest-diff/build/printDiffs.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/methods/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/prettier/index.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/superagent/lib/agent-base.d.ts","../node_modules/@types/superagent/lib/node/response.d.ts","../node_modules/@types/superagent/types.d.ts","../node_modules/@types/superagent/lib/node/agent.d.ts","../node_modules/buffer/index.d.ts","../node_modules/@types/superagent/lib/request-base.d.ts","../node_modules/form-data/index.d.ts","../node_modules/@types/superagent/lib/node/http2wrapper.d.ts","../node_modules/@types/superagent/lib/node/index.d.ts","../node_modules/@types/superagent/index.d.ts","../node_modules/@types/supertest/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../../node_modules/keyv/src/index.d.ts","../../node_modules/@types/http-cache-semantics/index.d.ts","../../node_modules/@types/responselike/index.d.ts","../../node_modules/@types/cacheable-request/index.d.ts","../../node_modules/@types/gl/index.d.ts","../../node_modules/@types/keyv/index.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/@types/sharp/index.d.ts","../../../node_modules/@types/ace/index.d.ts","../../../node_modules/@types/color-name/index.d.ts","../../../node_modules/@types/color-convert/conversions.d.ts","../../../node_modules/@types/color-convert/route.d.ts","../../../node_modules/@types/color-convert/index.d.ts","../../../node_modules/@types/color/index.d.ts","../../../node_modules/@types/dom4/index.d.ts","../../../node_modules/@types/downloadjs/index.d.ts","../../../node_modules/@types/hapi__joi/index.d.ts","../../../node_modules/@types/react/ts5.0/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/react/ts5.0/index.d.ts","../../../node_modules/@types/hoist-non-react-statics/index.d.ts","../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../node_modules/@types/invariant/index.d.ts","../../../node_modules/@types/js-cookie/index.d.ts","../../../node_modules/ajv/lib/ajv.d.ts","../../../node_modules/@types/jsoneditor/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/offscreencanvas/index.d.ts","../../../node_modules/@types/react-beautiful-dnd/index.d.ts","../../../node_modules/@types/react-dom/index.d.ts","../../../node_modules/@types/react-image-crop/index.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/base_factory.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/display_utils.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/optional_content_config.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/annotation_storage.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/shared/util.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/metadata.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/shared/message_handler.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/api.d.ts","../../../node_modules/@types/react-pdf/dist/Document.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/editor/tools.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/editor/editor.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/editor/annotation_editor_layer.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/annotation_layer_builder.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/text_accessibility.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/annotation_editor_layer_builder.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/event_utils.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/pdf_find_controller.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/text_highlighter.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/text_layer_builder.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/xfa_layer_builder.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/web/interfaces.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/annotation_layer.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/worker_options.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/text_layer.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/svg.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/display/xfa_layer.d.ts","../../../node_modules/@types/react-pdf/node_modules/pdfjs-dist/types/src/pdf.d.ts","../../../node_modules/@types/react-pdf/dist/Outline.d.ts","../../../node_modules/@types/react-pdf/dist/Page.d.ts","../../../node_modules/@types/react-pdf/dist/pdfjs-dist.d.ts","../../../node_modules/@types/react-pdf/index.d.ts","../../../node_modules/redux/index.d.ts","../../../node_modules/@types/react-redux/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/spark-md5/index.d.ts","../../../node_modules/@types/stylis/index.d.ts","../../../node_modules/@types/three/src/constants.d.ts","../../../node_modules/@types/three/src/Three.Legacy.d.ts","../../../node_modules/@types/three/src/math/Quaternion.d.ts","../../../node_modules/@types/three/src/math/Euler.d.ts","../../../node_modules/@types/three/src/core/Layers.d.ts","../../../node_modules/@types/three/src/scenes/Fog.d.ts","../../../node_modules/@types/three/src/math/Vector2.d.ts","../../../node_modules/@types/three/src/math/Triangle.d.ts","../../../node_modules/@types/three/src/math/Box3.d.ts","../../../node_modules/@types/three/src/math/Sphere.d.ts","../../../node_modules/@types/three/src/math/Line3.d.ts","../../../node_modules/@types/three/src/math/Plane.d.ts","../../../node_modules/@types/three/src/core/EventDispatcher.d.ts","../../../node_modules/@types/three/src/renderers/shaders/UniformsLib.d.ts","../../../node_modules/@types/three/src/renderers/shaders/ShaderLib.d.ts","../../../node_modules/@types/three/src/textures/Texture.d.ts","../../../node_modules/@types/three/src/materials/Material.d.ts","../../../node_modules/@types/three/src/scenes/Scene.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLShader.d.ts","../../../node_modules/@types/three/src/math/Vector4.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLUtils.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLTextures.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLUniforms.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLObjects.d.ts","../../../node_modules/@types/three/src/objects/Group.d.ts","../../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts","../../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts","../../../node_modules/@types/three/src/core/BufferGeometry.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts","../../../node_modules/@types/three/src/lights/LightShadow.d.ts","../../../node_modules/@types/three/src/lights/Light.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLShadowMap.d.ts","../../../node_modules/@types/three/src/textures/DepthTexture.d.ts","../../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts","../../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts","../../../node_modules/@types/three/src/renderers/webxr/WebXRManager.d.ts","../../../node_modules/@types/three/src/textures/DataTexture3D.d.ts","../../../node_modules/@types/three/src/textures/DataTexture2DArray.d.ts","../../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts","../../../node_modules/@types/three/src/math/Ray.d.ts","../../../node_modules/@types/three/src/core/Raycaster.d.ts","../../../node_modules/@types/three/src/math/Interpolant.d.ts","../../../node_modules/@types/three/src/math/interpolants/DiscreteInterpolant.d.ts","../../../node_modules/@types/three/src/math/interpolants/LinearInterpolant.d.ts","../../../node_modules/@types/three/src/math/interpolants/CubicInterpolant.d.ts","../../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts","../../../node_modules/@types/three/src/objects/Bone.d.ts","../../../node_modules/@types/three/src/animation/AnimationClip.d.ts","../../../node_modules/@types/three/src/core/Object3D.d.ts","../../../node_modules/@types/three/src/cameras/Camera.d.ts","../../../node_modules/@types/three/src/math/Spherical.d.ts","../../../node_modules/@types/three/src/math/Cylindrical.d.ts","../../../node_modules/@types/three/src/math/Vector3.d.ts","../../../node_modules/@types/three/src/math/Matrix4.d.ts","../../../node_modules/@types/three/src/math/Matrix3.d.ts","../../../node_modules/@types/three/src/core/BufferAttribute.d.ts","../../../node_modules/@types/three/src/math/Color.d.ts","../../../node_modules/@types/three/src/utils.d.ts","../../../node_modules/@types/three/src/animation/tracks/VectorKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/tracks/StringKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/tracks/QuaternionKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/tracks/NumberKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/tracks/ColorKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/tracks/BooleanKeyframeTrack.d.ts","../../../node_modules/@types/three/src/animation/PropertyMixer.d.ts","../../../node_modules/@types/three/src/animation/PropertyBinding.d.ts","../../../node_modules/@types/three/src/animation/AnimationUtils.d.ts","../../../node_modules/@types/three/src/animation/AnimationObjectGroup.d.ts","../../../node_modules/@types/three/src/animation/AnimationAction.d.ts","../../../node_modules/@types/three/src/animation/AnimationMixer.d.ts","../../../node_modules/@types/three/src/audio/AudioContext.d.ts","../../../node_modules/@types/three/src/audio/AudioListener.d.ts","../../../node_modules/@types/three/src/audio/Audio.d.ts","../../../node_modules/@types/three/src/audio/PositionalAudio.d.ts","../../../node_modules/@types/three/src/audio/AudioAnalyser.d.ts","../../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts","../../../node_modules/@types/three/src/cameras/StereoCamera.d.ts","../../../node_modules/@types/three/src/cameras/OrthographicCamera.d.ts","../../../node_modules/@types/three/src/textures/CubeTexture.d.ts","../../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts","../../../node_modules/@types/three/src/cameras/CubeCamera.d.ts","../../../node_modules/@types/three/src/cameras/ArrayCamera.d.ts","../../../node_modules/@types/three/src/core/Uniform.d.ts","../../../node_modules/@types/three/src/core/InstancedBufferGeometry.d.ts","../../../node_modules/@types/three/src/core/InstancedInterleavedBuffer.d.ts","../../../node_modules/@types/three/src/core/InstancedBufferAttribute.d.ts","../../../node_modules/@types/three/src/core/GLBufferAttribute.d.ts","../../../node_modules/@types/three/src/core/Clock.d.ts","../../../node_modules/@types/three/src/extras/objects/ImmediateRenderObject.d.ts","../../../node_modules/@types/three/src/extras/core/Curve.d.ts","../../../node_modules/@types/three/src/extras/curves/EllipseCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/ArcCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/CatmullRomCurve3.d.ts","../../../node_modules/@types/three/src/extras/curves/CubicBezierCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/CubicBezierCurve3.d.ts","../../../node_modules/@types/three/src/extras/curves/LineCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/LineCurve3.d.ts","../../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve3.d.ts","../../../node_modules/@types/three/src/extras/curves/SplineCurve.d.ts","../../../node_modules/@types/three/src/extras/curves/Curves.d.ts","../../../node_modules/@types/three/src/extras/core/CurvePath.d.ts","../../../node_modules/@types/three/src/extras/core/Path.d.ts","../../../node_modules/@types/three/src/extras/core/Shape.d.ts","../../../node_modules/@types/three/src/extras/core/ShapePath.d.ts","../../../node_modules/@types/three/src/extras/core/Font.d.ts","../../../node_modules/@types/three/src/extras/DataUtils.d.ts","../../../node_modules/@types/three/src/extras/ImageUtils.d.ts","../../../node_modules/@types/three/src/extras/ShapeUtils.d.ts","../../../node_modules/@types/three/src/extras/PMREMGenerator.d.ts","../../../node_modules/@types/three/src/geometries/BoxGeometry.d.ts","../../../node_modules/@types/three/src/geometries/CircleGeometry.d.ts","../../../node_modules/@types/three/src/geometries/CylinderGeometry.d.ts","../../../node_modules/@types/three/src/geometries/ConeGeometry.d.ts","../../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts","../../../node_modules/@types/three/src/geometries/DodecahedronGeometry.d.ts","../../../node_modules/@types/three/src/geometries/EdgesGeometry.d.ts","../../../node_modules/@types/three/src/geometries/ExtrudeGeometry.d.ts","../../../node_modules/@types/three/src/geometries/IcosahedronGeometry.d.ts","../../../node_modules/@types/three/src/geometries/LatheGeometry.d.ts","../../../node_modules/@types/three/src/geometries/OctahedronGeometry.d.ts","../../../node_modules/@types/three/src/geometries/ParametricGeometry.d.ts","../../../node_modules/@types/three/src/geometries/PlaneGeometry.d.ts","../../../node_modules/@types/three/src/geometries/RingGeometry.d.ts","../../../node_modules/@types/three/src/geometries/ShapeGeometry.d.ts","../../../node_modules/@types/three/src/geometries/SphereGeometry.d.ts","../../../node_modules/@types/three/src/geometries/TetrahedronGeometry.d.ts","../../../node_modules/@types/three/src/geometries/TextGeometry.d.ts","../../../node_modules/@types/three/src/geometries/TorusGeometry.d.ts","../../../node_modules/@types/three/src/geometries/TorusKnotGeometry.d.ts","../../../node_modules/@types/three/src/geometries/TubeGeometry.d.ts","../../../node_modules/@types/three/src/geometries/WireframeGeometry.d.ts","../../../node_modules/@types/three/src/geometries/Geometries.d.ts","../../../node_modules/@types/three/src/objects/Line.d.ts","../../../node_modules/@types/three/src/objects/LineSegments.d.ts","../../../node_modules/@types/three/src/helpers/SpotLightHelper.d.ts","../../../node_modules/@types/three/src/helpers/SkeletonHelper.d.ts","../../../node_modules/@types/three/src/lights/PointLightShadow.d.ts","../../../node_modules/@types/three/src/lights/PointLight.d.ts","../../../node_modules/@types/three/src/helpers/PointLightHelper.d.ts","../../../node_modules/@types/three/src/lights/HemisphereLight.d.ts","../../../node_modules/@types/three/src/materials/MeshBasicMaterial.d.ts","../../../node_modules/@types/three/src/helpers/HemisphereLightHelper.d.ts","../../../node_modules/@types/three/src/helpers/GridHelper.d.ts","../../../node_modules/@types/three/src/helpers/PolarGridHelper.d.ts","../../../node_modules/@types/three/src/lights/DirectionalLightShadow.d.ts","../../../node_modules/@types/three/src/lights/DirectionalLight.d.ts","../../../node_modules/@types/three/src/helpers/DirectionalLightHelper.d.ts","../../../node_modules/@types/three/src/helpers/CameraHelper.d.ts","../../../node_modules/@types/three/src/helpers/BoxHelper.d.ts","../../../node_modules/@types/three/src/helpers/Box3Helper.d.ts","../../../node_modules/@types/three/src/helpers/PlaneHelper.d.ts","../../../node_modules/@types/three/src/objects/Mesh.d.ts","../../../node_modules/@types/three/src/helpers/ArrowHelper.d.ts","../../../node_modules/@types/three/src/helpers/AxesHelper.d.ts","../../../node_modules/@types/three/src/lights/SpotLightShadow.d.ts","../../../node_modules/@types/three/src/lights/SpotLight.d.ts","../../../node_modules/@types/three/src/lights/RectAreaLight.d.ts","../../../node_modules/@types/three/src/lights/AmbientLight.d.ts","../../../node_modules/@types/three/src/math/SphericalHarmonics3.d.ts","../../../node_modules/@types/three/src/lights/LightProbe.d.ts","../../../node_modules/@types/three/src/lights/AmbientLightProbe.d.ts","../../../node_modules/@types/three/src/lights/HemisphereLightProbe.d.ts","../../../node_modules/@types/three/src/loaders/Loader.d.ts","../../../node_modules/@types/three/src/loaders/LoadingManager.d.ts","../../../node_modules/@types/three/src/loaders/AnimationLoader.d.ts","../../../node_modules/@types/three/src/textures/CompressedTexture.d.ts","../../../node_modules/@types/three/src/loaders/CompressedTextureLoader.d.ts","../../../node_modules/@types/three/src/textures/DataTexture.d.ts","../../../node_modules/@types/three/src/loaders/DataTextureLoader.d.ts","../../../node_modules/@types/three/src/loaders/CubeTextureLoader.d.ts","../../../node_modules/@types/three/src/loaders/TextureLoader.d.ts","../../../node_modules/@types/three/src/loaders/ObjectLoader.d.ts","../../../node_modules/@types/three/src/loaders/MaterialLoader.d.ts","../../../node_modules/@types/three/src/loaders/BufferGeometryLoader.d.ts","../../../node_modules/@types/three/src/loaders/ImageLoader.d.ts","../../../node_modules/@types/three/src/loaders/ImageBitmapLoader.d.ts","../../../node_modules/@types/three/src/loaders/FontLoader.d.ts","../../../node_modules/@types/three/src/loaders/FileLoader.d.ts","../../../node_modules/@types/three/src/loaders/LoaderUtils.d.ts","../../../node_modules/@types/three/src/loaders/Cache.d.ts","../../../node_modules/@types/three/src/loaders/AudioLoader.d.ts","../../../node_modules/@types/three/src/materials/ShadowMaterial.d.ts","../../../node_modules/@types/three/src/materials/SpriteMaterial.d.ts","../../../node_modules/@types/three/src/materials/ShaderMaterial.d.ts","../../../node_modules/@types/three/src/materials/RawShaderMaterial.d.ts","../../../node_modules/@types/three/src/materials/PointsMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshStandardMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshPhysicalMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshPhongMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshToonMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshNormalMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshLambertMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshDepthMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshDistanceMaterial.d.ts","../../../node_modules/@types/three/src/materials/MeshMatcapMaterial.d.ts","../../../node_modules/@types/three/src/materials/LineBasicMaterial.d.ts","../../../node_modules/@types/three/src/materials/LineDashedMaterial.d.ts","../../../node_modules/@types/three/src/materials/Materials.d.ts","../../../node_modules/@types/three/src/math/interpolants/QuaternionLinearInterpolant.d.ts","../../../node_modules/@types/three/src/objects/Sprite.d.ts","../../../node_modules/@types/three/src/math/Frustum.d.ts","../../../node_modules/@types/three/src/math/Box2.d.ts","../../../node_modules/@types/three/src/math/MathUtils.d.ts","../../../node_modules/@types/three/src/objects/LOD.d.ts","../../../node_modules/@types/three/src/objects/InstancedMesh.d.ts","../../../node_modules/@types/three/src/objects/Skeleton.d.ts","../../../node_modules/@types/three/src/objects/SkinnedMesh.d.ts","../../../node_modules/@types/three/src/objects/LineLoop.d.ts","../../../node_modules/@types/three/src/objects/Points.d.ts","../../../node_modules/@types/three/src/renderers/WebGLMultisampleRenderTarget.d.ts","../../../node_modules/@types/three/src/renderers/WebGLMultipleRenderTargets.d.ts","../../../node_modules/@types/three/src/renderers/WebGL1Renderer.d.ts","../../../node_modules/@types/three/src/renderers/shaders/UniformsUtils.d.ts","../../../node_modules/@types/three/src/renderers/shaders/ShaderChunk.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLBufferRenderer.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLClipping.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLCubeUVMaps.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLAttributes.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLGeometries.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLIndexedBufferRenderer.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLLights.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLCubeMaps.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLBindingStates.d.ts","../../../node_modules/@types/three/src/renderers/webgl/WebGLPrograms.d.ts","../../../node_modules/@types/three/src/renderers/webxr/WebXRController.d.ts","../../../node_modules/@types/three/src/scenes/FogExp2.d.ts","../../../node_modules/@types/three/src/textures/VideoTexture.d.ts","../../../node_modules/@types/three/src/textures/CanvasTexture.d.ts","../../../node_modules/@types/three/src/Three.d.ts","../../../node_modules/@types/three/index.d.ts","../../../node_modules/@types/use-sync-external-store/index.d.ts","../../../node_modules/@types/workerpool/index.d.ts","../../../node_modules/@types/xmldom/index.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"f3d4da15233e593eacb3965cde7960f3fddf5878528d882bcedd5cbaba0193c7","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},"d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed","91f234f3341d1bd687aea2e25de03a8e6267770d2f4669e3dccc78275bb34760","c8cae60655bda122e8d9508e399020685fc34b17c94758b15580db1b9685bdba","e4f1c2a34e1cc1584f1913b995c1bbd91659c520f9fdb46d7528a0ca17ad430e","6e2c1b15722a5b10663e9b852dd406398c509b9c3dd5a95b7e25e9bd76fb41db","76413eccfefcd2d0225c2650d305674cff4f0a1c214b3abe743b720fd5ba01cf","2ea65f27b385babe21b96371d6bcff1c4f72b94e3a75afcd229ffad5d474e340","3d453f4fa5042c507e31b45d4b7d545b869d0e45fad32529068fa93ee1c64158","37f5b734154dcf35a46dfbda49bf9e1d6830be62dc7a2c6734473e23126cadf8","68d4b9357e8709a3711d0e748f5de8b5d7557a2bd6bee01900311681a7fa3e4f","9a437866f41be1b35d10752d502829f0858a49402c95034ad9729a24dae1a23b","5ac0414d15fa38f0f583bcc8151c4e8b210af077a76e03014054554b896c9b8c",{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true},"2e864ea827318e5f490863a8cd412744d9ddb175acf488dd02a941703dad1e38",{"version":"613b21ccdf3be6329d56e6caa13b258c842edf8377be7bc9f014ed14cdcfc308","affectsGlobalScope":true},{"version":"894dae169f8193e3f07c3fec14149a60592d1f13720907ffdf7b0c05cfb62c38","affectsGlobalScope":true},{"version":"df01885cc27c14632a8c38bdeb053295e69209107bb6c53988b78db5f450cb3c","affectsGlobalScope":true},"38379fa748cc5d259c96da356a849bd290a159ae218e06ec1daa166850e4bf50","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","f51b4042a3ac86f1f707500a9768f88d0b0c1fc3f3e45a73333283dea720cdc6",{"version":"a29bc8aa8cc100d0c09370c03508f1245853efe017bb98699d4c690868371fc7","affectsGlobalScope":true},"6f95830ca11e2c7e82235b73dc149e68a0632b41e671724d12adc83a6750746d","7aa011cda7cf0b9e87c85d128b2eeac9930bda215b0fee265d8bf2cec039fb5f",{"version":"92ec1aeca4e94bdab04083daa6039f807c0fce8f09bc42e8b24bf49fa5cdbbff","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","8463ab6a156dc96200b3d8b8a52dc8d878f13a6b7404439aa2f911d568132808","5289750c112b5dd0e29dfa9089ddbf5d3ed1b544d99731093881e6967f5af4d1","7693b90b3075deaccafd5efb467bf9f2b747a3075be888652ef73e64396d8628","bd01a987f0fcf2344a405e542ee681e420651eaff1222a5a6e0c02fda52343bc","693e50962e90a3548f41bff2c22676e3964212a836022d82e49eca0b20320a38",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},"300b0c12998391154d7b9115a85554e91632a3d3e1b66038e98f2b9cb3c1061d",{"version":"222e742815b14d54db034788a7bee2d51197a2588c35b1fbefe04add6393021c","affectsGlobalScope":true},"93891e576a698609695e5b8117bb128336e4b7b28772e7d7e38e8075790eb42f","69d90a2f13511eeaae271905c8615a93e20335530d1062a93cb04e754e5f04ad","d723063c56101b34a7be5b28dbde80a3ae3dfd5e08fd49a3b569473337ead1f9","fab49059d6c2026bdb2e53e4e5cde1a39da44e61daff1867c8b3b10b507bfe17","5a551275f85bcc4003e543a1951a5b2f682cfba9b2922f65ae0df40ab71724a5","22d1a3163b9a961dbe78b0aedbd7bcbc071ce1f31efb76eb013b0aee230fef0e",{"version":"c31695696ade4514cfcbb22799997b690d3dca7fb72beab68fb2e73b6ef450dd","affectsGlobalScope":true},"d99ad56d57f2c96daaf4475a8b64344b24dedafdb8f3c32d43552bcc72279a75","a101ef17aece908c1029a1bd3f97132794dcff21b4ca0b997d9a633f962c46aa","511575e18249b64b90d8f884fdb8a383c767d1a7efccd9d66a4e125a4dc5c462",{"version":"6d8001f2c3b86c4f1de1d45ecb3f87f287ed7313d6999f8c8318cec4f50e6323","affectsGlobalScope":true},{"version":"9e413bb587e01ba0cb1a87828cc9116669a4a71a61fe3a89b252f86f0c824bc2","affectsGlobalScope":true},"9c3d1222e6e3d8c35a4293d7a54d4142ebb8f7f70ec4111b8136df07fdc66169","70173c475c6e76ccebc37412b02b2e26f62bf45fc1534c3ebe6d7fa60fb88819","87ced739f77d80886ef2b923a7c52c363c549ad8799ae28eb8cc810892f511ad","863bc4e31de6c75423bb02da16190d582b0a69b8964b61d45920e5b2cb3832dd","849484324695b587f06abee7579641efe061b7338f9694ec410a76f477fe4df3","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","6e191fea1db6e9e4fa828259cf489e820ec9170effff57fb081a2f3295db4722","49e0da63a2398d2ae88467f60a69b07e594b7777e01120cd9ebcefa1932484cf","0435070b07e646b406b1c9b8b1b1878ea6917c32abc47e6435ec26d71212d513","f71188f97c9f7d309798ec02a56dd3bf50a4e4d079b3480f275ac13719953898",{"version":"c4454589a0aa92c10d684c8c9584574bc404d1db556d72196cd31f8f7651af1a","affectsGlobalScope":true},"b17790866e140a630fa8891d7105c728a1bd60f4e35822e4b345af166a4a728c","c50c75f4360f6fc06c4be29dafe28210e15c50cd6b04ad19c4808fa504efb51a","d4a1f5f7ee89b2afffd3c74282f8ee65b24266c92b7d40398c12a27054ed745c","900b5a9802192bc77eba35a5b87ce770df7b867a6d61772c554058c9ed635386",{"version":"d291d3d16fa252f6d460687491ea2c5c23098c9dc0d3e106b2803fdc98f48f29","affectsGlobalScope":true},{"version":"f43fcf89d75f13d0908a77cd3fa32b9fd28c915deded9b2778b08f2e242d07a7","affectsGlobalScope":true},"b9a616dec7430044ae735250f8d6a7183f5a9fba63f813e3d29dcab819fd7058","aebf613f7831125038942eba891005fd25fa5cadcc3e3d13af4768dc7549161f","0faee6b555890a1cb106e2adc5d3ffd89545b1da894d474e9d436596d654998f","247e5c34784d185bc81442e8b1a371a36c4a5307a766a3725454c0a191b5cfad","1c382a6446d63340be549a616ff5142a91653cea45d6d137e25b929130a4f29a","729ad315d8fa8556a1cbf88604ce9bfd73f4cc2459b0b9f6da00f75150c2bf9d","ca1bb9e40299a2a42de0799499d521cc1799347ac73b520f0ad0ef1565db3af8","f21d648335c8f2a68b5d4ab94694f2f240f0ef1125e2bd13da1c716c4b26c5f3","5632b2946fb25a854ef87c5430d4603069c3ca8588a359004ef3e566bff6e86b","21d69e54b8eb46b50a11f02e36d0ace40da583bd2cae17441f0ae031d3c92edd","5f4f83ac7c88d373d0850314ab840e5e737871b17975a88f84972575bcc52a0a","7b5bd9f795f54e859192bb0cc96eb8678d2421092b18e5061a4611bd75f4ea85","190eb9b195944067b751c6f1f1973fffaf6e2e224fff006234fe315421a939f5","ddf7988dccb6e90150aeb031ddfa91c7a616027809e210ffe9448df8c841e2c0","0711d8775231b088686c97d7c2aff31562e3d5f52525f2ea51444b0a390da25c","a912c4d7400f9b7b8c9798dca073b35d9cbab74856b5c4c507e8da3bd8a6fc2c","434f680ed7f0b6e853395db4814c8ef4ea53edc940af22bd2493446689c49247","f142391b7dcb26c7150ab5722c6331c7f08a486f9621aae2036f6201db6a0cb2","5eccdee2560388d06f517ccf0f71f6574e6afb7721c055aebf6f2b95911f09d7","4a37d452036764892827db5f6c3e032577bc0bb45cec1a7a07183bc7ac1e8ef7","a3c894635582e25634467faf5af1e5659f872f740fa3e0c08fc036acca7bd074","bc9b2bc85e4043596e4f84d196fe4f646cf9539ad63f7e917186aed38bdc2c99","5d7ce408cdc2ace5a4388ddbf3cb2e7050bc46fbb9d360fa2e7686bf68e36728","bb1212482141b70002831681d9edc857e7ddeb9a95653bfa187cbbfe3bf793e7","4a24231929566cddc0d833d79b9f9e1d0404964a0d2873a95351135752e083fb","4183c7750a4228b1f92ce592c1c3f5d1c4134740a8f8242b08fd430decf62aa9","b77f5cf2ad5766582e44f3ba2ecc734ba29dca949756a4656c29c2050da39dc9","72c35d25f5e92c075510829e400bb03edab3ac66728e89c991271e64b46c2905","8657262e85cae0021926329993ee183fde26bde0594c57c8e88d8f294e0bd580","dce4ba03ed7fc894cf730c90f5f9f50591a7ee812b94e867b5adebae15d2b618","b75b633c3dc74dc588db9affc29112c9b6965f51c8e53d01895511dceaf7bc66","0d7b0eb06c7e1498961517e036e6299a3a55bc2a7700fad7c49a2bea2e17756b","99405e9f3b753a7dde9817d983872f441c0ebfe13e838d9789883f35d584ba93","06d4ff7c4a587446c96749e51c4102bec7a34a69c53c8413904312e24a1b81b5","e815de5f24cac96fb9555f65afda2ead6a0e7547b00425b6f0bf86a5b6a2552f","9183abbb1cce269d5094ebecb44b8182e5aed26ae4bf7718959d15b15665f147","9632a3e1be6e564a0901e476fbb712c82c5872ab611e3dbc847f437ac548ce22","1d72fc46a55985235e8d8785c4e707c7620734a693bfa65e1b0d13a9dc72a16a","dc8b6c104d6ef65a596025cda17ce229a9321e8fd1d32753e4d731ef44fbb945","dd480cd3cbe2600e3322412adf31d8a6b04ad8eb731e61107eefc5e1e8c98645","4a0fd94f4f59daf6f8aa868b30f1a0f307a01d187e5992c26b9bc7260948a465","fd625f33ea578b49a397582930220c66889bc45268d6bb3a6f380554d42e5005","374968f553d7ada834b9c411471d56e6f9fbb2b31170f362028942c173e4b82b","5a0d52cbbcd09392206ce1690f77655cb283e0a68d5010f1d9cda0b3867170ff","293081f2064aed4e77c9565fbb6c8d625eade6606f21f50a9b8a86c27741a8d2","6dd6ec38169645549e14f5e956f167be1cfef5adb48e1842e4a4948454d44d65","ba48ca9660da15e546cb4437b272e700c777196fb7505faa0b4c1557f401f7ba","9675d1891047249384d827afb8c392b9fd4deceb11871f9185cce69089eef87f","a0923f7ef0a41a316cc066bb0571204aef18c461f18828b63bded2d0ec7049c2","4382d8d597b36095586056718ad777a010d68c0bfdc31b65785c9a94865de06e","5720d5bdcdd38e81b64e2130538c6c7893711c98b6eb42ae4972276ef998049b","eb6680f35761c15489c0c1a89785d183cb07b5d1baf2f44e34db607563499990","c87bd71d68a937e09ce33ea5ee2099f12f554ed3141e068cff2b3bc39e2a54b8","8659bbecbe5634309e332b85b9c5d917cc4e0f4df0fd06e2df9b13a980344e7b","70d402c7f13d482c46f3e8aea54d70b43c336bcc9c86620c35c6295057693efd","6ef08c60078ef28fa6fe191891ea186ec30d6f6b48d2483f25d64322e1df412a","f04e0409ff5c7ac69549172b902cc9be661fb275c84df802752b670f03d89c03","7fe6ff804c72875e13a63a1750e5281ca5279b122e2051b768a79e0c274d5258","fc2906e214caf70a117ebd2eca8c5af935f98f856c3c11b78fec48249d8cb00f","d7d2bb0ab4c122c0fa89190708c4be3146b289e25d448544d351630e70c8e979","5b81a2f9b8fb7425803347c5e9bfe804495a6304e892bd1f61c8369a4872cdb4","4fd64a47a60d67cacc0c1b013d39e157cec017673d285dbc5ae4be70b1e133e4","0ffe64e6243362e186cdbb6b55ce0aefb6d1f961e65f097cb9ee4a6377ea854a","3848a42dbcf354c5bd597360f39fd6d8bac0d5434700bd7de55795e6398feaf8","66e7ee4009b98477818175b41a630ebeb5abd70e354734043f8afcce917ba4ca","66da56dc594b4fbd04935e7316baf32db72c172fe6df47a386fe1d806417f715","12b3a143203b7dfd22ad10d6eed8ba6a4f51203571d3a95f3e9c96eb55459731","6752fb2a8acd01061a98601e77fb2819d669786256ac8923e8d8f51c2a9cdd1d","bc727202225bc7fa45844ddb857d829a96af1695bb11c14fa481f99e4c278ae0","ca9a1959792738d04cb97bcd582042e099c10caf2b93b14b9bfbbdcf0676967c","dc92f396d6491d3bcd80ba3771edeadab9e449fa0364c75c0be57a23349fe359","e0fa49f0189db44f25ade39d3df57adbe9bf7601c8690f8917adf5497d640a81","a7c73369ee3caa83274aea79ccf4e7dbaa1ebd5b74bfc528d095a69083ec7990","cdb06d3a184b002d7552151dfaed57d7fc4fe1e8c804692901082e4ffc80f3aa","62c2bbde44a6cd4e266acfa7c009418263dcefd328449c8135cd48352e38e14a","73ccf82b069f1a2b6af470c6e5d298d2ed8a2355edca625f9918fa7f8524ec19","1a27b8ce59b4f67b78f40e3656e1daafeda53708c3be45efa6b401f9f5ebdf18","e8e982c0dc56863be0a74853d76cb962b8a4806dc625879b872a71988011d14a","71596ef9c4670f994635af4cdaf3d8c0976400f6b7727d6ecbcf98db3c9c8bc0",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"2bc583eb7c88c4151310dd67546670b78d4aa2dbf476b0b583ae79ac3fb5c0a5","4298089df5a9fc6ddc6edb7a57267f28e729d69cac37759853d30389174f20ef","b33d7ee7c1b1e930552a3c17ce1ef4158d41e76fe36e2743eb32070e46f1004b","da3e8b8af3d950be73ae2d1a4efadcf0de7c17d13de377ad4c803087bde5a5fe","f81b1c338fc1643cd5d4e6ba8e8a97d35ab7ec305209f8607e36e2176401ed29","ad21b2c119f2dbda16118d8771b211695a9b09953d3f415a005ec7329ee4afac","4b10637abf9b243e007a597a3fd664f143731156c4896f6b7d2e993c1659766c","0d67b03dafe1eba1a2b1fc240e463df40c17463c2c3606c02bc84c6bfd70fae6","4882e2cd1e114b5a90e223543bbe013ae5ff8e1cfe5768c5bc33ea44134a2abf","4a6fed47bfcbe188980017faff1575b71207f7b236c51faecec74e332bba075d","59b21f2868c2648e95c6b8eaf2e722321609883e6631f0391d19f6cc948c3d55","6af150eb5fcd8f9aeacaf450b9da2693edd70493de67bac69bed053da580c6ff","1cef25b0a827c0d5acd0ea1a0b998fffa62975e2cdc06f0a6e2a0e0513edbe4b","92055b3765c13ab12ae6dad516b9cf32683fe7f76191bbc232fd9b0c55154910","4304baeb399d7086de3d520f1d4ab150c87ea97ba80866dfa26a13bf2d27eb55","d14c39443d8ed3ce646754a436cf9a5f59d126e0a31ca8b854a0dafd43fa3a7c","6103bad9d0c14fa780b2e725adb18a819977eb3eca148a5c8971d1eb177a7008","41c4e4e32359e20a630055cff9db1c3cdf1737f0cbfef8cd4e08c40e815d8cf5","f540a1f77029b585534c248edd4f14e6137f4c4d81b872b240367683c4607290","4bc6fef15d789042067caa79c67b08fc8d1763937c5dcd64412381e39bf22823","792518b1cc241dde95a665ea6419009dfb0fa031bc2d68aa7fa9ed4a655bcce3","9650ee1b814813a1eea9f45cc88f5390334542a0e87e123d0915e9c02797ec2c","46324183533e34fad2461b51174132e8e0e4b3ac1ceb5032e4952992739d1eab","d3fa0530dfb1df408f0abd76486de39def69ca47683d4a3529b2d22fce27c693","d9be977c415df16e4defe4995caeca96e637eeef9d216d0d90cdba6fc617e97e","98e0c2b48d855a844099123e8ec20fe383ecd1c5877f3895b048656befe268d0","ff53802a97b7d11ab3c4395aa052baa14cd12d2b1ed236b520a833fdd2a15003","fce9262f840a74118112caf685b725e1cc86cd2b0927311511113d90d87cc61e","d7a7cac49af2a3bfc208fe68831fbfa569864f74a7f31cc3a607f641e6c583fd","9a80e3322d08274f0e41b77923c91fe67b2c8a5134a5278c2cb60a330441554e","2460af41191009298d931c592fb6d4151beea320f1f25b73605e2211e53e4e88","2f87ea988d84d1c617afdeba9d151435473ab24cd5fc456510c8db26d8bd1581","b7336c1c536e3deaedbda956739c6250ac2d0dd171730c42cb57b10368f38a14","6fb67d664aaab2f1d1ad4613b58548aecb4b4703b9e4c5dba6b865b31bd14722","4414644199b1a047b4234965e07d189781a92b578707c79c3933918d67cd9d85","04a4b38c6a1682059eac00e7d0948d99c46642b57003d61d0fe9ccc9df442887","f12ea658b060da1752c65ae4f1e4c248587f6cd4cb4acabbf79a110b6b02ff75","011b2857871a878d5eae463bedc4b3dd14755dc3a67d5d10f8fbb7823d119294","d406b797d7b2aff9f8bd6c023acfaa5a5fc415bfbf01975e23d415d3f54857af","7d71b2d1a537fe41760a16441cd95d98fcb59ddf9c714aba2fecba961ab253b6","a9bd8a2bbd03a72054cbdf0cd2a77fabea4e3ae591dd02b8f58bda0c34e50c1c","386cc88a3bdee8bc651ead59f8afc9dc5729fc933549bbd217409eabad05ba3e","41c78f187749098f9b8e8982839a010b6bf00dacc654d759b9c169127bcda034","06a5faf6d1b529c86f39d95b262c8ae08b25cf629c0ee1b186aa2e69998969f4","bb844c597aecf3333951199d984081a3e2449989a69250dc9a431c6057e00ff0","b18a4fb0ef76e4999a628217d3528ab0dc53458c3e400815226a325402f94c91","9fc9fb73150a533962cb7a8d01cacf96a84c774e4a8c5b829e9bb9bdb3442b73","9396a2791ac1604a985a3d2a7ce486a10c51315ff4da6b26792a58125d5994cd","bc2786996cb0860724a35468151ddf97d0820c346237c7503c5a4a141d8aa7e9","6f31a43374a6a6606bb6e5d3475d20ef46e4476bfe240d01eff88a852d899c99","c5aaeefb408d3f04bc9969bf014fb8c7611ce52888220d5475b48984cb4d0b39","d7b06808e65bb7d659c19d79f6edc709ad022185c3516834f5734df64139f4a1","2a9882946dde4c703874ab1ff989d2763e93adc1f436fff25f66b4ef5141563f","20da430b68557166733bafdf364517d0f764d67cfcba27534401cb2cc71089e1","e1173fafa86337002ba631af9338eb529130d57e8cae20be7b858495420d9825","7aad6d1aa696061a8ebfd0461c5bd0d5296e08b67162e586bf6689f530f40298","28ffacb3a1d45a7ab4fc20030c2d501913c0aecb6a076821af1f99f687f59e7b","f70d82a2fbfd6ee96d3f370c0faeeab4a5ef88df5b70b3554d972056d277329e","bbaaea19731242a537955ae226bd9d9b986e6ce8b96ee430276dac958a493ce9","3427e1d44561a0821408b616cf2ac46070506ef7db7f7775b92375e228b71fbf","367f427f2cc43c27873990e68149979078e11f93b100ef818c897cc8e2327a7e","2933dfdebae9d93a923c5e6ba49b54f3ff4f9f6cb5c9463058611255d2ab0646",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"3346a737f29b700e7c6c2a694973ceb70a738c3ac5212ffbefac8a27048fa8d6","e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","1a25c4d02a013b4690efa24ab48184a2c10b1906a379565ba558b2c3ba679a6d","ba6f9c5491bcf018dbbc813e1dd488beb26f876b825007ba76db485df341a8ee","75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","5c7d5b50366ad358850cb764d54517a02e4c6a535ad63339341b919a01d25fae","004f3c14f064b567224f8d0bee55016099f60b286b26f7e45ea2398640425090","dd8331d0a5190a4735ce6c152e420230188c4966067a756673c36dd7ba72b10e","d87f383e3e2146c5fa07f9db97108695a291049d1758a05d9c474bcca847d119",{"version":"288182a3032203d20a0cb426b35c2b5e53725e06b2505a0b0b33c56d02560bb4","affectsGlobalScope":true},"0f882d4ae58f431454030289154feb0132e1b00ca5c3197c6b749bd098aed73a","412a285b5215287476bb954c160ced85718b34958f6d4eabd8a74541be17d8df","1e352dc6863536f881c894f17c46b5040db7c9423a18957a8fbc001dfe579b78","814a65fd55b6f21484b699acb5faa9dd858a7577e304fb05c9155f4a82a4c3d9","4d59c6a10b6c79a0927c79efa89b3c9f71d174ec14ec2792076cfd2330d0cf8e","a496f51933422872de22729b7a0233589325a1a1707cccd05cd914098944a202","c27066bdab263d8ea4799e97296fdc5e62c69b45e9ad908f4b8edefcca20f265","06a38095ad4368314366bc08f7cbc0fe274ef7321ec611005d0bdd9c6565e4d5","4599793db9aed9b84677f0ca1cf7ef3c69bb91cda4fe4329cbab778ca4d80a58","ad0028f96921778931fb8419d8de33b10908314fa99699de1702020f69235da1","ccd2a35321c0786bd3808042dc43b960cac13f2cc660ac37a0087e12bc97d2fc","df524ed01de4f19efb44bded628dbba9f840148be4b6cfe096e29d4b01589de3","2e3981b9cee48174ff85ae15019fd72933f7023a4ed05094740f7e6f7775623c","836ebdc3b9e4c006acc4f405b7e558e56d47830e05c40d991b1e27fe8bc91157","2cc6b617c6120ba64b5778ccd4b74c951adc3a3941bb6b39f47d48701c44af39","eca02b99615a8f1652e21399d832618e38bf166c0747c9247349bc901a2f7741","7f7d6d42e5780e86f5b860a6f95179fae06a368b3af28c1c4230397c47021a59","4740a7d11ab3b381be0f269f1903fb3ff226a2fba55a01756b2997e67cd853f2","863dbc4e77f0353e6f9d6bc0e2b4622d5c07ff6f099ff66cafd7924b2ff4dd3f","bf034a18ed7e2a058f9e48c4c2480a124138fbd3586a80c77736a9ec079d12a8","1c23e5522e794b2cfcb234a09406f44bf988e899a83458d43effa0d896188621","c249e9ae33bfcad97deec3c73c9ed2656e112fbdf22deace0b39724be6a5dcf0","5f16a149d633c7354cc6d9828fd6d443eb6090ed3dbfbf5cc72ac2b10447208e","c6f72b9a53b7819f056268c221d7eeb14c26e2582aa1547b0f6922d65bcfde72","feddabf6ab0eb191e721f0126f3db8688db97c77a1234968bde7a2d70c4ae513","a968efe0db090c2ed75ee8c77162534f7ffde3dfa9d9ee9f79c47784c43df96e","cde0568b836865a24f4ee5859462004a326dfb76d514e6f56c8e78feedebed58","7f5cb3a03588ed46d52a6c2138315d930cd6ffb5c2134247cd07bc23cbea0b5a","9eb225532dc87924b92933cfd48845558f230df315ba9c0e5254180affd906e4","f39fb20b83c3f9853c13d4ac95533760979d3023c0a5affe2c0a62d91ab3afd8","e4fca08aed8afb32bb8643d7469810bc8681115fe398e56a028df9e73b2d867f","8a59503e8c995d688174ab27cd32c3ab6afed7c41cb5282aee1e964f7d7b863d","078966067552650f44ca96c68eddbb8539f30ee48a9ab3f24abdcf0a4037b535","2cd6250c43dba360377481c98d48db6ab1532a7527339edb0deffddc28ba66b1","7a9d600990fbe263a23daebed9ba1bbc5761e45679a7e2b2774a42756ef077a2","66bc155515fbea8c31a4efccbbac44de7c037b01f3aa00b76312cf7252725d30","9fdd988a57c29bb94c3fd946457e031415fac3c88b681ae7403cc51efad949dd","0dfd353f0c16dd5107a7e0713dc52d0a2538293b0a0eac6000a017f9c0a60b56","9cd683a4663ef4d9c6486f1b8a34c73bdbc344d69490931bfe2fbcada12ab35b","42f6a409bad5259ece69df25d2b8ace2ff2ade45fe6386ee45203bdd9329f971","fb486aa15606ee3738eccc1f344d895588fc50b9956a8b50cedac7a3ac1d03c4","2eb162efd6dba5972b9f8f85141d900d09da4fba23864f287f98f9890a05e95f","3f878fb5be9ebe8bd0ac5c22515d42b8b72d3745ef7617e73e9b2548ccbdf54b","e9ed562b7599c8c8c01595891480a30f9945a93a46456d22ee67ebf346b7538a","e7bf975a98cecefe2e8902fb7da9314675ecdce553aea722aaec97327668e18b","3d36f93648518338c875d9f77a8eab52905365483dbb3afe43ed68f1b712b67c","4fa54df9184d291bd78b36f5063372042cd995460e906cb14014e40d1442a326","40c96d03a1fdc7223379b68fc28a885475269f61606258e311176cad8e398cf4","f6bd1aa152ca2b5064e06282ee3137842ae6825b6b09aa89a2ff063b976a56f3","72fff5572fbfd9ba6cc32b135b2df773fbcb062cdbfbf3599b0e4c0c0b9304f8","fbdc8d7cc7daf4101bf567512c67fb990d8fe300e0ba7f213171192177f44aa0","540e6ae4ddea7fc6ce1abf41ecc1351ab5ad0a945f9450a83d5d1cdbd4b32c73","3b6457fb3866562d279377f923cf3758c80ed7bfcc19414b72a24d0a98188e0c","4fb5d7efb3520b92c1b767ce18968057c5e70886d7fb3416c487231df9275af9","df2303a61eb57b2717d17123e82bc0f3fd60f6e4673cb5506192dfe23c9480bf","1c03bb7c4a812bff9cf39601c9f1172b4dbbada100970e2402f136a767fa2544","a35ca245eb852b70b20300546443abb1fcbac6e5066e4baaa092af4ea614d9b5","82fe707c2c25376601868e9eb7d3da6ecab4e1ec3919369f6357a79ae4dee6a9","1a39e51e3362aec7d4edec9b317ff83916fe0471f86ddf2d3ef3af5952e87d9e","4b3f36b96f129a8e125c91d41a05f711e73b3285f80bceb3a1aecb13c97c4502","852779920fc4220bc42ec6d3c9b6164e23ea9371a788531b48b4005fe0cb4392","6863aa26d38fb3c96d7b04547d677967d83ebe421a093e4dede6fd48ad23890d","515b97cede17d91c9669cc1c7fb7a8a5f0a5f2d8999f925a5f70b4ebea93723e","3a873d9c7fff0fc99f7994f8a49c126242a9a52947d8a6c2b9882aee7b476aba","944af466f063d4bd090ab9d988c620b90a014e919d5f78963f6074a136ea225e","644addd4811636da491c9546654bc005ba8599f23df6d731d91eba86f3137fc2","a9249493114b181814728cbfeb7234738193a4169b654ec4705d48d7a4d25222","aad6f20d6eb01192ae02294361faa6e1f320d72447b56f433db853bbe80b15ca","876fbedec2f494eb6f834ce8636b07d581c657d205d81a3ba894eff0facc6b84","58527aa45f11c9b259a6a9d78b397f35020bfbb104f4d3bb177039b5c18146bd","91b8b61d45b5d22f3458a4ac82e03b464a0926bab795a920fe0eca805ec476eb","2744532f8fb960eb78497ac660db719f503a10c801f87131d26fd9cbef75dcef","6fd4019d704fe42eecd8bbb6e37e19b3dc8fc8e8d74bc62a237539387ca4a710","d4733ddb92eccfba6947052161cb2ba04cd158bcb41ded178a3a46d984cf746c","cb46657d3237f80742d5701ebcced8f6e5cf8938442354387d6c77d7048dfae6","5c5e91212eb0c3f301f741b9c4a8c316dfd0641392ef8792909ec5797bf7dc5d","661f322e45545a554e4ffc38db6c4068a66e1323baf66acb0d8a9fa28195a669","9d787416f04d0867e8a46c317056f6ad365e328074c73fa3a1612285fa24465d","e9977eb2676f4d622229fb0f21f4e3b849adbb643de91307e5233b301e10411f","f2d3567210ca4d559d8297d6c4402599c93e3bc7485054192d38db5e132fbc0a","50d22a2dfdbf2dda7b333edf980566feb3f61813695c8f3b52fc866c8d969404","bdb95f4b6e845ec1c0ae95eb448c55a68a2752473e1d2107348abe40421cc202","ea546a7ed9eaa71ba78d4d392509dadea4bafed283269dd6c4b09e7d8824e986","4ec0f2a141a9ae7d3557b8efe630ac2021bc3a9ac61238b59293f4cf2f196e82","e062b1c4e638a95c2e2701973e6613fb848abb1f7673d4b54e6f729a87428606","0863a5876c85fbaffbb8ec8aeda8b5042deb6932616139706d2b82cde9d3f7c7","12f8b72e3c3a333814f4fa87d5b9a7ef1ece703f3b7ec7919ad2ffb58c48c1db","ba9c46725e2a0bd9df59d3a1e801cc60f90db3ef7817131c53945dce2b8c0c56","281d373eeabf80c4851f8de991e6abe4d385c30379d80897bbc3df3dcac99cee","624c5dce95672d9dcca40d9d9d82ef855f5f902292f43aa265cc8fd963c6ce84","8a48d9c6184992d1c3ed5daa55f83d708c37582916926a5555a900608f804b60","605dd288c636cf9b5317fe76dec75d3c7fb855fdcd3ee8cb4fea7d7091ca6fb4","95addea67857d4e568a02e429b15458cec203876b2ea5f5ea18ccfeeb91b8ce0","b5a615b0ad865ffa562980a10bda162ac1744fd363b4edc2cfc664222071cbcf","bbccd721363897950a55ce09529503f25a69522e5c91a22679b66e941e5f8654","d3a1e70795c38d7851b6e4f3b441c5ffdae171d6e2576a2204b7d79059aeea66","94c9ac65af8048cd33c05c16d40c0ef3534a12805277b7f998078ef1d431755d","063fe3004728b8516a4d799ee16f9a71801ba24e0443dd98638cef1bd4353a7c","0267341e780d4967cbd069ea57db7aa4e1fdfe74702ab0366a7a4c1da0ca332b","ec5a0291f1bcbd2662640e7a6ae0a632ce8f0fd55c02236bb43203f38436ca36","7ffd42ac60bedb9b97e7c35b48af9f71b0a2289f3324f414826eeaea937d144b","b20bc124abd8ee572d0d756713ff987b116cdae908a6fcbc40e80d4b999f56b4","1b42aac0e117a5a04d4314130a44e532253d48e00ec315ab2b75c72c1a23d4ee","a9cc62c0a1a6a88bae9ad7adcb40a722a0b197505fa26276aff0e830a29ab04c","f068ff5b7fb3bdc5380e0c677e21de829bd25cdac63a9b083fdc220fcb225280","09d2fdca6ea6c135897a26976ad3c0db724adaf23ef4e38ad852b1d8efef1ae6","15de5b7739bf7e40213a200853bf78455ee5958af08eda786605a54a7f25ade6","aa31b69fc0094a66e771e189d387ffed138b53b211903f96ca3737792f69abdf","975367362aaccf979ac4f35cc402b948981c870b03e8b8d28810db1555837a68","89e253db2c2cc9a510c521f14dd2b1aae4de2556ee5159ad8d118d3587e3a880","b580028098f87431266599cbd870b472e88715e29885fa97c2d816b38cad9c26","fa3e9cbc292087a73527497237c523145ab943c435a92dc254fd250a001e8e21","6fdc88b1287c276b55b7f7c4c7b49587813c763eea9751ce0baf0a7e61cd5d89","6a02443704052768bd021f24783aa104b02ae4444e9b735317bf13c6b857a11e","37987b0fe9800cf25473c882ce07bccdab2763c5681c1a2d16816aead46aa8d1","c84c03c721154068e1a60d83e9e85819bd3ef70b824ac2edc498aa31c06e5781","f4e5b4def2ccccfe43c0905074695c349230505faf6ae74a28b0c1090acfda7d","94cf36780aadc31958dc2047723e58acf8b20f1b2ddf4cda68ad51d8237b1918","b54b2b8caa5e36c039d40a2eb9612c28aa033b4aa792f80bb4fbdd6f13b46e25","06bc0b9cc7bf0b92534f1517fe5adde1f23f60cc6cc5c59f8e1c65db48a40067","919a753b0cbb12ccc606c62e2d34884d75a48ba19b1dda497c72621b11dac088","2c27e33ee0bf722988da00abd582cc9b806ce3fd9153a864800a339ad13f3fcf","92d7b3a5aa5dc872e54cbad2a7094b3ea4f72c7901de1d07b4c334ff658297f0","7a52922b38e9686d5bdc6e75774929eec6688d26c1dfe4a03ddec77ede468e87","aa5efca2833d89b55248f1889a6433dab1b1f41768e9a75f8ce35f9bf56c5ec4","f3cb934699bea498259de69c44a4f93b461f079d72cddb041587afd9312efb6e","4ade28b8e7ff47d5cbce4d30ebf6e05ced32d6ea23930b897c377d23f9f2f114","f25ffc20baaea5269b5bcc4f96a4d2628328daa36051fbd031b27c8cf8baa344","36927eafdf230172dbf968749804e6186082eb960ed1bb4e36e1536c6c4a5fd3","1218398da7c8dc4add10bdb3aa2856aad54b123d847eaf574d1d694ac269bfb5","07886b8104556bcc9314b90cd2043f2286e54c1f6ba2ebbc953e1e43232e12be","b637cd92688a6cdf4f8f184ff529dc2bc7f15692828e2c0c66a60e6972f400c7","8131bbadfeef07b067a4fe3fd9bb2b983c2ad631efc15123445324f9cb05e447","e9acc77854461c6072dfe6c0ba7150d304c1e61eabbf00131c921f61a6b04cb1","3fc077734e1ff23401f5fdde3de0f372880393b6e253f3c43f576ba11e23393e","50614c808e099a1d4413786f3783d9eeaaa74b267f2c87fcf8a893287e91c301","f4cb6530f248e87cefa74ef623206fec805f6252f885f8e14ef3d1a5872cef2d","38c332caadd8391566552395d592076470a5e7423f70964620eabf05c02907cd","eb17b5bf1fc763a644c21d76572c0e41e351c3f6dfcde649428d5d829f7294d2","cb124162c87b29ff5121e3ee5bb29c782f101e0135d6c2644ab1b31d530a435e","406d6f5d3707c488362fb40d1c1f8a7b0a42b70554b427160185d93e430228f5","2e9776410c5bc290d9432a9215c67398a273e514a79b9e15f32ecddfde8a03be","313ff8df074b81d3e4f088ff3a3a06df3d9b0d0c7f55469ccc2ac887ecb6b867","c718475bca06806cc243e77777641cb67ba68f2c57321a4773ebb47760a3bcf2","96e6bf811343caab5112b68880905c5d20d9257054afac6c18e718a4c549ed27","a2793bc73ba63ca7d259cb0f0b61d0023820170d08a1f9715006c8042d060165","d5011b38165771fdf75a9a06d6d379a1fc7edd7eb695ebdc52319fb6e3c6d81f","88417fb19d339304e9616a38ea513251047c9e300c81f9467fc317df8a582e71","c6411797a81e3f64f8c2b4fb7575e5b49c2e8a9376d31c2361e8c8df73488ddb","88ab362442cd50cfe62e99c81b10c7d2cceecec31f9fe4d75fc6673f9f37e414","cb155e69fa97f811e48cbd84cbc1c608a6585ee8ba2a152c0835981b8add7ab7","019f4f1cbc781cc15c6173f8be5ef907405722194ab297127b3c3426e5368339","3cd95a72058dbf36275e0ab3cf6ae9711dd2aed11cd0e8a2a6ac8ac3d8b9ebb1","c79f1c8b51d8475dde8d2973f740f43ca34b1f0a95d93649cd76c1ee20abba19","35f0d2bd2c5c05c0cb19095bf5b7c44365b1c88efe6285370855b90417277a64","8264b129f4c4eb4799703f8e5ee2223a184d1cdbfc782158b1f40a88a4435a1f","527ddda6f8be1279f3294714534c49d6e90f238cea325519882ebf88d7ec5bd2","b23877792e8bd00271d0ec5d401b68e4228540a4316de3d9dfb697b955c161a4","35b2eb1de01633db90d41abe93730b29984856fcc840b4c2801bfd3761a2097b","95f0c9127b879c2fc7e31f8e09ff45bb4aae302e60f4b9ceaf4d9ee6bc51ec66","62ad07fac36aa0a7cb5d537c52a902f31a6160ab59cbfe365e4313a9beaceed8","6e3d29fdc96ebbb2ac672d2dae710c689c1ea0d0e9469e0847616f3c38fd085f","d505055b8fadd42da235c85947911d8d198ad70c5f5775991e7821d4f89c90f5","8b5a5852099dca7d7e7a7cef6d681dc1586aafacdb963ca180fe5cabbfa3a24b","0d1aa3341d1ad2064adada71c5d01a2f572e4aac09410e5616d90894105a0eb9","52494ca5a884da3bf11b8165ab31429715f0970d9c6383240c5666f4bd713e01","2d1f9fed2116cc79bfc97765bf8f5259f39b9bf213eb2a73608fcef6d400da56","b4b9b51ee6f6309cda2e539245235a8caeca2b1d6bf12b5e5c162d17333c450f","28d9cd978e05d58f2153924254766cf59fb155639335239949f21066f90937c7","c76053984b39150d00ade365b096a8bc21a4a7f2ee9e0a926711b00f8e7bf701","956b510767e3d6f362ea5800510635197723737af5d19ae07ee987ea4a90bfa5","cd1a8ff61f5063d7e6e2094e25d35c90b499961b63911f2f4ae0ff5555c2b4d7","1cf09b5945779e9bc75c4dcd805fb149c28fc90da3335186ef620647a3c540e1","9cdc0b9a313090ec45b34ea1eb02fbace433f509e753634b043e9b83038261e6","c93474cff0088351a65d3cad24037874a26a5371a48528563e56efe31cb3d8bb","b4580df8ea7f62d7b06588001952bf69426e6b03cf3d2569f5f608e45f29ba08","de27f7bb9be9d8a2b4557ec6503b8a315f74d598ce9a0ab81b5ed5610e1a8e81","fe3c378dcefa7ed8b21bd6822f5d7838b1119836da75ae1e1fb485d27b8ffb62","7365bf3333d4277b6fe374ed055624e5ec080dbb919e2d78f1cb75a3f1a4b4f6","339a76a138b3e22a4c4386cc5abdeef64bd778fb0c35dc2fd9cb58c51fa17dc1","0923e4ac8c894ad507bd2daee0df66b699de88467201381ece011ba5a080e1ff","e4f6626f827ea509255647e1b6db82145a2eb1a6b46202655e7d9bb19145c33b","26e23972c40f378f0301d8d7025ea895557c2865a1a31c8ea9c3fff0dbc27075","818469e2f1c49f6cf6f220a81df013daf6e4dc4af7f9c0890ca63ce06d7d7299","795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","6e87c0c1cf06fe7dd6e545d72edefd61d86b4f13d2f9d34140e8168af94a7b7d","cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","b8d9df5c49858df86ffa6c497f1840528963c14ca0dea7684e813b008fe797b3","340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","b1f8c85b27619ccfae9064e433b3b32a11d93d54de5a1afdaeca23c8b30e38a5","0ed6417b905cddb85f98281cb3b5b137d393955521993d9ce069d5e2d6b26ee8","f9ceab53f0d273ccaa68ef125974305dc26fe856af9a5be401ca72d0f78659d4","99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","8e1453c4f07194ab558fa0648cc30356c7536b134a8d7516edf86fd93706c222","eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","ebf6ea6f412af15674333149f7f6561c0de9e36a4d4b350daccf6c5acbbf9fa3","1d6cc6dc76a777be3856c8892addb58d60b8957730951f9ab8b721e4f7fdf7e9","7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","1f9cc8013b709369d82a9f19813cd09cd478481553a0e8262b3b7f28ab52b0b2","a314a39426700ba2b5a76c01bab321bbe79cfef898dae996e930b017fc2b0af9","7f2c10fc5de794bf7ddad2ff13b46e2b7f89ced296c1c372c5fdb94fc759d20d","c2014a7a2718e8f1f953ced2092cff39de89d0bffe5a7d983ce12625e5493b9d","fc4439e09b1562f72a4dcaa193b1ff070e0217ac94d240282871b0642953f049","0b52cb3bbccb5d4f9aea4116aff8deb8f9bee11fdb9fcb363046fbb434a0711d","ab51b8f50db5f65229eb57e8be504c5a25208d61af752a5f3175a2e3126aee22","5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","8a4a75382ad915be014991cffdfef0e8d78572fe6dfa7f8f8eb748288bec27e2","44ec212fbf43580505de3d6054376ced252c534ced872c53698047387213efb9","4880c2a2caa941aff7f91f51948ebfb10f15283ff0b163f8ea2a74499add61aa","19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","c3befd91fe65a95f9a70f9fb62cdc98f0ffd28bebbc12ab09298de70f9cddc66","b1048a866abac5d678376310d28fd258fd4d663942ac915a5fa90e585cf598f8","c9c6eed8faed23fc697b79d421ac443594a3458ae2a60150083ee1e860171971","29bd5b39f6742ef7a907f41a855653ce7af240c8c4f9b5aa78b02355321755a5","9ddf8e9069327faa75d20135cab675779844f66590249769c3d35dd2a38c2ba9","d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","69196fa55fab9cd52c4eecba6051902bd5adff63ecf65e0546cb484b5a279fb1","35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","686b884e32299679a1489be7051752bcebc82255c7f1f1929f8b2ef565fd84b8","b75aa590b103f8491e1c943f9bc4989df55323d7e68fba393d3de11f4aae6bb8","b494648c291d0fb42660e97cca99fdb65d722cebf30c0eeb7fa390f205af0d51","970866cb5213e259a6c10b736d96cdfaeb65697bf2e80b4461f4edb34e4f463f","90433c678bc26751eb7a5d54a2bb0a14be6f5717f69abb5f7a04afc75dce15a4","3ce6884df19ea1f29b33f1aa8529eb2b061ce71ed50828e4fd3b065f1d2e93ec","c818e48bec39aca06abe82c635eba9199672f9e2257bf78b0fa7062a7e531ce7","87b0d2695c5c37692dc0a6dbf4cadbdde3d22fe068d7d3e3eabe54125a131a8d","6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","c18f4f72a68275b7602e5968b862cb9b7b76ea4a1ac1b3e622f99e0b672569e8","0fdb1ed509382bd388896d3770655b0cda8c80c36f8c54b3899992f7a3a8665c","d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","f55fc3e536ab193aaabb9b6ded5f93181f81294ee65fe3199c9f4415f0f1e53c","ec8053ec564993a885ba2e2c31408369270a190a332a29fac7a825bb7e60b37c","542ecc66e4fcc33f46695ae22b1d14c075054a78c019915d556636be642465af","476b5c25e85b94e15d761bb9503f55fb11e81167df451f187f5080fca825273b","72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","52ff5e1ea35c54428b46c75fd14f87b7a7158a8f4a1ecfc4a9b996a03185c738","605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","0d276d377a0bf0f35e8d7a5b871922ebfa6aff1757d1bbe27a7982b15ce78516","9cbb45413acfdf0cc384d884de88c3f951319004450c88a2bcdad62a11bd21d9","d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","ced87f58b05e2b07e314754f0a7ab17e2df9c37ee2d429948024b2c6418d6c9f","3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","3ac0b94ba8f884f63d38450ce9e29ecd59ff00805ffdd609193d7532b8605459","a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","2828dabf17a6507d39ebcc58fef847e111dcf2d51b8e4ff0d32732c72be032b3","c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","473bf3574a48185f71b70fe839fb1a340a176d80ea7f50dee489c2dc8e81613f","2b14b50de7e32a9882511d1b06be4eb036303bc72ce4a10f93a224382731500d","eeb24fa259f000f6b51a1fe89123f55de081eb2a0ef8d8f847afd67af49cfb68","91d8f3c1c3ae5efb8564ec7cb1f8ac8bf5714eb94078fb50a761ab811963e324","e21bb2cfbcdd8ce7eebb72422f3660806724f2b16cd6ce126d527511abb3a379","c04146836a55ea071b435298335e47f569db0e4d3ae420e35c83e448f944192f","31f71fe23daabea143fc8bd21dae0d5908227180fcda38ad3674df70351f9761","1e488188e99db261e338e0683813d20599f14c86b9b3546d35623c2caa6e23b0","4e1579c45e1a102078b0d24d7d05301657cf7cb2e77e2ade0c05d74e7922188b","0cb819e67e1b9dd575f53cce1a1f7267d22772b37ca60cd2516f24533b04e437","8d907f5e50623adc4e85632f1d233635dadde838208273310a11cbabb653b497","c802e72abaf33b77a58b9581d2f8e611a5fb0c94fdc4ea101ee59a78dd6ca746","8e64d7568722e6f6674e399c9e785ff23be6f970675da012f1c6f9b118b82a16","540e0eda4a2a78372dfd06a35bddca942f7ef6ca111d50be5a03836808270b6d","caafdf3ef4ee8163d9d4dcfe6bcb68a23b6c639480139407f682e13cedb473b6","ab5a144caffaf363fdb9a4ce41b1d70fc9e9efcf666f94ce463d4b239fd108c0","f171acb46af0a675915a5f5b73905d49a7255eecbc7b934878886af243d6783f","fbe89dae6da8f8e1d2c8e88014db73db978099027af2bc57883034af40e5b04a","33a9f0b6918da8adb508a6a052bf19c35d1eab2f77feed5cd1ee05201f498dd8","e80b39c0514911ee7b9130f12f9a48e7fde7e5740b7f2eea329299bd8f4c8a19","dd14d9057877b9a03fbac9e927910de0f44d2d9325e85057e6573f99560e18a1","cd57825cdf7b92345ebdd7b6f6a906731c3be41a86215c68bd83bd730ad2ff55","34916ef889a5d6dff6f613b8884e125ecc59883357126d7f69bdeb793d66fc1d","e66be854335b1fa96aa810524a94d14f324617c2d5f5437933044b0d76fe897f","42cf47eccccdd04432b96fa186c0705b89bff6689e3222c82d444b77ba458b11","641acdfefef7b22bc327a25c3923f93dbeb47ad8d74186f020bcf490978041ca","305da33cf8c29dbc59b8dd392d1c95e478bead6c18842349654a9cdb63f0b59a","3c11addb000e273a744992873f30b1a25eab9f0248f3ea6dadd1716a4ac37228","f5e0f3e2a52ac4c095380a0ec5ef2991a23773b91f42a3f97f32f2b50100713b","b9c89b4a2435c171e0a9a56668f510a376cb7991eaecef08b619e6d484841735","b85baa660305c65d45f97f5b227b1505a8023955f1bf27da178232e7be99cc12","988f547b3b2352a26ab1574c2dd63b6f2c4aa234e36dc99da4fe320e7b4a28bb","89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","d88dc05fd345b7a4e1816bbfd2dd087eefa9b9e36096818c2348f5b246971125","fb986dd9763020d8b0bb92257a2be89f18d286947762d93788b8518c4a3db2ef","6b8861483f8d90261908256836f1b8951d1f4ac9a2a965e920fb18603c8d1d0a","39f178509d1b8a5efff97f086c415dfaa47d4fdc9fd0722c402af2e72e07ca78","89d8275e44668b0869d4009258aeb1949f6efc5fa12bd9cdb9d57bd3b868cc72","fa39c1480d2cc6b9474b6a5d7d56a5db98ae9c6433a05581551722a603773ce9","3a93e73ecbb7a89241c58fcf30ecfbf788c3e98d01f5eab4573ce0f8635b6506","a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","ac10457b51ee4a3173b7165c87c795eadd094e024f1d9f0b6f0c131126e3d903","b2f2311d7085a1feec3f6a85d7cc8bdaf1d976de1874c1f92940ad8ce6a34d39","954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","4ee1e0fea72cd6a832c65af93b62fbf39b009e3711384bb371b48c9abba66781","d35fb65da678a4971822249d657f564ff6bdb6618428642235c4858ebafb2379","b27a613e49e00740db23e2e267b8e44e51ee85a448e787b7fa7c7a7be7316104","4d54136f3080a92f0b031115719321fa25bd855582c30f7f6b6e78969ffe7ec5","6c7554f14f08d3264e220f6ac82cf00e3b6a3bd15ec676bd97bf0e06da79e18d","a2506732a96c864f9336a4fc0403f7f4f3831cfe1db4a40ddf95866dbe2d28ef","8aa451aa2c6e762f359e6fae74e2903f6e3304b1a5ae19c1da548128ddf25add","e3f5060e98d678e320df7fed7391e6c1291849df4b9e36c8b2ab6dc5604d8f37","380970ed12c5382fa1bd36a84c8562b042aeafa6de618a64d27e682e493965c2","1f02c62e0a52828473d9a60bcd7befd9b333e9209fae90fec30af1fb16f7ba19","9c89ab413cd620c91d82ef9a9631eca3fe3b65090df1cc729a43e1fdc9f8ed37","5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","0b7109542117ad1529021dc091535820f0c2c42cc2399a751ba8af5c119af6a9","a33c72cfb6c71ffe8074a297ebd448d8a3b504895fc7b64c13d3aaee48b2a02c","9f96b9fd0362a7bfe6a3aa70baa883c47ae167469c904782c99ccc942f62f0dc","5df9a68835c1e020625127d8c951c90808d319c811fc3a780d24f64053192ea4","71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","a644ad1efc0cff5a46014b5c14e85ec216f790db47966d5c3bf78e81680063c7","10b23826a1c4289b040789481c970f07dd2a2bf0573777267c27149487dedefd","8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","27484cb3aa328bc5d0957fcb34df68a5db1be280af510d9ed3a282b1a0a93b38","6c2b8c78eb1476ad2668898923fda9c3e67b295b9a6dc7a7312ead2582a76883","d8fb0821bcebbcc5ef87655a6442e8909313eb0bd7960f696b10cdb31576fdaa","1053398d8fd9b1a45170b5cca30bd54abe7ec7061ef2929c4da9feaa71737930","c21f2aa4d38c2e9fea29dde79c15aed25f532ed1cb295794879cbeb8372a3ce7","7afedbfdd1a5220d472faacc2943242abb1f3f274b80984b11e804d6a8d8f17f","e9daeeada73c75f2fdf18f3125d91c10ec71d0ae3f6c5d3f4e6815409c46cf90","c86ad86cc7a3ec3794deab9b943a823d9aaf09b846bb581a06bf263117e8d6d9","cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","f23601713615719b1a1394deae884fb9f507de819a086d5a019c63793da9efc6","50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","ad5ad568f2f537a43dcc1588b2379f9dc79539ae36b8821b13a5d03625211eb2","99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","d2d58166965f631fa203f405f3713b0f86f1f8b80755e9daea43057a25311e16","ce7dbf31739cc7bca35ca50e4f0cbd75cd31fd6c05c66841f8748e225dc73aaf","942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","4f795f66a057de6e1755d0b56cd1d7d08eff7f804fc5d7ede301cc9c54fee7bb","0256d60785ede7860b5262f504f139aa68f74db44ba9f03807b752864580772c","396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","7cb9b6d5c1e3508fbc81e7bbab314eac54715f9326ac72fd0eb65f17a4393d50","a2799b303fcc12ca3688630b4aa430bc4eed65397ed4300e3f68c96199a52b6f","629a35f2caa6fbeea73058fed930b53302c35178c86a6f2baef4a66993d5a88e","da1449ff588ec5fc9e8930be2995c730133fd0fac0d06311922c6c5e5f8e6cd9","50183ad09541522ef0471069f8900599767392678fe3a1a62570ab7c82e604a1","e8b556459403cfae6d8d14eefbb85c6246bccc41ecde7be616d643df513aed6b","903bb69c5e5ce0cb8f8159a86acca9116275f8c78253db80004fe0d78f436ef4","9daabcf8cac2bd41d4cb83511c0358fc24650fd08f9ae73e888582285a116a3f","82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","691e990c527fc0abefa2cd0922b0dcfd83cf98a3f0c11a96a854f34fc85361f5","862b3a5f6637c3826ea615378ba203a3cb4e8320bb2f4422aa055f69c7e7422f","e3d221660c0b79a9a3ba1111b3dfbb1136c0b52d7609b0054d3ce09ce711a3e6","892adfd3427fa4ed24bede88e8e46e4cb67e53e794365023fd473f3be796981d","992fda06eebba15d37625007500bef5b3fdd1c5e2f5a334064efeb1604c7bce3","07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","abdc0a8843b28c3cafbefb90079690b17b7b4e2a9c9bbf2cd8762e11a3958034","2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","7b5ed961a0e03965299591d73de8b8c41e8a68105ff4fc07a240b0dfb94a5a3d","28b374712835278e5cd241ba89c102da726195edb230243fd04392fa1f2408cc","019491fba0fda26e7cd7c99821e036b01a0ccf3e7f0ccecc389d98553016861d","e59ad6eabd780c5d95b436e267bbd5ca60859cec9bab89998fa0d76a31f8a57e","a63f2262f1d48fb91c2a036359f3cca6d08ca707f7ee0e69605dd17d08c2b636","01229d1acba9cf46efe658c47460363cff4865b80d690dcdca077da6b5258b0b","c78c4d03cd663ed702e4e6ffc9fcce26831d1af95d517622f6662040282e24ac","5c0bb63f50ee2c1a05a50296b0726e87ff2a56a1d6b35730d9d001aaa88776c0","a3a48fbe8782048f74752a1ef300ade63777f62bca44aadd9bd99a4ebdf9b9eb","2731e9ac06adfae7b4968f72de6f8741fcae568d99acd172ca00428acb44a1e0","2ebca051934f745e29f877cc200171c0287fa39f209f344a92bbaa8f31f4fb41","e5f8c5c592e84037e152b13929384d48d8389857f913e996c483f7d470478c33","a45e69faf1b52f74580cec77f328b5b392b7543bf9d6e28fc3dfba489ba1c75e","7001f9a69a5ca9c05afad9a45a2af1d4718e8a15571516f9c572340a544e830a","95f76002be67108bec5337348c9f6fb1ae77dd3081fae9d73d7b3117f2e6d681","6bc3d452c2417247010a37309cc31cbceefe8415c24ae73874c22190dc48f4e8","607f26a2aa0b59736200bbab26fa1eadbfe158c4a3bc35e6b0d3894a28eb2aa9","b4a5c84503433136ab631988ee69db855c7e4434415acf96800cb37b9d563d7b","83f08a89e5f22e805b5e5e7b04464411a83c316d4c75118a803b89cad00ab158","ba1dde1e19202c7a0664678df9b68d3ef4df9bc8cb38ae19d2493a2ae77c28a3","d5630d9a809f159383cd2a59770b82eae1d37d9e1e6ee9397eb7c906a2696edf","6ecc423e71318bafbd230e6059e082c377170dfc7e02fccfa600586f8604d452","772f9bdd2bf50c9c01b0506001545e9b878faa7394ad6e7d90b49b179a024584","2a28ac2343b34a610a32beb5bd62953f95ee64b3656febc819bb70f5a85d15d6","02dafa194c95b7c0293059512b8ea3bd95402c6e4bc8331dab7e92e842260c56","4cd537bc0fa84016be29bb4245fd1724c6954322f397f9c30a3fd8d96b47f26b","cd1ccdd9fd7980d43dfede5d42ee3d18064baed98b136089cf7c8221d562f058","d60f9a4fd1e734e7b79517f02622426ea1000deb7d6549dfdece043353691a4e","403d28b5e5f8fcff795ac038902033ec5890143e950af45bd91a3ed231e8b59c","c73b59f91088c00886d44ca296d53a75c263c3bda31e3b2f37ceb137382282be","e7aa2c584edb0970cb4bb01eb10344200286055f9a22bc3dadcc5a1f9199af3e","bfeb476eb0049185cb94c2bfcadb3ce1190554bbcf170d2bf7c68ed9bb00458e","ae23a65a2b664ffe979b0a2a98842e10bdf3af67a356f14bbc9d77eb3ab13585","eccf6ad2a8624329653896e8dbd03f30756cbd902a81b5d3942d6cf0e1a21575","334ed2e25a7ebc8db8aac231bab5a5b57a1b6f8063186a92314f4ddf3d74d4e2","41ef6b546d3da1ea3de9b2e72ac7b9a219cc9905df631c01ecaeff477cfeae40","62463aa3d299ae0cdc5473d2ac32213a05753c3adce87a8801c6d2b114a64116","c9c2eabaad71c534d7de16385977f95184fdf3ddd0339dadbd5d599488d94f90","bdf0a372e233a8f5ab5daba2763ab8897e1044d735c1698a261b8e2ab08d8d13","9cca15b1c8c4fca29fc938964765d521690d320f1cc478ce3d907abef60b7711","1205f9908206109effcfe3649bdac82907939bae2e3cb132f8f6236b587515ac","f689c0633e8c95f550d36af943d775f3fae3dac81a28714b45c7af0bbb76a980","fef736cfb404b4db9aa942f377dbbac6edb76d18aabd3b647713fa75da8939e9","45659c92e49dfca4601acc7e57fbb03a71513c69768984baf86ead8d20387a01","0239d8f6a3f51b26cbdbb9362f4fde35651c6bd0ff3d9fc09ee4a2da6065cb4e","f848fa58526e715c62b20c820a0a0b3ace7175bca1201bc7c0747a6e49502372","17b5469df1d2c13496e90752122e1236d9ebd057fe5ff3b37f1e3b4613ea3969","8fc97ef271771dc6f81a9c846d007ac4f0cb5779e3f441c1de54dfda5046fe7b","ddb199b4aa8eb41c7de43c8fc4fb4177fa5309690e094e652fd9651884af6d0f","b64fec482d5c612291eebd81e32993663ee90a5dc05cfe43464e6ef5ee1cae73","2dd9d764938d20a0613b89b14d7da644f7be4a70d22f18c3019254029d7a7a3c","021034a82ea821144b711eeba792f824f03d30b5cdb3b20a63e9bc5ad0531fdf","b251114717c08c462c1a8388155ded58cbdfbadc13488b775a4eaaa59863dc46","a2e546426763a9d5d4b5b10b928fb312f8b76e581c8a985362cd04a01859e51a","33bb0d96cea9782d701332e6b7390f8efae3af92fd3e2aa2ac45e4a610e705d6","ae3e98448468e46474d817b5ebe74db11ab22c2feb60e292d96ce1a4ee963623","f0a2fdee9e801ac9320a8660dd6b8a930bf8c5b658d390ae0feafdba8b633688","7beb7f04f6186bdac5e622d44e4cac38d9f2b9fcad984b10d3762e369524dd77","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","0d9efc693fa6a92c5e50d62b7d1f912d50dbb3b7a5eb7d615d0df65b6685c4f3","f7a79f4a3d3ca7deacd5dea69aeea04547b2f777c158e957cf095884ed76bf6e","7c54c4b7f7752b0315f14b9ae63f00d7a3f39308e598c670d8a96afdcb8e0a4e","9f559e612c27cce4bc181decc88ba90b00e5be42b6ed7fe9316d6c61476d7439","03dfcf3d00c60a769e705eb5b080c3674cd59ae830ee7ad82aed8f1883f60f06","ca8cec5a09c4323e1fcd9e0f0f84727c9b0818802fabae4ecf7f42a380483037","92d06124389a259ec6f17fa490dd2da4a8aff8fd9055047036e63211793a556b","aa8c0e10f176c156cfea40f5acdbc08cb44a43ba5411c743be645743ed3b1c02","b1bf7de0413303c8bd9424cf4955b433606e90eb31339202c8bffdb1dec982e9","979a151b6741901c83c365c97b7e55dcaccd92402fe6095dedd7be206bb23bae","ec982ebee52d26bdc7a7520612216c9c55e7a44e6fe0f654fb26e6ee41bc16c4","91cd91dca4b299e4a9c125f9c25d442f59e3e6e591170ce2c08c975d29206f69","eb8b953a086eb190829bfca1622b1afe51e9ab3b243414f4ade9747494a5aa7a","72525cd996374e557811cc99b4d11478ad743b2cdca9400b29d183b87d6db6b2","488802186d1872ed533dfbaf8fdfacd8494700bd04634c4248d1e1c3f4045a78","58a91345b1b8060e59cce2c1843031035a313f7633efc56748621d26f70c39f8","5b9d477c5a2b3893cb008c4d55c602cf53e8e80330f089c048d1868d9372b6f7","8457eda41803df7ac9959429ac83bfed0bb4308e373a168915d6fcfe0beefb9f","a37a01b20fa5b139a741d72389e07987d65bf9883ccff8cb90601cc7442a6751","112265c7781d416cb18038de361cf84a49ffd39cb8e2c41457877ca288281642","b4b915d13ddb891a67eb9020a22484c623fb7301e59c9e75da1d897a443ab2cd","b1f580fd45c8fba8718ed7c3f4695604dcee962ee5976d79d77d0b0d77e7391b","02caa34de9617dfba730219a360f489bdc804c6213cc748ad7dd334f77b08b27","bb44a110636d08b1b3cac893279ad08a0de67fde825010fdfc4c624e4d307c02","fdaa5513a1d1e18b29da3b02ca51a5877f01a856e2df4414cd2fc2cfe469aafb","a8b0b8013626a817b30eae6145aa7bc74c0efa0fd18b4afad347050fc71ae0c9","6d048e32e69fd6edfeadc5251bdeaba7dedbb66b384556eb7c8bc418ebcbf214","e664cbf5fd9b983a7777732266b7fd22073348499b102331035609027d6a5647","0f9bdbe60cbfc72b81678841d30bd94b0c51fff9ee3808ae36747eaa73243ecc","2c6a49dae306019555a3e357e2f5664b7c8a09ed31f8861f1471a8d5b53f63ec","da7d955a5e559d4ecf7d06db5d6005bc4a7b85b64902a7909754304f223d5a2a","e76823fc7ac580977618a1c0a99fc2a1462ebc351f2f6c1ba1e7cadf27f0a8e3","41babab2dc633535340ffbd79dd992c2385d47a8aef3c5d16f9f81e8b9b237d2","05ea8f375b8e4699aecceaa3534aadf66f61fcbd326df3af8c20f2ea7d87c53f","8089349a78207ef55517287cc3f86bd7f630c4b2a7394e02987a89d1d99112ed","fa90c04b1098ac24800a5007e5683038b51c04de180e55a2f001e120e694bc4a","5bfc236c563af10e5120f867adf9e25f86ec2a1378e5d75095d63e4b255b4447","e844a85e94164563336c5a4206ece17e31c8f03395748272f47493ac97bba964","c7c1ac2ba58daf1a3c592f22617ea6d6e6eee359ae30c22aeba33346b004e4e1","35ed6b6b8a38edce2a74737274c8e9e27fab879bcca014bd5693d8ed2d5b8752","a02938b99586d48eea55ba704a4d63fea6628fe4e5f3262e5b9af06234442ef6","fc7208f6d3efb1e8c3fc9fba27b70a697cd8454c30ca41b866b40cf433b6ca3d","2ed79f8d0b9ed516a0e8a55ae52652f3fce8837f688497d561263d82b15d3610","737fa7a7960a782f86bf64476afe25573fc1e263c5cd45a7958aeadb8b663a49","a6f1efe3f89496579ad74eb91a24c671b646a31cf0bbaf7ba19075217b680c5b","5a3347789a9243294950218ec9823a279f65a039abf1bb8a7384c104a33248ce","ce5455ebf901151b03920a257c74bd45f5edda43dfbe00d437db3a4454fd53ac","d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed",{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true},"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","cb90077223cc1365fa21ef0911a1f9b8f2f878943523d97350dc557973ca3823","18f1541b81b80d806120a3489af683edfb811deb91aeca19735d9bb2613e6311","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","232f118ae64ab84dcd26ddb60eaed5a6e44302d36249abf05e9e3fc2cbb701a2","32dc570ff4592224a8d565ed68342de74d4933df8330d70060e79514b69583b3","3a85ca9d6fb08404ebaf292d8f472193c80d9f4172e04f70d8d28dc68ef09cd9","27c2a3763cac4fb744f8be91dd7282f3bfffe8923de2c4a4833b606c497654f8","ca1d1e89e3f43811c1a3ed33db4b3279c240e2768e68f6dc66b6ca002e5d040b","dc3b172ee27054dbcedcf5007b78c256021db936f6313a9ce9a3ecbb503fd646","15c112a3458aa50760b2df80601f1e14d24ac176e176b7af4d0ce7b5cc1f972d","9163267f997ebab031fc6ffcbfb0a1aea0381e8696b3e8e2b995f74b649cd145","6ab1224e0149cc983d5da72ff3540bc0cad8ee7b23cf2a3da136f77f76d01763","15f7afbede2947a3591c3748d141c73b75348b3fd78e7dceb571d8d5d6f87fc6","1201fd4fa101ad2c422f0aa7c0606c68090a2656bc31cbd7f7d459d9900c9a95","99b72c2392295dd9a52af0b4d3a2f3ee425407cc26aec5095fef070eff8a4c31","6de1c686b82ffb276398c0f499ed7f086caccf18cbd7269f85d5fe63a9cdf25b","f0fdc4fcfcedd7300969a22f9e413c9dbb888e3db35edae0d06b4d7ecc9bc719","6f8a416a3bf1abfe226200427d5a62e0cbbf0c942fdac01b2229d8c8d1ea27c9","3cc16303a32f31182bb66acb3b80b21362f7f7384d69efb21659d500fe5b8fa0","cd51ceafea7762ad639afb3ca5b68e1e4ffeaacaa402d7ef2cae17016e29e098","1b8357b3fef5be61b5de6d6a4805a534d68fe3e040c11f1944e27d4aec85936a","26dc8314c91b71c393777840a087650e63face85904ea8bb7c1c1895f01e8391",{"version":"4f24c2781b21b6cd65eede543669327d68a8cf0c6d9cf106a1146b164a7c8ef9","affectsGlobalScope":true},"86b484bcf6344a27a9ee19dd5cef1a5afbbd96aeb07708cc6d8b43d7dfa8466c","15ab3db8aa099e50e8e6edd5719b05dd8abf2c75f56dc3895432d92ec3f6cd6b","6ff14b0a89cb61cef9424434ee740f91b239c09272c02031db85d388b84b7442","5d6f919e1966d45ea297c2478c1985d213e41e2f9a6789964cdb53669e3f7a6f","884eaf5bcae2539fd5e7219561315c02e6d5cb452df236b7d6a08e961ec11dad","d274da8ba27079a593a7de4fbe82f3aab664724bf4f1b080e977f6e745e690e1","8504003e88870caa5474ab8bd270f318d0985ba7ede4ee30fe37646768b5362a","1cf99fe49768500d01d873870085c68caa2b311fd40c1b05e831de0306f5f257","4fa55de63944a9f7796825eca0b2289da27886677daaa91864268543fbc7f90d","f3874b59c93e93a77549a0ab68f900b809c33f75276d11d6e2cc7588bea442ba","4502caaa3fff6c9766bfc145b1b586ef26d53e5f104271db046122b8eef57fd1","382f061a24f63ef8bfb1f7a748e1a2568ea62fb91ed1328901a6cf5ad129d61c","952c4a8d2338e19ef26c1c0758815b1de6c082a485f88368f5bece1e555f39d4","bfa7e8a9830bf5f390b4ccb4286b32239e6ddc4dca515aac187705a478de86ed","ef4c9ef3ec432ccbf6508f8aa12fbb8b7f4d535c8b484258a3888476de2c6c36","dee75c873b20a13839a8ce9ea9d32696682c6db4b1e9f4fb6bc431ed31b0fb8a","f981ffdbd651f67db134479a5352dac96648ca195f981284e79dc0a1dbc53fd5","865f3db83300a1303349cc49ed80943775a858e0596e7e5a052cc65ac03b10bb","a1c85a61ff2b66291676ab84ae03c1b1ff7139ffde1942173f6aee8dc4ee357b","a24c4fe21d5b13a9ecbbb39b5e22f5d4c6fe5feebb074865ba2de273381a73ae","f8d55b6b0661a60188d3fd0d4c39c38b6823c78b71f55d59f467f78c46607ad5","5a0d920468aa4e792285943cadad77bcb312ba2acf1c665e364ada1b1ee56264","76800125dd98b705a09e3cbc702d5f698514354e5aeac9fa56f80a1c9f6fdc74","8aa592b47f4deed833a11daa86ef6779ddbd02dacc74e67103c8ecb675dc02a4","da2aa652d2bf03cc042e2ff31e4194f4f18f042b8344dcb2568f761daaf7869f","03ed68319c97cd4ce8f1c4ded110d9b40b8a283c3242b9fe934ccfa834e45572","de2b56099545de410af72a7e430ead88894e43e4f959de29663d4d0ba464944d","eec9e706eef30b4f1c6ff674738d3fca572829b7fa1715f37742863dabb3d2f2","b0cefbc19466a38f5883079f0845babcb856637f7d4f3f594b746d39b74390f7","16219e7997bfc39ed9e0bb5f068646c0cdc15de5658d1263e2b44adf0a94ebef","4ccedab1527b8bf338730810280cce9f7caf450f1e9e2a6cbabaa880d80d4cf9","1f0ee5ddb64540632c6f9a5b63e242b06e49dd6472f3f5bd7dfeb96d12543e15","18b86125c67d99150f54225df07349ddd07acde086b55f3eeac1c34c81e424d8","2d3f23c577a913d0f396184f31998507e18c8712bc74303a433cf47f94fd7e07","4d397c276bd0d41f8a5a0d67a674d5cf3f79b79b0f4df13a0fbefdf0e88f0519","aa79b64f5b3690c66892f292e63dfe3e84eb678a886df86521f67c109d57a0c5","a692e092c3b9860c9554698d84baf308ba51fc8f32ddd6646e01a287810b16c6","3c2e543e5913aca16ba24e406cebbf84bac298f79c249ea255016fabaf8be744","0b9bcc98884f81d8adda2c5d2ebb0361c7a53af6713e72138c4457e6016ff708","1848ebe5252ccb5ca1ca4ff52114516bdbbc7512589d6d0839beeea768bfb400","31073e7d0e51f33b1456ff2ab7f06546c95e24e11c29d5b39a634bc51f86d914","f60149e188145ebf3e6edf735576a2c26e805ac575bfdfa839a27929175e0855","31d18349ccfc45ce4f82990c71aed8901272a8edc9c6d1b2d330aabf36f50aec","a90339d50728b60f761127fe75192e632aa07055712a377acd8d20bb5d61e80c","37569cc8f21262ca62ec9d3aa8eb5740f96e1f325fad3d6aa00a19403bd27b96","fa18c6fe108031717db1ada404c14dc75b8b38c54daa3bb3af4c4999861ca653","3146e973c617598b8e2866b811fdfcafe71e162e907d717758d2412ba9b72c28","a653bd49c09224150d558481f93c4f2a86f9a282747abd39bd2854207d91ceba","efa00be58e65b88ea17c1eafd3efe3bc02ea403be1ee858f128ed79e7b880bd4","f5f716848e9b1e873519aa6408c35ac70c1ec471c460497842f28644dd906cb1","55d3747b2a8949561a78f7327647e54418ab3746f7dced6cfe75d76f2b051aa8","cd8aa48c26b3de057cfd76706c0cff88ace0f23f548b8dee974088497780e5ae","95956d470e8b5a94cb86d437480e3e2cb65d00cd5f79f7521b57de3fc0726de9","e79e530a8216ee171b4aca8fc7b99bd37f5e84555cba57dc3de4cd57580ff21a","ceb2c0bc630cca2d0fdd48b0f48915d1e768785efaabf50e31c8399926fee5b1","f351eaa598ba2046e3078e5480a7533be7051e4db9212bb40f4eeb84279aa24d","c63a0620a7fa59bbcac4ae218d477fdeafac72b689fede1e3acbbb1b8d90f36c","4ce53edb8fb1d2f8b2f6814084b773cdf5846f49bf5a426fbe4029327bda95bf","1edc9192dfc277c60b92525cdfa1980e1bfd161ae77286c96777d10db36be73c","421703860812c1dc29f83893f89434c855e09354c49012ff63b70c21243d997e","0a0bf0cb43af5e0ac1703b48325ebc18ad86f6bf796bdbe96a429c0e95ca4486","75a7db3b7ddf0ca49651629bb665e0294fda8d19ba04fddc8a14d32bb35eb248","eb31477c87de3309cbe4e9984fa74a052f31581edb89103f8590f01874b4e271","22fcfd509683e3edfaf0150c255f6afdf437fec04f033f56b43d66fe392e2ad3","f08d2151bd91cdaa152532d51af04e29201cfc5d1ea40f8f7cfca0eb4f0b7cf3","3d5d9aa6266ea07199ce0a1e1f9268a56579526fad4b511949ddb9f974644202","b9c889d8a4595d02ebb3d3a72a335900b2fe9e5b5c54965da404379002b4ac44","587ce54f0e8ad1eea0c9174d6f274fb859648cebb2b8535c7adb3975aee74c21","1502a23e43fd7e9976a83195dc4eaf54acaff044687e0988a3bd4f19fc26b02b","f9b229aaa696a31f6566b290305f99e5471340b0a041d5ae9bd291f69d96a618","6592ae1f1eec2e4cd4db11033b6936c8d9e009ddc48c164e46ef101a0dfc2c70","d9c6f10eebf03d123396d4fee1efbe88bc967a47655ec040ffe7e94271a34fc7","0f2c77683296ca2d0e0bee84f8aa944a05df23bc4c5b5fef31dda757e75f660f","309586820e31406ed70bb03ea8bca88b7ec15215e82d0aa85392da25d0b68630","11e4e2be18385fa1b4ffa0244c6c626f767058f445bbc66f1c7155cc8e1ec5b4","f47280c45ddbc8aa4909396e1d8b526f64dfad4a845aec2356a6c1dc7b6fe722","7b7f39411329342a28ea19a4ca3aa4c7f7d888c9f01a411b05e4126280026ea6","7f89aebd8a6aa9ff7dfc72d12352478f1db227e2d79d5b5f9d8a59cf1b5c6b48","7d936e6db7d5d73c02471a8e872739f1ddbacf213c159e97d1d94cca315ea3f2","a86492d82baf906c071536e8de073e601eaa5deed138c2d9c42d471d72395d7e","789110b95e963c99ace4e9ad8b60901201ddc4cab59f32bde5458c1359a4d887","92eb8a98444729aa61be5e6e489602363d763da27d1bcfdf89356c1d360484da","074343ca788a38f572d8bdb0985956c0ad1a4d8ca8b6ef8c1a19a0e11cf09db0","d729b8b400507b9b51ff40d11e012379dbf0acd6e2f66bf596a3bc59444d9bf1","fc3ee92b81a6188a545cba5c15dc7c5d38ee0aaca3d8adc29af419d9bdb1fdb9","7d05ac926705ce932b6e41e5e273333b380d08b6a036ad0c8b01139586b34548","0bc13111c65ef1373c84c86c039416127579469828f0e01e03ffe00fb8fd6785","c00b402135ef36fb09d59519e34d03445fd6541c09e68b189abb64151f211b12","e08e58ac493a27b29ceee80da90bb31ec64341b520907d480df6244cdbec01f8","c0fe2b1135ca803efa203408c953e1e12645b8065e1a4c1336ad8bb11ea1101b","d82c245bfb76da44dd573948eca299ff75759b9714f8410468d2d055145a4b64","25b1108faedaf2043a97a76218240b1b537459bbca5ae9e2207c236c40dcfdef","c65a41b9185521fb1d98111fd30fa4b3a5020c0e9cd8bb8c691d5536c8688156","5a4d0b09de173c391d5d50064fc20166becc194248b1ce738e8a56af5196d28c","0e0b8353d6d7f7cc3344adbabf3866e64f2f2813b23477254ba51f69e8fdf0eb","008ed9b6d1fdb68f9d98e6fd238d99be77e738892c3a1c6cf8b7616de4f8b114","08f95bee0619072d2c49854434af3e53d94e7e762fc082b49cea59e77db06905","9e5c7463fc0259a38938c9afbdeda92e802cff87560277fd3e385ad24663f214","8d59c3a0e8eacafde3525d8fab814d635e73f8f2264f461283a1ee829a67d33a","2ab9b3b4938022c0078d38ce47fe7863e259d855f04fd5a92fb8af6649b57632","7900170d0aa04a0e64ae6c9c5fa9a9307a9b86f386ff28a5c741e011929b2de9","27a7310e2ce35b87726a7407eea5acdafa79b1af695cfc6d6e9646d3fae6fe9d","c659e3b84a2946aca970719d6ce9d592af739e896b897796a01654ec6739b5d7","d1bad5c65bb5d892171ff5fa91d1488a1f9f1ea05cd186999ac6f4c87f5f5296","0af75cf944cb034d4e82703f4dd66962420dba9e5eb54efd4afb1c72a4e9a1e7","da52550d65066ae8abe7a40b78d83d241add6e5c856c3fde44ad41d329c16ec0","fdffa303e099083d53b036f3894bfb6a5897ecb8ccd862cb7a1bc48bb33188a6","0acdd3e54a0f8e171b900c2c0f91ded4eee67d66f8a5c2c3df71665d916cd5d3","2db8218540b707a68c44418f622d70613e7f48bdbd1d1c588b6d59328a317385","1b6f82081278dd8b8a2d9ac15ecf011c50fd9eec473db4522b7dcc6a48472eee","1073a0280fe97ef51e67a403729022eb7edf708fe06f6d141e14452a9b2237d4","20578c3a48ab1f580264175b665873b7887240e076c50cdbac6c483e3e759324","db6a7b3675989db344c7ffe936f7e3f75414b95b0c92328fa65c5dfc2b620bd9","f1243bcdbf01634537d5c18f9dff7f8a505e3f4b829e94c5ad68fdf03c01c8e7","8c4df0fe9e6af0d04ff7f23dcb54991cb4f2286302a95bdab923abd1e7791556","c4650a260ad06ea391ae83f42b1b95450fb2224b2531e8e3c03efb4850be1972","8abc73ce3a5accc857d06c6f2c385807c2e7401bdd40871cad126b905570dd26","556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","0dc6940ff35d845686a118ee7384713a84024d60ef26f25a2f87992ec7ddbd64","a1c79f857f5c7754e14c93949dad8cfefcd7df2ecc0dc9dd79a30fd493e28449","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190",{"version":"e9f2cdc4e98e73a606ff68c470a8cb4f23cd638c47649d71b90a2d9413102080","affectsGlobalScope":true},"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","b0f9ef6423d6b29dde29fd60d83d215796b2c1b76bfca28ac374ae18702cfb8e","916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","d88a5e779faf033be3d52142a04fbe1cb96009868e3bbdd296b2bc6c59e06c0e","ce6a3f09b8db73a7e9701aca91a04b4fabaf77436dd35b24482f9ee816016b17","20e086e5b64fdd52396de67761cc0e94693494deadb731264aac122adf08de3f","6e78f75403b3ec65efb41c70d392aeda94360f11cedc9fb2c039c9ea23b30962","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","eefd2bbc8edb14c3bd1246794e5c070a80f9b8f3730bd42efb80df3cc50b9039","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a56fe175741cc8841835eb72e61fa5a34adcbc249ede0e3494c229f0750f6b85","ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","e7bb49fac2aa46a13011b5eb5e4a8648f70a28aea1853fab2444dd4fcb4d4ec7","464e45d1a56dae066d7e1a2f32e55b8de4bfb072610c3483a4091d73c9924908","da318e126ac39362c899829547cc8ee24fa3e8328b52cdd27e34173cf19c7941","24bd01a91f187b22456c7171c07dbf44f3ad57ebd50735aab5c13fa23d7114b4","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","4738eefeaaba4d4288a08c1c226a76086095a4d5bcc7826d2564e7c29da47671","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","dbec715e9e82df297e49e3ed0029f6151aa40517ebfd6fcdba277a8a2e1d3a1b","097f1f8ca02e8940cfdcca553279e281f726485fa6fb214b3c9f7084476f6bcc","8f75e211a2e83ff216eb66330790fb6412dcda2feb60c4f165c903cf375633ee","dbe69644ab6e699ad2ef740056c637c34f3348af61d3764ff555d623703525db","bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","c3e5b75e1af87b8e67e12e21332e708f7eccee6aac6261cfe98ca36652cdcb53","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","d7dbe0ad36bdca8a6ecf143422a48e72cc8927bab7b23a1a2485c2f78a7022c6","8718fa41d7cf4aa91de4e8f164c90f88e0bf343aa92a1b9b725a9c675c64e16b","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","457c58e280cfc6099e19e2a1102364f3f0b98a9efab290f372c9d56ea08a1350","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","ff81bffa4ecfceae2e86b5920c3fcb250b66b1d6ed72944dffdf58123be2481b","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","bdf0ed7d9ebae6175a5d1b4ec4065d07f8099379370a804b1faff05004dc387d","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","65a716a9b9f76db70d2b35af0dae85784485ac0ebc838557b015627888b18d23",{"version":"b602bb320b708a4b9543d2f41d30ac68c61277642686d7e744f413305d583e6a","affectsGlobalScope":true},"9ef48d4da92d54f2b66464beae209e5c7d61b1fe2db1f77d7c5a77a8f6c1f63a","206fabd39297fecdcd46451a5695bbb4df96761f4818564f1ae4f3a935b8f683","9f5868b1ffbb19aabaf87e4f756900bb76379f9e66699a163f94de21dba16835","754907a05bb4c0d1777d1d98f8d66132b24f43415bbca46ae869158d711d750d","43c6306851a66a06e170fc898fb8a6b0a1cbfa8c32c4d7c72e6b203b7d4f99e3",{"version":"e9f0a43ce9419111406ea47fe0393e28bbc847099da92c90ed36a405a877f39d","affectsGlobalScope":true},"fe5b14aee53ee37f6fde7bc62b5e1136660977ec9cbe01ab0620d108821a72e4","a7db923226c71a1567a79e6561c600f4f8d2bb7cfc7592ac8d62d1a423ebeb55",{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true},"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","247a952efd811d780e5630f8cfd76f495196f5fa74f6f0fee39ac8ba4a3c9800",{"version":"6e2d92523017b7f8b254c2127758e5871c3467fd9de7e7f189d9bfae0eed74a8","affectsGlobalScope":true},"a7ca2a9e61286d74bc37fe64e5dcd7da04607f7f5432f7c651b47b573fc76cef","ee65fe452abe1309389c5f50710f24114e08a302d40708101c4aa950a2a7d044","2dc77a2ce0f71c340a0258ecab0260da33275b7b0951b279459eb4e50ba2c571","b3338366fe1f2c5f978e2ec200f57d35c5bd2c4c90c2191f1e638cfa5621c1f6","67f129ed8b372622ff36b8b10e39d03e09e363a5ff7821105f92f085b8d1ccba","3298c17c032b286794abd4953f87724769d71fba5cf997f9628ea649d5ffc41b","fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592",{"version":"921394bdf2d9f67c9e30d98c4b1c56a899ac06770e5ce3389f95b6b85a58e009","affectsGlobalScope":true},"e66f26a75bd5a23640087e17bfd965bf5e9f7d2983590bc5bf32c500db8cf9fd","17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","d341315220412b777feebc300e6a39244da42b23611668442f679208c395f679","5cf1e3dc83023bd97f6af435e1a546f3accd6801a8d616c636930c1db1fdcccf","0d950aa908dd8814536f41be36ec182410b5c771cb093a2830f6efdb518b8220","3d34f76107e372a6d0a3b4af15aee9e2af06ffdf567611c2a9aca3790a069bdd","91c9e0b1f740f498aa1dd27ca1e32800f61ad3c42518820253fb17dbaad0fc98","eccce84f0a83c0bd86d225c57a37be27e2f31d06ef442e397c0813376400bfb7","bfe509ace8b6e6bce9f85d5ab2be31044ee6c677932dd7e491a8eb2852ad4757","732d52d21605680f2e79e561b8033f3fe857813cf5c8ff77b4d99705b07c63ac","847e25124f973d7a9887312fcf320799cba76890b7209d2bed59d87e05e725f8","06a1bd08f568defeb13da11d2400d79e82d87cebbea014f238f19bb83670aa21","f51d8d87d3c9fb088b96c84bd6da9c290957b16f6a1a914a166d5800a4e9c6a9","9880d7aac7a1f60610354d8b1ad3ed3ec1c4c879f57c42e58e60098ecfb6981e","0a2a79f00f363fd68b76d3f78192e44e3c1ee633691325e3efcfc6f9c7a976a3","61dfbad6fffdc39760e3f74293b0c01891b50252666ebe1a6863470777c2723b","f3959b223dfbd0ca97229fa2031439201190253fde1c4f6d9db763a60420da69","c843d0eae9a1481f1702202cbeb7046d6e1a2f4d76ed97d042c54c73d78abfa1","06697fb60e372fbf0dcbbe2692bdb867c38081fa56772794a711f81520d46eab","c7ffa1e241da90c0588bc7e482afb4002081bf512ad1ee1562dfd51efdde0cf6","4f411fb3a58cd7750232726fbe47dd1ed2b8b9c525d4f4ab1d71b8eae79b4db4","b6172b582a34ff1ebe32d787d132cc7d031b5ca129bc44902ce217477b8dd3e9","1dcfc83d6dcc841e73e01bd10386924c0fb911774b780ee3c8983f1410a16463","f8615b9ba37b28a7c51feba0af11f3754949819727829fbc41bba638218abf50","8d5012b87f56060744979802aa8de75f76fadcac780df4aeececf0a332ff1cb9","db92a953c9126e6dae09e7542693b7dba83bbfb06121279359a77846ba835727","dd3c5686d72b5fb6145e9555e3f803f35a9c2d4524565bab07d9917785f64095","20783d45056ae38369d9a8a81918bc8f33febf0c707264d01c877e683e360353","dc0d1b83f54ecfa1e1d46dc1e91d6703d7183b186bd30057edc28912dc88d7bb","efcce62c06ed8db84eb873de3f10fb115b582d7f4e9f64126384896c02cf49de","dc52ecb513b99508e6d00e5b11716d00e14e17f4288ed6be297e41c0fbcd08f7","1359f8763dfcbdd7dc4f8279b96cfdc4004cd50b1757c45a9fd41b551321c5ea","e965c122e9ba814126e1f3db30cb7280068291c69f563907fdde4707ba726be9","e07e9c5b6e57d734750c282039bcf0b0e24e9348b2e61188316744fc4ff36e47",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true},"7233cac35711f43b7493061d2fe7636deb6d14f8cb58e4b3ff248be46f0b543d","5aca5a3bc07d2e16b6824a76c30378d6fb1b92e915d854315e1d1bd2d00974c9","06853853bd2a58bdc43260448b0e392fe006127ed1b74f39103a8bfde19709bb","893cd2b5a7a59d55edc9584cffc0ac51e35ad0290c60d671b61be53d87a02702","c753d9f4b5de5146ff13ec6b62e8fadb08643b1eccdc26fa723263765fe93dfd","8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","4b0d794d065f1a45a8d6d2adda907ef81dba7df4fac3bce75ec307d1a22a349e","d12f5fb934377314a0e5dbf6cb65c1be5ab6178ca5fbfc8546c50d3eee458647","51d508d4ff9616032a769e6048f2ada3e54a729c251e5dcff834ee9e0c2b828a","5273a936870e6f0a324df8e1d9b80190265fd3c9e7a6c1c889817ae9c60fa909","c660f4adf75a5c4725a46f7f73ba9a19c24d5b67101d7e282398ed483f3590c1","df198c163afabf78a6f6284ab8e26c0a64cac78383085d05972c936a247fb355","6d2a46050aaf02cf513f501e7df478b031018461c2fe85c91233e2b54ae366d8","8e9c191443e616c30bd47669cc59e4946b5fc23ff03c42c4578a48396688d526","0d040d689a5b08f47143fae77e8447caead3fc54c18b0213d99679e7f304e660","d5dd35a3ab9b497d3932fb0b6f40d5c1c063ba1579ff53b9a6ed4199a3bcb0b9","89005628a158578cfb8bc873c4bb6dbfc08e3b2c0fdab46ee7e5d9703cb8528e","8868268b7cb5bfb508e3844fc129cbdde23e24fae35024fca6798653a3eed289","166c027b2bfc241c7540aaf3832fdee69018185a3f8a5c8e52baba6fdbcfbd20","7b1dbd9aa1f1f5ff572521d92db24abbe319f85292019f62e4dca2741a376a35","ea49295b6d79f2e18ce98dcaa47c6ef0454a8b88e1a175970213d40271c42b1e","6930fdbc3cfdab7d0afc49022405717674ea095c77d045219d213bbd82c3b570","60c34643c5d1be4050f79a4e589bfa7e46792440efad2a3c49cfda8a72135308","fc3596b10eb99c07fccec7b04b9404d36bea341b9f486173aff1e234aceaccff","b71e7f69e72d51d44ad171e6e93aedc2c33c339dab5fa2656e7b1ee5ba19b2ad","030b5aba86fdbc5d46ffb2c024d7764791848520332a03b662dd26962e1125ad","3755d34ddf0835f31833c825aaf3c996d22d96dfc6db6d04b55e8c29213bac0a","281eb8e4ddd65b6733cf1f175dd1af1bb2595bbcea7c12324f028079ba78fdf9","54d68fee094e2ec6d34c4b7d89ba849ff87a2030fb8e907b0c4ad252009d40cf","e0fdf687219271c3031ae25cd8d3e9fe7c16ce46453ce775292887f486c2aa16","f17592fc258a847bb7d38ab25799eabce4865f24fcb441cc69a6a6277a48e6a7","512d2b3f264aac071278060d3e4f019508b8a504283708a0fc503198f244c363","5f477e9897e29f47b860b52218d645178362d3ebd17c990df9f36b0c52d0e6ff","0df7497ada3a4f6459420803ecf7e555f1ad1e7bd43c1e17bdafbc34e19d7162","2923047a1c951231f48fe77a6c2fffba8198c20dd05d4ec1b90f9e45f129adea","c688c76a19a30efa6f73cc6c133caf2cf8f9568120ff6f1b314e1fad98528681","8314c95ca15641f2a2c25704752dc2d9fc10f533986b312dcbf1f8fe544f939d","74952846d3e9b6c9ddaa3003f962a5b83f55f58f3b55525a962087fafab7f6c7","5942fb99d686253869e7f4c804b2239938cc267eb4bd78fa767ab3ee9e76d0bf","abf87d0100ab99c9d55a4ea52f0351e5261388cf4a5ad5d79cf8a5d6e8ebd1f7","1e4d12496a28dfeafbe1e5debbfe5e146df5a39e581a0ee2344a435c941458dd","10757352393ef1239b2efb42b41aa940ff67d9a40409958e9b9d3a9c7a524a64","367bba45eb437cea29f41c3a382c292c6fe6cdb7b26a389ee5d3a5eea5d75040","16ae8a0bdbb8d72fc63437587e08d0eee84ec1c165a7ea12e7d7e6f6457b7a63","9e22a3941d4e9ff901b1e3efa2f18efb5cced7f1248c2af03a511d59dd1f37e2","1e0477cba50bdeed193409008aea9e008380d7ceb9c41e4bcac9281248875570","432fe3b8769c1e1090be43baff32bccfb436c1fce8d470a45fef5a8016dbaab1","ed0e3159c03180a7ae7fe891f12b386eb311a9440a3a97e546c4d57039e43162","dc2461473d24379c8b31d308d782d27b7cd6cefa7cad8e2c89b7de03d73c0b16","b4ec3dcc11e8a52b81878d7aa998218182c36e3222e6c55177172880434823e3","aaf784daa602b58d53fb06e89a9feb03fc2c1bbe46bb2cf01a1adc8773fd4a73","4ba733d1a5ff0a0779b714468b13c9089f0d877e6fbd0147fac7c3af54c89fe0","a39e9304639454356f4a1fe20741899de0c3163e1f040d0e0acfdc8532f779e3","3bf8a15acc2dbde99020f0ebe9d16ceba9e6220e41e034003fc8f835b47642af","eae4d78e9a2660a6af2a638ac809a81d2bba1b90ec36620b2035a65cf296646b","1e21eb1938604e43aea31c89888967c7c39774d26074057ac87582208b349adc","f677a74b2b038509ea5aef4030fadc0e090cc9fd4dca4c71147934e6697c23b0","78b1daa0a8aa1f54530c110600cdcadf70c1238c0d71fd7208c1bd5b31b77db1","6e767f67b713d0507a4c5c450cee1d3b27ce1b523d5e6ade7d225da613e0318a","3470118b64b6e9ea140a7be15b04f8e39d9b17869182a177fd12be31b524c383","f4cadee14617809fe2c126a40aae853ca83700eaac4711bcde7e8b87fa349d76","63162eaa0e0e77c318006455f7053f006a974ee71206a51efd669fd762b4349c","272d5770bd166ee663a66e473a96c6c2a028a587a1d35ed68b313755b27a643c","418728880845307b1f5ce97a2f2f20e3d9f116886dfbed928b047377c661fe55","18076eca74d509e15742ef6733a1c96689485664c1a3e771d0d705fbe560007b","aa090f388d526153627ee51507c40e659a6fb9d7c669b57db95314bf429076b0","6a6bea61fbd65654e92ee68eb084d26300f7eb194bac5dcb7c3721611ec6fd8d","f8fd4518f157df6d897a336595dac0833595b4e97bdd4cc380cddfc856d51642","b688ddf5ad2d24f3fa58efd84f9ac9e3e1455031d8881dd917d72432a951e9e8","8cc83bf53997f80f7ddf98c0b70d4c625c3cd5b93ae2efe2fc0084a26d997a7a","71eb65c9011c56ea56932a87d9d171cf225f29c3aa601cffdd5818ebd0e16bd7","164f1c5c8ad203e80b827350fe3ca1c59c8106c8613e20a3ec4ea9e63dd2e730","a228ab0a7976c724d6135bbc153016418e3b8560a44101999192c5204fd31dfd","7a921991afa2ab5da7c9d94d6ee81de34724f82520fb3fabbe6eeaa29a7b5661","4c136da3b1dce49c12eac152699c6b4bc64fa93d6c7224a43c816f7e51b00930","bfac6d6a4817bf56d574b1f32b174f655e05ce45c5ddf6d17c9b592660f10935","bc7d1326a9187df243a5af0eddbc3095dc3442ffcc153c23e3974553e11b7972","0e6b3c7f300f6e2587c62783ebf78c74e61e7e85d37591e1e1ecf82cc15adc01","139ab16e09553addf17cfb7122108eb39cd406b8009692c4d1d9e3dea96ef83d","69f3d18ee459096c5e1426df332673a939b56b8bafeeec0b31b3cab1a9e4dadd","192ad3de0ae2044e97d375c601ef54149382bcf59a9eec35066465a73c434c0a","a99712388b38c17ca788b4b93cee993cc487ba69e18d98dba66000031e90c378","c8ac2f17b13f98787daf66f81b0f215e296c7f2acf5b0b43463d685700059653","e1b5820a2298308c97ac20096c391a4a064c02819ea897a20ea3f08f15051035","9d948541e42e0af1cf6e33967c13bdb3193d6507c4ff2bfde6849fe4ee15366c","a37385e604ee8726100c207afa819823079a766c30f5c38a242a9368d8c28e45","ab8c6e4a2b49a17c71848a8c7d14aa7fae2a2620c734922d8d004d59baf59ffb","c53f1e0dcd4a2c1c3e86c83345fd078ff75425ffb78654306b0f58521dc30f50","21b08a722f729d8d95892465be0977a8563dcf630b38d87886517ce6f027389c","80639ea4472a40009209e18013d543954e3e2379c712b571101ac2e8c5da0fcb","1fc98030aad398bba258e0fd2d5d6e39ab085c5d22257fbcd8181e0c2621489f","c60124cf00efc8b113c643d222cc146d15d5ea184c04df3cce9ce8652e42a6fc","7bf91a5d5e38618029b7d1703db7c0219f9eda3024fd816360d2ae791e89d1b3","0f4e57b76239328d40d68e9c6271b4f17a19970bdbff18d90e08031b04efc19d","bd683b2b79122ede787c445f2a35505d9dc60cdd3c2ed08cc05d1140c6807241","361ec213e909dea3b00f0aa91e1f1ccafe04eaae327a45bf33fe3c3a9a28d13d","6a60665f3bf35c7be844746ab2f796bb4076118559a7c660cf95fe01163bc79f","6e322a837838dbaad00bd298c6f33f5dfc9a5fed6792b0ae1d00b2da68afc2ac","f54c06d4e8fbc4f666c8c0830ac3c1cd06e39bf682347dbd84bc0ae05d3a162f","bd307a41d5962bb877f46e5447db73aead39ca6e87ec7fb9c29368a78731cd32","0f638672b9749835cda995e8eea6ffd2c17c505eb5b51cd263686b1abb5af9ea","105d7842497ad972a7f358d57aa0f95f722d67ce8fb0efc7d93247be6e7b025d","beb69bf7a052aa881fc18d7f7ccd47918719c1ba9ea2c92304bca4266a95df6e","1f0a034bc92b2b6bf1579253aa20a4983b2170cebdad9ff1e13718c5b58aadbc","07d41369f44f66a60cdd99267d7fd3b4c195d8fb9576a7a326b439bf3cc7b11a","8eb1f35d3bd99cfb4a61c87f756ae9389709e3cfdc0c4a54589b2e37c814b5a5","8027a5c97cc51405a3382c6b59d9690fd4ad8166dbb43e7976e62efc4a49fdce","d6fc38421f16d0a68a6d782a94f567464c1c441fc14949441a140b87a29d7ddd","9e9e3b18823c2179e426b11a6945f6586450d9db21e9eea0eb60491d018fa62b","d7a12dd03519d05cf43d70990cff5caf033f9b283aac0706e11519ddebf4e945","4998cbff67e76f385d9955674a9f2ac385926e807ed371ed357ccb6f03a4d72e","248195b6ec3d8c14855fa7ba39147abdcf4f2f6bab9c80b70252a96ae6fb1cec","1c548e5976ee7f2a3c46b88c09db5d1e7d95d464eff7536cb26515eb62b68694","a1e35cae2fcc3e93644f0c69984e138e84b3732961a3b9e91225d612946b4d4d","848c83b9294d41fc9fd8eb360b5a28563cc24f3e8f045f169b5cf1a7201a551a","6bc8df13510289edc16bf48bff69384ae05288c9c5c0fd2c38e454dd222a9499","08f77f39ef225aadaa1351d0ae1c4ca7a1d1886b1425c7cb63ef910885582c69","b29f216a35d3fd0688b305d31f483781b27c64a40cf76816020a1dcda4816fe5","9fe3723a3f5f2daa1317099c833ddf6e9859c3298fdc0edb4e06b463f9805761","09f59f210312b40890556fb204cc7822a41b918bdb90ba2618a932ab4af715da","371ddc98c5d6b8e553cf188d0b4037e773f4e1c5838dc0d68d23a3a8e376f312","a4ef836229dea41c44c1263d9abcf8b5d671969db90b3c6bb791094dc39a9a53","78f98988f34eef18c7b8e6853a3f5a4cf6247ae21832467932fbcc09a1287cab","1bdf5b5d4a633c4f5f246f81935cbce1cf5e5d8d9803b51fce46e1bd77cd892e","0c743b9395951a19992751718944e5efe0ba9db0f5fc4d55f348ab28760be918","62141f6672ab5a102d856e071fe459b2d83c973e150b842e9c1921965546d00b","d3de1f092f689c00d81dc2fee835ea7589e898b5bbaec44ffe3185020169900f","3e64a146b4c55e0d1278492b0643d8eb16cc6b79174295715f7e401a7aa4af2e","1ea27fff2ec857fa8a4dace7d210563a6c1f6b137fef3ec9455b4075124f35f9","b6f1c1fe1e0d3cb2c803e3a0685f029de6bbbdc3fcbd6d6df297d01a21848cc1","49d91fb60620bc8b3be5c1907cfc9a4811af9059b9e431941ca3b9a27309a185","c7dd8530f4cf12cc2955e1d5ccc5d556934862f0b11649e1cfcc94a3d96df146","f359dfb36d9ff7a94275b957a1c44709260497699a91bdfe1a5d2fd027a57b29","477f83ae5ac7bbc5e9bbf9981eaf7e720bb5a4f81d71427a9599f77a98889b64","fefe2547c95f38f79fc4d3d104319ff3d04d717323b45d62d4a3c46773b30f47","c78a500c32fa34be839024265a785c8172a655e270bd726f596716400ccb6191","b7fc8c07ca728c94149ce0e5ee64c21100aca7be97cc53917eb5b8b18976bd59","ea80eb37e9e11c4c2749ee3129e0d1d9f82e5b85723649f513afe1b2c8f5e51a","88b73800dc18e1470090faaf16765668ae154f87788da73214713a05980f68e6","5afeb741b747e4ca22dbcfd57b569c68eb7012c628841ef194eda42ba5b408ab","3d2022e40c2049f7ed484bb084c1a82add9b9e3c4647c23cbf3cd82797b5a59d","5791278922d75f7f3aa13b64d3f8ec2821302c7d3b660c8bc6b98d4a6b7ceddd","76f3f959fcce95b9ada79dfac10b7c5df81ecd85bacaf4d15ce5478e8ac2dd31","5265463dd08020db16b1763ce461004ba99f7d90288ce9444b765cd5060a51bf","3d55311307c15709ca243752aa8a7975fabd92dcc05e6121b2d48ad3213d39f1","b5c5844591132b944b7e5ab87bd288637ecacb23d945637de4ddc9344f25a20d","5e739c6cdb908e7546e5da530ba079166632e69cddd942736660e570acb92479","8f7482100023e5397eb7c1d8fd2595c929727ff423ea1f0b904cebdd37051bc7","7610fe0373d65bcc33f21d57eeba77551e8ce06a8a6abf7576298c69425f81a6","0313fbd97cac12034f11dea9fe85423e240c36ad36d646b00c5d4bbe57f33d7b","ff3765ee3b28da17a4537c891a04883e9f48bb5634f131f5860a85c8ec6dfd75","05c84e8c5123994a210f56d11a4cb9e623f6ad1897c1728c22e4f42f7dd1bf33","dfdc40f6fb796f1bf2f6e2336d711542fd7f3babe1da9d0acb5567e529fb4ab6","ba60980f49610f5e93009be094d68bc20f63568b1aa0c1d08151466390c0c203","9118804631fdd772a2164f6d7f94f290950b317aa4b81a543a9bcb1c9a01aa0a","37bfbfbec5d900c379b7dc65bf3ad2a9a0312fad4c91778ae3c73590d2d37b6b","64ca3e8fbfbfcae6d0d1e584a89bd169d7dc49233868d2a1b91301436fa95c7d","747199468ebdc82eb604ad75091390d5a1312bfc6e4a2411aa2e69a01b9b6062","0ba73f979f6f0846573338b7391911f80115004c5bed0e2e01b5d83064fbc06f","9b8829ef6f4c70d21e9a9f4653b1b69bc122b482aeccb6e1f7344bbe226837b2","afd5b50a4d20db25e060396161acdf718fffa3b73a85fb3ec75f2607cfed03c6","752e7f35c0b26df44e99a773ca1f37195dacce8847394a28fb29fc2984d98bda","d3eb2f8d171b641149c42a27d8d9d046ddfcd7d80ecc13aabf745eb77aec83ea","cd5588e6cb3863212109cb8f531b5715b23818491a1f7cce7633fc25db67d855","8c14b1e1ad4ddf5e8145459bc11ffdc84a35bad032d0671d67f4e62f9fcb6848","9fa45eaaf2626085d031569a52f54714405cec7b6bacb041f28fe7adfd247a05","56e3c947d17551543a81da36538d51efe75cc56a8576f89bbbdba62934b0b3b1","349d0ef543aa9bfccd41b52a48cfd9a413e0b256b6cb146278eeb8a9cef006e9","5d729de8b0b70bb4a4f0de2c263f42a3fc9612234665cb5d4f147e82e4ff7419","8350938747a211bf7666131edf2bcf38b464c048aff5a3b64e119fb9b900280c","25987a832e6a9303585accbe47950a9880445f1da53144094f6fc1090335392f","cceaa2d33e02d167889ed2484bd540d08792a8dc695e2352f1ea32b061d9d8b9","55a3a1e1a6b1d91c3a233e3e1eaee28db13e3fc917941f3f5022f28469480cad","a70bf51744ec939a5c87a636c383e0118d3b9332b9863b2c1df158194e1680a6","e52ad7566b687e35a98b4a202e3ee380ecfd5babfec74f79519a52d70211260e","24551b8482b56cba01f5a76871010c9898f87ef22c066b654bc79d6851fb65d8","e1b7d8ebc348369c2636d0548fcb95772a41f13669a92484998636d5c6f6f84c","0c39a6721f4481d28125672874d12f869db7beeb63efa5ea207a894a06b01990","5a4b056c4c7b1af3d3310ef90287b814f28062f2eb1b7ba1fbba74024ff751d5","fbf180777acc17ed6f59f0fd1639745c64dedecb2ca7886214999c0535ff02da","473a574ee3ffd1ab73bf001acb92d443c50c7ce58854c08c78ae89522f3b2af1","28cf4b88597d75f21d50d3e89cc60914ef1100ca7647c0bca0d44d0e04a83fdc","b93c28cb909567706ed85fcead09cd9ec116a9951727e9560a908b8e92c31ebe","3e0528d53eb3f2386d770412b4dcdd508ea8db6d7a32fac07b27e857b200c6bc","7efce11f987fd2d555babdcbbf505520c31671ad4ac08b298bc237f62ddd6941","5d96064fd7419a9faf2ec2118c273a6245d4933ff18774b39237e3a130ba0ea0","94755c3ecfcf813ef35c06e17b0494cea726eff490be46ec7f10b343cd6d6c66","780d4988de0352edd1800224ae70dced2a527a8d6bff3a7ab13927f3d778740d","59bf56dbda4409f8e87676340c5bfb65cf674442e611a680f9f461c8898c46dd","7c9de3d7e945f169a38c135a9f3799746d5774958edc38e7cb800451ce551c6b","57f2d9377264cf90b169ba4bbbcee8135d1350d8523d60a41d5523cf8456f226","8d2a53c59c82a8fac953afd36ca75783f60dcc5dec4740f1a00e8986f1119634","9fbae82aa0cef1eb7c06998fafcaaf8b7b049c1fb95db6e9bed4ae0138617a17","a708f4132704cfb8b845d32c02cd098651a52a1d63881e31dd62c6cbb030f1ba","6b49104db548c557a2f8aca0f0880297ce3a28185cc7930ae109b795b8be50d9","1b905f84eb4131fdbbaa1df421065c1eabca4eb7c0836a52e3975b9f1a57ca3c","2946da37f4281a3ae5953029d73da48da996766b7bd4fffa79e075c3d417e42c","6fc46a5d53ec8adf91eab29757341dafa54f9501c82289215f36a5bd43c6931c","984f1339e461e3a66b54b3689ff8726fdc621eae56063b9a9cef72aab669b208","13152f53e825223b643376711dc4ddbf3fc02d0f2f1ded4e78ff3abe860f563f","81404cf1eb59c372d341a4e4e9ccadaf97cd3fe7e8ff0d46e428d4dc4470bd5e","7ff73f6c8e866cf4d94c06eda365b1e24185a070f66d8d14191ae8a53943d1d9","fa7641ba6b65ee5cc712bb8e79d55aefabc3d9f77595370fde1b344b56798293","fbae464f654de7497f07a70e88429222c0b6a5fcc785f54809b6774ecba8f88b","fe0e99fc2ff678d100b516eef3c5989c5cc49ecac82569630944f6b561e7599e","0312f4bdc9c7ac185ae0fefc98a77d86121aaecb95ad620adec260ebb813af73","d90f57351d3732b66e3245e3e38c3327396a25a9d638c81313307110d99b5cdc","d7065c2df449f17ae78a3a7382deac2e388ada6bc0428c5747a4a80d0718e283","355d745d283e4f89bd785542bdba50ae1ab31ca5fa9618f2e221fbe12b9933cc","384fddf003645c4e2212b1a9cf7709ac125dc572e0fec9c9378a2bf9ba6369d3","bbcd46158e4cc0eccc0043c93b22cdc522148ab501cb09c90e96820f8d87d9ee","6d72d622f589ff41ab26a4cb2adcd01fcb3d271c26b2985ec29c17bcafc82649","6c703676e52e268bd57f00eb52f4ea47a8490b103ede7db6259a83e73cfbbc1b","c6b0ce58e6fd87a883d690422cbd04b16346cf268acbffc434df6c3f88716c65","ef64d9a231218149fd0ca3a1ef5c27332ec1048288f7703e12d1ae69efb2d941","af6a3de59db11678db7db38b4ec09e563013bfc0a7f7a06b89c57069bdacb700","a8044bef7f524d3a03f0666eb260818025177c1cbc6ed6c17c0c1639b7892a04","c9034cec3d059fd9345ab9b5f9c35ce88e1293b6cd0e7449422d91faf5a2bd2a","46f7c04e8a6fc8476293af851ad39f5dd275aad4a8ada115dc7831fd2a86644b","aaff0d72aa207f1558cbfb1a4748c5a5a9a7e0257abadc338cab6a019eb3c0c8","a1325c800e29589d0931806b33b36eb23d44b735138734d0e7280d524e814a10","d78cadcff2b7eee1aecf1fda437d844617e64507e640f47ea729c80aef632fe8","6f887e3afb0de4b6a4e79fb8512910736c1cb43909dabded07521a98fb3ab493","1e23c65f00a3bbb5a94f4a344e7d16762fcc7a9abaf7be7600a8cd38f22531d8","b428ef19e21c3a1895fef811262cc7ae0bde0274e77fe0426663c27ce86a1946","6996398eb3a1f3ee5bc2540f38f716ab941c9ad70fbdfc5a7d7eea87ba6c3cab","85a60dc56301151a1290f2935618f1c10642db39c9385d85bb56580f0481bdb3","a57dd6772ffab02f233287ba6a8f769e35906316605e82ed4f023f409319f2c8","a26ac33854e8d27ef4253f517861b287eb5e7f7c3eb53b3f8a06e28b0e3cfa23","c0052b367c598946d934581c9156f5bf06846a543bd8f1a419fbbedf0c49db5d","2360668f67c85a1ea07864282b797189555b9b9928be94685773ed8381302588","59fc39062aec81b871c29e9f246333d14d0c60ce3d5e3a01b3eb6336f69b6473","ccc6589b9029f32ed53b59cbe7bc71ce795ce0006a93b7cb2427f573856c74e9","821d22def6acf0fb49cdb3e0912881f47c5039f8dd730db1113bef321b9bb4ff","6c5c5605ae801d8af7781b57643e379106763ba7c30d7535e42f65e5ed957b58","31ac52f37d77ba63441903136b65f863071d22fa41ce8ca3bd12fdaa8fbae4b2","408d7457ea4c677bac1a16b0266eba485959ebd5bb49cbc2653d3dbeb0ac38a4","cf11f4e19b500ba6f488bdb61a1810c23e15d7bdb994e821d405470158ada1cf","9736f4d069b690ae03aab866b7d899230edb963c3291db0290373bf6891ed2f8","9d32399dfb6664d547d295c129375260a51ae3c066dc11d2b0917bcddab9f55e","9276db2dda8f3679dcc0ac11f32603d90d41486025fe5d7c5bde82598e70b953","61f41da9aaa809e5142b1d849d4e70f3e09913a5cb32c629bf6e61ef27967ff7","a431e70dbd282c8a6d7794d88c92fd552f6cef7f22c81b3db0acb422d7e03cac","c2eb1bc18bcba42184bd385ae433db3657f9f0f2804c40a3df3b233e448f6899"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"experimentalDecorators":true,"module":1,"noFallthroughCasesInSwitch":false,"noImplicitAny":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":false,"strictNullChecks":false,"target":4},"fileIdsList":[[61,66,249,642,647,652],[61,66,889],[61,66],[61,66,107,113,120,165,170,174,189,193,200,238,240,244],[61,66,165,189,201,238,244],[52,61,66],[52,53,54,55,61,66],[61,66,120,173,189,191,207,238,244],[61,66,239],[61,66,244],[61,66,176],[61,66,190,244],[61,66,145,244],[61,66,120,145,244],[61,66,148,244],[61,66,145],[61,66,120,144,244],[61,66,174,244],[61,66,145,146,147,148,149,150,151,152,153,154,155,156,157,158,175,177,178,179],[61,66,118,120,163,189,190,192,201,238,240,244,249],[61,66,118,120,163,189,192,201,208,240,244],[61,66,164,190],[61,66,107,113,161,244],[61,66,116,161,195,244],[61,66,120,161,162,190,239,244],[61,66,201,244],[61,66,193,201,244],[61,66,120,190,201,244],[61,66,116,161,190,195,201,244],[61,66,107,113,120,244],[61,66,107,113,114,116,120,161,195,197,201,244,249],[61,66,114,115,116,117,161,162,163,194,195,196,198,199,202],[61,66,240,244],[61,66,120,171,244],[61,66,170,201,240,244],[61,66,120,170,201,240],[61,66,171,172,173],[61,66,182,191,194,208,244],[61,66,194,244,246],[61,66,246,247],[51,56,61,66,118,120,144,165,170,174,176,180,189,192,200,201,207,238,240,243,244,245,248],[61,66,204],[61,66,204,205],[61,66,203,204,205,206],[61,66,120,144,180,202,244],[61,66,184,244],[61,66,182,192,208,244],[61,66,174,201,244],[61,66,120,182,244],[61,66,184,187,244],[61,66,181,182,183,184,185,186,188],[46,61,66],[47,61,66],[46,47,48,49,50,61,66],[61,66,118,244],[51,61,66,119,121,144,176,190,200,201,208,244],[61,66,119,191],[61,66,197,241,242],[61,66,121,192,244],[61,66,113,126],[61,66,121,128,192],[61,66,132,192,244],[61,66,107,113,192,244],[61,66,113,121,192,244],[61,66,140,191,244],[61,66,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143],[61,66,120,144,165,174,189,192,200,201,238,240,243],[61,66,107,113,244],[61,66,159,189,192,200,238,244],[61,66,159,165,189,200,238,244],[61,66,159,166,168,190,200,201,244],[61,66,159,160,166,167,168,169],[61,66,182,190,208,244],[51,56,61,66,120,121,174,176,181,182,184,190,192,193,201,202,207,244],[61,66,165,208,244],[61,66,192,244],[61,66,182,192,244],[61,66,201],[61,66,106,113,120,163,192,230,244],[61,66,193,208,209,231,232,233,234,235,236,237],[61,66,249,706,726],[61,66,249,706,708,714,721,726,727],[61,66,249,725],[61,66,249,706,713,721,722],[61,66,249,706,714,721],[61,66,706,708,713,714,721,722,725,726,727,728],[61,66,708,716],[61,66,107,113,249,708],[61,66,249,708],[61,66,107,113,249,706,707,708,712,714,722,729],[61,66,249,706,707,708,722],[61,66,707,712,715,716,717,718,719,720],[61,66,249,710,726,727],[61,66,249,708,709,726],[61,66,249,708,710,711,726],[61,66,249,708,711,722],[61,66,249,706,708,710,711,726,727],[61,66,709,710,711,723,724],[61,66,249,706,707,725],[61,66,884],[61,66,249,729],[61,66,249,729,879],[61,66,249,729,878,880],[61,66,249,729,878,879,880,881],[61,66,879,880,881,882,883,884,885,886],[61,66,249],[61,66,637,638,639,640,641],[61,66,592,637],[61,66,249,592],[61,66,249,592,637],[61,66,249,592,636],[61,66,249,650],[61,66,651],[61,66,644,645],[61,66,643,646],[61,66,729],[61,66,249,729,730],[61,66,249,731],[61,66,249,729,732,733],[61,66,729,730,731,732,733,734,735],[61,66,498,500],[61,66,529],[61,66,449,529],[61,66,530,531],[61,66,251,501,532,534,535],[61,66,445,498],[61,66,533],[61,66,498,499],[61,66,499,500],[61,66,498],[61,66,478,485],[61,66,592],[61,66,502,503,504,505,506,507,508,509,510,511,512,513,514,515],[61,66,454,485],[61,66,478],[61,66,451,498,592],[61,66,520,521,522,523,524,525,526,527],[61,66,456],[61,66,498,592],[61,66,516,519,528],[61,66,517,518],[61,66,489],[61,66,456,457,458,459],[61,66,537],[61,66,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558],[61,66,561],[61,66,95,113,560],[61,66,498,566],[61,66,445,563],[61,66,566,567,568],[61,66,498,563],[61,66,564,565],[61,66,113],[61,66,250,460,498,529,536,559,562,569,583,587,589,591],[61,66,255],[61,66,255,445],[61,66,454,571],[61,66,448,573],[61,66,445,449],[61,66,255,498],[61,66,453,454],[61,66,465],[61,66,467,468,469,470,471],[61,66,460,473,477,478],[61,66,479,480],[61,66,252,253,254,255,256,446,447,448,449,450,451,452,453,454,455,465,466,472,477,478,481,482,483,485,493,494,495,496,497],[61,66,476],[61,66,461,462,463,464],[61,66,454,461,462],[61,66,454,460],[61,66,454,463],[61,66,454,489],[61,66,484,486,487,488,489,490,491,492],[61,66,252,454],[61,66,485],[61,66,252,454,484,488,490],[61,66,462],[61,66,486],[61,66,454,485,486,487],[61,66,475],[61,66,454,458,475,493],[61,66,473,474,476],[61,66,450,452,466,473,478,479,494,495,498],[61,66,256,450,452,455,494,495],[61,66,459],[61,66,445],[61,66,455],[61,66,570,576,577,578,579,580,581,582],[61,66,455,498,576],[61,66,455,575],[61,66,455,575,592],[61,66,448,454,455,571,572,573,574,575],[61,66,445,498,571,572],[61,66,585],[61,66,529,571],[61,66,584,586],[61,66,475,588],[61,66,484],[61,66,460,498],[61,66,590],[61,66,473,477,498,592],[61,66,593],[61,66,498,592,601,602],[61,66,597,600,601],[61,66,605,606],[61,66,592,594,608],[61,66,609],[61,66,601],[61,66,608,611],[61,66,250,594,603,604,607,610,612,615,620,623,624,625,627,633,635],[61,66,498,595],[61,66,454,482,592,595,596,597,600,601,603,636],[61,66,597,598,599,601,614,619],[61,66,254,454,482,592,600,601],[61,66,613],[61,66,592,598,600,617],[61,66,498,592,600],[61,66,592,596,597,599,616,618],[61,66,592,598,600,601],[61,66,454,592],[61,66,454,498,598,599,601],[61,66,600],[61,66,482],[61,66,461,465,498,621],[61,66,622],[61,66,498,598],[61,66,454,498,592,598,600,601,617],[61,66,466,473,477,592,594,598,603,624],[61,66,476,477,592,593,626],[61,66,629,631,632],[61,66,628],[61,66,630],[61,66,592,597,600,629],[61,66,254,454,482,498,592,598,600,603,615],[61,66,634],[61,66,592,659,660],[61,66,659,660],[61,66,659],[61,66,673],[61,66,592,659],[61,66,657,658,661,662,663,664,665,666,667,668,669,670,671,672,674,675,676,677,678,679],[61,66,659,683],[61,66,250,680,683,684,685,690,692],[61,66,659,681,682],[61,66,592,683],[61,66,686,687,688,689],[61,66,691],[61,66,693],[61,66,214,215],[61,66,215,216,217,218],[61,66,113,215,217],[61,66,214,216],[61,66,79,113],[61,66,79,113,210],[61,66,210,211,212,213],[61,66,210,212],[61,66,211],[61,66,95,113,219,220,221,224],[61,66,220,221,223],[61,66,78,113,219,220,221,222],[61,66,221],[61,66,219,220],[61,66,113,219],[61,66,757],[61,66,648],[61,66,889,890,891,892,893],[61,66,889,891],[61,66,81,113,750],[61,66,81,113],[61,66,896,899],[61,66,896,897,898],[61,66,899],[61,66,78,81,113,742,743,744],[61,66,743,745,749,751],[61,66,902],[61,66,903],[61,66,907,911],[61,63,66],[61,65,66],[61,66,71,98],[61,66,67,78,79,86,95,106],[61,66,67,68,78,86],[57,58,61,66],[61,66,69,107],[61,66,70,71,79,87],[61,66,71,95,103],[61,66,72,74,78,86],[61,66,73],[61,66,74,75],[61,66,78],[61,66,77,78],[61,65,66,78],[61,66,78,79,80,95,106],[61,66,78,79,80,95],[61,66,78,81,86,95,106],[61,66,78,79,81,82,86,95,103,106],[61,66,81,83,95,103,106],[61,66,78,84],[61,66,85,106,111],[61,66,74,78,86,95],[61,66,87],[61,66,88],[61,65,66,89],[61,66,90,105,111],[61,66,91],[61,66,92],[61,66,78,93],[61,66,93,94,107,109],[61,66,78,95,96,97],[61,66,95,97],[61,66,95,96],[61,66,98],[61,66,99],[61,66,78,101,102],[61,66,101,102],[61,66,71,86,95,103],[61,66,104],[66],[59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112],[61,66,86,105],[61,66,81,92,106],[61,66,71,107],[61,66,95,108],[61,66,109],[61,66,110],[61,66,71,78,80,89,95,106,109,111],[61,66,95,112],[61,66,918,956],[61,66,918,941,956],[61,66,917,956],[61,66,956],[61,66,918],[61,66,918,942,956],[61,66,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955],[61,66,942,956],[61,66,79,95,113],[61,66,81,113,746,748],[61,66,79,95,113,747],[61,66,966],[61,66,895,914,958,960,967],[61,66,82,86,95,103,113],[61,66,79,81,82,83,86,95,914,959,960,961,963,964,965],[61,66,81,95,966],[61,66,79,959,960],[61,66,106,959],[61,66,967],[61,66,969],[61,66,113,226,227,228],[61,66,226,227],[61,66,226],[61,66,113,225],[61,66,81,95,113],[61,66,229],[61,66,905,908],[61,66,905,908,909,910],[61,66,907],[61,66,78,95,103,703,704,705],[61,66,761,762],[61,66,906],[61,66,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,273,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,313,314,315,316,317,318,319,320,321,322,323,324,326,327,328,329,330,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,380,389,391,392,393,394,395,396,398,399,401,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444],[61,66,302],[61,66,260,261],[61,66,257,258,259,261],[61,66,258,261],[61,66,261,302],[61,66,257,261,379],[61,66,259,260,261],[61,66,257,261],[61,66,261],[61,66,260],[61,66,257,260,302],[61,66,258,260,261,418],[61,66,260,261,418],[61,66,260,426],[61,66,258,260,261],[61,66,270],[61,66,293],[61,66,314],[61,66,260,261,302],[61,66,261,309],[61,66,260,261,302,320],[61,66,260,261,320],[61,66,261,361],[61,66,257,261,380],[61,66,386,388],[61,66,257,261,379,386,387],[61,66,379,380,388],[61,66,386],[61,66,257,261,386,387,388],[61,66,402],[61,66,397],[61,66,400],[61,66,258,260,380,381,382,383],[61,66,302,380,381,382,383],[61,66,380,382],[61,66,260,381,382,384,385,389],[61,66,257,260],[61,66,261,404],[61,66,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377],[61,66,390],[61,66,698],[61,66,78,113,697,699,700],[61,66,701,702],[61,66,697],[61,66,649],[61,66,758,876],[61,66,79,113,876],[61,66,759,874,875,876,877],[61,66,875],[61,66,764,765,766,767,873],[61,66,764],[61,66,764,872],[61,66,872,874],[61,66,759,760,763,875],[61,66,768,769,770,771,772,773,774,775,776,777,778,779,781,782,783,785,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871],[61,66,819],[61,66,846],[61,66,847],[61,66,774,806],[61,66,773,786,798,807],[61,66,806],[61,66,780],[61,66,850],[61,66,776],[61,66,816],[61,66,773,780,798],[61,66,773],[61,66,780,827,865],[61,66,830],[61,66,835],[61,66,833],[61,66,837],[61,66,779],[61,66,841],[61,66,818],[61,66,768,776,778,779],[61,66,798],[61,66,768,780,821,841],[61,66,770],[61,66,769,770,772,779,780,821],[61,66,854],[61,66,852],[61,66,782,825],[61,66,768],[61,66,780,782,783,784,785,786],[61,66,782,783,784],[61,66,773,780],[61,66,785],[61,66,770,796],[61,66,780,785],[61,66,856],[61,66,774],[61,66,850,859,862],[61,66,774,776],[61,66,774,776,833],[61,66,777,780],[61,66,592,654],[61,66,249,592,636,642,654,655,741,753,754],[61,66,636,694,751,755],[61,66,887],[61,66,694],[61,66,249,694,695],[61,66,249,694,696],[61,66,592,694,695,696,737,738,739],[61,66,592,642,695,696,738,740],[61,66,249,592,642,656,695,696,736,737],[61,66,378,445,592,752],[61,66,78,81,106,113,971,972,973],[61,66,78,113],[61,66,977,979,980,981,982,983,984,985,986,987,988,989],[61,66,977,978,980,981,982,983,984,985,986,987,988,989],[61,66,978,979,980,981,982,983,984,985,986,987,988,989],[61,66,977,978,979,981,982,983,984,985,986,987,988,989],[61,66,977,978,979,980,982,983,984,985,986,987,988,989],[61,66,977,978,979,980,981,983,984,985,986,987,988,989],[61,66,977,978,979,980,981,982,984,985,986,987,988,989],[61,66,977,978,979,980,981,982,983,985,986,987,988,989],[61,66,977,978,979,980,981,982,983,984,986,987,988,989],[61,66,977,978,979,980,981,982,983,984,985,987,988,989],[61,66,977,978,979,980,981,982,983,984,985,986,988,989],[61,66,977,978,979,980,981,982,983,984,985,986,987,989],[61,66,977,978,979,980,981,982,983,984,985,986,987,988],[61,66,95,113],[61,66,992],[61,66,993,994],[61,66,993],[61,66,995],[61,66,1003],[61,66,991,1008],[61,66,1003,1023],[61,66,1003,1042],[61,66,1042],[61,66,1024,1043,1044,1045],[61,66,1017,1019,1023,1036],[61,66,1017,1018,1019,1020,1021,1022],[61,66,1016],[61,66,1019,1025,1026],[61,66,1025,1027],[61,66,1026,1027],[61,66,1017,1020,1023],[61,66,1017,1036],[61,66,1017,1020,1023,1025,1027,1037,1038,1039,1040,1041],[61,66,1017,1023,1025,1029,1036],[61,66,1017,1023,1036],[61,66,1017,1023,1028,1029,1030,1031,1033,1034,1035],[61,66,1023,1031,1036],[61,66,1031,1032],[61,66,1017,1029,1031,1033],[61,66,1003,1004,1047],[61,66,1000,1001,1002],[61,66,1287],[61,66,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1069,1070,1071,1072,1073,1074,1075,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1190,1191,1192,1193,1194,1195,1196,1197,1198,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1277,1278,1279,1282,1283,1284,1285,1286],[61,66,1052,1105,1106,1127],[61,66,1052,1103,1104,1110],[61,66,1052,1064,1105,1106,1125,1126],[61,66,1105],[61,66,1052,1100,1101,1102],[61,66,1103],[61,66,1052,1103],[61,66,1106,1128,1129],[61,66,1130],[61,66,1106,1128],[61,66,1129,1130],[61,66,1133],[61,66,1106,1110,1111],[61,66,1069,1096,1106,1137],[61,66,1107],[61,66,1107,1133],[61,66,1052,1111,1112],[61,66,1052,1054,1058,1060,1061,1064,1084,1110,1111,1113],[61,66,1085,1113],[61,66,1085],[61,66,1083],[61,66,1052,1084],[61,66,1083,1111,1112,1113],[61,66,1054,1055,1056,1064,1068,1069,1082,1085,1096,1098,1105,1107,1110,1111,1112],[61,66,1056,1058,1097,1106,1107,1110],[61,66,1052,1067],[61,66,1067,1069,1091,1096,1136],[61,66,1058,1110],[61,66,1058,1147],[61,66,1161],[61,66,1058,1159],[61,66,1058,1160],[61,66,1058,1114,1161],[61,66,1148],[61,66,1110,1147],[61,66,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157],[61,66,1068,1106],[61,66,1170],[61,66,1172],[61,66,1058,1085,1110,1147,1161],[61,66,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189],[61,66,1058,1085],[61,66,1085,1110],[61,66,1085,1161],[61,66,1163,1175],[61,66,1085,1110,1147],[61,66,1106,1110,1115,1191,1210],[61,66,1114,1192],[61,66,1060,1114,1192],[61,66,1106,1115,1192],[61,66,1107,1192],[61,66,1106,1111,1115,1191,1204],[61,66,1115,1192],[61,66,1106,1111,1114,1115,1198,1199],[61,66,1063,1192],[61,66,1106,1111,1115,1196],[61,66,1104,1106,1111,1192],[61,66,1088,1106,1111,1115,1192],[61,66,1088,1115],[61,66,1115,1218],[61,66,1088,1106,1110,1115,1203],[61,66,1087,1135],[61,66,1088,1110,1114,1115],[61,66,1087,1106,1114],[61,66,1088,1217],[61,66,1058,1073,1086,1088,1107,1111],[61,66,1088,1115,1195],[61,66,1087,1133],[61,66,1088,1106,1110,1114,1115,1213],[61,66,1105,1221,1222],[61,66,1221,1222],[61,66,1085,1141,1221,1222],[61,66,1221,1222,1224],[61,66,1136,1221,1222],[61,66,1221,1222,1226],[61,66,1163,1221,1222],[61,66,1222],[61,66,1221],[61,66,1067,1068,1221,1222],[61,66,1067,1068,1085,1105,1106,1141,1221,1222],[61,66,1067,1221,1222],[61,66,1068,1114,1115],[61,66,1254],[61,66,1052,1063,1064,1066,1067,1096,1114,1115],[61,66,1068,1199,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255],[61,66,1052,1067,1068,1114,1115],[61,66,1052,1067,1068],[61,66,1067,1068,1110],[61,66,1052,1058,1067,1068,1114,1115],[61,66,1052,1058,1067,1068],[61,66,1058,1067,1114,1245],[61,66,1067,1068,1114,1115],[61,66,1242],[61,66,1052,1065,1068],[61,66,1058],[61,66,1059,1061,1063,1106,1110,1111,1113],[61,66,1113,1115],[61,66,1110],[61,66,1054,1110,1111],[61,66,1060,1061,1063,1106,1110,1111,1258],[61,66,1110,1111],[61,66,1054],[61,66,1054,1055,1110,1112],[61,66,1060,1061,1062,1110,1111,1112],[61,66,1055,1110,1111],[61,66,1060,1061,1063,1110,1111],[61,66,1060,1063,1110,1111],[61,66,1058,1060,1063,1110],[61,66,1112,1113],[61,66,1054,1055,1058,1084,1107,1108,1109,1111,1112,1113],[61,66,1054,1058,1111,1113],[61,66,1099],[61,66,1106],[61,66,1068,1085,1111,1113,1114,1210],[61,66,1098,1106,1107],[61,66,1068,1085,1098,1106],[61,66,1068,1085,1191],[61,66,1104,1111,1226],[61,66,1068,1085,1110,1111,1210,1264],[61,66,1058,1085,1098,1106,1256],[61,66,1096],[61,66,1067,1091,1096,1136],[61,66,1064,1067],[61,66,1091],[61,66,1052,1064,1067,1073,1090],[61,66,1052,1058,1060,1067,1068,1069,1070,1071,1073,1074,1075,1079,1080,1085,1086,1089,1091,1092,1093,1094,1095,1106,1107,1110,1114,1115],[61,66,1065],[61,66,1070,1084,1113],[61,66,1068,1070,1071,1079,1085,1106,1113,1276],[61,66,1070,1071,1080],[61,66,1068,1075,1107],[61,66,1070],[61,66,1080,1085,1106,1113,1276],[61,66,1079],[61,66,1070,1071],[61,66,1072,1078,1096],[61,66,1068,1069,1070,1071,1079,1096,1274,1280,1281],[61,66,1068,1069,1075,1079,1082,1085,1106,1107],[61,66,1052,1069,1070,1081,1088,1096,1107],[61,66,1052,1068,1070,1071,1073],[61,66,1070,1071,1074,1075,1076,1080],[61,66,1077,1079],[61,66,1082,1092],[61,66,1064,1082,1092,1107],[61,66,1114,1115],[61,66,1057,1114],[61,66,1057,1067,1068,1096,1106,1107,1114],[61,66,1052,1058,1064,1112],[61,66,1114],[61,66,67,111,113]],"referencedMap":[[653,1],[891,2],[889,3],[201,4],[176,5],[52,3],[54,6],[55,6],[53,6],[56,7],[239,8],[240,9],[152,10],[178,11],[156,10],[157,10],[147,12],[153,13],[158,10],[154,13],[155,10],[151,14],[150,13],[148,14],[149,15],[146,16],[145,17],[175,18],[177,11],[179,3],[180,19],[164,20],[190,21],[165,22],[162,23],[196,24],[163,25],[116,26],[194,27],[117,26],[114,10],[195,28],[202,29],[115,10],[161,30],[198,31],[200,32],[199,10],[120,33],[245,10],[172,34],[171,35],[173,36],[174,37],[118,3],[246,38],[247,39],[248,40],[249,41],[205,42],[204,10],[206,43],[203,3],[207,44],[181,45],[186,46],[183,47],[184,10],[182,48],[185,49],[188,50],[189,51],[47,52],[50,53],[48,53],[46,3],[49,53],[51,54],[187,3],[119,55],[191,56],[192,57],[242,10],[241,10],[197,10],[243,58],[128,59],[125,59],[127,60],[138,59],[124,59],[122,59],[139,59],[137,59],[129,61],[130,59],[136,59],[132,59],[131,59],[135,62],[133,59],[140,59],[142,59],[123,59],[134,59],[121,63],[126,64],[143,65],[141,59],[144,66],[244,67],[159,68],[160,69],[166,70],[167,10],[168,10],[169,71],[170,72],[236,73],[208,74],[209,75],[193,76],[235,10],[234,77],[232,78],[233,78],[231,79],[238,80],[237,12],[727,81],[722,82],[726,83],[728,3],[714,84],[713,85],[729,86],[717,87],[716,88],[720,89],[718,87],[715,90],[712,91],[719,87],[707,3],[721,92],[711,93],[710,94],[724,95],[723,96],[709,97],[725,98],[708,99],[885,100],[879,101],[884,101],[883,102],[881,103],[882,104],[886,100],[887,105],[880,106],[642,107],[639,108],[640,109],[638,110],[641,109],[637,111],[651,112],[652,113],[646,114],[643,3],[645,3],[647,115],[730,116],[731,117],[733,106],[735,118],[734,119],[732,101],[736,120],[251,3],[501,121],[530,122],[531,123],[532,124],[536,125],[533,126],[534,127],[499,3],[500,128],[535,129],[514,3],[502,3],[503,130],[504,131],[505,3],[506,132],[516,133],[507,3],[508,134],[509,3],[510,3],[511,130],[512,130],[513,130],[515,135],[523,136],[525,3],[522,3],[528,137],[526,3],[524,3],[520,138],[521,139],[527,3],[529,140],[517,3],[519,141],[518,142],[457,3],[460,143],[456,3],[458,3],[459,3],[553,144],[538,144],[545,144],[542,144],[555,144],[546,144],[552,144],[537,3],[556,144],[559,145],[550,144],[540,144],[558,144],[543,144],[541,144],[551,144],[547,144],[557,144],[544,144],[554,144],[539,144],[549,144],[548,144],[562,146],[561,147],[560,3],[567,148],[568,149],[569,150],[564,151],[566,152],[565,153],[592,154],[252,3],[253,3],[254,3],[256,155],[446,156],[447,155],[571,3],[473,3],[474,3],[572,157],[448,3],[573,3],[574,158],[255,3],[450,159],[451,3],[449,160],[452,159],[453,3],[455,161],[466,162],[467,3],[472,163],[468,3],[469,3],[470,3],[471,3],[479,164],[481,165],[480,3],[498,166],[482,3],[483,3],[626,167],[465,168],[463,169],[461,170],[462,171],[464,3],[490,172],[484,3],[493,173],[486,174],[491,175],[489,176],[492,177],[487,178],[488,179],[476,180],[494,181],[477,182],[496,183],[497,184],[485,3],[454,3],[478,185],[495,186],[570,187],[583,188],[577,189],[578,190],[581,191],[580,191],[579,190],[582,190],[576,192],[584,193],[586,194],[585,195],[587,196],[588,180],[589,197],[475,3],[590,198],[575,199],[591,200],[593,201],[594,202],[603,203],[604,3],[605,3],[606,204],[607,205],[609,206],[610,207],[611,208],[608,202],[612,209],[636,210],[596,211],[598,212],[620,213],[617,214],[614,215],[613,3],[618,216],[601,217],[619,218],[599,219],[595,220],[600,221],[597,222],[615,223],[622,224],[623,225],[621,226],[624,227],[625,228],[627,229],[633,230],[602,132],[629,231],[628,132],[631,232],[630,3],[632,233],[616,234],[635,235],[634,132],[657,3],[658,3],[661,236],[662,3],[663,3],[665,3],[664,3],[679,3],[666,3],[667,237],[668,3],[669,3],[670,238],[671,236],[672,3],[674,239],[675,236],[676,240],[677,238],[678,3],[680,241],[684,242],[693,243],[683,244],[659,3],[673,240],[681,3],[682,3],[685,245],[690,246],[686,132],[687,132],[688,132],[689,132],[660,3],[691,3],[692,247],[694,248],[216,249],[219,250],[218,251],[217,252],[215,253],[211,254],[214,255],[213,256],[212,257],[210,253],[225,258],[224,259],[223,260],[222,261],[221,262],[220,263],[758,264],[649,265],[648,3],[757,3],[894,266],[890,2],[892,267],[893,2],[751,268],[750,269],[895,3],[900,270],[899,271],[898,272],[896,3],[745,273],[752,274],[901,253],[746,3],[902,3],[903,275],[904,276],[912,277],[897,3],[913,3],[914,3],[747,3],[63,278],[64,278],[65,279],[66,280],[67,281],[68,282],[59,283],[57,3],[58,3],[69,284],[70,285],[71,286],[72,287],[73,288],[74,289],[75,289],[76,290],[77,291],[78,292],[79,293],[80,294],[62,3],[81,295],[82,296],[83,297],[84,298],[85,299],[86,300],[87,301],[88,302],[89,303],[90,304],[91,305],[92,306],[93,307],[94,308],[95,309],[97,310],[96,311],[98,312],[99,313],[100,3],[101,314],[102,315],[103,316],[104,317],[61,318],[60,3],[113,319],[105,320],[106,321],[107,322],[108,323],[109,324],[110,325],[111,326],[112,327],[915,3],[916,3],[743,3],[744,3],[941,328],[942,329],[918,330],[921,331],[939,328],[940,328],[930,328],[929,332],[927,328],[922,328],[935,328],[933,328],[937,328],[917,328],[934,328],[938,328],[923,328],[924,328],[936,328],[919,328],[925,328],[926,328],[928,328],[932,328],[943,333],[931,328],[920,328],[956,334],[955,3],[950,333],[952,335],[951,333],[944,333],[945,333],[947,333],[949,333],[953,335],[954,335],[946,335],[948,335],[742,336],[749,337],[748,338],[957,3],[967,339],[958,3],[961,340],[965,341],[966,342],[959,343],[963,344],[960,345],[968,346],[969,3],[970,347],[644,3],[563,3],[962,3],[229,348],[228,349],[227,350],[226,351],[964,352],[230,353],[905,3],[909,354],[911,355],[910,354],[908,356],[706,357],[704,3],[705,3],[763,358],[761,3],[762,3],[907,359],[906,3],[250,3],[445,360],[418,3],[396,361],[394,361],[309,362],[260,363],[259,364],[395,365],[380,366],[302,367],[258,368],[257,369],[444,364],[409,370],[408,370],[320,371],[416,362],[417,362],[419,372],[420,362],[421,369],[422,362],[393,362],[423,362],[424,373],[425,362],[426,370],[427,374],[428,362],[429,362],[430,362],[431,362],[432,370],[433,362],[434,362],[435,362],[436,362],[437,375],[438,362],[439,362],[440,362],[441,362],[442,362],[262,369],[263,369],[264,369],[265,369],[266,369],[267,369],[268,369],[269,362],[271,376],[272,369],[270,369],[273,369],[274,369],[275,369],[276,369],[277,369],[278,369],[279,362],[280,369],[281,369],[282,369],[283,369],[284,369],[285,362],[286,369],[287,369],[288,369],[289,369],[290,369],[291,369],[292,362],[294,377],[293,369],[295,369],[296,369],[297,369],[298,369],[299,375],[300,362],[301,362],[315,378],[303,379],[304,369],[305,369],[306,362],[307,369],[308,369],[310,380],[311,369],[312,369],[313,369],[314,369],[316,369],[317,369],[318,369],[319,369],[321,381],[322,369],[323,369],[324,369],[325,362],[326,369],[327,382],[328,382],[329,382],[330,362],[331,369],[332,369],[333,369],[338,369],[334,369],[335,362],[336,369],[337,362],[339,369],[340,369],[341,369],[342,369],[343,369],[344,369],[345,362],[346,369],[347,369],[348,369],[349,369],[350,369],[351,369],[352,369],[353,369],[354,369],[355,369],[356,369],[357,369],[358,369],[359,369],[360,369],[361,369],[362,383],[363,369],[364,369],[365,369],[366,369],[367,369],[368,369],[369,362],[370,362],[371,362],[372,362],[373,362],[374,369],[375,369],[376,369],[377,369],[443,362],[379,384],[402,385],[397,385],[388,386],[386,387],[400,388],[389,389],[403,390],[398,391],[399,388],[401,392],[387,3],[392,3],[384,393],[385,394],[382,3],[383,395],[381,369],[390,396],[261,397],[410,3],[411,3],[412,3],[413,3],[414,3],[415,3],[404,3],[407,370],[406,3],[405,398],[378,399],[391,400],[699,401],[701,402],[697,3],[700,401],[702,3],[703,403],[698,404],[650,405],[8,3],[9,3],[13,3],[12,3],[2,3],[14,3],[15,3],[16,3],[17,3],[18,3],[19,3],[20,3],[21,3],[3,3],[4,3],[45,3],[25,3],[22,3],[23,3],[24,3],[26,3],[27,3],[28,3],[5,3],[29,3],[30,3],[31,3],[32,3],[6,3],[36,3],[33,3],[34,3],[35,3],[37,3],[7,3],[38,3],[43,3],[44,3],[39,3],[40,3],[41,3],[42,3],[1,3],[11,3],[10,3],[759,406],[877,407],[878,408],[764,409],[874,410],[765,411],[766,411],[767,411],[873,412],[875,413],[876,414],[760,3],[872,415],[805,3],[820,416],[770,3],[847,417],[849,418],[848,418],[807,419],[806,3],[809,420],[808,421],[786,3],[850,422],[854,423],[852,423],[772,3],[784,424],[817,425],[816,3],[828,426],[774,427],[812,3],[867,428],[869,3],[832,429],[836,430],[834,431],[838,432],[843,433],[844,434],[845,435],[862,427],[780,436],[799,437],[779,3],[773,3],[842,438],[841,3],[818,422],[815,3],[864,3],[823,439],[822,440],[851,423],[855,441],[853,442],[868,3],[826,443],[825,3],[796,444],[787,445],[788,3],[785,446],[813,447],[814,447],[821,3],[771,3],[782,3],[798,3],[830,3],[831,448],[870,449],[792,422],[794,450],[856,418],[858,451],[857,451],[783,3],[768,3],[797,3],[795,422],[835,427],[829,3],[866,3],[791,3],[789,452],[790,3],[793,422],[833,3],[824,3],[863,453],[803,3],[800,454],[801,454],[802,454],[819,435],[776,3],[859,423],[861,441],[860,442],[846,422],[865,3],[839,455],[827,3],[811,3],[775,3],[778,422],[871,3],[840,3],[769,3],[810,3],[804,3],[781,456],[837,427],[777,454],[655,457],[755,458],[654,132],[754,132],[756,459],[888,460],[656,3],[737,3],[739,461],[696,462],[695,463],[740,464],[741,465],[738,466],[753,467],[974,468],[975,3],[972,3],[976,469],[978,470],[979,471],[977,472],[980,473],[981,474],[982,475],[983,476],[984,477],[985,478],[986,479],[987,480],[988,481],[989,482],[973,352],[990,483],[971,290],[991,3],[993,484],[995,485],[994,486],[992,3],[996,487],[997,3],[998,3],[999,3],[1004,488],[1005,3],[1006,3],[1007,3],[1009,489],[1010,3],[1011,3],[1012,3],[1002,3],[1013,488],[1014,488],[1015,488],[1024,490],[1043,491],[1044,490],[1045,492],[1046,493],[1037,494],[1019,3],[1023,495],[1016,3],[1017,496],[1027,497],[1026,498],[1025,499],[1021,3],[1018,3],[1040,3],[1039,500],[1038,3],[1041,501],[1042,502],[1022,3],[1020,3],[1030,503],[1028,504],[1031,3],[1036,505],[1032,506],[1029,3],[1033,507],[1034,508],[1035,504],[1048,509],[1000,3],[1003,510],[1049,3],[1050,3],[1051,3],[1288,511],[1053,3],[1287,512],[1126,513],[1105,514],[1127,515],[1125,3],[1124,516],[1103,517],[1123,3],[1122,3],[1121,518],[1120,519],[1119,519],[1118,519],[1117,519],[1116,519],[1130,520],[1132,521],[1128,3],[1129,522],[1131,523],[1139,524],[1107,525],[1138,526],[1135,527],[1133,527],[1134,528],[1052,3],[1113,529],[1085,530],[1145,3],[1064,3],[1144,3],[1143,531],[1141,532],[1142,533],[1083,534],[1084,535],[1056,3],[1106,536],[1098,537],[1140,3],[1164,3],[1165,538],[1167,539],[1166,3],[1147,540],[1159,541],[1163,542],[1160,543],[1161,544],[1162,545],[1149,546],[1150,547],[1151,541],[1152,547],[1158,548],[1148,541],[1153,541],[1154,547],[1155,541],[1156,547],[1157,541],[1146,549],[1168,532],[1169,532],[1171,550],[1170,532],[1173,551],[1174,532],[1175,552],[1190,553],[1176,551],[1177,554],[1178,551],[1179,555],[1180,532],[1172,532],[1181,532],[1182,556],[1183,532],[1184,551],[1185,557],[1186,532],[1187,532],[1188,558],[1189,532],[1211,559],[1212,560],[1208,561],[1207,562],[1206,563],[1205,564],[1201,565],[1200,566],[1209,567],[1197,568],[1202,565],[1194,569],[1193,570],[1216,571],[1219,572],[1204,573],[1203,574],[1198,575],[1220,572],[1088,576],[1218,577],[1087,578],[1196,579],[1195,580],[1215,571],[1214,581],[1213,580],[1223,582],[1239,583],[1232,584],[1238,3],[1225,585],[1228,586],[1227,587],[1236,583],[1235,588],[1234,583],[1233,583],[1221,589],[1237,3],[1222,590],[1231,591],[1230,592],[1229,593],[1254,594],[1255,595],[1068,596],[1256,597],[1199,598],[1251,599],[1252,600],[1250,598],[1253,601],[1249,602],[1247,601],[1246,603],[1245,601],[1248,601],[1244,604],[1243,605],[1242,606],[1240,594],[1241,604],[1260,607],[1060,608],[1114,609],[1109,610],[1055,611],[1259,612],[1099,3],[1062,613],[1261,614],[1112,613],[1111,615],[1063,616],[1054,617],[1097,618],[1061,619],[1108,610],[1217,610],[1059,620],[1058,621],[1110,622],[1073,623],[1102,624],[1100,624],[1101,624],[1257,624],[1104,625],[1082,625],[1263,626],[1262,627],[1191,628],[1266,629],[1192,629],[1210,628],[1267,628],[1264,630],[1265,631],[1258,632],[1270,633],[1137,634],[1269,635],[1268,636],[1091,637],[1096,638],[1272,3],[1066,639],[1065,3],[1271,3],[1276,640],[1281,641],[1273,642],[1070,3],[1274,643],[1280,633],[1275,511],[1071,644],[1277,645],[1278,3],[1080,646],[1279,647],[1081,3],[1079,648],[1282,649],[1075,3],[1086,650],[1072,3],[1089,651],[1074,652],[1077,653],[1078,654],[1076,3],[1092,3],[1283,655],[1093,656],[1057,657],[1284,658],[1069,659],[1286,538],[1224,538],[1136,538],[1226,538],[1095,538],[1094,538],[1090,538],[1067,660],[1285,538],[1115,661],[1289,3],[1290,662],[1291,3],[1008,3],[1001,3],[1047,3]],"exportedModulesMap":[[653,1],[891,2],[889,3],[201,4],[176,5],[52,3],[54,6],[55,6],[53,6],[56,7],[239,8],[240,9],[152,10],[178,11],[156,10],[157,10],[147,12],[153,13],[158,10],[154,13],[155,10],[151,14],[150,13],[148,14],[149,15],[146,16],[145,17],[175,18],[177,11],[179,3],[180,19],[164,20],[190,21],[165,22],[162,23],[196,24],[163,25],[116,26],[194,27],[117,26],[114,10],[195,28],[202,29],[115,10],[161,30],[198,31],[200,32],[199,10],[120,33],[245,10],[172,34],[171,35],[173,36],[174,37],[118,3],[246,38],[247,39],[248,40],[249,41],[205,42],[204,10],[206,43],[203,3],[207,44],[181,45],[186,46],[183,47],[184,10],[182,48],[185,49],[188,50],[189,51],[47,52],[50,53],[48,53],[46,3],[49,53],[51,54],[187,3],[119,55],[191,56],[192,57],[242,10],[241,10],[197,10],[243,58],[128,59],[125,59],[127,60],[138,59],[124,59],[122,59],[139,59],[137,59],[129,61],[130,59],[136,59],[132,59],[131,59],[135,62],[133,59],[140,59],[142,59],[123,59],[134,59],[121,63],[126,64],[143,65],[141,59],[144,66],[244,67],[159,68],[160,69],[166,70],[167,10],[168,10],[169,71],[170,72],[236,73],[208,74],[209,75],[193,76],[235,10],[234,77],[232,78],[233,78],[231,79],[238,80],[237,12],[727,81],[722,82],[726,83],[728,3],[714,84],[713,85],[729,86],[717,87],[716,88],[720,89],[718,87],[715,90],[712,91],[719,87],[707,3],[721,92],[711,93],[710,94],[724,95],[723,96],[709,97],[725,98],[708,99],[885,100],[879,101],[884,101],[883,102],[881,103],[882,104],[886,100],[887,105],[880,106],[642,107],[639,108],[640,109],[638,110],[641,109],[637,111],[651,112],[652,113],[646,114],[643,3],[645,3],[647,115],[730,116],[731,117],[733,106],[735,118],[734,119],[732,101],[736,120],[251,3],[501,121],[530,122],[531,123],[532,124],[536,125],[533,126],[534,127],[499,3],[500,128],[535,129],[514,3],[502,3],[503,130],[504,131],[505,3],[506,132],[516,133],[507,3],[508,134],[509,3],[510,3],[511,130],[512,130],[513,130],[515,135],[523,136],[525,3],[522,3],[528,137],[526,3],[524,3],[520,138],[521,139],[527,3],[529,140],[517,3],[519,141],[518,142],[457,3],[460,143],[456,3],[458,3],[459,3],[553,144],[538,144],[545,144],[542,144],[555,144],[546,144],[552,144],[537,3],[556,144],[559,145],[550,144],[540,144],[558,144],[543,144],[541,144],[551,144],[547,144],[557,144],[544,144],[554,144],[539,144],[549,144],[548,144],[562,146],[561,147],[560,3],[567,148],[568,149],[569,150],[564,151],[566,152],[565,153],[592,154],[252,3],[253,3],[254,3],[256,155],[446,156],[447,155],[571,3],[473,3],[474,3],[572,157],[448,3],[573,3],[574,158],[255,3],[450,159],[451,3],[449,160],[452,159],[453,3],[455,161],[466,162],[467,3],[472,163],[468,3],[469,3],[470,3],[471,3],[479,164],[481,165],[480,3],[498,166],[482,3],[483,3],[626,167],[465,168],[463,169],[461,170],[462,171],[464,3],[490,172],[484,3],[493,173],[486,174],[491,175],[489,176],[492,177],[487,178],[488,179],[476,180],[494,181],[477,182],[496,183],[497,184],[485,3],[454,3],[478,185],[495,186],[570,187],[583,188],[577,189],[578,190],[581,191],[580,191],[579,190],[582,190],[576,192],[584,193],[586,194],[585,195],[587,196],[588,180],[589,197],[475,3],[590,198],[575,199],[591,200],[593,201],[594,202],[603,203],[604,3],[605,3],[606,204],[607,205],[609,206],[610,207],[611,208],[608,202],[612,209],[636,210],[596,211],[598,212],[620,213],[617,214],[614,215],[613,3],[618,216],[601,217],[619,218],[599,219],[595,220],[600,221],[597,222],[615,223],[622,224],[623,225],[621,226],[624,227],[625,228],[627,229],[633,230],[602,132],[629,231],[628,132],[631,232],[630,3],[632,233],[616,234],[635,235],[634,132],[657,3],[658,3],[661,236],[662,3],[663,3],[665,3],[664,3],[679,3],[666,3],[667,237],[668,3],[669,3],[670,238],[671,236],[672,3],[674,239],[675,236],[676,240],[677,238],[678,3],[680,241],[684,242],[693,243],[683,244],[659,3],[673,240],[681,3],[682,3],[685,245],[690,246],[686,132],[687,132],[688,132],[689,132],[660,3],[691,3],[692,247],[694,248],[216,249],[219,250],[218,251],[217,252],[215,253],[211,254],[214,255],[213,256],[212,257],[210,253],[225,258],[224,259],[223,260],[222,261],[221,262],[220,263],[758,264],[649,265],[648,3],[757,3],[894,266],[890,2],[892,267],[893,2],[751,268],[750,269],[895,3],[900,270],[899,271],[898,272],[896,3],[745,273],[752,274],[901,253],[746,3],[902,3],[903,275],[904,276],[912,277],[897,3],[913,3],[914,3],[747,3],[63,278],[64,278],[65,279],[66,280],[67,281],[68,282],[59,283],[57,3],[58,3],[69,284],[70,285],[71,286],[72,287],[73,288],[74,289],[75,289],[76,290],[77,291],[78,292],[79,293],[80,294],[62,3],[81,295],[82,296],[83,297],[84,298],[85,299],[86,300],[87,301],[88,302],[89,303],[90,304],[91,305],[92,306],[93,307],[94,308],[95,309],[97,310],[96,311],[98,312],[99,313],[100,3],[101,314],[102,315],[103,316],[104,317],[61,318],[60,3],[113,319],[105,320],[106,321],[107,322],[108,323],[109,324],[110,325],[111,326],[112,327],[915,3],[916,3],[743,3],[744,3],[941,328],[942,329],[918,330],[921,331],[939,328],[940,328],[930,328],[929,332],[927,328],[922,328],[935,328],[933,328],[937,328],[917,328],[934,328],[938,328],[923,328],[924,328],[936,328],[919,328],[925,328],[926,328],[928,328],[932,328],[943,333],[931,328],[920,328],[956,334],[955,3],[950,333],[952,335],[951,333],[944,333],[945,333],[947,333],[949,333],[953,335],[954,335],[946,335],[948,335],[742,336],[749,337],[748,338],[957,3],[967,339],[958,3],[961,340],[965,341],[966,342],[959,343],[963,344],[960,345],[968,346],[969,3],[970,347],[644,3],[563,3],[962,3],[229,348],[228,349],[227,350],[226,351],[964,352],[230,353],[905,3],[909,354],[911,355],[910,354],[908,356],[706,357],[704,3],[705,3],[763,358],[761,3],[762,3],[907,359],[906,3],[250,3],[445,360],[418,3],[396,361],[394,361],[309,362],[260,363],[259,364],[395,365],[380,366],[302,367],[258,368],[257,369],[444,364],[409,370],[408,370],[320,371],[416,362],[417,362],[419,372],[420,362],[421,369],[422,362],[393,362],[423,362],[424,373],[425,362],[426,370],[427,374],[428,362],[429,362],[430,362],[431,362],[432,370],[433,362],[434,362],[435,362],[436,362],[437,375],[438,362],[439,362],[440,362],[441,362],[442,362],[262,369],[263,369],[264,369],[265,369],[266,369],[267,369],[268,369],[269,362],[271,376],[272,369],[270,369],[273,369],[274,369],[275,369],[276,369],[277,369],[278,369],[279,362],[280,369],[281,369],[282,369],[283,369],[284,369],[285,362],[286,369],[287,369],[288,369],[289,369],[290,369],[291,369],[292,362],[294,377],[293,369],[295,369],[296,369],[297,369],[298,369],[299,375],[300,362],[301,362],[315,378],[303,379],[304,369],[305,369],[306,362],[307,369],[308,369],[310,380],[311,369],[312,369],[313,369],[314,369],[316,369],[317,369],[318,369],[319,369],[321,381],[322,369],[323,369],[324,369],[325,362],[326,369],[327,382],[328,382],[329,382],[330,362],[331,369],[332,369],[333,369],[338,369],[334,369],[335,362],[336,369],[337,362],[339,369],[340,369],[341,369],[342,369],[343,369],[344,369],[345,362],[346,369],[347,369],[348,369],[349,369],[350,369],[351,369],[352,369],[353,369],[354,369],[355,369],[356,369],[357,369],[358,369],[359,369],[360,369],[361,369],[362,383],[363,369],[364,369],[365,369],[366,369],[367,369],[368,369],[369,362],[370,362],[371,362],[372,362],[373,362],[374,369],[375,369],[376,369],[377,369],[443,362],[379,384],[402,385],[397,385],[388,386],[386,387],[400,388],[389,389],[403,390],[398,391],[399,388],[401,392],[387,3],[392,3],[384,393],[385,394],[382,3],[383,395],[381,369],[390,396],[261,397],[410,3],[411,3],[412,3],[413,3],[414,3],[415,3],[404,3],[407,370],[406,3],[405,398],[378,399],[391,400],[699,401],[701,402],[697,3],[700,401],[702,3],[703,403],[698,404],[650,405],[8,3],[9,3],[13,3],[12,3],[2,3],[14,3],[15,3],[16,3],[17,3],[18,3],[19,3],[20,3],[21,3],[3,3],[4,3],[45,3],[25,3],[22,3],[23,3],[24,3],[26,3],[27,3],[28,3],[5,3],[29,3],[30,3],[31,3],[32,3],[6,3],[36,3],[33,3],[34,3],[35,3],[37,3],[7,3],[38,3],[43,3],[44,3],[39,3],[40,3],[41,3],[42,3],[1,3],[11,3],[10,3],[759,406],[877,407],[878,408],[764,409],[874,410],[765,411],[766,411],[767,411],[873,412],[875,413],[876,414],[760,3],[872,415],[805,3],[820,416],[770,3],[847,417],[849,418],[848,418],[807,419],[806,3],[809,420],[808,421],[786,3],[850,422],[854,423],[852,423],[772,3],[784,424],[817,425],[816,3],[828,426],[774,427],[812,3],[867,428],[869,3],[832,429],[836,430],[834,431],[838,432],[843,433],[844,434],[845,435],[862,427],[780,436],[799,437],[779,3],[773,3],[842,438],[841,3],[818,422],[815,3],[864,3],[823,439],[822,440],[851,423],[855,441],[853,442],[868,3],[826,443],[825,3],[796,444],[787,445],[788,3],[785,446],[813,447],[814,447],[821,3],[771,3],[782,3],[798,3],[830,3],[831,448],[870,449],[792,422],[794,450],[856,418],[858,451],[857,451],[783,3],[768,3],[797,3],[795,422],[835,427],[829,3],[866,3],[791,3],[789,452],[790,3],[793,422],[833,3],[824,3],[863,453],[803,3],[800,454],[801,454],[802,454],[819,435],[776,3],[859,423],[861,441],[860,442],[846,422],[865,3],[839,455],[827,3],[811,3],[775,3],[778,422],[871,3],[840,3],[769,3],[810,3],[804,3],[781,456],[837,427],[777,454],[655,457],[755,458],[654,132],[754,132],[756,459],[888,460],[656,3],[737,3],[739,461],[696,462],[695,463],[740,464],[741,465],[738,466],[753,467],[974,468],[975,3],[972,3],[976,469],[978,470],[979,471],[977,472],[980,473],[981,474],[982,475],[983,476],[984,477],[985,478],[986,479],[987,480],[988,481],[989,482],[973,352],[990,483],[971,290],[991,3],[993,484],[995,485],[994,486],[992,3],[996,487],[997,3],[998,3],[999,3],[1004,488],[1005,3],[1006,3],[1007,3],[1009,489],[1010,3],[1011,3],[1012,3],[1002,3],[1013,488],[1014,488],[1015,488],[1024,490],[1043,491],[1044,490],[1045,492],[1046,493],[1037,494],[1019,3],[1023,495],[1016,3],[1017,496],[1027,497],[1026,498],[1025,499],[1021,3],[1018,3],[1040,3],[1039,500],[1038,3],[1041,501],[1042,502],[1022,3],[1020,3],[1030,503],[1028,504],[1031,3],[1036,505],[1032,506],[1029,3],[1033,507],[1034,508],[1035,504],[1048,509],[1000,3],[1003,510],[1049,3],[1050,3],[1051,3],[1288,511],[1053,3],[1287,512],[1126,513],[1105,514],[1127,515],[1125,3],[1124,516],[1103,517],[1123,3],[1122,3],[1121,518],[1120,519],[1119,519],[1118,519],[1117,519],[1116,519],[1130,520],[1132,521],[1128,3],[1129,522],[1131,523],[1139,524],[1107,525],[1138,526],[1135,527],[1133,527],[1134,528],[1052,3],[1113,529],[1085,530],[1145,3],[1064,3],[1144,3],[1143,531],[1141,532],[1142,533],[1083,534],[1084,535],[1056,3],[1106,536],[1098,537],[1140,3],[1164,3],[1165,538],[1167,539],[1166,3],[1147,540],[1159,541],[1163,542],[1160,543],[1161,544],[1162,545],[1149,546],[1150,547],[1151,541],[1152,547],[1158,548],[1148,541],[1153,541],[1154,547],[1155,541],[1156,547],[1157,541],[1146,549],[1168,532],[1169,532],[1171,550],[1170,532],[1173,551],[1174,532],[1175,552],[1190,553],[1176,551],[1177,554],[1178,551],[1179,555],[1180,532],[1172,532],[1181,532],[1182,556],[1183,532],[1184,551],[1185,557],[1186,532],[1187,532],[1188,558],[1189,532],[1211,559],[1212,560],[1208,561],[1207,562],[1206,563],[1205,564],[1201,565],[1200,566],[1209,567],[1197,568],[1202,565],[1194,569],[1193,570],[1216,571],[1219,572],[1204,573],[1203,574],[1198,575],[1220,572],[1088,576],[1218,577],[1087,578],[1196,579],[1195,580],[1215,571],[1214,581],[1213,580],[1223,582],[1239,583],[1232,584],[1238,3],[1225,585],[1228,586],[1227,587],[1236,583],[1235,588],[1234,583],[1233,583],[1221,589],[1237,3],[1222,590],[1231,591],[1230,592],[1229,593],[1254,594],[1255,595],[1068,596],[1256,597],[1199,598],[1251,599],[1252,600],[1250,598],[1253,601],[1249,602],[1247,601],[1246,603],[1245,601],[1248,601],[1244,604],[1243,605],[1242,606],[1240,594],[1241,604],[1260,607],[1060,608],[1114,609],[1109,610],[1055,611],[1259,612],[1099,3],[1062,613],[1261,614],[1112,613],[1111,615],[1063,616],[1054,617],[1097,618],[1061,619],[1108,610],[1217,610],[1059,620],[1058,621],[1110,622],[1073,623],[1102,624],[1100,624],[1101,624],[1257,624],[1104,625],[1082,625],[1263,626],[1262,627],[1191,628],[1266,629],[1192,629],[1210,628],[1267,628],[1264,630],[1265,631],[1258,632],[1270,633],[1137,634],[1269,635],[1268,636],[1091,637],[1096,638],[1272,3],[1066,639],[1065,3],[1271,3],[1276,640],[1281,641],[1273,642],[1070,3],[1274,643],[1280,633],[1275,511],[1071,644],[1277,645],[1278,3],[1080,646],[1279,647],[1081,3],[1079,648],[1282,649],[1075,3],[1086,650],[1072,3],[1089,651],[1074,652],[1077,653],[1078,654],[1076,3],[1092,3],[1283,655],[1093,656],[1057,657],[1284,658],[1069,659],[1286,538],[1224,538],[1136,538],[1226,538],[1095,538],[1094,538],[1090,538],[1067,660],[1285,538],[1115,661],[1289,3],[1290,662],[1291,3],[1008,3],[1001,3],[1047,3]]},"version":"4.9.5"} \ No newline at end of file diff --git a/backend/cluster-server/package-lock.json b/backend/cluster-server/package-lock.json index 3b5840d12b36e9e1473332d073e3b8373f49c134..a2a457456686c5947ca161389fd36d3c33e45a59 100644 --- a/backend/cluster-server/package-lock.json +++ b/backend/cluster-server/package-lock.json @@ -55,7 +55,6 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.6.tgz", "integrity": "sha512-ZmD586B+RnM2CG5+jbXh2NVfIydTc/yKSjppYDDOv4I530YBm6vpfZMwClpiNk6XLbMv7KqX4Tlr4wfxlPYYbA==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "8.9.0", "ajv-formats": "2.1.1", @@ -83,7 +82,6 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -95,15 +93,13 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" + "dev": true }, "node_modules/@angular-devkit/schematics": { "version": "13.3.6", "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.6.tgz", "integrity": "sha512-yLh5xc92C/FiaAp27coPiKWpSUmwoXF7vMxbJYJTyOXlt0mUITAEAwtrZQNr4yAxW/yvgTdyg7PhXaveQNTUuQ==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "13.3.6", "jsonc-parser": "3.0.0", @@ -122,7 +118,6 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-13.3.6.tgz", "integrity": "sha512-5tTuu9gbXM0bMk0sin4phmWA3U1Qz53zT/rpEfzQ/+c/s8CoqZ5N1qOnYtemRct3Jxsz1kn4TBpHeriR4r5hHg==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "13.3.6", "@angular-devkit/schematics": "13.3.6", @@ -145,7 +140,6 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -155,7 +149,6 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -181,7 +174,6 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -193,15 +185,13 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" + "dev": true }, "node_modules/@babel/code-frame": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", @@ -216,7 +206,6 @@ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -226,7 +215,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -256,15 +244,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -274,7 +260,6 @@ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", @@ -291,7 +276,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", @@ -308,7 +292,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -318,7 +301,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -328,7 +310,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" @@ -342,7 +323,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", @@ -360,7 +340,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -370,7 +349,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -380,7 +358,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -390,7 +367,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -400,7 +376,6 @@ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.28.6" @@ -414,7 +389,6 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.29.0" }, @@ -430,7 +404,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -443,7 +416,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -456,7 +428,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -469,7 +440,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -485,7 +455,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -501,7 +470,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -514,7 +482,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -527,7 +494,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -540,7 +506,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -553,7 +518,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -566,7 +530,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -579,7 +542,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -592,7 +554,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -605,7 +566,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -621,7 +581,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -637,7 +596,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -653,7 +611,6 @@ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", @@ -668,7 +625,6 @@ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -687,7 +643,6 @@ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" @@ -700,15 +655,13 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" @@ -719,7 +672,6 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -732,7 +684,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -743,7 +694,6 @@ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -762,7 +712,6 @@ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, - "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -772,7 +721,6 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -796,7 +744,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -812,15 +759,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@eslint/js": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, - "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -829,7 +774,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "license": "MIT", "optional": true }, "node_modules/@humanwhocodes/config-array": { @@ -838,7 +782,6 @@ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", "dev": true, - "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", @@ -853,7 +796,6 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -867,15 +809,13 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" + "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -892,7 +832,6 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -902,7 +841,6 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -916,7 +854,6 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -930,7 +867,6 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -943,7 +879,6 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -959,7 +894,6 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -972,7 +906,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -982,7 +915,6 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -991,7 +923,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/@jercle/yargonaut/-/yargonaut-1.1.5.tgz", "integrity": "sha512-zBp2myVvBHp1UaJsNTyS6q4UDKT7eRiqTS4oNTS6VQMd6mpxYOdbeK4pY279cDCdakGy6hG0J3ejoXZVsPwHqw==", - "license": "Apache-2.0", "dependencies": { "chalk": "^4.1.2", "figlet": "^1.5.2", @@ -1003,7 +934,6 @@ "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -1021,7 +951,6 @@ "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^27.5.1", "@jest/reporters": "^27.5.1", @@ -1069,7 +998,6 @@ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, - "license": "MIT", "dependencies": { "@jest/fake-timers": "^27.5.1", "@jest/types": "^27.5.1", @@ -1085,7 +1013,6 @@ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", @@ -1103,7 +1030,6 @@ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/types": "^27.5.1", @@ -1118,7 +1044,6 @@ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, - "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^27.5.1", @@ -1163,7 +1088,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -1173,7 +1097,6 @@ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0", "graceful-fs": "^4.2.9", @@ -1188,7 +1111,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -1198,7 +1120,6 @@ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^27.5.1", "@jest/types": "^27.5.1", @@ -1214,7 +1135,6 @@ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/test-result": "^27.5.1", "graceful-fs": "^4.2.9", @@ -1230,7 +1150,6 @@ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.1.0", "@jest/types": "^27.5.1", @@ -1257,7 +1176,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -1267,7 +1185,6 @@ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, - "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -1284,7 +1201,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" @@ -1295,7 +1211,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -1306,7 +1221,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1316,7 +1230,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -1326,15 +1239,13 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1344,7 +1255,6 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "license": "BSD-3-Clause", "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -1364,7 +1274,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -1379,7 +1288,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1388,7 +1296,6 @@ "version": "5.9.8", "resolved": "https://registry.npmjs.org/@mikro-orm/cli/-/cli-5.9.8.tgz", "integrity": "sha512-v3KHddyrovHiPz31mfa44GjnOYH2CuEZLiyWo8G/Wy0WP87EuDv5eEGuHJ9GAfd9jvOD4Cy8l56tu/bg/0YGGA==", - "license": "MIT", "dependencies": { "@jercle/yargonaut": "1.1.5", "@mikro-orm/core": "5.9.8", @@ -1453,7 +1360,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", "engines": { "node": ">=4" } @@ -1462,7 +1368,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "license": "MIT", "dependencies": { "json5": "^2.2.2", "minimist": "^1.2.6", @@ -1476,7 +1381,6 @@ "version": "5.9.8", "resolved": "https://registry.npmjs.org/@mikro-orm/core/-/core-5.9.8.tgz", "integrity": "sha512-bfTYInwc+EtPgLOxa5iBG5vKT1qq5swDcsc2F7Iu6sesBLKNputURA7qPmY6TCWQtSL/hvB3QjsCzY48LllD+w==", - "license": "MIT", "dependencies": { "acorn-loose": "8.3.0", "acorn-walk": "8.2.0", @@ -1540,14 +1444,12 @@ "node_modules/@mikro-orm/core/node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "license": "Apache-2.0" + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, "node_modules/@mikro-orm/knex": { "version": "5.9.8", "resolved": "https://registry.npmjs.org/@mikro-orm/knex/-/knex-5.9.8.tgz", "integrity": "sha512-Kitz11QY7Id37huNUfsxSkgnET8X/fuL861yUK9rJ8xrRiEakdm1r/lM1pLYcB/oikAphYLTgW+M/t3LoJb8aw==", - "license": "MIT", "dependencies": { "fs-extra": "11.1.1", "knex": "2.5.1", @@ -1598,7 +1500,6 @@ "version": "5.9.8", "resolved": "https://registry.npmjs.org/@mikro-orm/migrations/-/migrations-5.9.8.tgz", "integrity": "sha512-D4s2Hd8TFLimddftC/El4Vtiq6AcGG/lc7+LUHieVzkAfdvcddxnxYQ3q1qH7IxqdDWNcZr0dYPxqLvgFhYqqg==", - "license": "MIT", "dependencies": { "@mikro-orm/knex": "5.9.8", "fs-extra": "11.1.1", @@ -1616,7 +1517,6 @@ "version": "5.2.3", "resolved": "https://registry.npmjs.org/@mikro-orm/nestjs/-/nestjs-5.2.3.tgz", "integrity": "sha512-JMxaXrNXlo6j59D3LWMC1tEC1a5JanCtqdfv91JUH0sfVZh97SsjQ9K794BY3JWIUKSFyQwpnLxYZ0Ash/BlPA==", - "license": "MIT", "engines": { "node": ">= 14.0.0" }, @@ -1630,7 +1530,6 @@ "version": "5.9.8", "resolved": "https://registry.npmjs.org/@mikro-orm/reflection/-/reflection-5.9.8.tgz", "integrity": "sha512-4tQW0rm42r/gBP11xADStQa8u3OwEGrRaoWI3DjjWszLKMiidA9OIvRRn8sQEbTMjG04kuXDjIE6PNxA+xRwAg==", - "license": "MIT", "dependencies": { "globby": "11.1.0", "ts-morph": "20.0.0" @@ -1646,7 +1545,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mikro-orm/sql-highlighter/-/sql-highlighter-1.0.1.tgz", "integrity": "sha512-iO+FwRNuqNDVlIo5zfgOu2mMGVicX/FqzP+F/A0xpJLHyqvWyXzVwntgAMimBjQaxiX9Rpmc0u3Jq6/A6V6JQA==", - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -1658,7 +1556,6 @@ "version": "5.9.8", "resolved": "https://registry.npmjs.org/@mikro-orm/sqlite/-/sqlite-5.9.8.tgz", "integrity": "sha512-k7C9PPv8AnKf/YW8wCIPm7awyyn268jX+MwOAdfTvR6zSAlnbOn9o+JcO1dsGRN3NgY9mmuaw6Aw8WYDdXi0tA==", - "license": "MIT", "dependencies": { "@mikro-orm/knex": "5.9.8", "fs-extra": "11.1.1", @@ -1691,7 +1588,6 @@ "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-8.2.8.tgz", "integrity": "sha512-y5Imcw1EY0OxD3POAM7SLUB1rFdn5FjbfSsyJrokjKmXY+i6KcBdbRrv3Ox7aeJ4W7wXuckIXZEUlK6lC52dnA==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "13.3.6", "@angular-devkit/schematics": "13.3.6", @@ -1729,7 +1625,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1743,7 +1638,6 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -1756,7 +1650,6 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -1766,7 +1659,6 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", @@ -1779,7 +1671,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -1792,7 +1683,6 @@ "version": "8.4.7", "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.7.tgz", "integrity": "sha512-m/YsbcBal+gA5CFrDpqXqsSfylo+DIQrkFY3qhVIltsYRfu8ct8J9pqsTO6OPf3mvqdOpFGrV5sBjoyAzOBvsw==", - "license": "MIT", "dependencies": { "axios": "0.27.2", "iterare": "1.2.1", @@ -1827,7 +1717,6 @@ "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.7.tgz", "integrity": "sha512-XB9uexHqzr2xkPo6QSiQWJJttyYYLmvQ5My64cFvWFi7Wk2NIus0/xUNInwX3kmFWB6pF1ab5Y2ZBvWdPwGBhw==", "hasInstallScript": true, - "license": "MIT", "dependencies": { "@nuxtjs/opencollective": "0.3.2", "fast-safe-stringify": "2.1.1", @@ -1865,7 +1754,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.1.0.tgz", "integrity": "sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==", - "license": "MIT", "peerDependencies": { "@nestjs/common": "^10.0.0 || ^11.0.0", "class-transformer": "^0.4.0 || ^0.5.0", @@ -1885,7 +1773,6 @@ "version": "8.4.7", "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.4.7.tgz", "integrity": "sha512-lPE5Ltg2NbQGRQIwXWY+4cNrXhJdycbxFDQ8mNxSIuv+LbrJBIdEB/NONk+LLn9N/8d2+I2LsIETGQrPvsejBg==", - "license": "MIT", "dependencies": { "body-parser": "1.20.0", "cors": "2.8.5", @@ -1907,7 +1794,6 @@ "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.11.tgz", "integrity": "sha512-W/WzaxgH5aE01AiIErE9QrQJ73VR/M/8p8pq0LZmjmNcjZqU5kQyOWUxZg13WYfSpJdOa62t6TZRtFDmgZPoIg==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "13.3.5", "@angular-devkit/schematics": "13.3.5", @@ -1924,7 +1810,6 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.5.tgz", "integrity": "sha512-w7vzK4VoYP9rLgxJ2SwEfrkpKybdD+QgQZlsDBzT0C6Ebp7b4gkNcNVFo8EiZvfDl6Yplw2IAP7g7fs3STn0hQ==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "8.9.0", "ajv-formats": "2.1.1", @@ -1952,7 +1837,6 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.5.tgz", "integrity": "sha512-0N/kL/Vfx0yVAEwa3HYxNx9wYb+G9r1JrLjJQQzDp+z9LtcojNf7j3oey6NXrDUs1WjVZOa/AIdRl3/DuaoG5w==", "dev": true, - "license": "MIT", "dependencies": { "@angular-devkit/core": "13.3.5", "jsonc-parser": "3.0.0", @@ -1971,7 +1855,6 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -1986,7 +1869,6 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -1998,14 +1880,12 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" + "dev": true }, "node_modules/@nestjs/swagger": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-5.2.1.tgz", "integrity": "sha512-7dNa08WCnTsW/oAk3Ujde+z64JMfNm19DhpXasFR8oJp/9pggYAbYU927HpA+GJsSFJX6adjIRZsCKUqaGWznw==", - "license": "MIT", "dependencies": { "@nestjs/mapped-types": "1.0.1", "lodash": "4.17.21", @@ -2031,7 +1911,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.0.1.tgz", "integrity": "sha512-NFvofzSinp00j5rzUd4tf+xi9od6383iY0JP7o0Bnu1fuItAUkWBgc4EKuIQ3D+c2QI3i9pG1kDWAeY27EMGtg==", - "license": "MIT", "peerDependencies": { "@nestjs/common": "^7.0.8 || ^8.0.0", "class-transformer": "^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0", @@ -2052,7 +1931,6 @@ "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.4.7.tgz", "integrity": "sha512-aedpeJFicTBeiTCvJWUG45WMMS53f5eu8t2fXsfjsU1t+WdDJqYcZyrlCzA4dL1B7MfbqaTURdvuVVHTmJO8ag==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "2.4.0" }, @@ -2080,7 +1958,6 @@ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "dev": true, - "license": "MIT", "engines": { "node": "^14.21.3 || >=16" }, @@ -2092,7 +1969,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2105,7 +1981,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", "engines": { "node": ">= 8" } @@ -2114,7 +1989,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2127,7 +2001,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "license": "ISC", "optional": true, "dependencies": { "@gar/promisify": "^1.0.1", @@ -2139,7 +2012,6 @@ "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", "deprecated": "This functionality has been moved to @npmcli/fs", - "license": "MIT", "optional": true, "dependencies": { "mkdirp": "^1.0.4", @@ -2153,7 +2025,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", "optional": true, "bin": { "mkdirp": "bin/cmd.js" @@ -2166,7 +2037,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "consola": "^2.15.0", @@ -2185,7 +2055,6 @@ "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", "dev": true, - "license": "MIT", "dependencies": { "@noble/hashes": "^1.1.5" } @@ -2194,7 +2063,6 @@ "version": "5.13.0", "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.13.0.tgz", "integrity": "sha512-IGVhy+JgUacAdCGXKUrRhwHMTzqhWwZUI+qEPcdzsb80heOw0QPbhhoVsoiMF7Klp8eYsp7hzpScMXmOa3Uhfg==", - "license": "MIT", "dependencies": { "ajv": "~8.13.0", "ajv-draft-04": "~1.0.0", @@ -2218,7 +2086,6 @@ "version": "8.13.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", @@ -2234,7 +2101,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -2251,7 +2117,6 @@ "version": "11.3.3", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -2265,7 +2130,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -2277,7 +2141,6 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2291,14 +2154,12 @@ "node_modules/@rushstack/node-core-library/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/@rushstack/terminal": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.15.2.tgz", "integrity": "sha512-7Hmc0ysK5077R/IkLS9hYu0QuNafm+TbZbtYVzCMbeOdMjaRboLKrhryjwZSRJGJzu+TV1ON7qZHeqf58XfLpA==", - "license": "MIT", "dependencies": { "@rushstack/node-core-library": "5.13.0", "supports-color": "~8.1.1" @@ -2316,7 +2177,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2331,7 +2191,6 @@ "version": "4.23.7", "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.7.tgz", "integrity": "sha512-Gr9cB7DGe6uz5vq2wdr89WbVDKz0UeuFEn5H2CfWDe7JvjFFaiV15gi6mqDBTbHhHCWS7w8mF1h3BnIfUndqdA==", - "license": "MIT", "dependencies": { "@rushstack/terminal": "0.15.2", "@types/argparse": "1.0.38", @@ -2343,7 +2202,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -2352,15 +2210,13 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz", "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==", - "hasInstallScript": true, - "license": "Apache-2.0" + "hasInstallScript": true }, "node_modules/@sinonjs/commons": { "version": "1.8.6", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } @@ -2370,7 +2226,6 @@ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.7.0" } @@ -2380,7 +2235,6 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "devOptional": true, - "license": "MIT", "engines": { "node": ">= 6" } @@ -2389,7 +2243,6 @@ "version": "0.21.0", "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.21.0.tgz", "integrity": "sha512-ES110Mmne5Vi4ypUKrtVQfXFDtCsDXiUiGxF6ILVlE90dDD4fdpC1LSjydl/ml7xJWKSDZwUYD2zkOePMSrPBA==", - "license": "MIT", "dependencies": { "fast-glob": "^3.2.12", "minimatch": "^7.4.3", @@ -2401,7 +2254,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -2410,7 +2262,6 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2425,7 +2276,6 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", - "license": "MIT", "bin": { "mkdirp": "dist/cjs/src/bin.js" }, @@ -2440,42 +2290,36 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/argparse": { "version": "1.0.38", "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", - "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", - "license": "MIT" + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==" }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -2489,7 +2333,6 @@ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } @@ -2499,7 +2342,6 @@ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -2510,7 +2352,6 @@ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.28.2" } @@ -2520,7 +2361,6 @@ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, - "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -2531,7 +2371,6 @@ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -2540,15 +2379,13 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -2559,7 +2396,6 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -2569,15 +2405,13 @@ "version": "0.0.51", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/express": { "version": "4.17.25", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, - "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -2590,7 +2424,6 @@ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -2603,7 +2436,6 @@ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -2612,22 +2444,19 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, - "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -2637,7 +2466,6 @@ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } @@ -2647,7 +2475,6 @@ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz", "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==", "dev": true, - "license": "MIT", "dependencies": { "jest-diff": "^27.0.0", "pretty-format": "^27.0.0" @@ -2657,78 +2484,67 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/methods": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/node": { "version": "16.18.126", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/prettier": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/send": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -2738,7 +2554,6 @@ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "dev": true, - "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -2750,7 +2565,6 @@ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", "dev": true, - "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -2760,15 +2574,13 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/superagent": { "version": "8.1.9", "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/cookiejar": "^2.1.5", "@types/methods": "^1.1.4", @@ -2781,7 +2593,6 @@ "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz", "integrity": "sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==", "dev": true, - "license": "MIT", "dependencies": { "@types/superagent": "*" } @@ -2791,7 +2602,6 @@ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.11.tgz", "integrity": "sha512-sbtvk8wDN+JvEdabmZExoW/HNr1cB7D/j4LT08rMiuikfA7m/JNJg7ATQcgzs34zHnoScDkY0ZRSl29Fkmk36g==", "dev": true, - "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } @@ -2800,15 +2610,13 @@ "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -2843,7 +2651,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -2871,7 +2678,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0" @@ -2889,7 +2695,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.62.0", "@typescript-eslint/utils": "5.62.0", @@ -2917,7 +2722,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2931,7 +2735,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -2959,7 +2762,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -2986,7 +2788,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -3003,15 +2804,13 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -3021,29 +2820,25 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -3054,15 +2849,13 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -3075,7 +2868,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, - "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -3085,7 +2877,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -3094,15 +2885,13 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -3119,7 +2908,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -3133,7 +2921,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -3146,7 +2933,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -3161,7 +2947,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -3171,35 +2956,30 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" + "dev": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" + "dev": true }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true, - "license": "BSD-3-Clause" + "dev": true }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "license": "ISC" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -3212,7 +2992,6 @@ "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3225,7 +3004,6 @@ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, - "license": "MIT", "dependencies": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -3236,7 +3014,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3249,7 +3026,6 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -3260,7 +3036,6 @@ "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "deprecated": "package has been renamed to acorn-import-attributes", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -3270,7 +3045,6 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -3279,7 +3053,6 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/acorn-loose/-/acorn-loose-8.3.0.tgz", "integrity": "sha512-75lAs9H19ldmW+fAbyqHdjgdCrz0pWGXKmnqFoh8PyVd1L2RIb4RzYrSjmopeqv3E1G3/Pimu6GgLlrGbrkF7w==", - "license": "MIT", "dependencies": { "acorn": "^8.5.0" }, @@ -3291,7 +3064,6 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -3300,7 +3072,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", "dependencies": { "debug": "4" }, @@ -3312,7 +3083,6 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", - "license": "MIT", "optional": true, "dependencies": { "humanize-ms": "^1.2.1" @@ -3325,7 +3095,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "license": "MIT", "optional": true, "dependencies": { "clean-stack": "^2.0.0", @@ -3340,7 +3109,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -3356,7 +3124,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", - "license": "MIT", "peerDependencies": { "ajv": "^8.5.0" }, @@ -3371,7 +3138,6 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -3389,7 +3155,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -3398,7 +3163,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "license": "MIT", "engines": { "node": ">=6" } @@ -3408,7 +3172,6 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -3424,7 +3187,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -3436,7 +3198,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", "engines": { "node": ">=8" } @@ -3445,7 +3206,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3461,7 +3221,6 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -3473,21 +3232,18 @@ "node_modules/append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", - "license": "MIT" + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" }, "node_modules/aproba": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.1.0.tgz", - "integrity": "sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==", - "license": "ISC" + "integrity": "sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==" }, "node_modules/are-we-there-yet": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "deprecated": "This package is no longer supported.", - "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -3500,7 +3256,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -3514,27 +3269,23 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" + "dev": true }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "license": "MIT" + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", "engines": { "node": ">=8" } @@ -3543,20 +3294,17 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "license": "MIT", "dependencies": { "follow-redirects": "^1.14.9", "form-data": "^4.0.0" @@ -3567,7 +3315,6 @@ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/transform": "^27.5.1", "@jest/types": "^27.5.1", @@ -3590,7 +3337,6 @@ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -3607,7 +3353,6 @@ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -3623,7 +3368,6 @@ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -3650,7 +3394,6 @@ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, - "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^27.5.1", "babel-preset-current-node-syntax": "^1.0.0" @@ -3665,8 +3408,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-js": { "version": "1.5.1", @@ -3686,15 +3428,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/baseline-browser-mapping": { "version": "2.9.19", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", "dev": true, - "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" } @@ -3704,7 +3444,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -3717,7 +3456,6 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3729,7 +3467,6 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -3743,7 +3480,6 @@ "version": "1.20.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", @@ -3767,7 +3503,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -3775,14 +3510,12 @@ "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3792,7 +3525,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -3804,8 +3536,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true, - "license": "BSD-2-Clause" + "dev": true }, "node_modules/browserslist": { "version": "4.28.1", @@ -3826,7 +3557,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -3846,7 +3576,6 @@ "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, - "license": "MIT", "dependencies": { "fast-json-stable-stringify": "2.x" }, @@ -3859,7 +3588,6 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } @@ -3883,7 +3611,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -3892,8 +3619,7 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/busboy": { "version": "1.6.0", @@ -3910,7 +3636,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3919,7 +3644,6 @@ "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "license": "ISC", "optional": true, "dependencies": { "@npmcli/fs": "^1.0.0", @@ -3949,7 +3673,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", "optional": true, "dependencies": { "yallist": "^4.0.0" @@ -3962,7 +3685,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", "optional": true, "bin": { "mkdirp": "bin/cmd.js" @@ -3975,14 +3697,12 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC", "optional": true }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -3995,7 +3715,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -4012,7 +3731,6 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -4022,15 +3740,14 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001770", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz", - "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==", + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", "dev": true, "funding": [ { @@ -4045,14 +3762,12 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4069,7 +3784,6 @@ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } @@ -4078,8 +3792,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/chokidar": { "version": "3.5.3", @@ -4092,7 +3805,6 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -4113,7 +3825,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "license": "ISC", "engines": { "node": ">=10" } @@ -4123,7 +3834,6 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0" } @@ -4139,7 +3849,6 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "MIT", "engines": { "node": ">=8" } @@ -4148,14 +3857,12 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -4166,7 +3873,6 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -4179,7 +3885,6 @@ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -4192,7 +3897,6 @@ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", "dev": true, - "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -4208,7 +3912,6 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, - "license": "ISC", "engines": { "node": ">= 10" } @@ -4217,7 +3920,6 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -4232,7 +3934,6 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } @@ -4242,7 +3943,6 @@ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, - "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -4251,21 +3951,18 @@ "node_modules/code-block-writer": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz", - "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==", - "license": "MIT" + "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==" }, "node_modules/collect-v8-coverage": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -4276,14 +3973,12 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "license": "ISC", "bin": { "color-support": "bin.js" } @@ -4291,14 +3986,12 @@ "node_modules/colorette": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "license": "MIT" + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -4311,7 +4004,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } @@ -4321,7 +4013,6 @@ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -4329,8 +4020,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/concat-stream": { "version": "1.6.2", @@ -4339,7 +4029,6 @@ "engines": [ "node >= 0.8" ], - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -4350,20 +4039,17 @@ "node_modules/consola": { "version": "2.15.3", "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "license": "MIT" + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "license": "ISC" + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -4375,7 +4061,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4384,14 +4069,12 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4399,27 +4082,23 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "license": "MIT" + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/cookiejar": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -4433,7 +4112,6 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -4449,15 +4127,13 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4471,15 +4147,13 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, - "license": "MIT", "dependencies": { "cssom": "~0.3.6" }, @@ -4491,15 +4165,13 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, - "license": "MIT", "dependencies": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -4513,7 +4185,6 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -4530,29 +4201,25 @@ "version": "10.6.0", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4562,7 +4229,6 @@ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, - "license": "MIT", "dependencies": { "clone": "^1.0.2" }, @@ -4574,7 +4240,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -4582,14 +4247,12 @@ "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "license": "MIT" + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4598,7 +4261,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -4608,7 +4270,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "license": "Apache-2.0", "engines": { "node": ">=8" } @@ -4618,7 +4279,6 @@ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -4628,7 +4288,6 @@ "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, - "license": "ISC", "dependencies": { "asap": "^2.0.0", "wrappy": "1" @@ -4639,7 +4298,6 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -4649,7 +4307,6 @@ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true, - "license": "MIT", "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } @@ -4658,7 +4315,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -4671,7 +4327,6 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -4685,7 +4340,6 @@ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "deprecated": "Use your platform's native DOMException instead", "dev": true, - "license": "MIT", "dependencies": { "webidl-conversions": "^5.0.0" }, @@ -4698,7 +4352,6 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=8" } @@ -4707,7 +4360,6 @@ "version": "16.3.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -4719,7 +4371,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -4732,22 +4383,19 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { "version": "1.5.286", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/emittery": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -4758,14 +4406,12 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4774,7 +4420,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -4784,7 +4429,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -4798,7 +4442,6 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, - "license": "MIT", "dependencies": { "once": "^1.4.0" } @@ -4808,7 +4451,6 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" @@ -4821,7 +4463,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -4831,7 +4472,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "license": "MIT", "optional": true }, "node_modules/error-ex": { @@ -4839,7 +4479,6 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -4848,7 +4487,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -4857,7 +4495,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -4866,14 +4503,12 @@ "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -4885,7 +4520,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", @@ -4900,7 +4534,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", "engines": { "node": ">=6" } @@ -4908,15 +4541,13 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -4929,7 +4560,6 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -4951,7 +4581,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -4961,7 +4590,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -4973,7 +4601,6 @@ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -5029,7 +4656,6 @@ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", "dev": true, - "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -5042,7 +4668,6 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz", "integrity": "sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==", "dev": true, - "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0" }, @@ -5064,7 +4689,6 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -5078,7 +4702,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -5091,7 +4714,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5108,7 +4730,6 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -5125,7 +4746,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -5135,7 +4755,6 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5147,14 +4766,12 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "license": "MIT", "engines": { "node": ">=6" } @@ -5164,7 +4781,6 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -5182,7 +4798,6 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -5196,7 +4811,6 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -5209,7 +4823,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -5219,7 +4832,6 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -5232,7 +4844,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -5242,7 +4853,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -5252,7 +4862,6 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -5261,7 +4870,6 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5271,7 +4879,6 @@ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -5281,7 +4888,6 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -5314,7 +4920,6 @@ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "jest-get-type": "^27.5.1", @@ -5329,7 +4934,6 @@ "version": "4.18.1", "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -5371,7 +4975,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5379,21 +4982,18 @@ "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/express/node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "license": "MIT" + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, - "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -5406,21 +5006,18 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" + "dev": true }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -5436,27 +5033,23 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "license": "MIT" + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -5466,7 +5059,6 @@ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } @@ -5475,7 +5067,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.10.0.tgz", "integrity": "sha512-aktIwEZZ6Gp9AWdMXW4YCi0J2Ahuxo67fNJRUIWD81w8pQ0t9TS8FFpbl27ChlTLF06VkwjDesZSzEVzN75rzA==", - "license": "MIT", "dependencies": { "commander": "^14.0.0" }, @@ -5490,7 +5081,6 @@ "version": "14.0.3", "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", - "license": "MIT", "engines": { "node": ">=20" } @@ -5500,7 +5090,6 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -5516,7 +5105,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -5526,7 +5114,6 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -5538,7 +5125,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -5550,7 +5136,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -5568,7 +5153,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5576,15 +5160,13 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -5601,7 +5183,6 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -5615,8 +5196,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/follow-redirects": { "version": "1.15.11", @@ -5628,7 +5208,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -5643,7 +5222,6 @@ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.11.tgz", "integrity": "sha512-2e5+NyTUTE1Xq4fWo7KFEQblCaIvvINQwUX3jRmEGlgCTc1Ecqw/975EfQrQ0GEraxJTnp8KB9d/c8hlCHUMJA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "chalk": "^4.1.2", @@ -5677,7 +5255,6 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -5691,7 +5268,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -5708,7 +5284,6 @@ "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.5.tgz", "integrity": "sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==", "dev": true, - "license": "MIT", "dependencies": { "@paralleldrive/cuid2": "^2.2.2", "dezalgo": "^1.0.4", @@ -5720,11 +5295,10 @@ } }, "node_modules/formidable/node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" }, @@ -5739,7 +5313,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5748,7 +5321,6 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5757,7 +5329,6 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -5771,7 +5342,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -5783,14 +5353,12 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", - "dev": true, - "license": "Unlicense" + "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", @@ -5798,7 +5366,6 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -5811,7 +5378,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5821,7 +5387,6 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "deprecated": "This package is no longer supported.", - "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -5842,7 +5407,6 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -5851,7 +5415,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -5860,7 +5423,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -5884,7 +5446,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -5893,7 +5454,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -5907,7 +5467,6 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -5918,15 +5477,13 @@ "node_modules/getopts": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", - "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==", - "license": "MIT" + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==" }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5946,7 +5503,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -5958,15 +5514,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" + "dev": true }, "node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -5981,7 +5535,6 @@ "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -6001,7 +5554,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6012,21 +5564,18 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", "engines": { "node": ">=8" } @@ -6035,7 +5584,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6047,7 +5595,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -6061,14 +5608,12 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "license": "ISC" + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -6081,7 +5626,6 @@ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, - "license": "MIT", "dependencies": { "whatwg-encoding": "^1.0.5" }, @@ -6093,21 +5637,18 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/http-cache-semantics": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "license": "BSD-2-Clause", "optional": true }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -6124,7 +5665,6 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "devOptional": true, - "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -6138,7 +5678,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -6152,7 +5691,6 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -6161,7 +5699,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "license": "MIT", "optional": true, "dependencies": { "ms": "^2.0.0" @@ -6171,7 +5708,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -6197,14 +5733,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", "engines": { "node": ">= 4" } @@ -6214,7 +5748,6 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -6230,7 +5763,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "license": "MIT", "engines": { "node": ">=8" } @@ -6240,7 +5772,6 @@ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -6260,7 +5791,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "devOptional": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -6269,7 +5799,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "license": "MIT", "optional": true, "engines": { "node": ">=8" @@ -6279,7 +5808,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "license": "ISC", "optional": true }, "node_modules/inflight": { @@ -6287,7 +5815,6 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -6296,15 +5823,13 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/inquirer": { "version": "7.3.3", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.0", @@ -6329,7 +5854,6 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -6341,14 +5865,12 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" + "dev": true }, "node_modules/interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -6357,7 +5879,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", - "license": "MIT", "optional": true, "engines": { "node": ">= 12" @@ -6367,7 +5888,6 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -6376,15 +5896,13 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -6396,7 +5914,6 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -6411,7 +5928,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6420,7 +5936,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", "engines": { "node": ">=8" } @@ -6430,7 +5945,6 @@ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -6439,7 +5953,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -6452,7 +5965,6 @@ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -6461,14 +5973,12 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "license": "MIT", "optional": true }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -6478,7 +5988,6 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -6487,15 +5996,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -6507,15 +6014,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -6526,22 +6031,19 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "devOptional": true, - "license": "ISC" + "devOptional": true }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -6551,7 +6053,6 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -6568,7 +6069,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -6578,7 +6078,6 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -6593,7 +6092,6 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -6608,7 +6106,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -6618,7 +6115,6 @@ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -6631,7 +6127,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "license": "ISC", "engines": { "node": ">=6" } @@ -6641,7 +6136,6 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/core": "^27.5.1", "import-local": "^3.0.2", @@ -6667,7 +6161,6 @@ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "execa": "^5.0.0", @@ -6682,7 +6175,6 @@ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/test-result": "^27.5.1", @@ -6713,7 +6205,6 @@ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/core": "^27.5.1", "@jest/test-result": "^27.5.1", @@ -6748,7 +6239,6 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -6760,7 +6250,6 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -6779,7 +6268,6 @@ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.8.0", "@jest/test-sequencer": "^27.5.1", @@ -6823,7 +6311,6 @@ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^27.5.1", @@ -6839,7 +6326,6 @@ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, - "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -6852,7 +6338,6 @@ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "chalk": "^4.0.0", @@ -6869,7 +6354,6 @@ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -6888,7 +6372,6 @@ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -6906,7 +6389,6 @@ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, - "license": "MIT", "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } @@ -6916,7 +6398,6 @@ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/graceful-fs": "^4.1.2", @@ -6943,7 +6424,6 @@ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/source-map": "^27.5.1", @@ -6972,7 +6452,6 @@ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, - "license": "MIT", "dependencies": { "jest-get-type": "^27.5.1", "pretty-format": "^27.5.1" @@ -6986,7 +6465,6 @@ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^27.5.1", @@ -7002,7 +6480,6 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.5.1", @@ -7023,7 +6500,6 @@ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*" @@ -7037,7 +6513,6 @@ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -7055,7 +6530,6 @@ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, - "license": "MIT", "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } @@ -7065,7 +6539,6 @@ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "chalk": "^4.0.0", @@ -7087,7 +6560,6 @@ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "jest-regex-util": "^27.5.1", @@ -7102,7 +6574,6 @@ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^27.5.1", "@jest/environment": "^27.5.1", @@ -7135,7 +6606,6 @@ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -7169,7 +6639,6 @@ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "graceful-fs": "^4.2.9" @@ -7183,7 +6652,6 @@ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", @@ -7217,7 +6685,6 @@ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -7235,7 +6702,6 @@ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "camelcase": "^6.2.0", @@ -7253,7 +6719,6 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -7266,7 +6731,6 @@ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/test-result": "^27.5.1", "@jest/types": "^27.5.1", @@ -7285,7 +6749,6 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -7300,7 +6763,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7314,22 +6776,19 @@ "node_modules/jju": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", - "license": "MIT" + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==" }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -7342,7 +6801,6 @@ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, - "license": "MIT", "dependencies": { "abab": "^2.0.5", "acorn": "^8.2.4", @@ -7389,7 +6847,6 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", "dev": true, - "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -7406,7 +6863,6 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -7418,34 +6874,29 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -7457,14 +6908,12 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/jsonfile": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -7477,7 +6926,6 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -7487,7 +6935,6 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -7496,7 +6943,6 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/knex/-/knex-2.5.1.tgz", "integrity": "sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA==", - "license": "MIT", "dependencies": { "colorette": "2.0.19", "commander": "^10.0.0", @@ -7547,7 +6993,6 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "license": "MIT", "engines": { "node": ">=14" } @@ -7556,7 +7001,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -7572,14 +7016,12 @@ "node_modules/knex/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/knex/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", "engines": { "node": ">=8" } @@ -7589,7 +7031,6 @@ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -7599,7 +7040,6 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -7612,15 +7052,13 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/loader-runner": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.11.5" }, @@ -7634,7 +7072,6 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -7648,29 +7085,25 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -7687,7 +7120,6 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -7697,7 +7129,6 @@ "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -7710,7 +7141,6 @@ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, - "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.4" } @@ -7720,7 +7150,6 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -7735,14 +7164,12 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/make-fetch-happen": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "license": "ISC", "optional": true, "dependencies": { "agentkeepalive": "^4.1.3", @@ -7770,7 +7197,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", "optional": true, "dependencies": { "yallist": "^4.0.0" @@ -7783,7 +7209,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC", "optional": true }, "node_modules/makeerror": { @@ -7791,7 +7216,6 @@ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } @@ -7800,7 +7224,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -7809,7 +7232,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7819,7 +7241,6 @@ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, - "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -7830,21 +7251,18 @@ "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "license": "MIT" + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", "engines": { "node": ">= 8" } @@ -7853,7 +7271,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7862,7 +7279,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -7875,7 +7291,6 @@ "version": "5.9.8", "resolved": "https://registry.npmjs.org/mikro-orm/-/mikro-orm-5.9.8.tgz", "integrity": "sha512-iBku1gU9xkA2FCw2wy0K4x3EQzsRE52dYGkGUVQEthRmc/vIMBwXyiTAj+oARzXrkWqslFtlZA/2upeqZhMQlw==", - "license": "MIT", "engines": { "node": ">= 14.0.0" } @@ -7884,7 +7299,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", "bin": { "mime": "cli.js" }, @@ -7896,7 +7310,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7905,7 +7318,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -7918,7 +7330,6 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -7927,7 +7338,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7938,14 +7348,12 @@ "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "license": "MIT" + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "node_modules/minipass": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7957,7 +7365,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "license": "ISC", "optional": true, "dependencies": { "minipass": "^3.0.0" @@ -7970,7 +7377,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "license": "MIT", "optional": true, "dependencies": { "minipass": "^3.1.0", @@ -7988,7 +7394,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "license": "ISC", "optional": true, "dependencies": { "minipass": "^3.0.0" @@ -8001,7 +7406,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "license": "ISC", "optional": true, "dependencies": { "minipass": "^3.0.0" @@ -8014,7 +7418,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "license": "ISC", "optional": true, "dependencies": { "minipass": "^3.0.0" @@ -8026,14 +7429,12 @@ "node_modules/minipass/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -8045,14 +7446,12 @@ "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -8063,15 +7462,13 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/multer": { "version": "1.4.4-lts.1", "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", "deprecated": "Multer 1.x is impacted by a number of vulnerabilities, which have been patched in 2.x. You should upgrade to the latest 2.x version.", - "license": "MIT", "dependencies": { "append-field": "^1.0.0", "busboy": "^1.0.0", @@ -8089,28 +7486,24 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/natural-compare-lite": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8119,21 +7512,18 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/node-addon-api": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "license": "MIT" + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" }, "node_modules/node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, - "license": "MIT", "dependencies": { "lodash": "^4.17.21" } @@ -8142,7 +7532,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -8161,20 +7550,17 @@ "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -8184,7 +7570,6 @@ "version": "8.4.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "license": "MIT", "optional": true, "dependencies": { "env-paths": "^2.2.0", @@ -8210,7 +7595,6 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "deprecated": "This package is no longer supported.", - "license": "ISC", "optional": true, "dependencies": { "delegates": "^1.0.0", @@ -8225,7 +7609,6 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "deprecated": "This package is no longer supported.", - "license": "ISC", "optional": true, "dependencies": { "aproba": "^1.0.3 || ^2.0.0", @@ -8246,7 +7629,6 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "deprecated": "This package is no longer supported.", - "license": "ISC", "optional": true, "dependencies": { "are-we-there-yet": "^3.0.0", @@ -8262,7 +7644,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", "optional": true, "dependencies": { "inherits": "^2.0.3", @@ -8277,21 +7658,18 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/node-releases": { "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "license": "ISC", "dependencies": { "abbrev": "1" }, @@ -8307,7 +7685,6 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8317,7 +7694,6 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -8330,7 +7706,6 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "deprecated": "This package is no longer supported.", - "license": "ISC", "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -8342,14 +7717,12 @@ "version": "2.2.23", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8358,7 +7731,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "license": "MIT", "engines": { "node": ">= 6" } @@ -8367,7 +7739,6 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8379,7 +7750,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -8391,7 +7761,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", "dependencies": { "wrappy": "1" } @@ -8401,7 +7770,6 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -8417,7 +7785,6 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -8435,7 +7802,6 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, - "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -8459,7 +7825,6 @@ "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", "dev": true, - "license": "MIT", "dependencies": { "macos-release": "^2.5.0", "windows-release": "^4.0.0" @@ -8476,7 +7841,6 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8486,7 +7850,6 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -8502,7 +7865,6 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -8517,7 +7879,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "license": "MIT", "optional": true, "dependencies": { "aggregate-error": "^3.0.0" @@ -8534,7 +7895,6 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -8544,7 +7904,6 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -8565,7 +7924,6 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -8583,14 +7941,12 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8598,15 +7954,13 @@ "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "license": "MIT" + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -8615,7 +7969,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8625,7 +7978,6 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -8633,20 +7985,17 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-to-regexp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", - "license": "MIT" + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "license": "MIT", "engines": { "node": ">=8" } @@ -8654,21 +8003,18 @@ "node_modules/pg-connection-string": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.1.tgz", - "integrity": "sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==", - "license": "MIT" + "integrity": "sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==" }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -8681,7 +8027,6 @@ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } @@ -8691,7 +8036,6 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -8704,7 +8048,6 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -8718,7 +8061,6 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -8731,7 +8073,6 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -8747,7 +8088,6 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -8760,7 +8100,6 @@ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -8769,7 +8108,6 @@ "version": "2.1.11", "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.11.tgz", "integrity": "sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==", - "license": "0BSD", "engines": { "node": ">=12.0.0" } @@ -8779,7 +8117,6 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -8789,7 +8126,6 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -8805,7 +8141,6 @@ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, - "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -8818,7 +8153,6 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -8833,7 +8167,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -8844,21 +8177,18 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "license": "ISC", "optional": true }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "license": "MIT", "optional": true, "dependencies": { "err-code": "^2.0.2", @@ -8873,7 +8203,6 @@ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, - "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -8886,7 +8215,6 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -8900,7 +8228,6 @@ "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", "dev": true, - "license": "MIT", "dependencies": { "punycode": "^2.3.1" }, @@ -8913,7 +8240,6 @@ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "dev": true, - "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -8923,7 +8249,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", "engines": { "node": ">=6" } @@ -8932,7 +8257,6 @@ "version": "6.10.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -8947,8 +8271,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -8967,15 +8290,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -8984,7 +8305,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8993,7 +8313,6 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -9008,14 +8327,12 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9029,15 +8346,13 @@ "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -9049,7 +8364,6 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "license": "MIT", "dependencies": { "resolve": "^1.20.0" }, @@ -9060,14 +8374,12 @@ "node_modules/reflect-metadata": { "version": "0.1.14", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", - "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", - "license": "Apache-2.0" + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==" }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9076,7 +8388,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9085,14 +8396,12 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/resolve": { "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", - "license": "MIT", "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", @@ -9113,7 +8422,6 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -9126,7 +8434,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -9136,7 +8443,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -9146,7 +8452,6 @@ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } @@ -9156,7 +8461,6 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -9169,7 +8473,6 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "license": "MIT", "optional": true, "engines": { "node": ">= 4" @@ -9179,7 +8482,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -9190,7 +8492,6 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -9206,7 +8507,6 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -9229,7 +8529,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -9238,7 +8537,6 @@ "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -9260,21 +8558,18 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, - "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -9287,7 +8582,6 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -9306,7 +8600,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -9322,14 +8615,12 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -9341,7 +8632,6 @@ "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -9365,7 +8655,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -9373,15 +8662,13 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -9390,7 +8677,6 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -9404,21 +8690,18 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "license": "ISC" + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -9431,7 +8714,6 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -9441,7 +8723,6 @@ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -9459,7 +8740,6 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -9480,7 +8760,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -9499,7 +8778,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -9515,7 +8793,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -9533,7 +8810,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -9551,21 +8827,18 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "license": "MIT", "engines": { "node": ">=8" } @@ -9574,7 +8847,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "license": "MIT", "optional": true, "engines": { "node": ">= 6.0.0", @@ -9585,7 +8857,6 @@ "version": "2.8.7", "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", - "license": "MIT", "optional": true, "dependencies": { "ip-address": "^10.0.1", @@ -9600,7 +8871,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "license": "MIT", "optional": true, "dependencies": { "agent-base": "^6.0.2", @@ -9616,7 +8886,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">= 8" } @@ -9626,7 +8895,6 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -9637,7 +8905,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -9647,21 +8914,18 @@ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/sqlite3": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz", "integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==", "hasInstallScript": true, - "license": "BSD-3-Clause", "dependencies": { "@mapbox/node-pre-gyp": "^1.0.0", "node-addon-api": "^4.2.0", @@ -9683,7 +8947,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9692,7 +8955,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/sqlstring-sqlite/-/sqlstring-sqlite-0.1.1.tgz", "integrity": "sha512-9CAYUJ0lEUPYJrswqiqdINNSfq3jqWo/bFJ7tufdoNeSK0Fy+d1kFTxjqO9PIqza0Kri+ZtYMfPVf1aZaFOvrQ==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9701,7 +8963,6 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "license": "ISC", "optional": true, "dependencies": { "minipass": "^3.1.1" @@ -9715,7 +8976,6 @@ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -9728,7 +8988,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -9737,7 +8996,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9754,7 +9012,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -9762,14 +9019,12 @@ "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", - "license": "MIT", "engines": { "node": ">=0.6.19" } @@ -9779,7 +9034,6 @@ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, - "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -9792,7 +9046,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9806,7 +9059,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9819,7 +9071,6 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -9829,7 +9080,6 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -9839,7 +9089,6 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -9853,7 +9102,6 @@ "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", "deprecated": "Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net", "dev": true, - "license": "MIT", "dependencies": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.4", @@ -9875,7 +9123,6 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, - "license": "MIT", "bin": { "mime": "cli.js" }, @@ -9884,11 +9131,10 @@ } }, "node_modules/superagent/node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" }, @@ -9905,7 +9151,6 @@ "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", "deprecated": "Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net", "dev": true, - "license": "MIT", "dependencies": { "methods": "^1.1.2", "superagent": "^8.1.2" @@ -9918,7 +9163,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9931,7 +9175,6 @@ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -9944,7 +9187,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9953,10 +9195,9 @@ } }, "node_modules/swagger-ui-dist": { - "version": "5.31.1", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.31.1.tgz", - "integrity": "sha512-XdgQ8wkRGj1P0H0Vvo0TRMOQNz+8Q8J64/vcPOhxlaFx9eB3PYvHMXeyNrP46PXa9SUs/cg7OW/jm9U34KzUfA==", - "license": "Apache-2.0", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.31.0.tgz", + "integrity": "sha512-zSUTIck02fSga6rc0RZP3b7J7wgHXwLea8ZjgLA3Vgnb8QeOl3Wou2/j5QkzSGeoz6HusP/coYuJl33aQxQZpg==", "dependencies": { "@scarf/scarf": "=1.4.0" } @@ -9965,7 +9206,6 @@ "version": "4.6.3", "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.6.3.tgz", "integrity": "sha512-CDje4PndhTD2HkgyKH3pab+LKspDeB/NhPN2OF1j+piYIamQqBYwAXWESOT1Yju2xFg51bRW9sUng2WxDjzArw==", - "license": "MIT", "dependencies": { "swagger-ui-dist": ">=4.11.0" }, @@ -9981,7 +9221,6 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } @@ -9990,15 +9229,13 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/tapable": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -10012,7 +9249,6 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -10029,7 +9265,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "license": "ISC", "engines": { "node": ">=8" } @@ -10038,7 +9273,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -10049,14 +9283,12 @@ "node_modules/tar/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/tarn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", - "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -10066,7 +9298,6 @@ "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" @@ -10083,7 +9314,6 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -10102,7 +9332,6 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -10137,7 +9366,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -10150,7 +9378,6 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -10169,15 +9396,13 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -10191,28 +9416,24 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/throat": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/tildify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", - "license": "MIT", "engines": { "node": ">=8" } @@ -10222,7 +9443,6 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -10234,14 +9454,12 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" + "dev": true }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -10253,7 +9471,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", "engines": { "node": ">=0.6" } @@ -10263,7 +9480,6 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -10279,7 +9495,6 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -10289,7 +9504,6 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, - "license": "MIT", "dependencies": { "punycode": "^2.1.1" }, @@ -10302,7 +9516,6 @@ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, - "license": "MIT", "bin": { "tree-kill": "cli.js" } @@ -10312,7 +9525,6 @@ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", "dev": true, - "license": "MIT", "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", @@ -10356,7 +9568,6 @@ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", @@ -10377,7 +9588,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">= 12" } @@ -10386,7 +9596,6 @@ "version": "20.0.0", "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-20.0.0.tgz", "integrity": "sha512-JVmEJy2Wow5n/84I3igthL9sudQ8qzjh/6i4tmYCm6IqYyKFlNbJZi7oBdjyqcWSWYRu3CtL0xbT6fS03ESZIg==", - "license": "MIT", "dependencies": { "@ts-morph/common": "~0.21.0", "code-block-writer": "^12.0.0" @@ -10397,7 +9606,6 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, - "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -10441,7 +9649,6 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -10454,7 +9661,6 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz", "integrity": "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.7.0", @@ -10466,7 +9672,6 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -10479,7 +9684,6 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -10487,15 +9691,13 @@ "node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "license": "0BSD" + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -10510,15 +9712,13 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" + "dev": true }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -10531,7 +9731,6 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -10541,7 +9740,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -10553,7 +9751,6 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -10565,15 +9762,13 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "license": "MIT" + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, - "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } @@ -10583,7 +9778,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10596,7 +9790,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/umzug/-/umzug-3.3.1.tgz", "integrity": "sha512-jG3C35jti1YnCuH/k3fJEfHbnIG9c3Q9ITZ0B9eWwnXngh/AUd0mRHv8OdpE2Q9VoK7tB6xL990JrMCr0LtfNA==", - "license": "MIT", "dependencies": { "@rushstack/ts-command-line": "^4.12.2", "emittery": "^0.13.0", @@ -10612,7 +9805,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -10621,7 +9813,6 @@ "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -10634,7 +9825,6 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10653,7 +9843,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -10665,7 +9854,6 @@ "version": "3.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=14.16" }, @@ -10677,7 +9865,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "license": "ISC", "optional": true, "dependencies": { "unique-slug": "^2.0.0" @@ -10687,7 +9874,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "license": "ISC", "optional": true, "dependencies": { "imurmurhash": "^0.1.4" @@ -10697,7 +9883,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -10706,7 +9891,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -10730,7 +9914,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -10746,7 +9929,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -10756,7 +9938,6 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, - "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -10765,14 +9946,12 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -10781,7 +9960,6 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -10790,15 +9968,13 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, - "license": "ISC", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", @@ -10812,7 +9988,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -10823,7 +9998,6 @@ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, - "license": "MIT", "dependencies": { "browser-process-hrtime": "^1.0.0" } @@ -10833,7 +10007,6 @@ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "dev": true, - "license": "MIT", "dependencies": { "xml-name-validator": "^3.0.0" }, @@ -10846,7 +10019,6 @@ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } @@ -10856,7 +10028,6 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "dev": true, - "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -10870,7 +10041,6 @@ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, - "license": "MIT", "dependencies": { "defaults": "^1.0.3" } @@ -10880,7 +10050,6 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=10.4" } @@ -10890,7 +10059,6 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", @@ -10938,17 +10106,15 @@ "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/webpack-sources": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", - "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -10959,7 +10125,6 @@ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, - "license": "MIT", "dependencies": { "iconv-lite": "0.4.24" } @@ -10968,15 +10133,13 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/whatwg-url": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, - "license": "MIT", "dependencies": { "lodash": "^4.7.0", "tr46": "^2.1.0", @@ -10991,7 +10154,6 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "devOptional": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -11006,7 +10168,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } @@ -11016,7 +10177,6 @@ "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", "dev": true, - "license": "MIT", "dependencies": { "execa": "^4.0.2" }, @@ -11032,7 +10192,6 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -11056,7 +10215,6 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, - "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -11072,7 +10230,6 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=8.12.0" } @@ -11082,7 +10239,6 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11091,7 +10247,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -11107,15 +10262,13 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -11128,7 +10281,6 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -11149,21 +10301,18 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true, - "license": "Apache-2.0" + "dev": true }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", "engines": { "node": ">=0.4" } @@ -11172,7 +10321,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", "engines": { "node": ">=10" } @@ -11181,15 +10329,13 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 6" } @@ -11198,7 +10344,6 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -11217,7 +10362,6 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } @@ -11226,7 +10370,6 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "license": "ISC", "engines": { "node": ">=12" } @@ -11236,7 +10379,6 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -11246,7 +10388,6 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, diff --git a/backend/omr-service/package-lock.json b/backend/omr-service/package-lock.json index 3fcea6b1800f9ef6adddf83928ee293c42df9cb7..e1bce1ef2d6d7cfc55e50d0d3fb1bb48fe67d3b8 100644 --- a/backend/omr-service/package-lock.json +++ b/backend/omr-service/package-lock.json @@ -60,6 +60,34 @@ "node": ">= 14" } }, + "../omr-lite": { + "name": "starry-omr-lite", + "version": "1.0.0", + "extraneous": true, + "license": "ISC", + "devDependencies": { + "@rollup/plugin-commonjs": "^21.1.0", + "@rollup/plugin-json": "^5.0.2", + "@rollup/plugin-node-resolve": "^15.0.1", + "@rollup/plugin-typescript": "^10.0.1", + "@types/three": "^0.139.0", + "cpy-cli": "^4.1.0", + "cross-env": "^7.0.3", + "dts-cli": "^1.5.1", + "rimraf": "^3.0.2", + "rollup": "^2.77.4-1", + "rollup-plugin-dts": "^5.0.0", + "rollup-plugin-node-polyfills": "^0.2.1", + "rollup-plugin-terser": "^7.0.2", + "rollup-plugin-ts": "^3.0.2", + "ts-node": "^10.4.0", + "typescript": "^4.9.4", + "yargs": "^17.3.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/@emnapi/runtime": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", @@ -70,9 +98,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", - "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", "cpu": [ "ppc64" ], @@ -86,9 +114,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", - "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", "cpu": [ "arm" ], @@ -102,9 +130,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", - "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", "cpu": [ "arm64" ], @@ -118,9 +146,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", - "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", "cpu": [ "x64" ], @@ -134,9 +162,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", - "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", "cpu": [ "arm64" ], @@ -150,9 +178,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", - "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", "cpu": [ "x64" ], @@ -166,9 +194,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", - "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", "cpu": [ "arm64" ], @@ -182,9 +210,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", - "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", "cpu": [ "x64" ], @@ -198,9 +226,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", - "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", "cpu": [ "arm" ], @@ -214,9 +242,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", - "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", "cpu": [ "arm64" ], @@ -230,9 +258,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", - "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", "cpu": [ "ia32" ], @@ -246,9 +274,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", - "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", "cpu": [ "loong64" ], @@ -262,9 +290,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", - "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", "cpu": [ "mips64el" ], @@ -278,9 +306,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", - "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", "cpu": [ "ppc64" ], @@ -294,9 +322,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", - "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", "cpu": [ "riscv64" ], @@ -310,9 +338,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", - "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", "cpu": [ "s390x" ], @@ -326,9 +354,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", - "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", "cpu": [ "x64" ], @@ -342,9 +370,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", - "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", "cpu": [ "arm64" ], @@ -358,9 +386,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", - "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", "cpu": [ "x64" ], @@ -374,9 +402,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", - "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", "cpu": [ "arm64" ], @@ -390,9 +418,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", - "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", "cpu": [ "x64" ], @@ -406,9 +434,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", - "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", "cpu": [ "arm64" ], @@ -422,9 +450,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", - "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", "cpu": [ "x64" ], @@ -438,9 +466,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", - "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", "cpu": [ "arm64" ], @@ -454,9 +482,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", - "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", "cpu": [ "ia32" ], @@ -470,9 +498,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", - "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", "cpu": [ "x64" ], @@ -601,6 +629,31 @@ "p-limit": "^3.1.0" } }, + "node_modules/@fastify/static/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@fastify/static/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@fastify/websocket": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/@fastify/websocket/-/websocket-10.0.1.tgz", @@ -1511,9 +1564,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.19.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz", - "integrity": "sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==", + "version": "20.19.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.31.tgz", + "integrity": "sha512-5jsi0wpncvTD33Sh1UCgacK37FFwDn+EG7wCmEvs62fCvBL+n8/76cAYDok21NF6+jaVWIqKwCZyX7Vbu8eB3A==", "dev": true, "dependencies": { "undici-types": "~6.21.0" @@ -1564,33 +1617,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@vitest/snapshot": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", @@ -1677,14 +1703,6 @@ "node": ">=0.4.0" } }, - "node_modules/adm-zip": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", - "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", - "engines": { - "node": ">=12.0" - } - }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -1697,9 +1715,9 @@ } }, "node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -1780,6 +1798,19 @@ "node": ">=10" } }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -1835,12 +1866,6 @@ } ] }, - "node_modules/boolean": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info." - }, "node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -2034,38 +2059,6 @@ "node": ">=6" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -2087,11 +2080,6 @@ "node": ">=8" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -2123,6 +2111,19 @@ "stream-shift": "^1.0.2" } }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2136,31 +2137,10 @@ "once": "^1.4.0" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" - }, "node_modules/esbuild": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", - "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, "hasInstallScript": true, "bin": { @@ -2170,32 +2150,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.3", - "@esbuild/android-arm": "0.27.3", - "@esbuild/android-arm64": "0.27.3", - "@esbuild/android-x64": "0.27.3", - "@esbuild/darwin-arm64": "0.27.3", - "@esbuild/darwin-x64": "0.27.3", - "@esbuild/freebsd-arm64": "0.27.3", - "@esbuild/freebsd-x64": "0.27.3", - "@esbuild/linux-arm": "0.27.3", - "@esbuild/linux-arm64": "0.27.3", - "@esbuild/linux-ia32": "0.27.3", - "@esbuild/linux-loong64": "0.27.3", - "@esbuild/linux-mips64el": "0.27.3", - "@esbuild/linux-ppc64": "0.27.3", - "@esbuild/linux-riscv64": "0.27.3", - "@esbuild/linux-s390x": "0.27.3", - "@esbuild/linux-x64": "0.27.3", - "@esbuild/netbsd-arm64": "0.27.3", - "@esbuild/netbsd-x64": "0.27.3", - "@esbuild/openbsd-arm64": "0.27.3", - "@esbuild/openbsd-x64": "0.27.3", - "@esbuild/openharmony-arm64": "0.27.3", - "@esbuild/sunos-x64": "0.27.3", - "@esbuild/win32-arm64": "0.27.3", - "@esbuild/win32-ia32": "0.27.3", - "@esbuild/win32-x64": "0.27.3" + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" } }, "node_modules/escape-html": { @@ -2203,17 +2183,6 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -2262,18 +2231,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fast-content-type-parse": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz", @@ -2433,9 +2390,9 @@ ] }, "node_modules/fastify/node_modules/sonic-boom": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz", - "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", "dependencies": { "atomic-sleep": "^1.0.0" } @@ -2538,6 +2495,11 @@ "node": ">=10" } }, + "node_modules/gauge/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/get-func-name": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", @@ -2560,9 +2522,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.13.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", - "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.1.tgz", + "integrity": "sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -2590,59 +2552,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/global-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", - "dependencies": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" - }, - "engines": { - "node": ">=10.0" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -2771,11 +2680,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, "node_modules/light-my-request": { "version": "5.14.0", "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.14.0.tgz", @@ -2842,17 +2746,6 @@ "semver": "bin/semver.js" } }, - "node_modules/matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "dependencies": { - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -3126,14 +3019,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/obliterator": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz", @@ -3171,35 +3056,33 @@ } }, "node_modules/onnxruntime-common": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.24.1.tgz", - "integrity": "sha512-UnV15u4p4XxoIV+jFP4hXPsW93s3QrwLSpi20HUDYHoTfI4z4sjzex3L4XDOxGGZJ/M/catrwAG2go958UQq0w==" + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.12.1.tgz", + "integrity": "sha512-tWr/9nkQtzc61SH6zSE+3j2/HWBLgVcrXqS5HqQFitJ6hYNmNDcXwV2LYtFDH6CB9Qg987BMMv0ldaDUdB78VA==" }, "node_modules/onnxruntime-node": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.24.1.tgz", - "integrity": "sha512-Ex/oUXKdhDoxvlNxBT3oYtW0MH88yYpPlXQeVQUXpcJQmN24usd/8RCoPLN5kCHwDsiZ+nqsnjciyFRl423dQw==", - "hasInstallScript": true, + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.12.1.tgz", + "integrity": "sha512-H06kB4tRcZf93YDipL2nG5Oqs8WGhZzpWMgWUhH8r6ciGTZ85JrZpHuqRIabTS6Rls/IjbnBcrPXYPZnSgXqkQ==", "os": [ "win32", "darwin", "linux" ], "dependencies": { - "adm-zip": "^0.5.16", - "global-agent": "^3.0.0", - "onnxruntime-common": "1.24.1" + "onnxruntime-common": "~1.12.1" } }, "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3364,21 +3247,6 @@ "split2": "^4.0.0" } }, - "node_modules/pino-abstract-transport/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/pino-std-serializers": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", @@ -3515,16 +3383,18 @@ "dev": true }, "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/real-require": { @@ -3629,22 +3499,6 @@ "node": "*" } }, - "node_modules/roarr": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", - "dependencies": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/rollup": { "version": "4.57.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", @@ -3730,9 +3584,9 @@ "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" }, "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "bin": { "semver": "bin/semver.js" }, @@ -3740,25 +3594,6 @@ "node": ">=10" } }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" - }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -3845,9 +3680,16 @@ "dev": true }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/simple-concat": { "version": "1.0.1", @@ -3931,11 +3773,6 @@ "node": ">= 10.x" } }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" - }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -4141,17 +3978,6 @@ "node": ">=4" } }, - "node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -4843,11 +4669,12 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" diff --git a/backend/omr-service/src/db/backfillHash.ts b/backend/omr-service/src/db/backfillHash.ts new file mode 100644 index 0000000000000000000000000000000000000000..fa3fa4b5158f9855661027a98b0ba060826c1046 --- /dev/null +++ b/backend/omr-service/src/db/backfillHash.ts @@ -0,0 +1,117 @@ +import { starry } from 'starry-omr'; +import { pool } from './client.js'; + +const BATCH_SIZE = 500; + +async function backfillHash() { + console.log('Backfilling hash for issue_measures...'); + + let updated = 0; + let failed = 0; + let duplicateConflicts = 0; + + // Phase 1: Compute hashes in memory (without writing) to detect duplicates first + console.log('Phase 1: Computing hashes...'); + const hashMap = new Map(); + let lastId = '00000000-0000-0000-0000-000000000000'; + + while (true) { + const { rows } = await pool.query( + 'SELECT id, score_id, measure_index, measure, status, updated_at FROM issue_measures WHERE hash IS NULL AND id > $1 ORDER BY id LIMIT $2', + [lastId, BATCH_SIZE] + ); + + if (rows.length === 0) break; + + console.log(` Computing batch of ${rows.length} rows (after id ${lastId.slice(0, 8)}...)...`); + + for (const row of rows) { + try { + const recovered = starry.recoverJSON(row.measure, starry); + const hash = recovered.regulationHash0; + if (!hash) { + console.warn(` Row ${row.id}: no regulationHash0, skipping`); + failed++; + continue; + } + + const key = `${row.score_id}::${hash}`; + if (!hashMap.has(key)) hashMap.set(key, []); + hashMap.get(key)!.push({ id: row.id, hash, score_id: row.score_id, measure_index: row.measure_index, updated_at: row.updated_at }); + } catch (err: any) { + console.error(` Row ${row.id}: ${err.message}`); + failed++; + } + } + + lastId = rows[rows.length - 1].id; + } + + console.log(` Computed ${hashMap.size} unique (score_id, hash) groups from NULL-hash rows.`); + + // Phase 2: Check which hashes already exist (from previously backfilled rows) + const allHashes = [...new Set([...hashMap.values()].flat().map((r) => r.hash))]; + const { rows: existingRows } = await pool.query('SELECT id, score_id, hash, updated_at FROM issue_measures WHERE hash = ANY($1) AND status > 0', [ + allHashes, + ]); + const existingSet = new Set(existingRows.map((r) => `${r.score_id}::${r.hash}`)); + console.log(` ${existingSet.size} hashes already exist in DB from previous backfill.`); + + // Phase 3: For each group, decide what to keep and write + console.log('\nPhase 2: Writing hashes and deduplicating...'); + + for (const [key, rows] of hashMap) { + const alreadyExists = existingSet.has(key); + + if (rows.length === 1 && !alreadyExists) { + // Simple case: single row, no conflict + try { + await pool.query('UPDATE issue_measures SET hash = $1 WHERE id = $2', [rows[0].hash, rows[0].id]); + updated++; + } catch (err: any) { + console.error(` Row ${rows[0].id}: ${err.message}`); + failed++; + } + } else { + // Duplicate case: multiple NULL-hash rows map to same (score_id, hash), + // or a row with this hash already exists. + // Sort by updated_at DESC to find the best candidate + rows.sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime()); + + if (alreadyExists) { + // All NULL-hash rows are duplicates of an already-backfilled row; delete them all + const idsToDelete = rows.map((r) => r.id); + console.log(` ${key}: already exists, deleting ${idsToDelete.length} duplicate NULL-hash rows`); + await pool.query('DELETE FROM issue_measures WHERE id = ANY($1)', [idsToDelete]); + duplicateConflicts += idsToDelete.length; + } else { + // Keep the most recent, update its hash, delete the rest + const keeper = rows[0]; + const idsToDelete = rows.slice(1).map((r) => r.id); + try { + await pool.query('UPDATE issue_measures SET hash = $1 WHERE id = $2', [keeper.hash, keeper.id]); + updated++; + } catch (err: any) { + console.error(` Row ${keeper.id}: ${err.message}`); + failed++; + } + if (idsToDelete.length > 0) { + console.log(` ${key}: keeping ${keeper.id.slice(0, 8)}, deleting ${idsToDelete.length} duplicates`); + await pool.query('DELETE FROM issue_measures WHERE id = ANY($1)', [idsToDelete]); + duplicateConflicts += idsToDelete.length; + } + } + } + } + + console.log(`\nUpdated: ${updated}, Failed: ${failed}, Duplicates removed: ${duplicateConflicts}`); + + console.log('\nBackfill complete.'); +} + +backfillHash() + .then(() => process.exit(0)) + .catch((err) => { + console.error('Backfill failed:', err); + process.exit(1); + }); diff --git a/backend/omr-service/src/db/migrate.ts b/backend/omr-service/src/db/migrate.ts index f992cd66d3f76607324b4a3ec5f612c289753e99..8e040cf2bbce2691e4e9907a90aa277eeee5b456 100644 --- a/backend/omr-service/src/db/migrate.ts +++ b/backend/omr-service/src/db/migrate.ts @@ -133,6 +133,22 @@ const migrations = [ ALTER TABLE issue_measures ADD COLUMN IF NOT EXISTS annotator VARCHAR(100); `, }, + { + name: '009_add_hash_to_issue_measures', + sql: ` + ALTER TABLE issue_measures ADD COLUMN IF NOT EXISTS hash VARCHAR(64); + CREATE INDEX IF NOT EXISTS idx_issue_measures_hash_active + ON issue_measures(hash) WHERE status > 0 AND hash IS NOT NULL; + `, + }, + { + name: '010_switch_issue_measures_unique_index', + sql: ` + DROP INDEX IF EXISTS idx_issue_measures_score_measure; + CREATE UNIQUE INDEX IF NOT EXISTS idx_issue_measures_score_hash + ON issue_measures(score_id, hash) WHERE status > 0 AND hash IS NOT NULL; + `, + }, ]; async function runMigrations() { diff --git a/backend/omr-service/src/lib/regulateWithProgress.ts b/backend/omr-service/src/lib/regulateWithProgress.ts index 3f2bc9e50ac8e982457de3e2403cbde30787e633..a4f12cb87133462ce168a3f1323d1f0ae601cc25 100644 --- a/backend/omr-service/src/lib/regulateWithProgress.ts +++ b/backend/omr-service/src/lib/regulateWithProgress.ts @@ -76,14 +76,15 @@ export async function regulateScoreWithProgress(scoreId: string): Promise }); }, onSaveIssueMeasure: (data) => { + const editable = new starry.EditableMeasure(data.measure); + const hash = editable.regulationHash0; issueMeasureService - .upsert(scoreId, data.measureIndex, new starry.EditableMeasure(data.measure), data.status) + .upsert(scoreId, hash, editable, data.status, undefined, data.measureIndex) .catch((err: any) => console.error('[regulateWithProgress] failed to save issue measure:', err)); }, }); - // 5. Save regulated score back to DB - await scoreService.updateScore(scoreId, { data: (score as any).toJSON() }); + // No need to save score, solutions already saved in cache. // 6. Broadcast completed broadcast(scoreId, { type: 'completed', scoreId, stat }); diff --git a/backend/omr-service/src/routes/issueMeasures.ts b/backend/omr-service/src/routes/issueMeasures.ts index 1b0a0baed178bcdf6f70d91a3c86195a39358c72..d33405355e93e98468279c9c3ed98c23508134d7 100644 --- a/backend/omr-service/src/routes/issueMeasures.ts +++ b/backend/omr-service/src/routes/issueMeasures.ts @@ -1,14 +1,11 @@ import { FastifyInstance } from 'fastify'; +import { starry } from 'starry-omr'; import * as issueMeasureService from '../services/issueMeasure.service.js'; interface ScoreParams { id: string; } -interface MeasureParams extends ScoreParams { - measureIndex: string; -} - interface ListQuery { offset?: string; limit?: string; @@ -22,6 +19,15 @@ interface UpsertBody { annotator?: string; } +interface BatchGetBody { + hashes: string[]; +} + +function computeHash(measure: any): string { + const recovered = starry.recoverJSON(measure, starry); + return recovered.regulationHash0; +} + export default async function issueMeasuresRoutes(fastify: FastifyInstance) { // List issue measures for a score fastify.get<{ Params: ScoreParams; Querystring: ListQuery }>('/scores/:id/issueMeasures', async (request) => { @@ -47,11 +53,26 @@ export default async function issueMeasuresRoutes(fastify: FastifyInstance) { return { code: 400, message: 'measureIndex, measure, and status are required' }; } - const result = await issueMeasureService.upsert(request.params.id, measureIndex, measure, status, annotator); + const hash = computeHash(measure); + const result = await issueMeasureService.upsert(request.params.id, hash, measure, status, annotator, measureIndex); return { code: 0, data: result }; }); + // Batch get issue measures by hash + fastify.post<{ Body: BatchGetBody }>('/issueMeasures/batchGet', async (request, reply) => { + const { hashes } = request.body || {}; + + if (!Array.isArray(hashes) || hashes.length === 0) { + reply.code(400); + return { code: 400, message: 'hashes array is required' }; + } + + const results = await issueMeasureService.batchGetByHash(hashes); + + return { code: 0, data: results }; + }); + // Delete all issue measures for a score fastify.delete<{ Params: ScoreParams }>('/scores/:id/issueMeasures', async (request) => { const count = await issueMeasureService.deleteByScore(request.params.id); diff --git a/backend/omr-service/src/routes/tag.ts b/backend/omr-service/src/routes/tag.ts index c986150ed8023b66196c00ef6f22b979ffe71f17..4b4b9f89c0abcfee1ef8efe681455524a27893e0 100644 --- a/backend/omr-service/src/routes/tag.ts +++ b/backend/omr-service/src/routes/tag.ts @@ -31,7 +31,6 @@ export default async function tagRoutes(fastify: FastifyInstance) { const tag = await tagService.getOrCreateTag(name); - reply.code(201); return { code: 0, data: tag, diff --git a/backend/omr-service/src/scripts/score-hashes.ts b/backend/omr-service/src/scripts/score-hashes.ts new file mode 100644 index 0000000000000000000000000000000000000000..493eb7eb3f599a3b2f76e727427a0354cad0b6ff --- /dev/null +++ b/backend/omr-service/src/scripts/score-hashes.ts @@ -0,0 +1,40 @@ +/** + * score-hashes.ts — Print all regulation hashes for a score's measures. + * + * Usage: + * npx tsx src/scripts/score-hashes.ts + * + * Output: JSON array of SHA1 hash strings to stdout. + */ + +import { starry } from 'starry-omr'; +import { pool, query } from '../db/client.js'; + +const scoreId = process.argv[2]; +if (!scoreId) { + console.error('Usage: npx tsx src/scripts/score-hashes.ts '); + process.exit(1); +} + +const { rows } = await query('SELECT data FROM scores WHERE id = $1', [scoreId]); +if (!rows.length) { + console.error(`Score not found: ${scoreId}`); + process.exit(1); +} + +const scoreData = rows[0].data; +const score = starry.recoverJSON(scoreData, starry); +score.assemble(); +const spartito = score.makeSpartito(); + +const hashes = new Set(); +for (const measure of spartito.measures) { + const editable = new starry.EditableMeasure(measure); + for (const h of editable.regulationHashes) { + hashes.add(h); + } +} + +console.log(JSON.stringify(Array.from(hashes))); +await pool.end(); +process.exit(0); diff --git a/backend/omr-service/src/services/issueMeasure.service.ts b/backend/omr-service/src/services/issueMeasure.service.ts index a666fb8394fc3cbe0f631692f9b444200eb6d854..99ac32b1317bf696f7ebaf0f723bc590af12daca 100644 --- a/backend/omr-service/src/services/issueMeasure.service.ts +++ b/backend/omr-service/src/services/issueMeasure.service.ts @@ -4,6 +4,7 @@ interface IssueMeasureRow { id: string; score_id: string; measure_index: number; + hash: string | null; measure: any; status: number; by_user: boolean; @@ -16,6 +17,7 @@ interface IssueMeasureResult { id: string; scoreId: string; measureIndex: number; + hash: string | null; measure: any; status: number; byUser: boolean; @@ -28,6 +30,7 @@ function rowToResult(row: IssueMeasureRow): IssueMeasureResult { id: row.id, scoreId: row.score_id, measureIndex: row.measure_index, + hash: row.hash, measure: row.measure, status: row.status, byUser: row.by_user, @@ -65,32 +68,52 @@ export async function list( }; } -export async function upsert(scoreId: string, measureIndex: number, measure: any, status: number, annotator?: string | null): Promise { - // Try to find existing record for this score+measure (any status) - const { rows: existing } = await query( - 'SELECT * FROM issue_measures WHERE score_id = $1 AND measure_index = $2 ORDER BY updated_at DESC LIMIT 1', - [scoreId, measureIndex] - ); +export async function upsert( + scoreId: string, + hash: string, + measure: any, + status: number, + annotator?: string | null, + measureIndex?: number +): Promise { + // Try to find existing record for this score+hash (any status) + const { rows: existing } = await query('SELECT * FROM issue_measures WHERE score_id = $1 AND hash = $2 ORDER BY updated_at DESC LIMIT 1', [ + scoreId, + hash, + ]); let row: IssueMeasureRow; // undefined = not provided (preserve existing), null = explicitly cleared const annotatorProvided = annotator !== undefined; if (existing.length > 0) { + const params: any[] = [JSON.stringify(measure), status, annotator ?? null]; + const setClauses = ['measure = $1', 'status = $2', `annotator = ${annotatorProvided ? '$3' : 'COALESCE($3, annotator)'}`, 'updated_at = NOW()']; + // Update measure_index if provided (parameterized to prevent injection) + if (measureIndex !== undefined) { + params.push(measureIndex); + setClauses.push(`measure_index = $${params.length}`); + } + params.push(existing[0].id); const { rows } = await query( `UPDATE issue_measures - SET measure = $1, status = $2, annotator = ${annotatorProvided ? '$3' : 'COALESCE($3, annotator)'}, updated_at = NOW() - WHERE id = $4 + SET ${setClauses.join(', ')} + WHERE id = $${params.length} RETURNING *`, - [JSON.stringify(measure), status, annotator ?? null, existing[0].id] + params ); row = rows[0]; } else { const { rows } = await query( - `INSERT INTO issue_measures (score_id, measure_index, measure, status, by_user, annotator) - VALUES ($1, $2, $3, $4, false, $5) + `INSERT INTO issue_measures (score_id, measure_index, hash, measure, status, by_user, annotator) + VALUES ($1, $2, $3, $4, $5, false, $6) + ON CONFLICT (score_id, hash) WHERE status > 0 AND hash IS NOT NULL + DO UPDATE SET measure = EXCLUDED.measure, status = EXCLUDED.status, + annotator = ${annotatorProvided ? 'EXCLUDED.annotator' : 'COALESCE(EXCLUDED.annotator, issue_measures.annotator)'}, + measure_index = COALESCE(EXCLUDED.measure_index, issue_measures.measure_index), + updated_at = NOW() RETURNING *`, - [scoreId, measureIndex, JSON.stringify(measure), status, annotator ?? null] + [scoreId, measureIndex ?? -1, hash, JSON.stringify(measure), status, annotator ?? null] ); row = rows[0]; } @@ -98,6 +121,22 @@ export async function upsert(scoreId: string, measureIndex: number, measure: any return rowToResult(row); } +export async function batchGetByHash(hashes: string[]): Promise { + if (hashes.length === 0) return []; + + // Dedupe and cap batch size + const uniqueHashes = [...new Set(hashes)].slice(0, 1000); + + const { rows } = await query('SELECT * FROM issue_measures WHERE hash = ANY($1)', [uniqueHashes]); + + return rows.map(rowToResult); +} + +export async function getByScoreId(scoreId: string): Promise { + const { rows } = await query('SELECT * FROM issue_measures WHERE score_id = $1 ORDER BY measure_index ASC', [scoreId]); + return rows.map(rowToResult); +} + export async function deleteByScore(scoreId: string): Promise { const result = await query('DELETE FROM issue_measures WHERE score_id = $1', [scoreId]); return result.rowCount ?? 0; diff --git a/backend/omr-service/src/services/measure.service.ts b/backend/omr-service/src/services/measure.service.ts index 454f9f651f1296e3c8d40300d341941c42dde99b..313de0f923013ce1fce2c76871bf47c18a8a85cb 100644 --- a/backend/omr-service/src/services/measure.service.ts +++ b/backend/omr-service/src/services/measure.service.ts @@ -102,7 +102,16 @@ export async function updateMeasure(scoreId: string, index: number, patch: any) // Apply patch fields to the measure const measure = spartito.measures[index]; - if (patch.events) measure.events = starry.recoverJSON(patch.events, starry); + if (patch.events) { + measure.events = starry.recoverJSON(patch.events, starry); + // Clear stale multiplier on events — multiplier is an internal field set by + // the duration setter for non-standard values. When events are submitted via + // PUT with explicit division/dots, any leftover multiplier from a previous + // regulation is stale and corrupts the duration computation. + for (const event of measure.events) { + if (event.multiplier) event.multiplier = undefined; + } + } if (patch.voices) measure.voices = patch.voices; if (patch.duration !== undefined) measure.duration = patch.duration; if (patch.contexts) measure.contexts = starry.recoverJSON(patch.contexts, starry); @@ -119,6 +128,9 @@ export async function updateMeasure(scoreId: string, index: number, patch: any) voices: measure.voices, }); + // Sync duration from the PatchMeasure getter (computes from events+voices) + measure.duration = patchMeasure.duration; + const patches = (score as any).patches || []; const existingIdx = patches.findIndex((p: any) => p.measureIndex === index); if (existingIdx >= 0) { @@ -312,6 +324,7 @@ export async function annotateMeasure(scoreId: string, index: number, body: Anno if (measure.events[idx]) { measure.events[idx].division = value.division; measure.events[idx].dots = value.dots; + measure.events[idx].multiplier = undefined; } } } @@ -335,6 +348,7 @@ export async function annotateMeasure(scoreId: string, index: number, body: Anno event.tick = undefined; event.tickGroup = undefined; event.timeWarp = undefined; + event.multiplier = undefined; } if (policy === 'advanced') { @@ -397,7 +411,8 @@ export async function annotateMeasure(scoreId: string, index: number, body: Anno // Save issue_measures (outside transaction) try { - await issueMeasureService.upsert(scoreId, index, measure.toJSON(), body.status ?? 0, body.annotator); + const hash = measure.regulationHash0; + await issueMeasureService.upsert(scoreId, hash, measure.toJSON(), body.status ?? 0, body.annotator, index); saved.issueMeasure = true; } catch (err) { console.error('[annotate] failed to save issue_measure:', err); diff --git a/backend/omr-service/src/services/predictor.service.ts b/backend/omr-service/src/services/predictor.service.ts index 5716e162814516935508e48ce818c5e0e34b20e0..aa7423403ea61fa01f90fb0486417f89638fe9b7 100644 --- a/backend/omr-service/src/services/predictor.service.ts +++ b/backend/omr-service/src/services/predictor.service.ts @@ -227,7 +227,7 @@ async function extractStaffImagesFromPage(imageData: Buffer, layout: any): Promi const interval = layout.interval || layout.detection?.interval || 10; for (const area of layout.detection.areas) { - const areaInterval = area.staves?.interval || interval; + const areaInterval = area.staves?.interval ?? interval; const unitScaling = UNIT_SIZE / areaInterval; const middleRhos = area.staves?.middleRhos || []; @@ -267,11 +267,12 @@ async function extractStaffImagesFromPage(imageData: Buffer, layout: any): Promi staffImages.push(staffBuffer); // Store staff image metadata in layout (matching Python service format) + const phi1 = area.staves?.phi1 ?? 0; area.staff_images.push({ hash: null, image: { type: 'Buffer', data: Array.from(staffBuffer) }, position: { - x: -STAFF_PADDING_LEFT / UNIT_SIZE, + x: -STAFF_PADDING_LEFT / UNIT_SIZE - (areaInterval ? phi1 / areaInterval : 0), y: -STAFF_HEIGHT_UNITS / 2, width: targetWidth / UNIT_SIZE, height: STAFF_HEIGHT_UNITS, diff --git a/backend/omr-service/src/services/solutionCache.service.ts b/backend/omr-service/src/services/solutionCache.service.ts index 18116067aa9feb263e5c95d5719b55138238f541..372e45a66d1a2f4f9ce3084ecbf840d0f37c7a86 100644 --- a/backend/omr-service/src/services/solutionCache.service.ts +++ b/backend/omr-service/src/services/solutionCache.service.ts @@ -18,7 +18,10 @@ export async function set(name: string, value: any): Promise { return; } - const priority = typeof value.priority === 'number' ? value.priority : null; + // NaN is treated as -inf (lowest priority): normalize to NULL so any finite + // priority will overwrite it, and it never blocks a valid solution. + const rawPriority = typeof value.priority === 'number' ? value.priority : null; + const priority = rawPriority !== null && isFinite(rawPriority) ? rawPriority : null; // Upsert with priority check: only overwrite if new priority >= old priority await query( @@ -30,7 +33,9 @@ export async function set(name: string, value: any): Promise { updated_at = NOW() WHERE solution_cache.priority IS NULL OR EXCLUDED.priority IS NULL - OR EXCLUDED.priority >= solution_cache.priority`, + OR EXCLUDED.priority >= solution_cache.priority + OR solution_cache.priority = 'NaN'::float8 + OR solution_cache.priority = 0`, [name, JSON.stringify(value), priority] ); } diff --git a/backend/omr/dist/gauge-server.js b/backend/omr/dist/gauge-server.js index 4b78a6bea1fa2dda0add9383233b88cf6b0d32f8..e7528933e498a724ecdf7cd9feaff3ef69998091 100644 --- a/backend/omr/dist/gauge-server.js +++ b/backend/omr/dist/gauge-server.js @@ -1,2 +1,2 @@ -"use strict";var e=require("yargs"),t=require("msgpackr"),i=require("zeromq"),r=require("skia-canvas");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=n(require("gl"));globalThis.ImageData=r.ImageData;const o=e=>{const t=[];for(const i of e)for(const e of i)t.push(e);return t};class GLCanvas{constructor(e){this._width=256,this._height=192,this.ctx=e}get width(){return this._width}set width(e){this._width=e;this.ctx.getExtension("STACKGL_resize_drawingbuffer").resize(e,this.height)}get height(){return this._height}set height(e){this._height=e;this.ctx.getExtension("STACKGL_resize_drawingbuffer").resize(this.width,e)}addEventListener(e){}async toBuffer(){const e=new Uint8Array(this.width*this.height*4);this.ctx.readPixels(0,0,this.width,this.height,this.ctx.RGBA,this.ctx.UNSIGNED_BYTE,e);const t=new r.Canvas(this.width,this.height);return t.getContext("2d").putImageData(new r.ImageData(new Uint8ClampedArray(e),this.width,this.height),0,0),t.toBuffer("png")}}const s=a.default(512,192,{antialias:!0});const h=new class GaugeRenderer{constructor(e){this.width=256,this.height=192,this.source=e.source,this.gauge=e.gauge,this.canvas=new GLCanvas(s),s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.HIGH_FLOAT),s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT),s.getExtension("OES_element_index_uint"),this.program=s.createProgram();const t=s.createShader(s.VERTEX_SHADER);s.shaderSource(t,"//#version 300 es\n//#define attribute in\n//#define varying out\n//#define texture2D texture\n\nprecision highp float;\nprecision highp int;\n\n#define HIGH_PRECISION\n#define SHADER_NAME MeshBasicMaterial\n#define VERTEX_TEXTURES\n#define USE_MAP\n#define USE_UV\n#define BONE_TEXTURE\n#define DOUBLE_SIDED\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPosition;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n\n#ifdef USE_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\n\nvoid main() {\n#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif\n\n\tvec3 transformed = vec3( position );\n\n\tvec4 mvPosition = vec4( transformed, 1.0 );\n\tmvPosition = modelViewMatrix * mvPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n}\n"),s.compileShader(t);const i=s.getShaderInfoLog(t);i&&console.warn("vs log:",i);const r=s.createShader(s.FRAGMENT_SHADER);s.shaderSource(r,"//#version 300 es\n//#define varying in\n//out highp vec4 pc_fragColor;\n//#define gl_FragColor pc_fragColor\n//#define texture2D texture\n\nprecision highp float;\nprecision highp int;\n\n#define HIGH_PRECISION\n#define SHADER_NAME MeshBasicMaterial\n#define USE_MAP\n#define USE_UV\n#define DOUBLE_SIDED\nuniform vec3 cameraPosition;\n\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 mapTexelToLinear( vec4 value ) { return LinearToLinear( value ); }\n\nuniform vec3 diffuse;\nuniform float opacity;\n\n#if defined( USE_UV )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n\n\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif\n\n\tgl_FragColor = diffuseColor;\n}\n"),s.compileShader(r);const n=s.getShaderInfoLog(r);n&&console.warn("fs log:",n),s.attachShader(this.program,t),s.attachShader(this.program,r),s.linkProgram(this.program);const a=s.getProgramInfoLog(this.program);a&&console.warn("program log:",a),s.deleteShader(t),s.deleteShader(r);const{name:o}=s.getActiveUniform(this.program,0),h=s.getUniformLocation(this.program,o),{name:c}=s.getActiveUniform(this.program,1),g=s.getUniformLocation(this.program,c),{name:f}=s.getActiveUniform(this.program,2),d=s.getUniformLocation(this.program,f),{name:u}=s.getActiveUniform(this.program,3),l=s.getUniformLocation(this.program,u),{name:m}=s.getActiveUniform(this.program,4),E=s.getUniformLocation(this.program,m),{name:p}=s.getActiveUniform(this.program,5),v=s.getUniformLocation(this.program,p);s.useProgram(this.program),s.uniformMatrix4fv(g,!1,new Float32Array([.002739726100116968,0,0,0,0,.010416666977107525,0,0,0,0,-.20202019810676575,0,0,0,-1.0202020406723022,1])),s.uniformMatrix4fv(h,!1,new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,-1,1])),s.uniformMatrix3fv(d,!1,new Float32Array([1,0,0,0,1,0,0,0,1])),s.uniform3f(l,1,1,1),s.uniform1f(E,1),s.uniform1i(v,0),this.texture=s.createTexture(),s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,this.texture),s.pixelStorei(37440,!0),s.pixelStorei(37441,!1),s.pixelStorei(s.UNPACK_ALIGNMENT,4),s.pixelStorei(37443,0),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR_MIPMAP_LINEAR),s.disable(s.CULL_FACE),s.depthMask(!0),s.colorMask(!0,!0,!0,!0),s.disable(s.STENCIL_TEST),s.disable(s.POLYGON_OFFSET_FILL),s.disable(s.SAMPLE_ALPHA_TO_COVERAGE),this.pos=s.createBuffer(),this.uv=s.createBuffer(),this.ib=s.createBuffer();const A=s.getAttribLocation(this.program,"position"),_=s.getAttribLocation(this.program,"uv");s.enableVertexAttribArray(A),s.bindBuffer(s.ARRAY_BUFFER,this.pos),s.vertexAttribPointer(A,3,s.FLOAT,!1,0,0),s.enableVertexAttribArray(_),s.bindBuffer(s.ARRAY_BUFFER,this.uv),s.vertexAttribPointer(_,2,s.FLOAT,!1,0,0)}updateMaterial({width:e=null,sw:t=this.width,sh:i=this.height}={}){if(t!==this.width||i!==this.height){Number.isFinite(e)?this.width=e:this.width=Math.round(this.height*t/i),this.canvas.width=this.width,this.canvas.height=this.height,s.viewport(0,0,this.width,this.height);const r=s.getUniformLocation(this.program,"projectionMatrix");s.uniformMatrix4fv(r,!1,new Float32Array([2/this.width,0,0,0,0,2/this.height,0,0,0,0,-.20202019810676575,0,0,0,-1.0202020406723022,1]))}const n=new r.Canvas(this.source.width,this.source.height);n.getContext("2d").drawImage(this.source,0,0),s.bindTexture(s.TEXTURE_2D,this.texture),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,n),s.generateMipmap(s.TEXTURE_2D)}updateGeometry(e=null){const{width:t,height:i}=this.gauge,n=new r.Canvas(t,i).getContext("2d");n.drawImage(this.gauge,0,0);const{data:a}=n.getImageData(0,0,t,i),h=this.width/t;e=Math.round(Number.isFinite(e)?e:i/2),e=Math.max(0,Math.min(i-1,e));const c=Array(i).fill(null).map((e,r)=>Array(t).fill(null).map((e,n)=>({uv:[(n+.5)/t,1-(r+.5)/i],position:[(n-t/2)*h,(a[4*(r*t+n)]+a[4*(r*t+n)+2]/256-128)/h,0]})));for(let i=e;i>0;--i)for(let e=0;ee.uv)),f=o(o(c).map(e=>e.position)),d=Array(i-1).fill(null).map((e,i)=>Array(t-1).fill(null).map((e,r)=>[i*t+r,i*t+r+1,(i+1)*t+r,(i+1)*t+r,(i+1)*t+r+1,i*t+r+1])),u=o(o(d));s.bindBuffer(s.ARRAY_BUFFER,this.pos),s.bufferData(s.ARRAY_BUFFER,new Float32Array(f),s.STATIC_DRAW),s.bindBuffer(s.ARRAY_BUFFER,this.uv),s.bufferData(s.ARRAY_BUFFER,new Float32Array(g),s.STATIC_DRAW),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,this.ib),s.bufferData(s.ELEMENT_ARRAY_BUFFER,new Uint32Array(u),s.STATIC_DRAW),this.primitiveCount=u.length}render(){return s.clearColor(1,1,1,1),s.clear(s.COLOR_BUFFER_BIT),s.drawElements(s.TRIANGLES,this.primitiveCount,s.UNSIGNED_INT,0),this.canvas.toBuffer()}dispose(){s.deleteBuffer(this.pos),s.deleteBuffer(this.uv),s.deleteBuffer(this.ib),s.deleteProgram(this.program),s.deleteTexture(this.texture)}}({source:new r.Image,gauge:new r.Image});console.info("%cstarry-omr%c v1.0.0 2026-02-20T12:54:01.066Z","color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;","color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;");const c=["bind","constructor","toString","toJSON"];class GaugeServer{async bind(e){this.socket=new i.Reply,await this.socket.bind(e),console.log(`gauge server listening at ${e}`);try{for await(const[e]of this.socket){const{method:i,args:r,kwargs:n}=t.unpack(e)??{};if(console.log(`request: ${i}`),!c.includes(i)&&this[i])try{const e=await(this[i]?.(r,n));console.log(`success: ${i}`),await this.socket.send(t.pack({code:0,msg:"success",data:e}))}catch(e){console.error(`fail: ${i}, error: ${e}`),await this.socket.send(t.pack({code:-1,msg:`Error: ${JSON.stringify(e)}`,data:null}))}else console.error(`fail: ${i}, error: no method`),await this.socket.send(t.pack({code:-1,msg:`no method: ${i}`,data:null}))}}catch(t){console.log("restarting gauge server..",t.stack),await this.socket.close(),await this.bind(e)}}async predict(e,t){let i,n,a;return e&&([i,n,a]=e),t&&({source:i,gauge:n,baseY:a}=t),(async(e,t,i)=>{const n=await r.loadImage(e),a=await r.loadImage(t);return h.source=n,h.gauge=a,h.updateMaterial({width:a.width,sw:n.width,sh:n.height}),h.updateGeometry(i),console.log(process.memoryUsage().heapUsed),{buffer:await h.render(),size:{width:h.width,height:h.height}}})(i,n,a)}}!async function(){const t=new GaugeServer;await t.bind(`tcp://*:${e.argv.port}`)}(); +"use strict";var e=require("yargs"),t=require("msgpackr"),i=require("zeromq"),r=require("skia-canvas");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=n(require("gl"));globalThis.ImageData=r.ImageData;const o=e=>{const t=[];for(const i of e)for(const e of i)t.push(e);return t};class GLCanvas{constructor(e){this._width=256,this._height=192,this.ctx=e}get width(){return this._width}set width(e){this._width=e;this.ctx.getExtension("STACKGL_resize_drawingbuffer").resize(e,this.height)}get height(){return this._height}set height(e){this._height=e;this.ctx.getExtension("STACKGL_resize_drawingbuffer").resize(this.width,e)}addEventListener(e){}async toBuffer(){const e=new Uint8Array(this.width*this.height*4);this.ctx.readPixels(0,0,this.width,this.height,this.ctx.RGBA,this.ctx.UNSIGNED_BYTE,e);const t=new r.Canvas(this.width,this.height);return t.getContext("2d").putImageData(new r.ImageData(new Uint8ClampedArray(e),this.width,this.height),0,0),t.toBuffer("png")}}const s=a.default(512,192,{antialias:!0});const h=new class GaugeRenderer{constructor(e){this.width=256,this.height=192,this.source=e.source,this.gauge=e.gauge,this.canvas=new GLCanvas(s),s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.HIGH_FLOAT),s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT),s.getExtension("OES_element_index_uint"),this.program=s.createProgram();const t=s.createShader(s.VERTEX_SHADER);s.shaderSource(t,"//#version 300 es\n//#define attribute in\n//#define varying out\n//#define texture2D texture\n\nprecision highp float;\nprecision highp int;\n\n#define HIGH_PRECISION\n#define SHADER_NAME MeshBasicMaterial\n#define VERTEX_TEXTURES\n#define USE_MAP\n#define USE_UV\n#define BONE_TEXTURE\n#define DOUBLE_SIDED\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPosition;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n\n#ifdef USE_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\n\nvoid main() {\n#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif\n\n\tvec3 transformed = vec3( position );\n\n\tvec4 mvPosition = vec4( transformed, 1.0 );\n\tmvPosition = modelViewMatrix * mvPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n}\n"),s.compileShader(t);const i=s.getShaderInfoLog(t);i&&console.warn("vs log:",i);const r=s.createShader(s.FRAGMENT_SHADER);s.shaderSource(r,"//#version 300 es\n//#define varying in\n//out highp vec4 pc_fragColor;\n//#define gl_FragColor pc_fragColor\n//#define texture2D texture\n\nprecision highp float;\nprecision highp int;\n\n#define HIGH_PRECISION\n#define SHADER_NAME MeshBasicMaterial\n#define USE_MAP\n#define USE_UV\n#define DOUBLE_SIDED\nuniform vec3 cameraPosition;\n\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 mapTexelToLinear( vec4 value ) { return LinearToLinear( value ); }\n\nuniform vec3 diffuse;\nuniform float opacity;\n\n#if defined( USE_UV )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n\n\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif\n\n\tgl_FragColor = diffuseColor;\n}\n"),s.compileShader(r);const n=s.getShaderInfoLog(r);n&&console.warn("fs log:",n),s.attachShader(this.program,t),s.attachShader(this.program,r),s.linkProgram(this.program);const a=s.getProgramInfoLog(this.program);a&&console.warn("program log:",a),s.deleteShader(t),s.deleteShader(r);const{name:o}=s.getActiveUniform(this.program,0),h=s.getUniformLocation(this.program,o),{name:c}=s.getActiveUniform(this.program,1),g=s.getUniformLocation(this.program,c),{name:f}=s.getActiveUniform(this.program,2),d=s.getUniformLocation(this.program,f),{name:u}=s.getActiveUniform(this.program,3),l=s.getUniformLocation(this.program,u),{name:m}=s.getActiveUniform(this.program,4),E=s.getUniformLocation(this.program,m),{name:p}=s.getActiveUniform(this.program,5),v=s.getUniformLocation(this.program,p);s.useProgram(this.program),s.uniformMatrix4fv(g,!1,new Float32Array([.002739726100116968,0,0,0,0,.010416666977107525,0,0,0,0,-.20202019810676575,0,0,0,-1.0202020406723022,1])),s.uniformMatrix4fv(h,!1,new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,-1,1])),s.uniformMatrix3fv(d,!1,new Float32Array([1,0,0,0,1,0,0,0,1])),s.uniform3f(l,1,1,1),s.uniform1f(E,1),s.uniform1i(v,0),this.texture=s.createTexture(),s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,this.texture),s.pixelStorei(37440,!0),s.pixelStorei(37441,!1),s.pixelStorei(s.UNPACK_ALIGNMENT,4),s.pixelStorei(37443,0),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR_MIPMAP_LINEAR),s.disable(s.CULL_FACE),s.depthMask(!0),s.colorMask(!0,!0,!0,!0),s.disable(s.STENCIL_TEST),s.disable(s.POLYGON_OFFSET_FILL),s.disable(s.SAMPLE_ALPHA_TO_COVERAGE),this.pos=s.createBuffer(),this.uv=s.createBuffer(),this.ib=s.createBuffer();const A=s.getAttribLocation(this.program,"position"),_=s.getAttribLocation(this.program,"uv");s.enableVertexAttribArray(A),s.bindBuffer(s.ARRAY_BUFFER,this.pos),s.vertexAttribPointer(A,3,s.FLOAT,!1,0,0),s.enableVertexAttribArray(_),s.bindBuffer(s.ARRAY_BUFFER,this.uv),s.vertexAttribPointer(_,2,s.FLOAT,!1,0,0)}updateMaterial({width:e=null,sw:t=this.width,sh:i=this.height}={}){if(t!==this.width||i!==this.height){Number.isFinite(e)?this.width=e:this.width=Math.round(this.height*t/i),this.canvas.width=this.width,this.canvas.height=this.height,s.viewport(0,0,this.width,this.height);const r=s.getUniformLocation(this.program,"projectionMatrix");s.uniformMatrix4fv(r,!1,new Float32Array([2/this.width,0,0,0,0,2/this.height,0,0,0,0,-.20202019810676575,0,0,0,-1.0202020406723022,1]))}const n=new r.Canvas(this.source.width,this.source.height);n.getContext("2d").drawImage(this.source,0,0),s.bindTexture(s.TEXTURE_2D,this.texture),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,n),s.generateMipmap(s.TEXTURE_2D)}updateGeometry(e=null){const{width:t,height:i}=this.gauge,n=new r.Canvas(t,i).getContext("2d");n.drawImage(this.gauge,0,0);const{data:a}=n.getImageData(0,0,t,i),h=this.width/t;e=Math.round(Number.isFinite(e)?e:i/2),e=Math.max(0,Math.min(i-1,e));const c=Array(i).fill(null).map((e,r)=>Array(t).fill(null).map((e,n)=>({uv:[(n+.5)/t,1-(r+.5)/i],position:[(n-t/2)*h,(a[4*(r*t+n)]+a[4*(r*t+n)+2]/256-128)/h,0]})));for(let i=e;i>0;--i)for(let e=0;ee.uv)),f=o(o(c).map(e=>e.position)),d=Array(i-1).fill(null).map((e,i)=>Array(t-1).fill(null).map((e,r)=>[i*t+r,i*t+r+1,(i+1)*t+r,(i+1)*t+r,(i+1)*t+r+1,i*t+r+1])),u=o(o(d));s.bindBuffer(s.ARRAY_BUFFER,this.pos),s.bufferData(s.ARRAY_BUFFER,new Float32Array(f),s.STATIC_DRAW),s.bindBuffer(s.ARRAY_BUFFER,this.uv),s.bufferData(s.ARRAY_BUFFER,new Float32Array(g),s.STATIC_DRAW),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,this.ib),s.bufferData(s.ELEMENT_ARRAY_BUFFER,new Uint32Array(u),s.STATIC_DRAW),this.primitiveCount=u.length}render(){return s.clearColor(1,1,1,1),s.clear(s.COLOR_BUFFER_BIT),s.drawElements(s.TRIANGLES,this.primitiveCount,s.UNSIGNED_INT,0),this.canvas.toBuffer()}dispose(){s.deleteBuffer(this.pos),s.deleteBuffer(this.uv),s.deleteBuffer(this.ib),s.deleteProgram(this.program),s.deleteTexture(this.texture)}}({source:new r.Image,gauge:new r.Image});console.info("%cstarry-omr%c v1.0.0 2026-04-23T11:21:07.532Z","color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;","color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;");const c=["bind","constructor","toString","toJSON"];class GaugeServer{async bind(e){this.socket=new i.Reply,await this.socket.bind(e),console.log(`gauge server listening at ${e}`);try{for await(const[e]of this.socket){const{method:i,args:r,kwargs:n}=t.unpack(e)??{};if(console.log(`request: ${i}`),!c.includes(i)&&this[i])try{const e=await(this[i]?.(r,n));console.log(`success: ${i}`),await this.socket.send(t.pack({code:0,msg:"success",data:e}))}catch(e){console.error(`fail: ${i}, error: ${e}`),await this.socket.send(t.pack({code:-1,msg:`Error: ${JSON.stringify(e)}`,data:null}))}else console.error(`fail: ${i}, error: no method`),await this.socket.send(t.pack({code:-1,msg:`no method: ${i}`,data:null}))}}catch(t){console.log("restarting gauge server..",t.stack),await this.socket.close(),await this.bind(e)}}async predict(e,t){let i,n,a;return e&&([i,n,a]=e),t&&({source:i,gauge:n,baseY:a}=t),(async(e,t,i)=>{const n=await r.loadImage(e),a=await r.loadImage(t);return h.source=n,h.gauge=a,h.updateMaterial({width:a.width,sw:n.width,sh:n.height}),h.updateGeometry(i),console.log(process.memoryUsage().heapUsed),{buffer:await h.render(),size:{width:h.width,height:h.height}}})(i,n,a)}}!async function(){const t=new GaugeServer;await t.bind(`tcp://*:${e.argv.port}`)}(); //# sourceMappingURL=gauge-server.js.map diff --git a/backend/omr/dist/gauge-server.js.map b/backend/omr/dist/gauge-server.js.map index d38c042085921f6a4cb1b984f3e6632d845b706c..6a489d5a97d368d1e740b8ec04aa865815ce9b4a 100644 --- a/backend/omr/dist/gauge-server.js.map +++ b/backend/omr/dist/gauge-server.js.map @@ -1 +1 @@ -{"version":3,"file":"gauge-server.js","sources":["../../libs/gauge-renderer.ts","../../../src/pages/playground/scripts/shaders.ts","../src/gauge-server.ts"],"sourcesContent":["/* global cv */\nimport { Canvas, Image, loadImage, ImageData } from 'skia-canvas';\n// threejs内部使用了OffscreenCanvas\n//(globalThis as any).OffscreenCanvas = (globalThis as any).OffscreenCanvas || Canvas;\nglobalThis.ImageData = ImageData;\n\nimport createContext from 'gl';\n\nimport * as SHADER_SOURCE from '../../src/pages/playground/scripts/shaders';\n\n//const cc = (a: T[][]): T[] => a.flat(1);\t// This is slower!\nconst cc = (a: T[][]): T[] => {\n\tconst result: T[] = [];\n\tfor (const x of a) {\n\t\tfor (const e of x) result.push(e);\n\t}\n\n\treturn result;\n};\n\ntype RenderContext = ReturnType;\n\nclass GLCanvas {\n\tctx: RenderContext;\n\t_width: number = 256;\n\t_height: number = 192;\n\n\tresizeBuffer: number[];\n\n\tconstructor(context: RenderContext) {\n\t\tthis.ctx = context;\n\t}\n\n\tget width() {\n\t\treturn this._width;\n\t}\n\n\tset width(width: number) {\n\t\tthis._width = width;\n\t\tconst ext = this.ctx.getExtension('STACKGL_resize_drawingbuffer');\n\t\text.resize(width, this.height);\n\t}\n\n\tget height() {\n\t\treturn this._height;\n\t}\n\n\tset height(height: number) {\n\t\tthis._height = height;\n\t\tconst ext = this.ctx.getExtension('STACKGL_resize_drawingbuffer');\n\t\text.resize(this.width, height);\n\t}\n\n\t/*// @ts-ignore\n\tgetContext(type, options) {\n\t\tif (type === 'webgl') {\n\t\t\tthis.ctx = createContext(200, 300, options);\n\n\t\t\treturn this.ctx;\n\t\t}\n\n\t\treturn null as WebGLRenderingContext;\n\t}*/\n\n\taddEventListener(evt: 'webglcontextlost') {}\n\n\tasync toBuffer() {\n\t\tconst pixels = new Uint8Array(this.width * this.height * 4);\n\t\tthis.ctx.readPixels(0, 0, this.width, this.height, this.ctx.RGBA, this.ctx.UNSIGNED_BYTE, pixels);\n\n\t\tconst canvas = new Canvas(this.width, this.height);\n\t\tconst ctx = canvas.getContext('2d');\n\t\tctx.putImageData(new ImageData(new Uint8ClampedArray(pixels), this.width, this.height), 0, 0);\n\n\t\treturn canvas.toBuffer('png');\n\t}\n}\n\ninterface GaugeRendererInitOptions {\n\tsource: HTMLImageElement;\n\tgauge: HTMLImageElement;\n}\n\nconst gl = createContext(512, 192, { antialias: true });\n\nexport default class GaugeRenderer {\n\tsource: Image; // base64 string\n\tgauge: Image;\n\tcanvas: GLCanvas;\n\n\tprogram: WebGLProgram;\n\ttexture: WebGLTexture;\n\tpos: WebGLBuffer;\n\tuv: WebGLBuffer;\n\tib: WebGLBuffer;\n\tprimitiveCount: number;\n\n\twidth: number = 256;\n\theight: number = 192;\n\n\tconstructor(options: GaugeRendererInitOptions) {\n\t\tthis.source = options.source;\n\t\tthis.gauge = options.gauge;\n\t\tthis.canvas = new GLCanvas(gl);\n\n\t\tgl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT);\n\t\tgl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n\n\t\tgl.getExtension('OES_element_index_uint');\n\n\t\t// initial program\n\t\tthis.program = gl.createProgram();\n\n\t\tconst vsShader = gl.createShader(gl.VERTEX_SHADER);\n\t\tgl.shaderSource(vsShader, SHADER_SOURCE.vs);\n\t\tgl.compileShader(vsShader);\n\t\tconst logVs = gl.getShaderInfoLog(vsShader);\n\t\tlogVs && console.warn('vs log:', logVs);\n\n\t\tconst fsShader = gl.createShader(gl.FRAGMENT_SHADER);\n\t\tgl.shaderSource(fsShader, SHADER_SOURCE.fs);\n\t\tgl.compileShader(fsShader);\n\t\tconst logFs = gl.getShaderInfoLog(fsShader);\n\t\tlogFs && console.warn('fs log:', logFs);\n\n\t\tgl.attachShader(this.program, vsShader);\n\t\tgl.attachShader(this.program, fsShader);\n\t\tgl.linkProgram(this.program);\n\n\t\tconst logProgram = gl.getProgramInfoLog(this.program);\n\t\tlogProgram && console.warn('program log:', logProgram);\n\n\t\tgl.deleteShader(vsShader);\n\t\tgl.deleteShader(fsShader);\n\n\t\tconst { name: nameModelView } = gl.getActiveUniform(this.program, 0);\n\t\tconst modelMat = gl.getUniformLocation(this.program, nameModelView);\n\t\tconst { name: nameProj } = gl.getActiveUniform(this.program, 1);\n\t\tconst projMat = gl.getUniformLocation(this.program, nameProj);\n\t\tconst { name: nameUV } = gl.getActiveUniform(this.program, 2);\n\t\tconst uvMat = gl.getUniformLocation(this.program, nameUV);\n\t\tconst { name: nameDiffuse } = gl.getActiveUniform(this.program, 3);\n\t\tconst diffuse = gl.getUniformLocation(this.program, nameDiffuse);\n\t\tconst { name: nameOpacity } = gl.getActiveUniform(this.program, 4);\n\t\tconst opacity = gl.getUniformLocation(this.program, nameOpacity);\n\t\tconst { name: nameMap } = gl.getActiveUniform(this.program, 5);\n\t\tconst map = gl.getUniformLocation(this.program, nameMap);\n\n\t\tgl.useProgram(this.program);\n\n\t\tgl.uniformMatrix4fv(\n\t\t\tprojMat,\n\t\t\tfalse,\n\t\t\t//new Float32Array([0.0026385225355625153, 0, 0, 0, 0, -0.010416666977107525, 0, 0, 0, 0, -0.20202019810676575, 0, 0, 0, -1.0202020406723022, 1])\n\t\t\tnew Float32Array([0.002739726100116968, 0, 0, 0, 0, 0.010416666977107525, 0, 0, 0, 0, -0.20202019810676575, 0, 0, 0, -1.0202020406723022, 1])\n\t\t);\n\t\tgl.uniformMatrix4fv(modelMat, false, new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1, 1]));\n\t\tgl.uniformMatrix3fv(uvMat, false, new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\n\t\tgl.uniform3f(diffuse, 1, 1, 1);\n\t\tgl.uniform1f(opacity, 1);\n\t\tgl.uniform1i(map, 0);\n\n\t\t// texture\n\t\tthis.texture = gl.createTexture();\n\t\tgl.activeTexture(gl.TEXTURE0);\n\t\tgl.bindTexture(gl.TEXTURE_2D, this.texture);\n\t\tgl.pixelStorei(37440, true);\n\t\tgl.pixelStorei(37441, false);\n\t\tgl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);\n\t\tgl.pixelStorei(37443, 0);\n\n\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);\n\n\t\tgl.disable(gl.CULL_FACE);\n\t\tgl.depthMask(true);\n\t\tgl.colorMask(true, true, true, true);\n\t\tgl.disable(gl.STENCIL_TEST);\n\t\tgl.disable(gl.POLYGON_OFFSET_FILL);\n\t\tgl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n\n\t\t// buffers\n\t\tthis.pos = gl.createBuffer();\n\t\tthis.uv = gl.createBuffer();\n\t\tthis.ib = gl.createBuffer();\n\n\t\tconst iPos = gl.getAttribLocation(this.program, 'position');\n\t\tconst iUV = gl.getAttribLocation(this.program, 'uv');\n\t\t//console.log('indices:', iPos, iUV);\n\n\t\tgl.enableVertexAttribArray(iPos);\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, this.pos);\n\t\tgl.vertexAttribPointer(iPos, 3, gl.FLOAT, false, 0, 0);\n\n\t\tgl.enableVertexAttribArray(iUV);\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, this.uv);\n\t\tgl.vertexAttribPointer(iUV, 2, gl.FLOAT, false, 0, 0);\n\t}\n\n\tupdateMaterial({ width = null, sw = this.width, sh = this.height } = {}) {\n\t\tif (sw !== this.width || sh !== this.height) {\n\t\t\tif (Number.isFinite(width)) {\n\t\t\t\tthis.width = width;\n\t\t\t} else {\n\t\t\t\tthis.width = Math.round((this.height * sw) / sh);\n\t\t\t}\n\n\t\t\tthis.canvas.width = this.width;\n\t\t\tthis.canvas.height = this.height;\n\n\t\t\tgl.viewport(0, 0, this.width, this.height);\n\n\t\t\tconst projMat = gl.getUniformLocation(this.program, 'projectionMatrix');\n\t\t\tgl.uniformMatrix4fv(\n\t\t\t\tprojMat,\n\t\t\t\tfalse,\n\t\t\t\tnew Float32Array([2 / this.width, 0, 0, 0, 0, 2 / this.height, 0, 0, 0, 0, -0.20202019810676575, 0, 0, 0, -1.0202020406723022, 1])\n\t\t\t);\n\t\t}\n\n\t\t// image to canvas\n\t\tconst sourceCanvas = new Canvas(this.source.width, this.source.height);\n\t\tsourceCanvas.getContext('2d').drawImage(this.source, 0, 0);\n\n\t\tgl.bindTexture(gl.TEXTURE_2D, this.texture);\n\t\tgl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, sourceCanvas as any);\n\t\tgl.generateMipmap(gl.TEXTURE_2D);\n\t}\n\n\tupdateGeometry(baseY = null) {\n\t\tconst { width, height } = this.gauge;\n\t\tconst canvas = new Canvas(width, height);\n\t\tconst ctx = canvas.getContext('2d');\n\t\tctx.drawImage(this.gauge, 0, 0);\n\t\tconst { data: buffer } = ctx.getImageData(0, 0, width, height);\n\n\t\tconst xFactor = this.width / width;\n\n\t\tbaseY = Math.round(Number.isFinite(baseY) ? baseY : height / 2);\n\t\tbaseY = Math.max(0, Math.min(height - 1, baseY));\n\n\t\tconst propertyArray = Array(height)\n\t\t\t.fill(null)\n\t\t\t.map((_, y) =>\n\t\t\t\tArray(width)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map((_, x) => ({\n\t\t\t\t\t\tuv: [(x + 0.5) / width, 1 - (y + 0.5) / height],\n\t\t\t\t\t\tposition: [(x - width / 2) * xFactor, (buffer[(y * width + x) * 4] + buffer[(y * width + x) * 4 + 2] / 256 - 128) / xFactor, 0],\n\t\t\t\t\t}))\n\t\t\t);\n\n\t\t// integral X by K\n\t\tfor (let y = baseY; y > 0; --y) {\n\t\t\tfor (let x = 0; x < width; ++x)\n\t\t\t\tpropertyArray[y - 1][x].position[0] = propertyArray[y][x].position[0] - ((buffer[(y * width + x) * 4 + 1] - 128) * xFactor) / 127;\n\t\t}\n\t\tfor (let y = baseY + 1; y < height; ++y) {\n\t\t\tfor (let x = 0; x < width; ++x)\n\t\t\t\tpropertyArray[y][x].position[0] = propertyArray[y - 1][x].position[0] + ((buffer[((y - 1) * width + x) * 4 + 1] - 128) * xFactor) / 127;\n\t\t}\n\n\t\tconst uvs = cc(cc(propertyArray).map((p) => p.uv));\n\t\tconst positions = cc(cc(propertyArray).map((p) => p.position));\n\n\t\tconst faces = Array(height - 1)\n\t\t\t.fill(null)\n\t\t\t.map((_, y) =>\n\t\t\t\tArray(width - 1)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map((_, x) => [y * width + x, y * width + x + 1, (y + 1) * width + x, (y + 1) * width + x, (y + 1) * width + x + 1, y * width + x + 1])\n\t\t\t);\n\t\tconst indices = cc(cc(faces));\n\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, this.pos);\n\t\tgl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);\n\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, this.uv);\n\t\tgl.bufferData(gl.ARRAY_BUFFER, new Float32Array(uvs), gl.STATIC_DRAW);\n\n\t\tgl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.ib);\n\t\tgl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(indices), gl.STATIC_DRAW);\n\n\t\tthis.primitiveCount = indices.length;\n\t}\n\n\trender() {\n\t\tgl.clearColor(1, 1, 1, 1);\n\t\tgl.clear(gl.COLOR_BUFFER_BIT);\n\n\t\t//gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.ib);\n\n\t\tgl.drawElements(gl.TRIANGLES, this.primitiveCount, gl.UNSIGNED_INT, 0);\n\n\t\treturn this.canvas.toBuffer();\n\t}\n\n\tdispose() {\n\t\tgl.deleteBuffer(this.pos);\n\t\tgl.deleteBuffer(this.uv);\n\t\tgl.deleteBuffer(this.ib);\n\n\t\tgl.deleteProgram(this.program);\n\t\tgl.deleteTexture(this.texture);\n\t}\n}\n\nconst gaugeRenderer = new GaugeRenderer({\n\tsource: new Image(),\n\tgauge: new Image(),\n});\n\nexport const renderGaugeImage = async (sourceURL: string | Buffer, gaugeURL: string | Buffer, baseY?: number) => {\n\tconst source = await loadImage(sourceURL);\n\tconst gauge = await loadImage(gaugeURL);\n\n\tgaugeRenderer.source = source;\n\tgaugeRenderer.gauge = gauge;\n\n\tgaugeRenderer.updateMaterial({\n\t\twidth: gauge.width,\n\t\tsw: source.width,\n\t\tsh: source.height,\n\t});\n\n\tgaugeRenderer.updateGeometry(baseY);\n\n\tconsole.log(process.memoryUsage().heapUsed);\n\n\treturn {\n\t\tbuffer: await gaugeRenderer.render(),\n\t\tsize: {\n\t\t\twidth: gaugeRenderer.width,\n\t\t\theight: gaugeRenderer.height,\n\t\t},\n\t};\n};\n\n// renderGaugeImage('./images/source.png', './images/gauge.png');\n","export const vs = `//#version 300 es\n//#define attribute in\n//#define varying out\n//#define texture2D texture\n\nprecision highp float;\nprecision highp int;\n\n#define HIGH_PRECISION\n#define SHADER_NAME MeshBasicMaterial\n#define VERTEX_TEXTURES\n#define USE_MAP\n#define USE_UV\n#define BONE_TEXTURE\n#define DOUBLE_SIDED\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPosition;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n\n#ifdef USE_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\n\nvoid main() {\n#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif\n\n\tvec3 transformed = vec3( position );\n\n\tvec4 mvPosition = vec4( transformed, 1.0 );\n\tmvPosition = modelViewMatrix * mvPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n}\n`;\n\nexport const fs = `//#version 300 es\n//#define varying in\n//out highp vec4 pc_fragColor;\n//#define gl_FragColor pc_fragColor\n//#define texture2D texture\n\nprecision highp float;\nprecision highp int;\n\n#define HIGH_PRECISION\n#define SHADER_NAME MeshBasicMaterial\n#define USE_MAP\n#define USE_UV\n#define DOUBLE_SIDED\nuniform vec3 cameraPosition;\n\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 mapTexelToLinear( vec4 value ) { return LinearToLinear( value ); }\n\nuniform vec3 diffuse;\nuniform float opacity;\n\n#if defined( USE_UV )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n\n\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif\n\n\tgl_FragColor = diffuseColor;\n}\n`;\n","console.info(`%cstarry-omr%c v1.0.0 2026-02-20T12:54:01.066Z`, 'color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;', 'color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;');\nimport { argv } from 'yargs';\nimport { pack, unpack } from 'msgpackr';\nimport { Reply } from 'zeromq';\nimport { renderGaugeImage } from '../../libs/gauge-renderer';\n\ninterface Params {\n\tmethod: string;\n\targs: any[];\n\tkwargs: Record;\n}\n\nconst unsafeMethods = ['bind', 'constructor', 'toString', 'toJSON'];\n\nclass GaugeServer {\n\tprivate socket: Reply;\n\n\tasync bind(port?: string) {\n\t\tthis.socket = new Reply();\n\t\tawait this.socket.bind(port);\n\n\t\tconsole.log(`gauge server listening at ${port}`);\n\n\t\ttry {\n\t\t\tfor await (const [data] of this.socket) {\n\t\t\t\tconst { method, args, kwargs } = (unpack(data) as Params) ?? {};\n\n\t\t\t\tconsole.log(`request: ${method}`);\n\n\t\t\t\tif (!unsafeMethods.includes(method) && this[method]) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst data = await this[method]?.(args, kwargs);\n\t\t\t\t\t\tconsole.log(`success: ${method}`);\n\n\t\t\t\t\t\tawait this.socket.send(\n\t\t\t\t\t\t\tpack({\n\t\t\t\t\t\t\t\tcode: 0,\n\t\t\t\t\t\t\t\tmsg: 'success',\n\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.error(`fail: ${method}, error: ${err}`);\n\t\t\t\t\t\tawait this.socket.send(\n\t\t\t\t\t\t\tpack({\n\t\t\t\t\t\t\t\tcode: -1,\n\t\t\t\t\t\t\t\tmsg: `Error: ${JSON.stringify(err)}`,\n\t\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(`fail: ${method}, error: no method`);\n\t\t\t\t\tawait this.socket.send(\n\t\t\t\t\t\tpack({\n\t\t\t\t\t\t\tcode: -1,\n\t\t\t\t\t\t\tmsg: `no method: ${method}`,\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.log('restarting gauge server..', err.stack);\n\t\t\tawait this.socket.close();\n\t\t\tawait this.bind(port);\n\t\t}\n\t}\n\n\tasync predict(args?: any[], kwargs?: Record) {\n\t\tlet source, gauge, baseY;\n\n\t\tif (args) {\n\t\t\t[source, gauge, baseY] = args;\n\t\t}\n\n\t\tif (kwargs) {\n\t\t\t({ source, gauge, baseY } = kwargs);\n\t\t}\n\n\t\treturn renderGaugeImage(source, gauge, baseY);\n\t}\n}\n\nasync function main() {\n\tconst server = new GaugeServer();\n\n\tawait server.bind(`tcp://*:${argv.port}`);\n}\n\nmain();\n"],"names":["globalThis","ImageData","cc","a","result","x","e","push","GLCanvas","constructor","context","this","_width","_height","ctx","width","getExtension","resize","height","addEventListener","evt","toBuffer","pixels","Uint8Array","readPixels","RGBA","UNSIGNED_BYTE","canvas","Canvas","getContext","putImageData","Uint8ClampedArray","gl","createContext","antialias","gaugeRenderer","GaugeRenderer","options","source","gauge","getShaderPrecisionFormat","VERTEX_SHADER","HIGH_FLOAT","FRAGMENT_SHADER","program","createProgram","vsShader","createShader","shaderSource","compileShader","logVs","getShaderInfoLog","console","warn","fsShader","logFs","attachShader","linkProgram","logProgram","getProgramInfoLog","deleteShader","name","nameModelView","getActiveUniform","modelMat","getUniformLocation","nameProj","projMat","nameUV","uvMat","nameDiffuse","diffuse","nameOpacity","opacity","nameMap","map","useProgram","uniformMatrix4fv","Float32Array","uniformMatrix3fv","uniform3f","uniform1f","uniform1i","texture","createTexture","activeTexture","TEXTURE0","bindTexture","TEXTURE_2D","pixelStorei","UNPACK_ALIGNMENT","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_LINEAR","disable","CULL_FACE","depthMask","colorMask","STENCIL_TEST","POLYGON_OFFSET_FILL","SAMPLE_ALPHA_TO_COVERAGE","pos","createBuffer","uv","ib","iPos","getAttribLocation","iUV","enableVertexAttribArray","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","updateMaterial","sw","sh","Number","isFinite","Math","round","viewport","sourceCanvas","drawImage","texImage2D","generateMipmap","updateGeometry","baseY","data","buffer","getImageData","xFactor","max","min","propertyArray","Array","fill","_","y","position","uvs","p","positions","faces","indices","bufferData","STATIC_DRAW","ELEMENT_ARRAY_BUFFER","Uint32Array","primitiveCount","length","render","clearColor","clear","COLOR_BUFFER_BIT","drawElements","TRIANGLES","UNSIGNED_INT","dispose","deleteBuffer","deleteProgram","deleteTexture","Image","info","unsafeMethods","GaugeServer","bind","port","socket","Reply","log","method","args","kwargs","unpack","includes","send","pack","code","msg","err","error","JSON","stringify","stack","close","predict","async","sourceURL","gaugeURL","loadImage","process","memoryUsage","heapUsed","size","renderGaugeImage","server","argv","main"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"gauge-server.js","sources":["../../libs/gauge-renderer.ts","../../../src/pages/playground/scripts/shaders.ts","../src/gauge-server.ts"],"sourcesContent":["/* global cv */\nimport { Canvas, Image, loadImage, ImageData } from 'skia-canvas';\n// threejs内部使用了OffscreenCanvas\n//(globalThis as any).OffscreenCanvas = (globalThis as any).OffscreenCanvas || Canvas;\nglobalThis.ImageData = ImageData;\n\nimport createContext from 'gl';\n\nimport * as SHADER_SOURCE from '../../src/pages/playground/scripts/shaders';\n\n//const cc = (a: T[][]): T[] => a.flat(1);\t// This is slower!\nconst cc = (a: T[][]): T[] => {\n\tconst result: T[] = [];\n\tfor (const x of a) {\n\t\tfor (const e of x) result.push(e);\n\t}\n\n\treturn result;\n};\n\ntype RenderContext = ReturnType;\n\nclass GLCanvas {\n\tctx: RenderContext;\n\t_width: number = 256;\n\t_height: number = 192;\n\n\tresizeBuffer: number[];\n\n\tconstructor(context: RenderContext) {\n\t\tthis.ctx = context;\n\t}\n\n\tget width() {\n\t\treturn this._width;\n\t}\n\n\tset width(width: number) {\n\t\tthis._width = width;\n\t\tconst ext = this.ctx.getExtension('STACKGL_resize_drawingbuffer');\n\t\text.resize(width, this.height);\n\t}\n\n\tget height() {\n\t\treturn this._height;\n\t}\n\n\tset height(height: number) {\n\t\tthis._height = height;\n\t\tconst ext = this.ctx.getExtension('STACKGL_resize_drawingbuffer');\n\t\text.resize(this.width, height);\n\t}\n\n\t/*// @ts-ignore\n\tgetContext(type, options) {\n\t\tif (type === 'webgl') {\n\t\t\tthis.ctx = createContext(200, 300, options);\n\n\t\t\treturn this.ctx;\n\t\t}\n\n\t\treturn null as WebGLRenderingContext;\n\t}*/\n\n\taddEventListener(evt: 'webglcontextlost') {}\n\n\tasync toBuffer() {\n\t\tconst pixels = new Uint8Array(this.width * this.height * 4);\n\t\tthis.ctx.readPixels(0, 0, this.width, this.height, this.ctx.RGBA, this.ctx.UNSIGNED_BYTE, pixels);\n\n\t\tconst canvas = new Canvas(this.width, this.height);\n\t\tconst ctx = canvas.getContext('2d');\n\t\tctx.putImageData(new ImageData(new Uint8ClampedArray(pixels), this.width, this.height), 0, 0);\n\n\t\treturn canvas.toBuffer('png');\n\t}\n}\n\ninterface GaugeRendererInitOptions {\n\tsource: HTMLImageElement;\n\tgauge: HTMLImageElement;\n}\n\nconst gl = createContext(512, 192, { antialias: true });\n\nexport default class GaugeRenderer {\n\tsource: Image; // base64 string\n\tgauge: Image;\n\tcanvas: GLCanvas;\n\n\tprogram: WebGLProgram;\n\ttexture: WebGLTexture;\n\tpos: WebGLBuffer;\n\tuv: WebGLBuffer;\n\tib: WebGLBuffer;\n\tprimitiveCount: number;\n\n\twidth: number = 256;\n\theight: number = 192;\n\n\tconstructor(options: GaugeRendererInitOptions) {\n\t\tthis.source = options.source;\n\t\tthis.gauge = options.gauge;\n\t\tthis.canvas = new GLCanvas(gl);\n\n\t\tgl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT);\n\t\tgl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n\n\t\tgl.getExtension('OES_element_index_uint');\n\n\t\t// initial program\n\t\tthis.program = gl.createProgram();\n\n\t\tconst vsShader = gl.createShader(gl.VERTEX_SHADER);\n\t\tgl.shaderSource(vsShader, SHADER_SOURCE.vs);\n\t\tgl.compileShader(vsShader);\n\t\tconst logVs = gl.getShaderInfoLog(vsShader);\n\t\tlogVs && console.warn('vs log:', logVs);\n\n\t\tconst fsShader = gl.createShader(gl.FRAGMENT_SHADER);\n\t\tgl.shaderSource(fsShader, SHADER_SOURCE.fs);\n\t\tgl.compileShader(fsShader);\n\t\tconst logFs = gl.getShaderInfoLog(fsShader);\n\t\tlogFs && console.warn('fs log:', logFs);\n\n\t\tgl.attachShader(this.program, vsShader);\n\t\tgl.attachShader(this.program, fsShader);\n\t\tgl.linkProgram(this.program);\n\n\t\tconst logProgram = gl.getProgramInfoLog(this.program);\n\t\tlogProgram && console.warn('program log:', logProgram);\n\n\t\tgl.deleteShader(vsShader);\n\t\tgl.deleteShader(fsShader);\n\n\t\tconst { name: nameModelView } = gl.getActiveUniform(this.program, 0);\n\t\tconst modelMat = gl.getUniformLocation(this.program, nameModelView);\n\t\tconst { name: nameProj } = gl.getActiveUniform(this.program, 1);\n\t\tconst projMat = gl.getUniformLocation(this.program, nameProj);\n\t\tconst { name: nameUV } = gl.getActiveUniform(this.program, 2);\n\t\tconst uvMat = gl.getUniformLocation(this.program, nameUV);\n\t\tconst { name: nameDiffuse } = gl.getActiveUniform(this.program, 3);\n\t\tconst diffuse = gl.getUniformLocation(this.program, nameDiffuse);\n\t\tconst { name: nameOpacity } = gl.getActiveUniform(this.program, 4);\n\t\tconst opacity = gl.getUniformLocation(this.program, nameOpacity);\n\t\tconst { name: nameMap } = gl.getActiveUniform(this.program, 5);\n\t\tconst map = gl.getUniformLocation(this.program, nameMap);\n\n\t\tgl.useProgram(this.program);\n\n\t\tgl.uniformMatrix4fv(\n\t\t\tprojMat,\n\t\t\tfalse,\n\t\t\t//new Float32Array([0.0026385225355625153, 0, 0, 0, 0, -0.010416666977107525, 0, 0, 0, 0, -0.20202019810676575, 0, 0, 0, -1.0202020406723022, 1])\n\t\t\tnew Float32Array([0.002739726100116968, 0, 0, 0, 0, 0.010416666977107525, 0, 0, 0, 0, -0.20202019810676575, 0, 0, 0, -1.0202020406723022, 1])\n\t\t);\n\t\tgl.uniformMatrix4fv(modelMat, false, new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1, 1]));\n\t\tgl.uniformMatrix3fv(uvMat, false, new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\n\t\tgl.uniform3f(diffuse, 1, 1, 1);\n\t\tgl.uniform1f(opacity, 1);\n\t\tgl.uniform1i(map, 0);\n\n\t\t// texture\n\t\tthis.texture = gl.createTexture();\n\t\tgl.activeTexture(gl.TEXTURE0);\n\t\tgl.bindTexture(gl.TEXTURE_2D, this.texture);\n\t\tgl.pixelStorei(37440, true);\n\t\tgl.pixelStorei(37441, false);\n\t\tgl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);\n\t\tgl.pixelStorei(37443, 0);\n\n\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\t\tgl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);\n\n\t\tgl.disable(gl.CULL_FACE);\n\t\tgl.depthMask(true);\n\t\tgl.colorMask(true, true, true, true);\n\t\tgl.disable(gl.STENCIL_TEST);\n\t\tgl.disable(gl.POLYGON_OFFSET_FILL);\n\t\tgl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n\n\t\t// buffers\n\t\tthis.pos = gl.createBuffer();\n\t\tthis.uv = gl.createBuffer();\n\t\tthis.ib = gl.createBuffer();\n\n\t\tconst iPos = gl.getAttribLocation(this.program, 'position');\n\t\tconst iUV = gl.getAttribLocation(this.program, 'uv');\n\t\t//console.log('indices:', iPos, iUV);\n\n\t\tgl.enableVertexAttribArray(iPos);\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, this.pos);\n\t\tgl.vertexAttribPointer(iPos, 3, gl.FLOAT, false, 0, 0);\n\n\t\tgl.enableVertexAttribArray(iUV);\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, this.uv);\n\t\tgl.vertexAttribPointer(iUV, 2, gl.FLOAT, false, 0, 0);\n\t}\n\n\tupdateMaterial({ width = null, sw = this.width, sh = this.height } = {}) {\n\t\tif (sw !== this.width || sh !== this.height) {\n\t\t\tif (Number.isFinite(width)) {\n\t\t\t\tthis.width = width;\n\t\t\t} else {\n\t\t\t\tthis.width = Math.round((this.height * sw) / sh);\n\t\t\t}\n\n\t\t\tthis.canvas.width = this.width;\n\t\t\tthis.canvas.height = this.height;\n\n\t\t\tgl.viewport(0, 0, this.width, this.height);\n\n\t\t\tconst projMat = gl.getUniformLocation(this.program, 'projectionMatrix');\n\t\t\tgl.uniformMatrix4fv(\n\t\t\t\tprojMat,\n\t\t\t\tfalse,\n\t\t\t\tnew Float32Array([2 / this.width, 0, 0, 0, 0, 2 / this.height, 0, 0, 0, 0, -0.20202019810676575, 0, 0, 0, -1.0202020406723022, 1])\n\t\t\t);\n\t\t}\n\n\t\t// image to canvas\n\t\tconst sourceCanvas = new Canvas(this.source.width, this.source.height);\n\t\tsourceCanvas.getContext('2d').drawImage(this.source, 0, 0);\n\n\t\tgl.bindTexture(gl.TEXTURE_2D, this.texture);\n\t\tgl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, sourceCanvas as any);\n\t\tgl.generateMipmap(gl.TEXTURE_2D);\n\t}\n\n\tupdateGeometry(baseY = null) {\n\t\tconst { width, height } = this.gauge;\n\t\tconst canvas = new Canvas(width, height);\n\t\tconst ctx = canvas.getContext('2d');\n\t\tctx.drawImage(this.gauge, 0, 0);\n\t\tconst { data: buffer } = ctx.getImageData(0, 0, width, height);\n\n\t\tconst xFactor = this.width / width;\n\n\t\tbaseY = Math.round(Number.isFinite(baseY) ? baseY : height / 2);\n\t\tbaseY = Math.max(0, Math.min(height - 1, baseY));\n\n\t\tconst propertyArray = Array(height)\n\t\t\t.fill(null)\n\t\t\t.map((_, y) =>\n\t\t\t\tArray(width)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map((_, x) => ({\n\t\t\t\t\t\tuv: [(x + 0.5) / width, 1 - (y + 0.5) / height],\n\t\t\t\t\t\tposition: [(x - width / 2) * xFactor, (buffer[(y * width + x) * 4] + buffer[(y * width + x) * 4 + 2] / 256 - 128) / xFactor, 0],\n\t\t\t\t\t}))\n\t\t\t);\n\n\t\t// integral X by K\n\t\tfor (let y = baseY; y > 0; --y) {\n\t\t\tfor (let x = 0; x < width; ++x)\n\t\t\t\tpropertyArray[y - 1][x].position[0] = propertyArray[y][x].position[0] - ((buffer[(y * width + x) * 4 + 1] - 128) * xFactor) / 127;\n\t\t}\n\t\tfor (let y = baseY + 1; y < height; ++y) {\n\t\t\tfor (let x = 0; x < width; ++x)\n\t\t\t\tpropertyArray[y][x].position[0] = propertyArray[y - 1][x].position[0] + ((buffer[((y - 1) * width + x) * 4 + 1] - 128) * xFactor) / 127;\n\t\t}\n\n\t\tconst uvs = cc(cc(propertyArray).map((p) => p.uv));\n\t\tconst positions = cc(cc(propertyArray).map((p) => p.position));\n\n\t\tconst faces = Array(height - 1)\n\t\t\t.fill(null)\n\t\t\t.map((_, y) =>\n\t\t\t\tArray(width - 1)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map((_, x) => [y * width + x, y * width + x + 1, (y + 1) * width + x, (y + 1) * width + x, (y + 1) * width + x + 1, y * width + x + 1])\n\t\t\t);\n\t\tconst indices = cc(cc(faces));\n\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, this.pos);\n\t\tgl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);\n\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, this.uv);\n\t\tgl.bufferData(gl.ARRAY_BUFFER, new Float32Array(uvs), gl.STATIC_DRAW);\n\n\t\tgl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.ib);\n\t\tgl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(indices), gl.STATIC_DRAW);\n\n\t\tthis.primitiveCount = indices.length;\n\t}\n\n\trender() {\n\t\tgl.clearColor(1, 1, 1, 1);\n\t\tgl.clear(gl.COLOR_BUFFER_BIT);\n\n\t\t//gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.ib);\n\n\t\tgl.drawElements(gl.TRIANGLES, this.primitiveCount, gl.UNSIGNED_INT, 0);\n\n\t\treturn this.canvas.toBuffer();\n\t}\n\n\tdispose() {\n\t\tgl.deleteBuffer(this.pos);\n\t\tgl.deleteBuffer(this.uv);\n\t\tgl.deleteBuffer(this.ib);\n\n\t\tgl.deleteProgram(this.program);\n\t\tgl.deleteTexture(this.texture);\n\t}\n}\n\nconst gaugeRenderer = new GaugeRenderer({\n\tsource: new Image(),\n\tgauge: new Image(),\n});\n\nexport const renderGaugeImage = async (sourceURL: string | Buffer, gaugeURL: string | Buffer, baseY?: number) => {\n\tconst source = await loadImage(sourceURL);\n\tconst gauge = await loadImage(gaugeURL);\n\n\tgaugeRenderer.source = source;\n\tgaugeRenderer.gauge = gauge;\n\n\tgaugeRenderer.updateMaterial({\n\t\twidth: gauge.width,\n\t\tsw: source.width,\n\t\tsh: source.height,\n\t});\n\n\tgaugeRenderer.updateGeometry(baseY);\n\n\tconsole.log(process.memoryUsage().heapUsed);\n\n\treturn {\n\t\tbuffer: await gaugeRenderer.render(),\n\t\tsize: {\n\t\t\twidth: gaugeRenderer.width,\n\t\t\theight: gaugeRenderer.height,\n\t\t},\n\t};\n};\n\n// renderGaugeImage('./images/source.png', './images/gauge.png');\n","export const vs = `//#version 300 es\n//#define attribute in\n//#define varying out\n//#define texture2D texture\n\nprecision highp float;\nprecision highp int;\n\n#define HIGH_PRECISION\n#define SHADER_NAME MeshBasicMaterial\n#define VERTEX_TEXTURES\n#define USE_MAP\n#define USE_UV\n#define BONE_TEXTURE\n#define DOUBLE_SIDED\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPosition;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n\n#ifdef USE_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\n\nvoid main() {\n#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif\n\n\tvec3 transformed = vec3( position );\n\n\tvec4 mvPosition = vec4( transformed, 1.0 );\n\tmvPosition = modelViewMatrix * mvPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n}\n`;\n\nexport const fs = `//#version 300 es\n//#define varying in\n//out highp vec4 pc_fragColor;\n//#define gl_FragColor pc_fragColor\n//#define texture2D texture\n\nprecision highp float;\nprecision highp int;\n\n#define HIGH_PRECISION\n#define SHADER_NAME MeshBasicMaterial\n#define USE_MAP\n#define USE_UV\n#define DOUBLE_SIDED\nuniform vec3 cameraPosition;\n\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 mapTexelToLinear( vec4 value ) { return LinearToLinear( value ); }\n\nuniform vec3 diffuse;\nuniform float opacity;\n\n#if defined( USE_UV )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n\n\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif\n\n\tgl_FragColor = diffuseColor;\n}\n`;\n","console.info(`%cstarry-omr%c v1.0.0 2026-04-23T11:21:07.532Z`, 'color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;', 'color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;');\nimport { argv } from 'yargs';\nimport { pack, unpack } from 'msgpackr';\nimport { Reply } from 'zeromq';\nimport { renderGaugeImage } from '../../libs/gauge-renderer';\n\ninterface Params {\n\tmethod: string;\n\targs: any[];\n\tkwargs: Record;\n}\n\nconst unsafeMethods = ['bind', 'constructor', 'toString', 'toJSON'];\n\nclass GaugeServer {\n\tprivate socket: Reply;\n\n\tasync bind(port?: string) {\n\t\tthis.socket = new Reply();\n\t\tawait this.socket.bind(port);\n\n\t\tconsole.log(`gauge server listening at ${port}`);\n\n\t\ttry {\n\t\t\tfor await (const [data] of this.socket) {\n\t\t\t\tconst { method, args, kwargs } = (unpack(data) as Params) ?? {};\n\n\t\t\t\tconsole.log(`request: ${method}`);\n\n\t\t\t\tif (!unsafeMethods.includes(method) && this[method]) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst data = await this[method]?.(args, kwargs);\n\t\t\t\t\t\tconsole.log(`success: ${method}`);\n\n\t\t\t\t\t\tawait this.socket.send(\n\t\t\t\t\t\t\tpack({\n\t\t\t\t\t\t\t\tcode: 0,\n\t\t\t\t\t\t\t\tmsg: 'success',\n\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.error(`fail: ${method}, error: ${err}`);\n\t\t\t\t\t\tawait this.socket.send(\n\t\t\t\t\t\t\tpack({\n\t\t\t\t\t\t\t\tcode: -1,\n\t\t\t\t\t\t\t\tmsg: `Error: ${JSON.stringify(err)}`,\n\t\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(`fail: ${method}, error: no method`);\n\t\t\t\t\tawait this.socket.send(\n\t\t\t\t\t\tpack({\n\t\t\t\t\t\t\tcode: -1,\n\t\t\t\t\t\t\tmsg: `no method: ${method}`,\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.log('restarting gauge server..', err.stack);\n\t\t\tawait this.socket.close();\n\t\t\tawait this.bind(port);\n\t\t}\n\t}\n\n\tasync predict(args?: any[], kwargs?: Record) {\n\t\tlet source, gauge, baseY;\n\n\t\tif (args) {\n\t\t\t[source, gauge, baseY] = args;\n\t\t}\n\n\t\tif (kwargs) {\n\t\t\t({ source, gauge, baseY } = kwargs);\n\t\t}\n\n\t\treturn renderGaugeImage(source, gauge, baseY);\n\t}\n}\n\nasync function main() {\n\tconst server = new GaugeServer();\n\n\tawait server.bind(`tcp://*:${argv.port}`);\n}\n\nmain();\n"],"names":["globalThis","ImageData","cc","a","result","x","e","push","GLCanvas","constructor","context","this","_width","_height","ctx","width","getExtension","resize","height","addEventListener","evt","toBuffer","pixels","Uint8Array","readPixels","RGBA","UNSIGNED_BYTE","canvas","Canvas","getContext","putImageData","Uint8ClampedArray","gl","createContext","antialias","gaugeRenderer","GaugeRenderer","options","source","gauge","getShaderPrecisionFormat","VERTEX_SHADER","HIGH_FLOAT","FRAGMENT_SHADER","program","createProgram","vsShader","createShader","shaderSource","compileShader","logVs","getShaderInfoLog","console","warn","fsShader","logFs","attachShader","linkProgram","logProgram","getProgramInfoLog","deleteShader","name","nameModelView","getActiveUniform","modelMat","getUniformLocation","nameProj","projMat","nameUV","uvMat","nameDiffuse","diffuse","nameOpacity","opacity","nameMap","map","useProgram","uniformMatrix4fv","Float32Array","uniformMatrix3fv","uniform3f","uniform1f","uniform1i","texture","createTexture","activeTexture","TEXTURE0","bindTexture","TEXTURE_2D","pixelStorei","UNPACK_ALIGNMENT","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_LINEAR","disable","CULL_FACE","depthMask","colorMask","STENCIL_TEST","POLYGON_OFFSET_FILL","SAMPLE_ALPHA_TO_COVERAGE","pos","createBuffer","uv","ib","iPos","getAttribLocation","iUV","enableVertexAttribArray","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","updateMaterial","sw","sh","Number","isFinite","Math","round","viewport","sourceCanvas","drawImage","texImage2D","generateMipmap","updateGeometry","baseY","data","buffer","getImageData","xFactor","max","min","propertyArray","Array","fill","_","y","position","uvs","p","positions","faces","indices","bufferData","STATIC_DRAW","ELEMENT_ARRAY_BUFFER","Uint32Array","primitiveCount","length","render","clearColor","clear","COLOR_BUFFER_BIT","drawElements","TRIANGLES","UNSIGNED_INT","dispose","deleteBuffer","deleteProgram","deleteTexture","Image","info","unsafeMethods","GaugeServer","bind","port","socket","Reply","log","method","args","kwargs","unpack","includes","send","pack","code","msg","err","error","JSON","stringify","stack","close","predict","async","sourceURL","gaugeURL","loadImage","process","memoryUsage","heapUsed","size","renderGaugeImage","server","argv","main"],"mappings":"sMAIAA,WAAWC,UAAYA,EAAAA,UAOvB,MAAMC,EAASC,IACd,MAAMC,EAAc,GACpB,IAAK,MAAMC,KAAKF,EACf,IAAK,MAAMG,KAAKD,EAAGD,EAAOG,KAAKD,GAGhC,OAAOF,GAKR,MAAMI,SAOL,WAAAC,CAAYC,GALZC,KAAMC,OAAW,IACjBD,KAAOE,QAAW,IAKjBF,KAAKG,IAAMJ,CACX,CAED,SAAIK,GACH,OAAOJ,KAAKC,MACZ,CAED,SAAIG,CAAMA,GACTJ,KAAKC,OAASG,EACFJ,KAAKG,IAAIE,aAAa,gCAC9BC,OAAOF,EAAOJ,KAAKO,OACvB,CAED,UAAIA,GACH,OAAOP,KAAKE,OACZ,CAED,UAAIK,CAAOA,GACVP,KAAKE,QAAUK,EACHP,KAAKG,IAAIE,aAAa,gCAC9BC,OAAON,KAAKI,MAAOG,EACvB,CAaD,gBAAAC,CAAiBC,GAA2B,CAE5C,cAAMC,GACL,MAAMC,EAAS,IAAIC,WAAWZ,KAAKI,MAAQJ,KAAKO,OAAS,GACzDP,KAAKG,IAAIU,WAAW,EAAG,EAAGb,KAAKI,MAAOJ,KAAKO,OAAQP,KAAKG,IAAIW,KAAMd,KAAKG,IAAIY,cAAeJ,GAE1F,MAAMK,EAAS,IAAIC,SAAOjB,KAAKI,MAAOJ,KAAKO,QAI3C,OAHYS,EAAOE,WAAW,MAC1BC,aAAa,IAAI7B,EAASA,UAAC,IAAI8B,kBAAkBT,GAASX,KAAKI,MAAOJ,KAAKO,QAAS,EAAG,GAEpFS,EAAON,SAAS,MACvB,EAQF,MAAMW,EAAKC,EAAa,QAAC,IAAK,IAAK,CAAEC,WAAW,IAkOhD,MAAMC,EAAgB,IAhOR,MAAOC,cAepB,WAAA3B,CAAY4B,GAHZ1B,KAAKI,MAAW,IAChBJ,KAAMO,OAAW,IAGhBP,KAAK2B,OAASD,EAAQC,OACtB3B,KAAK4B,MAAQF,EAAQE,MACrB5B,KAAKgB,OAAS,IAAInB,SAASwB,GAE3BA,EAAGQ,yBAAyBR,EAAGS,cAAeT,EAAGU,YACjDV,EAAGQ,yBAAyBR,EAAGW,gBAAiBX,EAAGU,YAEnDV,EAAGhB,aAAa,0BAGhBL,KAAKiC,QAAUZ,EAAGa,gBAElB,MAAMC,EAAWd,EAAGe,aAAaf,EAAGS,eACpCT,EAAGgB,aAAaF,EClHA,2zBDmHhBd,EAAGiB,cAAcH,GACjB,MAAMI,EAAQlB,EAAGmB,iBAAiBL,GAClCI,GAASE,QAAQC,KAAK,UAAWH,GAEjC,MAAMI,EAAWtB,EAAGe,aAAaf,EAAGW,iBACpCX,EAAGgB,aAAaM,EC/EA,i3BDgFhBtB,EAAGiB,cAAcK,GACjB,MAAMC,EAAQvB,EAAGmB,iBAAiBG,GAClCC,GAASH,QAAQC,KAAK,UAAWE,GAEjCvB,EAAGwB,aAAa7C,KAAKiC,QAASE,GAC9Bd,EAAGwB,aAAa7C,KAAKiC,QAASU,GAC9BtB,EAAGyB,YAAY9C,KAAKiC,SAEpB,MAAMc,EAAa1B,EAAG2B,kBAAkBhD,KAAKiC,SAC7Cc,GAAcN,QAAQC,KAAK,eAAgBK,GAE3C1B,EAAG4B,aAAad,GAChBd,EAAG4B,aAAaN,GAEhB,MAAQO,KAAMC,GAAkB9B,EAAG+B,iBAAiBpD,KAAKiC,QAAS,GAC5DoB,EAAWhC,EAAGiC,mBAAmBtD,KAAKiC,QAASkB,IAC7CD,KAAMK,GAAalC,EAAG+B,iBAAiBpD,KAAKiC,QAAS,GACvDuB,EAAUnC,EAAGiC,mBAAmBtD,KAAKiC,QAASsB,IAC5CL,KAAMO,GAAWpC,EAAG+B,iBAAiBpD,KAAKiC,QAAS,GACrDyB,EAAQrC,EAAGiC,mBAAmBtD,KAAKiC,QAASwB,IAC1CP,KAAMS,GAAgBtC,EAAG+B,iBAAiBpD,KAAKiC,QAAS,GAC1D2B,EAAUvC,EAAGiC,mBAAmBtD,KAAKiC,QAAS0B,IAC5CT,KAAMW,GAAgBxC,EAAG+B,iBAAiBpD,KAAKiC,QAAS,GAC1D6B,EAAUzC,EAAGiC,mBAAmBtD,KAAKiC,QAAS4B,IAC5CX,KAAMa,GAAY1C,EAAG+B,iBAAiBpD,KAAKiC,QAAS,GACtD+B,EAAM3C,EAAGiC,mBAAmBtD,KAAKiC,QAAS8B,GAEhD1C,EAAG4C,WAAWjE,KAAKiC,SAEnBZ,EAAG6C,iBACFV,GACA,EAEA,IAAIW,aAAa,CAAC,oBAAsB,EAAG,EAAG,EAAG,EAAG,oBAAsB,EAAG,EAAG,EAAG,GAAI,mBAAqB,EAAG,EAAG,GAAI,mBAAoB,KAE3I9C,EAAG6C,iBAAiBb,GAAU,EAAO,IAAIc,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,KACrG9C,EAAG+C,iBAAiBV,GAAO,EAAO,IAAIS,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAC5E9C,EAAGgD,UAAUT,EAAS,EAAG,EAAG,GAC5BvC,EAAGiD,UAAUR,EAAS,GACtBzC,EAAGkD,UAAUP,EAAK,GAGlBhE,KAAKwE,QAAUnD,EAAGoD,gBAClBpD,EAAGqD,cAAcrD,EAAGsD,UACpBtD,EAAGuD,YAAYvD,EAAGwD,WAAY7E,KAAKwE,SACnCnD,EAAGyD,YAAY,OAAO,GACtBzD,EAAGyD,YAAY,OAAO,GACtBzD,EAAGyD,YAAYzD,EAAG0D,iBAAkB,GACpC1D,EAAGyD,YAAY,MAAO,GAEtBzD,EAAG2D,cAAc3D,EAAGwD,WAAYxD,EAAG4D,eAAgB5D,EAAG6D,eACtD7D,EAAG2D,cAAc3D,EAAGwD,WAAYxD,EAAG8D,eAAgB9D,EAAG6D,eACtD7D,EAAG2D,cAAc3D,EAAGwD,WAAYxD,EAAG+D,mBAAoB/D,EAAGgE,QAC1DhE,EAAG2D,cAAc3D,EAAGwD,WAAYxD,EAAGiE,mBAAoBjE,EAAGkE,sBAE1DlE,EAAGmE,QAAQnE,EAAGoE,WACdpE,EAAGqE,WAAU,GACbrE,EAAGsE,WAAU,GAAM,GAAM,GAAM,GAC/BtE,EAAGmE,QAAQnE,EAAGuE,cACdvE,EAAGmE,QAAQnE,EAAGwE,qBACdxE,EAAGmE,QAAQnE,EAAGyE,0BAGd9F,KAAK+F,IAAM1E,EAAG2E,eACdhG,KAAKiG,GAAK5E,EAAG2E,eACbhG,KAAKkG,GAAK7E,EAAG2E,eAEb,MAAMG,EAAO9E,EAAG+E,kBAAkBpG,KAAKiC,QAAS,YAC1CoE,EAAMhF,EAAG+E,kBAAkBpG,KAAKiC,QAAS,MAG/CZ,EAAGiF,wBAAwBH,GAC3B9E,EAAGkF,WAAWlF,EAAGmF,aAAcxG,KAAK+F,KACpC1E,EAAGoF,oBAAoBN,EAAM,EAAG9E,EAAGqF,OAAO,EAAO,EAAG,GAEpDrF,EAAGiF,wBAAwBD,GAC3BhF,EAAGkF,WAAWlF,EAAGmF,aAAcxG,KAAKiG,IACpC5E,EAAGoF,oBAAoBJ,EAAK,EAAGhF,EAAGqF,OAAO,EAAO,EAAG,EACnD,CAED,cAAAC,EAAevG,MAAEA,EAAQ,KAAIwG,GAAEA,EAAK5G,KAAKI,MAAKyG,GAAEA,EAAK7G,KAAKO,QAAW,CAAA,GACpE,GAAIqG,IAAO5G,KAAKI,OAASyG,IAAO7G,KAAKO,OAAQ,CACxCuG,OAAOC,SAAS3G,GACnBJ,KAAKI,MAAQA,EAEbJ,KAAKI,MAAQ4G,KAAKC,MAAOjH,KAAKO,OAASqG,EAAMC,GAG9C7G,KAAKgB,OAAOZ,MAAQJ,KAAKI,MACzBJ,KAAKgB,OAAOT,OAASP,KAAKO,OAE1Bc,EAAG6F,SAAS,EAAG,EAAGlH,KAAKI,MAAOJ,KAAKO,QAEnC,MAAMiD,EAAUnC,EAAGiC,mBAAmBtD,KAAKiC,QAAS,oBACpDZ,EAAG6C,iBACFV,GACA,EACA,IAAIW,aAAa,CAAC,EAAInE,KAAKI,MAAO,EAAG,EAAG,EAAG,EAAG,EAAIJ,KAAKO,OAAQ,EAAG,EAAG,EAAG,GAAI,mBAAqB,EAAG,EAAG,GAAI,mBAAoB,IAEhI,CAGD,MAAM4G,EAAe,IAAIlG,EAAMA,OAACjB,KAAK2B,OAAOvB,MAAOJ,KAAK2B,OAAOpB,QAC/D4G,EAAajG,WAAW,MAAMkG,UAAUpH,KAAK2B,OAAQ,EAAG,GAExDN,EAAGuD,YAAYvD,EAAGwD,WAAY7E,KAAKwE,SACnCnD,EAAGgG,WAAWhG,EAAGwD,WAAY,EAAGxD,EAAGP,KAAMO,EAAGP,KAAMO,EAAGN,cAAeoG,GACpE9F,EAAGiG,eAAejG,EAAGwD,WACrB,CAED,cAAA0C,CAAeC,EAAQ,MACtB,MAAMpH,MAAEA,EAAKG,OAAEA,GAAWP,KAAK4B,MAEzBzB,EADS,IAAIc,EAAAA,OAAOb,EAAOG,GACdW,WAAW,MAC9Bf,EAAIiH,UAAUpH,KAAK4B,MAAO,EAAG,GAC7B,MAAQ6F,KAAMC,GAAWvH,EAAIwH,aAAa,EAAG,EAAGvH,EAAOG,GAEjDqH,EAAU5H,KAAKI,MAAQA,EAE7BoH,EAAQR,KAAKC,MAAMH,OAAOC,SAASS,GAASA,EAAQjH,EAAS,GAC7DiH,EAAQR,KAAKa,IAAI,EAAGb,KAAKc,IAAIvH,EAAS,EAAGiH,IAEzC,MAAMO,EAAgBC,MAAMzH,GAC1B0H,KAAK,MACLjE,IAAI,CAACkE,EAAGC,IACRH,MAAM5H,GACJ6H,KAAK,MACLjE,IAAI,CAACkE,EAAGxI,KAAO,CACfuG,GAAI,EAAEvG,EAAI,IAAOU,EAAO,GAAK+H,EAAI,IAAO5H,GACxC6H,SAAU,EAAE1I,EAAIU,EAAQ,GAAKwH,GAAUF,EAAyB,GAAjBS,EAAI/H,EAAQV,IAAUgI,EAAyB,GAAjBS,EAAI/H,EAAQV,GAAS,GAAK,IAAM,KAAOkI,EAAS,OAKjI,IAAK,IAAIO,EAAIX,EAAOW,EAAI,IAAKA,EAC5B,IAAK,IAAIzI,EAAI,EAAGA,EAAIU,IAASV,EAC5BqI,EAAcI,EAAI,GAAGzI,GAAG0I,SAAS,GAAKL,EAAcI,GAAGzI,GAAG0I,SAAS,IAAOV,EAAyB,GAAjBS,EAAI/H,EAAQV,GAAS,GAAK,KAAOkI,EAAW,IAEhI,IAAK,IAAIO,EAAIX,EAAQ,EAAGW,EAAI5H,IAAU4H,EACrC,IAAK,IAAIzI,EAAI,EAAGA,EAAIU,IAASV,EAC5BqI,EAAcI,GAAGzI,GAAG0I,SAAS,GAAKL,EAAcI,EAAI,GAAGzI,GAAG0I,SAAS,IAAOV,EAA+B,IAAtBS,EAAI,GAAK/H,EAAQV,GAAS,GAAK,KAAOkI,EAAW,IAGtI,MAAMS,EAAM9I,EAAGA,EAAGwI,GAAe/D,IAAKsE,GAAMA,EAAErC,KACxCsC,EAAYhJ,EAAGA,EAAGwI,GAAe/D,IAAKsE,GAAMA,EAAEF,WAE9CI,EAAQR,MAAMzH,EAAS,GAC3B0H,KAAK,MACLjE,IAAI,CAACkE,EAAGC,IACRH,MAAM5H,EAAQ,GACZ6H,KAAK,MACLjE,IAAI,CAACkE,EAAGxI,IAAM,CAACyI,EAAI/H,EAAQV,EAAGyI,EAAI/H,EAAQV,EAAI,GAAIyI,EAAI,GAAK/H,EAAQV,GAAIyI,EAAI,GAAK/H,EAAQV,GAAIyI,EAAI,GAAK/H,EAAQV,EAAI,EAAGyI,EAAI/H,EAAQV,EAAI,KAElI+I,EAAUlJ,EAAGA,EAAGiJ,IAEtBnH,EAAGkF,WAAWlF,EAAGmF,aAAcxG,KAAK+F,KACpC1E,EAAGqH,WAAWrH,EAAGmF,aAAc,IAAIrC,aAAaoE,GAAYlH,EAAGsH,aAE/DtH,EAAGkF,WAAWlF,EAAGmF,aAAcxG,KAAKiG,IACpC5E,EAAGqH,WAAWrH,EAAGmF,aAAc,IAAIrC,aAAakE,GAAMhH,EAAGsH,aAEzDtH,EAAGkF,WAAWlF,EAAGuH,qBAAsB5I,KAAKkG,IAC5C7E,EAAGqH,WAAWrH,EAAGuH,qBAAsB,IAAIC,YAAYJ,GAAUpH,EAAGsH,aAEpE3I,KAAK8I,eAAiBL,EAAQM,MAC9B,CAED,MAAAC,GAQC,OAPA3H,EAAG4H,WAAW,EAAG,EAAG,EAAG,GACvB5H,EAAG6H,MAAM7H,EAAG8H,kBAIZ9H,EAAG+H,aAAa/H,EAAGgI,UAAWrJ,KAAK8I,eAAgBzH,EAAGiI,aAAc,GAE7DtJ,KAAKgB,OAAON,UACnB,CAED,OAAA6I,GACClI,EAAGmI,aAAaxJ,KAAK+F,KACrB1E,EAAGmI,aAAaxJ,KAAKiG,IACrB5E,EAAGmI,aAAaxJ,KAAKkG,IAErB7E,EAAGoI,cAAczJ,KAAKiC,SACtBZ,EAAGqI,cAAc1J,KAAKwE,QACtB,GAGsC,CACvC7C,OAAQ,IAAIgI,EAAAA,MACZ/H,MAAO,IAAI+H,EAAAA,QEvTZlH,QAAQmH,KAAK,kDAAmD,8EAA+E,mFAY/I,MAAMC,EAAgB,CAAC,OAAQ,cAAe,WAAY,UAE1D,MAAMC,YAGL,UAAMC,CAAKC,GACVhK,KAAKiK,OAAS,IAAIC,EAAAA,YACZlK,KAAKiK,OAAOF,KAAKC,GAEvBvH,QAAQ0H,IAAI,6BAA6BH,KAEzC,IACC,UAAW,MAAOvC,KAASzH,KAAKiK,OAAQ,CACvC,MAAMG,OAAEA,EAAMC,KAAEA,EAAIC,OAAEA,GAAYC,SAAO9C,IAAoB,GAI7D,GAFAhF,QAAQ0H,IAAI,YAAYC,MAEnBP,EAAcW,SAASJ,IAAWpK,KAAKoK,GAC3C,IACC,MAAM3C,QAAazH,KAAKoK,KAAUC,EAAMC,IACxC7H,QAAQ0H,IAAI,YAAYC,WAElBpK,KAAKiK,OAAOQ,KACjBC,OAAK,CACJC,KAAM,EACNC,IAAK,UACLnD,SAGF,CAAC,MAAOoD,GACRpI,QAAQqI,MAAM,SAASV,aAAkBS,WACnC7K,KAAKiK,OAAOQ,KACjBC,OAAK,CACJC,MAAO,EACPC,IAAK,UAAUG,KAAKC,UAAUH,KAC9BpD,KAAM,OAGR,MAEDhF,QAAQqI,MAAM,SAASV,6BACjBpK,KAAKiK,OAAOQ,KACjBC,OAAK,CACJC,MAAO,EACPC,IAAK,cAAcR,IACnB3C,KAAM,OAIT,CACD,CAAC,MAAOoD,GACRpI,QAAQ0H,IAAI,4BAA6BU,EAAII,aACvCjL,KAAKiK,OAAOiB,cACZlL,KAAK+J,KAAKC,EAChB,CACD,CAED,aAAMmB,CAAQd,EAAcC,GAC3B,IAAI3I,EAAQC,EAAO4F,EAUnB,OARI6C,KACF1I,EAAQC,EAAO4F,GAAS6C,GAGtBC,KACA3I,SAAQC,QAAO4F,SAAU8C,GF6OCc,OAAOC,EAA4BC,EAA2B9D,KAC7F,MAAM7F,QAAe4J,YAAUF,GACzBzJ,QAAc2J,YAAUD,GAe9B,OAbA9J,EAAcG,OAASA,EACvBH,EAAcI,MAAQA,EAEtBJ,EAAcmF,eAAe,CAC5BvG,MAAOwB,EAAMxB,MACbwG,GAAIjF,EAAOvB,MACXyG,GAAIlF,EAAOpB,SAGZiB,EAAc+F,eAAeC,GAE7B/E,QAAQ0H,IAAIqB,QAAQC,cAAcC,UAE3B,CACNhE,aAAclG,EAAcwH,SAC5B2C,KAAM,CACLvL,MAAOoB,EAAcpB,MACrBG,OAAQiB,EAAcjB,UE/PhBqL,CAAiBjK,EAAQC,EAAO4F,EACvC,GAGF4D,iBACC,MAAMS,EAAS,IAAI/B,kBAEb+B,EAAO9B,KAAK,WAAW+B,EAAAA,KAAK9B,OACnC,CAEA+B"} \ No newline at end of file diff --git a/backend/omr/dist/index.js b/backend/omr/dist/index.js index 9dc162e8ac3712bdfa03d8fc031497397662edc5..13f95bd373a1022b5bf9a63b9fe594e45a89896f 100644 --- a/backend/omr/dist/index.js +++ b/backend/omr/dist/index.js @@ -1,2 +1,2 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("js-sha1"),t=require("lodash/pick"),s=require("lodash"),i=require("math-erf"),r=require("msgpackr"),n=require("zeromq"),a=require("portfinder"),o=require("python-shell"),c=require("skia-canvas"),l=require("weak-lru-cache"),u=require("spark-md5"),h=require("sharp"),m=require("got");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d,p,g,y=f(e),v=f(t),x=f(s),S=f(i),b=f(u),k=f(h),T=f(m);globalThis.btoa=e=>Buffer.from(e,"binary").toString("base64"),globalThis.atob=e=>Buffer.from(e,"base64").toString("binary"),function(e){e.ByLines="ByLines",e.ByBlocks="ByBlocks"}(d||(d={})),function(e){e.Title="Title",e.Author="Author",e.TempoText="TempoText",e.TempoNumeral="TempoNumeral",e.TextualMark="TextualMark",e.Lyric="Lyric",e.Instrument="Instrument",e.MeasureNumber="MeasureNumber",e.Times="Times",e.Alternation1="Alternation1",e.Alternation2="Alternation2",e.Chord="Chord",e.PageMargin="PageMargin",e.Other="Other"}(p||(p={})),function(e){e.ClefG="ClefG",e.ClefF="ClefF",e.ClefC="ClefC",e.NoteheadS0="NoteheadS0",e.NoteheadS1="NoteheadS1",e.NoteheadS2="NoteheadS2",e.NoteheadS1stemU="NoteheadS1stemU",e.NoteheadS1stemD="NoteheadS1stemD",e.NoteheadS2stemU="NoteheadS2stemU",e.NoteheadS2stemD="NoteheadS2stemD",e.vline_Stem="vline_Stem",e.Flag3="Flag3",e.BeamLeft="BeamLeft",e.BeamContinue="BeamContinue",e.BeamRight="BeamRight",e.TremoloLeft="TremoloLeft",e.TremoloRight="TremoloRight",e.TremoloMiddle="TremoloMiddle",e.Dot="Dot",e.Rest0="Rest0",e.Rest1="Rest1",e.Rest2="Rest2",e.Rest3="Rest3",e.Rest4="Rest4",e.Rest5="Rest5",e.Rest6="Rest6",e.Rest0W="Rest0W",e.RestM1="RestM1",e.AccNatural="AccNatural",e.AccSharp="AccSharp",e.AccDoublesharp="AccDoublesharp",e.AccFlat="AccFlat",e.AccFlatflat="AccFlatflat",e.vline_VoltaLeft="vline_VoltaLeft",e.vline_VoltaRight="vline_VoltaRight",e.VoltaLeft="VoltaLeft",e.VoltaRight="VoltaRight",e.VoltaAlternativeBegin="VoltaAlternativeBegin",e.BarMeasure="BarMeasure",e.vline_BarMeasure="vline_BarMeasure",e.vline_BarTerminal="vline_BarTerminal",e.vline_BarSegment="vline_BarSegment",e.SlurBegin="SlurBegin",e.SlurEnd="SlurEnd",e.TimesigC44="TimesigC44",e.TimesigC22="TimesigC22",e.TimesigZero="TimesigZero",e.TimesigOne="TimesigOne",e.TimesigTwo="TimesigTwo",e.TimesigThree="TimesigThree",e.TimesigFour="TimesigFour",e.TimesigFive="TimesigFive",e.TimesigSix="TimesigSix",e.TimesigSeven="TimesigSeven",e.TimesigEight="TimesigEight",e.TimesigNine="TimesigNine",e.OctaveShift8va="OctaveShift8va",e.OctaveShift8vb="OctaveShift8vb",e.OctaveShift8="OctaveShift8",e.OctaveShift0="OctaveShift0",e.Zero="Zero",e.One="One",e.Two="Two",e.Three="Three",e.Four="Four",e.Five="Five",e.Six="Six",e.Seven="Seven",e.Eight="Eight",e.Nine="Nine",e.f="f",e.p="p",e.m="m",e.n="n",e.r="r",e.s="s",e.z="z",e.CrescendoBegin="CrescendoBegin",e.CrescendoEnd="CrescendoEnd",e.DecrescendoBegin="DecrescendoBegin",e.DecrescendoEnd="DecrescendoEnd",e.ScriptFermata="ScriptFermata",e.ScriptShortFermata="ScriptShortFermata",e.ScriptSforzato="ScriptSforzato",e.ScriptStaccato="ScriptStaccato",e.ScriptStaccatissimo="ScriptStaccatissimo",e.ScriptTurn="ScriptTurn",e.ScriptTrill="ScriptTrill",e.ScriptSegno="ScriptSegno",e.ScriptCoda="ScriptCoda",e.ScriptArpeggio="ScriptArpeggio",e.ScriptPrall="ScriptPrall",e.ScriptMordent="ScriptMordent",e.ScriptMarcato="ScriptMarcato",e.ScriptTenuto="ScriptTenuto",e.ScriptPortato="ScriptPortato",e.PedalStar="PedalStar",e.PedalPed="PedalPed",e.KeyAcc="KeyAcc",e.TempoNotehead="TempoNotehead",e.GraceNotehead="GraceNotehead",e.SignLined="SignLined",e.SignInterval="SignInterval",e.rect_Text="rect_Text",e.rect_Lyric="rect_Lyric"}(g||(g={}));const w={NoteheadS0:1.826,NoteheadS1:1.264,NoteheadS2:1.198},M={"clefs.F":{x:1.06},"clefs.G":{x:1.3},"clefs.F_change":{x:.87},"clefs.G_change":{x:1.07},"timesig.C44":{x:.9},"timesig.C22":{x:.9},zero:{x:.7,y:-1},one:{x:.7,y:-1},two:{x:.7,y:-1},three:{x:.7,y:-1},four:{x:.7,y:-1},five:{x:.7,y:-1},six:{x:.7,y:-1},seven:{x:.7,y:-1},eight:{x:.7,y:-1},nine:{x:.7,y:-1},"accidentals.sharp":{x:.55},"accidentals.doublesharp":{x:.5},"accidentals.natural":{x:.3},"accidentals.flat":{x:.3},"accidentals.flatflat":{x:.5},"noteheads.s0":{x:w.NoteheadS0/2},"noteheads.s1":{x:w.NoteheadS1/2},"noteheads.s2":{x:w.NoteheadS2/2},"rests.0":{x:.75,y:1},"rests.1":{x:.75},"rests.0o":{x:.75,y:1},"rests.1o":{x:.75},"rests.M1":{x:.75,y:1},"rests.2":{x:.5},"rests.3":{x:.5},"rests.4":{x:.5},"rests.5":{x:.5},"rests.6":{x:.5},f:{x:.6,y:-.5},m:{x:.9,y:-.5},p:{x:.5,y:-.5},r:{x:.5,y:-.5},s:{x:.5,y:-.5},z:{x:.5,y:-.5},"scripts.trill":{y:-.5},"scripts.segno":{x:0,y:0},"scripts.coda":{x:0,y:0},"scripts.arpeggio":{x:.5,y:-.5},"pedal.*":{x:.78,y:-.78},"pedal.Ped":{x:1.6,y:-.7}},E=[g.BarMeasure,g.vline_BarMeasure,g.vline_BarTerminal,g.vline_BarSegment,g.vline_VoltaLeft,g.vline_VoltaRight,g.VoltaAlternativeBegin],N=g,I=[[N.NoteheadS0,N.NoteheadS1,N.NoteheadS2],[N.Zero,N.One,N.Two,N.Three,N.Four,N.Five,N.Six,N.Seven,N.Eight,N.Nine,N.ScriptStaccatissimo],[N.TimesigZero,N.TimesigOne,N.TimesigTwo,N.TimesigThree,N.TimesigFour,N.TimesigFive,N.TimesigSix,N.TimesigSeven,N.TimesigEight,N.TimesigNine],[N.Rest0,N.Rest1,N.Rest2,N.Rest3,N.Rest4,N.Rest5,N.Rest6,N.Rest0W,N.RestM1],[N.SignInterval,N.SignLined],[N.BeamLeft,N.BeamContinue,N.BeamRight]],C=[N.ClefG,N.ClefF,N.ClefC,N.NoteheadS0,N.NoteheadS1,N.NoteheadS2,N.Dot,N.Rest0,N.Rest1,N.Rest2,N.Rest3,N.Rest4,N.Rest5,N.Rest6,N.RestM1,N.AccNatural,N.AccSharp,N.AccDoublesharp,N.AccFlat,N.AccFlatflat,N.TimesigC44,N.TimesigC22,N.TimesigZero,N.TimesigOne,N.TimesigTwo,N.TimesigThree,N.TimesigFour,N.TimesigFive,N.TimesigSix,N.TimesigSeven,N.TimesigEight,N.TimesigNine,N.One,N.Two,N.Three,N.Four,N.Five,N.OctaveShift8,N.OctaveShift0,N.f,N.p,N.m,N.n,N.r,N.s,N.z,N.ScriptFermata,N.ScriptShortFermata,N.ScriptSforzato,N.ScriptStaccato,N.ScriptStaccatissimo,N.ScriptTurn,N.ScriptTrill,N.ScriptSegno,N.ScriptCoda,N.ScriptArpeggio,N.ScriptPrall,N.ScriptMordent,N.ScriptMarcato,N.ScriptTenuto,N.ScriptPortato,N.PedalStar,N.PedalPed],_=(e,t,s)=>{const i=Math.round(10*s.x),r=Math.round(10*s.y),n=`${e}|${t}|${s.semantic}|${i}|${r}`,a=y.default.array(n).slice(12),o=globalThis.btoa(String.fromCharCode(...a)).substring(0,11);return s.id=o,o},O=(e,t)=>{const s=Math.round(t.x),i=Math.round(t.y),r=`p-${e}|${t.semantic}|${s}|${i}`,n=y.default.array(r).slice(12),a=globalThis.btoa(String.fromCharCode(...n)).substring(0,11);return t.id=a,a};var B;!function(e){e.ClefG="clefs-G",e.ClefF="clefs-F",e.ClefC="clefs-C",e.TimesigC44="timesig-C44",e.TimesigC22="timesig-C22",e.TimesigZero="zero|timesig0",e.TimesigOne="one|timesig1",e.TimesigTwo="two|timesig2",e.TimesigThree="three|timesig3",e.TimesigFour="four|timesig4",e.TimesigFive="five|timesig5",e.TimesigSix="six|timesig6",e.TimesigSeven="seven|timesig7",e.TimesigEight="eight|timesig8",e.TimesigNine="nine|timesig9",e.OctaveShift8va="octave-a",e.OctaveShift8vb="octave-b",e.OctaveShift0="octave-0",e.Zero="zero|n0",e.One="one|n1",e.Two="two|n2",e.Three="three|n3",e.Four="four|n4",e.Five="five|n5",e.Six="six|n6",e.Seven="seven|n7",e.Eight="eight|n8",e.Nine="nine|n9",e.AccNatural="accidentals-natural",e.AccSharp="accidentals-sharp",e.AccDoublesharp="accidentals-doublesharp",e.AccFlat="accidentals-flat",e.AccFlatflat="accidentals-flatflat",e.KeyNatural="accidentals-natural|key-natural",e.KeySharp="accidentals-sharp|key-sharp",e.KeyFlat="accidentals-flat|key-flat",e.NoteheadS0="noteheads-s0",e.NoteheadS1="noteheads-s1",e.NoteheadS2="noteheads-s2",e.NoteheadS1stemU="noteheads-s1|noteheads-s1-u",e.NoteheadS1stemD="noteheads-s1|noteheads-s1-d",e.NoteheadS2stemU="noteheads-s2|noteheads-s2-u",e.NoteheadS2stemD="noteheads-s2|noteheads-s2-d",e.Rest0="rests-0o",e.Rest1="rests-1o",e.Rest2="rests-2",e.Rest3="rests-3",e.Rest4="rests-4",e.Rest5="rests-5",e.Rest6="rests-6",e.Rest0W="rests-0",e.RestM1="rests-M1",e.Flag3="flags-u3",e.Flag4="flags-u4",e.Flag5="flags-u5",e.Flag6="flags-u6",e.Flag7="flags-u7",e.Flag8="flags-u8",e.BeamLeft="|beam-left",e.BeamRight="|beam-right",e.BeamContinue="|beam-continue",e.TremoloLeft="|tremolo-left",e.TremoloRight="|tremolo-right",e.TremoloMiddle="|tremolo-middle",e.SlurBegin="|slur-begin",e.SlurEnd="|slur-end",e.TieBegin="|tie-begin",e.TieEnd="|tie-end",e.VoltaLeft="|volta-left",e.VoltaRight="|volta-right",e.VoltaAlternativeBegin="|volta-alter-begin",e.BarTerminal="|bar-terminal",e.BarSegment="|bar-segment",e.Dot="|dot",e.DotDot="|dotdot",e.f="f",e.p="p",e.m="m",e.r="r",e.s="s",e.z="z",e.WedgeCrescendo="|wedge-crescendo",e.WedgeDiminuendo="|wedge-diminuendo",e.WedgeClose="|wedge-close",e.CrescendoBegin="|wedge-crescendo",e.DecrescendoBegin="|wedge-diminuendo",e.CrescendoEnd="|wedge-close",e.DecrescendoEnd="|wedge-close",e.ScriptFermata="scripts-ufermata",e.ScriptShortFermata="scripts-ushortfermata",e.ScriptSforzato="scripts-sforzato",e.ScriptStaccato="scripts-staccato",e.ScriptStaccatissimo="scripts-ustaccatissimo",e.ScriptTurn="scripts-turn",e.ScriptTrill="scripts-trill",e.ScriptSegno="scripts-segno",e.ScriptCoda="scripts-coda",e.ScriptArpeggio="scripts-arpeggio",e.ScriptPrall="scripts-prall",e.ScriptMordent="scripts-mordent",e.ScriptMarcato="scripts-umarcato",e.ScriptTenuto="scripts-tenuto",e.ScriptPortato="scripts-uportato",e.PedalStar="pedal-star",e.PedalPed="pedal-Ped",e.Text="|text",e.GraceNotehead="|grace-notehead"}(B||(B={}));const A=B,P=Object.values(B),R=P.filter(e=>/clefs-/.test(e)),D=P.filter(e=>/timesig/.test(e)),F=P.filter(e=>/timesig-/.test(e)),L=P.filter(e=>/timesig\d/.test(e)),$=P.filter(e=>/octave-/.test(e)),j=P.filter(e=>/n\d/.test(e)),H=P.filter(e=>/accidentals-/.test(e)),V=P.filter(e=>/noteheads-/.test(e)),z=[A.NoteheadS0,A.NoteheadS1,A.NoteheadS2],q=P.filter(e=>/noteheads-.+-[ud]/.test(e)),G=P.filter(e=>/rests-/.test(e)),W=P.filter(e=>/flags-/.test(e)),U=P.filter(e=>/volta-/.test(e)),Y=P.filter(e=>/^[a-z]$/.test(e)),X=P.filter(e=>/scripts-/.test(e)),K=P.filter(e=>/pedal-/.test(e)),Z=[A.Dot,A.DotDot],J=[A.SlurBegin,A.SlurEnd,A.TieBegin,A.TieEnd],Q=P.filter(e=>/beam-/.test(e)),ee=P.filter(e=>/wedge-/.test(e)),te=[...j,...Y,...ee,...K,...J,A.ScriptFermata,A.ScriptShortFermata,A.ScriptSforzato,A.ScriptStaccato,A.ScriptStaccatissimo,A.ScriptTurn,A.ScriptTrill,A.ScriptPrall,A.ScriptMordent,A.ScriptMarcato,A.ScriptTenuto,A.ScriptPortato],se=[...K],ie=[...R,...D,...j,...H,A.NoteheadS0,A.NoteheadS1,A.NoteheadS2,...G,...Y,...X,...K,...Z],re={};R.forEach(e=>re[e]=1),L.forEach(e=>re[e]=1),H.forEach(e=>re[e]=.5),V.forEach(e=>re[e]=.5),G.forEach(e=>re[e]=.5),Z.forEach(e=>re[e]=.5);const ne={};F.forEach(e=>ne[e]=0),U.forEach(e=>ne[e]=0);class Token{constructor(e){Object.assign(this,e)}get typeId(){return this.type.split("|").reverse()[0]}get isPredicted(){return Number.isFinite(this.confidence)}get isNotehead(){return q.includes(this.type)||this.type===B.NoteheadS0}get isContexted(){return R.includes(this.type)||D.includes(this.type)||$.includes(this.type)||H.includes(this.type)}get isAccessory(){return j.includes(this.type)||Y.includes(this.type)||X.includes(this.type)||K.includes(this.type)}get division(){switch(this.type){case A.NoteheadS0:return 0;case A.NoteheadS1stemU:case A.NoteheadS1stemD:return 1;case A.NoteheadS2stemU:case A.NoteheadS2stemD:return 2;case A.Flag3:return 3;case A.Flag4:return 4;case A.Flag5:return 5;case A.Flag6:return 6;case A.Flag7:return 7;case A.Flag8:return 8;case A.RestM1:return-1;case A.Rest0:return 0;case A.Rest1:return 1;case A.Rest2:return 2;case A.Rest3:return 3;case A.Rest4:return 4;case A.Rest5:return 5;case A.Rest6:return 6}return null}get dots(){switch(this.type){case A.Dot:return 1;case A.DotDot:return 2}return null}get direction(){switch(this.type){case A.NoteheadS1stemU:case A.NoteheadS2stemU:return"u";case A.NoteheadS1stemD:case A.NoteheadS2stemD:return"d"}return null}get width(){switch(this.type){case A.NoteheadS0:return w.NoteheadS0;case A.NoteheadS1stemU:case A.NoteheadS1stemD:return w.NoteheadS1;case A.NoteheadS2stemU:case A.NoteheadS2stemD:return w.NoteheadS2}}get left(){switch(this.type){case A.NoteheadS0:return this.x-this.width/2;case A.NoteheadS1stemU:case A.NoteheadS2stemU:return this.x-this.width;case A.NoteheadS1stemD:case A.NoteheadS2stemD:return this.x}return this.x}get right(){switch(this.type){case A.NoteheadS0:return this.x+this.width/2;case A.NoteheadS1stemU:case A.NoteheadS2stemU:return this.x;case A.NoteheadS1stemD:case A.NoteheadS2stemD:return this.x+this.width}return this.x}get voiceIndices(){return!this.voice||this.voice<0?[]:Array(Math.floor(Math.log2(this.voice))+1).fill(null).reduce((e,t,s)=>this.voice&1<("object"==typeof e&&(e=JSON.stringify(e)),JSON.parse(e,(e,s)=>{if(s&&"object"==typeof s&&s.__prototype){const e=t[s.__prototype];if(e){const{__prototype:t,...i}=s;return new e(i)}}return s})),oe=(e,t=null)=>{if((t=t||new Map).get(e))return t.get(e);if(Array.isArray(e)){const s=[];return t.set(e,s),e.forEach(e=>s.push(oe(e,t))),s}if(e&&"object"==typeof e){const s={};return t.set(e,s),Object.entries(e).forEach(([e,i])=>s[e]=oe(i,t)),Object.setPrototypeOf(s,e.__proto__),s}return e};class SimpleClass{assign(e){e&&Object.assign(this,e)}toJSON(){const e=this.constructor,t=e.serializedKeys||e.blackKeys&&Object.keys(this).filter(t=>!e.blackKeys.includes(t)),s=t?v.default(this,t):this;return{__prototype:e.className,...s}}deepCopy(){return oe(this)}}var ce;!function(e){e.Ordinary="ordinary",e.Full="full",e.Conservative="conservative",e.Once="once"}(ce||(ce={}));const le=(e,t=ce.Ordinary)=>[].concat(...e.map(e=>e.serialize(t))),ue=(e,{withBrackets:t=!1}={})=>{let s="",i=!1;for(let t=0;t0&&!i&&(s+=", "),i=!1,s+=e[t].code)}return t?`[${s}]`:s};class SingleMLayout extends SimpleClass{static from(e){const t=new SingleMLayout;return t.measure=e,t}constructor(e=void 0){super(),this.assign(e)}serialize(){return[this.measure]}get seq(){return[this]}get code(){return this.measure.toString()}}SingleMLayout.className="SingleMLayout";class BlockMLayout extends SimpleClass{static trimSeq(e){const t=[];for(const s of e)if(s instanceof BlockMLayout)for(const e of s.seq)t.push(e);else t.push(s);const s=[];let i=null;for(const e of t)e instanceof SingleMLayout?e.measure>i&&(s.push(e),i=e.measure):s.push(e);return s}static fromSeq(e){const t=new BlockMLayout;return t.seq=BlockMLayout.trimSeq(e),t}constructor(e=void 0){super(),this.assign(e)}serialize(e){return le(this.seq,e)}get code(){return ue(this.seq,{withBrackets:!0})}}BlockMLayout.className="BlockMLayout";class VoltaMLayout extends SimpleClass{constructor(e=void 0){super(),this.assign(e)}serialize(e){const t=le(this.body);if(this.alternates){const s=this.alternates.map(e=>le(e)),i=s[s.length-1];switch(e){case ce.Ordinary:return t.concat(...s);case ce.Conservative:case ce.Full:return[...[].concat(...Array(this.times-1).fill(null).map((e,i)=>[...t,...s[i%(this.times-1)]])),...t,...i];case ce.Once:return[...t,...i]}}else switch(e){case ce.Ordinary:case ce.Conservative:case ce.Once:return t;case ce.Full:return[].concat(...Array(this.times).fill(null).map(()=>t))}console.warn("the current case not handled:",e,this)}get seq(){const e=this.alternates?this.alternates[this.alternates.length-1]:[];return[...this.body,...e]}get code(){const e=ue(this.body,{withBrackets:!0});let t=`${this.times}*${e}`;return this.alternates&&(t+="{"+this.alternates.map(e=>ue(e,{withBrackets:e.length>1})).join(", ")+"}"),t}}VoltaMLayout.className="VoltaMLayout";class ABAMLayout extends SimpleClass{constructor(e=void 0){super(),this.assign(e)}serialize(e){const t=this.main.serialize(e),s=le(this.main.seq,ce.Once),i=le(this.rest,e);switch(e){case ce.Ordinary:return[...t,...i];case ce.Once:return[...i,...s];case ce.Conservative:case ce.Full:return[...t,...i,...s];default:console.warn("the current case not handled:",e,this)}}get seq(){return[this.main,...this.rest]}get code(){return"<"+this.main.code+", "+ue(this.rest)+">"}}ABAMLayout.className="ABAMLayout";var he=Object.freeze({__proto__:null,get LayoutType(){return ce},SingleMLayout:SingleMLayout,BlockMLayout:BlockMLayout,VoltaMLayout:VoltaMLayout,ABAMLayout:ABAMLayout}),me=function(){var e=function(e,t,s,i){for(s=s||{},i=e.length;i--;s[e[i]]=t);return s},t=[1,13],s=[1,16],i=[1,15],r=[1,26],n=[1,29],a=[1,28],o=[1,30],c=[5,13,22,27,29],l=[2,15],u=[1,32],h=[5,14,21,22,27,28,29],m={trace:function(){},yy:{},symbols_:{error:2,start_symbol:3,measure_layout:4,EOF:5,index_wise_measure_layout:6,"i:":7,"s:":8,segment_wise_measure_layout:9,iw_sequence:10,iw_item:11,range:12,",":13,UNSIGNED:14,"..":15,single:16,iw_block_item:17,iw_volta:18,iw_aba:19,iw_block:20,"[":21,"]":22,"*":23,iw_optional_alternates:24,iw_alternates:25,"{":26,"}":27,"<":28,">":29,sw_sequence:30,sw_item:31,segment:32,sw_block_item:33,sw_volta:34,sw_aba:35,sw_block:36,sw_optional_alternates:37,sw_alternates:38,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",7:"i:",8:"s:",13:",",14:"UNSIGNED",15:"..",21:"[",22:"]",23:"*",26:"{",27:"}",28:"<",29:">"},productions_:[0,[3,2],[4,1],[4,2],[4,2],[6,1],[10,1],[10,1],[10,3],[10,3],[12,3],[11,1],[11,1],[11,1],[11,1],[16,1],[17,1],[20,3],[18,4],[24,0],[24,1],[25,3],[19,5],[9,1],[30,1],[30,2],[31,1],[31,1],[31,1],[31,1],[32,1],[33,1],[36,3],[34,4],[37,0],[37,1],[38,3],[35,4]],performAction:function(e,t,s,i,r,n,a){var o=n.length-1;switch(r){case 1:return n[o-1];case 2:this.$=f(null,n[o]);break;case 3:this.$=f("index-wise",n[o]);break;case 4:this.$=f("segment-wise",b(n[o]));break;case 5:case 23:1===n[o].length&&"BlockMLayout"===n[o][0].__prototype?this.$=n[o][0]:this.$=p(n[o]);break;case 6:case 24:this.$=[n[o]];break;case 7:case 11:case 12:case 13:case 14:case 20:case 27:case 28:case 29:case 35:this.$=n[o];break;case 8:this.$=[...n[o-2],n[o]];break;case 9:this.$=[...n[o-2],...n[o]];break;case 10:this.$=S(n[o-2],n[o]);break;case 15:this.$=d(n[o]);break;case 16:case 31:this.$=p(n[o]);break;case 17:case 32:this.$=n[o-1];break;case 18:case 33:this.$=g(n[o-3],n[o-1],n[o]);break;case 19:case 34:this.$=null;break;case 21:case 36:this.$=x(n[o-1]);break;case 22:this.$=y(n[o-3],n[o-1]);break;case 25:this.$=[...n[o-1],n[o]];break;case 26:this.$=p([n[o]]);break;case 30:this.$=v(n[o]);break;case 37:this.$=y(n[o-2],n[o-1])}},table:[{3:1,4:2,6:3,7:[1,4],8:[1,5],10:6,11:7,12:8,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},{1:[3]},{5:[1,17]},{5:[2,2]},{6:18,10:6,11:7,12:8,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},{9:19,14:r,21:n,28:a,30:20,31:21,32:22,33:23,34:24,35:25,36:27},{5:[2,5],13:o},e(c,[2,6]),e(c,[2,7]),e(c,[2,11]),e(c,[2,12]),e(c,[2,13]),e(c,[2,14]),e(c,l,{15:[1,31],23:u}),e(c,[2,16]),{11:33,14:[1,34],16:9,17:10,18:11,19:12,20:14,21:s,28:i},{10:35,11:7,12:8,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},{1:[2,1]},{5:[2,3]},{5:[2,4]},{5:[2,23],14:r,21:n,28:a,31:36,32:22,33:23,34:24,35:25,36:27},e(h,[2,24]),e(h,[2,26]),e(h,[2,27]),e(h,[2,28]),e(h,[2,29]),e(h,[2,30],{23:[1,37]}),e(h,[2,31]),{14:r,21:n,28:a,31:38,32:22,33:23,34:24,35:25,36:27},{14:r,21:n,28:a,30:39,31:21,32:22,33:23,34:24,35:25,36:27},{11:40,12:41,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},{14:[1,42]},{20:43,21:s},{13:[1,44]},{13:l,23:u},{13:o,22:[1,45]},e(h,[2,25]),{21:n,36:46},{14:r,21:n,28:a,30:47,31:21,32:22,33:23,34:24,35:25,36:27},{14:r,21:n,22:[1,48],28:a,31:36,32:22,33:23,34:24,35:25,36:27},e(c,[2,8]),e(c,[2,9]),e(c,[2,10]),e(c,[2,19],{24:49,25:50,26:[1,51]}),{10:52,11:7,12:8,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},e([5,13,22,26,27,29],[2,17]),e(h,[2,34],{37:53,38:54,26:[1,55]}),{14:r,21:n,28:a,29:[1,56],31:36,32:22,33:23,34:24,35:25,36:27},e([5,14,21,22,26,27,28,29],[2,32]),e(c,[2,18]),e(c,[2,20]),{10:57,11:7,12:8,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},{13:o,29:[1,58]},e(h,[2,33]),e(h,[2,35]),{14:r,21:n,28:a,30:59,31:21,32:22,33:23,34:24,35:25,36:27},e(h,[2,37]),{13:o,27:[1,60]},e(c,[2,22]),{14:r,21:n,27:[1,61],28:a,31:36,32:22,33:23,34:24,35:25,36:27},e(c,[2,21]),e(h,[2,36])],defaultActions:{3:[2,2],17:[2,1],18:[2,3],19:[2,4]},parseError:function(e,t){if(!t.recoverable){var s=new Error(e);throw s.hash=t,s}this.trace(e)},parse:function(e){var t=this,s=[0],i=[null],r=[],n=this.table,a="",o=0,c=0,l=r.slice.call(arguments,1),u=Object.create(this.lexer),h={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(h.yy[m]=this.yy[m]);u.setInput(e,h.yy),h.yy.lexer=u,h.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var f=u.yylloc;r.push(f);var d=u.options&&u.options.ranges;"function"==typeof h.yy.parseError?this.parseError=h.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var p,g,y,v,x,S,b,k,T=function(){var e;return"number"!=typeof(e=u.lex()||1)&&(e=t.symbols_[e]||e),e},w={};;){if(g=s[s.length-1],this.defaultActions[g]?y=this.defaultActions[g]:(null==p&&(p=T()),y=n[g]&&n[g][p]),void 0===y||!y.length||!y[0]){var M="";for(x in k=[],n[g])this.terminals_[x]&&x>2&&k.push("'"+this.terminals_[x]+"'");M=u.showPosition?"Parse error on line "+(o+1)+":\n"+u.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[p]||p)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(M,{text:u.match,token:this.terminals_[p]||p,line:u.yylineno,loc:f,expected:k})}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+p);switch(y[0]){case 1:s.push(p),i.push(u.yytext),r.push(u.yylloc),s.push(y[1]),p=null,c=u.yyleng,a=u.yytext,o=u.yylineno,f=u.yylloc;break;case 2:if(S=this.productions_[y[1]][1],w.$=i[i.length-S],w._$={first_line:r[r.length-(S||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(S||1)].first_column,last_column:r[r.length-1].last_column},d&&(w._$.range=[r[r.length-(S||1)].range[0],r[r.length-1].range[1]]),void 0!==(v=this.performAction.apply(w,[a,c,o,h.yy,y[1],i,r].concat(l))))return v;S&&(s=s.slice(0,-1*S*2),i=i.slice(0,-1*S),r=r.slice(0,-1*S)),s.push(this.productions_[y[1]][0]),i.push(w.$),r.push(w._$),b=n[s[s.length-2]][s[s.length-1]],s.push(b);break;case 3:return!0}}return!0}};const f=(e,t)=>({__prototype:"MesaureLayout",type:e,data:t}),d=e=>({__prototype:"SingleMLayout",measure:Number(e)}),p=e=>({__prototype:"BlockMLayout",seq:e}),g=(e,t,s)=>({__prototype:"VoltaMLayout",times:Number(e),body:t,alternates:s}),y=(e,t)=>({__prototype:"ABAMLayout",main:e,rest:t}),v=e=>({segment:!0,length:Number(e)}),x=e=>e.map(e=>"BlockMLayout"===e.__prototype?e.seq:[e]),S=(e,t)=>{if(e=Number(e),!((t=Number(t))>=e))throw new Error(`invalid measure range: ${e}..${t}`);return Array(t+1-e).fill(0).map((t,s)=>d(e+s))},b=(e,t={index:1})=>{const s=e=>[].concat(...e.map(e=>((e,t)=>{if(e.segment){const s=t.index;return t.index+=e.length,Array(e.length).fill(0).map((e,t)=>d(s+t))}return[b(e,t)]})(e,t)));switch(e.__prototype){case"BlockMLayout":e.seq=s(e.seq);break;case"VoltaMLayout":e.body=s(e.body),e.alternates=e.alternates&&e.alternates.map(s);break;case"ABAMLayout":e.main=b(e.main,t),e.rest=s(e.rest)}return e};var k={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,s=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var s,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],s=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var n in r)this[n]=r[n];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),n=0;nt[0].length)){if(t=s,i=n,this.options.backtrack_lexer){if(!1!==(e=this.test_match(s,r[n])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[i]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,s,i){switch(s){case 0:break;case 1:case 3:case 4:return t.yytext;case 2:return 14;case 5:return 5}},rules:[/^(?:\s+)/,/^(?:([*,\[\]<>{}]))/,/^(?:(([1-9])([0-9])*))/,/^(?:(([a-z])+):)/,/^(?:\.\.)/,/^(?:$)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function T(){this.yy={}}return m.lexer=k,T.prototype=m,m.Parser=T,new T}();me.Parser;me.Parser;var fe=function(){return me.parse.apply(me,arguments)};var de,pe;!function(e){e[e.Default=0]="Default",e[e.Brace=1]="Brace",e[e.Bracket=2]="Bracket",e[e.Square=3]="Square"}(de||(de={})),function(e){e[e.Blank=0]="Blank",e[e.Dashed=1]="Dashed",e[e.Solid=2]="Solid"}(pe||(pe={}));const ge=e=>({type:de.Default,staff:e}),ye={"{":de.Brace,"}":de.Brace,"<":de.Bracket,">":de.Bracket,"[":de.Square,"]":de.Square},ve={",":pe.Blank,"-":pe.Solid,".":pe.Dashed},xe=()=>btoa(Math.random().toString().substr(2)).replace(/=/g,"").split("").reverse().slice(0,6).join(""),Se=(e,t)=>{let s=t;for(;s.length;){const t=s.shift(),i=ye[t];if(i){if("}>]".includes(t)&&i===e.type)break;if("{<[".includes(t)){const t={type:i,level:Number.isFinite(e.level)?e.level+1:0};s=Se(t,s),e.subs=e.subs||[],e.subs.push(t)}}else e.subs=e.subs||[],e.subs.push(ge(t))}for(;e.type===de.Default&&e.subs&&1===e.subs.length;){const t=e.subs[0];e.type=t.type,e.subs=t.subs,e.staff=t.staff,e.level=t.level}for(;e.subs&&1===e.subs.length&&e.subs[0].type===de.Default;){const t=e.subs[0];e.subs=t.subs,e.staff=t.staff}return e.grand=e.type===de.Brace&&e.subs&&e.subs.every(e=>e.staff),s},be=e=>e.staff?e.staff:e.subs?be(e.subs[0]):void 0,ke=e=>e.staff?e.staff:e.subs?ke(e.subs[e.subs.length-1]):void 0,Te=(e,t)=>{t[(e=>e.staff?e.staff:e.subs?`${be(e)}-${ke(e)}`:void 0)(e)]=e,e.subs&&e.subs.forEach(e=>Te(e,t))};class StaffLayout{constructor(e){const t=new Set;e.forEach((e,s)=>{e.id=((e,t,s)=>{let i=s;for(i?e.has(i)&&(i+="_"+t.toString()):i=t.toString();e.has(i);)i+="_"+xe();return i})(t,s+1,e.id),t.add(e.id)}),this.staffIds=e.map(e=>e.id),this.conjunctions=e.slice(0,e.length-1).map(e=>e.conjunction?ve[e.conjunction]:pe.Blank);const s=[].concat(...e.map(e=>[...e.leftBounds,e.id,...e.rightBounds]));this.group={type:de.Default},Se(this.group,s);const i={};Te(this.group,i),this.groups=Object.entries(i).map(([e,t])=>{let s=e.split("-");1===s.length&&(s=[s[0],s[0]]);return{group:t,range:s.map(e=>this.staffIds.indexOf(e)),key:e}}),this.maskCache=new Map}get stavesCount(){return this.staffIds?this.staffIds.length:null}get partGroups(){const e=this.groups.filter(e=>e.group.grand);return this.groups.filter(t=>{if(t.group.grand)return!0;if(t.range[0]===t.range[1]){const s=t.range[0];return!e.some(e=>e.range[0]<=s&&e.range[1]>=s)}return!1})}get standaloneGroups(){const e=[],t=s=>{s.grand?e.push(s.subs.map(e=>e.staff)):s.staff?e.push([s.staff]):s.subs&&s.subs.forEach(e=>t(e))};return t(this.group),e}conjunctionBetween(e,t){if(t<=e)return null;let s=pe.Solid;for(let i=e;it&1<({ids:e.staffIds.slice(t.range[0],t.range[1]+1).filter(e=>s.includes(e)),...t})).filter(({ids:e})=>e.length).map(({ids:e,...t})=>({key:t.key,group:t.group,range:[s.indexOf(e[0]),s.indexOf(e[e.length-1])]})),r=s.slice(0,s.length-1).map((t,i)=>{const r=s[i+1];return e.conjunctionBetween(e.staffIds.indexOf(t),e.staffIds.indexOf(r))});return{staffIds:s,conjunctions:r,groups:i}}mask(e){return this.maskCache.get(e)||this.maskCache.set(e,StaffLayout.makeMaskLayout(this,e)),this.maskCache.get(e)}partialMaskCode(e,t=!1){const s=this.staffIds.map((t,s)=>s(e[this.staffIds[s]]=t,e),{}),i=e=>{if(e.staff)return[s[e.staff]?e.staff:null,null===s[e.staff]];const t=e.subs.map(e=>i(e)),r=t.map(e=>e[0]).filter(Boolean).join(","),n=t.some(([e,t])=>t),a=r?((e,t=!1)=>{if(e===de.Default)return e=>e;if(t)switch(e){case de.Brace:return e=>`{${e}`;case de.Bracket:return e=>`<${e}`;case de.Square:return e=>`[${e}`;default:return e=>e}switch(e){case de.Brace:return e=>`{${e}}`;case de.Bracket:return e=>`<${e}>`;case de.Square:return e=>`[${e}]`;default:return e=>e}})(e.type,n)(r):null;return[a,n]};let[r]=i(this.group);return r=r||"",t||(r=r.replace(/[_\w]+/g,"")),r}}var we=function(){var e=function(e,t,s,i){for(s=s||{},i=e.length;i--;s[e[i]]=t);return s},t=[1,15],s=[1,16],i=[1,17],r=[1,11],n=[1,12],a=[1,13],o=[1,24],c=[1,25],l=[1,26],u=[5,11,12,13,15,16,17,21,22,23,24],h=[15,16,17,21,22,23,24],m=[11,12,13,15,16,17,21,22,23,24],f=[5,11,12,13,21,22,23,24],d={trace:function(){},yy:{},symbols_:{error:2,start_symbol:3,staff_layout:4,EOF:5,seq:6,seq_id:7,seq_br:8,seq_con:9,bound_left:10,"<":11,"[":12,"{":13,bound_right:14,">":15,"]":16,"}":17,bound_lefts:18,bound_rights:19,conjunction:20,"-":21,",":22,".":23,ID:24,seq_bl:25,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",11:"<",12:"[",13:"{",15:">",16:"]",17:"}",21:"-",22:",",23:".",24:"ID"},productions_:[0,[3,2],[4,1],[6,0],[6,1],[6,1],[6,1],[10,1],[10,1],[10,1],[14,1],[14,1],[14,1],[18,1],[18,2],[19,1],[19,2],[20,1],[20,1],[20,1],[7,1],[7,2],[7,2],[7,2],[7,2],[25,1],[25,2],[25,2],[25,2],[8,2],[8,2],[8,2],[9,1],[9,2],[9,2],[9,2],[9,2]],performAction:function(e,t,s,i,r,n,a){var o=n.length-1;switch(r){case 1:return n[o-1];case 2:n[o].next(),this.$=n[o].toJSON();break;case 3:this.$=new Seq;break;case 13:case 15:this.$=[n[o]];break;case 14:case 16:this.$=[...n[o-1],n[o]];break;case 20:this.$=new Seq,this.$.tip.i(n[o]);break;case 21:case 23:n[o-1].next(),n[o-1].tip.i(n[o]),this.$=n[o-1];break;case 22:case 24:n[o-1].tip.i(n[o]),this.$=n[o-1];break;case 25:this.$=new Seq,this.$.tip.bl(n[o]);break;case 26:case 27:n[o-1].next(),n[o-1].tip.bl(n[o]),this.$=n[o-1];break;case 28:n[o-1].tip.bl(n[o]),this.$=n[o-1];break;case 29:case 30:case 31:n[o-1].tip.br(n[o]),this.$=n[o-1];break;case 32:this.$=new Seq,this.$.tip.con(n[o]),this.$.next();break;case 33:case 34:case 35:case 36:n[o-1].tip.con(n[o]),n[o-1].next(),this.$=n[o-1]}},table:[{3:1,4:2,5:[2,3],6:3,7:4,8:5,9:6,10:14,11:t,12:s,13:i,18:10,20:9,21:r,22:n,23:a,24:[1,7],25:8},{1:[3]},{5:[1,18]},{5:[2,2]},{5:[2,4],10:14,11:t,12:s,13:i,14:23,15:o,16:c,17:l,18:22,19:20,20:21,21:r,22:n,23:a,24:[1,19]},{5:[2,5],10:14,11:t,12:s,13:i,18:29,20:28,21:r,22:n,23:a,24:[1,27]},{5:[2,6],10:14,11:t,12:s,13:i,14:23,15:o,16:c,17:l,18:33,19:31,20:32,21:r,22:n,23:a,24:[1,30]},e(u,[2,20]),{14:23,15:o,16:c,17:l,19:35,20:36,21:r,22:n,23:a,24:[1,34]},e(u,[2,32]),e(h,[2,25],{10:37,11:t,12:s,13:i}),e(u,[2,17]),e(u,[2,18]),e(u,[2,19]),e(m,[2,13]),e(m,[2,7]),e(m,[2,8]),e(m,[2,9]),{1:[2,1]},e(u,[2,21]),e(f,[2,29],{14:38,15:o,16:c,17:l}),e(u,[2,33]),e(h,[2,26],{10:37,11:t,12:s,13:i}),e(u,[2,15]),e(u,[2,10]),e(u,[2,11]),e(u,[2,12]),e(u,[2,23]),e(u,[2,35]),e(h,[2,27],{10:37,11:t,12:s,13:i}),e(u,[2,24]),e(f,[2,31],{14:38,15:o,16:c,17:l}),e(u,[2,36]),e(h,[2,28],{10:37,11:t,12:s,13:i}),e(u,[2,22]),e(f,[2,30],{14:38,15:o,16:c,17:l}),e(u,[2,34]),e(m,[2,14]),e(u,[2,16])],defaultActions:{3:[2,2],18:[2,1]},parseError:function(e,t){if(!t.recoverable){var s=new Error(e);throw s.hash=t,s}this.trace(e)},parse:function(e){var t=this,s=[0],i=[null],r=[],n=this.table,a="",o=0,c=0,l=r.slice.call(arguments,1),u=Object.create(this.lexer),h={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(h.yy[m]=this.yy[m]);u.setInput(e,h.yy),h.yy.lexer=u,h.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var f=u.yylloc;r.push(f);var d=u.options&&u.options.ranges;"function"==typeof h.yy.parseError?this.parseError=h.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var p,g,y,v,x,S,b,k,T=function(){var e;return"number"!=typeof(e=u.lex()||1)&&(e=t.symbols_[e]||e),e},w={};;){if(g=s[s.length-1],this.defaultActions[g]?y=this.defaultActions[g]:(null==p&&(p=T()),y=n[g]&&n[g][p]),void 0===y||!y.length||!y[0]){var M="";for(x in k=[],n[g])this.terminals_[x]&&x>2&&k.push("'"+this.terminals_[x]+"'");M=u.showPosition?"Parse error on line "+(o+1)+":\n"+u.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[p]||p)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(M,{text:u.match,token:this.terminals_[p]||p,line:u.yylineno,loc:f,expected:k})}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+p);switch(y[0]){case 1:s.push(p),i.push(u.yytext),r.push(u.yylloc),s.push(y[1]),p=null,c=u.yyleng,a=u.yytext,o=u.yylineno,f=u.yylloc;break;case 2:if(S=this.productions_[y[1]][1],w.$=i[i.length-S],w._$={first_line:r[r.length-(S||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(S||1)].first_column,last_column:r[r.length-1].last_column},d&&(w._$.range=[r[r.length-(S||1)].range[0],r[r.length-1].range[1]]),void 0!==(v=this.performAction.apply(w,[a,c,o,h.yy,y[1],i,r].concat(l))))return v;S&&(s=s.slice(0,-1*S*2),i=i.slice(0,-1*S),r=r.slice(0,-1*S)),s.push(this.productions_[y[1]][0]),i.push(w.$),r.push(w._$),b=n[s[s.length-2]][s[s.length-1]],s.push(b);break;case 3:return!0}}return!0}};class Item{constructor(){this.id=null,this.leftBounds=[],this.rightBounds=[],this.conjunction=null}i(e){return this.id=e,this}bl(e){return this.leftBounds=e,this}br(e){return this.rightBounds=e,this}con(e){return this.conjunction=e,this}}class Seq{constructor(){this.body=[],this.tip=new Item}next(){return this.body.push(this.tip),this.tip=new Item,this}toJSON(){return this.body}}var p={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,s=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var s,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],s=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var n in r)this[n]=r[n];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),n=0;nt[0].length)){if(t=s,i=n,this.options.backtrack_lexer){if(!1!==(e=this.test_match(s,r[n])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[i]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,s,i){switch(s){case 0:break;case 1:return t.yytext;case 2:return 24;case 3:return 5}},rules:[/^(?:\s+)/,/^(?:([-,.\[\]<>{}]))/,/^(?:([a-zA-Z_0-9]+))/,/^(?:$)/],conditions:{INITIAL:{rules:[0,1,2,3],inclusive:!0}}};function g(){this.yy={}}return d.lexer=p,g.prototype=d,d.Parser=g,new g}();we.Parser;we.Parser;var Me=function(){return we.parse.apply(we,arguments)};const Ee=e=>{const t=Me(e);return new StaffLayout(t)};class DummyLogger{debug(...e){}group(...e){}groupCollapsed(...e){}groupEnd(){}info(...e){}warn(...e){}assert(...e){}}const Ne=(e,t,s=-1/0)=>Math.max(Math.round(e/t)*t,s),Ie=(e,t)=>{const s=e.x-t.x,i=e.y-t.y;return Math.sqrt(s*s+i*i)},Ce=(e,t)=>Number.isInteger(e)&&Number.isInteger(t)?0===t?e:Ce(t,e%t):(console.error("non-integer gcd:",e,t),1),_e=(e,t)=>({numerator:e,denominator:t}),Oe=(e,t)=>{e=Math.round(e),t=Math.round(t);const s=0!==e?Ce(e,t):t;return _e(e/s,t/s)},Be=e=>`${e.numerator}/${e.denominator}`,Ae=(e,t)=>t?e*t.numerator/t.denominator:e,Pe=(e,t)=>{const s=[...e].sort((e,s)=>e[t]-s[t]);let i=null,r=null;return s.reduce((e,n,a)=>(r?n[t]-r[t]<.4?i.push(n):(i.length>1&&e.push(i),r=n,i=[n]):(r=n,i=[n]),i.length>1&&a===s.length-1&&e.push(i),e),[])},Re=e=>{if(e.length<=1)return[];let t=e.slice(1);const s=I.find(t=>t.includes(e[0].semantic));if(!s)return Re(t);const i=t.filter(e=>s.includes(e.semantic));return t=t.filter(e=>!s.includes(e.semantic)),[...i,...Re(t)]},De=e=>{const t=new Set(e),s=Pe(e,"x"),i=[].concat(...s.map(e=>Pe(e,"y")));return i.forEach(e=>e.sort((e,t)=>t.confidence-e.confidence)),i.forEach(e=>{Re(e).forEach(e=>t.delete(e))}),Array.from(t)},Fe=[0,2,4,5,7,9,11],Le=({note:e,alter:t})=>{const s=Math.floor(e/7),i=(e=>{let t=e%7;for(;t<0;)t+=7;return t})(e);return 60+12*s+Fe[i]+t},$e=e=>{const t=Math.max(...e);return e.indexOf(t)},je=1920;var He,Ve,ze,qe,Ge,We;!function(e){e.Up="^",e.Down="_",e.Middle="-"}(He||(He={})),function(e){e.Grace="grace",e.AfterGrace="afterGrace",e.Acciaccatura="acciaccatura",e.Appoggiatura="appoggiatura",e.SlashedGrace="slashedGrace"}(Ve||(Ve={})),function(e){e.Open="Open",e.Close="Close",e.Continue="Continue"}(ze||(ze={})),function(e){e.Pitcher="Pitcher",e.Catcher="Catcher",e.Pierced="Pierced"}(qe||(qe={})),function(e){e.Normal="normal",e.DashedLine="dashed-line",e.DottedLine="dotted-line",e.Zigzag="zigzag",e.Trill="trill"}(Ge||(Ge={})),function(e){e.Normal="Normal",e.Bracket="Bracket",e.Parenthesis="Parenthesis",e.ParenthesisDashed="ParenthesisDashed",e.ArrowDown="ArrowDown"}(We||(We={}));class Term extends SimpleClass{}class EventTerm extends Term{static space({tick:e,duration:t}){const s=new EventTerm({rest:"s",tick:e,accessories:[]});return s.duration=Math.round(t),s}constructor(e){super(),super.assign(e),Object.assign(this,e),Number.isFinite(e.left)&&Number.isFinite(e.right)&&(this.x=(this.left+this.right)/2),Number.isFinite(this.pivotX)||(this.pivotX=this.x)}get alignedTick(){return this.grace?this.tick+this.duration:this.tick}get mainDuration(){return je*2**-this.division*(2-2**-this.dots)}get duration(){let e=this.mainDuration;return this.multiplier&&(e*=this.multiplier.numerator/this.multiplier.denominator),this.timeWarp&&(e*=this.timeWarp.numerator/this.timeWarp.denominator),this.grace?e/8:e}set duration(e){console.assert(Number.isFinite(e),"invalid duration value:",e);const t=Ce(e,128),s=Math.log2(128/t),i=Oe(e*2**s,je);this.division=s,this.dots=0,i.numerator!==i.denominator?this.multiplier=i:this.multiplier=void 0}get prior(){return this.tick}get times(){return this.timeWarp?`${this.timeWarp.numerator}/${this.timeWarp.denominator}`:null}get fullMeasureRest(){return"R"===this.rest}get tipX(){return this.tip?this.tip.x:this.x}get tipY(){return this.tip?this.tip.y:this.ys?this.ys[0]:0}get tremoloCatcher(){return this.tremoloLink===qe.Catcher}get scaleChord(){return this.pitches.map(e=>"CDEFGAB"[(e.note+700)%7]).join("")}get zeroHolder(){return!!this.grace||this.tremoloCatcher}}var Ue;EventTerm.className="EventTerm",function(e){e[e.Clef=0]="Clef",e[e.KeyAcc=1]="KeyAcc",e[e.Acc=2]="Acc",e[e.OctaveShift=3]="OctaveShift",e[e.TimeSignatureC=4]="TimeSignatureC",e[e.TimeSignatureN=5]="TimeSignatureN"}(Ue||(Ue={}));class ContextedTerm extends Term{constructor(e){super(),Object.assign(this,e)}get type(){return R.includes(this.tokenType)?Ue.Clef:/\|key-/.test(this.tokenType)?Ue.KeyAcc:/accidentals-/.test(this.tokenType)?Ue.Acc:$.includes(this.tokenType)?Ue.OctaveShift:F.includes(this.tokenType)?Ue.TimeSignatureC:L.includes(this.tokenType)?Ue.TimeSignatureN:null}get staffLevel(){return[Ue.OctaveShift,Ue.Clef,Ue.KeyAcc].includes(this.type)}get prior(){return this.tick-.1}get clef(){switch(this.tokenType){case B.ClefG:return-this.y-2;case B.ClefF:return 2-this.y;case B.ClefC:return-this.y}return null}get alter(){switch(this.tokenType){case B.AccNatural:case B.KeyNatural:return 0;case B.AccSharp:case B.KeySharp:return 1;case B.AccFlat:case B.KeyFlat:return-1;case B.AccDoublesharp:return 2;case B.AccFlatflat:return-2}return null}get octaveShift(){switch(this.tokenType){case B.OctaveShift8va:return-1;case B.OctaveShift0:return 0;case B.OctaveShift8vb:return 1}return null}get number(){switch(this.tokenType){case B.TimesigZero:return 0;case B.TimesigOne:return 1;case B.TimesigTwo:return 2;case B.TimesigThree:return 3;case B.TimesigFour:return 4;case B.TimesigFive:return 5;case B.TimesigSix:return 6;case B.TimesigSeven:return 7;case B.TimesigEight:return 8;case B.TimesigNine:return 9}return null}}ContextedTerm.className="ContextedTerm";class MarkTerm extends Term{get prior(){return this.tick+.01}}MarkTerm.className="MarkTerm";const Ye=Array(7).fill(0).map((e,t)=>String.fromCodePoint(119133+t));class TempoTerm extends MarkTerm{static fromNumeralText(e){if(/.+=.*\d+/.test(e)){const[t,s]=e.split("=");let i=Ye.findIndex(e=>t.includes(e));i=i>=0?i:2;let r=(2**i).toString();return t.includes(".")&&(r+="."),new TempoTerm({tick:0,duration:r,beats:s})}return null}constructor(e){super(),Object.assign(this,e)}get prior(){return this.tick-.01}get durationMagnitude(){const[e,t,s]=this.duration.match(/^(\d+)(\.)?$/);return je/Number(t)*(s?1.5:1)}get bpm(){const[e]=this.beats.match(/\d+/)||[90];return Number(e)*this.durationMagnitude*4/je}isValid(e=[10,400]){const t=this.bpm;return Number.isFinite(this.bpm)&&t>=e[0]&&t{if(!e.regulated)return;const t=e.eventMap,s=e.events.length,i=e.voices.flat(1).length,r=e.events.filter(e=>e.timeWarp).length,n=new Set(e.events.filter(e=>e.timeWarp&&!(e.rest&&0===e.division)).map(e=>`${e.timeWarp.numerator}/${e.timeWarp.denominator}`)),a=new Set(n);a.delete("2/3");const o=e.voices.some(e=>{const s=e.map(e=>t[e]);if(!s.some(e=>e.timeWarp))return!1;let i=0,r=0,n=0;return s.some((e,t)=>{const a=e.timeWarp?e.timeWarp.denominator:0;if(a!==i){if(i>0&&(r%i||n<2))return!0;r=0,n=0}return i=a,r+=e.duration,++n,!!(t===s.length-1&&i>0&&(r%i||n<2))})}),c=e.voices.some(e=>{const s=e.map(e=>t[e]);let i=0;return s.some(e=>!e.grace&&(e.ticke.timeWarp&&e.timeWarp.denominator>3).map(e=>e.duration)).size>1,u=Ae(je,e.timeSignature),h=e.doubtfulTimesig?e.duration:u,m=e.voices.flat(1).map(e=>t[e]),f=m.some(e=>!e||!Number.isFinite(e.tick)||!Number.isFinite(e.division)||e.division<0||!Number.isFinite(e.duration)||e.duration<=0),d=m.reduce((e,t)=>e||t.tick<0||t.tick+t.duration>h,!1),p=e.duration>u,g=m.some(e=>e.grace),y=e.events.filter(e=>e.grace).length,v=y>=m.length,x=m.some(e=>{let t=e.tick*2**(e.division+2);if(e.timeWarp&&(t*=e.timeWarp.denominator),!Number.isFinite(t))return!0;return Ce(Math.round(t),je)e.reduce(({status:e,broken:s},i)=>{const r=t[i];return r.beam&&(e+=Xe[r.beam],s=s||!(e>=0&&e<=1)),{status:e,broken:s}},{status:0,broken:!1})).some(({status:e,broken:t})=>e||t);let b=0,k=0;e.voices.forEach(s=>{const i=s.reduce((e,s)=>e+t[s].duration,0);b+=Math.max(0,e.duration-i),k+=Math.max(0,i-e.duration)}),b/=je;const T=e.events.filter(e=>!(e.grace||e.fullMeasureRest||e.tremoloCatcher||e.predisposition&&!(e.predisposition.fakeP<.1)||Number.isFinite(e.tick))).length,w=e.events.filter(e=>!(e.fullMeasureRest||e.grace||e.tremoloCatcher||m.includes(e))).length,{voiceRugged:M}=e.voices.flat(1).reduce((e,t)=>!e.voiceRugged&&e.es.has(t)?{voiceRugged:!0,es:e.es}:(e.es.add(t),e),{voiceRugged:!1,es:new Set}),E=e.tickTwist||0,N=f||E>=1||c||M||e.tickRatesInStaves.some(e=>e<0)||T>2||!e.timeSignature||d||e.duration>h||e.events.some(e=>e.timeWarp&&e.timeWarp.numerator/e.timeWarp.denominator<=.5),I=!N&&!p&&E<.2&&!o&&!a.size&&!x&&!b&&!k&&!!e.voices.length&&!S&&!g&&!v&&(e.duration===h||Number.isFinite(e.estimatedDuration)&&e.estimatedDuration<=.75*h),C=!(N||p||!(E<.3)||o||x||k||S||g);let _=Math.min(h,3840);Number.isFinite(e.estimatedDuration)&&(_=Math.max(0,Math.min(_,e.estimatedDuration)));const O=e.duration/_;let B=0;if(e.patched&&!f)B=1;else if(!N){const t=Math.tanh(1*Math.abs(b/Math.max(1,e.voices.length)));let s=Math.min(h,3840);Number.isFinite(e.estimatedDuration)&&(s=Math.max(0,Math.min(s,e.estimatedDuration)));B=(1-t)*(1-(s?Math.max(0,1-O)**2:0))*(1-Math.tanh(a.size))*(1-E**2)}return{events:s,validEvents:i,voiceRugged:M,nullEvents:T,fakeEvents:w,warpedEvents:r,complicatedTimewarp:l,spaceTime:b,surplusTime:k,durationRate:O,beamBroken:S,fractionalWarp:o,irregularWarpsN:a.size,irregularTick:x,tickTwist:E,tickOverlapped:c,graceInVoice:g,graceN:y,graceDominant:v,perfect:I,fine:C,error:N,qualityScore:B}};class SemanticGraph extends SimpleClass{constructor(e){super(),super.assign(e)}static fromPoints(e=[]){const t=new SemanticGraph;return t.points=e,t}getLayer(e){return this.points.filter(t=>t.semantic===e)}getConfidentLayer(e,t){return this.points.filter(s=>s.semantic===e&&(!Number.isFinite(s.confidence)||s.confidence>=t))}getSystemPoints(){return this.points.filter(e=>E.includes(e.semantic))}getStaffPoints(){return this.points.filter(e=>!E.includes(e.semantic))}offset(e,t){this.points.forEach(s=>{s.x+=e,s.y+=t})}scale(e){this.points.forEach(t=>{t.x*=e,t.y*=e})}transform(e){this.points.forEach(t=>{let s=t.x*e[0][0]+t.y*e[1][0]+e[2][0];const i=t.x*e[0][1]+t.y*e[1][1]+e[2][1];if(t.extension){if(Number.isFinite(t.extension.y1)){const i=t.x*e[0][1]+t.extension.y1*e[1][1]+e[2][1],r=t.x*e[0][1]+t.extension.y2*e[1][1]+e[2][1];s=t.x*e[0][0]+.5*(t.extension.y1+t.extension.y2)*e[1][0]+e[2][0],t.extension.y1=i,t.extension.y2=r}if(Number.isFinite(t.extension.width)){const s=Math.sqrt(e[0][0]*e[1][1]-e[0][1]*e[1][0]);t.extension.width*=s,t.extension.height*=s}}t.x=s,t.y=i})}}SemanticGraph.className="SemanticGraph";const Ze=[g.ClefG,g.ClefF,g.ClefC,g.TimesigC44,g.TimesigC22,g.TimesigZero,g.TimesigOne,g.TimesigTwo,g.TimesigThree,g.TimesigFour,g.TimesigFive,g.TimesigSix,g.TimesigSeven,g.TimesigEight,g.TimesigNine,g.OctaveShift8va,g.OctaveShift8vb,g.OctaveShift0,g.Zero,g.One,g.Two,g.Three,g.Four,g.Five,g.Six,g.Seven,g.Eight,g.Nine,g.AccNatural,g.AccSharp,g.AccDoublesharp,g.AccFlat,g.AccFlatflat,g.NoteheadS0,g.NoteheadS1,g.NoteheadS2,g.NoteheadS1stemU,g.NoteheadS1stemD,g.NoteheadS2stemU,g.NoteheadS2stemD,g.Rest0,g.Rest1,g.Rest2,g.Rest3,g.Rest4,g.Rest5,g.Rest6,g.Rest0W,g.RestM1,g.SlurBegin,g.SlurEnd,g.Dot,g.f,g.p,g.m,g.n,g.r,g.s,g.z,g.ScriptFermata,g.ScriptShortFermata,g.ScriptSforzato,g.ScriptStaccato,g.ScriptStaccatissimo,g.ScriptTurn,g.ScriptTrill,g.ScriptSegno,g.ScriptCoda,g.ScriptArpeggio,g.ScriptPrall,g.ScriptMordent,g.ScriptMarcato,g.ScriptTenuto,g.ScriptPortato,g.PedalStar,g.PedalPed,g.GraceNotehead,g.BeamLeft,g.BeamRight,g.BeamContinue,g.CrescendoBegin,g.CrescendoEnd,g.DecrescendoBegin,g.DecrescendoEnd,g.TremoloLeft,g.TremoloRight,g.TremoloMiddle],Je=[g.AccNatural,g.AccSharp,g.AccDoublesharp,g.AccFlat,g.AccFlatflat,g.NoteheadS0,g.NoteheadS1,g.NoteheadS2,g.NoteheadS1stemU,g.NoteheadS1stemD,g.NoteheadS2stemU,g.NoteheadS2stemD],Qe=[g.SignLined,g.SignInterval],et=[g.NoteheadS1,g.NoteheadS2],tt={AccSharp:B.KeySharp,AccNatural:B.KeyNatural,AccFlat:B.KeyFlat},st={[g.NoteheadS1]:{up:g.NoteheadS1stemU,down:g.NoteheadS1stemD},[g.NoteheadS2]:{up:g.NoteheadS2stemU,down:g.NoteheadS2stemD}},it=[g.Rest0,g.Rest1,g.Rest2,g.Rest3,g.Rest4,g.Rest5,g.Rest6],rt={[B.BeamLeft]:"Open",[B.BeamRight]:"Close",[B.BeamContinue]:"Continue"},nt={Alter1:p.Alternation1,Alter2:p.Alternation2},at=(e,t)=>{switch(e.length){case 0:return;case 1:return e[0];case 2:return"u"===t?Math.min(...e):Math.max(...e);default:{const s=e.reduce((e,t)=>e+t,0)/e.length;return e.sort((e,t)=>Math.abs(e-s)-Math.abs(t-s)),at(e.slice(0,e.length-1),t)}}};class Measure extends SimpleClass{constructor(e){super(),super.assign(e),this.tokens=this.tokens||[],this.antiTokens=this.antiTokens||[],this.barTypes=this.barTypes||{}}get right(){return this.left+this.width}get noteheads(){return this.tokens.filter(e=>e.isNotehead).sort((e,t)=>e.x-t.x)}get chordRects(){const e=this.noteheads.filter(e=>[B.NoteheadS0,B.NoteheadS1stemU,B.NoteheadS2stemU,B.NoteheadS1stemD,B.NoteheadS2stemD].includes(e.type));let t=0;const s=e.reduce((e,s)=>{const i=s.tip?`${s.tip.x}|${s.tip.y}`:`nul${t}`;let r=`${s.type}|${i}`;return!s.tip&&e[r]&&(e[r].some(e=>Math.abs(e.x-s.x){const t=Math.min(...e.map(e=>e.x)),s=Math.max(...e.map(e=>e.x)),i=Math.min(...e.map(e=>e.y)),r=Math.max(...e.map(e=>e.y)),n=e[0],a=n&&n.tip?n.tip.x:t;let o=t,c=s-t,l=null;switch(n.type){case B.NoteheadS0:o-=w.NoteheadS0/2,c+=w.NoteheadS0;break;case B.NoteheadS1stemU:case B.NoteheadS2stemU:l="u",o-=w.NoteheadS1,c+=w.NoteheadS1;break;case B.NoteheadS1stemD:case B.NoteheadS2stemD:l="d",c+=w.NoteheadS1}return{x:o,width:c,stemX:a,stemDirection:l,top:i,bottom:r,tip:n.tip}})}get timeWarped(){return this.tokens&&this.tokens.some(e=>e.timeWarped)}get additionalLines(){const e=this.getChords();return[...e.filter(e=>e.ys.some(e=>e<=-3)).map(e=>({left:e.left,right:e.right,n:Math.ceil(Math.min(...e.ys))+2})),...e.filter(e=>e.ys.some(e=>e>=3)).map(e=>({left:e.left,right:e.right,n:Math.floor(Math.max(...e.ys))-2}))].map(e=>({left:e.left-.28,right:e.right+.28,n:e.n}))}getChords(){const e=this.tokens.filter(e=>W.includes(e.type)),t=this.tokens.filter(e=>Z.includes(e.type)),s=this.tokens.filter(e=>Q.includes(e.type)),i=this.chordRects.map(e=>{const t=this.noteheads.filter(t=>t.direction===e.stemDirection&&t.left>=e.x&&t.right<=e.x+e.width+.2&&t.y>=e.top&&t.y<=e.bottom);t.sort((e,t)=>t.y-e.y);const s=t.map(e=>e.y),i=t.map(e=>e.id),r=t.reduce((e,t)=>Math.max(e,t.division),0);return{rect:e,left:e.x,right:e.x+e.width,pivotX:(n=t,at(n.map(e=>Number.isFinite(e.pivotX)?e.pivotX:e.x),n[0].direction)),ys:s,tip:e.tip,noteIds:i,division:r,dots:null,rest:!1,stemDirection:e.stemDirection,beam:null};var n}).sort((e,t)=>t.left-e.left),r=new Set,n=i.map(({rect:i,...n})=>{if(n.division>=1){const t=[i.bottom,i.top];switch(i.stemDirection){case"u":t[0]=i.tip?i.tip.y-.2:i.top-6-.5;break;case"d":t[1]=i.tip?i.tip.y+.2:i.bottom+6+.5}const a=e.filter(e=>!r.has(e.id)&&e.x>i.stemX-.2&&e.xt[0]&&e.yMath.max(e,t.division),n.division),a.forEach(e=>r.add(e.id));const o=i.tip&&s.find(e=>Math.abs(i.tip.x-e.x)<.3&&Math.abs(i.tip.y-e.y)<.7);o&&(n.beam=rt[o.type])}const a=t.filter(e=>!r.has(e.id)&&e.x>i.x+i.width-.2&&e.xi.top-1&&e.y<=i.bottom+.5);return n.dots=a.reduce((e,t)=>Math.max(e,t.dots),0),a.forEach(e=>r.add(e.id)),n});return n.reverse(),n}getRests(){const e=this.tokens.filter(e=>G.includes(e.type)),t=this.tokens.filter(e=>Z.includes(e.type));return e.map(e=>{const s=t.filter(t=>t.x>e.x+.5&&t.xe.y-1&&t.yMath.max(e,t.dots),0);return{left:e.x-.75,right:e.x+.75,pivotX:e.x,rest:!0,ys:[e.y],noteIds:[e.id],dots:s,division:e.division,stemDirection:null}})}getEvents(){return[...this.getChords(),...this.getRests()].sort((e,t)=>e.left-t.left)}getContexts(e={}){return this.tokens.filter(e=>e.isContexted).sort((e,t)=>e.x-t.x).map(t=>new ContextedTerm({x:t.x,y:t.y,tokenType:t.type,...e}))}assignAccessoriesOnEvents(e){e.forEach(e=>e.accessories=e.accessories||[]);this.tokens.filter(e=>te.includes(e.type)).forEach(t=>{const s=e.filter(e=>t.x>e.left-1&&t.x0){let e=s[0];s.length>1&&(e=s.map(e=>({event:e,d:Math.min(...e.ys.map(e=>Math.abs(e-t.y)))})).sort(({d:e},{d:t})=>e-t).map(({event:e})=>e)[0]);let i=t.y>Math.max(...e.ys)?He.Down:He.Up;se.includes(t.type)&&(i=null),e.accessories.push({type:t.type,id:t.id,direction:i,x:t.x-e.left})}});const t=[...e];t.sort((e,t)=>e.left-t.left);this.tokens.filter(e=>e.type===B.ScriptArpeggio).forEach(e=>{const s=t.find(t=>e.xtt>e.y));s&&s.accessories.push({type:B.ScriptArpeggio,id:e.id,x:e.x-s.left})});this.tokens.filter(e=>e.type===B.GraceNotehead).forEach(t=>{const s=e.find(e=>t.x>e.left&&t.xMath.abs(t.y-e)<.4));s&&(s.grace=Ve.Grace)});const s=this.tokens.filter(e=>e.type===B.TremoloLeft),i=this.tokens.filter(e=>e.type===B.TremoloRight),r=this.tokens.filter(e=>e.type===B.TremoloMiddle),n=e.filter(e=>!e.rest).map(e=>{const t=[...e.ys];e.tip?t.push(e.tip.y):(t.push(e.ys[0]+2),t.push(e.ys[e.ys.length-1]-2));const s=e.tip?e.tip.x:e.left,i=e.tip?e.tip.x:e.right;return{event:e,top:Math.min(...t),bottom:Math.max(...t),stemL:s,stemR:i}});r.forEach(e=>{const t=n.find(t=>!!t.event.tip&&(e.y>t.top&&e.y{const t=n.find(t=>e.y>t.top&&e.yt.stemR&&e.x{const t=n.find(t=>e.y>t.top&&e.yt.stemL-1.6);t&&(t.event.tremolo=t.event.tremolo||2,++t.event.tremolo,t.event.tremoloLink=qe.Catcher)})}assignFeaturesOnEvents(e,t){const s=t.filter(e=>e.x>this.left&&e.xit.includes(e.semantic)),r=s.filter(e=>e.semantic===g.Flag3),n=s.filter(e=>e.semantic===g.Dot),a=s.filter(e=>e.semantic===g.BeamLeft),o=s.filter(e=>e.semantic===g.BeamContinue),c=s.filter(e=>e.semantic===g.BeamRight),l=s.filter(e=>e.semantic===g.GraceNotehead),u=s.filter(e=>e.semantic===g.TremoloRight),h=s.filter(e=>e.semantic===g.vline_Stem),m=s.filter(e=>e.semantic===g.NoteheadS0),f=s.filter(e=>e.semantic===g.NoteheadS1),d=s.filter(e=>e.semantic===g.NoteheadS2);e.forEach(e=>{const t=e.tip?e.tip.x:(e.left+e.right)/2,s=e.tip?Math.min(e.tip.y,e.ys[e.ys.length-1]):e.ys[e.ys.length-1],p=e.tip?Math.max(e.tip.y,e.ys[0]):e.ys[0],g=e.tip?e.tip.x:e.left,y=[0,0,0,0,0,0,0];if(e.rest){i.filter(s=>Ie(s,{x:t,y:e.ys[0]})<.5).forEach(e=>{const t=it.indexOf(e.semantic);y[t]=Math.max(y[t],e.confidence)})}else{const i=[m,f,d].map(t=>t.filter(t=>t.x>e.left&&t.xs-.25&&t.yMath.max(0,...e.map(e=>e.confidence))),n=r.filter(e=>e.y>s-.2&&e.yt.confidence-e.confidence),y[0]=i[0],y[1]=i[1],y[2]=i[2],Array(y.length-3).fill(0).forEach((e,t)=>y[3+t]=n[t]?n[t].confidence:0)}const v=n.filter(s=>s.x>t&&s.xv.some(t=>e.x>t.x&&Math.abs(e.y-t.y)<.2)),S=[Math.max(0,...v.map(e=>e.confidence)),Math.max(0,...x.map(e=>e.confidence))],b=[a,o,c].map(e=>e.filter(e=>Math.abs(e.x-t)<.2&&e.y>s-.2&&e.yMath.max(0,...e.map(e=>e.confidence))),k=h.filter(s=>Ie({x:t,y:e.ys[0]},{x:s.x,y:s.extension.y2})<.5),T=h.filter(s=>Ie({x:t,y:e.ys[e.ys.length-1]},{x:s.x,y:s.extension.y1})<.5),w=[Math.max(0,...k.map(e=>e.confidence)),Math.max(0,...T.map(e=>e.confidence))],M=l.filter(s=>Math.abs(s.x-t)<.6&&e.ys.some(e=>Math.abs(s.y-e)<.4)),E=Math.max(0,...M.map(e=>e.confidence)),N=0===e.division?u.filter(t=>t.x>e.left-2&&t.xe.y>s-.04&&e.yg-2&&e.xe.confidence));e.feature={divisions:y,dots:S,beams:b,stemDirections:w,grace:E,tremoloCatcher:I}})}}Measure.className="Measure",Measure.blackKeys=["tokens","antiTokens"];class Staff extends SimpleClass{constructor({measureCount:e=null,measureBars:t=null,...s}={}){if(super(),super.assign(s),this.height=this.height||10,this.staffY=this.staffY||5,t){let e=0;this.measures=t.map(t=>{const s=new Measure({left:e,width:t-e,height:this.height});return e=t,s})}else this.measures=e?Array(e).fill(null).map(()=>new Measure):[]}get noteRange(){const e=[].concat(...this.measures.map(e=>e.noteheads)).map(e=>e.y);return{top:Math.min(-2,...e),bottom:Math.max(2,...e)}}get additionalLines(){return[].concat(...this.measures.map(e=>e.additionalLines))}rearrangeMeasures(e){if(!e.length)return void console.warn("rearrangeMeasures error, measureBars are empty.");const t=this.measures?.map(e=>e.tokens).flat(1)||[];let s=0;this.measures=e.map(e=>{const t=new Measure({left:s,width:e-s,height:this.height});return s=e,t}),this.reassignTokens(t)}reassignTokens(e=null){e||(e=[].concat(...this.measures.map(e=>e.tokens))),this.measures.forEach(e=>e.tokens=[]),e.forEach(e=>{for(const t of this.measures)if(e.xe.semantic===g.TempoNotehead).forEach(e=>{const t=i.findIndex(t=>/^Notehead/.test(t.semantic)&&Ie(e,t)<.3);t>=0&&i.splice(t,1)});const r=e=>t.displacementSemantics?.[e]?this.semantics.find(t=>t.id===e):null;i.filter(e=>Ze.includes(e.semantic)).forEach(e=>this.appendPoint(e,{points:i}));const n=i.filter(e=>e.semantic===g.vline_Stem).filter(e=>e.extension.y2-e.extension.y1>1.5).map(e=>({x:e.x,y1:e.extension.y1,y2:e.extension.y2,direction:null})),a=i.filter(e=>et.includes(e.semantic)&&e.y>this.semanticTop&&e.y{if((s?1:0)^(e.x{const t=a.filter(t=>Math.abs(t.x-e.x)-w[t.semantic]/2<.28&&Math.abs(t.x-e.x)-w[t.semantic]/2>-.44&&t.y>e.y1-.5&&t.ye.x&&t.y>e.y2)&&!(t.xe.y-t.y);const s=Math.min(...t.map(t=>t.y-e.y1)),n=Math.min(...t.map(t=>e.y2-t.y));if(Math.min(s,n)>.5)return;const a=s!o.has(e.id)).forEach(e=>{const a=n.filter(t=>Math.abs(t.x-e.x)<2&&e.y>t.y1&&e.yMath.abs(t.x-e.x)-Math.abs(s.x-e.x)),o=a[0];if(o){const t="d"===o.direction,s=t?st[e.semantic].down:st[e.semantic].up;this.appendPoint({id:e.id,semantic:s,x:o.x+c(e,o,t),y:e.y,pivotX:e.x,confidence:e.confidence},{tip:{x:o.x,y:t?o.y2:o.y1},antiPoint:r(e.id),points:i})}else s.debug("isolated notehead:",t.index,this.index,e)});const l=i.filter(e=>e.semantic===g.Flag3);l.sort((e,t)=>e.x-t.x),this.appendFlags(l,n);const u=i.filter(e=>e.semantic===g.Dot).map(e=>{const t=Ne(e.y,.5);return{x:e.x,y:t}}).reduce((e,t)=>(e[t.y]=e[t.y]||[],e[t.y].push(t),e),{});Object.entries(u).forEach(([e,t])=>{const s=Number(e);if(t.length>1){t.sort((e,t)=>e.x-t.x);for(let e=0;ee.x>n.x&&e.x-n.x<1.2)&&this.appendPoint({id:n.id,x:n.x,y:s,confidence:n.confidence},{type:B.DotDot,antiPoint:r(n.id),points:i})}}});const h=i.filter(e=>e.semantic===g.KeyAcc);i.filter(e=>tt[e.semantic]).forEach(e=>{h.some(t=>Math.abs(e.x-t.x)<.5&&Math.abs(e.y-t.y)<1)&&this.appendPoint({id:e.id,x:e.x,y:e.y,confidence:e.confidence},{type:tt[e.semantic],points:i})});i.filter(e=>e.semantic===g.OctaveShift8).forEach(e=>{const t=e.y<0?B.OctaveShift8va:B.OctaveShift8vb;this.appendPoint({id:e.id,x:e.x,y:e.y,confidence:e.confidence},{type:t,points:i})});const m=this.semantics.filter(e=>[g.VoltaLeft,g.VoltaRight].includes(e.semantic));m.sort((e,t)=>e.x-t.x);const f=m.reduce((e,t)=>{const s=e[t.semantic],i=Array.from(Object.keys(s)).map(Number).find(e=>t.x{if(s.length>1){const i=s.reduce((e,t)=>e+t.confidence,0);s[0].y*s[1].y<0&&i>=2*e&&this.appendPoint(s[0],{type:B[t]})}})}appendPoint(e,{type:t,points:s=null,antiPoint:i,...r}={}){const n=e.x,a=this.measures.find(e=>nQe.includes(t.semantic)&&Math.abs(t.y-e.y)<.2&&Math.abs(t.x-e.x)<1.2);t.some(e=>e.semantic===g.SignLined)?o=!0:t.some(e=>e.semantic===g.SignInterval)&&(c=!0)}t=t||B[e.semantic];const l=ne[t];let u=re[t];(o||c)&&(u=Math.max(u,1));let h=e.y;Number.isFinite(l)?h=l:u&&(h=c?Ne(h+.5,u)-.5:Ne(h,u));const m=a.tokens.find(e=>e.type===t&&Math.abs(e.x-n)<.1&&Math.abs(e.y-h)<.1);m?Number.isFinite(m.confidence)&&m.confidence3||(a.tokens.push(new Token({id:e.id,type:t,x:n,y:h,pivotX:e.pivotX,confidence:e.confidence,...r})),i&&a.antiTokens.push(new Token({id:i.id,type:t,x:n,y:i.y,confidence:i.confidence})))}appendFlags(e,t){t.map(t=>({...t,flags:e.filter(e=>Math.abs(e.x-t.x)<.3&&e.y>t.y1-.5&&e.ye.flags.length).forEach(e=>{const t=e.flags.reduce((e,t)=>e&&e.confidence>t.confidence?e:t,null),s="d"===e.direction,i=s?Math.min(e.y2,e.y1+6):Math.max(e.y1,e.y2-6),r=e.flags.map(e=>({tip:(i-e.y)*(s?1:-1),confidence:e.confidence})).filter(e=>e.tip<2||e.confidence>.7*t.confidence).length,n=W[r-1];n&&this.appendPoint({id:e.flags[0].id,x:e.x,y:i,confidence:Math.min(...e.flags.map(e=>e.confidence))},{type:n})})}clearTokens(){this.measures.forEach(e=>e.tokens=[]),this.semantics=[]}clearPredictedTokens(){this.measures.forEach(e=>e.tokens=e.tokens.filter(e=>!e.isPredicted))}}Staff.className="Staff",Staff.blackKeys=["index","semanticTop","semanticBttom"];class System extends SimpleClass{constructor({stavesCount:e,...t}){if(super(),super.assign(t),!this.measureBars){const e=5,t=(this.width-e)/this.measureCount;this.measureBars=Array(this.measureCount).fill(0).map((s,i)=>e+t*(i+1))}!t.staves&&e&&(this.staves=Array(e).fill(null).map(()=>new Staff({measureBars:this.measureBars}))),this.arrangePosition(),this.measureCount=this.measureCount||this.measureBars.length,this.sidBlackList=this.sidBlackList||[],this.sidWhiteList=this.sidWhiteList||[]}get noteRange(){if(!this.staves.length)return null;const e=this.staves[0],t=this.staves[this.staves.length-1];return{top:e.top+e.staffY+e.noteRange.top,bottom:t.top+t.staffY+t.noteRange.bottom}}get staffPositions(){return this.staves.map(e=>({y:e.top+e.staffY,radius:2}))}get staffMask(){return this.staffMaskChanged?this.staffMaskChanged:this.prev&&this.staves.length===this.prev.staves.length?this.prev.staffMask:2**this.staves.length-1}get staffTop(){const e=this.staffPositions;return e.length?e[0].y-e[0].radius:0}get staffBottom(){const e=this.staffPositions;return e.length?e[e.length-1].y+e[e.length-1].radius:0}arrangePosition(){let e=0;for(const t of this.staves){if(Number.isFinite(t.top))break;t.top=e,e+=t.height}}tidyMeasureBars(){this.measureBars=this.measureBars.filter(e=>e>1),this.measureBars.sort((e,t)=>e-t);const e=this.width-this.measureBars[this.measureBars.length-1];e>12?this.measureBars.push(this.width):e<2&&(this.measureBars[this.measureBars.length-1]=this.width),this.measureBars=this.measureBars.filter((e,t)=>t<1||e-this.measureBars[t-1]>4)}rearrangeMeasures(){this.measureCount=this.measureBars.length,this.staves.forEach(e=>e.rearrangeMeasures(this.measureBars))}get height(){return this.staves.reduce((e,t)=>e+t.height,0)}get connectionLine(){const e=this.staves[0],t=this.staves[this.staves.length-1];return e&&{top:e.top+e.staffY-2,bottom:t.top+t.staffY+2}}get middleY(){if(!this.staves.length)return 0;return this.staves.reduce((e,t)=>e+t.top+t.staffY,0)/this.staves.length}get timeSignatureOnHead(){return this.staves.some(e=>e.measures[0]?.tokens.some(e=>D.includes(e.type)))}getStaffArray(e){let t=0;return Array(e).fill(null).map((e,s)=>{const i=this.staffMask&1<0?this.measureBars[e-1]:0,s=this.measureBars[e];return[...(this.tokens??[]).filter(e=>e.x>=t&&e.xTempoTerm.fromNumeralText(e.text)).filter(Boolean)]}getEvents(e){if(console.assert(Number.isInteger(this.headMeasureIndex),"invalid headMeasureIndex:",this.headMeasureIndex),!this.measureBars?.length&&this.staves.every(e=>!e.measures?.length))return{staffMask:this.staffMask,columns:[]};const t=this.getStaffArray(e).map(e=>e?e.measures.map(t=>{const s=t.getEvents();return t.assignAccessoriesOnEvents(s),t.assignFeaturesOnEvents(s,e.semantics),{events:s.map(t=>new EventTerm({staff:e.index,system:this.index,...t,rest:t.rest?"r":null})),contexts:t.getContexts({staff:e.index}),voltaBegin:t.tokens.some(e=>e.type===B.VoltaLeft),voltaEnd:t.tokens.some(e=>e.type===B.VoltaRight),alternative:t.alternative,barTypes:t.barTypes}}):Array(this.measureCount).fill(null).map(()=>({events:[],contexts:[],voltaBegin:!1,voltaEnd:!1,alternative:!1,barTypes:{}})));for(let e=0;et[e]?.contexts?.filter(e=>[Ue.TimeSignatureC,Ue.TimeSignatureN].includes(e.type))).find(e=>e?.length);s&&t.forEach(t=>{!t[e]||t[e].contexts.length||t[e].events.length||t[e].contexts.push(...s)})}const s=Array(this.measureCount).fill(null).map((e,s)=>({measureIndex:this.headMeasureIndex+s,rows:t.map(e=>e[s]),marks:this.getMarksInMeasure(s),duration:0,voltaBegin:t.some(e=>e[s]?.voltaBegin),voltaEnd:t.some(e=>e[s]?.voltaEnd),alternative:t.some(e=>e[s]?.alternative),barTypes:t.reduce((e,t)=>({...e,...t[s]?.barTypes}),{})}));s.forEach(e=>{[].concat(...e.rows.filter(Boolean).map(e=>e.events)).forEach((e,t)=>e.id=t+1)});const i=s[s.length-1];return i&&(i.break=!0),{staffMask:this.staffMask,columns:s}}getEventsFunctional(e,t,s=[],{useXMap:i=!1}={}){const r=this.getStaffArray(e).map((e,s)=>e?e.measures.map((e,i)=>{const r=t(s,i);return r&&{events:r.map(e=>new EventTerm({system:this.index,...e,rest:e.rest?"r":null})),contexts:e.getContexts({staff:s}),voltaBegin:e.tokens.some(e=>e.type===B.VoltaLeft),voltaEnd:e.tokens.some(e=>e.type===B.VoltaRight),alternative:e.alternative,barTypes:e.barTypes}}):Array(this.measureCount).fill(null).map(()=>({events:[],contexts:[],voltaBegin:!1,voltaEnd:!1,alternative:!1,barTypes:{}}))),n=Array(this.measureCount).fill(null).map((e,t)=>{const s=r.map(e=>e[t]);if(s.some(e=>!e))return null;let n=null;if(i){const e=[].concat(...s.map(e=>e.events)).reduce((e,t)=>(Number.isFinite(t.tickGroup)&&(e[t.tickGroup]=e[t.tickGroup]||[]),e[t.tickGroup].push(t),e),{});n=Object.values(e).reduce((e,t)=>{const s=Math.min(...t.map(e=>(e.left+e.right)/2));return e.set(s,t),e},new Map)}return{measureIndex:this.headMeasureIndex+t,rows:s,marks:this.getMarksInMeasure(t),duration:0,xMap:n,voltaBegin:s.some(e=>e.voltaBegin),voltaEnd:s.some(e=>e.voltaEnd),alternative:s.some(e=>e.alternative),barTypes:s.reduce((e,t)=>({...e,...t.barTypes}),{})}});return s.forEach(e=>n.forEach(e)),{staffMask:this.staffMask,columns:n}}getContexts(e){const t=this.getStaffArray(e).map(e=>e?e.measures.map(e=>({events:null,contexts:e.getContexts(),voltaBegin:e.tokens.some(e=>e.type===B.VoltaLeft),voltaEnd:e.tokens.some(e=>e.type===B.VoltaRight),alternative:t.some(e=>e.alternative),barTypes:e.barTypes})):Array(this.measureCount).fill(null).map(()=>({events:null,contexts:[],voltaBegin:!1,voltaEnd:!1,alternative:!1,barTypes:{}})));for(let e=0;et[e]?.contexts.filter(e=>[Ue.TimeSignatureC,Ue.TimeSignatureN].includes(e.type))).find(e=>e?.length);s&&t.forEach(t=>{t[e].contexts.length||t[e].contexts.push(...s)})}const s=Array(this.measureCount).fill(null).map((e,s)=>({measureIndex:this.headMeasureIndex+s,rows:t.map(e=>e[s]),marks:[],duration:0,voltaBegin:t.some(e=>e[s].voltaBegin),voltaEnd:t.some(e=>e[s].voltaEnd),alternative:t.some(e=>e.alternative),barTypes:t.reduce((e,t)=>({...e,...t[s].barTypes}),{})}));return{staffMask:this.staffMask,columns:s}}assignSemantics(e,t){const s=this.staves[e];console.assert(s,"staff is null:",e,this.staves);const i=s.top+s.staffY;t.getSystemPoints().forEach(e=>{const t={...e};t.y+=i,t.extension&&(t.extension={...t.extension},Number.isFinite(t.extension.y1)&&(t.extension.y1+=i,t.extension.y2+=i)),this.semantics.push(t)})}assemble(e,t=new DummyLogger){if(this.measureBars=[],!this.semantics)return;const s=SemanticGraph.fromPoints(this.semantics).getConfidentLayer(g.vline_BarMeasure,e);s.sort((e,t)=>e.x-t.x);const i=this.staffTop,r=this.staffBottom;let n=0;const a=s.reduce((e,t)=>{const s=Number.isFinite(t.confidence)?Math.tanh(t.confidence):1,a=t.x-n>.4?t.x:n;n=t.x;let o=e[a]||0;return o+=(Math.min(t.extension.y2,r)-Math.max(t.extension.y1,i))*s,t.x!==a&&delete e[a],e[t.x]=o,e},{}),o=Object.entries(a).filter(([e,t])=>t>3*this.staves.length).map(([e])=>Number(e));o.sort((e,t)=>e-t),o.forEach((e,t)=>{(t<=0||e-o[t-1]>2)&&this.measureBars.push(e)}),this.measureBars.length||this.measureBars.push(this.width),this.tidyMeasureBars(),this.rearrangeMeasures();this.semantics.filter(e=>[g.vline_BarTerminal,g.vline_BarSegment].includes(e.semantic)).forEach(e=>{const t=this.staves[0].measures.find(t=>e.x>t.right-2&&e.x{for(;!(l&1<_(this.index,i,e)),s.clearPredictedTokens(),s.assemble(e,this,t))})}qualifiedSemantics(e,t=1){return e.filter(e=>this.sidWhiteList.includes(e.id)||!this.sidBlackList.includes(e.id)&&(e.confidence>=t||!Number.isFinite(e.confidence))).map(e=>this.displacementSemantics&&this.displacementSemantics[e.id]?{...e,...this.displacementSemantics[e.id]}:e)}clearTokens(){this.staves.forEach(e=>e.clearTokens()),this.semantics=[]}newPoint(e,t,s=1){const i=this.staves[e];console.assert(i,"staff index out of bound:",e,this.staves.length);const{semantic:r,x:n,y:a,confidence:o=0,extension:c=null}=t,l={semantic:r,x:n,y:a,confidence:o,extension:c};return l.extension||delete l.extension,_(this.index,e,l),i.semantics.push(l),i.clearPredictedTokens(),i.assemble(s,this),l}appendToken(e){switch(this.tokens.push(e),e.textType){case p.TempoNumeral:{const t=this.staves[0];if(t){const s=t.top+t.staffY;t.measures.forEach(t=>{t.tokens=t.tokens.filter(t=>!V.includes(t.type)||Math.abs(t.x-e.x)>e.width/2||Math.abs(s+t.y-e.y)>e.fontSize/2)})}}break;case p.Alternation1:case p.Alternation2:this.staves[0].measures.forEach(t=>{const s=Math.min(t.left+t.width,e.x+e.width/2)-Math.max(t.left,e.x-e.width/2);t.alternative=t.alternative||s/t.width>.5})}}}System.className="System",System.blackKeys=["index","pageIndex","prev","next","headMeasureIndex","tokens","indent"];class Page extends SimpleClass{constructor(e){super(),super.assign(e),this.systems=this.systems||[],this.source&&(this.source.matrix=this.source.matrix||[1,0,0,1,0,0])}get sidBlackList(){const e=[].concat(...this.systems.map(e=>e.sidBlackList));return new Set(e)}get sidWhiteList(){const e=[].concat(...this.systems.map(e=>e.sidWhiteList));return new Set(e)}clearTokens(){this.semantics=null,this.tokens=null,this.systems.forEach(e=>e.tokens=null)}assignTexts(e,[t,s]){const i=this.source&&this.source.interval?this.source.interval*(t/this.source.dimensions.height):t/this.height;this.semantics=e.map(e=>{const r={x:(e.cx-s/2)/i,y:(e.cy-t/2)/i},n=this.source&&this.source.matrix?(a=r,{x:(o=this.source.matrix)[0]*a.x+o[2]*a.y+o[4],y:o[1]*a.x+o[3]*a.y+o[5]}):r;var a,o;return{confidence:e.score,x:n.x+this.width/2,y:n.y+this.height/2,semantic:g.rect_Text,extension:{text:e.text,type:e.type,width:e.width/i,height:e.height/i,theta:e.theta,textFeature:e.feature_dict}}})}assemble({textAnnotations:e=null}={},t=new DummyLogger){if(this.tokens=[],this.systems.forEach(e=>e.tokens=[]),this.systems.length){const e=this.systems.map(e=>e.left),t=e[Math.floor((e.length-1)/2)];this.systems.forEach(e=>e.indent=e.left>t+2)}if(this.semantics){const t=this.source?this.source.name:this.index.toString();this.semantics.forEach(s=>{O(t,s);const i={id:s.id,type:B.Text,confidence:s.confidence,textType:nt[s.extension.type]||s.extension.type,text:e&&e[s.id]||s.extension.text,textFeasure:s.extension.textFeature,width:s.extension.width,fontSize:s.extension.height};if(s.semantic===g.rect_Text)switch(i.textType){case p.Title:case p.Author:case p.PageMargin:case p.Other:this.tokens.push(new TextToken({x:s.x,y:s.y,...i}));break;case p.TempoNumeral:case p.Chord:case p.MeasureNumber:case p.Instrument:case p.Alternation1:case p.Alternation2:{const e=this.systems.find(e=>e.top+e.staffTop>s.y);e&&e.appendToken(new TextToken({x:s.x-e.left,y:s.y-e.top,...i}))}break;case p.TextualMark:case p.Times:{const e=[...this.systems].reverse().find(e=>e.topt>=e.top&&tr>=e.left&&r[e,ot[`TimeD${e}`]])),lt=Object.fromEntries(Array(12).fill(null).map((e,t)=>t+1).map(e=>[e,ot[`TimeN${e}`]])),ut=ot,ht={[ut.BOS]:"BOS",[ut.NoteheadS0]:"noteheads-s0",[ut.NoteheadS1]:"noteheads-s1",[ut.NoteheadS2]:"noteheads-s2",[ut.NoteheadGrace]:"GraceNotehead",[ut.Flag3]:"flags-u3",[ut.BeamLeft]:"BeamLeft",[ut.BeamContinue]:"BeamContinue",[ut.BeamRight]:"BeamRight",[ut.Dot]:"dot",[ut.Rest0]:"rests-0o",[ut.Rest1]:"rests-1o",[ut.Rest2]:"rests-2",[ut.Rest3]:"rests-3",[ut.Rest4]:"rests-4",[ut.Rest5]:"rests-5",[ut.Rest6]:"rests-6"},mt={[ut.NoteheadS0]:0,[ut.NoteheadS1]:1,[ut.NoteheadS2]:2,[ut.NoteheadGrace]:2},ft=[ut.NoteheadS0,ut.NoteheadS1,ut.NoteheadS2,ut.NoteheadGrace],dt=[ut.Rest0,ut.Rest1,ut.Rest2,ut.Rest3,ut.Rest4,ut.Rest5,ut.Rest6],pt=[ut.BeamLeft,ut.BeamContinue,ut.BeamRight],gt=[...ft,...dt],yt=[...ft,...dt,ut.vline_Stem],vt=[ut.BOS,ut.NoteheadS0,ut.vline_Stem,...dt],xt=[...gt,ut.vline_Stem],St={[ut.BeamLeft]:"Open",[ut.BeamRight]:"Close"},bt=e=>({type:e,staff:-1,x:0,y1:0,y2:0}),kt=bt(ot.BOS),Tt=e=>[bt(lt[e.numerator]),bt(ct[e.denominator])],wt=(e,t)=>{const s=e.filter((e,s)=>t[s]),i=Math.max(...s);return e.findIndex(e=>e===i)};class SemanticCluster extends SimpleClass{static elementToJSON(e){const t={type:e.type,staff:e.staff,x:e.x,y1:e.y1,y2:e.y2};return e.id&&(t.id=e.id),t}constructor(e){super(),super.assign(e)}get sourceMask(){return this.elements.map(e=>yt.includes(e.type))}get targetMask(){return this.elements.map(e=>vt.includes(e.type))}get vMask(){return this.elements.map(e=>xt.includes(e.type))}get compactMatrixH(){if(!this.matrixH)return null;const e=this.sourceMask,t=this.targetMask;return this.matrixH.filter((t,s)=>e[s]).map(e=>e.filter((e,s)=>t[s]))}set compactMatrixH(e){this.matrixH=Mt([].concat(...e),[this.sourceMask,this.targetMask])}get compactMatrixV(){if(!this._matrixV)return null;const e=this.vMask,t=this._matrixV.filter((t,s)=>e[s]).map(t=>t.filter((t,s)=>e[s]));return[].concat(...t.map((e,t)=>e.slice(0,t)))}set compactMatrixV(e){this.matrixV=e&&Et(e,this.vMask)}get matrixV(){return this.groupsV&&Nt(this.elements.length,this.groupsV)}set matrixV(e){if(!e)return this.groupsV=null,void(this._matrixV=e);const t=[],s=e.map((t,s)=>t.some(Number.isFinite)||e.some(e=>Number.isFinite(e[s])));e.forEach((e,i)=>{if(s[i]){let s=!1;for(let r=0;r=.5){const e=t.findIndex(e=>e.includes(r));t[e].push(i),s=!0;break}}s||t.push([i])}}),this.groupsV=t,this._matrixV=e}toJSON(){return{__prototype:"SemanticCluster",index:this.index,elements:this.elements.map(SemanticCluster.elementToJSON),compactMatrixH:this.compactMatrixH,compactMatrixV:this.compactMatrixV}}static mapMatrix(e,t,s){return t.reduce((t,s,i)=>(t[s]?t[s]=t[s].map((t,s)=>t+e[i][s]?1:0):t[s]=e[i],t),[]).map(e=>s.map(t=>e[t]))}mergeOverlapping(){const e=this.overlappedNoteheads();if(e.length){const t=this.elements.map((t,s)=>{const i=e.find(e=>s===e[1]),r=i?i[0]:s;return r-e.filter(e=>e[1]t.findIndex(e=>e===s));this.elements=s.map(e=>this.elements[e]),console.assert(this.elements.every(Boolean),"null element found:",this,t,s),this.matrixH=SemanticCluster.mapMatrix(this.matrixH,t,s),this.groupsV=this.groupsV.map(e=>Array.from(new Set(e.map(e=>t[e]))))}}overlappedNoteheads(){const e=[],t=this.elements.filter(e=>ft.includes(e.type));for(let s=0;st),t=this.masks?this.masks[1]:e.map(e=>vt.includes(this.elements[e].type)),s=e.map(e=>this.elements[e].type===ut.vline_Stem&&this.elements[e].y2-this.elements[e].y1>2),i=e.filter(e=>[ut.NoteheadS1,ut.NoteheadS2,ut.NoteheadGrace].includes(this.elements[e].type)),r=e.filter(e=>this.elements[e].type===ut.NoteheadS0),n=e.map(()=>!1),a={};i.forEach(t=>{const i=this.elements[t];e.filter(e=>s[e]).filter(e=>this.elements[e].y1-.5i.y1).sort((e,s)=>this.matrixH[t][s]-this.matrixH[t][e]).slice(0,2).filter((e,s)=>0===s||this.matrixH[t][e]>=.5).forEach(e=>{a[e]=a[e]||[],a[e].push(t)})}),r.forEach(e=>{const s=this.elements[e],i=wt(this.matrixH[e],t),r=this.elements[i];r.type===ut.NoteheadS0&&Math.abs(s.x-r.x)<2.6?(n[e]=!0,a[i]=a[i]||[i],a[i].push(e)):a[e]=a[e]||[e]});const o={},c=e.filter(e=>a[e]||dt.includes(this.elements[e].type));c.sort((e,t)=>this.elements[e].x-this.elements[t].x);const l=e.map(e=>e===ut.BOS);c.forEach(e=>{const t=wt(this.matrixH[e],l);o[e]=t,t&&!dt.includes(this.elements[t].type)&&(l[t]=!1),l[e]=!0});const u=this.elements.filter(e=>e.type===ut.Dot),h=this.elements.filter(e=>e.type===ut.Flag3),m=this.elements.filter(e=>pt.includes(e.type)),f=this.groupsV;return c.map(e=>{const t=this.elements[e],s=f?f.findIndex(t=>t.includes(e)):null;if(dt.includes(t.type)){const i=u.filter(e=>e.x>t.x+.5&&e.xt.y1-1&&e.y1this.elements[e]),r=Math.min(...i.map(e=>e.x-.7)),n=Math.max(...i.map(e=>e.x+.7));i.sort((e,t)=>t.y1-e.y1);const c=i.map(e=>e.y1),l=i.map(e=>e.id),f=c[0],d=c[c.length-1],p=u.filter(e=>e.x>n&&e.xf-1&&e.y1{const s=Ne(t.y1,.5);return e[s]=e[s]||[],e[s].push(t),e},{}),g=Math.max(...Object.values(p).map(e=>e.length),0);let y=mt[i[0].type],v=null,x=null,S=null;if(t.type===ut.vline_Stem){if(v=f-t.y1>t.y2-d?"u":"d",S={x:t.x,y:"u"===v?t.y1:t.y2},2===y){const e="u"===v?[t.y1-.4,t.y2-1]:[t.y1+1,t.y2+.4];y+=h.filter(s=>Math.abs(s.x-t.x)<.2&&s.y1>e[0]&&s.y1Math.abs(s.x-t.x)<.2&&s.y1>e[0]&&s.y1{const s=function*(){for(const t of e)yield t}(),[i,r]=t;return i.map(e=>r.map(t=>e&&t?s.next().value:null))},Et=(e,t)=>{const s=function*(){for(const t of e)yield t}();return t.map((e,i)=>t.map((t,r)=>e&&t&&r{const s=Array(e).fill(null).map((e,s)=>t.findIndex(e=>e.includes(s)));return Array(e).fill(null).map((t,i)=>Array(e).fill(null).map((e,t)=>{if(t>=i)return null;const r=s[i],n=s[t];return r<0||n<0?null:r===n?1:0}))};var It;!function(e){e[e.None=0]="None",e.Mordent="mordent",e.Prall="prall",e.Turn="turn",e.Trill="trill",e.Tremolo="tremolo",e.Arpeggio="arpeggio"}(It||(It={}));const Ct=class Stream{constructor(e){this.array=new Uint8Array(e),this.position=0}eof(){return this.position>=this.array.length}read(e){const t=this.array.slice(this.position,this.position+e);return this.position+=e,t}readString(e){return Array.from(this.read(e)).map(e=>String.fromCharCode(e)).join("")}readInt32(){const e=(this.array[this.position]<<24)+(this.array[this.position+1]<<16)+(this.array[this.position+2]<<8)+this.array[this.position+3];return this.position+=4,e}readInt16(){const e=(this.array[this.position]<<8)+this.array[this.position+1];return this.position+=2,e}readInt8(e){let t=this.array[this.position];return e&&t>127&&(t-=256),this.position+=1,t}readVarInt(){let e=0;for(;;){const t=this.readInt8();if(!(128&t))return e+t;e+=127&t,e<<=7}}};const _t=class OStream{constructor(){this.buffer=""}write(e){this.buffer+=e}writeInt32(e){this.buffer+=String.fromCharCode(e>>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e)}writeInt16(e){this.buffer+=String.fromCharCode(e>>8&255)+String.fromCharCode(255&e)}writeInt8(e){this.buffer+=String.fromCharCode(255&e)}writeVarInt(e){if(e<0)throw new Error("OStream.writeVarInt minus number: "+e);const t=127&e;e>>=7;let s=String.fromCharCode(t);for(;e;){const t=127&e;e>>=7,s=String.fromCharCode(128|t)+s}this.buffer+=s}getBuffer(){return this.buffer}getArrayBuffer(){return Uint8Array.from(this.buffer.split("").map(e=>e.charCodeAt(0))).buffer}};var Ot={parseMidiData:function(e){function t(e){const t=e.readString(4),s=e.readInt32();return{id:t,length:s,data:e.read(s)}}let s;function i(e){const t={};t.deltaTime=e.readVarInt();let i=e.readInt8();if(240&~i){let r;128&i?(r=e.readInt8(),s=i):(r=i,i=s);const n=i>>4;switch(t.channel=15&i,t.type="channel",n){case 8:return t.subtype="noteOff",t.noteNumber=r,t.velocity=e.readInt8(),t;case 9:return t.noteNumber=r,t.velocity=e.readInt8(),0===t.velocity?t.subtype="noteOff":t.subtype="noteOn",t;case 10:return t.subtype="noteAftertouch",t.noteNumber=r,t.amount=e.readInt8(),t;case 11:return t.subtype="controller",t.controllerType=r,t.value=e.readInt8(),t;case 12:return t.subtype="programChange",t.programNumber=r,t;case 13:return t.subtype="channelAftertouch",t.amount=r,t;case 14:return t.subtype="pitchBend",t.value=r+(e.readInt8()<<7),t;default:throw new Error("Unrecognised MIDI event type: "+n)}}else{if(255!==i){if(240===i){t.type="sysEx";const s=e.readVarInt();return t.data=e.readString(s),t}if(247===i){t.type="dividedSysEx";const s=e.readVarInt();return t.data=e.readString(s),t}throw new Error("Unrecognised MIDI event type byte: "+i)}{t.type="meta";const s=e.readInt8(),i=e.readVarInt();switch(s){case 0:if(t.subtype="sequenceNumber",2!==i)throw new Error("Expected length for sequenceNumber event is 2, got "+i);return t.number=e.readInt16(),t;case 1:return t.subtype="text",t.text=e.readString(i),t;case 2:return t.subtype="copyrightNotice",t.text=e.readString(i),t;case 3:return t.subtype="trackName",t.text=e.readString(i),t;case 4:return t.subtype="instrumentName",t.text=e.readString(i),t;case 5:return t.subtype="lyrics",t.text=e.readString(i),t;case 6:return t.subtype="marker",t.text=e.readString(i),t;case 7:return t.subtype="cuePoint",t.text=e.readString(i),t;case 32:if(t.subtype="midiChannelPrefix",1!==i)throw new Error("Expected length for midiChannelPrefix event is 1, got "+i);return t.channel=e.readInt8(),t;case 47:if(t.subtype="endOfTrack",0!==i)throw new Error("Expected length for endOfTrack event is 0, got "+i);return t;case 81:if(t.subtype="setTempo",3!==i)throw new Error("Expected length for setTempo event is 3, got "+i);return t.microsecondsPerBeat=(e.readInt8()<<16)+(e.readInt8()<<8)+e.readInt8(),t;case 84:if(t.subtype="smpteOffset",5!==i)throw new Error("Expected length for smpteOffset event is 5, got "+i);const s=e.readInt8();return t.frameRate={0:24,32:25,64:29,96:30}[96&s],t.hour=31&s,t.min=e.readInt8(),t.sec=e.readInt8(),t.frame=e.readInt8(),t.subframe=e.readInt8(),t;case 88:if(t.subtype="timeSignature",4!==i)throw new Error("Expected length for timeSignature event is 4, got "+i);return t.numerator=e.readInt8(),t.denominator=Math.pow(2,e.readInt8()),t.metronome=e.readInt8(),t.thirtyseconds=e.readInt8(),t;case 89:if(t.subtype="keySignature",2!==i)throw new Error("Expected length for keySignature event is 2, got "+i);return t.key=e.readInt8(!0),t.scale=e.readInt8(),t;case 127:return t.subtype="sequencerSpecific",t.data=e.readString(i),t;default:return t.subtype="unknown",t.data=e.readString(i),t}}}}let r=e;"string"==typeof e&&(r=e.split("").map(e=>e.charCodeAt(0)));const n=new Ct(r),a=t(n);if("MThd"!==a.id||6!==a.length)throw new Error("Bad .mid file - header not found");const o=new Ct(a.data),c=o.readInt16(),l=o.readInt16(),u=o.readInt16();let h;if(32768&u)throw new Error("Expressing time division in SMTPE frames is not supported yet");h=u;const m={formatType:c,trackCount:l,ticksPerBeat:h},f=[];for(let e=0;e>16&255),e.writeInt8(t.microsecondsPerBeat>>8&255),e.writeInt8(255&t.microsecondsPerBeat);break;case"smpteOffset":e.writeInt8(84),e.writeVarInt(5);var s={24:0,25:32,29:64,30:96}[t.frameRate];e.writeInt8(t.hour|s),e.writeInt8(t.min),e.writeInt8(t.sec),e.writeInt8(t.frame),e.writeInt8(t.subframe);break;case"timeSignature":e.writeInt8(88),e.writeVarInt(4),e.writeInt8(t.numerator),e.writeInt8(Math.log2(t.denominator)),e.writeInt8(t.metronome),e.writeInt8(t.thirtyseconds);break;case"keySignature":e.writeInt8(89),e.writeVarInt(2),e.writeInt8(t.key),e.writeInt8(t.scale);break;case"sequencerSpecific":e.writeInt8(127),e.writeVarInt(t.data.length),e.write(t.data);break;default:throw new Error("unhandled event subtype:"+t.subtype)}break;case"sysEx":e.writeInt8(240),e.writeVarInt(t.data.length),e.write(t.data);break;case"dividedSysEx":e.writeInt8(247),e.writeVarInt(t.data.length),e.write(t.data);break;case"channel":switch(t.subtype){case"noteOn":e.writeInt8(144|t.channel),e.writeInt8(t.noteNumber),e.writeInt8(t.velocity);break;case"noteOff":e.writeInt8(128|t.channel),e.writeInt8(t.noteNumber),e.writeInt8(t.velocity?t.velocity:0);break;case"noteAftertouch":e.writeInt8(160|t.channel),e.writeInt8(t.noteNumber),e.writeInt8(t.amount);break;case"controller":e.writeInt8(176|t.channel),e.writeInt8(t.controllerType),e.writeInt8(t.value);break;case"programChange":e.writeInt8(192|t.channel),e.writeInt8(t.programNumber);break;case"channelAftertouch":e.writeInt8(208|t.channel),e.writeInt8(t.amount);break;case"pitchBend":e.writeInt8(224|t.channel),e.writeInt8(255&t.value),e.writeInt8(t.value>>7&255);break;default:throw new Error("unhandled event subtype:"+t.subtype)}break;default:throw new Error("unhandled event type:"+t.type)}}const r=new _t,n=new _t;n.writeInt16(e.formatType),n.writeInt16(t.length),n.writeInt16(e.ticksPerBeat),s(r,"MThd",n.getBuffer());for(let e=0;e{const s=[];let i=120;const r=e.header.ticksPerBeat;for(let t=0;t0){e=a.ticksToEvent/r/(i/60)}"meta"==a.event.type&&"setTempo"==a.event.subtype&&(i=6e7/a.event.microsecondsPerBeat);const s=1e3*e*t||0;o.push([a,s]),a=n()}if(a=n())for(;a;)e()}(),o},trimSequence:e=>{const t=new Map;return e.filter(([{event:e,ticksToEvent:s}])=>{if(s>0&&t.clear(),"channel"!==e.type)return!0;const i=`${e.subtype}|${e.channel}|${e.noteNumber}`;return!t.get(i)&&(t.set(i,e),!0)})},fixOverlapNotes:e=>{const t=new Map,s=new Map,i=[];let r=-1;return e.forEach(([{event:e,ticksToEvent:n}],a)=>{if(n>0&&(r=a),"channel"!==e.type)return;const o=`${e.channel}|${e.noteNumber}`;switch(e.subtype){case"noteOn":t.get(o)?s.set(o,r):t.set(o,r);break;case"noteOff":s.get(o)?(i.push([s.get(o),a]),s.delete(o)):t.delete(o)}}),i.forEach((e,t)=>{for(let s=t-1;s>=0;--s){const t=i[s];if(t[1]t[0]&&++e[0]}}),i.forEach(([t,s])=>{if(s>=e.length-1||t<0)return;const i=e[s],r=e[s+1],n=e[t];if(!n[0].ticksToEvent)return void console.warn("invalid front index:",t,s,n);const a=n[1]/n[0].ticksToEvent;r[1]+=i[1],r[0].ticksToEvent+=i[0].ticksToEvent,i[0].ticksToEvent=n[0].ticksToEvent-1,n[0].ticksToEvent=1,i[1]=i[0].ticksToEvent*a,n[1]=n[0].ticksToEvent*a,e.splice(s,1),e.splice(t,0,i)}),e}};const At=Bt,Pt={64:"Sustain",65:"Portamento",66:"Sostenuto",67:"Soft"};class Notation$1{static parseMidi(e,{fixOverlap:t=!0}={}){const s=[],i={},r={},n=[],a=[];let o=0,c=5e3,l=0,u=4,h=0;const m={};let f,d=0,p=0;const g=[],y=e.header.ticksPerBeat;let v=At.midiToSequence(e);t&&(v=At.trimSequence(At.fixOverlapNotes(v)));const x=v.map(e=>({data:e[0].event,track:e[0].track,deltaTime:e[1],deltaTicks:e[0].ticksToEvent}));let S=0;for(const e of x){if(d+=e.deltaTicks,p=Math.round(1*d),e.deltaTicks>0){const t=e.deltaTicks/y;for(let e=Math.ceil(l);es.channel==t.channel&&s.pitch==e);if(i>=0){const r=s.splice(i,1)[0];n[t.channel].push({channel:t.channel,startTick:r.startTick,endTick:p,pitch:e,start:r.start,duration:o-r.start,velocity:r.velocity,beats:r.beats,track:r.track,finger:r.finger})}else console.debug("unexpected noteOff: ",o,t);m.high=Math.max(m.high||e,e)}break;case"controller":switch(t.controllerType){case 64:case 65:case 66:case 67:const e=Pt[t.controllerType];i[t.channel]=i[t.channel]||{},r[t.channel]=r[t.channel]||[];const s=i[t.channel][e];s&&r[t.channel].push({type:e,start:s.start,duration:o-s.start,value:s.value}),i[t.channel][e]={start:o,value:t.value}}}break;case"meta":switch(t.subtype){case"setTempo":c=t.microsecondsPerBeat/1e3,g.push({tempo:t.microsecondsPerBeat,tick:p,time:o});break;case"timeSignature":u=t.numerator,h=0;break;case"text":if(!f&&/^find-corres:/.test(t.text)){const e=t.text.match(/:([\d\,-]+)/);f=(e&&e[1]||"").split(",").map(e=>Number(e))}else if(/fingering\(.*\)/.test(t.text)){const[e,i]=t.text.match(/\((.+)\)/),r=Number(i);if(!Number.isNaN(r)){const e=s[s.length-1];e&&(e.finger=r);const t=x.find(e=>e.index==S-1);t&&(t.data.finger=r)}}break;case"copyrightNotice":console.log("MIDI copyright:",t.text)}}}return s.forEach(e=>{console.debug("unclosed noteOn event at",e.startTick,e),n[e.channel].push({startTick:e.startTick,endTick:p,pitch:e.pitch,start:e.start,duration:o-e.start,velocity:e.velocity,beats:e.beats,track:e.track,finger:e.finger})}),new Notation$1({channels:n,keyRange:m,pedals:r,bars:a,endTime:o,endTick:p,correspondences:f,events:x,tempos:g,ticksPerBeat:y,meta:{}})}constructor(e){Object.assign(this,e),this.notes=[];for(const e of this.channels)if(e)for(const t of e)this.notes.push(t);this.notes.sort(function(e,t){return e.start-t.start});for(const e in this.notes)this.notes[e].index=Number(e);this.duration=this.notes.length>0?this.endTime-this.notes[0].start:0,this.pitchMap=[];for(const e in this.channels)for(const t in this.channels[e]){const s=this.channels[e][t].pitch;this.pitchMap[s]=this.pitchMap[s]||[],this.pitchMap[s].push(this.channels[e][t])}if(this.pitchMap.forEach(e=>e.sort((e,t)=>e.start-t.start)),this.meta.beatInfos)for(let e=0;e0){const s=this.meta.beatInfos[e-1];t.beatIndex=s.beatIndex+Math.ceil((t.tick-s.tick)/this.ticksPerBeat)}else t.beatIndex=0}{let e=0,t=0,s=5e5;for(const i of this.tempos){e+=s/1e3*(i.tick-t)/this.ticksPerBeat,t=i.tick,s=i.tempo,i.time=e}}}findChordBySoftindex(e,t=.8){return this.notes.filter(s=>Math.abs(s.softIndex-e)e.from,"range is invalid:",e);const t=t=>{const s=Math.max(e.from,this.tempos[t].tick),i=te+s.tempo*t(i),0)/(e.to-e.from))}ticksToTime(e){console.assert(Number.isFinite(e),"invalid tick value:",e),console.assert(this.tempos&&this.tempos.length,"no tempos.");const t=this.tempos.findIndex(t=>t.tick>e),s=t<0?this.tempos.length-1:Math.max(t-1,0),i=this.tempos[s];return i.time+(e-i.tick)*i.tempo*.001/this.ticksPerBeat}timeToTicks(e){console.assert(Number.isFinite(e),"invalid time value:",e),console.assert(this.tempos&&this.tempos.length,"no tempos.");const t=this.tempos.findIndex(t=>t.time>e),s=t<0?this.tempos.length-1:Math.max(t-1,0),i=this.tempos[s];return i.tick+(e-i.time)*this.ticksPerBeat/(.001*i.tempo)}tickRangeToTimeRange(e){return console.assert(e.to>=e.from,"invalid tick range:",e),{from:this.ticksToTime(e.from),to:this.ticksToTime(e.to)}}scaleTempo({factor:e,headTempo:t}){console.assert(this.tempos&&this.tempos.length,"[Notation.scaleTempo] tempos is empty."),t&&(e=t/this.tempos[0].tempo),console.assert(Number.isFinite(e)&&e>0,"[Notation.scaleTempo] invalid factor:",e),this.tempos.forEach(t=>{t.tempo*=e,t.time*=e}),this.events.forEach(t=>{t.deltaTime*=e,t.time*=e}),this.notes.forEach(t=>{t.start*=e,t.duration*=e}),this.endTime*=e}}var Rt={Notation:Notation$1};const{Notation:Dt}=Rt,Ft=()=>new Promise(e=>requestAnimationFrame(e));var Lt=class MidiPlayer$1{constructor(e,{cacheSpan:t=600,onMidi:s,onPlayFinish:i,onTurnCursor:r}={}){let n;this.cacheSpan=t,this.onMidi=s,this.onPlayFinish=i,this.onTurnCursor=r,n=e.notes&&Number.isFinite(e.endTime)?e:Dt.parseMidi(e),this.notation=n,this.events=n.events,this.isPlaying=!1,this.progressTime=0,this.startTime=performance.now(),this.duration=n.endTime,this.cursorTurnDelta=0,console.assert(n.tempos&&n.tempos.length,"[MidiPlayer] invalid notation, tempos is empty.")}dispose(){this.isPlaying=!1,this.progressTime=0}get progressTicks(){return this.notation.timeToTicks(this.progressTime)}set progressTicks(e){this.progressTime=this.notation.ticksToTime(e),this.onTurnCursor&&this.onTurnCursor(this.progressTime)}async play({nextFrame:e=Ft}={}){this.progressTime>=this.duration&&(this.progressTime=0);let t=performance.now();this.startTime=t-this.progressTime,this.isPlaying=!0;let s=this.events.findIndex(e=>e.time>=t-this.startTime);for(;this.isPlaying;){for(;sthis.progressTime+this.cacheSpan)break;"channel"===e.data.type&&this.startTime+e.time>=t&&this.onMidi&&this.onMidi(e.data,this.startTime+e.time)}if(await e(),!this.isPlaying)break;if(0!==this.cursorTurnDelta){const e=this.cursorTurnDelta<0;if(this.startTime-=this.cursorTurnDelta,this.cursorTurnDelta=0,e)for(;s>0;--s){const e=this.events[s].time;if(this.startTime+ethis.duration&&(this.isPlaying=!1,this.onPlayFinish&&this.onPlayFinish())}}pause(){this.isPlaying=!1}turnCursor(e){this.isPlaying?this.cursorTurnDelta+=e-this.progressTime:this.progressTime=e,this.onTurnCursor&&this.onTurnCursor(e)}},$t={CostStepAttenuation:.6,SkipDeep:3,PriorDistanceSigmoidFactor:.1,PriorValueSigmoidFactor:.12,SkipCost:.5,LagOffsetCost:1,LeadOffsetCost:1.6,ZeroOffsetCost:.58,RelocationThreshold:6};const{pick:jt}=x.default,Ht=$t;class Node$2{constructor(e,t){this.s_note=e,this.c_note=t,console.assert(null!=this.s_note.softIndex,"s_note softIndex is null"),this.offset=this.s_note.softIndex-this.c_note.softIndex,this._prev=null,this._totalCost=0,this._value=0,this.cacheDirty=!0}get prev(){return this._prev}set prev(e){e!=this._prev&&(this._prev=e,this.cacheDirty=!0)}get si(){return this.s_note.index}get ci(){return this.c_note.index}get root(){return this.prev.root||this}get rootSi(){return this.prev.zero?this.si:this.prev.rootSi}get id(){return`${this.s_note.index},${this.c_note.index}`}static cost(e,t,s){return e*Ht.CostStepAttenuation+Math.tanh(t*Ht.SkipCost)+Math.tanh(.5*s)}updateCache(){this.cacheDirty&&(this._totalCost=Node$2.cost(this.prev.totalCost,this.si-this.prev.si-1,this.selfCost),this._value=this.prev.value+1-Math.tanh(.5*this.selfCost),this.cacheDirty=!1)}get totalCost(){return this.updateCache(),this._totalCost}get value(){return this.updateCache(),this._value}get deep(){return this.prev.deep+1}get path(){const e=[];for(let t=this;!t.zero;t=t.prev)e[t.si]=t.ci;for(let t=0;t=1,"node index error:",this,e);const s=Node$2.cost(e.totalCost,this.si-e.si-1,t);return(!this.prev||s0?Ht.LagOffsetCost:Ht.LeadOffsetCost))**2}return t}priorByOffset(e){const t=Math.abs(this.offset-e)/1;return Math.tanh(this.value*Ht.PriorValueSigmoidFactor)-Math.tanh(t*Ht.PriorDistanceSigmoidFactor)}static zero(){return{zero:!0,totalCost:0,value:0,si:-1,ci:-1,deep:0,offset:0}}}var Vt=Node$2;const zt=$t,qt=Vt;var Gt=class Navigator$1{constructor(e,t,s={}){this.criterion=e,this.sample=t,this.getCursorOffset=s.getCursorOffset||(()=>null),this.outOfPage=s.outOfPage,this.bestNode=null,this.fineCursor=null,this.breakingSI=t.notes.length-1,this.zeroNode=qt.zero(),this.zeroNode.offset=this.getCursorOffset()||0,this.relocationThreshold=s.relocationThreshold||zt.RelocationThreshold}step(e){const t=this.sample.notes[e];if(t.matches.length>0){t.matches.forEach(t=>{t.evaluatePrev(this.zeroNode);for(let s=e-1;s>=Math.max(this.breakingSI+1,e-zt.SkipDeep);--s){const i=this.sample.notes[s];console.assert(i,"prevNote is null:",s,e,this.sample.notes),i.matches.forEach(e=>{const s=t.offset-e.offset;s<2/zt.LagOffsetCost&&s>-2/zt.LeadOffsetCost&&t.evaluatePrev(e)})}if(t.prior=t.totalCost>1.99?-1:t.priorByOffset(this.zeroNode.offset),t.prior>0&&this.outOfPage){const e=this.criterion.notes[t.ci].startTick;this.outOfPage(e)&&(t.prior-=.7)}}),t.matches.sort((e,t)=>t.prior-e.prior),this.cursors=t.matches;let s=null;const i=this.nullSteps(e),r=this.cursors[0];r&&r.totalCost<1&&(r.prior>0||r.totalCost<.4&&Math.log(Math.max(i*r.value,.001))>this.relocationThreshold)&&(this.zeroNode.offset=r.offset,s=r,(!this.bestNode||r.value>this.bestNode.value)&&(this.bestNode=r)),s?this.fineCursor=s:this.resetCursor(e,{breaking:!1})||(this.zeroNode.offset+=t.deltaSi*Math.tanh(i),console.assert(!Number.isNaN(this.zeroNode.offset),"zeroNode.offset is NaN.",t.deltaSi,i))}else this.cursors=[]}path({fromIndex:e=0,toIndex:t=this.sample.notes.length-1}={}){const s=[];let i=null;for(let r=t;r>=e;){const e=this.sample.notes[r];if(!e.matches.length||e.matches[0].prior<-.01||e.matches[0].totalCost>=1){s[r]=-1,--r;continue}null!=i&&(e.matches.forEach(e=>e.backPrior=e.totalCost<1.99?e.priorByOffset(i):-1),e.matches.sort((e,t)=>t.backPrior-e.backPrior));const t=e.matches[0];t.path.forEach((e,t)=>s[t]=e),i=t.root.offset,r=t.rootSi-1}return console.assert(s.length==t+1,"path length error:",s,e,t+1,this.sample.notes.length,this.sample.notes.length?this.sample.notes[this.sample.notes.length-1].index:null),s}nullSteps(e){return e-(this.fineCursor?this.fineCursor.si:-1)-1}resetCursor(e,{breaking:t=!0}={}){t&&(this.breakingSI=e);const s=this.getCursorOffset();return null!=s&&(this.zeroNode.offset=s,this.zeroNode.si=e,this.fineCursor=null,console.assert(!Number.isNaN(this.zeroNode.offset),"zeroNode.offset is NaN.",s),!0)}get relocationTendency(){const e=this.cursors&&this.cursors[0];if(!e)return null;const t=this.nullSteps(e.si);return t<=0?0:Math.log(Math.max(t*e.value,.001))/this.relocationThreshold}};const Wt=Vt,Ut=Gt,Yt=e=>Math.tanh(e/192),Xt=function(e,t,{softIndexFactor:s=1}={}){const i=e[t=Number(t)];if(t>0){const r=e[t-1];console.assert(null!=i.start,"note.start is null",i),console.assert(null!=r.start,"lastNote.start is null",r),i.deltaSi=Yt((i.start-r.start)*s),i.softIndex=r.softIndex+i.deltaSi,console.assert(!Number.isNaN(i.deltaSi),"note.deltaSi is NaN.",i.start,r.start)}else i.softIndex=0,i.deltaSi=0};var Kt={normalizeInterval:Yt,makeNoteSoftIndex:Xt,makeMatchNodes:function(e,t,s=Wt.zero()){e.matches=[];const i=t.pitchMap[e.pitch];if(i)for(const t of i){const i=new Wt(e,t);s&&i.evaluatePrev(s),e.matches.push(i)}},genNotationContext:function(e,{softIndexFactor:t=1}={}){for(let s=0;s"setTempo"==e.subtype)||(n.push({time:t,type:"meta",subtype:"timeSignature",numerator:4,denominator:4,thirtyseconds:8}),n.push({time:t,type:"meta",subtype:"setTempo",microsecondsPerBeat:e.microsecondsPerBeat}));let a=t||0;if(e.notes)for(const t of e.notes)n.push({time:t.start,type:"channel",subtype:"noteOn",channel:t.channel||0,noteNumber:t.pitch,velocity:t.velocity,finger:t.finger}),a=Math.max(a,t.start),Number.isFinite(s)&&(t.duration=t.duration||s),t.duration&&(n.push({time:t.start+t.duration,type:"channel",subtype:"noteOff",channel:t.channel||0,noteNumber:t.pitch,velocity:0}),a=Math.max(a,t.start+t.duration));if(e.events){const t=e.events.filter(e=>!Jt.includes(e.data.subtype));for(const e of t)n.push({time:e.time,...e.data}),a=Math.max(a,e.time)}return n.push({time:a+100,type:"meta",subtype:"endOfTrack"}),n.sort(function(e,t){return e.time-t.time}),n.map((e,t)=>({event:e,index:t})).filter(({event:e})=>"noteOn"==e.subtype&&null!=e.finger).reverse().forEach(({event:e,index:t})=>n.splice(t+1,0,{time:e.time,type:"meta",subtype:"text",text:`fingering(${e.finger})`})),n.forEach(e=>e.ticks=Math.round((e.time-t)*i)),n.forEach((e,t)=>e.deltaTime=e.ticks-(t>0?n[t-1].ticks:0)),{header:r,tracks:[n]}}var es={sliceMidi:(e,t,s)=>({header:e.header,tracks:e.tracks.map(e=>((e,t,s)=>{(e=>{let t=0;e.forEach(e=>{t+=e.deltaTime,e.tick=t})})(e);const i=[],r={};return e.forEach(e=>{e.tick>=t&&e.tick<=s&&"endOfTrack"!==e.subtype?i.push({...e,tick:e.tick-t}):e.ticki.push({...e,tick:0})),i.push({tick:s-t,type:"meta",subtype:"endOfTrack"}),(e=>{let t=0;e.sort((e,t)=>e.tick-t.tick).forEach(e=>{e.deltaTime=e.tick-t,t=e.tick})})(i),i})(e,t,s))}),encodeToMIDIData:Qt,encodeToMIDI:function(e,t){const s=Qt(e,t);return Zt.encodeMidiFile(s)}};var ts={MIDI:Ot,MusicNotation:Rt,MidiPlayer:Lt,Matcher:Kt,MidiUtils:es};const ss=["id","ids","pitch","velocity","track","channel","rest","tied","overlapped","implicitType","afterGrace","contextIndex","staffTrack","chordPosition","division"];class MetaNotation{static fromAbsoluteNotes(e,t,s){const i=new MetaNotation(s);return i.measures=Array(t.length).fill(null).map((s,i)=>{const r=t[i],n=t[i+1]?t[i+1]-r:0,a=e.filter(e=>e.measure===i+1).map(e=>({tick:e.startTick-r,duration:e.endTick-e.startTick,...v.default(e,ss),subNotes:[]}));return a.forEach(e=>["rest","tied","implicitType","afterGrace"].forEach(t=>{e[t]||delete e[t]})),{tick:r,duration:n,notes:a}}),i.idTrackMap=e.reduce((e,t)=>(t.id&&(e[t.id]=t.track),e),{}),i}static performAbsoluteNotes(e,{withRestTied:t=!1}={}){const s=e.filter(e=>(t||!e.rest&&!e.tied)&&!e.overlapped).map(e=>({measure:e.measure,channel:e.channel,track:e.track,start:e.start,startTick:e.startTick,endTick:e.endTick,pitch:e.pitch,duration:e.duration,velocity:e.velocity||127,id:e.id,ids:e.ids,staffTrack:e.staffTrack,contextIndex:e.contextIndex,implicitType:e.implicitType,chordPosition:e.chordPosition})).reduce((e,t)=>{const s=`${t.channel}|${t.start}|${t.pitch}`,i=e[s];return i?i.ids.push(...t.ids):e[s]=t,e},{});return Object.values(s)}constructor(e){this.ripe=!1,e&&Object.assign(this,e)}get trackTickBias(){const e=this.measures[0];return this.trackNames.reduce((t,s,i)=>{if(t[s]=0,e){const r=e.notes.find(e=>e.track===i);r&&(t[s]=Math.min(r.tick,0))}return t},{})}get idSet(){return this.measures.reduce((e,t)=>(t.notes.filter(e=>!e.rest).forEach(t=>t.ids.forEach(t=>e.add(t))),e),new Set)}toJSON(){return{__prototype:"LilyNotation",measures:this.measures,idTrackMap:this.idTrackMap,trackNames:this.trackNames,ripe:this.ripe}}toAbsoluteNotes(e){let t=0;const s=e.map(e=>{const s=this.measures[e-1];console.assert(!!s,"invalid measure index:",e,this.measures.length);const i=s.notes.map(s=>({startTick:t+s.tick,endTick:t+s.tick+s.duration,start:t+s.tick,duration:s.duration,measure:e,...v.default(s,ss)}));return t+=s.duration,i});return[].concat(...s)}toPerformingNotation(e,t={}){const s=this.toAbsoluteNotes(e),i=MetaNotation.performAbsoluteNotes(s,t),r=Math.max(...i.map(e=>e.start+e.duration)),n=e.reduce((e,t)=>e+this.measures[t-1].duration,0);return new ts.MusicNotation.Notation({ticksPerBeat:480,meta:{},tempos:[],channels:[i],endTime:r,endTick:n})}toPerformingMIDI(e,{trackList:t}={}){if(!e.length)return null;const s=-Math.min(0,...this.measures[0]?.events.map(e=>e.ticks)||[],...this.measures[0]?.notes.map(e=>e.tick)||[]);let i=s;const r=e.map(e=>{const t=this.measures[e-1];console.assert(!!t,"invalid measure index:",e,this.measures.length);const s=t.events.map(t=>({ticks:i+t.ticks,track:t.track,data:{...t.data,measure:e}}));return i+=t.duration,s}),n=e=>e.ticks+("noteOff"===e.subtype?-1e-8:0),a=[].concat(...r).reduce((e,t)=>(e[t.track]=e[t.track]||[],e[t.track].push({ticks:t.ticks,...t.data}),e),[]);a[0]=a[0]||[],i=s,e.map(e=>{const s=this.measures[e-1];console.assert(!!s,"invalid measure index:",e,this.measures.length),Number.isFinite(s.duration)&&(s.notes.forEach(s=>{if(t&&!t[s.track])return;if(s.rest)return;const r=i+s.tick,n=a[s.track]=a[s.track]||[];s.subNotes.forEach(t=>{n.push({ticks:r+t.startTick,measure:e,ids:s.ids,type:"channel",subtype:"noteOn",channel:s.channel,noteNumber:t.pitch,velocity:t.velocity,staffTrack:s.staffTrack,staff:s.staff}),n.push({ticks:r+t.endTick,measure:e,ids:s.ids,type:"channel",subtype:"noteOff",channel:s.channel,noteNumber:t.pitch,velocity:0,staffTrack:s.staffTrack,staff:s.staff})})}),i+=s.duration)});const o=i;for(let e=0;e{e.sort((e,t)=>n(e)-n(t));let t=0;e.forEach(e=>{e.deltaTime=e.ticks-t,Number.isFinite(e.deltaTime)?t=e.ticks:e.deltaTime=0}),e.push({deltaTime:Math.max(o-t,0),type:"meta",subtype:"endOfTrack"})}),{header:{formatType:0,ticksPerBeat:480},tracks:a,zeroTick:s}}toPerformingNotationWithEvents(e,t={}){if(!e.length)return null;const{zeroTick:s,...i}=this.toPerformingMIDI(e,t),r=ts.MusicNotation.Notation.parseMidi(i);is(r);let n=s;return r.measures=e.map(e=>{const t=n;return n+=this.measures[e-1].duration,{index:e,startTick:t,endTick:n}}),r}setTempo(e){let t=!1;for(const s of this.measures)for(const i of s.events)"setTempo"===i.data.subtype&&(i.data.microsecondsPerBeat=6e7/e,t=!0);return t}}const is=(e,t=["ids","measure","staffTrack"])=>{const s=(e,t,s)=>`${e}|${t}|${s}`,i=e.notes.reduce((e,t)=>(e[s(t.channel,t.pitch,t.startTick)]=t,e),{});e.events.forEach(e=>{if("noteOn"===e.data.subtype){const r=s(e.data.channel,e.data.noteNumber,e.ticks),n=i[r];console.assert(!!n,"cannot find note of",r),n&&Object.assign(n,v.default(e.data,t))}})};var rs,ns={exports:{}},as={exports:{}};as.exports=rs=rs||function(e,t){var s;if("undefined"!=typeof window&&window.crypto&&(s=window.crypto),"undefined"!=typeof self&&self.crypto&&(s=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(s=globalThis.crypto),!s&&"undefined"!=typeof window&&window.msCrypto&&(s=window.msCrypto),!s&&"undefined"!=typeof global&&global.crypto&&(s=global.crypto),!s)try{s=require("crypto")}catch(e){}var i=function(){if(s){if("function"==typeof s.getRandomValues)try{return s.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof s.randomBytes)try{return s.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},r=Object.create||function(){function e(){}return function(t){var s;return e.prototype=t,s=new e,e.prototype=null,s}}(),n={},a=n.lib={},o=a.Base={extend:function(e){var t=r(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},c=a.WordArray=o.extend({init:function(e,s){e=this.words=e||[],this.sigBytes=s!=t?s:4*e.length},toString:function(e){return(e||u).stringify(this)},concat:function(e){var t=this.words,s=e.words,i=this.sigBytes,r=e.sigBytes;if(this.clamp(),i%4)for(var n=0;n>>2]>>>24-n%4*8&255;t[i+n>>>2]|=a<<24-(i+n)%4*8}else for(var o=0;o>>2]=s[o>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,s=this.sigBytes;t[s>>>2]&=4294967295<<32-s%4*8,t.length=e.ceil(s/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],s=0;s>>2]>>>24-r%4*8&255;i.push((n>>>4).toString(16)),i.push((15&n).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,s=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new c.init(s,t/2)}},h=l.Latin1={stringify:function(e){for(var t=e.words,s=e.sigBytes,i=[],r=0;r>>2]>>>24-r%4*8&255;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var t=e.length,s=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new c.init(s,t)}},m=l.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},f=a.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=m.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var s,i=this._data,r=i.words,n=i.sigBytes,a=this.blockSize,o=n/(4*a),l=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,u=e.min(4*l,n);if(l){for(var h=0;h>>7)^(d<<14|d>>>18)^d>>>3,g=l[f-2],y=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;l[f]=p+l[f-7]+y+l[f-16]}var v=i&r^i&n^r&n,x=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),S=m+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&u^~o&h)+c[f]+l[f];m=h,h=u,u=o,o=a+S|0,a=n,n=r,r=i,i=S+(x+v)|0}s[0]=s[0]+i|0,s[1]=s[1]+r|0,s[2]=s[2]+n|0,s[3]=s[3]+a|0,s[4]=s[4]+o|0,s[5]=s[5]+u|0,s[6]=s[6]+h|0,s[7]=s[7]+m|0},_doFinalize:function(){var e=this._data,s=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;return s[r>>>5]|=128<<24-r%32,s[14+(r+64>>>9<<4)]=t.floor(i/4294967296),s[15+(r+64>>>9<<4)]=i,e.sigBytes=4*s.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});s.SHA256=n._createHelper(u),s.HmacSHA256=n._createHmacHelper(u)}(Math),e.SHA256}(as.exports);var os=ns.exports;class HashVector{static fromHash(e){const t=[];for(const s of e)for(let e=0;e<8;++e)t.push(s>>e&1?1:-1);return new HashVector(t)}static fromString(e){const t=(e=>{const{words:t,sigBytes:s}=os(e),i=t.map(e=>e<0?e+4294967296:e),r=s/t.length;return new Uint8Array(s).map((e,t)=>i[Math.floor(t/r)]>>8*(3-t%r)&255)})(e);return HashVector.fromHash(t)}static fromWords(e){return e.map(e=>HashVector.fromString(e)).reduce((e,t)=>e.add(t),HashVector.zero)}static concat(...e){const t=e.map(e=>e.fields).flat(1);return new HashVector(t)}constructor(e=null){this.fields=e||Array(256).fill(0)}get length(){return this.fields.length}toHash(){return Uint8Array.from(Array(this.length/8).fill(0).map((e,t)=>this.fields.slice(8*t,8*(t+1)).reduce((e,t,s)=>e|(t>0?1:0)<this.fields[s]=t+e.fields[s]),this}scale(e){return this.fields=this.fields.map(t=>t*e),this}sub(e){const t=e>0?this.fields.slice(0,e):this.fields.slice(e);return new HashVector(t)}static get zero(){return new HashVector}}const cs=Array(256).fill(0).map((e,t)=>(e=>{let t=0;for(let s=e;s>0;s>>=1)s%2&&++t;return t})(t));cs.reduce((e,t,s)=>({...e,[("0"+s.toString(16)).slice(-2)]:t}),{});const ls=(e,t)=>{const s=8*e.length,i=((e,t)=>e.map((e,s)=>e^t[s]))(e,t);return(s-2*i.reduce((e,t)=>e+cs[t],0))/s},us=e=>("0"+e.toString(16)).slice(-2);var hs={Matrix:function(){}};hs.Matrix.create=function(e){return(new hs.Matrix).setElements(e)},hs.Matrix.I=function(e){for(var t,s=[],i=e;i--;)for(t=e,s[i]=[];t--;)s[i][t]=i===t?1:0;return hs.Matrix.create(s)},hs.Matrix.prototype={dup:function(){return hs.Matrix.create(this.elements)},isSquare:function(){var e=0===this.elements.length?0:this.elements[0].length;return this.elements.length===e},toRightTriangular:function(){if(0===this.elements.length)return hs.Matrix.create([]);var e,t,s,i,r=this.dup(),n=this.elements.length,a=this.elements[0].length;for(t=0;t=n&&l[a].push(r);for(o.elements[a]=s,e=a;e--;){for(s=[],t=0;t1===e?null:(e=>{const t=Math.round(1920*e);return Oe(t,1920)})(e);var ds,ps,gs;!function(e){e[e.PLACE=0]="PLACE",e[e.VERTICAL=1]="VERTICAL",e[e.HORIZONTAL=2]="HORIZONTAL"}(ds||(ds={}));class Action{constructor(e){Object.assign(this,e)}static P(e){return new Action({type:ds.PLACE,e1:e})}static V(e,t,s=1){return new Action({type:ds.VERTICAL,e1:s>0?e:t,e2:s>0?t:e})}static H(e,t){return new Action({type:ds.HORIZONTAL,e1:e,e2:t})}get id(){switch(this.type){case ds.PLACE:return this.e1.toString();case ds.VERTICAL:return`${this.e1}|${this.e2}`;case ds.HORIZONTAL:return`${this.e1}-${this.e2>=0?this.e2:"."}`}}get events(){return[this.e1,this.e2].filter(Number.isFinite)}}class StageMatrix{static fromNode(e,t){const s=Array(e.stages.length).fill(null).map(()=>Array(e.stages.length).fill(null).map(()=>new Set));e.actions.filter(e=>e.type===ds.HORIZONTAL).forEach(t=>{const i=e.stages.findIndex(e=>e.events.includes(t.e1)),r=e.stages.findIndex(e=>e.events.includes(t.e2));console.assert(i>=0&&r>=0,"invalid stages for H action:",e.id,e.stages,t),s[i][r].add(t.e1)}),s[0][e.stages.length-1].add(0);const i=e.stagedEvents,r=t.matrixH[t.matrixH.length-1].filter((e,t)=>!i.has(t)),n=Math.max(0,Math.max(...r)-.01),a=e.actions.filter(e=>e.type===ds.HORIZONTAL),o=Object.keys(t.eventMap).map(Number).filter(e=>!a.find(t=>t.e2===e));return e.stages.forEach(i=>{i.events.forEach(r=>{if(r>0){!a.find(e=>e.e1===r)&&t.matrixH[t.matrixH.length-1][r]>=n&&(o.some(e=>t.matrixH[e][r]>0)||s[i.index][e.stages.length-1].add(r))}})}),new StageMatrix({matrix:s})}constructor(e){Object.assign(this,e)}pathOf(e,t,s,i=0){if(this.matrix[e][t].size){const r=[...this.matrix[e][t]][i];if(t===s)return[r];for(let e=t+1;e<=s;++e){const i=this.pathOf(t,e,s);if(i)return[r,...i]}}return null}findDoublePath(e,t){const s=[];for(let i=t;i>=e+1;--i)for(let r=0;rt.forEach(t=>e.forEach(e=>t.delete(e))))}toEquations(e){const t=[];for(let s=1;sn[e]=1),r.forEach(e=>n[e]=-1),t.push(n),this.reducePath(i.length>r.length?i:r)}}}return t}}class PathNode{constructor(e){Object.assign(this,e),console.assert(this.logger,"logger is null:",e)}get actions(){const e=this.parent?this.parent.actions:[];return this.action?[...e,this.action]:e}get id(){return this.actions.map(e=>e.id).sort().join(" ")}get stagedEvents(){const e=new Set;return this.stages&&this.stages.forEach(t=>t.events.forEach(t=>t>=0&&e.add(t))),e}like(e){return e.split(" ").sort().join(" ")===this.id}constructStages(e){this.stages=[{events:[-1]}];for(const t of this.actions)switch(t.type){case ds.PLACE:this.stages.unshift({events:[t.e1]});break;case ds.VERTICAL:{const e=this.stages.find(e=>e.events.includes(t.e1)),s=this.stages.find(e=>e.events.includes(t.e2));console.assert(e||s,"invalid V action:",this.stages,t),e&&s?(e.events.push(...s.events),s.events=null,this.stages=this.stages.filter(e=>e.events)):e?s||e.events.push(t.e2):s.events.unshift(t.e1)}break;case ds.HORIZONTAL:{const s=this.stages.find(e=>e.events.includes(t.e1)),i=this.stages.find(e=>e.events.includes(t.e2));console.assert(s||i,"invalid H action:",this.stages,t);const r=s=>{console.assert(e.eventMap[s],"invalid event id:",t.id,s,e.eventMap);const i=e.eventMap[s].x,r=this.stages.find(t=>t.events.some(t=>t>0&&e.eventMap[t].x<=i)&&t.events.some(t=>t>0&&e.eventMap[t].x>=i));if(r)r.events.push(s);else{const t={events:[s]},r=this.stages.findIndex(t=>-1===t.events[0]||e.eventMap[t.events[0]].x>=i);this.stages.splice(r,0,t)}};s||r(t.e1),i||r(t.e2)}}this.stages.forEach((e,t)=>e.index=t)}constructConstraints(e){const t=Object.keys(e.eventMap).length,s=StageMatrix.fromNode(this,e).toEquations(t),i=Array(t).fill(null).map((t,s)=>e.eventMap[s].duration);this.constraints=s.map(e=>e.map((e,t)=>e*i[t]))}inbalancesConstraints(e){console.assert(this.constraints,"constraints not constructed.");const t=Object.keys(e.eventMap).length,s=Array(t).fill(!0),i=Array(t).fill(!1),r=[];for(const e of this.constraints){const t=e.reduce((e,t)=>e+t,0);if(0!==t){const n=t<0?e.map(e=>-e):e;if(n[0]>0)continue;r.push(n),n.forEach((e,t)=>{i[t]=i[t]||e<0,e&&(s[t]=e<0||i[t])})}}return this.constraints.forEach(e=>{0!==e.reduce((e,t)=>e+t,0)||e[0]||e.some((e,t)=>e&&!s[t])&&(e.forEach((e,t)=>e&&(s[t]=!1)),r.push(e))}),{ones:s,inbalances:r}}solveEquations({ones:e,inbalances:t}){if(!t.length)return e.map(()=>1);const s=e.map((e,t)=>({fixed:e,i:t})).filter(({fixed:e})=>!e).map(({i:e})=>e).filter(e=>t.some(t=>0!==t[e]));if(!s.length)return e.map(()=>1);const i=s.map(e=>Math.abs(t.find(t=>0!==t[e])[e])),r=new Map;let n=!1;const a=t.map(e=>({line:e.filter((e,t)=>s.includes(t)),bias:-e.reduce((e,t,i)=>e+(s.includes(i)?0:t),0)})).filter(({line:e,bias:t})=>{if(e.every(e=>0===e))return!1;const s=e.join(",");return r.has(s)?(n=r.get(s)!==t,!1):(r.set(s,t),!0)});if(n)return null;const o=a.slice(0,s.length),c=a.slice(s.length);if(o.lengths===t?1:s===r?-1:0),bias:0,prior:(i[t]+i[r])/ms};o.some(e=>e.line[t]&&e.line[r])&&(n.prior-=10),o.some(e=>1===e.line.filter(Number).length&&(e.line[t]||e.line[r]))&&(n.prior+=1),e.push(n)}e.sort((e,t)=>e.prior-t.prior),o.push(...e.slice(0,s.length-o.length))}const l=o.map(({line:e})=>e),u=o.map(({bias:e})=>e),h=function(e){const t=hs.Matrix.create(e).inverse();return null!==t?t.elements:null}(l);if(!h)return this.logger.warn("null invert:",l),null;const m=h.map(e=>e.reduce((e,t,s)=>e+t*u[s],0));if(c.length&&c.some(e=>Math.abs(e.line.reduce((e,t,s)=>e+t*m[s],0))>.001))return null;const f=e.map(()=>1);return s.forEach((e,t)=>f[e]=m[t]),f}optimallySolve(e){const{ones:t,inbalances:s}=this.inbalancesConstraints(e),i=t.map((t,s)=>t?-1:Ne(e.eventMap[s].shrinkness,.01)).reduce((e,t,s)=>(t>=0&&(e[t]=e[t]||[],e[t].push(s)),e),{}),r=Object.entries(i).sort((e,t)=>Number(t[0])-Number(e[0])).map(e=>e[1]);for(let i=1;i!n.includes(t)),o=this.solveEquations({ones:a,inbalances:s});if(o&&o.every((t,s)=>t<=1&&t>e.eventMap[s].lowWarp))return o}return this.solveEquations({ones:t,inbalances:s})}isConflicted(e){const{ones:t,inbalances:s}=this.inbalancesConstraints(e);for(const i of s){if(i.reduce((s,i,r)=>s+i*(t[r]||i<=0?1:e.eventMap[r].lowWarp),0)>=0)return i.forEach((t,s)=>{t&&(e.eventTendencies[s]+=t>0?1:-1)}),!0}if(!s.length)return!1;const i=this.solveEquations({ones:t,inbalances:s});return!i||!i.every((t,s)=>t>e.eventMap[s].lowWarp&&t<=1)}getSolution(e){const t=t=>e.eventMap[t.e2]?e.eventMap[t.e2].x+.06*Math.abs(e.eventMap[t.e2].x-e.eventMap[t.e1].x):e.eventMap[t.e1].x+1e4,s=this.actions.filter(e=>e.type===ds.HORIZONTAL).sort((e,s)=>t(e)-t(s)),i=s.reduce((e,t)=>({...e,[t.e1]:t.e2}),{}),r=new Set([...Object.keys(i)].map(Number));s.forEach(e=>r.delete(e.e2)),this.stages[0].events.forEach(e=>e>0&&r.add(e));let n=[...r].map(e=>{const t=[e];let s=e;for(;i[s]&&(s=i[s],!(s<0||t.includes(s)));)t.push(s);return t});const a=Object.values(e.eventMap).filter(e=>e.id>0).map(e=>({id:e.id,tick:null,endTick:null,tickGroup:null,timeWarp:null})),o=a.filter(e=>n.some(t=>t.includes(e.id))||s.some(t=>[t.e1,t.e2].includes(e.id))).reduce((e,t)=>({...e,[t.id]:t}),{});this.stages.forEach((e,t)=>e.events.forEach(e=>o[e]&&(o[e].tickGroup=t))),this.stages[0].tick=0,this.stages[0].events.forEach(e=>o[e]&&(o[e].tick=0));const c=this.optimallySolve(e);a.forEach(e=>e.timeWarp=fs(c[e.id]));const l=this.stages.slice(0,this.stages.length-1),u=()=>{if(l.every(e=>Number.isFinite(e.tick)))return!1;let t=!1;return s.forEach(s=>{const i=this.stages.find(e=>e.events.includes(s.e1)),r=this.stages.find(e=>e.events.includes(s.e2));Number.isFinite(i.tick)&&!Number.isFinite(r.tick)&&(r.tick=i.tick+Ae(e.eventMap[s.e1].duration,o[s.e1].timeWarp),r.events.forEach(e=>o[e]&&(o[e].tick=r.tick)),t=!0)}),[...s].reverse().forEach(s=>{const i=this.stages.find(e=>e.events.includes(s.e1)),r=this.stages.find(e=>e.events.includes(s.e2));!Number.isFinite(i.tick)&&Number.isFinite(r.tick)&&(i.tick=r.tick-Ae(e.eventMap[s.e1].duration,o[s.e1].timeWarp),i.events.forEach(e=>o[e]&&(o[e].tick=i.tick)),t=!0)}),t};for(;u(););console.assert(l.every(e=>Number.isFinite(e.tick)),"stage ticks not all solved:",this.stages,this.id),a.filter(e=>Number.isFinite(e.tick)).forEach(t=>t.endTick=t.tick+Ae(e.eventMap[t.id].duration,t.timeWarp));const h=e.eventMap[0].duration;n.forEach(e=>{const t=e.findIndex(e=>o[e].endTick>h);if(t>=0){e.splice(t,e.length-t).forEach(e=>{o[e].tick=null,o[e].endTick=null})}}),n=n.filter(e=>e.length);const m=Math.max(0,...a.map(e=>e.endTick).filter(Number.isFinite));return this.logger.debug(String.fromCodePoint(127822),this.id,c),{voices:n,events:a,duration:m,actions:this.actions.map(e=>e.id).join(" ")}}deduce(e,t){this.stages||this.constructStages(e);const s=e.actionAccessing.get(this.id)||{times:0};if(++s.times,e.actionAccessing.set(this.id,s),this.constructConstraints(e),this.isConflicted(e))return s.closed=!0,this.logger.info(this.action.id,"❌"),null;if(this.logger.group(this.action&&this.action.id),t.credits>0){if(--t.credits,this.children||this.expand(e),this.children=this.children.filter(t=>!e.actionAccessing.get(t.id)||!e.actionAccessing.get(t.id).closed),this.children.length){const s=t=>t.possibility/((e.actionAccessing.get(t.id)||{times:0}).times+1);this.children.sort((e,t)=>s(t)-s(e));for(const s of this.children){const i=s.deduce(e,t);if(i)return this.logger.groupEnd(),i;if(t.credits<=0)break}}}else this.logger.debug("quota exhausted.");return this.logger.groupEnd(),s.closed=!0,this.getSolution(e)}expand(e){this.constructStages(e);const{eventMap:t,matrixV:s,matrixH:i}=e,r=this.stagedEvents,n=[],a=e=>{if(!this.actions.some(t=>t.id===e.action.id)&&!n.some(t=>t.action.id===e.action.id)){const t=this.stages.find(t=>t.events.includes(e.action.e1)),i=this.stages.find(t=>t.events.includes(e.action.e2));if(t===i||t&&i&&t.index>=i.index)return;if(t&&i)if(e.action.type===ds.VERTICAL){if(i.index-t.index>1)return;if(this.actions.some(e=>t.events.includes(e.e1)&&i.events.includes(e.e2)))return}else if(e.action.type===ds.HORIZONTAL&&t.index>i.index)return;if(e.action.type===ds.HORIZONTAL&&this.actions.some(t=>t.type===ds.HORIZONTAL&&(t.e1===e.action.e1||t.e2===e.action.e2||t.e1===e.action.e2&&t.e2===e.action.e1)))return;if(e.action.type===ds.VERTICAL){if(t&&(e.possibility=Math.min(e.possibility,...t.events.map(t=>s[e.action.e2][t])),e.possibility<=0))return;if(i&&(e.possibility=Math.min(e.possibility,...i.events.map(t=>s[t][e.action.e1])),e.possibility<=0))return}n.push(e)}};for(const e of r)e<0||(s[e].forEach((t,s)=>{t>0&&e!==s&&a({action:Action.V(s,e),possibility:t})}),s.forEach((t,s)=>{const i=t[e];i>0&&a({action:Action.V(e,s),possibility:i})}),i[e].forEach((t,s)=>{t>0&&a({action:Action.H(s,e),possibility:t})}),i.forEach((s,i)=>{i=i>=Object.keys(t).length?-1:i;const r=s[e];r>0&&a({action:Action.H(e,i),possibility:r})}));n.some(e=>[ds.HORIZONTAL,ds.PLACE].includes(e.action.type)||!r.has(e.action.e1)||!r.has(e.action.e2))?this.children=n.map(e=>new PathNode({logger:this.logger,parent:this,...e})):this.children=[]}}class Solver{constructor(e,{quota:t=1e3,logger:s=new DummyLogger}={}){this.quota=t,this.logger=s;const i={id:0,x:0,confidence:1,shrinkness:e.measureShrinkness,duration:e.expectedDuration,lowWarp:0};this.events=[i,...e.events.map(e=>({id:e.id,x:e.x,confidence:e.confidence,shrinkness:e.shrinkness,staff:e.staff,duration:e.duration,lowWarp:.5}))],this.eventMap=this.events.reduce((e,t)=>({...e,[t.id]:t}),{}),this.matrixH=e.matrixH,this.matrixV=e.matrixV,this.xSpan=e.endX-Math.min(e.endX-1,...e.events.map(e=>e.x)),this.actionAccessing=new Map}solve(){this.pathRoot=new PathNode({logger:this.logger,action:null}),this.pathRoot.children=this.events.slice(1).map(e=>new PathNode({logger:this.logger,parent:this.pathRoot,action:Action.P(e.id),possibility:this.matrixV[e.id].reduce((e,t)=>e+t,0)}));let e=null;this.logger.groupCollapsed("solve");const t=Array(this.events.length).fill(0),s={credits:this.quota,times:0};for(;s.credits>0;){++s.times;const i={eventMap:this.eventMap,matrixH:this.matrixH,matrixV:this.matrixV,actionAccessing:this.actionAccessing,eventTendencies:t},r=this.pathRoot.deduce(i,s);if(r.credits=this.quota-s.credits,r.times=s.times,this.evaluateSolution(r),this.logger.debug("loss:",r.loss),e=!e||r.losse/s.times)),e}evaluateSolution(e){e.loss=0;const t=e.events.reduce((e,t)=>({...e,[t.id]:{...t,...this.eventMap[t.id]}}),{}),s=e.events.filter(e=>Number.isFinite(e.tick)).map(e=>t[e.id]),i=s.reduce((e,t)=>(e[t.staff]=e[t.staff]||[],e[t.staff].push(t),e),{});Object.values(i).forEach(t=>{t.sort((e,t)=>e.x-t.x).slice(0,t.length-1).forEach((s,i)=>{t[i+1].tick{if(Number.isFinite(s.tick)&&!e.voices.every(e=>!e.includes(s.id))||(e.loss+=100*t[s.id].confidence),s.timeWarp){const{numerator:e,denominator:i}=s.timeWarp,n=t[s.id].shrinkness;r.set(e,Math.max(r.get(e)||0,1-n)),r.set(i,Math.max(r.get(i)||0,1-n))}});const n=Oe(e.duration,this.eventMap[0].duration);r.set(n.numerator,Math.max(r.get(n.numerator)||0,1-this.eventMap[0].shrinkness)),r.set(n.denominator,Math.max(r.get(n.denominator)||0,1-this.eventMap[0].shrinkness));for(const[t,s]of r.entries())t>1&&(e.loss+=Math.log(t)*s);let a=0,o=0;e.voices.forEach(s=>{console.assert(t[s[0]],"invalid voice:",s,Object.keys(t));const i=Math.abs(t[s[0]].tick),r=t[s[s.length-1]].endTick;a+=Math.max(0,i+e.duration-r);let n=null;s.forEach(e=>{const s=t[e];s.staff!==n&&(null!==n&&++o,n=s.staff)})}),e.loss+=10*a/ms,e.loss+=5**o-1;const c=[...s].sort((e,t)=>e.x-t.x),l=c.slice(1).map((t,s)=>{const i=c[s],r=t.x-i.x,n=t.tick-i.tick;if(!n)return r/this.xSpan;return(4*Math.atan2(n/e.duration,r/this.xSpan)/Math.PI-1)**2}),u=Math.max(...l,0);e.loss+=u**2,console.assert(e.loss>=0,"Invalid solution loss!!!",e.loss,r,a,o),e.loss<0&&(e.loss=1/0)}}class PatchMeasure extends SimpleClass{constructor(e){super(),Object.assign(this,e)}get staffN(){return Math.floor(Math.log2(this.staffMask))+1}get basics(){return Array(this.staffN).fill(this.basic)}get duration(){return Math.max(0,...this.voices.map(e=>e.map(e=>this.events.find(t=>t.id===e)).reduce((e,t)=>e+t.duration,0)))}}PatchMeasure.className="PatchMeasure",function(e){e[e.PAD=0]="PAD",e[e.BOS=1]="BOS",e[e.EOS=2]="EOS",e[e.CHORD=3]="CHORD",e[e.REST=4]="REST"}(ps||(ps={}));class EventCluster extends SimpleClass{constructor(e){super(),super.assign(e)}get regular(){return this.elements.some(e=>[ps.CHORD,ps.REST].includes(e.type)&&!e.fake)&&this.elements.every(e=>[e.x,e.y1,e.y2,e.tick].every(Number.isFinite))&&this.elements.slice(1).every((e,t)=>e.fake||this.elements[t].fake||e.grace||this.elements[t].grace||e.fullMeasure||this.elements[t].fullMeasure||e.tick<=this.elements[t].tick||e.x>this.elements[t].x)}get grant(){return this.annotation&&this.annotation.grant}get feature(){return{index:this.index,elements:this.elements}}get estimatedDuration(){const e=this.elements.find(e=>e.type===ps.EOS),t=e?.predisposition?e.predisposition?.tick:e?.tick;return Number.isFinite(t)?t:this.duration}assignPrediction(e){console.assert(e.index===this.index,"index mismatch:",e.index,this.index),this.matrixH=e.matrixH,e.elements.forEach(e=>{const{index:t,...s}=e,i=this.elements.find(e=>e.index===t);console.assert(i,"element not found:",t),i&&(i.predisposition=s)})}}EventCluster.className="EventCluster",EventCluster.blackKeys=["id"];class EventClusterSet extends SimpleClass{constructor(e){super(),super.assign(e)}trimIrregular(){let e=0;return this.clusters=this.clusters.filter(t=>{const s=t.regular;return s||(console.debug("irregular cluster:",t),++e),s}),e?console.debug("Irregular clusters trimmed:",`${e}/${this.clusters.length+e}`):console.debug(`The EventClusterSet (${this.clusters.length}) is fine.`),e}}EventClusterSet.className="EventClusterSet",function(e){e.computeMeasureTicks=e=>{const t=(e=>{const t=new Map;return e.rows.forEach(e=>{if(1===e.events.length){const t=e.events[0];t.rest&&0===t.division&&(t.rest="R")}}),e.events.forEach(e=>{const s=Math.round(10*e.pivotX)/10;let i=0;i=e.fullMeasureRest?Math.min(s,...t.keys()):[...t.keys()].find(s=>{const i=t.get(s),r=Math.min(...i.map(e=>e.left)),n=Math.max(...i.map(e=>e.right));return Math.min(n,e.right)-Math.max(r,e.left)>.62*w.NoteheadS1})||s,e.roundX=i;const r=t.get(i)||[];t.set(i,r),r.push(e)}),t})(e);let s=0;const i=new Set([s]),r=[...t.entries()].sort(([e],[t])=>e-t);for(const[e,t]of r)t.forEach(e=>{e.predisposition&&(e.rest=e.rest&&e.predisposition.fullMeasure>.5?"R":e.rest,e.grace=e.predisposition.grace?Ve.Grace:null,e.division=$e(e.predisposition.divisionVector),e.dots=$e(e.predisposition.dotsVector),e.predisposition.timeWarped>.5&&(e.timeWarp=_e(2,3))),e.fullMeasureRest?e.tick=0:(e.zeroHolder&&(s-=e.duration),!e.zeroHolder&&e.predisposition&&Number.isInteger(e.predisposition.tick)?e.tick=e.predisposition.tick:e.tick=s,i.add(e.tick+e.duration))}),i.delete(s),i.size&&(s=Math.min(...i));Number.isInteger(e.estimatedDuration)?e.duration=e.estimatedDuration:e.duration=Math.max(...i,0)},e.computeMeasureVoices=e=>{e.voices=[];for(const t of e.rows){const s=t.events.filter(e=>!(e.grace||e.tremoloCatcher||e.fullMeasureRest||e.predisposition&&e.predisposition.fake>.5)),i=new Set(s);for(;i.size;){let t=0;const r=[],n=e=>{r.push(e.id),e.zeroHolder||(t+=e.duration),i.delete(e)},a=s.find(e=>i.has(e));for(a.alignedTick>0&&(t=a.alignedTick),n(a);;){const e=s.find(e=>i.has(e)&&e.alignedTick===t);if(!e)break;n(e)}e.voices.push(r)}}}}(gs||(gs={}));var ys;!function(e){const t=1921920,s=.7071067811865475,i=[[null,null],[null,ze.Open],[ze.Open,ze.Continue],[ze.Open,ze.Close],[ze.Continue,ze.Continue],[ze.Continue,ze.Close],[ze.Close,null],[ze.Close,ze.Open]].map(e=>e.join("-")),r=(e,t)=>{if(!e.events.length)return{events:[],voices:[],duration:0};return new Solver(e,t).solve()};e.estiamteMeasure=e=>{const r=e.events.filter(e=>!e.zeroHolder).map(s=>({id:s.id,staff:s.staff,x:s.x,tickEstimated:s.predisposition&&Number.isFinite(s.predisposition.tick)?s.predisposition.tick:s.x,tipX:s.tipX,y:s.tipY+100*s.staff,duration:s.mainDuration*t/je,division:s.division,dots:s.dots,stemDirection:s.stemDirection,beam:s.beam,rest:s.rest,pR:"R"===s.rest?1:"r"===s.rest&&0===s.division?Math.tanh(s.x-e.eventStartX):0,fakeP:s.predisposition&&s.predisposition.fakeP||0,shrinkness:s.predisposition?s.predisposition.timeWarped:null}));let n=t*e.timeSignature.numerator/e.timeSignature.denominator;Number.isFinite(e.estimatedDuration)&&(n=Math.max(n,Ne(e.estimatedDuration,480480)));const a=e.staffGroups.reduce((e,t,s)=>(t.forEach(t=>e[t]=s),e),{}),o=[0,...r.map(e=>e.id)],c=r.map(t=>({...t,id:o.indexOf(t.id),x:t.x-e.startX,confidence:(1-t.pR)*(1-t.fakeP),shrinkness:Number.isFinite(t.shrinkness)?t.shrinkness:Math.tanh((t.division-.1*t.dots)/4),staffGroup:a[t.staff]})),l=Array(o.length+1).fill(null).map(()=>Array(o.length).fill(0)),u=Array(o.length).fill(null).map(()=>Array(o.length).fill(0)),h=e=>S.default(e/1.6)*S.default(1.6/e);for(const t of c){for(const e of c){if(u[t.id][e.id]=t!==e&&t.tickEstimated>=e.tickEstimated?1-S.default((t.tickEstimated-e.tickEstimated)*s/.6):0,t.staffGroup!==e.staffGroup)l[t.id][e.id]=0;else if(t.x<=e.x)l[t.id][e.id]=0;else{const s=Math.exp(2*-Math.abs(t.staff-e.staff)),i=t.staff===e.staff?Math.exp(-Math.abs(t.y-e.y)/16):1,r=t.x-e.x,n=t.tipX-e.tipX;l[t.id][e.id]=(s*i*Math.min(h(r),h(n)))**(1/3)}const r=(1-t.pR)*(1-e.pR);u[t.id][e.id]*=r,l[t.id][e.id]*=r,u[t.id][e.id]<.01&&(u[t.id][e.id]=0),t.stemDirection&&e.stemDirection&&t.stemDirection!==e.stemDirection&&(l[t.id][e.id]*=.9),t.rest||e.rest||i.includes([e.beam,t.beam].join("-"))||(l[t.id][e.id]*=.2)}l[o.length][t.id]=h(e.width-t.x)**(1/3)}return{ids:o,events:c,expectedDuration:n,measureShrinkness:0,endX:e.position.right,matrixH:l,matrixV:u}},e.regulateMeasure=async(s,{solver:i=null,...n})=>{const a=e.estiamteMeasure(s),{ids:o,matrixH:c,matrixV:l}=a;if(s.matrixH){console.assert(s.matrixH.length>o[o.length-1]&&s.matrixH[0].length>o[o.length-1],"matrix shape mismatch:",o.length,`${s.matrixH.length}x${s.matrixH[0].length}`,`${c.length}x${c[0].length}`);for(let e=0;ee.forEach((e,i)=>{const r=s.matrixV[o[t]][o[i]];Number.isFinite(r)&&(l[t][i]=r)})),Number.isFinite(s.estimatedDuration)&&(a.measureShrinkness=Math.tanh(-3*Math.log(Math.min(1,s.estimatedDuration/s.duration)))),n.logger&&n.logger.info("--- MEASURE",s.measureIndex,"---",a);const u=i?await i(a,n):r(a,n),h=u.events.map(e=>({...e,id:a.ids[e.id]}));h.forEach(e=>{const i=s.events.find(t=>t.id===e.id);i.tick=Number.isFinite(e.tick)?Math.round(e.tick*je/t):null,i.tickGroup=e.tickGroup,i.timeWarp=e.timeWarp}),s.duration=Math.round(u.duration*je/t),s.voices=u.voices.map(e=>e.map(e=>a.ids[e])),s.solutionStat={loss:u.loss,solverCredits:u.credits,solverTimes:u.times},s.events.forEach(e=>{const t=h.find(t=>t.id===e.id);t&&(Number.isFinite(t.tick)||"r"!==e.rest||0!==e.division?"R"===e.rest&&(e.tick=0,e.tickGroup=0,e.duration=s.duration,s.voices.push([e.id])):(e.tick=0,e.tickGroup=0,e.rest="R",e.duration=s.duration,s.voices.push([e.id])))})},e.regulateMeasureWithRectification=async(e,i,{solver:n=null,...a})=>{const o=e.events.filter(e=>!e.zeroHolder).map(s=>{const r=i.events.find(e=>e&&e.id===s.id),n=Number.isFinite(r?.division)?r.division:s.division,a=Number.isFinite(r?.dots)?r.dots:s.dots,o=t*2**-n*(2-2**-a);return{id:s.id,staff:s.staff,x:s.x,tickEstimated:s.predisposition?.tick,y:s.tipY+100*s.staff,duration:o,pR:"R"===s.rest?1:"r"===s.rest&&0===s.division?Math.tanh(s.x-e.eventStartX):0,fakeP:s.predisposition&&s.predisposition.fakeP||0,shrinkness:s.predisposition?.timeWarped||0}});let c=t*e.timeSignature.numerator/e.timeSignature.denominator;Number.isFinite(e.estimatedDuration)&&(c=Math.max(c,Ne(e.estimatedDuration,480480)));const l=e.staffGroups.reduce((e,t,s)=>(t.forEach(t=>e[t]=s),e),{}),u=[0,...o.map(e=>e.id)],h=o.map(t=>({...t,id:u.indexOf(t.id),x:t.x-e.startX,confidence:(1-t.pR)*(1-t.fakeP),shrinkness:t.shrinkness,staffGroup:l[t.staff]})),m=Array(u.length+1).fill(null).map(()=>Array(u.length).fill(0)),f=Array(u.length).fill(null).map(()=>Array(u.length).fill(0));for(const e of h)for(const t of h){f[e.id][t.id]=e!==t&&e.tickEstimated>=t.tickEstimated?1-S.default((e.tickEstimated-t.tickEstimated)*s/.6):0;const i=(1-e.pR)*(1-t.pR);f[e.id][t.id]*=i,f[e.id][t.id]<.01&&(f[e.id][t.id]=0)}console.assert(e.matrixH&&e.matrixH.length>u[u.length-1]&&e.matrixH[0].length>u[u.length-1],"matrix shape mismatch:",u.length,`${e.matrixH.length}x${e.matrixH[0].length}`,`${m.length}x${m[0].length}`);for(let t=0;t{const a=i.events.find(t=>t&&t.id===e),o=Number.isFinite(s)?Math.round(s*je/t):s;return{id:e,tick:o,tickGroup:r,timeWarp:n,division:a?.division,dots:a?.dots}}),x=Math.round(g.duration*je/t);return{events:v,voices:g.voices,duration:x,priority:y}}}(ys||(ys={}));class SpartitoMeasure extends SimpleClass{static reorderEvents(e,t){const s=[],i=e.map(e=>({id:e.id,staff:e.staff,x:e.x/.7,rx:0,ry:t[e.staff]+e.tipY,tipY:e.tipY,prior:0}));i.sort((e,t)=>e.x-t.x),i.slice(1).forEach((e,t)=>{const s=Math.min(Math.round(e.x-i[t].x),2);e.rx=i[t].rx+s}),i.forEach(e=>{e.prior=1e4*e.staff+e.rx+.01*e.tipY,s.includes(e.ry)||s.push(e.ry)}),i.sort((e,t)=>e.prior-t.prior),s.sort((e,t)=>e-t);let r=0;const n=s.map((e,t)=>(!t||s[t]-s[t-1]<.5||++r,r)),a=i.map(t=>new EventTerm({...e.find(e=>e.id===t.id),intX:t.rx,intY:n[s.indexOf(t.ry)]}));return a.forEach((e,t)=>e.id=t+1),a}constructor(e){super(),super.assign(e),this.originalRegulationHash||this.regulated||(this.originalRegulationHash=this.regulationHash),this.barTypes=this.barTypes||{},this.regulated&&this.position&&this.postRegulate()}get timeSignature(){return this.basics&&this.basics[0].timeSignature}get keySignature(){return this.basics&&this.basics[0].keySignature}get timeSignatureChanged(){return this.contexts.filter(Boolean)[0].some(e=>[Ue.TimeSignatureC,Ue.TimeSignatureN].includes(e.type))}get doubtfulTimesig(){return this.basics&&this.basics[0].doubtfulTimesig}get regulated(){return!!this.voices}get validRegulated(){return!!this.voices&&this.voices.flat(1).every(e=>Number.isFinite(this.events.find(t=>t.id===e)?.tick))}get rows(){return this.contexts.map((e,t)=>({events:this.events.filter(e=>e.staff===t),contexts:e}))}get eventStartX(){return this.events.length?Math.min(...this.events.map(e=>e.x)):this.startX}get startX(){return this.position.left}get width(){return this.position.right-this.position.left}get tickMap(){return this.events.concat([this.endEvent]).filter(Boolean).reduce((e,t)=>(Number.isFinite(t.tick)&&(e.has(t.tick)||e.set(t.tick,[]),e.get(t.tick).push(t)),e),new Map)}get tickToX(){return[...this.tickMap.entries()].reduce((e,[t,s])=>{if((s=s.filter(e=>!e.fullMeasureRest&&!e.grace)).length){const i=Math.min(...s.map(e=>e.x));e[t]=i}return e},{})}get tickRates(){const e=this.events.filter(e=>Number.isFinite(e.tick)&&!e.fullMeasureRest);return e.sort((e,t)=>e.x-t.x),e.slice(0,e.length-1).map((t,s)=>{const i=e[s+1];return(i.tick-t.tick)/Math.max(i.x-t.x,.001)})}get tickRatesInStaves(){const e=this.events.filter(e=>Number.isFinite(e.tick)&&!e.fullMeasureRest&&!e.grace).reduce((e,t)=>(e[t.staff]=e[t.staff]||[],e[t.staff].push(t),e),{}),t=Object.values(e).map(e=>e.sort((e,t)=>e.x-t.x).slice(0,e.length-1).map((t,s)=>{const i=e[s+1];return(i.tick-t.tick)/Math.max(i.x-t.x,.001)}));return[].concat(...t)}get tickRatesInGroups(){const e=this.events.filter(e=>Number.isFinite(e.tick)&&!e.fullMeasureRest).reduce((e,t)=>{const s=this.staffGroups.findIndex(e=>e.includes(t.staff));return e[s]=e[s]||[],e[s].push(t),e},{}),t=Object.values(e).map(e=>e.sort((e,t)=>e.x-t.x).slice(0,e.length-1).map((t,s)=>{const i=e[s+1];return(i.tick-t.tick)/Math.max(i.x-t.x,.001)}));return[].concat(...t)}get tickTwist(){if(!this.duration||!this.staffGroups)return;const e=this.events.filter(e=>Number.isFinite(e.tick)&&!e.fullMeasureRest&&!e.grace&&!e.tremoloCatcher&&!(e.rest&&0===e.division)).reduce((e,t)=>{const s=this.staffGroups.findIndex(e=>e.includes(t.staff));return e[s]=e[s]||[],e[s].push(t),e},{}),t=Object.values(e).map(e=>{const t=[...e].sort((e,t)=>e.pivotX-t.pivotX),s=this.position.right-t[0].x,i=t.slice(1).map((e,i)=>{const r=t[i],n=e.pivotX-r.pivotX,a=e.tick-r.tick;if(!a)return n/s;return(4*Math.atan2(a/this.duration,n/s)/Math.PI-1)**2});return Math.max(0,...i)});return Math.max(0,...t)}get eventMap(){return this.events.reduce((e,t)=>(e[t.id]=t,e),{})}get empty(){return!this.events?.length||!this.voices?.length}get hasIllEvent(){return this.regulated&&this.events.some(e=>!e.zeroHolder&&!Number.isFinite(e.tick)&&!e.fullMeasureRest)}get brief(){return[`${this.timeSignature.numerator}/${this.timeSignature.denominator}`,...this.events.map(e=>[e.staff,e.intX,Math.round(e.tip?e.tip.y:e.ys?.[0]??0),e.fullMeasureRest?0:e.division,e.fullMeasureRest?0:e.dots,e.rest?"r":"",e.grace||"",e.stemDirection,e.beam||""].join("|"))].join("\n")}get regulationHash(){return y.default(this.brief)}get regulationHash0(){return this.originalRegulationHash||this.regulationHash}get regulationHashes(){return Array.from(new Set([this.originalRegulationHash,this.regulationHash].filter(Boolean)))}get featureWords(){if(!this.regulated||!this.voices||!this.voices.length)return null;const e=this.tickRatesInStaves.some(e=>e<0),t=this.events.filter(e=>!e.zeroHolder&&!e.rest).map(e=>e.ys).flat(1).map(e=>"Y"+2*-e),s=Array.from(new Set(t));this.keySignature&&s.push(`K${this.keySignature}`);const i=this.voices.map(e=>e.map(e=>this.events.find(t=>t.id===e)).filter(e=>!e.zeroHolder&&!e.rest)).filter(e=>e.length),r=e?[]:i.map(e=>e.map(e=>e.scaleChord).join("-")),n=e?[]:i.map(e=>e.map(e=>e.division).join(""));return this.timeSignature&&n.push(`T${this.timeSignature.numerator}/${this.timeSignature.denominator}`),[s,r,n]}get barType(){if(this.voltaEnd)return"VoltaRight";const e=Object.entries(this.barTypes).sort((e,t)=>t[1]-e[1]);return e[0]&&e[0][1]>=1?e[0][0]:null}get partialDuration(){if(!Number.isFinite(this.duration))return!1;const e=Ae(je,this.timeSignature);return this.duration{const t=e.events.filter(e=>e.grace);if(!t.length)return;const s=[...e.tickMap.entries()].reduce((e,[t,s])=>(s.forEach(s=>{if(!s.grace){e[s.staff]=e[s.staff]||{};const i=e[s.staff][t];e[s.staff][t]=!i||i.x>s.x?s:i}}),e),{}),i=Object.entries(s).reduce((t,[s,i])=>{t[s]=Object.entries(i).map(([e,t])=>({event:t,tick:Number(e),preTick:-240,graces:[]})).sort((e,t)=>e.event.x-t.event.x),t[s].push({tick:e.duration,event:e.endEvent,preTick:0,graces:[]});let r=0;return t[s].forEach(e=>{e.tick>r&&(e.preTick=r,r=e.tick)}),t},{});t.forEach(e=>{const t=i[e.staff];if(t){const s=t.find(t=>t.event.x>e.x);s&&s.graces.push(e),e.roundX=e.x}}),Object.values(i).forEach(e=>e.forEach(e=>{if(e.graces.length){e.event.graceIds=e.graces.map(e=>e.id);const t=e.graces.reduce((e,t)=>e+t.duration,0),s=Math.min(t,e.tick-e.preTick)/t;let i=e.tick;[...e.graces].reverse().forEach(e=>{e.tick=Math.round(i-e.duration*s),i=e.tick})}}))})(this),(e=>{const t=e.events.filter(e=>e.tremoloCatcher&&!e.grace),s=e.events.filter(e=>e.tremoloLink===qe.Pitcher&&!e.grace);t.forEach(t=>{let i=s.filter(e=>e.division===t.division&&e.xNumber.isFinite(e.tick)&&!e.grace&&!e.rest&&e.division===t.division&&e.dots===t.dots&&e.xt.x-e.x),i.length){const e=i[0];e.catcherId=t.id;const r=Math.max(e.tremolo||3,t.tremolo||3);e.tremolo=r,t.tremolo=r,t.tick||(t.tick=e.tick+e.duration/2);const n=s.indexOf(e);n>=0&&s.splice(n,1)}})})(this),this.updateContextTick()}updateRoundX(){const e=this.tickToX;e&&this.events.forEach(t=>{const s=e[t.tick];Number.isFinite(s)&&(t.roundX=s)})}updateContextTick(){if(!this.staffGroups)return;const e=this.contexts.flat(1);this.staffGroups.flat(1).forEach(t=>{const s=[...this.events.filter(e=>e.staff===t),...e.filter(e=>e.staff===t)];s.sort((e,t)=>t.x-e.x);let i=this.duration;s.forEach(e=>{e instanceof EventTerm?e.fullMeasureRest||e.zeroHolder||(i=e.tick):e instanceof ContextedTerm&&(e.tick=i)})})}asSolution(e=void 0){return this.regulated?{events:this.events.map(t=>{const s={id:t.id,tick:t.tick,tickGroup:t.tickGroup,timeWarp:t.timeWarp};if(e){const i=e.events.find(e=>e.id===t.id);i&&(t.division!==i.division&&(s.division=t.division),t.dots!==i.dots&&(s.dots=t.dots),t.grace!==i.grace&&(s.grace=!!t.grace),t.beam!==i.beam&&(s.beam=t.beam),t.fullMeasureRest!==i.fullMeasureRest&&(s.fullMeasure=t.fullMeasureRest))}return s}),voices:this.voices,duration:this.duration,priority:-this.solutionStat?.loss}:null}applySolution(e){e.timeSignature&&this.basics.forEach(t=>{t.timeSignature=e.timeSignature,t.doubtfulTimesig=!1}),this.voices=e.voices,this.duration=e.duration,this.events.forEach(t=>{t.timeWarp=null,t.tick=null,t.tickGroup=null;const s=e.events?.find(e=>e.id===t.id);s&&(t.tick=s.tick,t.timeWarp=s.timeWarp,t.tickGroup=s.tickGroup,Number.isFinite(s.division)&&(t.division=s.division),Number.isFinite(s.dots)&&(t.dots=s.dots),s.beam&&(t.beam=s.beam),void 0!==s.grace&&(t.grace=s.grace?Ve.Grace:void 0),s.fullMeasure&&(t.rest="R"))}),Number.isFinite(e.priority)&&(this.solutionStat={loss:-e.priority}),this.postRegulate()}cleanupRegulation(){this.voices=null,this.duration=null,this.events.forEach(e=>{e.tick=null,e.tickGroup=null,e.timeWarp=null})}regulateTest(){this.duration=0,this.voices=this.rows.map(e=>e.events.map(e=>e.id)),this.voices.forEach(e=>{let t=0;e.map(e=>this.events.find(t=>t.id===e)).forEach((e,s)=>{e.tickGroup=s,e.tick=t,t+=e.duration}),this.duration=Math.max(this.duration,t)})}regulateSimple(){gs.computeMeasureTicks(this),gs.computeMeasureVoices(this)}async regulateEquations(e){await ys.regulateMeasure(this,e)}async regulate({policy:e="advanced",...t}={}){switch(e){case"test":this.regulateTest();break;case"equations":case"advanced":await this.regulateEquations(t);break;default:this.regulateSimple()}this.postRegulate()}createPatch(){return new PatchMeasure({measureIndex:this.measureIndex,staffMask:this.staffMask,basic:this.basics[0],events:this.events,contexts:this.contexts,marks:this.marks,voices:this.voices})}createClusters(){const e=this.voices&&new Set(this.voices.flat(1));return this.staffGroups.filter(e=>e.length).map(t=>{const s=this.position.staffYs[0],i=e=>this.position.staffYs[t.indexOf(e)]-s,r=this.events.filter(e=>t.includes(e.staff));if(!r.length)return null;const n=r.map(s=>({index:s.id,voice:(this.voices||[]).findIndex(e=>e.includes(s.id)),type:s.rest?ps.REST:ps.CHORD,staff:t.indexOf(s.staff),x:s.tipX,pivotX:s.pivotX,y1:i(s.staff)+("u"===s.stemDirection?s.tipY:s.ys[s.ys.length-1]),y2:i(s.staff)+("u"===s.stemDirection?s.ys[0]:s.tipY),headY:"u"===s.stemDirection?s.ys[0]:s.ys[s.ys.length-1],feature:s.feature,division:s.division,dots:s.dots,beam:s.beam||null,stemDirection:s.stemDirection,grace:!!s.grace,tremoloCatcher:s.tremoloCatcher,timeWarped:!!s.timeWarp,fullMeasure:s.fullMeasureRest,tick:s.tick||0,fake:!s.fullMeasureRest&&!s.grace&&this.voices&&!e.has(s.id)}));if(!n.some(e=>!e.fake))return null;const a=Ae(je,this.timeSignature);n.unshift({index:0,type:ps.BOS,staff:null,division:null,beam:null,dots:null,stemDirection:null,grace:!1,tremoloCatcher:!1,fullMeasure:!1,x:this.position.left,pivotX:this.position.left,y1:0,y2:0,headY:0,feature:null,timeWarped:this.durationn.map(()=>0)),this.voices.forEach(e=>{let t=0;e.forEach(e=>{const s=n.findIndex(t=>t.index===e);s>0&&t>=0&&(o[s][t]=1),t=s}),t>=0&&(o[n.length-1][t]=1)}));const c={...this.solutionStat,patched:this.patched},l=this.backgroundImages&&this.backgroundImages.map(({url:e,position:t})=>({url:e,position:{...t,y:t.y-s}}));return new EventCluster({index:this.measureIndex,duration:this.duration,signatureDuration:a,staffY0:s,elements:n,matrixH:o,annotation:c,backgroundImages:l})}).filter(Boolean)}applyClusters(e){const t=this.events.reduce((e,t)=>Math.max(e,t.id),0)+1;this.matrixH=Array(t+1).fill(null).map(()=>Array(t).fill(0)),e.forEach(e=>{const s=e.elements.map(e=>e.index);console.assert(e.matrixH.length===s.length-1,"unexpected matrixH size:",e.matrixH.length,s.length);for(let i=1;i{const t=this.events.find(t=>t.id===e.index);t&&(t.predisposition=e.predisposition,void 0!==t.predisposition.grace&&(t.grace=t.predisposition.grace?Ve.Grace:null))})}),this.estimatedDuration=e.reduce((e,t)=>e+t.estimatedDuration,0)/e.length}}SpartitoMeasure.className="SpartitoMeasure",SpartitoMeasure.blackKeys=["staffGroups","solutionStat","measureNumber","deposit"];const vs=(e,t=!1)=>({empty:!0,duration:e.duration,tickMap:{0:EventTerm.space({duration:e.duration,tick:0})},timeSignature:e.timeSignature,timeSigNumeric:e.timeSigNumeric,keySignature:e.keySignature,contextedTerms:e.terms.filter(e=>e instanceof ContextedTerm&&(!e.staffLevel||t)),marks:[]}),xs=e=>{const t=[].concat(...e.measures.map(e=>Object.values(e.tickMap).filter(e=>e instanceof EventTerm)));for(let e=1;ee.type===B.SlurBegin)&&i.accessories.some(e=>e.type===B.SlurEnd)){const e=s.pitches.filter(e=>i.pitches.some(t=>t.note===e.note&&t.alter===e.alter));e.length>0&&(s.tying=!0,i.tied=!0,e.forEach(e=>{e.tying=!0;i.pitches.find(t=>t.note===e.note&&t.alter===e.alter).tied=!0}),e.forEach(()=>{const e=s.accessories.findIndex(e=>e.type===B.SlurBegin);e>=0&&s.accessories.splice(e,1);const t=i.accessories.findIndex(e=>e.type===B.SlurEnd);t>=0&&i.accessories.splice(t,1)}))}}};class Spartito extends SimpleClass{constructor(e){super(),super.assign(e),this.measures.forEach(e=>e.staffGroups=this.staffGroups)}get regulated(){return this.measures.every(e=>e.regulated)}get solidMeasureCount(){return this.measures.filter(e=>!e.empty).length}get measureIndexMapping(){let e=0;return this.measures.map(t=>t.empty?null:e++)}get headBPM(){for(const e of this.measures)if(e.marks){const t=e.marks.find(e=>e instanceof TempoTerm&&e.isValid());if(t)return t.bpm}return null}get measureLayoutCode(){const e=this.measures.filter(e=>!e.empty).map((e,t)=>({index:t+1,vb:e.voltaBegin,ve:e.voltaEnd,alter:e.alternative,leftSign:"",rightSign:""}));return e.forEach((t,s)=>{if(t.vb){const i=e.slice(s+1).findIndex(e=>e.vb),r=i>=0?s+i:e.length;e.slice(s,r-1).some(e=>e.ve)&&(t.leftSign="2*[")}if(t.ve){const i=e.slice(0,s+1).reverse(),r=i.slice(1).findIndex(e=>e.ve);if(r>=0&&!i.slice(1,r+1).some(e=>e.vb))return;if(t.alter){const r=i.findIndex(e=>!e.alter);r>0&&(i[r].rightSign="]",i[r-1].leftSign="{[",t.rightSign="],",e[s+1]&&(e[s+1].rightSign="},"))}else t.rightSign="],";i.some(e=>e.vb)||(e[0].leftSign="2*[")}}),e.map(e=>e.leftSign+e.index.toString()+e.rightSign+(e.rightSign?"":",")).join(" ").replace(/,$/,"")}get qualityScore(){const e=this.measures.filter(e=>!e.empty),t=e.map(Ke).map(e=>e.qualityScore).reduce((e,t)=>e+t,0);return e.length?t/e.length:null}dumpEvaluations(){const e=this.measures.filter(e=>!e.empty).map(e=>({measureIndex:e.measureIndex,...Ke(e)})),t=e.map(e=>e.qualityScore).reduce((e,t)=>e+t,0);console.log("qualityScore:",t/e.length),console.table(e)}regulate(e={}){this.measures.forEach(t=>t.regulated||t.regulate(e))}cleanupRegulation(){this.measures.forEach(e=>e.voices=null)}rectifyTimeSignatures(e=new DummyLogger){const t=this.measures.map((e,t)=>({measure:e,index:t})).filter(({measure:e,index:t})=>!t||e.timeSignatureChanged).map(({index:e})=>e);t.map((e,s)=>this.measures.slice(e,se.filter(e=>e.estimatedDuration>0)).filter(e=>e.length>=3||e.some(e=>e.doubtfulTimesig)).forEach(t=>{if(t[0].patched){const s=t[0].timeSignature,i=t.slice(1).filter(e=>!e.patched&&Be(e.timeSignature)!==Be(s));if(i.length){const t=i[0].timeSignature;i.forEach(e=>e.basics.forEach(e=>e.timeSignature=s)),e.info("[rectifyTimeSignatures]\ttimesignator overwrote by patched head:",`${Be(t)} -> ${Be(s)}`,i.map(e=>e.measureIndex))}return}const s=t[0].timeSignature,i=Number.isInteger(Math.log2(s.denominator));let r=i?4:8;i&&(r=Math.max(r,t[0].timeSignature.denominator));const n=t.map(e=>Math.round(e.estimatedDuration*r/je)),a=Object.entries(n.reduce((e,t)=>(e[t]=(e[t]||0)+1,e),{})).sort((e,t)=>t[1]-e[1]),o=a[0][1],c=a.filter(([e,t])=>t>.6*o).reduce((e,t)=>Number(t[0])>Number(e[0])?t:e);if(c[1]>1){let n=Number(c[0]);if(!i||s.denominator*n!==s.numerator*r){if(i&&r!==s.denominator){const e=n*s.denominator/r;Number.isInteger(e)&&(n=e,r=s.denominator)}const a=t.filter(e=>!e.patched),o=_e(n,r);a.forEach(e=>e.basics.forEach(e=>e.timeSignature=o)),e.info("[rectifyTimeSignatures]\ttimesignator overwrote by estimation:",`${Be(s)} -> ${n}/${r}`,a.map(e=>e.measureIndex))}}})}makeVoiceStaves(){this.regulate();const e=Math.max(...this.measures.map(e=>e.voices.length));if(!e||!Number.isFinite(e))return null;this.measures.filter(e=>e.patched).forEach(e=>{e.events.forEach(e=>{e.tied&&e.pitches.forEach(e=>e.tied=!0)})});const t=this.measures.map(t=>{console.assert(t.validRegulated,"[makeVoiceStaves] measure is invalid:",t);const s={};t.events.forEach(e=>s[e.id]=e);const i=new Set(Array(t.contexts.length).fill(null).map((e,t)=>t));let r=null;if(t.barType)switch(t.barType){case"Segment":r="||";break;case"Terminal":r="|."}const n=t.voices.map(e=>{const n=e.map(e=>s[e]);n.sort((e,t)=>e.tick-t.tick);const a={};let o=0,c=null;for(const e of n)Number.isFinite(e?.tick)?(e.tick>o?a[o]=EventTerm.space({tick:o,duration:e.tick-o}):!e.grace&&e.tick{const s=t.eventMap[e];s&&(a[s.tick]=s)}))):console.warn("invalid event tick:",e);t.endEvent&&t.endEvent.graceIds&&t.endEvent.graceIds.forEach(e=>{const s=t.eventMap[e];!s||c&&s.staff!==c.staff||(a[s.tick]=s)}),ot.duration&&Number.isFinite(t.duration)&&(c.timeWarp=Oe(t.duration-c.tick,c.duration)),console.assert(!c||!c.timeWarp||Number.isInteger(c.timeWarp.numerator)&&Number.isInteger(c.timeWarp.denominator),"invalid time warp:",c);const l=n[0]?n[0].staff:0;i.delete(l);const u=t.basics[l],h=t.contexts[l],m=n[n.length-1],f=m?m.staff:0;return{tickMap:a,duration:t.duration,...u,contextedTerms:h,marks:[],break:t.break,pageBreak:t.pageBreak,headStaff:l,tailStaff:f,bar:r}});for(;n.lengtht.headStaff!==e),o=vs({terms:r,duration:t.duration,...s,break:t.break,pageBreak:t.pageBreak},a);o.headStaff=e,o.tailStaff=e,n.push(o)}return n});t.forEach(e=>e.forEach(e=>{const t=[];e.empty||(t.push(`s${e.headStaff}`),t.push(`s${e.tailStaff}`)),Object.values(e.tickMap).forEach(e=>{if(e instanceof EventTerm){if(t.push(`s${e.staff}`),e.stemDirection){const s=`st${e.staff}-${e.stemDirection}`;t.push(s,s)}e.grace?t.push(`gd${e.mainDuration}`):t.push(`d${e.mainDuration}`),e.rest?t.push("r-"+e.rest):e.pitches.forEach(e=>{t.push(`p1-${e.note}`),t.push(`p8-${Math.round(e.note/8)}`)})}}),e.trait=HashVector.fromWords(t)}));const s=this.staffGroups.flat(1).reduce((e,t)=>(e[t]=this.staffGroups.findIndex(e=>e.includes(t)),e),{}),i=Array(e).fill(null).map((e,t)=>({vector:HashVector.zero,index:t,weight:0,headStaff:null}));t.forEach((e,t)=>{i.sort((e,t)=>t.weight-e.weight);const r=new Set(e);i.forEach(e=>{const i=[...r];let n=i[0];if(t>0&&i.length>1){const t=i.map(t=>s[t.headStaff]===s[e.headStaff]?ls(e.vector.toHash(),t.trait.toHash()):-1);n=i[$e(t)]}r.delete(n),n.voiceIndex=e.index,e.vector.scale(.4).add(n.trait),e.weight=Object.keys(n.tickMap).length,0===t&&(e.headStaff=n.headStaff)}),e.sort((e,t)=>e.voiceIndex-t.voiceIndex)});const r=Array(this.stavesCount).fill(null).map(()=>[]);i.forEach(e=>{r[e.headStaff].push(e.index)});const n=Array(this.stavesCount).fill(null).map((e,s)=>{if(!t[0])return{voices:[]};return{voices:r[s].map(e=>({mode:"relative",measures:t.map(t=>t[e])}))}});return(e=>{if(!e[0]||!e[0].voices[0])return void console.warn("empty voices:",e);const t=e[0].voices[0].measures.length;Array(t).fill(null).map((t,s)=>{for(const t of e)for(const e of t.voices)if(!e.measures[s].empty)return!1;return!0}).forEach((t,s)=>{t&&e.forEach(e=>e.voices.forEach(e=>{e.measures[s].tickMap={}}))})})(n),n.forEach(e=>e.voices.forEach(xs)),n}perform(){const e=this.makeVoiceStaves();if(!e)return null;const t=new Map,s=Array(this.stavesCount).fill(null).reduce((e,t,s)=>(e[s]=s,e),{}),i=[].concat(...e.map((e,t)=>e.voices.map(()=>s[t])));let r=!1,n=0,a=null;const o=this.measures.filter(e=>!e.empty).map(s=>{const{systemIndex:o,right:c}=s.position,l=s.measureIndex,u=[].concat(...e.map(e=>e.voices.map(e=>e.measures[l]))),h=u[0],m=n;n+=h.duration;const f=[].concat(...u.map((e,s)=>{const r=i[s],n=Object.values(e.tickMap).filter(e=>e instanceof EventTerm&&!e.rest).map(e=>{const s=Math.round(1*e.duration);console.assert(Number.isFinite(e.tick),"invalid event term tick:",e),console.assert(Number.isFinite(s),"invalid event term duration:",e),e.tick>=0&&e.noteIds.forEach(s=>{t.set(s,{system:o,measure:l,x:e.roundX,endX:c})});const i=this.staffGroups.findIndex(t=>t.includes(e.staff));return{tick:Math.round(1*e.tick),duration:s,pitches:e.pitches,noteIds:e.noteIds,part:i,staff:e.staff}});return[].concat(...n.map(e=>{const t=e.pitches.reduce((e,t)=>(e[Le(t)]=t,e),{});return Object.values(t).sort((e,t)=>e.note-t.note).filter(e=>!e.tied).map((t,s)=>{const i=Le(t),n=e.noteIds&&e.noteIds[s];return{tick:e.tick,pitch:i,duration:e.duration,chordPosition:{index:s,count:e.pitches.length},tied:t.tied,id:n,ids:[n],track:e.part,staff:e.staff,channel:r,subNotes:[{startTick:0,endTick:e.duration,pitch:i,velocity:127}]}})}))})),d=[];a=a||d,s.marks&&s.marks.forEach(e=>{if(e instanceof TempoTerm){const t=e.bpm;if(e.isValid()){const s=r?d:a,i=r?e.tick:0;s.push({track:0,ticks:i,data:{type:"meta",subtype:"setTempo",microsecondsPerBeat:Math.round(6e7/t)}}),r=!0}}});const p=s.basics[0];return{tick:m,duration:s.duration,notes:f,events:d,timeSignature:p&&p.timeSignature,keySignature:p&&p.keySignature}});r||o[0].events.push({track:0,ticks:0,data:{type:"meta",subtype:"setTempo",microsecondsPerBeat:5e5}});return{notation:new MetaNotation({measures:o}),tokenMap:t}}performByEstimation(){const e=new Map;let t=0;const s=this.measures.filter(e=>e.events.some(e=>e.predisposition)).map(s=>{const i=t,r=Math.round(s.estimatedDuration||Ae(je,s.timeSignature)),n=s.basics[0];t+=r;const{systemIndex:a,right:o}=s.position,c=s.measureIndex;return{tick:i,duration:r,notes:s.events.filter(e=>e.predisposition&&e.predisposition.fake<.5&&!e.rest).map(t=>{const s=Math.round(t.predisposition.tick);return t.noteIds.forEach(s=>{e.set(s,{system:a,measure:c,x:t.roundX,endX:o})}),t.pitches.map((e,i)=>{const r=Le(e),n=t.noteIds&&t.noteIds[i],a=this.staffGroups.findIndex(e=>e.includes(t.staff));return{tick:s,pitch:r,duration:t.duration,chordPosition:{index:i,count:t.pitches.length},tied:e.tied,id:n,ids:[n],track:a,staff:t.staff,channel:0,subNotes:[{startTick:0,endTick:t.duration,pitch:r,velocity:127}]}})}).flat(1),events:[],timeSignature:n&&n.timeSignature,keySignature:n&&n.keySignature}});return{notation:new MetaNotation({measures:s}),tokenMap:e}}featureHash(){const e=this.measures.slice(0,16).map(e=>e.featureWords),t=[1,4,16].map(t=>{const s=e.slice(0,t).filter(Boolean),i=s.map(e=>e[0]).flat(1),r=s.map(e=>e[1]).flat(1),n=s.map(e=>e[2]).flat(1),[a,o,c]=[i,r,n].map(HashVector.fromWords);return HashVector.concat(a,o.sub(128),c.sub(128))});return HashVector.concat(...t).toHash()}featureHashHex(){return e=this.featureHash(),Array.from(e).map(us).join("");var e}featureHashBigInt(){return e=this.featureHash(),Array.from(e).reduce((e,t)=>0x100n*e+BigInt(t),0n);var e}assignMeasureNumbers(){let e=null;for(const t of this.measures)(t.discard||t.events.length)&&(t.indent&&(e=null),Number.isFinite(e)||(e=t.partialDuration?0:1),t.measureNumber=e++)}}Spartito.className="Spartito";const Ss=[0,2,4,5,7,9,11],bs=e=>{let t=e%7;for(;t<0;)t+=7;return t},ks=e=>{let t=e%12;for(;t<0;)t+=12;return t},Ts={[-2]:"♭♭",[-1]:"♭",0:"♮",1:"♯",2:"𝄪"};class StaffContext{constructor(){this.logger=new DummyLogger,this.clef=-3,this.keyAlters=[],this.octaveShift=0,this.alters=[],this.timeSignature={numerator:4,denominator:4},this.timeSigNumeric=!1,this.timeSigNumSet=!1,this.timeSigDenSet=!1,this.doubtingTimesig=!0}change(e){switch(e.type){case Ue.Clef:this.clef=e.clef;break;case Ue.KeyAcc:this.keyAlters[bs(this.yToNote(e.y))]=e.alter;break;case Ue.Acc:this.alters[this.yToNote(e.y)]=e.alter;break;case Ue.OctaveShift:this.octaveShift=e.octaveShift;break;case Ue.TimeSignatureC:switch(this.timeSigNumeric=!1,e.tokenType){case"timesig-C44":this.timeSignature.numerator=4,this.timeSignature.denominator=4;break;case"timesig-C22":this.timeSignature.numerator=2,this.timeSignature.denominator=2}this.doubtingTimesig=this.partialTimeSignature;break;case Ue.TimeSignatureN:switch(this.timeSigNumeric=!0,e.y){case 1:this.timeSigDenSet?this.timeSignature.denominator=10*this.timeSignature.denominator+e.number:this.timeSignature.denominator=e.number,this.timeSigDenSet=!0;break;case-1:this.timeSigNumSet?this.timeSignature.numerator=10*this.timeSignature.numerator+e.number:this.timeSignature.numerator=e.number,this.timeSigNumSet=!0;break;default:this.logger.warn("unexpected time signature Y:",e.y)}this.doubtingTimesig=this.partialTimeSignature}}resetMeasure(){this.alters=[],this.timeSigNumSet=!1,this.timeSigDenSet=!1}resetSystem(){this.keyAlters=[]}get keySignature(){return this.keyAlters.filter(e=>Number.isInteger(e)).reduce((e,t)=>e+t,0)}get partialTimeSignature(){return!this.timeSigNumSet!=!this.timeSigDenSet}noteToY(e){return-e/2-this.clef-3.5*this.octaveShift}pitchToNote(e,{preferredAlter:t=null}={}){t||(t=this.keySignature<0?-1:1);const s=Math.floor((e-60)/12),i=ks(e),r=Ss.includes(i)?i:ks(i-t),n=Ss.indexOf(r);this.logger.assert(n>=0,"invalid preferredAlter:",e,t,r);const a=7*s+n,o=i-r,c=this.keyAlters[n]||0;return{note:a,alter:Number.isInteger(this.alters[a])?o:o===c?null:o}}pitchToY(e,{preferredAlter:t=null}={}){const{note:s,alter:i}=this.pitchToNote(e,{preferredAlter:t});return{y:this.noteToY(s),alter:i}}yToNote(e){return this.logger.assert(Number.isInteger(2*e),"invalid y:",e),2*(-e-3.5*this.octaveShift-this.clef)}alterOnNote(e){if(Number.isInteger(this.alters[e]))return this.alters[e];const t=bs(e);return Number.isInteger(this.keyAlters[t])?this.keyAlters[t]:0}noteToPitch(e){const t=Math.floor(e/7),s=bs(e),i=60+12*t+Ss[s]+this.alterOnNote(e);return Number.isFinite(i)?i:(this.logger.warn("invalid pitch value:",i,e,t,s),-1)}yToPitch(e){return this.noteToPitch(this.yToNote(e))}yToPitchName(e){const t=this.yToNote(e),s=Math.floor(t/7),i=bs(t);let r=this.alterOnNote(t);return r||Number.isInteger(this.alters[t])||(r=null),`${Ts[r]?Ts[r]:""}${"CDEFGAB"[i]}${s+4}`}}const ws=e=>e.reduce((e,t,s)=>t?e|1<{if(e.version<3){const{version:t,stavesCount:s,layoutTemplate:i,...r}=e;let n=s>1?Array(s-1).fill(",").join(""):"";2===s&&(n="{-}"),e={version:3,staffLayoutCode:n,...r}}return e.version<8&&(e.pages.forEach(e=>{e.systems.forEach(e=>{if(e.semantics){const t=e.semantics.filter(e=>e.semantic===g.vline_BarMeasure);e.semantics=[].concat(...e.staves.map(e=>{const s=e.top+e.staffY;return t.map(e=>({...e,y:e.y+s,extension:{...e.extension,y1:e.extension.y1+s,y2:e.extension.y2+s}}))}))}})}),e.version=8),e.version<9&&(e.spartito=null,e.version=9),e})(e)),this.pages=this.pages||[],this.headers=this.headers||{},this.instrumentDict=this.instrumentDict||{},this.pageSize=this.pageSize||{width:794,height:1122},this.unitSize=this.unitSize||null,this.staffLayoutCode=this.staffLayoutCode||(2===this.maxStavesCount?"{-}":Array(this.maxStavesCount).fill("").join(","))}get systems(){return[].concat(...this.pages.map(e=>e.systems))}get measureCount(){return this.systems.reduce((e,t)=>e+(t.measureCount||0),0)}get imageKeys(){return[...this.pages.map(e=>e.source?.url),...this.systems.map(e=>e.backgroundImage),...[].concat(...this.systems.map(e=>[...e.staves.map(e=>e.backgroundImage),...e.staves.map(e=>e.maskImage)].filter(Boolean)))].filter(Boolean)}get breakSystemIndices(){const e=[];let t=0;return this.pages.forEach((s,i)=>{ie.staves.length),0)}get sidBlackList(){const e=[].concat(...this.systems.map(e=>e.sidBlackList));return new Set(e)}get sidWhiteList(){const e=[].concat(...this.systems.map(e=>e.sidWhiteList));return new Set(e)}get semanticHash(){const e=[].concat(...this.systems.map(e=>[].concat(...e.staves.map(t=>t.semantics?e.qualifiedSemantics(t.semantics).map(e=>e.id):[]))));return y.default(e.join(""))}eventSystemsToTermStaves(e,t=new DummyLogger){const s=Array(this.maxStavesCount).fill(null).map((t,s)=>({rows:e.map((e,t)=>e.columns.map((i,r)=>{const n=i.rows[s];console.assert(n,"[eventSystemsToTermStaves] measure is null:",s,i.rows);const a=n.contexts;0===r&&(a.some(e=>e.type===Ue.OctaveShift)||a.unshift(new ContextedTerm({staff:s,x:0,y:0,tokenType:B.OctaveShift0,tick:0})));const o=[...n.events||[],...a].sort((e,t)=>e.x-t.x),c=0===s&&r===e.columns.length-1&&this.breakSystemIndices.includes(t);return{terms:o,duration:i.duration,pageBreak:c}}))}));return s.forEach(e=>((e,t=new DummyLogger)=>{const s=new StaffContext;s.logger=t;for(const t of e.rows){for(const e of t){const t=e.terms.find(e=>e instanceof EventTerm);let i=t?Math.min(t.tick,0):0;e.terms.forEach(e=>{if(e instanceof ContextedTerm)e.tick=i,s.change(e);else if(e instanceof EventTerm){const t=e.tick+(e.duration||0);t>i&&(i=t),e.ys&&(e.pitches=e.ys.map(e=>{const t=s.yToNote(e);return{note:t,alter:s.alterOnNote(t),octaveShift:s.octaveShift}}))}}),e.timeSignature={...s.timeSignature},e.timeSigNumeric=s.timeSigNumeric,e.doubtfulTimesig=s.doubtingTimesig||!Number.isInteger(Math.log2(e.timeSignature.denominator))||e.timeSignature.numerator<=e.timeSignature.denominator/4,e.keySignature=s.keySignature,0===e.duration&&(e.duration=je*e.timeSignature.numerator/e.timeSignature.denominator),s.resetMeasure()}s.resetSystem()}})(e,t)),s}resetPageLayout(e){const{unitSize:t=this.unitSize,pageSize:s=this.pageSize}=e,i=.5*s.width/t,r=.5*s.height/t;this.pages.forEach(e=>{const n=i-e.width/2,a=r-e.height/2;e.systems.forEach(e=>{e.left+=n,e.top+=a}),e.semantics&&e.semantics.forEach(e=>{e.x+=n,e.y+=a}),e.width=s.width/t,e.height=s.height/t,e.assemble({textAnnotations:this.textAnnotations})}),this.unitSize=t,this.pageSize=s}getMeasure(e){let t=e;for(const s of this.systems){if(te&&e.measures[t]);return{measureIndex:e,system:s,localIndex:t,left:r.left,right:r.right,measures:n}}t-=s.measureCount}return null}getRawCluster(e,t,{timeSignature:s}={}){const i=this.getMeasure(e);if(!i)return null;const{system:r,left:n,right:a}=i,o=[kt];s&&o.push(...Tt(s));const c=r.staves[0].top+r.staves[0].staffY-2;return r.staves.forEach(e=>{let s=r.qualifiedSemantics(e.semantics,t).filter(e=>e.x>n&&e.xe.semantic===g.TempoNotehead).forEach(e=>{const t=s.findIndex(t=>/^Notehead/.test(t.semantic)&&Ie(e,t)<.3);t>=0&&s.splice(t,1)});const i=e.top+e.staffY-c;s.forEach(t=>{const s=ot[t.semantic];if(s){let r=t.y,a=t.y;s===ot.vline_Stem&&(r=t.extension.y1,a=t.extension.y2),o.push({id:t.id,type:s,staff:e.index,x:t.x-n,y1:r+i,y2:a+i})}})}),new SemanticCluster({index:e,elements:o})}getRawClusters(e=1){return Array(this.measureCount).fill(null).map((t,s)=>this.getRawCluster(s,e))}makeSpartito(e=new DummyLogger){let t=this.systems.map(e=>e.getEvents(this.maxStavesCount));const s=this.eventSystemsToTermStaves(t,e);t.forEach((e,t)=>{e.columns.forEach((e,i)=>{e.basics=s.map(e=>{const{timeSignature:s,timeSigNumeric:r,keySignature:n,doubtfulTimesig:a}=e.rows[t][i];return{timeSignature:s,timeSigNumeric:r,keySignature:n,doubtfulTimesig:a}})})});const i=[].concat(...t.map(e=>e.columns.map(t=>{const s=t.measureIndex,{system:i,localIndex:r,left:n,right:a}=this.getMeasure(s),o=[];i.staves.forEach(e=>o[e.index]=e.top+e.staffY);const c=this.patches&&this.patches.find(e=>e.measureIndex===s),l=c?c.events:SpartitoMeasure.reorderEvents([].concat(...t.rows.map(e=>e.events)),o),u=Object.fromEntries(Object.entries(t.barTypes).map(([e,t])=>[e,t/i.staves.length])),h=0===r&&i.indent;return new SpartitoMeasure({measureIndex:s,staffMask:e.staffMask,position:{systemIndex:i.index,localIndex:r,left:n,right:a,staffYs:i.staves.map(e=>e.top+e.staffY),staffYsFull:o},duration:c?c.duration:t.duration,events:l,contexts:t.rows.map(e=>e.contexts),marks:t.marks,break:t.break,pageBreak:t.pageBreak,voltaBegin:t.voltaBegin,voltaEnd:t.voltaEnd,alternative:t.alternative,barTypes:u,indent:h,basics:c?c.basics:t.basics,matrixH:null,matrixV:null,voices:c?c.voices:null})}))),r=this.staffLayout,n=r.standaloneGroups.map(e=>e.map(e=>r.staffIds.indexOf(e)));return this.spartito=new Spartito({stavesCount:this.maxStavesCount,staffGroups:n,measures:i}),this.spartito}makeMusicSheet(){const e=this.spartito||this.makeSpartito();e.regulated||console.warn("[makeMusicSheet]\tspartito not regulated.");const t=e.makeVoiceStaves(),{title:s,pageSize:i,unitSize:r,staffLayout:n,paperOptions:a,headers:o,instrumentDict:c}=this;return{title:s,pageSize:i,unitSize:r,measureLayout:this.getMeasureLayout(),staffLayout:n,paperOptions:a,headers:o,voiceStaves:t,instrumentDict:c}}findPoint(e){for(const t of this.systems)for(let s=0;st.id===e);if(i){return{point:i,pageIndex:this.pages.findIndex(e=>e.systems.includes(t)),systemIndex:t.index,staffIndex:s}}}return null}getMeasureSemantics(e,t){const s=this.systems[e];if(!s)return null;const i=t?s.measureBars[t-1]:0,r=s.measureBars[t]||s.width;return s.staves.map((e,t)=>{const s=e.top+e.staffY;return e.semantics.filter(e=>e.x>=i&&e.x{const[i,r]=Number.isFinite(e.extension?.y1)?[e.extension.y1,e.extension.y2]:[e.y,e.y];return{...e,staff:t,sy1:i+s,sy2:r+s}})}).flat(1)}makeTimewiseGraph({store:e=!1}={}){if(!this.spartito)return null;return{measures:this.spartito.measures.filter(e=>e.events.length>0).map(t=>{const s=this.getMeasureSemantics(t.position.systemIndex,t.position.localIndex),i={measureIndex:t.measureIndex,left:t.position.left,right:t.position.right,points:s};return e&&(t.graph=i),i})}}getTokenMap(){const e=new Map;return this.systems.forEach(t=>t.staves.forEach(t=>t.measures.forEach(t=>t.tokens.forEach(t=>e.set(t.id,t))))),e}assemble(e=1,t=new DummyLogger){const s=new Map;this.pages.forEach((e,t)=>e.index=t);let i=0;this.systems.forEach((r,n)=>{r.index=n,r.headMeasureIndex=i,r.prev=this.systems[n-1]||null,r.next=this.systems[n+1]||null,r.semantics&&r.semantics.length&&r.semantics.forEach(e=>((e,i,r)=>{const n=_(e,i,r);t.assert(!s.has(n),"semantic point hash conflicted:",n,r,s.get(n)),s.set(n,r)})(n,null,e)),r.assemble(e,t),i+=r.measureCount}),this.pages.forEach((e,s)=>{e.systems.forEach(e=>e.pageIndex=s),e.assemble({textAnnotations:this.textAnnotations},t)})}assembleSystem(e,t=1){this.systems.forEach((e,t)=>e.index=t);const s=e.index;e.semantics&&e.semantics.length&&(e.semantics.forEach(e=>_(s,null,e)),e.assemble(t))}markVoices(e){const t=this.getTokenMap();for(const e of t.values())e.voice=0;const s=[].concat(...e.map((e,t)=>(e.voices||[]).map((e,s)=>[t,s]))).sort(([e,t],[s,i])=>t-i||e-s).map(([e,t])=>`${e}|${t}`);e.forEach((e,i)=>(e.voices||[]).forEach((e,r)=>e.measures.forEach(e=>{const n=s.indexOf(`${i}|${r}`);Object.values(e.tickMap).filter(e=>e instanceof EventTerm).forEach(e=>{const s=e.noteIds?e.noteIds.map(e=>t.get(e)).filter(Boolean):[],i=e.accessories?e.accessories.map(e=>t.get(e.id)).filter(Boolean):[];[...s,...i].forEach(e=>e.voice|=1<e.timeWarped=!0)})})))}async replaceImageKeys(e){await Promise.all([...this.pages.map(async t=>{t.source&&(t.source.url=await e(t.source.url))}),...this.systems.map(t=>Promise.all([e(t.backgroundImage).then(e=>t.backgroundImage=e),...t.staves.map(async t=>{t.backgroundImage=await e(t.backgroundImage),t.maskImage=await e(t.maskImage)})]))])}inferenceStaffLayout(){const e=Math.max(...this.systems.map(e=>e.staves.length),0);this.staffLayoutCode=Array(e).fill("").join(",");const t=this.systems.filter(t=>t.staves.length===e&&t.bracketsAppearance);if(!t.length)return;const s=t.map(e=>{try{return Ee(e.bracketsAppearance).staffIds.length!==e.staves.length?null:e.bracketsAppearance}catch(e){return null}}).filter(Boolean);if(!s.length)return;const i=s.reduce((e,t)=>{const s=e[t]||0;return e[t]=s+1,e},{}),r=Math.max(...Object.values(i)),n=Object.entries(i).find(([e,t])=>t===r)[0].replace(/\{,*\}/g,e=>e.replace(/,/g,"-")),a=Ee(n);this.staffLayoutCode=n;let o=null;for(const t of this.systems)if(o&&t.staves.length===o.staves.length&&t.bracketsAppearance===o.bracketsAppearance)t.staffMaskChanged=null;else{if(t.staves.length{if(s.length>a.staffIds.length)return null;if(s.reduce((e,t)=>e+t,0)===t.staves.length)return ws(s);for(const i of[1,0]){const r=[...s,i],n=a.partialMaskCode(r);if(n===t.bracketsAppearance)return ws(r);if(t.bracketsAppearance.startsWith(n)){const t=e(r);if(t)return t}}return null},s=e([]);t.staffMaskChanged=o&&s===o.staffMask?null:s}o=t}}assignBackgroundForMeasure(e){e.backgroundImages=[];const t=this.systems[e.position.systemIndex];t.backgroundImage&&e.backgroundImages.push({url:t.backgroundImage,position:t.imagePosition,original:!0}),t.staves.forEach(s=>{!t.backgroundImage&&s.backgroundImage&&e.backgroundImages.push({url:s.backgroundImage.toString(),position:{...s.imagePosition,y:s.imagePosition.y+s.top},original:!0}),s.maskImage&&e.backgroundImages.push({url:s.maskImage.toString(),position:{...s.imagePosition,y:s.imagePosition.y+s.top}})})}blackoutFakeNotes(e="patched"){if(!this.spartito)return;let t=e=>!0;switch(e){case"patched":t=e=>e.patched;break;case"perfect":t=e=>e.patched||e.regulated&&Ke(e).perfect}const s=this.spartito.measures.filter(t).reduce((e,t)=>{if(!t.regulated)return;const s=t.voices.flat(1);return t.events.filter(e=>!e.rest&&!e.grace&&!s.includes(e.id)).forEach(t=>t.noteIds&&e.push(...t.noteIds)),e},[]),i=new Set(s);return this.systems.forEach(e=>e.staves.forEach(t=>{const s=t.semantics.filter(e=>i.has(e.id)).map(e=>e.id);e.sidBlackList.push(...s)})),s}getMeasureLayout(){const e=this.spartito&&this.spartito.measureLayoutCode;if(e)try{return(e=>{const t=fe(e);return t?.data?ae(t.data,he):null})(e)}catch(e){console.debug("invalid measure layout code:",e)}return null}*splitToSingleScoresGen(){this.assemble();const e=this.systems.filter(e=>e.index>0&&e.indent&&e.timeSignatureOnHead).map(e=>e.index);if(!e.length)return void(yield this.deepCopy());const t=new Score({...this,pages:[],topology:void 0,spartito:void 0,patches:void 0});this.pages.forEach(e=>{delete e.tokens,e.systems.forEach(e=>{delete e.tokens,e.staves.forEach(e=>{e.measures=[]})})});let s=0;for(const i of[...e,this.systems.length]){const e=e=>e.index>=s&&e.indext.systems.some(e)).map(t=>{const{systems:s,...i}=t;return new Page({...i,systems:s.filter(e).map(e=>new System({...e}))})}),n=t.deepCopy();n.headers.SubScoreSystem=`${s}-${i-1}`,n.headers.SubScorePage=`${r[0].index}-${r[r.length-1].index}`,n.pages=r,n.assemble(),n.inferenceStaffLayout(),s=i,yield n}}splitToSingleScores(){return[...this.splitToSingleScoresGen()]}}Score.className="Score";class EditableEvent extends EventTerm{constructor(e){super(e)}get agent(){return new Proxy(this,{get(e,t){const s=e;switch(t){case"id":case"tick":case"duration":case"rest":case"division":case"dots":case"stemDirection":case"beam":case"tremolo":case"tremoloLink":case"arpeggioStyle":{const e=s[t];return void 0===e?null:e}case"tying":case"tied":case"glissando":{const e=s[t];return void 0!==e&&e}case"grace":return!!s.grace;case"timeWarp":return s.timeWarp?`${s.timeWarp.numerator}/${s.timeWarp.denominator}`:null;case"pitches":return s.pitches}},set:(e,t,s)=>{const i=e;switch(t){case"tick":case"duration":case"rest":case"division":case"dots":case"stemDirection":case"tying":case"tied":case"beam":case"tremolo":case"tremoloLink":case"glissando":case"arpeggioStyle":return i[t]=s,!0;case"grace":return i.grace=s?Ve.Grace:null,!0;case"timeWarp":if(i.timeWarp=null,s&&"string"==typeof s){const e=s.match(/^(\d+)\/(\d+)/);e&&(i.timeWarp={numerator:parseInt(e[1]),denominator:parseInt(e[2])})}return!0;case"id":case"pitches":return!0}return!1},ownKeys:()=>["id","duration","rest","division","dots","stemDirection","tying","tied","beam","timeWarp","tremolo","tremoloLink","glissando","arpeggioStyle","tick","grace","pitches"],getOwnPropertyDescriptor:()=>({enumerable:!0,configurable:!0})})}}class EditableMeasure extends SpartitoMeasure{constructor(e){super(e),this.events=null,this.events=e.events,this.events?.some(e=>!(e instanceof EditableEvent))&&(this.events=this.events.map(e=>new EditableEvent(e))),this.voices&&this.syncVoiceToEvents()}syncVoiceToEvents(){this.events.forEach(e=>e.voice=-1),this.voices.forEach((e,t)=>{e.forEach(e=>{const s=this.events.find(t=>t.id===e);s?s.voice=t:console.warn("no event with id:",e,this.events.length)})})}syncVoiceFromEvents(){const e=[];this.events.forEach(t=>{t?.voice>=0&&(e[t.voice]=e[t.voice]||[],e[t.voice].push(t))}),e.forEach(e=>e.sort((e,t)=>e.tick-t.tick)),this.voices=e.map(e=>e.map(e=>e.id))}get agent(){return new Proxy(this,{get:(e,t)=>{const s=e;switch(t){case"measureIndex":case"duration":return s[t];case"voices":return s.voices?.map(e=>e.join(","))||null;case"timeSignature":case"keySignature":case"doubtfulTimesig":return s.basics[0][t];case"toJSON":return()=>({measureIndex:s.measureIndex,voices:s.voices,duration:s.duration,timeSignature:s.basics[0].timeSignature,keySignature:s.basics[0].keySignature})}},set:(e,t,s)=>{const i=e;switch(t){case"timeSignature":case"keySignature":case"doubtfulTimesig":return i.basics[0][t]=s,i.basics=i.basics.map(()=>i.basics[0]),!0;case"duration":return i.duration=s,!0;case"measureIndex":case"voices":return!0}return!1},ownKeys:()=>["measureIndex","timeSignature","doubtfulTimesig","keySignature","duration","voices"],getOwnPropertyDescriptor:()=>({enumerable:!0,configurable:!0})})}makeMIDI(e=120){if(!this.regulated)return null;const t=6e7/e,s=this.voices.map((e,s)=>{const i=e.map(e=>{const t=this.events.find(t=>t.id===e);if(t){const e=t.graceIds?t.graceIds.map(e=>this.events.find(t=>t.id===e)):[];return[...e,t]}return[]}).flat(1),r=i.filter(e=>!e.rest&&Number.isFinite(e.tick)&&e.tick>=0&&Number.isFinite(e.duration)).map(e=>e.pitches.map(t=>[{id:e.id,time:e.tick,type:"channel",subtype:"noteOn",channel:e.staff,noteNumber:Le(t),velocity:96},{id:e.id,time:e.tick+e.duration,type:"channel",subtype:"noteOff",channel:e.staff,noteNumber:Le(t)}])).flat(2);return r.sort(function(e,t){return e.time-t.time}),0===s&&r.unshift({time:0,type:"meta",subtype:"timeSignature",numerator:this.timeSignature.numerator,denominator:this.timeSignature.denominator,thirtyseconds:8},{time:0,type:"meta",subtype:"setTempo",microsecondsPerBeat:t}),r.forEach(e=>{e.ticks=Math.round(e.time-0)}),r.forEach((e,t)=>{e.deltaTime=e.ticks-(t>0?r[t-1].ticks:0)}),r.push({deltaTime:0,type:"meta",subtype:"endOfTrack"}),r});return{header:{formatType:0,ticksPerBeat:480},tracks:s}}}var Ms;EditableMeasure.className="EditableMeasure",EditableMeasure.blackKeys=[],function(e){e.Pass="i",e.Division="d",e.Dots="o"}(Ms||(Ms={}));const Es=["whole","half","quarter","eighth","sixteenth","thirtysecond","sixtyfourth","128th","256th"],Ns=.4/je,Is=1e-12,Cs=[void 0,"u","d"],_s=[void 0,ze.Open,ze.Continue,ze.Close],Os=e=>({elements:e.elements.map(e=>({tick:e.tick,division:e.division,dots:e.dots,beam:e.beam,stemDirection:e.stemDirection,grace:e.grace,timeWarped:e.timeWarped,fullMeasure:e.fullMeasure,fake:e.fake,order:e.order,predisposition:e.predisposition}))});class BeadNode{constructor(e){Object.assign(this,e),this.children={},this.accessCount=0}nextBranch(){const e=this.possibilities.map((e,t)=>e/(this.children[t]?this.children[t].accessCount+1:1));return e.every(e=>!e)?(this.accessCount=1/0,null):$e(e)}get currentElem(){return this.cluster.elements[this.elemIndex]}branchID(e){switch(this.type){case Ms.Pass:return`i_${e}`;case Ms.Division:return Es[e];case Ms.Dots:return"o"+".".repeat(e)}return""}async deduce({picker:e,logger:t,ptFactor:s},i=0){++this.accessCount;const r=this.nextBranch();if(t.debug(String.fromCodePoint(127817)+" ".repeat(i),this.branchID(r),this.accessCount>1?`[${this.accessCount}]`:""),!Number.isInteger(r)||r<0)return this.accessCount=1/0,As(this.cluster,this.currentElem.order+1,this.pretentiousness);var n;if(this.pretentiousness+=(n=this.possibilities[r],Math.min(100,-Math.log(n))),this.pretentiousness>100*s)return this.accessCount=1/0,As(this.cluster,this.currentElem.order+1,this.pretentiousness);let a=null;switch(this.type){case Ms.Pass:{const t=this.currentElem.order+1,s=this.cluster.elements[r];if(console.assert(s,"null element:",r,this.cluster.elements.length),s.type===ps.EOS){if(a=As(this.cluster,t,this.pretentiousness),!a.residue||a.fatalError)return this.accessCount=1/0,a;if(this.cluster.elements[0].order=t,!this.children[r]){if(!e.quota)return a;const s=(await e.predictCluster(this.cluster,t+1)).map((e,s)=>this.cluster.elements[s].orderMath.max(Is,e));this.children[r]=new BeadNode({cluster:this.cluster,elemIndex:r,type:Ms.Division,possibilities:e,pretentiousness:this.pretentiousness})}}break;case Ms.Division:if(this.currentElem.division=r,!this.children[r]){const e=this.currentElem.predisposition.dotsVector.map(e=>Math.max(Is,e));this.children[r]=new BeadNode({cluster:this.cluster,elemIndex:this.elemIndex,type:Ms.Dots,possibilities:e,pretentiousness:this.pretentiousness})}break;case Ms.Dots:if(this.currentElem.dots=r,a=As(this.cluster,this.currentElem.order+1,this.pretentiousness),!a.residue||a.fatalError)return this.accessCount=1/0,a;if(!this.children[r]){if(!e.quota)return a;const t=this.currentElem.order+1,s=(await e.predictCluster(this.cluster,t)).map((e,s)=>this.cluster.elements[s].order{t.order>e&&(t.order=void 0)}),this.cluster.elements.forEach(e=>e.order=e.order>this.currentElem.order?void 0:e.order),this.cluster.elements[this.cluster.elements.length-1].tick=a.endTick,a}return o}}const Bs=e=>je*2**-e.division*(2-2**-e.dots),As=(e,t,s)=>{const i=e.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&Number.isInteger(e.order)&&e.ordere.order-t.order);const r=e.elements[e.elements.length-1];let n=0,a=0,o=0,c=1;const l=[[r.x,e.signatureDuration,e.signatureDuration]];let u=0;i.forEach(e=>{e.order>a+1&&(n=0,++c);const t=l.find(e=>e[1]>=n);if(t&&e.x>t[0]+3){const t=l.reduce((t,s)=>Math.abs(e.predisposition.tick-s[2])t[0]>e.x));l.splice(s,0,[e.x,e.tick,e.predisposition.tick]);let i=Bs(e);e.predisposition.timeWarped>.5&&(i=2*i/3),n+=i,u+=i,o=Math.max(o,n),a=e.order}),o>0&&(e.elements[e.elements.length-1].tick=o);const h=e.elements[e.elements.length-1].pivotX-e.elements[1].pivotX,m=Math.max(...i.map(e=>e.tick),o),f=[...i].sort((e,t)=>e.pivotX-t.pivotX),d=f.slice(1).map((e,t)=>{const s=f[t],i=e.pivotX-s.pivotX,r=e.tick-s.tick;if(!r)return i/h;return(4*Math.atan2(r/m,i/h)/Math.PI-1)**2}),p=Math.max(...d,0),g=i.map(e=>(e.tick-e.predisposition.tick)**2),y=g.length?Math.sqrt(g.reduce((e,t)=>e+t,0)/g.length):0,v=e.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&!(Number.isInteger(e.order)&&e.order.5)).length,x=p>=1||o>e.signatureDuration,S=Math.max(0,e.signatureDuration-u/c);return{tickErr:y,twist:p,residue:v,endTick:o,fatalError:x,voiceN:c,spaceDuration:S,pretentiousness:s,loss:y/je+p+.2*v+.002*c+S*Ns+.02*s}},Ps=async(e,t,s,i=200,r=0,n=1)=>{e.elements.forEach((e,t)=>e.order=t?void 0:0);const a=await t.predictCluster(e,1),o=new BeadNode({cluster:e,elemIndex:0,pretentiousness:0,type:Ms.Pass,possibilities:a});let c=null,l=null;for(t.quota=i;t.quota;){e.elements.forEach((e,t)=>e.order=t?void 0:0);const i=await o.deduce({picker:t,logger:s,ptFactor:n});if(s.debug("loss:",i),(!c||i.loss{e.elements.forEach((e,s)=>Object.assign(e,t.elements[s]))})(e,l);const u=e.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&Number.isInteger(e.order)),h=e.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&!Number.isInteger(e.order));u.length&&h.forEach(e=>{if(e.tick=void 0,e.predisposition.fakeP<.5){const t=Bs(e),s=u.filter(e=>e.tick+t<=c.endTick);if(s.length){const t=s.reduce((t,s)=>Math.abs(s.x-e.x)e.order-t.order),[...u,...h].forEach(e=>{e.grace=!Number.isFinite(e.tick)&&e.predisposition.grace,e.timeWarped=e.predisposition.timeWarped>.5,e.fullMeasure=e.predisposition.fullMeasure>.5,e.stemDirection=Cs[$e(e.predisposition.stemDirectionVector)],e.beam=_s[$e(e.predisposition.beamVector)]});const m=e.elements.map(e=>e.index),f=e=>m.indexOf(e);return e.matrixH=e.elements.map(()=>Array(e.elements.length).fill(0)),u.forEach((t,s)=>{const i=u[s-1];!i||i.order{const{stopLoss:s=.09,quotaMax:i=1e3,quotaFactor:r=5,ptFactor:n=1,logger:a=new DummyLogger}=t;let o=0;const c=e.createClusters();for(const l of c){const c=Math.min(i,Math.ceil(l.elements.length*r));a.info(`[measure-${e.measureIndex}]`,c);const{loss:u}=await Ps(l,t.picker,a,c,s,n);o=Math.max(o,u)}const l=[],u=[],h=[];c.forEach(t=>{const s=t.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&Number.isInteger(e.order));if(s.sort((e,t)=>e.order-t.order),!s.length)return;let i=[];l.push(i);let r=0;s.forEach(e=>{e.fullMeasure||e.grace||e.tremoloCatcher||(e.order>r+1?(i=[e.index],l.push(i)):i.push(e.index),r=e.order)});let n=s[s.length-1];const a=t.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&Number.isFinite(e.tick)&&!Number.isInteger(e.order));for(;a.length;){const e=a.findIndex(e=>e.tick>=n.tick+Bs(n));e>=0?i.push(a.splice(e,1)[0].index):(n=a.splice(0,1)[0],i=[n.index],l.push(i))}if(s.some(e=>!e.fullMeasure&&Number.isInteger(e.order))){const e=t.elements.find(e=>e.type===ps.EOS);u.push(e.tick)}const o=e.eventMap,c=t.elements.reduce((e,t)=>(Number.isFinite(t.tick)&&e.add(t.tick),e),new Set),m=Array.from(c).sort((e,t)=>e-t);s.forEach(e=>{const t=o[e.index];t&&h.push({id:t.id,tick:e.tick,tickGroup:m.indexOf(e.tick),division:e.division!==t.division?e.division:void 0,dots:e.dots!==t.dots?e.dots:void 0,timeWarp:e.timeWarped?_e(2,3):void 0,beam:e.beam!==t.beam?e.beam:void 0,grace:e.grace!==!!t.grace?e.grace:void 0,fullMeasure:e.fullMeasure||void 0})})});const m=Math.max(...c.map(e=>e.estimatedDuration));return{voices:l.filter(e=>e.length),duration:Math.max(...u),events:h,priority:-o,estimatedDuration:m}},Ds=async(e,{picker:t,resetSignatureForDoubtfulOnly:s})=>{const i=e.createClusters(),r=e.eventMap;for(const n of i)s&&!e.doubtfulTimesig||(n.signatureDuration=0),n.elements.forEach((e,t)=>e.order=t?void 0:0),await t.predictCluster(n,1),n.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)).forEach(e=>{r[e.index].predisposition=e.predisposition});e.estimatedDuration=Math.max(...i.map(e=>e.estimatedDuration))},Fs=async(e,t)=>Ds(e,{picker:t,resetSignatureForDoubtfulOnly:!0});var Ls=Object.freeze({__proto__:null,solveCluster:Ps,solveMeasure:Rs,estimateMeasure:Fs,glimpseMeasure:Ds}),$s=Object.freeze({__proto__:null,beadSolver:Ls,get PageLayoutMethod(){return d},get TextType(){return p},TokenTypes:P,TokenClefs:R,TokenTimesigs:D,TokenTimesigsC:F,TokenTimesigsN:L,TokenOctshifts:$,TokenNumbers:j,TokenAccidentals:H,TokenNoteheads:V,TokenBareNoteheads:z,TokenDirectionalNoteheads:q,TokenRests:G,TokenFlags:W,TokenVolta:U,TokenDynamics:Y,TokenScripts:X,TokenPedals:K,TokenDots:Z,TokenArcs:J,TokenBeams:Q,TokenWedges:ee,TokenAccessories:te,TokenDirectionless:se,TokenGlyphs:ie,get TokenType(){return B},Token:Token,TextToken:TextToken,TOKEN_Y_ROUND:re,TOKEN_Y_FIXED:ne,VERSION:14,Score:Score,Page:Page,System:System,Staff:Staff,Measure:Measure,emptyVoiceFromStaffMeasure:vs,SpartitoMeasure:SpartitoMeasure,Spartito:Spartito,EditableEvent:EditableEvent,EditableMeasure:EditableMeasure,Term:Term,EventTerm:EventTerm,ContextedTerm:ContextedTerm,MarkTerm:MarkTerm,TempoTerm:TempoTerm,GlyphTerm:GlyphTerm,TextTerm:TextTerm,LyricTerm:LyricTerm,CommandTerm:CommandTerm,ChordmodeTerm:ChordmodeTerm,get ContextType(){return Ue},get GraceType(){return Ve},get GlissandoStyle(){return Ge},get ArpeggioStyle(){return We},get AccessoryDirection(){return He},WHOLE_DURATION:je,get StemBeam(){return ze},get TremoloLink(){return qe},mod7:bs,get SemanticType(){return g},glyphSemanticMapping:{"rests.1":"Rest1","rests.0o":"Rest0","rests.1o":"Rest1","rests.M1":"RestM1","rests.2":"Rest2","rests.3":"Rest3","rests.4":"Rest4","rests.5":"Rest5","rests.6":"Rest6","accidentals.sharp":"AccSharp","accidentals.doublesharp":"AccDoublesharp","accidentals.natural":"AccNatural","accidentals.flat":"AccFlat","accidentals.flatflat":"AccFlatflat","dots.dot":"Dot","scripts.ufermata":"ScriptFermata","scripts.dfermata":"ScriptFermata","scripts.ushortfermata":"ScriptShortFermata","scripts.dshortfermata":"ScriptShortFermata","scripts.staccato":"ScriptStaccato","scripts.ustaccatissimo":"ScriptStaccatissimo","scripts.dstaccatissimo":"ScriptStaccatissimo","scripts.turn":"ScriptTurn","scripts.trill":"ScriptTrill","scripts.segno":"ScriptSegno","scripts.coda":"ScriptCoda","scripts.arpeggio":"ScriptArpeggio","scripts.prall":"ScriptPrall","scripts.mordent":"ScriptMordent","scripts.umarcato":"ScriptMarcato","scripts.dmarcato":"ScriptMarcato","scripts.uportato":"ScriptPortato","scripts.dportato":"ScriptPortato","scripts.tenuto":"ScriptTenuto","scripts.sforzato":"ScriptSforzato","clefs.C":"ClefC","clefs.F":"ClefF","clefs.G":"ClefG","clefs.F_change":"ClefF","clefs.G_change":"ClefG","timesig.C44":"TimesigC44","timesig.C22":"TimesigC22","pedal.*":"PedalStar","pedal.Ped":"PedalPed","noteheads.s0":"NoteheadS0","noteheads.s1":"NoteheadS1","noteheads.s2":"NoteheadS2",f:"f",m:"m",p:"p",r:"r",s:"s",z:"z"},semanticPriorities:{ClefG:0,ClefF:0,TimesigFour:0,TimesigThree:0,TimesigTwo:0,NoteheadS0:0,NoteheadS1:0,NoteheadS2:0,Dot:0,vline_BarMeasure:0,vline_Stem:0,Flag3:0,TimesigC44:1,TimesigC22:1,TimesigEight:1,TimesigSix:1,AccNatural:1,AccSharp:1,AccFlat:1,KeyAcc:1,Rest0:1,Rest1:1,Rest2:1,Rest3:1,Rest4:1,OctaveShift8:1,OctaveShift0:1,AccDoublesharp:2,AccFlatflat:2,TimesigOne:2,TimesigNine:2,Rest5:2,Rest6:2,SlurBegin:2,SlurEnd:2,VoltaLeft:2,VoltaRight:2,vline_BarTerminal:2,vline_BarSegment:2,TempoNotehead:2,GraceNotehead:2,SignLined:2,SignInterval:2,BeamLeft:2,BeamRight:2,BeamContinue:2,TremoloLeft:2,TremoloRight:2,TremoloMiddle:2,StemTip:2,StemHead:2,f:3,p:3,m:3,ScriptFermata:3,ScriptSforzato:3,ScriptStaccato:3,ScriptStaccatissimo:3,ScriptTurn:3,ScriptTrill:3,ScriptSegno:3,ScriptCoda:3,ScriptArpeggio:3,ScriptPrall:3,ScriptMordent:3,ScriptTenuto:3,PedalStar:3,PedalPed:3,TimesigFive:3,TimesigSeven:3,TimesigZero:3,One:3,Two:3,Three:3,Four:3,Five:3,rect_Text:3,rect_Lyric:3,CrescendoBegin:3,CrescendoEnd:3,DecrescendoBegin:3,DecrescendoEnd:3,RestM1:4,ClefC:4,ScriptShortFermata:4,ScriptMarcato:4,ScriptPortato:4,s:4,r:4,z:4,Zero:4,Six:4,Seven:4,Eight:4,Nine:4},NOTEHEAD_WIDTHS:w,glyphCenters:M,ONE_D_SEMANTICS:["OctaveShift8va","OctaveShift8vb","OctaveShift8","OctaveShift0","vline_VoltaLeft","vline_VoltaRight","VoltaAlternativeBegin","vline_BarMeasure","vline_BarTerminal","vline_BarSegment"],SYSTEM_SEMANTIC_TYPES:E,CONFLICTION_GROUPS:I,STAMP_SEMANTICS:C,STAMP_RECTS:{ClefG:[-.0625,-1.125,3.6,8.6],ClefF:[.25,.5625,3.6,3.8],ClefC:[.25,0,3.25,4.5],NoteheadS0:[.0625,0,2.55,1.4],NoteheadS1:[.0625,0,1.8,1.4],NoteheadS2:[.0625,-.0625,1.65,1.35],Dot:[.25,0,.6,.6],Rest0:[0,-.75,3.25,.9],Rest1:[0,-.25,3.25,.9],Rest2:[-.0625,-.1875,1.6,3.375],Rest3:[0,.0625,1.2,2.25],Rest4:[.0625,.5625,1.65,3.375],Rest5:[.0625,.0625,1.95,4.375],Rest6:[.0625,.5625,1.95,5.375],RestM1:[-.4375,-1.5,.75,1.2],AccNatural:[0,0,.9,3.5],AccSharp:[0,0,1.5,3.5],AccDoublesharp:[0,0,1.5,1.5],AccFlat:[0,-.5625,1.2,3.125],AccFlatflat:[.1875,-.5625,1.95,3.125],TimesigC44:[-.0625,0,2.25,2.3],TimesigC22:[-.0625,0,2.25,3.2],TimesigZero:[0,0,1.8,2.2],TimesigOne:[-.125,0,1.5,2.2],TimesigTwo:[0,0,2.2,2.2],TimesigThree:[-.0625,0,1.9,2.4],TimesigFour:[.0625,0,1.95,2.2],TimesigFive:[0,0,1.8,2.3],TimesigSix:[0,0,2,2.4],TimesigSeven:[0,0,1.8,2.2],TimesigEight:[0,0,1.9,2.2],TimesigNine:[0,0,1.9,2.2],One:[-.0625,0,.75,1.6],Two:[0,0,1.2,1.6],Three:[0,0,1.2,1.6],Four:[0,0,1.2,1.6],Five:[0,0,1.2,1.6],OctaveShift8:[2.125,-.1875,4.75,3.6],OctaveShift0:[-.4,0,1.8,4.2],f:[.0625,-.125,2.55,3],p:[-.0625,.25,2.55,2.1],m:[-.125,-.0625,2.4,1.35],n:[-.3125,-.0625,1.95,1.35],r:[0,-.125,1.5,1.5],s:[0,-.0625,1.2,1.35],z:[.0625,0,1.35,1.5],ScriptFermata:[0,0,3.25,3.9],ScriptShortFermata:[0,0,2.4,4.95],ScriptSforzato:[-.0625,0,2.5,1.2],ScriptStaccato:[0,-.0625,.6,.45],ScriptStaccatissimo:[0,0,1.2,2.6],ScriptTurn:[0,0,2.7,1.5],ScriptTrill:[-.125,-.5,3,2.7],ScriptSegno:[0,0,2.4,3.5],ScriptCoda:[0,0,2.7,3.25],ScriptArpeggio:[-.0625,0,1.05,1.8],ScriptPrall:[0,0,2.4,1.2],ScriptMordent:[0,0,2.4,1.5],ScriptMarcato:[0,0,1.2,2.475],ScriptTenuto:[0,-.0625,1.5,.15],ScriptPortato:[0,0,1.5,1.65],PedalStar:[0,0,3.2,3.2],PedalPed:[0,-.25,4.7,2.4]},hashSemanticPoint:_,hashPageSemanticPoint:O,SemanticGraph:SemanticGraph,get SemanticElementType(){return ot},SemanticCluster:SemanticCluster,SemanticClusterSet:class SemanticClusterSet{constructor(e){if(e&&(this.clusters=e.clusters,e.vocab)){const t=e.vocab.map((e,t)=>[t,ot[e]]).filter(([e,t])=>e!==t).reduce((e,[t,s])=>(e[t]=s,e),{});this.clusters.forEach(e=>e.elements.forEach(e=>{Number.isFinite(t[e.type])&&(e.type=t[e.type])}))}}toJSON(){return{__prototype:"SemanticClusterSet",vocab:Object.entries(ot).filter(e=>Number.isFinite(e[1])).map(e=>e[0]),clusters:this.clusters.map(e=>e.toJSON())}}},ELEMENT_TOKEN_NAMES:ht,NOTEHEAD_ELEMENT_TYPES:ft,NOTE_ELEMENT_TYPES:gt,BOS_ELEMENT:kt,fractionToElems:Tt,expandMatrixByMasks:Mt,expandMatrixByMaskTriu:Et,matrixFromGroups:Nt,get EventElementType(){return ps},EventCluster:EventCluster,EventClusterSet:EventClusterSet,recoverJSON:ae,SimpleClass:SimpleClass,PatchMeasure:PatchMeasure,evaluateMeasure:Ke});const js=[B.ClefG,B.ClefF,B.ClefC],Hs=e=>{let t=null;switch(e.tokenType){case B.ClefG:t="Treble";break;case B.ClefF:t="Bass";break;case B.ClefC:t=-1===e.y?"Tenor":"Alto"}return t};var Vs,zs={exports:{}},qs="object"==typeof Reflect?Reflect:null,Gs=qs&&"function"==typeof qs.apply?qs.apply:function(e,t,s){return Function.prototype.apply.call(e,t,s)};Vs=qs&&"function"==typeof qs.ownKeys?qs.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var Ws=Number.isNaN||function(e){return e!=e};function Us(){Us.init.call(this)}zs.exports=Us,zs.exports.once=function(e,t){return new Promise(function(s,i){function r(s){e.removeListener(t,n),i(s)}function n(){"function"==typeof e.removeListener&&e.removeListener("error",r),s([].slice.call(arguments))}ii(e,t,n,{once:!0}),"error"!==t&&function(e,t,s){"function"==typeof e.on&&ii(e,"error",t,s)}(e,r,{once:!0})})},Us.EventEmitter=Us,Us.prototype._events=void 0,Us.prototype._eventsCount=0,Us.prototype._maxListeners=void 0;var Ys=10;function Xs(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function Ks(e){return void 0===e._maxListeners?Us.defaultMaxListeners:e._maxListeners}function Zs(e,t,s,i){var r,n,a,o;if(Xs(s),void 0===(n=e._events)?(n=e._events=Object.create(null),e._eventsCount=0):(void 0!==n.newListener&&(e.emit("newListener",t,s.listener?s.listener:s),n=e._events),a=n[t]),void 0===a)a=n[t]=s,++e._eventsCount;else if("function"==typeof a?a=n[t]=i?[s,a]:[a,s]:i?a.unshift(s):a.push(s),(r=Ks(e))>0&&a.length>r&&!a.warned){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=a.length,o=c,console&&console.warn&&console.warn(o)}return e}function Js(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Qs(e,t,s){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:s},r=Js.bind(i);return r.listener=s,i.wrapFn=r,r}function ei(e,t,s){var i=e._events;if(void 0===i)return[];var r=i[t];return void 0===r?[]:"function"==typeof r?s?[r.listener||r]:[r]:s?function(e){for(var t=new Array(e.length),s=0;s{s=e,i=r,t>=0&&setTimeout(i,t,"timeout")}),s,i]}Object.defineProperty(Us,"defaultMaxListeners",{enumerable:!0,get:function(){return Ys},set:function(e){if("number"!=typeof e||e<0||Ws(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Ys=e}}),Us.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Us.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||Ws(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},Us.prototype.getMaxListeners=function(){return Ks(this)},Us.prototype.emit=function(e){for(var t=[],s=1;s0&&(n=t[0]),n instanceof Error)throw n;var a=new Error("Unhandled error."+(n?" ("+n.message+")":""));throw a.context=n,a}var o=r[e];if(void 0===o)return!1;if("function"==typeof o)Gs(o,this,t);else{var c=o.length,l=si(o,c);for(s=0;s=0;n--)if(s[n]===t||s[n].listener===t){a=s[n].listener,r=n;break}if(r<0)return this;0===r?s.shift():function(e,t){for(;t+1=0;i--)this.removeListener(e,t[i]);return this},Us.prototype.listeners=function(e){return ei(this,e,!0)},Us.prototype.rawListeners=function(e){return ei(this,e,!1)},Us.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):ti.call(e,t)},Us.prototype.listenerCount=ti,Us.prototype.eventNames=function(){return this._eventsCount>0?Vs(this._events):[]};class AsyncQueue extends zs.exports.EventEmitter{constructor(){super(),this.working=!1,this.working=!1,this.tasks=[],process.nextTick(()=>{this.emit("idle")})}async _digest(e){this.working=!0;const[t,s,i,r]=e;await t(s).then(i,r),this.tasks.length>0?await this._digest(this.tasks.shift()):(this.working=!1,this.emit("idle"))}addTask(e,{timeout:t=6e5}={}){const[s,i,r]=ri({timeout:t});return this.working?this.tasks.push([...e,i,r]):this._digest([...e,i,r]),s}}class ZeroClient{constructor(e=console){this.queue=new AsyncQueue,this.logger=e}bind(e){e&&(this.url=e),this.socket=new n.Request({sendTimeout:15e3,receiveTimeout:3e5}),this.socket.connect(this.url)}__request(e){let t=0;const s=async e=>{try{return this.socket.closed&&this.bind(),await this.socket.send(r.pack(e)).then(()=>this.socket.receive())}catch(i){if(t<2)return t++,console.log(`请求失败,${i.stack}`),console.error(`3s后重试第${t}次`),this.socket.close(),await new Promise(e=>setTimeout(e,3e3)),s(e);throw i}};return s(e)}async request(e,t=null,s=null){const[i,n]=Array.isArray(t)?[t,s]:[void 0,t],a={method:e};return i&&(a.args=i),n&&(a.kwargs=n),this.queue.addTask([async e=>{const[t]=await this.__request(e),s=r.unpack(t);return 0===s.code?s.data:Promise.reject(s.msg)},a])}}class PyProcessor extends ZeroClient{constructor(e,t={},s=console){super(s),this.retryCount=0,this.retryDelay=3e3,this.scriptPath=e,this.options=t}async bind(e){const t=e||await a.getPortPromise({port:12022,stopPort:12122}),i=s.defaultsDeep({args:[...this.options.args||[],"-p",`${t}`]},this.options);this.logger.info(`[python-shell]: starting python shell. path: ${this.scriptPath}`),this.pyShell=new o.PythonShell(this.scriptPath,i),this.pyShell.stdout.on("data",e=>this.logger.info(e)),this.pyShell.on("pythonError",e=>this.logger.error(`[python-shell]: ${this.scriptPath} pythonError:`,e)),this.pyShell.on("stderr",e=>this.logger.error(`[python-shell]: ${this.scriptPath} stderr:`,e)),this.pyShell.on("error",e=>this.logger.error(`[python-shell]: ${this.scriptPath} error:`,e)),this.pyShell.on("close",()=>{this.retryCount<5&&(this.retryCount++,this.logger.info(`[python-shell]: ${this.scriptPath} will retry ${this.retryCount}th time after 3 seconds`),setTimeout(()=>{this.bind()},this.retryDelay))}),super.bind(`tcp://127.0.0.1:${t}`)}}var ni={},ai=function(e){return e instanceof Buffer},oi={exports:{}},ci={exports:{}};"function"==typeof Object.create?ci.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:ci.exports=function(e,t){e.super_=t;var s=function(){};s.prototype=t.prototype,e.prototype=new s,e.prototype.constructor=e};try{var li=require("util");if("function"!=typeof li.inherits)throw"";oi.exports=li.inherits}catch(e){oi.exports=ci.exports}!function(e){var t=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),s={},i=0;i=a)return e;switch(e){case"%s":return String(r[i++]);case"%d":return Number(r[i++]);case"%j":try{return JSON.stringify(r[i++])}catch(e){return"[Circular]"}default:return e}}),c=r[i];i=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),m(s)?i.showHidden=s:s&&e._extend(i,s),g(i.showHidden)&&(i.showHidden=!1),g(i.depth)&&(i.depth=2),g(i.colors)&&(i.colors=!1),g(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=a),c(i,t,i.depth)}function a(e,t){var s=n.styles[t];return s?"["+n.colors[s][0]+"m"+e+"["+n.colors[s][1]+"m":e}function o(e,t){return e}function c(t,s,i){if(t.customInspect&&s&&b(s.inspect)&&s.inspect!==e.inspect&&(!s.constructor||s.constructor.prototype!==s)){var r=s.inspect(i,t);return p(r)||(r=c(t,r,i)),r}var n=function(e,t){if(g(t))return e.stylize("undefined","undefined");if(p(t)){var s="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(s,"string")}if(d(t))return e.stylize(""+t,"number");if(m(t))return e.stylize(""+t,"boolean");if(f(t))return e.stylize("null","null")}(t,s);if(n)return n;var a=Object.keys(s),o=function(e){var t={};return e.forEach(function(e,s){t[e]=!0}),t}(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(s)),S(s)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return l(s);if(0===a.length){if(b(s)){var v=s.name?": "+s.name:"";return t.stylize("[Function"+v+"]","special")}if(y(s))return t.stylize(RegExp.prototype.toString.call(s),"regexp");if(x(s))return t.stylize(Date.prototype.toString.call(s),"date");if(S(s))return l(s)}var k,T="",w=!1,E=["{","}"];(h(s)&&(w=!0,E=["[","]"]),b(s))&&(T=" [Function"+(s.name?": "+s.name:"")+"]");return y(s)&&(T=" "+RegExp.prototype.toString.call(s)),x(s)&&(T=" "+Date.prototype.toUTCString.call(s)),S(s)&&(T=" "+l(s)),0!==a.length||w&&0!=s.length?i<0?y(s)?t.stylize(RegExp.prototype.toString.call(s),"regexp"):t.stylize("[Object]","special"):(t.seen.push(s),k=w?function(e,t,s,i,r){for(var n=[],a=0,o=t.length;a60)return s[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+s[1];return s[0]+t+" "+e.join(", ")+" "+s[1]}(k,T,E)):E[0]+T+E[1]}function l(e){return"["+Error.prototype.toString.call(e)+"]"}function u(e,t,s,i,r,n){var a,o,l;if((l=Object.getOwnPropertyDescriptor(t,r)||{value:t[r]}).get?o=l.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):l.set&&(o=e.stylize("[Setter]","special")),M(i,r)||(a="["+r+"]"),o||(e.seen.indexOf(l.value)<0?(o=f(s)?c(e,l.value,null):c(e,l.value,s-1)).indexOf("\n")>-1&&(o=n?o.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+o.split("\n").map(function(e){return" "+e}).join("\n")):o=e.stylize("[Circular]","special")),g(a)){if(n&&r.match(/^\d+$/))return o;(a=JSON.stringify(""+r)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+o}function h(e){return Array.isArray(e)}function m(e){return"boolean"==typeof e}function f(e){return null===e}function d(e){return"number"==typeof e}function p(e){return"string"==typeof e}function g(e){return void 0===e}function y(e){return v(e)&&"[object RegExp]"===k(e)}function v(e){return"object"==typeof e&&null!==e}function x(e){return v(e)&&"[object Date]"===k(e)}function S(e){return v(e)&&("[object Error]"===k(e)||e instanceof Error)}function b(e){return"function"==typeof e}function k(e){return Object.prototype.toString.call(e)}function T(e){return e<10?"0"+e.toString(10):e.toString(10)}e.debuglog=function(t){if(g(i)&&(i=process.env.NODE_DEBUG||""),t=t.toUpperCase(),!r[t])if(new RegExp("\\b"+t+"\\b","i").test(i)){var s=process.pid;r[t]=function(){var i=e.format.apply(e,arguments);console.error("%s %d: %s",t,s,i)}}else r[t]=function(){};return r[t]},e.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=h,e.isBoolean=m,e.isNull=f,e.isNullOrUndefined=function(e){return null==e},e.isNumber=d,e.isString=p,e.isSymbol=function(e){return"symbol"==typeof e},e.isUndefined=g,e.isRegExp=y,e.isObject=v,e.isDate=x,e.isError=S,e.isFunction=b,e.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},e.isBuffer=ai;var w=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function M(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.log=function(){var t,s;console.log("%s - %s",(t=new Date,s=[T(t.getHours()),T(t.getMinutes()),T(t.getSeconds())].join(":"),[t.getDate(),w[t.getMonth()],s].join(" ")),e.format.apply(e,arguments))},e.inherits=oi.exports,e._extend=function(e,t){if(!t||!v(t))return e;for(var s=Object.keys(t),i=s.length;i--;)e[s[i]]=t[s[i]];return e};var E="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function N(e,t){if(!e){var s=new Error("Promise was rejected with a falsy value");s.reason=e,e=s}return t(e)}e.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(E&&e[E]){var s;if("function"!=typeof(s=e[E]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(s,E,{value:s,enumerable:!1,writable:!1,configurable:!0}),s}function s(){for(var t,s,i=new Promise(function(e,i){t=e,s=i}),r=[],n=0;n>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&mi.rotl(e,8)|4278255360&mi.rotl(e,24);for(var t=0;t0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],s=0,i=0;s>>5]|=e[s]<<24-i%32;return t},wordsToBytes:function(e){for(var t=[],s=0;s<32*e.length;s+=8)t.push(e[s>>>5]>>>24-s%32&255);return t},bytesToHex:function(e){for(var t=[],s=0;s>>4).toString(16)),t.push((15&e[s]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],s=0;s>>6*(3-r)&63)):t.push("=");return t.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var t=[],s=0,i=0;s>>6-2*i);return t}},di.exports=mi;var pi={utf8:{stringToBytes:function(e){return pi.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(pi.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],s=0;s>5]|=128<<24-r%32,i[15+(r+64>>>9<<4)]=r;for(var h=0;h>>31}var x=(a<<5|a>>>27)+u+(n[y]>>>0)+(y<20?1518500249+(o&c|~o&l):y<40?1859775393+(o^c^l):y<60?(o&c|o&l|c&l)-1894007588:(o^c^l)-899497514);u=l,l=c,c=o<<30|o>>>2,o=a,a=x}a+=m,o+=f,c+=d,l+=p,u+=g}return[a,o,c,l,u]}(i));return r&&r.asBytes?n:r&&r.asString?s.bytesToString(n):e.bytesToHex(n)};i._blocksize=16,i._digestsize=20,fi.exports=i}();var yi=fi.exports;const vi=({page:e,backgroundImage:t,detection:s,imageSize:i,position:r})=>{const n=(s.phi2-s.phi1)/s.interval,a=i.height/s.interval,o=e.systems[e.systems.length-1],c=r?r.y:(o?o.top+o.height:0)+4,l=r?r.x:4,u=[0,...Array(s.middleRhos.length-1).fill(0).map((e,t)=>(s.middleRhos[t]+s.middleRhos[t+1])/2/s.interval)],h=[n],m=u.map((e,t)=>new Staff({top:e,height:(u[t+1]||a)-e,staffY:s.middleRhos[t]/s.interval-e,measureBars:h})),f={x:-s.phi1/s.interval,y:0,width:i.width/s.interval,height:i.height/s.interval};return new System({staves:m,left:l,top:c,width:n,backgroundImage:t,imagePosition:f,measureBars:h})};async function xi(e,{format:t="webp",maxHeight:s=1080,quality:i=80}={}){let r=await(async e=>"string"==typeof e?/^https?:\/\//.test(e)?(await T.default(e,{responseType:"buffer",decompress:!0,https:{rejectUnauthorized:!1}})).body:/^data:image\//.test(e)?Buffer.from(e.split(",")[1],"base64"):Buffer.from(e):e)(e);const n=await new Promise(e=>{k.default(r).resize({width:s,height:s,fit:"inside",withoutEnlargement:!0}).toFormat(t,{quality:i}).toBuffer((t,s)=>{e(s)})});return{buffer:n,filename:`${b.default.ArrayBuffer.hash(n)}.${t}`}}globalThis.OffscreenCanvas=globalThis.OffscreenCanvas||c.Canvas,globalThis.Image=globalThis.Image||c.Image,globalThis.btoa=globalThis.btoa||(e=>Buffer.from(e,"binary").toString("base64"));const Si=32,bi={viewportHeight:256,viewportUnit:8},ki=192,Ti=8,wi={viewportHeight:192,viewportUnit:8};const Mi=e=>Promise.all(e.map(e=>e())),Ei=async(e,t,{paddingLeft:s=0,scaling:i=1,spec:r})=>{if(!e||!e.backgroundImage)return null;const n=e.staves[t];if(!n)return null;const a=r.viewportHeight/r.viewportUnit/2,o=e.imagePosition.width*r.viewportUnit,l=e.imagePosition.height*r.viewportUnit,u=e.imagePosition.x*r.viewportUnit+s,h=(e.imagePosition.y-(n.top+n.staffY-a))*r.viewportUnit,m=new c.Canvas(Math.round(o+u)*i,r.viewportHeight*i),f=m.getContext("2d");return f.fillStyle="white",f.fillRect(0,0,m.width,m.height),f.drawImage(await c.loadImage(e.backgroundImage),u*i,h*i,o*i,l*i),m};async function Ni({system:e,staff:t,staffIndex:s}){const i=await Ei(e,s,{paddingLeft:Si,spec:wi});t.backgroundImage=i.toBufferSync("png"),t.imagePosition={x:-32/wi.viewportUnit,y:t.staffY-wi.viewportHeight/2/wi.viewportUnit,width:i.width/wi.viewportUnit,height:i.height/wi.viewportUnit}}async function Ii({system:e,staff:t,staffIndex:s,gaugeImage:i,pyClients:r}){const n=(await Ei(e,s,{paddingLeft:Si,spec:bi,scaling:2})).toBufferSync("png"),a=(e.middleY-(t.top+t.staffY))*bi.viewportUnit+bi.viewportHeight/2,{buffer:o,size:c}=await r.predictScoreImages("gaugeRenderer",[n,i,a]);t.backgroundImage=o,t.imagePosition={x:-32/bi.viewportUnit,y:t.staffY-c.height/2/bi.viewportUnit,width:c.width/bi.viewportUnit,height:c.height/bi.viewportUnit},t.maskImage=null}async function Ci({staff:e,staffIndex:t,maskImage:s}){const i=await c.loadImage(s);e.maskImage=s,e.imagePosition={x:-32/Ti,y:e.staffY-ki/2/Ti,width:i.width/Ti,height:i.height/Ti}}async function _i({score:e,staffIndex:t,system:s,staff:i,graph:r}){r.offset(-32/wi.viewportUnit,0),s.assignSemantics(t,r),i.assignSemantics(r),i.clearPredictedTokens(),e.assembleSystem(s,e.settings?.semanticConfidenceThreshold||1)}function Oi(e,t){[[e.source,"url"],...e.systems.map(e=>[[e,"backgroundImage"],...e.staves.map(e=>[[e,"backgroundImage"],[e,"maskImage"]]).flat()]).flat()].map(([e,s])=>{e[s]=t(e[s])})}class OMRProgress{constructor(e){this.state={},this.onChange=e}setTotal(e,t){this.state[e]=this.state[e]||{total:t,finished:0}}increase(e,t=1){(this.state[e]||{finished:0}).finished+=t,this.onChange(this.state)}}const Bi=new l.WeakLRUCache,Ai={get:async e=>Bi.getValue(e),async set(e,t){Bi.setValue(e,t)}},Pi=async e=>{if(e instanceof Buffer||"string"==typeof e&&(/^https?:\/\//.test(e)||/^data:image\//.test(e))){return`data:image/webp;base64,${(await xi(e)).buffer.toString("base64")}`}return e},Ri=e=>{const t=Math.random();let s=0;for(let i=0;it)return i;return e.length-1},Di=(e,t=.9)=>{const s=e.map(e=>Math.log(e)*t).map(Math.exp),i=s.reduce((e,t)=>e+t,0);return s.map(e=>e/i)},Fi=e=>{if(!e.predisposition?.divisionVector&&!e.predisposition?.dotsVector)return e;const t=e.predisposition?.divisionVector?Di(e.predisposition.divisionVector):null,s=e.predisposition?.dotsVector?Di(e.predisposition.dotsVector):null;return new EventTerm({...e,predisposition:{...e.predisposition,divisionVector:t,dotsVector:s}})};class MeasureRectification{constructor(e){Object.assign(this,e)}toString(){return this.events.map(e=>{if(!e)return"";const{division:t="",dots:s=""}=e;return`${t}|${s}`}).join(",")}static default(e){return new MeasureRectification({events:e.map(e=>{if(!e.predisposition?.divisionVector&&!e.predisposition?.dotsVector)return null;const t=e.predisposition.divisionVector?e.division:void 0,s=e.predisposition.dotsVector?e.dots:void 0;return{id:e.id,division:t,dots:s}})})}static roll(e){return new MeasureRectification({events:e.map(e=>{if(!e.predisposition?.divisionVector&&!e.predisposition?.dotsVector)return null;let t,s;return e.predisposition.divisionVector&&(t=Ri(e.predisposition.divisionVector)),e.predisposition.dotsVector&&(s=Ri(e.predisposition.dotsVector)),{id:e.id,division:t,dots:s}})})}}const Li=new l.WeakLRUCache,$i={get:async e=>Li.getValue(e),async set(e,t){Li.setValue(e,t)},batchGet:async e=>e.map(e=>Li.getValue(e))};var ji;!function(e){e[e.ErrorOnly=0]="ErrorOnly",e[e.NotFine=1]="NotFine",e[e.Imperfect=2]="Imperfect"}(ji||(ji={}));const Hi=async(e,t,s,i,r=ji.NotFine,n=0,a)=>{const o=e.filter(({evaluation:e})=>!e||((e,t)=>{switch(t){case ji.ErrorOnly:return e.error;case ji.Imperfect:return!e.perfect}return!e.fine})(e,r));s?.write(".".repeat(o.length)),s?.write("\b".repeat(o.length));const c=o.length;let l=0;for(const e of o){const s=e.current.deepCopy();s.staffGroups=e.current.staffGroups;const r=await Rs(s,{picker:e.picker,...i});s.applySolution(r);const o=Ke(s),u=!e.evaluation||o.fine>e.evaluation.fine||o.qualityScore>e.evaluation.qualityScore&&o.fine===e.evaluation.fine;u&&(e.evaluation=o,Object.assign(e.current,s)),t(e.current,o,u),l++,a?.(e.current,o,u,{pass:n,remaining:c-l,total:c})}return o.length&&s?.write("\n"),o.length};globalThis.btoa=globalThis.btoa||(e=>Buffer.from(e,"binary").toString("base64"));const Vi=parseInt(process.env.RECTIFICATION_SEARCH_ITERATIONS||"30"),zi=parseInt(process.env.BASE_QUOTA_FACTOR||"40"),qi=parseInt(process.env.RECTIFICATION_QUOTA_FACTOR||"80"),Gi=(e,t,s)=>Math.min(Math.ceil((e+1)*t*Math.log(e+2)),Math.ceil(s*Math.min(1,(24/(e+1))**2)));async function Wi(e,{solver:t,quotaMax:s=1e3,quotaFactor:i=zi,solutionStore:r=$i,ignoreCache:n=!1,logger:a}={}){let o=0,c=0;return a?.info(`[solveMeasures] begin, measure total: ${e.length}.`),await Promise.all(e.map(async l=>{if(!n){const e=await r.get(l.regulationHash);if(e)return l.applySolution(e),void++o}const u=Gi(l.events.length,i,s);await l.regulate({policy:"equations",quota:u,solver:t});const h=Ke(l);h.error||r.set(l.regulationHash0,{...l.asSolution(),priority:-l?.solutionStat?.loss}),h.perfect&&++c,a?.info(`[solveMeasures] measure[${l.measureIndex}/${e.length}] regulated: ${h.perfect?"solved":h.error?"error":"issue"}, ${l.regulationHash}`)})),a?.info(`[solveMeasures] ${o}/${e.length} cache hit, ${c} solved.`),{cached:o,computed:e.length-o,solved:c}}const Ui=async(e,{solver:t,quotaMax:s=4e3})=>{let i=Ke(e),r=e.asSolution();const n=Gi(e.events.length,qi,s);let a=0;for(const s of function*(e){const t=new Set,s=MeasureRectification.default(e.events);t.add(s.toString()),yield s;let i=0,r=e.events;for(;i<100;){i&&i%10==0&&(r=r.map(Fi));const e=MeasureRectification.roll(r),s=e.toString();t.has(s)?++i:(i=0,t.add(s),yield e)}}(e)){const o=await ys.regulateMeasureWithRectification(e,s,{solver:t,quota:n}),c=e.deepCopy();c.applySolution(o);const l=Ke(c);if((l.perfect>i.perfect||l.error=i.perfect&&o.priority>r.priority)&&(i=l,r=o),l.perfect)break;if(++a,a>Vi)break}return r};const Yi=async(e,{solver:t,solutionStore:s=$i,logger:i,quotaMax:r=240,quotaFactor:n=16})=>{e.assemble();const a=e.spartito||e.makeSpartito(),o=a.measures.filter(e=>!e.regulated);await Wi(o,{solver:t,quotaMax:r,quotaFactor:n,solutionStore:s,logger:i}),console.assert(e.spartito?.regulated,"doSimpleRegulate: regulation incomplete:",a.measures.filter(e=>!e.regulated).length)};console.info("%cstarry-omr%c v1.0.0 2026-02-20T12:53:44.892Z","color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;","color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;"),exports.DefaultSolutionStore=$i,exports.PyClients=class PyClients{constructor(e,t=console){this.options=e,this.logger=t,this.clients=new Map}async getClient(e){if(this.clients.has(e))return this.clients.get(e);const[t,s,i]=ri(),r=this.options[e];if(!r)throw new Error(`no config for client \`${e}\` found`);try{if("string"==typeof r){const e=new ZeroClient;e.bind(r),s(e)}else{const{scriptPath:e,...t}=r,i=new PyProcessor(e,t,this.logger);await i.bind(`${await ui()}`),s(i)}this.logger.info(`PyClients: ${e} started`)}catch(t){this.logger.error(`PyClients: ${e} start fail: ${JSON.stringify(t)}`),i(t)}return this.clients.set(e,t),t}async checkHost(e){return(await this.getClient(e)).request("checkHost")}async warmup(){const e=Object.keys(this.options);await Promise.all(e.map(e=>this.getClient(e)))}async predictScoreImages(e,...t){const s=e.split("$")[0],i=await this.getClient(s);let r=null;this.logger.info(`[predictor]: ${e} py start..`);const n=Date.now();switch(e){case"layout":r=await i.request("predictDetection",t);break;case"layout$reinforce":r=await i.request("predictReinforce",t);break;case"gauge":case"mask":r=await i.request("predict",t,{by_buffer:!0});break;case"semantic":case"textLoc":r=await i.request("predict",t);break;case"textOcr":case"brackets":case"topo":case"gaugeRenderer":case"jianpu":r=await i.request("predict",...t);break;default:this.logger.error(`[predictor]: no predictor ${e}`)}return this.logger.info(`[predictor]: ${e} py duration: ${Date.now()-n}ms`),r}},exports.abstractOMRStats=e=>{const{costTotal:t,pagesCostTotal:s,pagesTotal:i}=e.reduce((e,t)=>({costTotal:e.costTotal+t.cost,pagesCostTotal:e.pagesCostTotal+t.pagesCost,pagesTotal:e.pagesTotal+t.pages}),{costTotal:0,pagesCostTotal:0,pagesTotal:0});return{costTotal:t,costPerPage:i?t/i:null,pagesTotal:i,scoreN:e.length}},exports.abstractRegulationBeadStats=e=>{const{totalCost:t,pickerCost:s,measureN:i,timeN:r}=e.reduce((e,t)=>({totalCost:e.totalCost+t.totalCost,pickerCost:e.pickerCost+t.pickerCost,measureN:e.measureN+t.measures.computed,timeN:e.timeN+t.measures.tryTimes}),{totalCost:0,pickerCost:0,measureN:0,timeN:0}),n=i>0?t/i:null,a=r>0?t/r:null,{cached:o,simple:c,computed:l,tryTimes:u,solved:h,issue:m,fatal:f}=e.reduce((e,t)=>({cached:e.cached+t.measures.cached,simple:e.simple+t.measures.simple,computed:e.computed+t.measures.computed,tryTimes:e.tryTimes+t.measures.tryTimes,solved:e.solved+t.measures.solved,issue:e.issue+t.measures.issue,fatal:e.fatal+t.measures.fatal}),{cached:0,simple:0,computed:0,tryTimes:0,solved:0,issue:0,fatal:0});return{scoreN:e.length,totalCost:t,pickerCost:s,costPerMeasure:n,costPerTime:a,cached:o,simple:c,computed:l,tryTimes:u,solved:h,issue:m,fatal:f}},exports.abstractRegulationStats=e=>{const{baseCostTotal:t,topoCostTotal:s,baseMeasures:i,topoMeasures:r}=e.reduce((e,t)=>({baseCostTotal:e.baseCostTotal+t.baseCost,topoCostTotal:e.topoCostTotal+t.topoCost,baseMeasures:e.baseMeasures+t.baseMeasures.computed,topoMeasures:e.topoMeasures+(t.topoMeasures.solved+t.topoMeasures.issue+t.topoMeasures.fatal)}),{baseCostTotal:0,topoCostTotal:0,baseMeasures:0,topoMeasures:0}),n=i>0?t/i:null,a=r>0?s/r:null,{cached:o,baseComputed:c,baseSolved:l,topoSolved:u,topoIssue:h,topoFatal:m}=e.reduce((e,t)=>({cached:e.cached+t.baseMeasures.cached,baseComputed:e.baseComputed+t.baseMeasures.computed,baseSolved:e.baseSolved+t.baseMeasures.solved,topoSolved:e.topoSolved+t.topoMeasures.solved,topoIssue:e.topoIssue+t.topoMeasures.issue,topoFatal:e.topoFatal+t.topoMeasures.fatal}),{cached:0,baseComputed:0,baseSolved:0,topoSolved:0,topoIssue:0,topoFatal:0});return{scoreN:e.length,baseCostTotal:t,topoCostTotal:s,baseCostPerMeasure:n,topoCostPerMeasure:a,cached:o,baseComputed:c,baseSolved:l,topoSolved:u,topoIssue:h,topoFatal:m}},exports.constructSystem=vi,exports.convertImage=xi,exports.doRegulate=async(e,{pyClients:t,solver:s,solutionStore:i=$i,onSaveIssueMeasure:r})=>{t?.logger?.info(`[doRegulate] score: ${e.title}`),e.spartito=void 0,e.assemble();const n=e.makeSpartito();n.measures.forEach(t=>e.assignBackgroundForMeasure(t));const a=Date.now(),o=await Wi(n.measures,{solver:s,quotaMax:1e3,solutionStore:i,logger:t?.logger}),c=Date.now(),l=t?await async function(e,{pyClients:t,solver:s,solutionStore:i=$i,onSaveIssueMeasure:r}){t.logger.info(`[RegulateWithTopo] regulate score: ${e.title}, measures: ${e.spartito.measures.length}`);const n=e.spartito.measures.filter(e=>!Ke(e).perfect);if(t.logger.info(`[RegulateWithTopo] basic issues: ${n.length}`),0===n.length)return{solved:0,issue:0,fatal:0};const a=[].concat(...n.map(e=>e.createClusters())),o=await t.predictScoreImages("topo",{clusters:a});console.assert(o.length===a.length,"prediction number mismatch:",a.length,o.length),a.forEach((e,t)=>{const s=o[t];console.assert(s,"no result for cluster:",e.index),e.assignPrediction(s)}),n.forEach(e=>{const t=a.filter(t=>t.index===e.measureIndex);e.applyClusters(t);const{matrixH:s}=ys.estiamteMeasure(e);s.forEach((t,s)=>t.forEach((t,i)=>{e.matrixH[s][i]=.9*e.matrixH[s][i]+t*(1-.9)}))});const c=[],l=[];await Promise.all(n.map(async e=>{const n=e.regulationHash0,a=await Ui(e,{solver:s});a&&(e.applySolution(a),i.set(n,a),i.set(e.regulationHash,e.asSolution()),t.logger.info(`[RegulateWithTopo] solutionStore set: ${e.measureIndex}, ${n}, ${e.regulationHash}`));const o=Ke(e);r?.({measureIndex:e.measureIndex,measure:new EditableMeasure(e),status:o.error?2:1}),o.perfect?c.push(e.measureIndex):o.error&&l.push(e.measureIndex)}));const u=n.length-c.length-l.length;return t.logger.info(`[RegulateWithTopo] score: ${e.title}, solved/issue/fatal: ${c.length}/${u}/${l.length}`),c.length&&t.logger.info(`[RegulateWithTopo] solved measures: ${c.join(", ")}`),l.length&&t.logger.info(`[RegulateWithTopo] error measures: ${l.join(", ")}`),{solved:c.length,issue:u,fatal:l.length}}(e,{pyClients:t,solver:s,solutionStore:i,onSaveIssueMeasure:r}):void 0;return{baseCost:c-a,topoCost:Date.now()-c,baseMeasures:o,topoMeasures:l,qualityScore:n.qualityScore}},exports.doSimpleRegulate=Yi,exports.encodeFindResource=function(e){const t=e.spartito.perform(),s=e.systems.map(e=>e.staves.map(e=>e?.maskImage)).flat(),i=s.filter(Boolean).length>s.length/2,r={},n=new Map,a=new Map,o=new Map;r.unitSize=e.unitSize,r.title={title:e.title};const c=e.pages[0].tokens;if(Array.isArray(c)&&c.length>0){const[t,...s]=c.filter(e=>e.type===B.Text&&"Title"===e.textType).sort((e,t)=>t.fontSize-e.fontSize);t&&(r.title.title=t.text,r.title.t={size:t.fontSize}),s?.length>0&&(s.sort((e,t)=>e.y-t.y),r.title.subtitle=s.map(e=>e.text).join("\n"),r.title.s={size:s.reduce((e,t)=>e+t.fontSize,0)/s.length});const i=c.filter(t=>t.type===B.Text&&"Author"===t.textType&&t.x>e.pages[0].width/2);i.length>0&&(r.title.composer=i.map(e=>e.text).join("\n"),r.title.c={size:i.reduce((e,t)=>e+t.fontSize,0)/i.length})}if(r.page={w:e.pages[0].width,h:e.pages[0].height},r.pages=e.pages.map(t=>{const s=t.source.dimensions.width/t.source.interval,i=t.source.dimensions.height/t.source.interval,[r,n,a,o]=t.source.matrix;return{src:t.source.url,w:s,h:i,x:0,y:0,l1:e.systems.indexOf(t.systems[0]),ls:t.systems.length,matrix:[r,n,a,o,-.5*r*s+-.5*i*a+.5*t.width||0,-.5*n*s+-.5*i*o+.5*t.height||0]}}),r.parts=[],r.lines=[],i){const t=e.staffLayout.partGroups.map(e=>e.range[0]===e.range[1]?[e.range[0]]:e.range),s=e.getTokenMap(),i=[];for(const[c,l]of t.entries()){const u=t.slice(0,c).flat().length,h={measures:[]};e.systems.forEach((r,m)=>{const f=r.staves.slice(),d=t.flat().map(e=>1<m+1&&(p[m+1]=p[m]);continue}const g=[];for(const e of l){const t=d[e];t&&g.push(...t.measures[m].getChords().map(t=>({chord:t,staffIndexInPart:e-u})))}let y=0;const v=p[m],x=[];g.forEach(({staffIndexInPart:l,chord:u})=>{const h=[];let d=u.tip?u.tip.x:u.right-u.left/2;u.noteIds.forEach((e,i)=>{const r=s.get(e),m=`n_${t.length>1?c+"_":""}${f}_${y}`;y++,n.set(r.id,m),a.set(r.id,(r.left+r.right)/2-v),o.set(r.id,l+1),h.push({line:2*-u.ys[i],id:m,staff:l+1,x:(r.left+r.right)/2-d})}),i[f]=i[f]||[],i[f].push(d-v);const p=e.spartito.measures[r.headMeasureIndex+m].events.filter(e=>e.noteIds.some(e=>u.noteIds.includes(e)));x.push({elems:h,x:d-v,type:2**u.division,...p.some(e=>e.grace)?{grace:{}}:{}})}),h.measures[f]={w:p[m+1]-p[m],staves:l.length,notes:x}}});let m=null;e.spartito.measures.forEach((s,i)=>{const r=e.spartito.measureIndexMapping[i],n=s.contexts.flat().filter(e=>js.includes(e.tokenType)&&l.includes(e.staff)).map(e=>{const s=t.find(t=>t.includes(e.staff));return{x:e.x,clef:Hs(e),staff:s.indexOf(e.staff)+1,tick:e.tick}});n.length>0&&h.measures[r]&&(h.measures[r].clefs=n);const a=s.basics.filter((e,t)=>1<0&&(r.parts[c]=h)}e.systems.forEach((s,i)=>{const n=[],a=s.staves[0],o=s.staves[s.staves.length-1],c=a.top+a.staffY-2,l=o.top+o.staffY-2,u=s.staves.slice(),h=t.flat().map(e=>!(1<h.find(t=>t?.index===e)||null),a=t.map((e,t)=>[t,!e]).filter(e=>e[1]);let o=null;a.length>0&&(o=Object.fromEntries(a.map(e=>[e[0]+1,{hide:e[1]}])));let l=0,u=0;const f=t.filter(e=>!!e);if(f.length>0){const e=f[0],t=f[f.length-1],s=e.top+e.staffY-2,i=t.top+t.staffY-2;l=s-c,u=i-s+4}const{list:d,last:p}=t.reduce((e,t,s)=>(null===e.last||null===t?0===s&&l>0?e.list.push(l-4):e.list.push(0):e.list.push(t.top+t.staffY-(e.last.top+e.last.staffY)-4),e.last=t||e.last,e),{last:m,list:[]});m=p;const g=t.map(e=>{if(e?.maskImage){const t=e.imagePosition;return{src:e.maskImage,x:t.x,y:s.top+e.top+t.y-(s.top+e.top+e.staffY-2),w:t.width,h:t.height}}return null}),y=e.spartito.measures[s.headMeasureIndex];n.push({distances:d,imgs:g,y:l,staves:r.length,parti:i,height:u,...o?{details:o}:{},clef:Object.fromEntries(e.spartito.measures[s.headMeasureIndex]?.contexts.flat().filter(e=>js.includes(e.tokenType)&&r.includes(e.staff)).map(e=>[e.staff,Hs(e)])),fifths:y.basics.filter((e,t)=>1<e.spartito.measureIndexMapping[s.headMeasureIndex+i]).filter(e=>Number.isFinite(e));r.lines[i]={m1:f[0],m2:f.length>0?f[f.length-1]+1:void 0,x:s.left,y:s.top+c,w:s.measureBars[s.measureBars.length-1],h:l-c+4,lineStaves:n}});const c={0:"default",1:"brace",2:"bracket",3:"square"},l=Ee(e.staffLayoutCode),u=l.partGroups.map(e=>({sort:e.range[0],part:e})).sort((e,t)=>e.sort-t.sort).map(e=>e.part);r.groups=l.groups.filter(e=>0!==e.group.type).map((e,t)=>({type:c[e.group.type],p1:u.findIndex(t=>t.range.includes(e.range[0])),p2:u.findIndex(t=>t.range.includes(e.range[e.range.length-1]))})).filter(e=>"default"!==e.type)}let l;if(t&&(r.measInfo=t.notation.measures.map((e,t)=>{const s=new Map;return e.notes.forEach(e=>{s.set(e.tick,[...s.get(e.tick)||[],a.get(e.id)])}),Array.from(s.entries()).sort((e,t)=>+e[0]-t[0]).reduce((e,t,s)=>{const i=t[1].find(t=>t>e.last)||t[1][0];return e.list.push(i),e.last=i,e},{last:null,list:[]}).list.filter(Number.isFinite)})),t){l={};const s=new Map;let i,r;t.notation.measures.forEach((e,t)=>{const{numerator:s,denominator:n}=e.timeSignature;l.beats||l.beatsUnit||(l.beats=s,l.beatsUnit=n,i=s,r=n),l.beatInfos=l.beatInfos||[],i===s&&r===n||(i=s,r=n,l.beatInfos.push({tick:e.tick,beats:s,beatsUnit:n})),l.tempos=l.tempos||[],e.events.forEach(t=>{"meta"===t.data.type&&"setTempo"===t.data.subtype&&l.tempos.push({tick:e.tick,tempo:t.data.microsecondsPerBeat})})}),l.measures=t.notation.measures.reduce((e,t,i)=>{const r=Array.from(new Set(t.notes.map(e=>e.tick))).sort((e,t)=>e-t);return t.notes.forEach(e=>{s.set(e.id,r.indexOf(e.tick))}),e[t.tick]={measure:i,duration:t.duration,note_ticks:r},e},{}),l.measureInfos=t.notation.measures.map((e,t)=>({number:String(t+1),fifths:e.keySignature,beats:e.timeSignature.numerator,beatUnit:e.timeSignature.denominator}));const a=t.notation.toPerformingMIDI(t.notation.measures.map((e,t)=>t+1)).tracks,{partGroups:c}=e.staffLayout;let u=a.map((t,s)=>{const i=c[s].key;let r;switch(i){case"vi":case"vi1":case"vi2":r=40;break;case"viola":r=42;break;case"vo":r=55;break;case"basso":r=71;break;default:r=0}return{program:r,channel:s,name:e.instrumentDict[i]??"Piano",track:t}});if(c.some(e=>e.group.grand)){const t=/l\.?h\.?|左手|left hand/i,s=/r\.?h\.?|右手|right hand/i,i=Object.entries(e.instrumentDict).filter(([e,i])=>t.test(i)||s.test(i)).map(([e,s])=>({key:e,hand:t.test(s)?"left":"right"}));let r,n=null;if(2===i.length&&i[0].hand!==i[1].hand){const t=i.find(e=>"left"===e.hand),s=i.find(e=>"right"===e.hand);n=[e.staffLayout.staffIds.findIndex(e=>e===s?.key),e.staffLayout.staffIds.findIndex(e=>e===t?.key)],r=c.findIndex(e=>e.range[0]<=Math.min(...n)&&e.range[1]>=Math.max(...n))}if(Number.isFinite(r)&&r>-1){const e=u[r],t=[];e.track.forEach(e=>{Number.isFinite(e.staff)&&(t[e.staff]||(t[e.staff]=[]),t[e.staff].push(e)),"meta"===e.type&&t.forEach(t=>{t.push(e)})}),u.splice(r,1,t.filter(Boolean).map(t=>({...e,track:t}))),u=u.flat(),l.rightHandTrack=n[0],l.leftHandTrack=n[1]}else u.sort((e,t)=>e===u[r]?-1:0)}l.tracks=u.map(({program:e,channel:t,name:s})=>({program:e,channel:t,name:s}));const h=u.map(({track:e})=>{const t=new Map;return e.map(e=>{if("noteOn"===e.subtype&&t.set(e.noteNumber,e),"noteOff"===e.subtype){const s=t.get(e.noteNumber);s?.noteNumber===e.noteNumber&&(s.duration=e.ticks-s.ticks)}return e})}),m=new Map(Object.entries(l.measures).map(([e,t])=>[t.measure,+e]));l.events=h.map((e,t)=>e.filter(e=>"channel"===e.type).map(e=>{e?.ids?.[0]&&(e.numId=n.get(e.ids[0]));let i=[0,0,0];switch(e.subtype){case"noteOn":i=[144|e.channel,e.noteNumber,e.velocity];break;case"noteOff":i=[128|e.channel,e.noteNumber,e.velocity?e.velocity:0];break;case"noteAftertouch":i=[160|e.channel,e.noteNumber,e.amount];break;case"controller":i=[176|e.channel,e.controllerType,e.value];break;case"programChange":i=[192|e.channel,e.programNumber,0];break;case"channelAftertouch":i=[208|e.channel,e.amount,0];break;case"pitchBend":i=[224|e.channel,255&e.value,e.value>>7&255];break;default:throw new Error("unhandled event subtype:"+e.subtype)}return{..."noteOn"===e.subtype?{id:n.get(e?.ids?.[0])}:{},tick:e.ticks,channel:e.channel,duration:e.duration,track:t,event:i,elem_ids:e?.ids.map(e=>n.get(e)),measure:e.measure-1,meas_start_tick:m.get(e.measure-1),staff:o.get(e.ids[0]),note:s.get(e.ids[0])}})).flat(1).sort((e,t)=>{for(const s of["tick","measure","track"])if(e[s]!==t[s])return e[s]-t[s];return 0})}return{scoreJson:r,midiJson:l}},exports.evaluateScoreQuality=async(e,t)=>(e.spartito?.regulated||await Yi(e,t),e.spartito.regulated?e.spartito.qualityScore:null),exports.getScoreJsonImages=e=>[...e.pages.map(e=>e?.src),...e.lines.map(e=>e.lineStaves.map(e=>e.imgs)).flat(2).map(e=>e?.src).filter(Boolean)],exports.predictPages=async(e,t,s={outputWidth:1200,pageStore:Ai,onReplaceImage:Pi})=>{const i=e.logger;s.outputWidth=s.outputWidth||1200,s.pageStore=s.pageStore||Ai,s.onReplaceImage=s.onReplaceImage||Pi,s.processes=Array.isArray(s.processes)&&s.processes.length>0?s.processes:["layout","text","gauge","mask","semantic","brackets"];const r=new OMRProgress(s.onProgress),n=Date.now();t.forEach(e=>{e.layout?.detection?e.layout.detection.areas=e.layout.detection?.areas?.filter(e=>e?.staves?.middleRhos?.length>0):delete e.layout});const a=new Score({title:s?.title,stavesCount:2,paperOptions:{raggedLast:!0,raggedLastBottom:!0},headers:{},instrumentDict:{},settings:{enabledGauge:s.processes.includes("gauge"),semanticConfidenceThreshold:1}});i.info(`[predictor]: download_source_images-${t.length}`);const o=await Promise.all(t.map(e=>c.loadImage(e.url)));i.info(`[predictor]: source_images_downloaded-${t.length}`);const l=o.map((e,s)=>function(e,t){let s=e.height/e.width*t;const i=new c.Canvas(t,s);return i.getContext("2d").drawImage(e,0,0,t,t*e.height/e.width),i}(e,t[s].layout?.sourceSize?.width??e.width));r.setTotal("layout",o.length),r.setTotal("text",o.length);const u=await Promise.all(l.map(async(s,i)=>t[i].layout?!t[i].enableGauge&&t[i]?.layout?.detection?.areas?.length?(await e.predictScoreImages("layout$reinforce",[s.toBufferSync("png")],[t[i].layout]))?.[0]:t[i].layout:(await e.predictScoreImages("layout",[s.toBufferSync("png")]))?.[0]));u.forEach(e=>{e.detection.areas=e.detection?.areas?.filter(e=>e?.staves?.middleRhos?.length>0)});const h=new Map,m=async e=>{const t=await s.onReplaceImage(e);h.set(e,t)};async function f(e,i){const{url:n,key:o,layout:u,enableGauge:h}=t[i],m=yi(JSON.stringify({key:o||n,layout:u,enableGauge:h})),f=await s.pageStore.get(m),d=!s.renew&&(f&&!t[i].renew||!e.detection.areas?.length),p=a.pages[i]=d&&f?ae(f,$s):new Page({source:{name:o||("string"==typeof n&&/https?:\/\//.test(n)?n:null),size:0,url:n,crop:{unit:"%",x:0,y:0,width:100,height:100},dimensions:e.sourceSize,matrix:[Math.cos(e.theta),-Math.sin(e.theta),Math.sin(e.theta),Math.cos(e.theta),0,0],interval:e.interval,needGauge:t[i].enableGauge},layout:e.detection}),g=d?null:await async function({page:e,score:t,pageCanvas:s}){if(!e?.layout?.areas?.length)return null;e.width=t.pageSize.width/t.unitSize,e.height=t.pageSize.height/t.unitSize;const i=new c.Canvas(s.width,s.height),r=i.getContext("2d");r.save();const{width:n,height:a}=i,[o,l,u,h]=e.source.matrix;r.setTransform(o,l,u,h,-.5*n+.5*o*n+.5*l*a,-.5*a+.5*u*n+.5*h*a),r.drawImage(s,0,0),r.restore();const m=e.source.interval;return e.layout.areas.map((t,i)=>{console.assert(t.staves?.middleRhos?.length,"[shootImageByDetection] empty area:",t);const n=r.getImageData(t.x,t.y,t.width,t.height),a=new c.Canvas(t.width,t.height);a.getContext("2d").putImageData(n,0,0);const o=t.staves,l={width:t.width,height:t.height},u=s.width/2/m,h=s.height/2/m,f={x:(t.x+t.staves.phi1)/m-u+e.width/2,y:t.y/m-h+e.height/2};e.systems[i]=vi({page:e,backgroundImage:a.toBufferSync("png"),detection:o,imageSize:l,position:f})}),i}({score:a,page:p,pageCanvas:l[i]});return r.increase("layout"),{page:p,omit:d,hash:m,correctCanvas:g}}!function(e,t,s){const i=t.filter(e=>e&&e.detection&&e.detection.areas?.length).map((e,t)=>{const s=Math.min(...e.detection.areas.filter(e=>e.staves?.middleRhos?.length).map(e=>e.staves.interval)),i=e.sourceSize;return{...e,index:t,vw:i.width/s,hwr:i.height/i.width}});if(!i.length)throw new Error("empty result");const r=i.sort((e,t)=>t.vw-e.vw)[0],n=Math.max(...i.map(e=>e.hwr));e.unitSize=s/r.vw,e.pageSize={width:s,height:s*n}}(a,u,s.outputWidth);const d=u.reduce((e,t)=>e+(t.detection.areas?.length??0),0),p=u.reduce((e,t)=>e+(t.detection.areas?.reduce?.((e,t)=>e+(t.staves?.middleRhos?.length??0),0)??0),0);r.setTotal("gauge",p),r.setTotal("mask",p),r.setTotal("semantic",p),r.setTotal("brackets",d);const g=[],y=[],v=Date.now();let x=0;for(const n of u.keys()){const o=[],{page:l,correctCanvas:d,omit:p,hash:v}=await f(u[n],n);if(o.push(m(l.source.url)),o.push(...l.systems.map(e=>m(e.backgroundImage))),i.info(`[predictor]: check_cache_pageIndex-${n} omit: ${p}`),p)y.push(n);else{const u=l.systems.map((e,t)=>e.staves.map((s,i)=>({pageIndex:n,systemIndex:t,staffIndex:i,page:l,system:e,staff:s}))).flat(1);await Mi([async()=>{if(!s.processes.includes("brackets"))return;const t=l.layout,a=l.source.interval,o=Date.now(),u=l.systems.map((e,s)=>{const{x:i,y:r,staves:{middleRhos:n,phi1:o}}=t.areas[s],l=n[0],u=n[n.length-1],h={x:i+o-4*a,y:r+l-4*a,width:8*a,height:u-l+8*a},m=new c.Canvas(64,h.height/a*8);return m.getContext("2d").drawImage(d,h.x,h.y,h.width,h.height,0,0,m.width,m.height),{system:e,buffer:m.toBufferSync("png")}});i.info(`[predictor]: brackets js [pageIndex-${n}] duration: ${Date.now()-o}`);const h=await e.predictScoreImages("brackets",{buffers:u.map(e=>e.buffer)});r.increase("brackets",u.length),u.forEach(({system:e},t)=>{h[t]&&(e.bracketsAppearance=h[t])})},async()=>{if(s.processes.includes("text"))try{const t=Date.now(),o=d.toBufferSync("png"),c=(await e.predictScoreImages("textLoc",[o]))[0].filter(e=>e.score>0);if(c.length>0){const[t]=await e.predictScoreImages("textOcr",{buffers:[o],location:c});l.assignTexts(t.areas,t.imageSize),l.assemble()}if(i.info(`[predictor]: text js [pageIndex-${n}] duration: ${Date.now()-t}`),r.increase("text"),!s.title){const e=a.pages[0].tokens;if(Array.isArray(e)&&e.length>0){const[t]=e.filter(e=>e.type===B.Text&&"Title"===e.textType).sort((e,t)=>t.fontSize-e.fontSize);t&&(a.title=t.text)}}}catch(e){i.error(`[predictor]: text js [pageIndex-${n}] ${JSON.stringify(e)}`)}},async()=>{var c;await(c=async()=>{if(s.processes.includes("gauge")&&!1!==t[n].enableGauge){const t=await e.predictScoreImages("gauge",await Promise.all(u.map(async({staffIndex:e,system:t})=>{const s=Date.now(),r=await Ei(t,e,{paddingLeft:Si,spec:bi});return i.info(`[predictor]: gauge js shoot [page-${n}, staff-${e}] duration: ${Date.now()-s}`),r.toBufferSync("png")})));for(const[s,{system:n,staff:a,pageIndex:c,staffIndex:l}]of u.entries()){const u=Date.now();i.info(`[predictor]: gauge js [page-${c}, staff-${l}] start..`),await Ii({pyClients:e,system:n,staff:a,staffIndex:l,gaugeImage:t[s].image}),i.info(`[predictor]: gauge js [page-${c}, staff-${l}] duration: ${Date.now()-u}`),r.increase("gauge"),o.push(m(a.backgroundImage))}}else for(const[e,{system:t,staff:s,staffIndex:i}]of u.entries())await Ni({system:t,staff:s,staffIndex:i}),o.push(m(s.backgroundImage))},c()),await Mi([async()=>{if(!s.processes.includes("mask"))return;const t=await e.predictScoreImages("mask",u.map(({staff:e})=>e.backgroundImage));for(const[e,{staff:s,staffIndex:a}]of u.entries()){const c=Date.now();await Ci({staff:s,staffIndex:a,maskImage:t[e].image}),i.info(`[predictor]: mask js [page-${n}, ${e}, staff-${a}] duration: ${Date.now()-c}`),r.increase("mask"),o.push(m(s.maskImage))}},async()=>{if(!s.processes.includes("semantic"))return;const t=ae(await e.predictScoreImages("semantic",u.map(({staff:e})=>e.backgroundImage)),$s);u.forEach(({system:e})=>e.clearTokens());for(const[e,{staffIndex:s,system:o,staff:c}]of u.entries()){const l=Date.now();await _i({score:a,system:o,staff:c,staffIndex:s,graph:t[e]}),i.info(`[predictor]: semantic js [page-${n}, system-${o.index}, staff-${c.index}] duration: ${Date.now()-l}`),r.increase("semantic")}}])}]),++x}g.push(Promise.all(o).then(()=>(Oi(l,e=>h.get(e)),i.info(`[predictor]: pageStore set: [${n}]`),s.pageStore.set(v,JSON.stringify(l)))))}const S=Date.now();await Promise.all(g),i.info(`[predictor]: inferenceStaffLayout: ${a.title}, [${a.systems.length}]`),a.inferenceStaffLayout(),i.info(`[predictor]: done: ${a.title}`),a.assemble();const b=Date.now();return{score:a,omitPages:y,stat:{cost:b-n,pagesCost:S-v,pages:x}}},exports.regulateWithBeadSolver=async(e,{logger:t,pickers:s,solutionStore:i=$i,ignoreCache:r,freshOnly:n,onSaveIssueMeasure:a,onProgress:o,onPassStart:c})=>{e.spartito=void 0,e.assemble();const l=e.makeSpartito();l.measures.forEach(t=>e.assignBackgroundForMeasure(t));const u=Date.now();t?.info(`[regulateWithBeadSolver] begin, measure total: ${l.measures.length}.`,r?"ignoreCache":"",n?"freshOnly":"");const h=l.measures.filter(e=>e.events?.length&&!e.patched).map(e=>({origin:e.deepCopy(),current:e,evaluation:void 0,baseQuality:0}));for(const e of l.measures.filter(e=>e.events?.length)){const t=s.find(t=>t.n_seq>e.events.length+1);t&&await Fs(e,t)}l.rectifyTimeSignatures(t),s.forEach(e=>e.cost=0);const m={cached:0,simple:0,computed:0,tryTimes:0,solved:0,issue:0,fatal:0};if(t?.info("[regulateWithBeadSolver] measures estimation finished."),i&&!r)for(const e of h){const t=await i.get(e.origin.regulationHash0);t&&(e.current.applySolution(t),++m.cached,e.evaluation=Ke(e.current),e.baseQuality=e.evaluation.qualityScore)}t?.info("[regulateWithBeadSolver]",`${m.cached}/${h.length}`,"solutions loaded.");const f=t?null:process.stdout;m.cached&&f?.write(`${m.cached}c`),h.forEach(e=>{const i=s.find(t=>t.n_seq>e.current.events.length+1);i?e.picker=i:t?.info(`[regulateWithBeadSolver] measure[${e.current.measureIndex}] size out of range:`,e.current.events.length)});const d=h.filter(e=>e.picker&&(!e.evaluation||!e.evaluation.fine&&!n));d.forEach(e=>{const s=e.current.deepCopy();s.staffGroups=e.current.staffGroups,s.regulate({policy:"simple"});const i=Ke(s);(!e.evaluation||i.qualityScore>e.evaluation.qualityScore)&&(e.evaluation=i,Object.assign(e.current,s),i.perfect&&(t?.info(`[regulateWithBeadSolver] measure[${e.current.measureIndex}] regulated by simple policy.`),++m.simple))}),m.computed=d.length-m.simple,m.simple&&f?.write(`${m.simple}s`);const p=(e,s,i)=>{t?.info(`[regulateWithBeadSolver] measure[${e.measureIndex}/${l.measures.length}] regulated${i?"+":"-"}: ${s.qualityScore.toFixed(3)}, ${s.fine?"solved":s.error?"error":"issue"}, ${e.regulationHash}`),f?.write(`[${s.fine?"32":s.error?"31":"33"}m${i?"+":"-"}`)},g=l.measures.length,y=()=>d.filter(e=>!e.evaluation?.fine).length,v=o?(e,t,s,i)=>{o(e,t,s,{pass:i.pass,remaining:y(),total:g})}:void 0;c?.(1,"Imperfect",y()),m.tryTimes+=await Hi(d,p,f,{stopLoss:.05,quotaMax:200,quotaFactor:3,ptFactor:1},ji.Imperfect,1,v),c?.(2,"NotFine",y()),m.tryTimes+=await Hi(d,p,f,{stopLoss:.08,quotaMax:1e3,quotaFactor:20,ptFactor:1.6},ji.NotFine,2,v),c?.(3,"ErrorOnly",y()),m.tryTimes+=await Hi(d,p,f,{stopLoss:.08,quotaMax:1e3,quotaFactor:40,ptFactor:3},ji.ErrorOnly,3,v),d.forEach(({evaluation:e,baseQuality:t,current:s,origin:r})=>{e.fine?++m.solved:e.error?++m.fatal:++m.issue,(e.qualityScore>t||!t)&&(i.set(r.regulationHash0,{...s.asSolution(r),priority:-s?.solutionStat?.loss}),s.regulationHash!==r.regulationHash0&&i.set(s.regulationHash,{...s.asSolution(),priority:-s?.solutionStat?.loss})),e.fine||a?.({measureIndex:s.measureIndex,measure:new EditableMeasure(s),status:e.error?2:1})});const x=Date.now(),S=s.reduce((e,t)=>e+t.cost,0),b=l.qualityScore,k=x-u;return t?.info("[regulateWithBeadSolver] done in ",k,"ms, qualityScore:",b),n&&(m.cached=0),{totalCost:x-u,pickerCost:S,measures:m,qualityScore:b}},exports.replaceScoreJsonImages=(e,t=e=>e)=>{const s=JSON.parse(JSON.stringify(e));return s.pages.forEach(e=>{e?.src&&(e.src=t(e?.src))}),s.lines.forEach(e=>{e.lineStaves.forEach(e=>{e.imgs.forEach(e=>{e?.src&&(e.src=t(e.src))})})}),s},exports.saveEditableMeasures=async(e,t,s,{status:i=2,solutionStore:r}={})=>{e.assemble();const n=e.spartito||e.makeSpartito(),a=t.map(e=>n.measures.find(t=>t.measureIndex===e)).filter(Boolean);if(r){const e=await r.batchGet(a.map(e=>e.regulationHash0));a.forEach((t,s)=>{const i=e[s];i&&t.applySolution(i)})}a.forEach(e=>{s({measureIndex:e.measureIndex,measure:new EditableMeasure(e),status:i})})},exports.starry=$s,exports.updateScorePatches=(e,t,s={})=>{if(console.assert(t.every(e=>e.validRegulated),"[updateScorePatches] some measures not valid regulated:",t.filter(e=>!e.validRegulated)),e.patches=t.map(e=>e.createPatch()),s?.solutionStore){e.assemble();const i=e.makeSpartito();t.forEach(e=>{if(s.solutionStore.set(e.regulationHash,{...e.asSolution(),priority:1}),e.regulationHash0!==e.regulationHash){const t=i.measures.find(t=>t.measureIndex===e.measureIndex);s.solutionStore.set(e.regulationHash0,{...e.asSolution(t),priority:1})}})}}; +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("js-sha1"),t=require("lodash/pick"),s=require("lodash"),i=require("math-erf"),r=require("msgpackr"),n=require("zeromq"),a=require("portfinder"),o=require("python-shell"),c=require("skia-canvas"),l=require("weak-lru-cache"),u=require("spark-md5"),h=require("sharp"),m=require("got");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d,p,g,y=f(e),v=f(t),x=f(s),S=f(i),b=f(u),k=f(h),T=f(m);globalThis.btoa=e=>Buffer.from(e,"binary").toString("base64"),globalThis.atob=e=>Buffer.from(e,"base64").toString("binary"),function(e){e.ByLines="ByLines",e.ByBlocks="ByBlocks"}(d||(d={})),function(e){e.Title="Title",e.Author="Author",e.TempoText="TempoText",e.TempoNumeral="TempoNumeral",e.TextualMark="TextualMark",e.Lyric="Lyric",e.Instrument="Instrument",e.MeasureNumber="MeasureNumber",e.Times="Times",e.Alternation1="Alternation1",e.Alternation2="Alternation2",e.Chord="Chord",e.PageMargin="PageMargin",e.Other="Other"}(p||(p={})),function(e){e.ClefG="ClefG",e.ClefF="ClefF",e.ClefC="ClefC",e.NoteheadS0="NoteheadS0",e.NoteheadS1="NoteheadS1",e.NoteheadS2="NoteheadS2",e.NoteheadS1stemU="NoteheadS1stemU",e.NoteheadS1stemD="NoteheadS1stemD",e.NoteheadS2stemU="NoteheadS2stemU",e.NoteheadS2stemD="NoteheadS2stemD",e.vline_Stem="vline_Stem",e.Flag3="Flag3",e.BeamLeft="BeamLeft",e.BeamContinue="BeamContinue",e.BeamRight="BeamRight",e.TremoloLeft="TremoloLeft",e.TremoloRight="TremoloRight",e.TremoloMiddle="TremoloMiddle",e.Dot="Dot",e.Rest0="Rest0",e.Rest1="Rest1",e.Rest2="Rest2",e.Rest3="Rest3",e.Rest4="Rest4",e.Rest5="Rest5",e.Rest6="Rest6",e.Rest0W="Rest0W",e.RestM1="RestM1",e.AccNatural="AccNatural",e.AccSharp="AccSharp",e.AccDoublesharp="AccDoublesharp",e.AccFlat="AccFlat",e.AccFlatflat="AccFlatflat",e.vline_VoltaLeft="vline_VoltaLeft",e.vline_VoltaRight="vline_VoltaRight",e.VoltaLeft="VoltaLeft",e.VoltaRight="VoltaRight",e.VoltaAlternativeBegin="VoltaAlternativeBegin",e.BarMeasure="BarMeasure",e.vline_BarMeasure="vline_BarMeasure",e.vline_BarTerminal="vline_BarTerminal",e.vline_BarSegment="vline_BarSegment",e.SlurBegin="SlurBegin",e.SlurEnd="SlurEnd",e.TimesigC44="TimesigC44",e.TimesigC22="TimesigC22",e.TimesigZero="TimesigZero",e.TimesigOne="TimesigOne",e.TimesigTwo="TimesigTwo",e.TimesigThree="TimesigThree",e.TimesigFour="TimesigFour",e.TimesigFive="TimesigFive",e.TimesigSix="TimesigSix",e.TimesigSeven="TimesigSeven",e.TimesigEight="TimesigEight",e.TimesigNine="TimesigNine",e.OctaveShift8va="OctaveShift8va",e.OctaveShift8vb="OctaveShift8vb",e.OctaveShift8="OctaveShift8",e.OctaveShift0="OctaveShift0",e.Zero="Zero",e.One="One",e.Two="Two",e.Three="Three",e.Four="Four",e.Five="Five",e.Six="Six",e.Seven="Seven",e.Eight="Eight",e.Nine="Nine",e.f="f",e.p="p",e.m="m",e.n="n",e.r="r",e.s="s",e.z="z",e.CrescendoBegin="CrescendoBegin",e.CrescendoEnd="CrescendoEnd",e.DecrescendoBegin="DecrescendoBegin",e.DecrescendoEnd="DecrescendoEnd",e.ScriptFermata="ScriptFermata",e.ScriptShortFermata="ScriptShortFermata",e.ScriptSforzato="ScriptSforzato",e.ScriptStaccato="ScriptStaccato",e.ScriptStaccatissimo="ScriptStaccatissimo",e.ScriptTurn="ScriptTurn",e.ScriptTrill="ScriptTrill",e.ScriptSegno="ScriptSegno",e.ScriptCoda="ScriptCoda",e.ScriptArpeggio="ScriptArpeggio",e.ScriptPrall="ScriptPrall",e.ScriptMordent="ScriptMordent",e.ScriptMarcato="ScriptMarcato",e.ScriptTenuto="ScriptTenuto",e.ScriptPortato="ScriptPortato",e.PedalStar="PedalStar",e.PedalPed="PedalPed",e.KeyAcc="KeyAcc",e.TempoNotehead="TempoNotehead",e.GraceNotehead="GraceNotehead",e.SignLined="SignLined",e.SignInterval="SignInterval",e.rect_Text="rect_Text",e.rect_Lyric="rect_Lyric"}(g||(g={}));const w={NoteheadS0:1.826,NoteheadS1:1.264,NoteheadS2:1.198},M={"clefs.F":{x:1.06},"clefs.G":{x:1.3},"clefs.F_change":{x:.87},"clefs.G_change":{x:1.07},"timesig.C44":{x:.9},"timesig.C22":{x:.9},zero:{x:.7,y:-1},one:{x:.7,y:-1},two:{x:.7,y:-1},three:{x:.7,y:-1},four:{x:.7,y:-1},five:{x:.7,y:-1},six:{x:.7,y:-1},seven:{x:.7,y:-1},eight:{x:.7,y:-1},nine:{x:.7,y:-1},"accidentals.sharp":{x:.55},"accidentals.doublesharp":{x:.5},"accidentals.natural":{x:.3},"accidentals.flat":{x:.3},"accidentals.flatflat":{x:.5},"noteheads.s0":{x:w.NoteheadS0/2},"noteheads.s1":{x:w.NoteheadS1/2},"noteheads.s2":{x:w.NoteheadS2/2},"rests.0":{x:.75,y:1},"rests.1":{x:.75},"rests.0o":{x:.75,y:1},"rests.1o":{x:.75},"rests.M1":{x:.75,y:1},"rests.2":{x:.5},"rests.3":{x:.5},"rests.4":{x:.5},"rests.5":{x:.5},"rests.6":{x:.5},f:{x:.6,y:-.5},m:{x:.9,y:-.5},p:{x:.5,y:-.5},r:{x:.5,y:-.5},s:{x:.5,y:-.5},z:{x:.5,y:-.5},"scripts.trill":{y:-.5},"scripts.segno":{x:0,y:0},"scripts.coda":{x:0,y:0},"scripts.arpeggio":{x:.5,y:-.5},"pedal.*":{x:.78,y:-.78},"pedal.Ped":{x:1.6,y:-.7}},E=[g.BarMeasure,g.vline_BarMeasure,g.vline_BarTerminal,g.vline_BarSegment,g.vline_VoltaLeft,g.vline_VoltaRight,g.VoltaAlternativeBegin],N=g,I=[[N.NoteheadS0,N.NoteheadS1,N.NoteheadS2],[N.Zero,N.One,N.Two,N.Three,N.Four,N.Five,N.Six,N.Seven,N.Eight,N.Nine,N.ScriptStaccatissimo],[N.TimesigZero,N.TimesigOne,N.TimesigTwo,N.TimesigThree,N.TimesigFour,N.TimesigFive,N.TimesigSix,N.TimesigSeven,N.TimesigEight,N.TimesigNine],[N.Rest0,N.Rest1,N.Rest2,N.Rest3,N.Rest4,N.Rest5,N.Rest6,N.Rest0W,N.RestM1],[N.SignInterval,N.SignLined],[N.BeamLeft,N.BeamContinue,N.BeamRight]],C=[N.ClefG,N.ClefF,N.ClefC,N.NoteheadS0,N.NoteheadS1,N.NoteheadS2,N.Dot,N.Rest0,N.Rest1,N.Rest2,N.Rest3,N.Rest4,N.Rest5,N.Rest6,N.RestM1,N.AccNatural,N.AccSharp,N.AccDoublesharp,N.AccFlat,N.AccFlatflat,N.TimesigC44,N.TimesigC22,N.TimesigZero,N.TimesigOne,N.TimesigTwo,N.TimesigThree,N.TimesigFour,N.TimesigFive,N.TimesigSix,N.TimesigSeven,N.TimesigEight,N.TimesigNine,N.One,N.Two,N.Three,N.Four,N.Five,N.OctaveShift8,N.OctaveShift0,N.f,N.p,N.m,N.n,N.r,N.s,N.z,N.ScriptFermata,N.ScriptShortFermata,N.ScriptSforzato,N.ScriptStaccato,N.ScriptStaccatissimo,N.ScriptTurn,N.ScriptTrill,N.ScriptSegno,N.ScriptCoda,N.ScriptArpeggio,N.ScriptPrall,N.ScriptMordent,N.ScriptMarcato,N.ScriptTenuto,N.ScriptPortato,N.PedalStar,N.PedalPed],_=(e,t,s)=>{const i=Math.round(10*s.x),r=Math.round(10*s.y),n=`${e}|${t}|${s.semantic}|${i}|${r}`,a=y.default.array(n).slice(12),o=globalThis.btoa(String.fromCharCode(...a)).substring(0,11);return s.id=o,o},O=(e,t)=>{const s=Math.round(t.x),i=Math.round(t.y),r=`p-${e}|${t.semantic}|${s}|${i}`,n=y.default.array(r).slice(12),a=globalThis.btoa(String.fromCharCode(...n)).substring(0,11);return t.id=a,a};var B;!function(e){e.ClefG="clefs-G",e.ClefF="clefs-F",e.ClefC="clefs-C",e.TimesigC44="timesig-C44",e.TimesigC22="timesig-C22",e.TimesigZero="zero|timesig0",e.TimesigOne="one|timesig1",e.TimesigTwo="two|timesig2",e.TimesigThree="three|timesig3",e.TimesigFour="four|timesig4",e.TimesigFive="five|timesig5",e.TimesigSix="six|timesig6",e.TimesigSeven="seven|timesig7",e.TimesigEight="eight|timesig8",e.TimesigNine="nine|timesig9",e.OctaveShift8va="octave-a",e.OctaveShift8vb="octave-b",e.OctaveShift0="octave-0",e.Zero="zero|n0",e.One="one|n1",e.Two="two|n2",e.Three="three|n3",e.Four="four|n4",e.Five="five|n5",e.Six="six|n6",e.Seven="seven|n7",e.Eight="eight|n8",e.Nine="nine|n9",e.AccNatural="accidentals-natural",e.AccSharp="accidentals-sharp",e.AccDoublesharp="accidentals-doublesharp",e.AccFlat="accidentals-flat",e.AccFlatflat="accidentals-flatflat",e.KeyNatural="accidentals-natural|key-natural",e.KeySharp="accidentals-sharp|key-sharp",e.KeyFlat="accidentals-flat|key-flat",e.NoteheadS0="noteheads-s0",e.NoteheadS1="noteheads-s1",e.NoteheadS2="noteheads-s2",e.NoteheadS1stemU="noteheads-s1|noteheads-s1-u",e.NoteheadS1stemD="noteheads-s1|noteheads-s1-d",e.NoteheadS2stemU="noteheads-s2|noteheads-s2-u",e.NoteheadS2stemD="noteheads-s2|noteheads-s2-d",e.Rest0="rests-0o",e.Rest1="rests-1o",e.Rest2="rests-2",e.Rest3="rests-3",e.Rest4="rests-4",e.Rest5="rests-5",e.Rest6="rests-6",e.Rest0W="rests-0",e.RestM1="rests-M1",e.Flag3="flags-u3",e.Flag4="flags-u4",e.Flag5="flags-u5",e.Flag6="flags-u6",e.Flag7="flags-u7",e.Flag8="flags-u8",e.BeamLeft="|beam-left",e.BeamRight="|beam-right",e.BeamContinue="|beam-continue",e.TremoloLeft="|tremolo-left",e.TremoloRight="|tremolo-right",e.TremoloMiddle="|tremolo-middle",e.SlurBegin="|slur-begin",e.SlurEnd="|slur-end",e.TieBegin="|tie-begin",e.TieEnd="|tie-end",e.VoltaLeft="|volta-left",e.VoltaRight="|volta-right",e.VoltaAlternativeBegin="|volta-alter-begin",e.BarTerminal="|bar-terminal",e.BarSegment="|bar-segment",e.Dot="|dot",e.DotDot="|dotdot",e.f="f",e.p="p",e.m="m",e.r="r",e.s="s",e.z="z",e.WedgeCrescendo="|wedge-crescendo",e.WedgeDiminuendo="|wedge-diminuendo",e.WedgeClose="|wedge-close",e.CrescendoBegin="|wedge-crescendo",e.DecrescendoBegin="|wedge-diminuendo",e.CrescendoEnd="|wedge-close",e.DecrescendoEnd="|wedge-close",e.ScriptFermata="scripts-ufermata",e.ScriptShortFermata="scripts-ushortfermata",e.ScriptSforzato="scripts-sforzato",e.ScriptStaccato="scripts-staccato",e.ScriptStaccatissimo="scripts-ustaccatissimo",e.ScriptTurn="scripts-turn",e.ScriptTrill="scripts-trill",e.ScriptSegno="scripts-segno",e.ScriptCoda="scripts-coda",e.ScriptArpeggio="scripts-arpeggio",e.ScriptPrall="scripts-prall",e.ScriptMordent="scripts-mordent",e.ScriptMarcato="scripts-umarcato",e.ScriptTenuto="scripts-tenuto",e.ScriptPortato="scripts-uportato",e.PedalStar="pedal-star",e.PedalPed="pedal-Ped",e.Text="|text",e.GraceNotehead="|grace-notehead"}(B||(B={}));const A=B,P=Object.values(B),R=P.filter(e=>/clefs-/.test(e)),D=P.filter(e=>/timesig/.test(e)),F=P.filter(e=>/timesig-/.test(e)),L=P.filter(e=>/timesig\d/.test(e)),$=P.filter(e=>/octave-/.test(e)),j=P.filter(e=>/n\d/.test(e)),H=P.filter(e=>/accidentals-/.test(e)),V=P.filter(e=>/noteheads-/.test(e)),z=[A.NoteheadS0,A.NoteheadS1,A.NoteheadS2],q=P.filter(e=>/noteheads-.+-[ud]/.test(e)),G=P.filter(e=>/rests-/.test(e)),W=P.filter(e=>/flags-/.test(e)),U=P.filter(e=>/volta-/.test(e)),Y=P.filter(e=>/^[a-z]$/.test(e)),X=P.filter(e=>/scripts-/.test(e)),K=P.filter(e=>/pedal-/.test(e)),Z=[A.Dot,A.DotDot],J=[A.SlurBegin,A.SlurEnd,A.TieBegin,A.TieEnd],Q=P.filter(e=>/beam-/.test(e)),ee=P.filter(e=>/wedge-/.test(e)),te=[...j,...Y,...ee,...K,...J,A.ScriptFermata,A.ScriptShortFermata,A.ScriptSforzato,A.ScriptStaccato,A.ScriptStaccatissimo,A.ScriptTurn,A.ScriptTrill,A.ScriptPrall,A.ScriptMordent,A.ScriptMarcato,A.ScriptTenuto,A.ScriptPortato],se=[...K],ie=[...R,...D,...j,...H,A.NoteheadS0,A.NoteheadS1,A.NoteheadS2,...G,...Y,...X,...K,...Z],re={};R.forEach(e=>re[e]=1),L.forEach(e=>re[e]=1),H.forEach(e=>re[e]=.5),V.forEach(e=>re[e]=.5),G.forEach(e=>re[e]=.5),Z.forEach(e=>re[e]=.5);const ne={};F.forEach(e=>ne[e]=0),U.forEach(e=>ne[e]=0);class Token{constructor(e){Object.assign(this,e)}get typeId(){return this.type.split("|").reverse()[0]}get isPredicted(){return Number.isFinite(this.confidence)}get isNotehead(){return q.includes(this.type)||this.type===B.NoteheadS0}get isContexted(){return R.includes(this.type)||D.includes(this.type)||$.includes(this.type)||H.includes(this.type)}get isAccessory(){return j.includes(this.type)||Y.includes(this.type)||X.includes(this.type)||K.includes(this.type)}get division(){switch(this.type){case A.NoteheadS0:return 0;case A.NoteheadS1stemU:case A.NoteheadS1stemD:return 1;case A.NoteheadS2stemU:case A.NoteheadS2stemD:return 2;case A.Flag3:return 3;case A.Flag4:return 4;case A.Flag5:return 5;case A.Flag6:return 6;case A.Flag7:return 7;case A.Flag8:return 8;case A.RestM1:return-1;case A.Rest0:return 0;case A.Rest1:return 1;case A.Rest2:return 2;case A.Rest3:return 3;case A.Rest4:return 4;case A.Rest5:return 5;case A.Rest6:return 6}return null}get dots(){switch(this.type){case A.Dot:return 1;case A.DotDot:return 2}return null}get direction(){switch(this.type){case A.NoteheadS1stemU:case A.NoteheadS2stemU:return"u";case A.NoteheadS1stemD:case A.NoteheadS2stemD:return"d"}return null}get width(){switch(this.type){case A.NoteheadS0:return w.NoteheadS0;case A.NoteheadS1stemU:case A.NoteheadS1stemD:return w.NoteheadS1;case A.NoteheadS2stemU:case A.NoteheadS2stemD:return w.NoteheadS2}}get left(){switch(this.type){case A.NoteheadS0:return this.x-this.width/2;case A.NoteheadS1stemU:case A.NoteheadS2stemU:return this.x-this.width;case A.NoteheadS1stemD:case A.NoteheadS2stemD:return this.x}return this.x}get right(){switch(this.type){case A.NoteheadS0:return this.x+this.width/2;case A.NoteheadS1stemU:case A.NoteheadS2stemU:return this.x;case A.NoteheadS1stemD:case A.NoteheadS2stemD:return this.x+this.width}return this.x}get voiceIndices(){return!this.voice||this.voice<0?[]:Array(Math.floor(Math.log2(this.voice))+1).fill(null).reduce((e,t,s)=>this.voice&1<("object"==typeof e&&(e=JSON.stringify(e)),JSON.parse(e,(e,s)=>{if(s&&"object"==typeof s&&s.__prototype){const e=t[s.__prototype];if(e){const{__prototype:t,...i}=s;return new e(i)}}return s})),oe=(e,t=null)=>{if((t=t||new Map).get(e))return t.get(e);if(Array.isArray(e)){const s=[];return t.set(e,s),e.forEach(e=>s.push(oe(e,t))),s}if(e&&"object"==typeof e){const s={};return t.set(e,s),Object.entries(e).forEach(([e,i])=>s[e]=oe(i,t)),Object.setPrototypeOf(s,e.__proto__),s}return e};class SimpleClass{assign(e){e&&Object.assign(this,e)}toJSON(){const e=this.constructor,t=e.serializedKeys||e.blackKeys&&Object.keys(this).filter(t=>!e.blackKeys.includes(t)),s=t?v.default(this,t):this;return{__prototype:e.className,...s}}deepCopy(){return oe(this)}}var ce;!function(e){e.Ordinary="ordinary",e.Full="full",e.Conservative="conservative",e.Once="once"}(ce||(ce={}));const le=(e,t=ce.Ordinary)=>[].concat(...e.map(e=>e.serialize(t))),ue=(e,{withBrackets:t=!1}={})=>{let s="",i=!1;for(let t=0;t0&&!i&&(s+=", "),i=!1,s+=e[t].code)}return t?`[${s}]`:s};class SingleMLayout extends SimpleClass{static from(e){const t=new SingleMLayout;return t.measure=e,t}constructor(e=void 0){super(),this.assign(e)}serialize(){return[this.measure]}get seq(){return[this]}get code(){return this.measure.toString()}}SingleMLayout.className="SingleMLayout";class BlockMLayout extends SimpleClass{static trimSeq(e){const t=[];for(const s of e)if(s instanceof BlockMLayout)for(const e of s.seq)t.push(e);else t.push(s);const s=[];let i=null;for(const e of t)e instanceof SingleMLayout?e.measure>i&&(s.push(e),i=e.measure):s.push(e);return s}static fromSeq(e){const t=new BlockMLayout;return t.seq=BlockMLayout.trimSeq(e),t}constructor(e=void 0){super(),this.assign(e)}serialize(e){return le(this.seq,e)}get code(){return ue(this.seq,{withBrackets:!0})}}BlockMLayout.className="BlockMLayout";class VoltaMLayout extends SimpleClass{constructor(e=void 0){super(),this.assign(e)}serialize(e){const t=le(this.body);if(this.alternates){const s=this.alternates.map(e=>le(e)),i=s[s.length-1];switch(e){case ce.Ordinary:return t.concat(...s);case ce.Conservative:case ce.Full:return[...[].concat(...Array(this.times-1).fill(null).map((e,i)=>[...t,...s[i%(this.times-1)]])),...t,...i];case ce.Once:return[...t,...i]}}else switch(e){case ce.Ordinary:case ce.Conservative:case ce.Once:return t;case ce.Full:return[].concat(...Array(this.times).fill(null).map(()=>t))}console.warn("the current case not handled:",e,this)}get seq(){const e=this.alternates?this.alternates[this.alternates.length-1]:[];return[...this.body,...e]}get code(){const e=ue(this.body,{withBrackets:!0});let t=`${this.times}*${e}`;return this.alternates&&(t+="{"+this.alternates.map(e=>ue(e,{withBrackets:e.length>1})).join(", ")+"}"),t}}VoltaMLayout.className="VoltaMLayout";class ABAMLayout extends SimpleClass{constructor(e=void 0){super(),this.assign(e)}serialize(e){const t=this.main.serialize(e),s=le(this.main.seq,ce.Once),i=le(this.rest,e);switch(e){case ce.Ordinary:return[...t,...i];case ce.Once:return[...i,...s];case ce.Conservative:case ce.Full:return[...t,...i,...s];default:console.warn("the current case not handled:",e,this)}}get seq(){return[this.main,...this.rest]}get code(){return"<"+this.main.code+", "+ue(this.rest)+">"}}ABAMLayout.className="ABAMLayout";var he=Object.freeze({__proto__:null,get LayoutType(){return ce},SingleMLayout:SingleMLayout,BlockMLayout:BlockMLayout,VoltaMLayout:VoltaMLayout,ABAMLayout:ABAMLayout}),me=function(){var e=function(e,t,s,i){for(s=s||{},i=e.length;i--;s[e[i]]=t);return s},t=[1,13],s=[1,16],i=[1,15],r=[1,26],n=[1,29],a=[1,28],o=[1,30],c=[5,13,22,27,29],l=[2,15],u=[1,32],h=[5,14,21,22,27,28,29],m={trace:function(){},yy:{},symbols_:{error:2,start_symbol:3,measure_layout:4,EOF:5,index_wise_measure_layout:6,"i:":7,"s:":8,segment_wise_measure_layout:9,iw_sequence:10,iw_item:11,range:12,",":13,UNSIGNED:14,"..":15,single:16,iw_block_item:17,iw_volta:18,iw_aba:19,iw_block:20,"[":21,"]":22,"*":23,iw_optional_alternates:24,iw_alternates:25,"{":26,"}":27,"<":28,">":29,sw_sequence:30,sw_item:31,segment:32,sw_block_item:33,sw_volta:34,sw_aba:35,sw_block:36,sw_optional_alternates:37,sw_alternates:38,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",7:"i:",8:"s:",13:",",14:"UNSIGNED",15:"..",21:"[",22:"]",23:"*",26:"{",27:"}",28:"<",29:">"},productions_:[0,[3,2],[4,1],[4,2],[4,2],[6,1],[10,1],[10,1],[10,3],[10,3],[12,3],[11,1],[11,1],[11,1],[11,1],[16,1],[17,1],[20,3],[18,4],[24,0],[24,1],[25,3],[19,5],[9,1],[30,1],[30,2],[31,1],[31,1],[31,1],[31,1],[32,1],[33,1],[36,3],[34,4],[37,0],[37,1],[38,3],[35,4]],performAction:function(e,t,s,i,r,n,a){var o=n.length-1;switch(r){case 1:return n[o-1];case 2:this.$=f(null,n[o]);break;case 3:this.$=f("index-wise",n[o]);break;case 4:this.$=f("segment-wise",b(n[o]));break;case 5:case 23:1===n[o].length&&"BlockMLayout"===n[o][0].__prototype?this.$=n[o][0]:this.$=p(n[o]);break;case 6:case 24:this.$=[n[o]];break;case 7:case 11:case 12:case 13:case 14:case 20:case 27:case 28:case 29:case 35:this.$=n[o];break;case 8:this.$=[...n[o-2],n[o]];break;case 9:this.$=[...n[o-2],...n[o]];break;case 10:this.$=S(n[o-2],n[o]);break;case 15:this.$=d(n[o]);break;case 16:case 31:this.$=p(n[o]);break;case 17:case 32:this.$=n[o-1];break;case 18:case 33:this.$=g(n[o-3],n[o-1],n[o]);break;case 19:case 34:this.$=null;break;case 21:case 36:this.$=x(n[o-1]);break;case 22:this.$=y(n[o-3],n[o-1]);break;case 25:this.$=[...n[o-1],n[o]];break;case 26:this.$=p([n[o]]);break;case 30:this.$=v(n[o]);break;case 37:this.$=y(n[o-2],n[o-1])}},table:[{3:1,4:2,6:3,7:[1,4],8:[1,5],10:6,11:7,12:8,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},{1:[3]},{5:[1,17]},{5:[2,2]},{6:18,10:6,11:7,12:8,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},{9:19,14:r,21:n,28:a,30:20,31:21,32:22,33:23,34:24,35:25,36:27},{5:[2,5],13:o},e(c,[2,6]),e(c,[2,7]),e(c,[2,11]),e(c,[2,12]),e(c,[2,13]),e(c,[2,14]),e(c,l,{15:[1,31],23:u}),e(c,[2,16]),{11:33,14:[1,34],16:9,17:10,18:11,19:12,20:14,21:s,28:i},{10:35,11:7,12:8,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},{1:[2,1]},{5:[2,3]},{5:[2,4]},{5:[2,23],14:r,21:n,28:a,31:36,32:22,33:23,34:24,35:25,36:27},e(h,[2,24]),e(h,[2,26]),e(h,[2,27]),e(h,[2,28]),e(h,[2,29]),e(h,[2,30],{23:[1,37]}),e(h,[2,31]),{14:r,21:n,28:a,31:38,32:22,33:23,34:24,35:25,36:27},{14:r,21:n,28:a,30:39,31:21,32:22,33:23,34:24,35:25,36:27},{11:40,12:41,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},{14:[1,42]},{20:43,21:s},{13:[1,44]},{13:l,23:u},{13:o,22:[1,45]},e(h,[2,25]),{21:n,36:46},{14:r,21:n,28:a,30:47,31:21,32:22,33:23,34:24,35:25,36:27},{14:r,21:n,22:[1,48],28:a,31:36,32:22,33:23,34:24,35:25,36:27},e(c,[2,8]),e(c,[2,9]),e(c,[2,10]),e(c,[2,19],{24:49,25:50,26:[1,51]}),{10:52,11:7,12:8,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},e([5,13,22,26,27,29],[2,17]),e(h,[2,34],{37:53,38:54,26:[1,55]}),{14:r,21:n,28:a,29:[1,56],31:36,32:22,33:23,34:24,35:25,36:27},e([5,14,21,22,26,27,28,29],[2,32]),e(c,[2,18]),e(c,[2,20]),{10:57,11:7,12:8,14:t,16:9,17:10,18:11,19:12,20:14,21:s,28:i},{13:o,29:[1,58]},e(h,[2,33]),e(h,[2,35]),{14:r,21:n,28:a,30:59,31:21,32:22,33:23,34:24,35:25,36:27},e(h,[2,37]),{13:o,27:[1,60]},e(c,[2,22]),{14:r,21:n,27:[1,61],28:a,31:36,32:22,33:23,34:24,35:25,36:27},e(c,[2,21]),e(h,[2,36])],defaultActions:{3:[2,2],17:[2,1],18:[2,3],19:[2,4]},parseError:function(e,t){if(!t.recoverable){var s=new Error(e);throw s.hash=t,s}this.trace(e)},parse:function(e){var t=this,s=[0],i=[null],r=[],n=this.table,a="",o=0,c=0,l=r.slice.call(arguments,1),u=Object.create(this.lexer),h={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(h.yy[m]=this.yy[m]);u.setInput(e,h.yy),h.yy.lexer=u,h.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var f=u.yylloc;r.push(f);var d=u.options&&u.options.ranges;"function"==typeof h.yy.parseError?this.parseError=h.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var p,g,y,v,x,S,b,k,T=function(){var e;return"number"!=typeof(e=u.lex()||1)&&(e=t.symbols_[e]||e),e},w={};;){if(g=s[s.length-1],this.defaultActions[g]?y=this.defaultActions[g]:(null==p&&(p=T()),y=n[g]&&n[g][p]),void 0===y||!y.length||!y[0]){var M="";for(x in k=[],n[g])this.terminals_[x]&&x>2&&k.push("'"+this.terminals_[x]+"'");M=u.showPosition?"Parse error on line "+(o+1)+":\n"+u.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[p]||p)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(M,{text:u.match,token:this.terminals_[p]||p,line:u.yylineno,loc:f,expected:k})}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+p);switch(y[0]){case 1:s.push(p),i.push(u.yytext),r.push(u.yylloc),s.push(y[1]),p=null,c=u.yyleng,a=u.yytext,o=u.yylineno,f=u.yylloc;break;case 2:if(S=this.productions_[y[1]][1],w.$=i[i.length-S],w._$={first_line:r[r.length-(S||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(S||1)].first_column,last_column:r[r.length-1].last_column},d&&(w._$.range=[r[r.length-(S||1)].range[0],r[r.length-1].range[1]]),void 0!==(v=this.performAction.apply(w,[a,c,o,h.yy,y[1],i,r].concat(l))))return v;S&&(s=s.slice(0,-1*S*2),i=i.slice(0,-1*S),r=r.slice(0,-1*S)),s.push(this.productions_[y[1]][0]),i.push(w.$),r.push(w._$),b=n[s[s.length-2]][s[s.length-1]],s.push(b);break;case 3:return!0}}return!0}};const f=(e,t)=>({__prototype:"MesaureLayout",type:e,data:t}),d=e=>({__prototype:"SingleMLayout",measure:Number(e)}),p=e=>({__prototype:"BlockMLayout",seq:e}),g=(e,t,s)=>({__prototype:"VoltaMLayout",times:Number(e),body:t,alternates:s}),y=(e,t)=>({__prototype:"ABAMLayout",main:e,rest:t}),v=e=>({segment:!0,length:Number(e)}),x=e=>e.map(e=>"BlockMLayout"===e.__prototype?e.seq:[e]),S=(e,t)=>{if(e=Number(e),!((t=Number(t))>=e))throw new Error(`invalid measure range: ${e}..${t}`);return Array(t+1-e).fill(0).map((t,s)=>d(e+s))},b=(e,t={index:1})=>{const s=e=>[].concat(...e.map(e=>((e,t)=>{if(e.segment){const s=t.index;return t.index+=e.length,Array(e.length).fill(0).map((e,t)=>d(s+t))}return[b(e,t)]})(e,t)));switch(e.__prototype){case"BlockMLayout":e.seq=s(e.seq);break;case"VoltaMLayout":e.body=s(e.body),e.alternates=e.alternates&&e.alternates.map(s);break;case"ABAMLayout":e.main=b(e.main,t),e.rest=s(e.rest)}return e};var k={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,s=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var s,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],s=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var n in r)this[n]=r[n];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),n=0;nt[0].length)){if(t=s,i=n,this.options.backtrack_lexer){if(!1!==(e=this.test_match(s,r[n])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[i]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,s,i){switch(s){case 0:break;case 1:case 3:case 4:return t.yytext;case 2:return 14;case 5:return 5}},rules:[/^(?:\s+)/,/^(?:([*,\[\]<>{}]))/,/^(?:(([1-9])([0-9])*))/,/^(?:(([a-z])+):)/,/^(?:\.\.)/,/^(?:$)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function T(){this.yy={}}return m.lexer=k,T.prototype=m,m.Parser=T,new T}();me.Parser;me.Parser;var fe=function(){return me.parse.apply(me,arguments)};var de,pe;!function(e){e[e.Default=0]="Default",e[e.Brace=1]="Brace",e[e.Bracket=2]="Bracket",e[e.Square=3]="Square"}(de||(de={})),function(e){e[e.Blank=0]="Blank",e[e.Dashed=1]="Dashed",e[e.Solid=2]="Solid"}(pe||(pe={}));const ge=e=>({type:de.Default,staff:e}),ye={"{":de.Brace,"}":de.Brace,"<":de.Bracket,">":de.Bracket,"[":de.Square,"]":de.Square},ve={",":pe.Blank,"-":pe.Solid,".":pe.Dashed},xe=()=>btoa(Math.random().toString().substr(2)).replace(/=/g,"").split("").reverse().slice(0,6).join(""),Se=(e,t)=>{let s=t;for(;s.length;){const t=s.shift(),i=ye[t];if(i){if("}>]".includes(t)&&i===e.type)break;if("{<[".includes(t)){const t={type:i,level:Number.isFinite(e.level)?e.level+1:0};s=Se(t,s),e.subs=e.subs||[],e.subs.push(t)}}else e.subs=e.subs||[],e.subs.push(ge(t))}for(;e.type===de.Default&&e.subs&&1===e.subs.length;){const t=e.subs[0];e.type=t.type,e.subs=t.subs,e.staff=t.staff,e.level=t.level}for(;e.subs&&1===e.subs.length&&e.subs[0].type===de.Default;){const t=e.subs[0];e.subs=t.subs,e.staff=t.staff}return e.grand=e.type===de.Brace&&e.subs&&e.subs.every(e=>e.staff),s},be=e=>e.staff?e.staff:e.subs?be(e.subs[0]):void 0,ke=e=>e.staff?e.staff:e.subs?ke(e.subs[e.subs.length-1]):void 0,Te=(e,t)=>{t[(e=>e.staff?e.staff:e.subs?`${be(e)}-${ke(e)}`:void 0)(e)]=e,e.subs&&e.subs.forEach(e=>Te(e,t))};class StaffLayout{constructor(e){const t=new Set;e.forEach((e,s)=>{e.id=((e,t,s)=>{let i=s;for(i?e.has(i)&&(i+="_"+t.toString()):i=t.toString();e.has(i);)i+="_"+xe();return i})(t,s+1,e.id),t.add(e.id)}),this.staffIds=e.map(e=>e.id),this.conjunctions=e.slice(0,e.length-1).map(e=>e.conjunction?ve[e.conjunction]:pe.Blank);const s=[].concat(...e.map(e=>[...e.leftBounds,e.id,...e.rightBounds]));this.group={type:de.Default},Se(this.group,s);const i={};Te(this.group,i),this.groups=Object.entries(i).map(([e,t])=>{let s=e.split("-");1===s.length&&(s=[s[0],s[0]]);return{group:t,range:s.map(e=>this.staffIds.indexOf(e)),key:e}}),this.maskCache=new Map}get stavesCount(){return this.staffIds?this.staffIds.length:null}get partGroups(){const e=this.groups.filter(e=>e.group.grand);return this.groups.filter(t=>{if(t.group.grand)return!0;if(t.range[0]===t.range[1]){const s=t.range[0];return!e.some(e=>e.range[0]<=s&&e.range[1]>=s)}return!1})}get standaloneGroups(){const e=[],t=s=>{s.grand?e.push(s.subs.map(e=>e.staff)):s.staff?e.push([s.staff]):s.subs&&s.subs.forEach(e=>t(e))};return t(this.group),e}conjunctionBetween(e,t){if(t<=e)return null;let s=pe.Solid;for(let i=e;it&1<({ids:e.staffIds.slice(t.range[0],t.range[1]+1).filter(e=>s.includes(e)),...t})).filter(({ids:e})=>e.length).map(({ids:e,...t})=>({key:t.key,group:t.group,range:[s.indexOf(e[0]),s.indexOf(e[e.length-1])]})),r=s.slice(0,s.length-1).map((t,i)=>{const r=s[i+1];return e.conjunctionBetween(e.staffIds.indexOf(t),e.staffIds.indexOf(r))});return{staffIds:s,conjunctions:r,groups:i}}mask(e){return this.maskCache.get(e)||this.maskCache.set(e,StaffLayout.makeMaskLayout(this,e)),this.maskCache.get(e)}partialMaskCode(e,t=!1){const s=this.staffIds.map((t,s)=>s(e[this.staffIds[s]]=t,e),{}),i=e=>{if(e.staff)return[s[e.staff]?e.staff:null,null===s[e.staff]];const t=e.subs.map(e=>i(e)),r=t.map(e=>e[0]).filter(Boolean).join(","),n=t.some(([e,t])=>t),a=r?((e,t=!1)=>{if(e===de.Default)return e=>e;if(t)switch(e){case de.Brace:return e=>`{${e}`;case de.Bracket:return e=>`<${e}`;case de.Square:return e=>`[${e}`;default:return e=>e}switch(e){case de.Brace:return e=>`{${e}}`;case de.Bracket:return e=>`<${e}>`;case de.Square:return e=>`[${e}]`;default:return e=>e}})(e.type,n)(r):null;return[a,n]};let[r]=i(this.group);return r=r||"",t||(r=r.replace(/[_\w]+/g,"")),r}}var we=function(){var e=function(e,t,s,i){for(s=s||{},i=e.length;i--;s[e[i]]=t);return s},t=[1,15],s=[1,16],i=[1,17],r=[1,11],n=[1,12],a=[1,13],o=[1,24],c=[1,25],l=[1,26],u=[5,11,12,13,15,16,17,21,22,23,24],h=[15,16,17,21,22,23,24],m=[11,12,13,15,16,17,21,22,23,24],f=[5,11,12,13,21,22,23,24],d={trace:function(){},yy:{},symbols_:{error:2,start_symbol:3,staff_layout:4,EOF:5,seq:6,seq_id:7,seq_br:8,seq_con:9,bound_left:10,"<":11,"[":12,"{":13,bound_right:14,">":15,"]":16,"}":17,bound_lefts:18,bound_rights:19,conjunction:20,"-":21,",":22,".":23,ID:24,seq_bl:25,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",11:"<",12:"[",13:"{",15:">",16:"]",17:"}",21:"-",22:",",23:".",24:"ID"},productions_:[0,[3,2],[4,1],[6,0],[6,1],[6,1],[6,1],[10,1],[10,1],[10,1],[14,1],[14,1],[14,1],[18,1],[18,2],[19,1],[19,2],[20,1],[20,1],[20,1],[7,1],[7,2],[7,2],[7,2],[7,2],[25,1],[25,2],[25,2],[25,2],[8,2],[8,2],[8,2],[9,1],[9,2],[9,2],[9,2],[9,2]],performAction:function(e,t,s,i,r,n,a){var o=n.length-1;switch(r){case 1:return n[o-1];case 2:n[o].next(),this.$=n[o].toJSON();break;case 3:this.$=new Seq;break;case 13:case 15:this.$=[n[o]];break;case 14:case 16:this.$=[...n[o-1],n[o]];break;case 20:this.$=new Seq,this.$.tip.i(n[o]);break;case 21:case 23:n[o-1].next(),n[o-1].tip.i(n[o]),this.$=n[o-1];break;case 22:case 24:n[o-1].tip.i(n[o]),this.$=n[o-1];break;case 25:this.$=new Seq,this.$.tip.bl(n[o]);break;case 26:case 27:n[o-1].next(),n[o-1].tip.bl(n[o]),this.$=n[o-1];break;case 28:n[o-1].tip.bl(n[o]),this.$=n[o-1];break;case 29:case 30:case 31:n[o-1].tip.br(n[o]),this.$=n[o-1];break;case 32:this.$=new Seq,this.$.tip.con(n[o]),this.$.next();break;case 33:case 34:case 35:case 36:n[o-1].tip.con(n[o]),n[o-1].next(),this.$=n[o-1]}},table:[{3:1,4:2,5:[2,3],6:3,7:4,8:5,9:6,10:14,11:t,12:s,13:i,18:10,20:9,21:r,22:n,23:a,24:[1,7],25:8},{1:[3]},{5:[1,18]},{5:[2,2]},{5:[2,4],10:14,11:t,12:s,13:i,14:23,15:o,16:c,17:l,18:22,19:20,20:21,21:r,22:n,23:a,24:[1,19]},{5:[2,5],10:14,11:t,12:s,13:i,18:29,20:28,21:r,22:n,23:a,24:[1,27]},{5:[2,6],10:14,11:t,12:s,13:i,14:23,15:o,16:c,17:l,18:33,19:31,20:32,21:r,22:n,23:a,24:[1,30]},e(u,[2,20]),{14:23,15:o,16:c,17:l,19:35,20:36,21:r,22:n,23:a,24:[1,34]},e(u,[2,32]),e(h,[2,25],{10:37,11:t,12:s,13:i}),e(u,[2,17]),e(u,[2,18]),e(u,[2,19]),e(m,[2,13]),e(m,[2,7]),e(m,[2,8]),e(m,[2,9]),{1:[2,1]},e(u,[2,21]),e(f,[2,29],{14:38,15:o,16:c,17:l}),e(u,[2,33]),e(h,[2,26],{10:37,11:t,12:s,13:i}),e(u,[2,15]),e(u,[2,10]),e(u,[2,11]),e(u,[2,12]),e(u,[2,23]),e(u,[2,35]),e(h,[2,27],{10:37,11:t,12:s,13:i}),e(u,[2,24]),e(f,[2,31],{14:38,15:o,16:c,17:l}),e(u,[2,36]),e(h,[2,28],{10:37,11:t,12:s,13:i}),e(u,[2,22]),e(f,[2,30],{14:38,15:o,16:c,17:l}),e(u,[2,34]),e(m,[2,14]),e(u,[2,16])],defaultActions:{3:[2,2],18:[2,1]},parseError:function(e,t){if(!t.recoverable){var s=new Error(e);throw s.hash=t,s}this.trace(e)},parse:function(e){var t=this,s=[0],i=[null],r=[],n=this.table,a="",o=0,c=0,l=r.slice.call(arguments,1),u=Object.create(this.lexer),h={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(h.yy[m]=this.yy[m]);u.setInput(e,h.yy),h.yy.lexer=u,h.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var f=u.yylloc;r.push(f);var d=u.options&&u.options.ranges;"function"==typeof h.yy.parseError?this.parseError=h.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var p,g,y,v,x,S,b,k,T=function(){var e;return"number"!=typeof(e=u.lex()||1)&&(e=t.symbols_[e]||e),e},w={};;){if(g=s[s.length-1],this.defaultActions[g]?y=this.defaultActions[g]:(null==p&&(p=T()),y=n[g]&&n[g][p]),void 0===y||!y.length||!y[0]){var M="";for(x in k=[],n[g])this.terminals_[x]&&x>2&&k.push("'"+this.terminals_[x]+"'");M=u.showPosition?"Parse error on line "+(o+1)+":\n"+u.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[p]||p)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(M,{text:u.match,token:this.terminals_[p]||p,line:u.yylineno,loc:f,expected:k})}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+p);switch(y[0]){case 1:s.push(p),i.push(u.yytext),r.push(u.yylloc),s.push(y[1]),p=null,c=u.yyleng,a=u.yytext,o=u.yylineno,f=u.yylloc;break;case 2:if(S=this.productions_[y[1]][1],w.$=i[i.length-S],w._$={first_line:r[r.length-(S||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(S||1)].first_column,last_column:r[r.length-1].last_column},d&&(w._$.range=[r[r.length-(S||1)].range[0],r[r.length-1].range[1]]),void 0!==(v=this.performAction.apply(w,[a,c,o,h.yy,y[1],i,r].concat(l))))return v;S&&(s=s.slice(0,-1*S*2),i=i.slice(0,-1*S),r=r.slice(0,-1*S)),s.push(this.productions_[y[1]][0]),i.push(w.$),r.push(w._$),b=n[s[s.length-2]][s[s.length-1]],s.push(b);break;case 3:return!0}}return!0}};class Item{constructor(){this.id=null,this.leftBounds=[],this.rightBounds=[],this.conjunction=null}i(e){return this.id=e,this}bl(e){return this.leftBounds=e,this}br(e){return this.rightBounds=e,this}con(e){return this.conjunction=e,this}}class Seq{constructor(){this.body=[],this.tip=new Item}next(){return this.body.push(this.tip),this.tip=new Item,this}toJSON(){return this.body}}var p={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,s=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var s,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],s=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var n in r)this[n]=r[n];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),n=0;nt[0].length)){if(t=s,i=n,this.options.backtrack_lexer){if(!1!==(e=this.test_match(s,r[n])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[i]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,s,i){switch(s){case 0:break;case 1:return t.yytext;case 2:return 24;case 3:return 5}},rules:[/^(?:\s+)/,/^(?:([-,.\[\]<>{}]))/,/^(?:([a-zA-Z_0-9]+))/,/^(?:$)/],conditions:{INITIAL:{rules:[0,1,2,3],inclusive:!0}}};function g(){this.yy={}}return d.lexer=p,g.prototype=d,d.Parser=g,new g}();we.Parser;we.Parser;var Me=function(){return we.parse.apply(we,arguments)};const Ee=e=>{const t=Me(e);return new StaffLayout(t)};class DummyLogger{debug(...e){}group(...e){}groupCollapsed(...e){}groupEnd(){}info(...e){}warn(...e){}assert(...e){}}const Ne=(e,t,s=-1/0)=>Math.max(Math.round(e/t)*t,s),Ie=(e,t)=>{const s=e.x-t.x,i=e.y-t.y;return Math.sqrt(s*s+i*i)},Ce=(e,t)=>Number.isInteger(e)&&Number.isInteger(t)?0===t?e:Ce(t,e%t):(console.error("non-integer gcd:",e,t),1),_e=(e,t)=>({numerator:e,denominator:t}),Oe=(e,t)=>{e=Math.round(e),t=Math.round(t);const s=0!==e?Ce(e,t):t;return _e(e/s,t/s)},Be=e=>`${e.numerator}/${e.denominator}`,Ae=(e,t)=>t?e*t.numerator/t.denominator:e,Pe=(e,t)=>{const s=[...e].sort((e,s)=>e[t]-s[t]);let i=null,r=null;return s.reduce((e,n,a)=>(r?n[t]-r[t]<.4?i.push(n):(i.length>1&&e.push(i),r=n,i=[n]):(r=n,i=[n]),i.length>1&&a===s.length-1&&e.push(i),e),[])},Re=e=>{if(e.length<=1)return[];let t=e.slice(1);const s=I.find(t=>t.includes(e[0].semantic));if(!s)return Re(t);const i=t.filter(e=>s.includes(e.semantic));return t=t.filter(e=>!s.includes(e.semantic)),[...i,...Re(t)]},De=e=>{const t=new Set(e),s=Pe(e,"x"),i=[].concat(...s.map(e=>Pe(e,"y")));return i.forEach(e=>e.sort((e,t)=>t.confidence-e.confidence)),i.forEach(e=>{Re(e).forEach(e=>t.delete(e))}),Array.from(t)},Fe=[0,2,4,5,7,9,11],Le=({note:e,alter:t})=>{const s=Math.floor(e/7),i=(e=>{let t=e%7;for(;t<0;)t+=7;return t})(e);return 60+12*s+Fe[i]+t},$e=e=>{const t=Math.max(...e);return e.indexOf(t)},je=1920;var He,Ve,ze,qe,Ge,We;!function(e){e.Up="^",e.Down="_",e.Middle="-"}(He||(He={})),function(e){e.Grace="grace",e.AfterGrace="afterGrace",e.Acciaccatura="acciaccatura",e.Appoggiatura="appoggiatura",e.SlashedGrace="slashedGrace"}(Ve||(Ve={})),function(e){e.Open="Open",e.Close="Close",e.Continue="Continue"}(ze||(ze={})),function(e){e.Pitcher="Pitcher",e.Catcher="Catcher",e.Pierced="Pierced"}(qe||(qe={})),function(e){e.Normal="normal",e.DashedLine="dashed-line",e.DottedLine="dotted-line",e.Zigzag="zigzag",e.Trill="trill"}(Ge||(Ge={})),function(e){e.Normal="Normal",e.Bracket="Bracket",e.Parenthesis="Parenthesis",e.ParenthesisDashed="ParenthesisDashed",e.ArrowDown="ArrowDown"}(We||(We={}));class Term extends SimpleClass{}class EventTerm extends Term{static space({tick:e,duration:t}){const s=new EventTerm({rest:"s",tick:e,accessories:[]});return s.duration=Math.round(t),s}constructor(e){super(),super.assign(e),Object.assign(this,e),Number.isFinite(e.left)&&Number.isFinite(e.right)&&(this.x=(this.left+this.right)/2),Number.isFinite(this.pivotX)||(this.pivotX=this.x)}get alignedTick(){return this.grace?this.tick+this.duration:this.tick}get mainDuration(){return je*2**-this.division*(2-2**-this.dots)}get duration(){let e=this.mainDuration;return this.multiplier&&(e*=this.multiplier.numerator/this.multiplier.denominator),this.timeWarp&&(e*=this.timeWarp.numerator/this.timeWarp.denominator),this.grace?e/8:e}set duration(e){console.assert(Number.isFinite(e),"invalid duration value:",e);const t=Ce(e,128),s=Math.log2(128/t),i=Oe(e*2**s,je);this.division=s,this.dots=0,i.numerator!==i.denominator?this.multiplier=i:this.multiplier=void 0}get prior(){return this.tick}get times(){return this.timeWarp?`${this.timeWarp.numerator}/${this.timeWarp.denominator}`:null}get fullMeasureRest(){return"R"===this.rest}get tipX(){return this.tip?this.tip.x:this.x}get tipY(){return this.tip?this.tip.y:this.ys?this.ys[0]:0}get tremoloCatcher(){return this.tremoloLink===qe.Catcher}get scaleChord(){return this.pitches.map(e=>"CDEFGAB"[(e.note+700)%7]).join("")}get zeroHolder(){return!!this.grace||this.tremoloCatcher}}var Ue;EventTerm.className="EventTerm",function(e){e[e.Clef=0]="Clef",e[e.KeyAcc=1]="KeyAcc",e[e.Acc=2]="Acc",e[e.OctaveShift=3]="OctaveShift",e[e.TimeSignatureC=4]="TimeSignatureC",e[e.TimeSignatureN=5]="TimeSignatureN"}(Ue||(Ue={}));class ContextedTerm extends Term{constructor(e){super(),Object.assign(this,e)}get type(){return R.includes(this.tokenType)?Ue.Clef:/\|key-/.test(this.tokenType)?Ue.KeyAcc:/accidentals-/.test(this.tokenType)?Ue.Acc:$.includes(this.tokenType)?Ue.OctaveShift:F.includes(this.tokenType)?Ue.TimeSignatureC:L.includes(this.tokenType)?Ue.TimeSignatureN:null}get staffLevel(){return[Ue.OctaveShift,Ue.Clef,Ue.KeyAcc].includes(this.type)}get prior(){return this.tick-.1}get clef(){switch(this.tokenType){case B.ClefG:return-this.y-2;case B.ClefF:return 2-this.y;case B.ClefC:return-this.y}return null}get alter(){switch(this.tokenType){case B.AccNatural:case B.KeyNatural:return 0;case B.AccSharp:case B.KeySharp:return 1;case B.AccFlat:case B.KeyFlat:return-1;case B.AccDoublesharp:return 2;case B.AccFlatflat:return-2}return null}get octaveShift(){switch(this.tokenType){case B.OctaveShift8va:return-1;case B.OctaveShift0:return 0;case B.OctaveShift8vb:return 1}return null}get number(){switch(this.tokenType){case B.TimesigZero:return 0;case B.TimesigOne:return 1;case B.TimesigTwo:return 2;case B.TimesigThree:return 3;case B.TimesigFour:return 4;case B.TimesigFive:return 5;case B.TimesigSix:return 6;case B.TimesigSeven:return 7;case B.TimesigEight:return 8;case B.TimesigNine:return 9}return null}}ContextedTerm.className="ContextedTerm";class MarkTerm extends Term{get prior(){return this.tick+.01}}MarkTerm.className="MarkTerm";const Ye=Array(7).fill(0).map((e,t)=>String.fromCodePoint(119133+t));class TempoTerm extends MarkTerm{static fromNumeralText(e){if(/.+=.*\d+/.test(e)){const[t,s]=e.split("=");let i=Ye.findIndex(e=>t.includes(e));i=i>=0?i:2;let r=(2**i).toString();return t.includes(".")&&(r+="."),new TempoTerm({tick:0,duration:r,beats:s})}return null}constructor(e){super(),Object.assign(this,e)}get prior(){return this.tick-.01}get durationMagnitude(){const[e,t,s]=this.duration.match(/^(\d+)(\.)?$/);return je/Number(t)*(s?1.5:1)}get bpm(){const[e]=this.beats.match(/\d+/)||[90];return Number(e)*this.durationMagnitude*4/je}isValid(e=[10,400]){const t=this.bpm;return Number.isFinite(this.bpm)&&t>=e[0]&&t{if(!e.regulated)return;const t=e.eventMap,s=e.events.length,i=e.voices.flat(1).length,r=e.events.filter(e=>e.timeWarp).length,n=new Set(e.events.filter(e=>e.timeWarp&&!(e.rest&&0===e.division)).map(e=>`${e.timeWarp.numerator}/${e.timeWarp.denominator}`)),a=new Set(n);a.delete("2/3");const o=e.voices.some(e=>{const s=e.map(e=>t[e]);if(!s.some(e=>e.timeWarp))return!1;let i=0,r=0,n=0;return s.some((e,t)=>{const a=e.timeWarp?e.timeWarp.denominator:0;if(a!==i){if(i>0&&(r%i||n<2))return!0;r=0,n=0}return i=a,r+=e.duration,++n,!!(t===s.length-1&&i>0&&(r%i||n<2))})}),c=e.voices.some(e=>{const s=e.map(e=>t[e]);let i=0;return s.some(e=>!e.grace&&(e.ticke.timeWarp&&e.timeWarp.denominator>3).map(e=>e.duration)).size>1,u=Ae(je,e.timeSignature),h=e.doubtfulTimesig?e.duration:u,m=e.voices.flat(1).map(e=>t[e]),f=m.some(e=>!e||!Number.isFinite(e.tick)||!Number.isFinite(e.division)||e.division<0||!Number.isFinite(e.duration)||e.duration<=0),d=m.reduce((e,t)=>e||t.tick<0||t.tick+t.duration>h,!1),p=e.duration>u,g=m.some(e=>e.grace),y=e.events.filter(e=>e.grace).length,v=y>=m.length,x=m.some(e=>{let t=e.tick*2**(e.division+2);if(e.timeWarp&&(t*=e.timeWarp.denominator),!Number.isFinite(t))return!0;return Ce(Math.round(t),je)e.reduce(({status:e,broken:s},i,r)=>{const n=t[i];return n.beam?(0===r&&[ze.Continue,ze.Close].includes(n.beam)&&(e=1),e+=Xe[n.beam],s=s||!(e>=0&&e<=1)):n.rest||(s=s||0!==e),{status:e,broken:s}},{status:0,broken:!1})).some(({broken:e})=>e);let b=0,k=0;e.voices.forEach(s=>{const i=s.reduce((e,s)=>e+t[s].duration,0);b+=Math.max(0,e.duration-i),k+=Math.max(0,i-e.duration)}),b/=je;const T=e.events.filter(e=>!(e.grace||e.fullMeasureRest||e.tremoloCatcher||e.predisposition&&!(e.predisposition.fakeP<.1)||Number.isFinite(e.tick))).length,w=e.events.filter(e=>!(e.fullMeasureRest||e.grace||e.tremoloCatcher||m.includes(e))).length,{voiceRugged:M}=e.voices.flat(1).reduce((e,t)=>!e.voiceRugged&&e.es.has(t)?{voiceRugged:!0,es:e.es}:(e.es.add(t),e),{voiceRugged:!1,es:new Set}),E=e.tickTwist||0,N=f||E>=1||c||M||e.tickRatesInStaves.some(e=>e<0)||T>2||!e.timeSignature||d||e.duration>h||e.events.some(e=>e.timeWarp&&e.timeWarp.numerator/e.timeWarp.denominator<=.5),I=!N&&!p&&E<.2&&!o&&!a.size&&!x&&!b&&!k&&!!e.voices.length&&!S&&!g&&!v&&(e.duration===h||Number.isFinite(e.estimatedDuration)&&e.estimatedDuration<=.75*h),C=!(N||p||!(E<.3)||o||x||k||S||g);let _=Math.min(h,3840);Number.isFinite(e.estimatedDuration)&&(_=Math.max(0,Math.min(_,e.estimatedDuration)));const O=e.duration/_;let B=0;if(e.patched&&!f)B=1;else if(!N){const t=Math.tanh(1*Math.abs(b/Math.max(1,e.voices.length)));let s=Math.min(h,3840);Number.isFinite(e.estimatedDuration)&&(s=Math.max(0,Math.min(s,e.estimatedDuration)));B=(1-t)*(1-(s?Math.max(0,1-O)**2:0))*(1-Math.tanh(a.size))*(1-E**2)}return{events:s,validEvents:i,voiceRugged:M,nullEvents:T,fakeEvents:w,warpedEvents:r,complicatedTimewarp:l,spaceTime:b,surplusTime:k,durationRate:O,beamBroken:S,fractionalWarp:o,irregularWarpsN:a.size,irregularTick:x,tickTwist:E,tickOverlapped:c,graceInVoice:g,graceN:y,graceDominant:v,perfect:I,fine:C,error:N,qualityScore:B}};class SemanticGraph extends SimpleClass{constructor(e){super(),super.assign(e)}static fromPoints(e=[]){const t=new SemanticGraph;return t.points=e,t}getLayer(e){return this.points.filter(t=>t.semantic===e)}getConfidentLayer(e,t){return this.points.filter(s=>s.semantic===e&&(!Number.isFinite(s.confidence)||s.confidence>=t))}getSystemPoints(){return this.points.filter(e=>E.includes(e.semantic))}getStaffPoints(){return this.points.filter(e=>!E.includes(e.semantic))}offset(e,t){this.points.forEach(s=>{s.x+=e,s.y+=t})}scale(e){this.points.forEach(t=>{t.x*=e,t.y*=e})}transform(e){this.points.forEach(t=>{let s=t.x*e[0][0]+t.y*e[1][0]+e[2][0];const i=t.x*e[0][1]+t.y*e[1][1]+e[2][1];if(t.extension){if(Number.isFinite(t.extension.y1)){const i=t.x*e[0][1]+t.extension.y1*e[1][1]+e[2][1],r=t.x*e[0][1]+t.extension.y2*e[1][1]+e[2][1];s=t.x*e[0][0]+.5*(t.extension.y1+t.extension.y2)*e[1][0]+e[2][0],t.extension.y1=i,t.extension.y2=r}if(Number.isFinite(t.extension.width)){const s=Math.sqrt(e[0][0]*e[1][1]-e[0][1]*e[1][0]);t.extension.width*=s,t.extension.height*=s}}t.x=s,t.y=i})}}SemanticGraph.className="SemanticGraph";const Ze=[g.ClefG,g.ClefF,g.ClefC,g.TimesigC44,g.TimesigC22,g.TimesigZero,g.TimesigOne,g.TimesigTwo,g.TimesigThree,g.TimesigFour,g.TimesigFive,g.TimesigSix,g.TimesigSeven,g.TimesigEight,g.TimesigNine,g.OctaveShift8va,g.OctaveShift8vb,g.OctaveShift0,g.Zero,g.One,g.Two,g.Three,g.Four,g.Five,g.Six,g.Seven,g.Eight,g.Nine,g.AccNatural,g.AccSharp,g.AccDoublesharp,g.AccFlat,g.AccFlatflat,g.NoteheadS0,g.NoteheadS1,g.NoteheadS2,g.NoteheadS1stemU,g.NoteheadS1stemD,g.NoteheadS2stemU,g.NoteheadS2stemD,g.Rest0,g.Rest1,g.Rest2,g.Rest3,g.Rest4,g.Rest5,g.Rest6,g.Rest0W,g.RestM1,g.SlurBegin,g.SlurEnd,g.Dot,g.f,g.p,g.m,g.n,g.r,g.s,g.z,g.ScriptFermata,g.ScriptShortFermata,g.ScriptSforzato,g.ScriptStaccato,g.ScriptStaccatissimo,g.ScriptTurn,g.ScriptTrill,g.ScriptSegno,g.ScriptCoda,g.ScriptArpeggio,g.ScriptPrall,g.ScriptMordent,g.ScriptMarcato,g.ScriptTenuto,g.ScriptPortato,g.PedalStar,g.PedalPed,g.GraceNotehead,g.BeamLeft,g.BeamRight,g.BeamContinue,g.CrescendoBegin,g.CrescendoEnd,g.DecrescendoBegin,g.DecrescendoEnd,g.TremoloLeft,g.TremoloRight,g.TremoloMiddle],Je=[g.AccNatural,g.AccSharp,g.AccDoublesharp,g.AccFlat,g.AccFlatflat,g.NoteheadS0,g.NoteheadS1,g.NoteheadS2,g.NoteheadS1stemU,g.NoteheadS1stemD,g.NoteheadS2stemU,g.NoteheadS2stemD],Qe=[g.SignLined,g.SignInterval],et=[g.NoteheadS1,g.NoteheadS2],tt={AccSharp:B.KeySharp,AccNatural:B.KeyNatural,AccFlat:B.KeyFlat},st={[g.NoteheadS1]:{up:g.NoteheadS1stemU,down:g.NoteheadS1stemD},[g.NoteheadS2]:{up:g.NoteheadS2stemU,down:g.NoteheadS2stemD}},it=[g.Rest0,g.Rest1,g.Rest2,g.Rest3,g.Rest4,g.Rest5,g.Rest6],rt={[B.BeamLeft]:"Open",[B.BeamRight]:"Close",[B.BeamContinue]:"Continue"},nt={Alter1:p.Alternation1,Alter2:p.Alternation2},at=(e,t)=>{switch(e.length){case 0:return;case 1:return e[0];case 2:return"u"===t?Math.min(...e):Math.max(...e);default:{const s=e.reduce((e,t)=>e+t,0)/e.length;return e.sort((e,t)=>Math.abs(e-s)-Math.abs(t-s)),at(e.slice(0,e.length-1),t)}}};class Measure extends SimpleClass{constructor(e){super(),super.assign(e),this.tokens=this.tokens||[],this.antiTokens=this.antiTokens||[],this.barTypes=this.barTypes||{}}get right(){return this.left+this.width}get noteheads(){return this.tokens.filter(e=>e.isNotehead).sort((e,t)=>e.x-t.x)}get chordRects(){const e=this.noteheads.filter(e=>[B.NoteheadS0,B.NoteheadS1stemU,B.NoteheadS2stemU,B.NoteheadS1stemD,B.NoteheadS2stemD].includes(e.type));let t=0;const s=e.reduce((e,s)=>{const i=s.tip?`${s.tip.x}|${s.tip.y}`:`nul${t}`;let r=`${s.type}|${i}`;return!s.tip&&e[r]&&(e[r].some(e=>Math.abs(e.x-s.x){const t=Math.min(...e.map(e=>e.x)),s=Math.max(...e.map(e=>e.x)),i=Math.min(...e.map(e=>e.y)),r=Math.max(...e.map(e=>e.y)),n=e[0],a=n&&n.tip?n.tip.x:t;let o=t,c=s-t,l=null;switch(n.type){case B.NoteheadS0:o-=w.NoteheadS0/2,c+=w.NoteheadS0;break;case B.NoteheadS1stemU:case B.NoteheadS2stemU:l="u",o-=w.NoteheadS1,c+=w.NoteheadS1;break;case B.NoteheadS1stemD:case B.NoteheadS2stemD:l="d",c+=w.NoteheadS1}return{x:o,width:c,stemX:a,stemDirection:l,top:i,bottom:r,tip:n.tip}})}get timeWarped(){return this.tokens&&this.tokens.some(e=>e.timeWarped)}get additionalLines(){const e=this.getChords();return[...e.filter(e=>e.ys.some(e=>e<=-3)).map(e=>({left:e.left,right:e.right,n:Math.ceil(Math.min(...e.ys))+2})),...e.filter(e=>e.ys.some(e=>e>=3)).map(e=>({left:e.left,right:e.right,n:Math.floor(Math.max(...e.ys))-2}))].map(e=>({left:e.left-.28,right:e.right+.28,n:e.n}))}getChords(){const e=this.tokens.filter(e=>W.includes(e.type)),t=this.tokens.filter(e=>Z.includes(e.type)),s=this.tokens.filter(e=>Q.includes(e.type)),i=this.chordRects.map(e=>{const t=this.noteheads.filter(t=>t.direction===e.stemDirection&&t.left>=e.x&&t.right<=e.x+e.width+.2&&t.y>=e.top&&t.y<=e.bottom);t.sort((e,t)=>t.y-e.y);const s=t.map(e=>e.y),i=t.map(e=>e.id),r=t.reduce((e,t)=>Math.max(e,t.division),0);return{rect:e,left:e.x,right:e.x+e.width,pivotX:(n=t,at(n.map(e=>Number.isFinite(e.pivotX)?e.pivotX:e.x),n[0].direction)),ys:s,tip:e.tip,noteIds:i,division:r,dots:null,rest:!1,stemDirection:e.stemDirection,beam:null};var n}).sort((e,t)=>t.left-e.left),r=new Set,n=i.map(({rect:i,...n})=>{if(n.division>=1){const t=[i.bottom,i.top];switch(i.stemDirection){case"u":t[0]=i.tip?i.tip.y-.2:i.top-6-.5;break;case"d":t[1]=i.tip?i.tip.y+.2:i.bottom+6+.5}const a=e.filter(e=>!r.has(e.id)&&e.x>i.stemX-.2&&e.xt[0]&&e.yMath.max(e,t.division),n.division),a.forEach(e=>r.add(e.id)),n.division>=3){const e=i.tip&&s.find(e=>Math.abs(i.tip.x-e.x)<.3&&Math.abs(i.tip.y-e.y)<.7);e&&(n.beam=rt[e.type])}}const a=t.filter(e=>!r.has(e.id)&&e.x>i.x+i.width-.2&&e.xi.top-1&&e.y<=i.bottom+.5);return n.dots=a.reduce((e,t)=>Math.max(e,t.dots),0),a.forEach(e=>r.add(e.id)),n});return n.reverse(),n}getRests(){const e=this.tokens.filter(e=>G.includes(e.type)),t=this.tokens.filter(e=>Z.includes(e.type));return e.map(e=>{const s=t.filter(t=>t.x>e.x+.5&&t.xe.y-1&&t.yMath.max(e,t.dots),0);return{left:e.x-.75,right:e.x+.75,pivotX:e.x,rest:!0,ys:[e.y],noteIds:[e.id],dots:s,division:e.division,stemDirection:null}})}getEvents(){return[...this.getChords(),...this.getRests()].sort((e,t)=>e.left-t.left)}getContexts(e={}){return this.tokens.filter(e=>e.isContexted).sort((e,t)=>e.x-t.x).map(t=>new ContextedTerm({x:t.x,y:t.y,tokenType:t.type,...e}))}assignAccessoriesOnEvents(e){e.forEach(e=>e.accessories=e.accessories||[]);this.tokens.filter(e=>te.includes(e.type)).forEach(t=>{const s=e.filter(e=>t.x>e.left-1&&t.x0){let e=s[0];s.length>1&&(e=s.map(e=>({event:e,d:Math.min(...e.ys.map(e=>Math.abs(e-t.y)))})).sort(({d:e},{d:t})=>e-t).map(({event:e})=>e)[0]);let i=t.y>Math.max(...e.ys)?He.Down:He.Up;se.includes(t.type)&&(i=null),e.accessories.push({type:t.type,id:t.id,direction:i,x:t.x-e.left})}});const t=[...e];t.sort((e,t)=>e.left-t.left);this.tokens.filter(e=>e.type===B.ScriptArpeggio).forEach(e=>{const s=t.find(t=>e.xtt>e.y));s&&s.accessories.push({type:B.ScriptArpeggio,id:e.id,x:e.x-s.left})});this.tokens.filter(e=>e.type===B.GraceNotehead).forEach(t=>{const s=e.find(e=>t.x>e.left&&t.xMath.abs(t.y-e)<.4));s&&(s.grace=Ve.Grace)});const s=this.tokens.filter(e=>e.type===B.TremoloLeft),i=this.tokens.filter(e=>e.type===B.TremoloRight),r=this.tokens.filter(e=>e.type===B.TremoloMiddle),n=e.filter(e=>!e.rest).map(e=>{const t=[...e.ys];e.tip?t.push(e.tip.y):(t.push(e.ys[0]+2),t.push(e.ys[e.ys.length-1]-2));const s=e.tip?e.tip.x:e.left,i=e.tip?e.tip.x:e.right;return{event:e,top:Math.min(...t),bottom:Math.max(...t),stemL:s,stemR:i}});r.forEach(e=>{const t=n.find(t=>!!t.event.tip&&(e.y>t.top&&e.y{const t=n.find(t=>e.y>t.top&&e.yt.stemR&&e.x{const t=n.find(t=>e.y>t.top&&e.yt.stemL-1.6);t&&(t.event.tremolo=t.event.tremolo||2,++t.event.tremolo,t.event.tremoloLink=qe.Catcher)})}assignFeaturesOnEvents(e,t){const s=t.filter(e=>e.x>this.left&&e.xit.includes(e.semantic)),r=s.filter(e=>e.semantic===g.Flag3),n=s.filter(e=>e.semantic===g.Dot),a=s.filter(e=>e.semantic===g.BeamLeft),o=s.filter(e=>e.semantic===g.BeamContinue),c=s.filter(e=>e.semantic===g.BeamRight),l=s.filter(e=>e.semantic===g.GraceNotehead),u=s.filter(e=>e.semantic===g.TremoloRight),h=s.filter(e=>e.semantic===g.vline_Stem),m=s.filter(e=>e.semantic===g.NoteheadS0),f=s.filter(e=>e.semantic===g.NoteheadS1),d=s.filter(e=>e.semantic===g.NoteheadS2);e.forEach(e=>{const t=e.tip?e.tip.x:(e.left+e.right)/2,s=e.tip?Math.min(e.tip.y,e.ys[e.ys.length-1]):e.ys[e.ys.length-1],p=e.tip?Math.max(e.tip.y,e.ys[0]):e.ys[0],g=e.tip?e.tip.x:e.left,y=[0,0,0,0,0,0,0];if(e.rest){i.filter(s=>Ie(s,{x:t,y:e.ys[0]})<.5).forEach(e=>{const t=it.indexOf(e.semantic);y[t]=Math.max(y[t],e.confidence)})}else{const i=[m,f,d].map(t=>t.filter(t=>t.x>e.left&&t.xs-.25&&t.yMath.max(0,...e.map(e=>e.confidence))),n=r.filter(e=>e.y>s-.2&&e.yt.confidence-e.confidence),y[0]=i[0],y[1]=i[1],y[2]=i[2],Array(y.length-3).fill(0).forEach((e,t)=>y[3+t]=n[t]?n[t].confidence:0)}const v=n.filter(s=>s.x>t&&s.xv.some(t=>e.x>t.x&&Math.abs(e.y-t.y)<.2)),S=[Math.max(0,...v.map(e=>e.confidence)),Math.max(0,...x.map(e=>e.confidence))],b=[a,o,c].map(e=>e.filter(e=>Math.abs(e.x-t)<.2&&e.y>s-.2&&e.yMath.max(0,...e.map(e=>e.confidence))),k=h.filter(s=>Ie({x:t,y:e.ys[0]},{x:s.x,y:s.extension.y2})<.5),T=h.filter(s=>Ie({x:t,y:e.ys[e.ys.length-1]},{x:s.x,y:s.extension.y1})<.5),w=[Math.max(0,...k.map(e=>e.confidence)),Math.max(0,...T.map(e=>e.confidence))],M=l.filter(s=>Math.abs(s.x-t)<.6&&e.ys.some(e=>Math.abs(s.y-e)<.4)),E=Math.max(0,...M.map(e=>e.confidence)),N=0===e.division?u.filter(t=>t.x>e.left-2&&t.xe.y>s-.04&&e.yg-2&&e.xe.confidence));e.feature={divisions:y,dots:S,beams:b,stemDirections:w,grace:E,tremoloCatcher:I}})}}Measure.className="Measure",Measure.blackKeys=["tokens","antiTokens"];class Staff extends SimpleClass{constructor({measureCount:e=null,measureBars:t=null,...s}={}){if(super(),super.assign(s),this.height=this.height||10,this.staffY=this.staffY||5,t){let e=0;this.measures=t.map(t=>{const s=new Measure({left:e,width:t-e,height:this.height});return e=t,s})}else this.measures=e?Array(e).fill(null).map(()=>new Measure):[]}get noteRange(){const e=[].concat(...this.measures.map(e=>e.noteheads)).map(e=>e.y);return{top:Math.min(-2,...e),bottom:Math.max(2,...e)}}get additionalLines(){return[].concat(...this.measures.map(e=>e.additionalLines))}rearrangeMeasures(e){if(!e.length)return void console.warn("rearrangeMeasures error, measureBars are empty.");const t=this.measures?.map(e=>e.tokens).flat(1)||[];let s=0;this.measures=e.map(e=>{const t=new Measure({left:s,width:e-s,height:this.height});return s=e,t}),this.reassignTokens(t)}reassignTokens(e=null){e||(e=[].concat(...this.measures.map(e=>e.tokens))),this.measures.forEach(e=>e.tokens=[]),e.forEach(e=>{for(const t of this.measures)if(e.xe.semantic===g.TempoNotehead).forEach(e=>{const t=i.findIndex(t=>/^Notehead/.test(t.semantic)&&Ie(e,t)<.3);t>=0&&i.splice(t,1)});const r=e=>t.displacementSemantics?.[e]?this.semantics.find(t=>t.id===e):null;i.filter(e=>Ze.includes(e.semantic)).forEach(e=>this.appendPoint(e,{points:i}));const n=i.filter(e=>e.semantic===g.vline_Stem).filter(e=>e.extension.y2-e.extension.y1>1.5).map(e=>({x:e.x,y1:e.extension.y1,y2:e.extension.y2,direction:null})),a=i.filter(e=>et.includes(e.semantic)&&e.y>this.semanticTop&&e.y{if((s?1:0)^(e.x{const t=a.filter(t=>Math.abs(t.x-e.x)-w[t.semantic]/2<.32&&Math.abs(t.x-e.x)-w[t.semantic]/2>-.44&&t.y>e.y1-.5&&t.ye.x&&t.y>e.y2)&&!(t.xe.y-t.y);const s=Math.min(...t.map(t=>t.y-e.y1)),n=Math.min(...t.map(t=>e.y2-t.y));if(Math.min(s,n)>.5)return;const a=s!o.has(e.id)).forEach(e=>{const a=n.filter(t=>Math.abs(t.x-e.x)<2&&e.y>t.y1&&e.yMath.abs(t.x-e.x)-Math.abs(s.x-e.x)),o=a[0];if(o){const t="d"===o.direction,s=t?st[e.semantic].down:st[e.semantic].up;this.appendPoint({id:e.id,semantic:s,x:o.x+c(e,o,t),y:e.y,pivotX:e.x,confidence:e.confidence},{tip:{x:o.x,y:t?o.y2:o.y1},antiPoint:r(e.id),points:i})}else s.debug("isolated notehead:",t.index,this.index,e)});const l=i.filter(e=>e.semantic===g.Flag3);l.sort((e,t)=>e.x-t.x),this.appendFlags(l,n);const u=i.filter(e=>e.semantic===g.Dot).map(e=>{const t=Ne(e.y,.5);return{x:e.x,y:t}}).reduce((e,t)=>(e[t.y]=e[t.y]||[],e[t.y].push(t),e),{});Object.entries(u).forEach(([e,t])=>{const s=Number(e);if(t.length>1){t.sort((e,t)=>e.x-t.x);for(let e=0;ee.x>n.x&&e.x-n.x<1.2)&&this.appendPoint({id:n.id,x:n.x,y:s,confidence:n.confidence},{type:B.DotDot,antiPoint:r(n.id),points:i})}}});const h=i.filter(e=>e.semantic===g.KeyAcc);i.filter(e=>tt[e.semantic]).forEach(e=>{h.some(t=>Math.abs(e.x-t.x)<.5&&Math.abs(e.y-t.y)<1)&&this.appendPoint({id:e.id,x:e.x,y:e.y,confidence:e.confidence},{type:tt[e.semantic],points:i})});i.filter(e=>e.semantic===g.OctaveShift8).forEach(e=>{const t=e.y<0?B.OctaveShift8va:B.OctaveShift8vb;this.appendPoint({id:e.id,x:e.x,y:e.y,confidence:e.confidence},{type:t,points:i})});const m=this.semantics.filter(e=>[g.VoltaLeft,g.VoltaRight].includes(e.semantic));m.sort((e,t)=>e.x-t.x);const f=m.reduce((e,t)=>{const s=e[t.semantic],i=Array.from(Object.keys(s)).map(Number).find(e=>t.x{if(s.length>1){const i=s.reduce((e,t)=>e+t.confidence,0);s[0].y*s[1].y<0&&i>=2*e&&this.appendPoint(s[0],{type:B[t]})}})}appendPoint(e,{type:t,points:s=null,antiPoint:i,...r}={}){const n=e.x,a=this.measures.find(e=>nQe.includes(t.semantic)&&Math.abs(t.y-e.y)<.2&&Math.abs(t.x-e.x)<1.2);t.some(e=>e.semantic===g.SignLined)?o=!0:t.some(e=>e.semantic===g.SignInterval)&&(c=!0)}t=t||B[e.semantic];const l=ne[t];let u=re[t];(o||c)&&(u=Math.max(u,1));let h=e.y;Number.isFinite(l)?h=l:u&&(h=c?Ne(h+.5,u)-.5:Ne(h,u));const m=a.tokens.find(e=>e.type===t&&Math.abs(e.x-n)<.1&&Math.abs(e.y-h)<.1);m?Number.isFinite(m.confidence)&&m.confidence3||(a.tokens.push(new Token({id:e.id,type:t,x:n,y:h,pivotX:e.pivotX,confidence:e.confidence,...r})),i&&a.antiTokens.push(new Token({id:i.id,type:t,x:n,y:i.y,confidence:i.confidence})))}appendFlags(e,t){t.map(t=>({...t,flags:e.filter(e=>Math.abs(e.x-t.x)<.3&&e.y>t.y1-.5&&e.ye.flags.length).forEach(e=>{const t=e.flags.reduce((e,t)=>e&&e.confidence>t.confidence?e:t,null),s="d"===e.direction,i=s?Math.min(e.y2,e.y1+6):Math.max(e.y1,e.y2-6),r=e.flags.map(e=>({tip:(i-e.y)*(s?1:-1),confidence:e.confidence})).filter(e=>e.tip<2||e.confidence>.7*t.confidence).length,n=W[r-1];n&&this.appendPoint({id:e.flags[0].id,x:e.x,y:i,confidence:Math.min(...e.flags.map(e=>e.confidence))},{type:n})})}clearTokens(){this.measures.forEach(e=>e.tokens=[]),this.semantics=[]}clearPredictedTokens(){this.measures.forEach(e=>e.tokens=e.tokens.filter(e=>!e.isPredicted))}}Staff.className="Staff",Staff.blackKeys=["index","semanticTop","semanticBttom"];class System extends SimpleClass{constructor({stavesCount:e,...t}){if(super(),super.assign(t),!this.measureBars){const e=5,t=(this.width-e)/this.measureCount;this.measureBars=Array(this.measureCount).fill(0).map((s,i)=>e+t*(i+1))}!t.staves&&e&&(this.staves=Array(e).fill(null).map(()=>new Staff({measureBars:this.measureBars}))),this.arrangePosition(),this.measureCount=this.measureCount||this.measureBars.length,this.sidBlackList=this.sidBlackList||[],this.sidWhiteList=this.sidWhiteList||[]}get noteRange(){if(!this.staves.length)return null;const e=this.staves[0],t=this.staves[this.staves.length-1];return{top:e.top+e.staffY+e.noteRange.top,bottom:t.top+t.staffY+t.noteRange.bottom}}get staffPositions(){return this.staves.map(e=>({y:e.top+e.staffY,radius:2}))}get staffMask(){return this.staffMaskChanged?this.staffMaskChanged:this.prev&&this.staves.length===this.prev.staves.length?this.prev.staffMask:2**this.staves.length-1}get staffTop(){const e=this.staffPositions;return e.length?e[0].y-e[0].radius:0}get staffBottom(){const e=this.staffPositions;return e.length?e[e.length-1].y+e[e.length-1].radius:0}arrangePosition(){let e=0;for(const t of this.staves){if(Number.isFinite(t.top))break;t.top=e,e+=t.height}}tidyMeasureBars(){this.measureBars=this.measureBars.filter(e=>e>1),this.measureBars.sort((e,t)=>e-t);const e=this.width-this.measureBars[this.measureBars.length-1];e>12?this.measureBars.push(this.width):e<2&&(this.measureBars[this.measureBars.length-1]=this.width),this.measureBars=this.measureBars.filter((e,t)=>t<1||e-this.measureBars[t-1]>4)}rearrangeMeasures(){this.measureCount=this.measureBars.length,this.staves.forEach(e=>e.rearrangeMeasures(this.measureBars))}get height(){return this.staves.reduce((e,t)=>e+t.height,0)}get connectionLine(){const e=this.staves[0],t=this.staves[this.staves.length-1];return e&&{top:e.top+e.staffY-2,bottom:t.top+t.staffY+2}}get middleY(){if(!this.staves.length)return 0;return this.staves.reduce((e,t)=>e+t.top+t.staffY,0)/this.staves.length}get timeSignatureOnHead(){return this.staves.some(e=>e.measures[0]?.tokens.some(e=>D.includes(e.type)))}getStaffArray(e){let t=0;return Array(e).fill(null).map((e,s)=>{const i=this.staffMask&1<0?this.measureBars[e-1]:0,s=this.measureBars[e];return[...(this.tokens??[]).filter(e=>e.x>=t&&e.xTempoTerm.fromNumeralText(e.text)).filter(Boolean)]}getEvents(e){if(console.assert(Number.isInteger(this.headMeasureIndex),"invalid headMeasureIndex:",this.headMeasureIndex),!this.measureBars?.length&&this.staves.every(e=>!e.measures?.length))return{staffMask:this.staffMask,columns:[]};const t=this.getStaffArray(e).map(e=>e?e.measures.map(t=>{const s=t.getEvents();return t.assignAccessoriesOnEvents(s),t.assignFeaturesOnEvents(s,e.semantics),{events:s.map(t=>new EventTerm({staff:e.index,system:this.index,...t,rest:t.rest?"r":null})),contexts:t.getContexts({staff:e.index}),voltaBegin:t.tokens.some(e=>e.type===B.VoltaLeft),voltaEnd:t.tokens.some(e=>e.type===B.VoltaRight),alternative:t.alternative,barTypes:t.barTypes}}):Array(this.measureCount).fill(null).map(()=>({events:[],contexts:[],voltaBegin:!1,voltaEnd:!1,alternative:!1,barTypes:{}})));for(let e=0;et[e]?.contexts?.filter(e=>[Ue.TimeSignatureC,Ue.TimeSignatureN].includes(e.type))).find(e=>e?.length);s&&t.forEach(t=>{!t[e]||t[e].contexts.length||t[e].events.length||t[e].contexts.push(...s)})}const s=Array(this.measureCount).fill(null).map((e,s)=>({measureIndex:this.headMeasureIndex+s,rows:t.map(e=>e[s]),marks:this.getMarksInMeasure(s),duration:0,voltaBegin:t.some(e=>e[s]?.voltaBegin),voltaEnd:t.some(e=>e[s]?.voltaEnd),alternative:t.some(e=>e[s]?.alternative),barTypes:t.reduce((e,t)=>({...e,...t[s]?.barTypes}),{})}));s.forEach(e=>{[].concat(...e.rows.filter(Boolean).map(e=>e.events)).forEach((e,t)=>e.id=t+1)});const i=s[s.length-1];return i&&(i.break=!0),{staffMask:this.staffMask,columns:s}}getEventsFunctional(e,t,s=[],{useXMap:i=!1}={}){const r=this.getStaffArray(e).map((e,s)=>e?e.measures.map((e,i)=>{const r=t(s,i);return r&&{events:r.map(e=>new EventTerm({system:this.index,...e,rest:e.rest?"r":null})),contexts:e.getContexts({staff:s}),voltaBegin:e.tokens.some(e=>e.type===B.VoltaLeft),voltaEnd:e.tokens.some(e=>e.type===B.VoltaRight),alternative:e.alternative,barTypes:e.barTypes}}):Array(this.measureCount).fill(null).map(()=>({events:[],contexts:[],voltaBegin:!1,voltaEnd:!1,alternative:!1,barTypes:{}}))),n=Array(this.measureCount).fill(null).map((e,t)=>{const s=r.map(e=>e[t]);if(s.some(e=>!e))return null;let n=null;if(i){const e=[].concat(...s.map(e=>e.events)).reduce((e,t)=>(Number.isFinite(t.tickGroup)&&(e[t.tickGroup]=e[t.tickGroup]||[]),e[t.tickGroup].push(t),e),{});n=Object.values(e).reduce((e,t)=>{const s=Math.min(...t.map(e=>(e.left+e.right)/2));return e.set(s,t),e},new Map)}return{measureIndex:this.headMeasureIndex+t,rows:s,marks:this.getMarksInMeasure(t),duration:0,xMap:n,voltaBegin:s.some(e=>e.voltaBegin),voltaEnd:s.some(e=>e.voltaEnd),alternative:s.some(e=>e.alternative),barTypes:s.reduce((e,t)=>({...e,...t.barTypes}),{})}});return s.forEach(e=>n.forEach(e)),{staffMask:this.staffMask,columns:n}}getContexts(e){const t=this.getStaffArray(e).map(e=>e?e.measures.map(e=>({events:null,contexts:e.getContexts(),voltaBegin:e.tokens.some(e=>e.type===B.VoltaLeft),voltaEnd:e.tokens.some(e=>e.type===B.VoltaRight),alternative:t.some(e=>e.alternative),barTypes:e.barTypes})):Array(this.measureCount).fill(null).map(()=>({events:null,contexts:[],voltaBegin:!1,voltaEnd:!1,alternative:!1,barTypes:{}})));for(let e=0;et[e]?.contexts.filter(e=>[Ue.TimeSignatureC,Ue.TimeSignatureN].includes(e.type))).find(e=>e?.length);s&&t.forEach(t=>{t[e].contexts.length||t[e].contexts.push(...s)})}const s=Array(this.measureCount).fill(null).map((e,s)=>({measureIndex:this.headMeasureIndex+s,rows:t.map(e=>e[s]),marks:[],duration:0,voltaBegin:t.some(e=>e[s].voltaBegin),voltaEnd:t.some(e=>e[s].voltaEnd),alternative:t.some(e=>e.alternative),barTypes:t.reduce((e,t)=>({...e,...t[s].barTypes}),{})}));return{staffMask:this.staffMask,columns:s}}assignSemantics(e,t){const s=this.staves[e];console.assert(s,"staff is null:",e,this.staves);const i=s.top+s.staffY;t.getSystemPoints().forEach(e=>{const t={...e};t.y+=i,t.extension&&(t.extension={...t.extension},Number.isFinite(t.extension.y1)&&(t.extension.y1+=i,t.extension.y2+=i)),this.semantics.push(t)})}assemble(e,t=new DummyLogger){if(this.measureBars=[],!this.semantics)return;const s=SemanticGraph.fromPoints(this.semantics).getConfidentLayer(g.vline_BarMeasure,e);s.sort((e,t)=>e.x-t.x);const i=this.staffTop,r=this.staffBottom;let n=0;const a=s.reduce((e,t)=>{const s=Number.isFinite(t.confidence)?Math.tanh(t.confidence):1,a=t.x-n>.4?t.x:n;n=t.x;let o=e[a]||0;return o+=(Math.min(t.extension.y2,r)-Math.max(t.extension.y1,i))*s,t.x!==a&&delete e[a],e[t.x]=o,e},{}),o=Object.entries(a).filter(([e,t])=>t>3*this.staves.length).map(([e])=>Number(e));if(this.sidWhiteList.length)for(const e of s)this.sidWhiteList.includes(e.id)&&!o.some(t=>Math.abs(t-e.x)<=2)&&o.push(e.x);o.sort((e,t)=>e-t),o.forEach((e,t)=>{(t<=0||e-o[t-1]>2)&&this.measureBars.push(e)}),this.measureBars.length||this.measureBars.push(this.width),this.tidyMeasureBars(),this.rearrangeMeasures();this.semantics.filter(e=>[g.vline_BarTerminal,g.vline_BarSegment].includes(e.semantic)).forEach(e=>{const t=this.staves[0].measures.find(t=>e.x>t.right-2&&e.x{for(;!(l&1<_(this.index,i,e)),s.clearPredictedTokens(),s.assemble(e,this,t))})}qualifiedSemantics(e,t=1){return e.filter(e=>this.sidWhiteList.includes(e.id)||!this.sidBlackList.includes(e.id)&&(e.confidence>=t||!Number.isFinite(e.confidence))).map(e=>this.displacementSemantics&&this.displacementSemantics[e.id]?{...e,...this.displacementSemantics[e.id]}:e)}clearTokens(){this.staves.forEach(e=>e.clearTokens()),this.semantics=[]}newPoint(e,t,s=1){const i=this.staves[e];console.assert(i,"staff index out of bound:",e,this.staves.length);const{semantic:r,x:n,y:a,confidence:o=0,extension:c=null}=t,l={semantic:r,x:n,y:a,confidence:o,extension:c};return l.extension||delete l.extension,_(this.index,e,l),i.semantics.push(l),i.clearPredictedTokens(),i.assemble(s,this),l}appendToken(e){switch(this.tokens.push(e),e.textType){case p.TempoNumeral:{const t=this.staves[0];if(t){const s=t.top+t.staffY;t.measures.forEach(t=>{t.tokens=t.tokens.filter(t=>!V.includes(t.type)||Math.abs(t.x-e.x)>e.width/2||Math.abs(s+t.y-e.y)>e.fontSize/2)})}}break;case p.Alternation1:case p.Alternation2:this.staves[0].measures.forEach(t=>{const s=Math.min(t.left+t.width,e.x+e.width/2)-Math.max(t.left,e.x-e.width/2);t.alternative=t.alternative||s/t.width>.5})}}}System.className="System",System.blackKeys=["index","pageIndex","prev","next","headMeasureIndex","tokens","indent"];class Page extends SimpleClass{constructor(e){super(),super.assign(e),this.systems=this.systems||[],this.source&&(this.source.matrix=this.source.matrix||[1,0,0,1,0,0])}get sidBlackList(){const e=[].concat(...this.systems.map(e=>e.sidBlackList));return new Set(e)}get sidWhiteList(){const e=[].concat(...this.systems.map(e=>e.sidWhiteList));return new Set(e)}clearTokens(){this.semantics=null,this.tokens=null,this.systems.forEach(e=>e.tokens=null)}assignTexts(e,[t,s]){const i=this.source&&this.source.interval?this.source.interval*(t/this.source.dimensions.height):t/this.height;this.semantics=e.map(e=>{const r={x:(e.cx-s/2)/i,y:(e.cy-t/2)/i},n=this.source&&this.source.matrix?(a=r,{x:(o=this.source.matrix)[0]*a.x+o[2]*a.y+o[4],y:o[1]*a.x+o[3]*a.y+o[5]}):r;var a,o;return{confidence:e.score,x:n.x+this.width/2,y:n.y+this.height/2,semantic:g.rect_Text,extension:{text:e.text,type:e.type,width:e.width/i,height:e.height/i,theta:e.theta,textFeature:e.feature_dict}}})}assemble({textAnnotations:e=null}={},t=new DummyLogger){if(this.tokens=[],this.systems.forEach(e=>e.tokens=[]),this.systems.length){const e=this.systems.map(e=>e.left),t=e[Math.floor((e.length-1)/2)];this.systems.forEach(e=>e.indent=e.left>t+2)}if(this.semantics){const t=this.source?this.source.name:this.index.toString();this.semantics.forEach(s=>{O(t,s);const i={id:s.id,type:B.Text,confidence:s.confidence,textType:nt[s.extension.type]||s.extension.type,text:e&&e[s.id]||s.extension.text,textFeasure:s.extension.textFeature,width:s.extension.width,fontSize:s.extension.height};if(s.semantic===g.rect_Text)switch(i.textType){case p.Title:case p.Author:case p.PageMargin:case p.Other:this.tokens.push(new TextToken({x:s.x,y:s.y,...i}));break;case p.TempoNumeral:case p.Chord:case p.MeasureNumber:case p.Instrument:case p.Alternation1:case p.Alternation2:{const e=this.systems.find(e=>e.top+e.staffTop>s.y);e&&e.appendToken(new TextToken({x:s.x-e.left,y:s.y-e.top,...i}))}break;case p.TextualMark:case p.Times:{const e=[...this.systems].reverse().find(e=>e.topt>=e.top&&tr>=e.left&&r[e,ot[`TimeD${e}`]])),lt=Object.fromEntries(Array(12).fill(null).map((e,t)=>t+1).map(e=>[e,ot[`TimeN${e}`]])),ut=ot,ht={[ut.BOS]:"BOS",[ut.NoteheadS0]:"noteheads-s0",[ut.NoteheadS1]:"noteheads-s1",[ut.NoteheadS2]:"noteheads-s2",[ut.NoteheadGrace]:"GraceNotehead",[ut.Flag3]:"flags-u3",[ut.BeamLeft]:"BeamLeft",[ut.BeamContinue]:"BeamContinue",[ut.BeamRight]:"BeamRight",[ut.Dot]:"dot",[ut.Rest0]:"rests-0o",[ut.Rest1]:"rests-1o",[ut.Rest2]:"rests-2",[ut.Rest3]:"rests-3",[ut.Rest4]:"rests-4",[ut.Rest5]:"rests-5",[ut.Rest6]:"rests-6"},mt={[ut.NoteheadS0]:0,[ut.NoteheadS1]:1,[ut.NoteheadS2]:2,[ut.NoteheadGrace]:2},ft=[ut.NoteheadS0,ut.NoteheadS1,ut.NoteheadS2,ut.NoteheadGrace],dt=[ut.Rest0,ut.Rest1,ut.Rest2,ut.Rest3,ut.Rest4,ut.Rest5,ut.Rest6],pt=[ut.BeamLeft,ut.BeamContinue,ut.BeamRight],gt=[...ft,...dt],yt=[...ft,...dt,ut.vline_Stem],vt=[ut.BOS,ut.NoteheadS0,ut.vline_Stem,...dt],xt=[...gt,ut.vline_Stem],St={[ut.BeamLeft]:"Open",[ut.BeamRight]:"Close"},bt=e=>({type:e,staff:-1,x:0,y1:0,y2:0}),kt=bt(ot.BOS),Tt=e=>[bt(lt[e.numerator]),bt(ct[e.denominator])],wt=(e,t)=>{const s=e.filter((e,s)=>t[s]),i=Math.max(...s);return e.findIndex(e=>e===i)};class SemanticCluster extends SimpleClass{static elementToJSON(e){const t={type:e.type,staff:e.staff,x:e.x,y1:e.y1,y2:e.y2};return e.id&&(t.id=e.id),t}constructor(e){super(),super.assign(e)}get sourceMask(){return this.elements.map(e=>yt.includes(e.type))}get targetMask(){return this.elements.map(e=>vt.includes(e.type))}get vMask(){return this.elements.map(e=>xt.includes(e.type))}get compactMatrixH(){if(!this.matrixH)return null;const e=this.sourceMask,t=this.targetMask;return this.matrixH.filter((t,s)=>e[s]).map(e=>e.filter((e,s)=>t[s]))}set compactMatrixH(e){this.matrixH=Mt([].concat(...e),[this.sourceMask,this.targetMask])}get compactMatrixV(){if(!this._matrixV)return null;const e=this.vMask,t=this._matrixV.filter((t,s)=>e[s]).map(t=>t.filter((t,s)=>e[s]));return[].concat(...t.map((e,t)=>e.slice(0,t)))}set compactMatrixV(e){this.matrixV=e&&Et(e,this.vMask)}get matrixV(){return this.groupsV&&Nt(this.elements.length,this.groupsV)}set matrixV(e){if(!e)return this.groupsV=null,void(this._matrixV=e);const t=[],s=e.map((t,s)=>t.some(Number.isFinite)||e.some(e=>Number.isFinite(e[s])));e.forEach((e,i)=>{if(s[i]){let s=!1;for(let r=0;r=.5){const e=t.findIndex(e=>e.includes(r));t[e].push(i),s=!0;break}}s||t.push([i])}}),this.groupsV=t,this._matrixV=e}toJSON(){return{__prototype:"SemanticCluster",index:this.index,elements:this.elements.map(SemanticCluster.elementToJSON),compactMatrixH:this.compactMatrixH,compactMatrixV:this.compactMatrixV}}static mapMatrix(e,t,s){return t.reduce((t,s,i)=>(t[s]?t[s]=t[s].map((t,s)=>t+e[i][s]?1:0):t[s]=e[i],t),[]).map(e=>s.map(t=>e[t]))}mergeOverlapping(){const e=this.overlappedNoteheads();if(e.length){const t=this.elements.map((t,s)=>{const i=e.find(e=>s===e[1]),r=i?i[0]:s;return r-e.filter(e=>e[1]t.findIndex(e=>e===s));this.elements=s.map(e=>this.elements[e]),console.assert(this.elements.every(Boolean),"null element found:",this,t,s),this.matrixH=SemanticCluster.mapMatrix(this.matrixH,t,s),this.groupsV=this.groupsV.map(e=>Array.from(new Set(e.map(e=>t[e]))))}}overlappedNoteheads(){const e=[],t=this.elements.filter(e=>ft.includes(e.type));for(let s=0;st),t=this.masks?this.masks[1]:e.map(e=>vt.includes(this.elements[e].type)),s=e.map(e=>this.elements[e].type===ut.vline_Stem&&this.elements[e].y2-this.elements[e].y1>2),i=e.filter(e=>[ut.NoteheadS1,ut.NoteheadS2,ut.NoteheadGrace].includes(this.elements[e].type)),r=e.filter(e=>this.elements[e].type===ut.NoteheadS0),n=e.map(()=>!1),a={};i.forEach(t=>{const i=this.elements[t];e.filter(e=>s[e]).filter(e=>this.elements[e].y1-.5i.y1).sort((e,s)=>this.matrixH[t][s]-this.matrixH[t][e]).slice(0,2).filter((e,s)=>0===s||this.matrixH[t][e]>=.5).forEach(e=>{a[e]=a[e]||[],a[e].push(t)})}),r.forEach(e=>{const s=this.elements[e],i=wt(this.matrixH[e],t),r=this.elements[i];r.type===ut.NoteheadS0&&Math.abs(s.x-r.x)<2.6?(n[e]=!0,a[i]=a[i]||[i],a[i].push(e)):a[e]=a[e]||[e]});const o={},c=e.filter(e=>a[e]||dt.includes(this.elements[e].type));c.sort((e,t)=>this.elements[e].x-this.elements[t].x);const l=e.map(e=>e===ut.BOS);c.forEach(e=>{const t=wt(this.matrixH[e],l);o[e]=t,t&&!dt.includes(this.elements[t].type)&&(l[t]=!1),l[e]=!0});const u=this.elements.filter(e=>e.type===ut.Dot),h=this.elements.filter(e=>e.type===ut.Flag3),m=this.elements.filter(e=>pt.includes(e.type)),f=this.groupsV;return c.map(e=>{const t=this.elements[e],s=f?f.findIndex(t=>t.includes(e)):null;if(dt.includes(t.type)){const i=u.filter(e=>e.x>t.x+.5&&e.xt.y1-1&&e.y1this.elements[e]),r=Math.min(...i.map(e=>e.x-.7)),n=Math.max(...i.map(e=>e.x+.7));i.sort((e,t)=>t.y1-e.y1);const c=i.map(e=>e.y1),l=i.map(e=>e.id),f=c[0],d=c[c.length-1],p=u.filter(e=>e.x>n&&e.xf-1&&e.y1{const s=Ne(t.y1,.5);return e[s]=e[s]||[],e[s].push(t),e},{}),g=Math.max(...Object.values(p).map(e=>e.length),0);let y=mt[i[0].type],v=null,x=null,S=null;if(t.type===ut.vline_Stem){if(v=f-t.y1>t.y2-d?"u":"d",S={x:t.x,y:"u"===v?t.y1:t.y2},2===y){const e="u"===v?[t.y1-.4,t.y2-1]:[t.y1+1,t.y2+.4];y+=h.filter(s=>Math.abs(s.x-t.x)<.2&&s.y1>e[0]&&s.y1Math.abs(s.x-t.x)<.2&&s.y1>e[0]&&s.y1{const s=function*(){for(const t of e)yield t}(),[i,r]=t;return i.map(e=>r.map(t=>e&&t?s.next().value:null))},Et=(e,t)=>{const s=function*(){for(const t of e)yield t}();return t.map((e,i)=>t.map((t,r)=>e&&t&&r{const s=Array(e).fill(null).map((e,s)=>t.findIndex(e=>e.includes(s)));return Array(e).fill(null).map((t,i)=>Array(e).fill(null).map((e,t)=>{if(t>=i)return null;const r=s[i],n=s[t];return r<0||n<0?null:r===n?1:0}))};var It;!function(e){e[e.None=0]="None",e.Mordent="mordent",e.Prall="prall",e.Turn="turn",e.Trill="trill",e.Tremolo="tremolo",e.Arpeggio="arpeggio"}(It||(It={}));const Ct=class Stream{constructor(e){this.array=new Uint8Array(e),this.position=0}eof(){return this.position>=this.array.length}read(e){const t=this.array.slice(this.position,this.position+e);return this.position+=e,t}readString(e){return Array.from(this.read(e)).map(e=>String.fromCharCode(e)).join("")}readInt32(){const e=(this.array[this.position]<<24)+(this.array[this.position+1]<<16)+(this.array[this.position+2]<<8)+this.array[this.position+3];return this.position+=4,e}readInt16(){const e=(this.array[this.position]<<8)+this.array[this.position+1];return this.position+=2,e}readInt8(e){let t=this.array[this.position];return e&&t>127&&(t-=256),this.position+=1,t}readVarInt(){let e=0;for(;;){const t=this.readInt8();if(!(128&t))return e+t;e+=127&t,e<<=7}}};const _t=class OStream{constructor(){this.buffer=""}write(e){this.buffer+=e}writeInt32(e){this.buffer+=String.fromCharCode(e>>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e)}writeInt16(e){this.buffer+=String.fromCharCode(e>>8&255)+String.fromCharCode(255&e)}writeInt8(e){this.buffer+=String.fromCharCode(255&e)}writeVarInt(e){if(e<0)throw new Error("OStream.writeVarInt minus number: "+e);const t=127&e;e>>=7;let s=String.fromCharCode(t);for(;e;){const t=127&e;e>>=7,s=String.fromCharCode(128|t)+s}this.buffer+=s}getBuffer(){return this.buffer}getArrayBuffer(){return Uint8Array.from(this.buffer.split("").map(e=>e.charCodeAt(0))).buffer}};var Ot={parseMidiData:function(e){function t(e){const t=e.readString(4),s=e.readInt32();return{id:t,length:s,data:e.read(s)}}let s;function i(e){const t={};t.deltaTime=e.readVarInt();let i=e.readInt8();if(240&~i){let r;128&i?(r=e.readInt8(),s=i):(r=i,i=s);const n=i>>4;switch(t.channel=15&i,t.type="channel",n){case 8:return t.subtype="noteOff",t.noteNumber=r,t.velocity=e.readInt8(),t;case 9:return t.noteNumber=r,t.velocity=e.readInt8(),0===t.velocity?t.subtype="noteOff":t.subtype="noteOn",t;case 10:return t.subtype="noteAftertouch",t.noteNumber=r,t.amount=e.readInt8(),t;case 11:return t.subtype="controller",t.controllerType=r,t.value=e.readInt8(),t;case 12:return t.subtype="programChange",t.programNumber=r,t;case 13:return t.subtype="channelAftertouch",t.amount=r,t;case 14:return t.subtype="pitchBend",t.value=r+(e.readInt8()<<7),t;default:throw new Error("Unrecognised MIDI event type: "+n)}}else{if(255!==i){if(240===i){t.type="sysEx";const s=e.readVarInt();return t.data=e.readString(s),t}if(247===i){t.type="dividedSysEx";const s=e.readVarInt();return t.data=e.readString(s),t}throw new Error("Unrecognised MIDI event type byte: "+i)}{t.type="meta";const s=e.readInt8(),i=e.readVarInt();switch(s){case 0:if(t.subtype="sequenceNumber",2!==i)throw new Error("Expected length for sequenceNumber event is 2, got "+i);return t.number=e.readInt16(),t;case 1:return t.subtype="text",t.text=e.readString(i),t;case 2:return t.subtype="copyrightNotice",t.text=e.readString(i),t;case 3:return t.subtype="trackName",t.text=e.readString(i),t;case 4:return t.subtype="instrumentName",t.text=e.readString(i),t;case 5:return t.subtype="lyrics",t.text=e.readString(i),t;case 6:return t.subtype="marker",t.text=e.readString(i),t;case 7:return t.subtype="cuePoint",t.text=e.readString(i),t;case 32:if(t.subtype="midiChannelPrefix",1!==i)throw new Error("Expected length for midiChannelPrefix event is 1, got "+i);return t.channel=e.readInt8(),t;case 47:if(t.subtype="endOfTrack",0!==i)throw new Error("Expected length for endOfTrack event is 0, got "+i);return t;case 81:if(t.subtype="setTempo",3!==i)throw new Error("Expected length for setTempo event is 3, got "+i);return t.microsecondsPerBeat=(e.readInt8()<<16)+(e.readInt8()<<8)+e.readInt8(),t;case 84:if(t.subtype="smpteOffset",5!==i)throw new Error("Expected length for smpteOffset event is 5, got "+i);const s=e.readInt8();return t.frameRate={0:24,32:25,64:29,96:30}[96&s],t.hour=31&s,t.min=e.readInt8(),t.sec=e.readInt8(),t.frame=e.readInt8(),t.subframe=e.readInt8(),t;case 88:if(t.subtype="timeSignature",4!==i)throw new Error("Expected length for timeSignature event is 4, got "+i);return t.numerator=e.readInt8(),t.denominator=Math.pow(2,e.readInt8()),t.metronome=e.readInt8(),t.thirtyseconds=e.readInt8(),t;case 89:if(t.subtype="keySignature",2!==i)throw new Error("Expected length for keySignature event is 2, got "+i);return t.key=e.readInt8(!0),t.scale=e.readInt8(),t;case 127:return t.subtype="sequencerSpecific",t.data=e.readString(i),t;default:return t.subtype="unknown",t.data=e.readString(i),t}}}}let r=e;"string"==typeof e&&(r=e.split("").map(e=>e.charCodeAt(0)));const n=new Ct(r),a=t(n);if("MThd"!==a.id||6!==a.length)throw new Error("Bad .mid file - header not found");const o=new Ct(a.data),c=o.readInt16(),l=o.readInt16(),u=o.readInt16();let h;if(32768&u)throw new Error("Expressing time division in SMTPE frames is not supported yet");h=u;const m={formatType:c,trackCount:l,ticksPerBeat:h},f=[];for(let e=0;e>16&255),e.writeInt8(t.microsecondsPerBeat>>8&255),e.writeInt8(255&t.microsecondsPerBeat);break;case"smpteOffset":e.writeInt8(84),e.writeVarInt(5);var s={24:0,25:32,29:64,30:96}[t.frameRate];e.writeInt8(t.hour|s),e.writeInt8(t.min),e.writeInt8(t.sec),e.writeInt8(t.frame),e.writeInt8(t.subframe);break;case"timeSignature":e.writeInt8(88),e.writeVarInt(4),e.writeInt8(t.numerator),e.writeInt8(Math.log2(t.denominator)),e.writeInt8(t.metronome),e.writeInt8(t.thirtyseconds);break;case"keySignature":e.writeInt8(89),e.writeVarInt(2),e.writeInt8(t.key),e.writeInt8(t.scale);break;case"sequencerSpecific":e.writeInt8(127),e.writeVarInt(t.data.length),e.write(t.data);break;default:throw new Error("unhandled event subtype:"+t.subtype)}break;case"sysEx":e.writeInt8(240),e.writeVarInt(t.data.length),e.write(t.data);break;case"dividedSysEx":e.writeInt8(247),e.writeVarInt(t.data.length),e.write(t.data);break;case"channel":switch(t.subtype){case"noteOn":e.writeInt8(144|t.channel),e.writeInt8(t.noteNumber),e.writeInt8(t.velocity);break;case"noteOff":e.writeInt8(128|t.channel),e.writeInt8(t.noteNumber),e.writeInt8(t.velocity?t.velocity:0);break;case"noteAftertouch":e.writeInt8(160|t.channel),e.writeInt8(t.noteNumber),e.writeInt8(t.amount);break;case"controller":e.writeInt8(176|t.channel),e.writeInt8(t.controllerType),e.writeInt8(t.value);break;case"programChange":e.writeInt8(192|t.channel),e.writeInt8(t.programNumber);break;case"channelAftertouch":e.writeInt8(208|t.channel),e.writeInt8(t.amount);break;case"pitchBend":e.writeInt8(224|t.channel),e.writeInt8(255&t.value),e.writeInt8(t.value>>7&255);break;default:throw new Error("unhandled event subtype:"+t.subtype)}break;default:throw new Error("unhandled event type:"+t.type)}}const r=new _t,n=new _t;n.writeInt16(e.formatType),n.writeInt16(t.length),n.writeInt16(e.ticksPerBeat),s(r,"MThd",n.getBuffer());for(let e=0;e{const s=[];let i=120;const r=e.header.ticksPerBeat;for(let t=0;t0){e=a.ticksToEvent/r/(i/60)}"meta"==a.event.type&&"setTempo"==a.event.subtype&&(i=6e7/a.event.microsecondsPerBeat);const s=1e3*e*t||0;o.push([a,s]),a=n()}if(a=n())for(;a;)e()}(),o},trimSequence:e=>{const t=new Map;return e.filter(([{event:e,ticksToEvent:s}])=>{if(s>0&&t.clear(),"channel"!==e.type)return!0;const i=`${e.subtype}|${e.channel}|${e.noteNumber}`;return!t.get(i)&&(t.set(i,e),!0)})},fixOverlapNotes:e=>{const t=new Map,s=new Map,i=[];let r=-1;return e.forEach(([{event:e,ticksToEvent:n}],a)=>{if(n>0&&(r=a),"channel"!==e.type)return;const o=`${e.channel}|${e.noteNumber}`;switch(e.subtype){case"noteOn":t.get(o)?s.set(o,r):t.set(o,r);break;case"noteOff":s.get(o)?(i.push([s.get(o),a]),s.delete(o)):t.delete(o)}}),i.forEach((e,t)=>{for(let s=t-1;s>=0;--s){const t=i[s];if(t[1]t[0]&&++e[0]}}),i.forEach(([t,s])=>{if(s>=e.length-1||t<0)return;const i=e[s],r=e[s+1],n=e[t];if(!n[0].ticksToEvent)return void console.warn("invalid front index:",t,s,n);const a=n[1]/n[0].ticksToEvent;r[1]+=i[1],r[0].ticksToEvent+=i[0].ticksToEvent,i[0].ticksToEvent=n[0].ticksToEvent-1,n[0].ticksToEvent=1,i[1]=i[0].ticksToEvent*a,n[1]=n[0].ticksToEvent*a,e.splice(s,1),e.splice(t,0,i)}),e}};const At=Bt,Pt={64:"Sustain",65:"Portamento",66:"Sostenuto",67:"Soft"};class Notation$1{static parseMidi(e,{fixOverlap:t=!0}={}){const s=[],i={},r={},n=[],a=[];let o=0,c=5e3,l=0,u=4,h=0;const m={};let f,d=0,p=0;const g=[],y=e.header.ticksPerBeat;let v=At.midiToSequence(e);t&&(v=At.trimSequence(At.fixOverlapNotes(v)));const x=v.map(e=>({data:e[0].event,track:e[0].track,deltaTime:e[1],deltaTicks:e[0].ticksToEvent}));let S=0;for(const e of x){if(d+=e.deltaTicks,p=Math.round(1*d),e.deltaTicks>0){const t=e.deltaTicks/y;for(let e=Math.ceil(l);es.channel==t.channel&&s.pitch==e);if(i>=0){const r=s.splice(i,1)[0];n[t.channel].push({channel:t.channel,startTick:r.startTick,endTick:p,pitch:e,start:r.start,duration:o-r.start,velocity:r.velocity,beats:r.beats,track:r.track,finger:r.finger})}else console.debug("unexpected noteOff: ",o,t);m.high=Math.max(m.high||e,e)}break;case"controller":switch(t.controllerType){case 64:case 65:case 66:case 67:const e=Pt[t.controllerType];i[t.channel]=i[t.channel]||{},r[t.channel]=r[t.channel]||[];const s=i[t.channel][e];s&&r[t.channel].push({type:e,start:s.start,duration:o-s.start,value:s.value}),i[t.channel][e]={start:o,value:t.value}}}break;case"meta":switch(t.subtype){case"setTempo":c=t.microsecondsPerBeat/1e3,g.push({tempo:t.microsecondsPerBeat,tick:p,time:o});break;case"timeSignature":u=t.numerator,h=0;break;case"text":if(!f&&/^find-corres:/.test(t.text)){const e=t.text.match(/:([\d\,-]+)/);f=(e&&e[1]||"").split(",").map(e=>Number(e))}else if(/fingering\(.*\)/.test(t.text)){const[e,i]=t.text.match(/\((.+)\)/),r=Number(i);if(!Number.isNaN(r)){const e=s[s.length-1];e&&(e.finger=r);const t=x.find(e=>e.index==S-1);t&&(t.data.finger=r)}}break;case"copyrightNotice":console.log("MIDI copyright:",t.text)}}}return s.forEach(e=>{console.debug("unclosed noteOn event at",e.startTick,e),n[e.channel].push({startTick:e.startTick,endTick:p,pitch:e.pitch,start:e.start,duration:o-e.start,velocity:e.velocity,beats:e.beats,track:e.track,finger:e.finger})}),new Notation$1({channels:n,keyRange:m,pedals:r,bars:a,endTime:o,endTick:p,correspondences:f,events:x,tempos:g,ticksPerBeat:y,meta:{}})}constructor(e){Object.assign(this,e),this.notes=[];for(const e of this.channels)if(e)for(const t of e)this.notes.push(t);this.notes.sort(function(e,t){return e.start-t.start});for(const e in this.notes)this.notes[e].index=Number(e);this.duration=this.notes.length>0?this.endTime-this.notes[0].start:0,this.pitchMap=[];for(const e in this.channels)for(const t in this.channels[e]){const s=this.channels[e][t].pitch;this.pitchMap[s]=this.pitchMap[s]||[],this.pitchMap[s].push(this.channels[e][t])}if(this.pitchMap.forEach(e=>e.sort((e,t)=>e.start-t.start)),this.meta.beatInfos)for(let e=0;e0){const s=this.meta.beatInfos[e-1];t.beatIndex=s.beatIndex+Math.ceil((t.tick-s.tick)/this.ticksPerBeat)}else t.beatIndex=0}{let e=0,t=0,s=5e5;for(const i of this.tempos){e+=s/1e3*(i.tick-t)/this.ticksPerBeat,t=i.tick,s=i.tempo,i.time=e}}}findChordBySoftindex(e,t=.8){return this.notes.filter(s=>Math.abs(s.softIndex-e)e.from,"range is invalid:",e);const t=t=>{const s=Math.max(e.from,this.tempos[t].tick),i=te+s.tempo*t(i),0)/(e.to-e.from))}ticksToTime(e){console.assert(Number.isFinite(e),"invalid tick value:",e),console.assert(this.tempos&&this.tempos.length,"no tempos.");const t=this.tempos.findIndex(t=>t.tick>e),s=t<0?this.tempos.length-1:Math.max(t-1,0),i=this.tempos[s];return i.time+(e-i.tick)*i.tempo*.001/this.ticksPerBeat}timeToTicks(e){console.assert(Number.isFinite(e),"invalid time value:",e),console.assert(this.tempos&&this.tempos.length,"no tempos.");const t=this.tempos.findIndex(t=>t.time>e),s=t<0?this.tempos.length-1:Math.max(t-1,0),i=this.tempos[s];return i.tick+(e-i.time)*this.ticksPerBeat/(.001*i.tempo)}tickRangeToTimeRange(e){return console.assert(e.to>=e.from,"invalid tick range:",e),{from:this.ticksToTime(e.from),to:this.ticksToTime(e.to)}}scaleTempo({factor:e,headTempo:t}){console.assert(this.tempos&&this.tempos.length,"[Notation.scaleTempo] tempos is empty."),t&&(e=t/this.tempos[0].tempo),console.assert(Number.isFinite(e)&&e>0,"[Notation.scaleTempo] invalid factor:",e),this.tempos.forEach(t=>{t.tempo*=e,t.time*=e}),this.events.forEach(t=>{t.deltaTime*=e,t.time*=e}),this.notes.forEach(t=>{t.start*=e,t.duration*=e}),this.endTime*=e}}var Rt={Notation:Notation$1};const{Notation:Dt}=Rt,Ft=()=>new Promise(e=>requestAnimationFrame(e));var Lt=class MidiPlayer$1{constructor(e,{cacheSpan:t=600,onMidi:s,onPlayFinish:i,onTurnCursor:r}={}){let n;this.cacheSpan=t,this.onMidi=s,this.onPlayFinish=i,this.onTurnCursor=r,n=e.notes&&Number.isFinite(e.endTime)?e:Dt.parseMidi(e),this.notation=n,this.events=n.events,this.isPlaying=!1,this.progressTime=0,this.startTime=performance.now(),this.duration=n.endTime,this.cursorTurnDelta=0,console.assert(n.tempos&&n.tempos.length,"[MidiPlayer] invalid notation, tempos is empty.")}dispose(){this.isPlaying=!1,this.progressTime=0}get progressTicks(){return this.notation.timeToTicks(this.progressTime)}set progressTicks(e){this.progressTime=this.notation.ticksToTime(e),this.onTurnCursor&&this.onTurnCursor(this.progressTime)}async play({nextFrame:e=Ft}={}){this.progressTime>=this.duration&&(this.progressTime=0);let t=performance.now();this.startTime=t-this.progressTime,this.isPlaying=!0;let s=this.events.findIndex(e=>e.time>=t-this.startTime);for(;this.isPlaying;){for(;sthis.progressTime+this.cacheSpan)break;"channel"===e.data.type&&this.startTime+e.time>=t&&this.onMidi&&this.onMidi(e.data,this.startTime+e.time)}if(await e(),!this.isPlaying)break;if(0!==this.cursorTurnDelta){const e=this.cursorTurnDelta<0;if(this.startTime-=this.cursorTurnDelta,this.cursorTurnDelta=0,e)for(;s>0;--s){const e=this.events[s].time;if(this.startTime+ethis.duration&&(this.isPlaying=!1,this.onPlayFinish&&this.onPlayFinish())}}pause(){this.isPlaying=!1}turnCursor(e){this.isPlaying?this.cursorTurnDelta+=e-this.progressTime:this.progressTime=e,this.onTurnCursor&&this.onTurnCursor(e)}},$t={CostStepAttenuation:.6,SkipDeep:3,PriorDistanceSigmoidFactor:.1,PriorValueSigmoidFactor:.12,SkipCost:.5,LagOffsetCost:1,LeadOffsetCost:1.6,ZeroOffsetCost:.58,RelocationThreshold:6};const{pick:jt}=x.default,Ht=$t;class Node$2{constructor(e,t){this.s_note=e,this.c_note=t,console.assert(null!=this.s_note.softIndex,"s_note softIndex is null"),this.offset=this.s_note.softIndex-this.c_note.softIndex,this._prev=null,this._totalCost=0,this._value=0,this.cacheDirty=!0}get prev(){return this._prev}set prev(e){e!=this._prev&&(this._prev=e,this.cacheDirty=!0)}get si(){return this.s_note.index}get ci(){return this.c_note.index}get root(){return this.prev.root||this}get rootSi(){return this.prev.zero?this.si:this.prev.rootSi}get id(){return`${this.s_note.index},${this.c_note.index}`}static cost(e,t,s){return e*Ht.CostStepAttenuation+Math.tanh(t*Ht.SkipCost)+Math.tanh(.5*s)}updateCache(){this.cacheDirty&&(this._totalCost=Node$2.cost(this.prev.totalCost,this.si-this.prev.si-1,this.selfCost),this._value=this.prev.value+1-Math.tanh(.5*this.selfCost),this.cacheDirty=!1)}get totalCost(){return this.updateCache(),this._totalCost}get value(){return this.updateCache(),this._value}get deep(){return this.prev.deep+1}get path(){const e=[];for(let t=this;!t.zero;t=t.prev)e[t.si]=t.ci;for(let t=0;t=1,"node index error:",this,e);const s=Node$2.cost(e.totalCost,this.si-e.si-1,t);return(!this.prev||s0?Ht.LagOffsetCost:Ht.LeadOffsetCost))**2}return t}priorByOffset(e){const t=Math.abs(this.offset-e)/1;return Math.tanh(this.value*Ht.PriorValueSigmoidFactor)-Math.tanh(t*Ht.PriorDistanceSigmoidFactor)}static zero(){return{zero:!0,totalCost:0,value:0,si:-1,ci:-1,deep:0,offset:0}}}var Vt=Node$2;const zt=$t,qt=Vt;var Gt=class Navigator$1{constructor(e,t,s={}){this.criterion=e,this.sample=t,this.getCursorOffset=s.getCursorOffset||(()=>null),this.outOfPage=s.outOfPage,this.bestNode=null,this.fineCursor=null,this.breakingSI=t.notes.length-1,this.zeroNode=qt.zero(),this.zeroNode.offset=this.getCursorOffset()||0,this.relocationThreshold=s.relocationThreshold||zt.RelocationThreshold}step(e){const t=this.sample.notes[e];if(t.matches.length>0){t.matches.forEach(t=>{t.evaluatePrev(this.zeroNode);for(let s=e-1;s>=Math.max(this.breakingSI+1,e-zt.SkipDeep);--s){const i=this.sample.notes[s];console.assert(i,"prevNote is null:",s,e,this.sample.notes),i.matches.forEach(e=>{const s=t.offset-e.offset;s<2/zt.LagOffsetCost&&s>-2/zt.LeadOffsetCost&&t.evaluatePrev(e)})}if(t.prior=t.totalCost>1.99?-1:t.priorByOffset(this.zeroNode.offset),t.prior>0&&this.outOfPage){const e=this.criterion.notes[t.ci].startTick;this.outOfPage(e)&&(t.prior-=.7)}}),t.matches.sort((e,t)=>t.prior-e.prior),this.cursors=t.matches;let s=null;const i=this.nullSteps(e),r=this.cursors[0];r&&r.totalCost<1&&(r.prior>0||r.totalCost<.4&&Math.log(Math.max(i*r.value,.001))>this.relocationThreshold)&&(this.zeroNode.offset=r.offset,s=r,(!this.bestNode||r.value>this.bestNode.value)&&(this.bestNode=r)),s?this.fineCursor=s:this.resetCursor(e,{breaking:!1})||(this.zeroNode.offset+=t.deltaSi*Math.tanh(i),console.assert(!Number.isNaN(this.zeroNode.offset),"zeroNode.offset is NaN.",t.deltaSi,i))}else this.cursors=[]}path({fromIndex:e=0,toIndex:t=this.sample.notes.length-1}={}){const s=[];let i=null;for(let r=t;r>=e;){const e=this.sample.notes[r];if(!e.matches.length||e.matches[0].prior<-.01||e.matches[0].totalCost>=1){s[r]=-1,--r;continue}null!=i&&(e.matches.forEach(e=>e.backPrior=e.totalCost<1.99?e.priorByOffset(i):-1),e.matches.sort((e,t)=>t.backPrior-e.backPrior));const t=e.matches[0];t.path.forEach((e,t)=>s[t]=e),i=t.root.offset,r=t.rootSi-1}return console.assert(s.length==t+1,"path length error:",s,e,t+1,this.sample.notes.length,this.sample.notes.length?this.sample.notes[this.sample.notes.length-1].index:null),s}nullSteps(e){return e-(this.fineCursor?this.fineCursor.si:-1)-1}resetCursor(e,{breaking:t=!0}={}){t&&(this.breakingSI=e);const s=this.getCursorOffset();return null!=s&&(this.zeroNode.offset=s,this.zeroNode.si=e,this.fineCursor=null,console.assert(!Number.isNaN(this.zeroNode.offset),"zeroNode.offset is NaN.",s),!0)}get relocationTendency(){const e=this.cursors&&this.cursors[0];if(!e)return null;const t=this.nullSteps(e.si);return t<=0?0:Math.log(Math.max(t*e.value,.001))/this.relocationThreshold}};const Wt=Vt,Ut=Gt,Yt=e=>Math.tanh(e/192),Xt=function(e,t,{softIndexFactor:s=1}={}){const i=e[t=Number(t)];if(t>0){const r=e[t-1];console.assert(null!=i.start,"note.start is null",i),console.assert(null!=r.start,"lastNote.start is null",r),i.deltaSi=Yt((i.start-r.start)*s),i.softIndex=r.softIndex+i.deltaSi,console.assert(!Number.isNaN(i.deltaSi),"note.deltaSi is NaN.",i.start,r.start)}else i.softIndex=0,i.deltaSi=0};var Kt={normalizeInterval:Yt,makeNoteSoftIndex:Xt,makeMatchNodes:function(e,t,s=Wt.zero()){e.matches=[];const i=t.pitchMap[e.pitch];if(i)for(const t of i){const i=new Wt(e,t);s&&i.evaluatePrev(s),e.matches.push(i)}},genNotationContext:function(e,{softIndexFactor:t=1}={}){for(let s=0;s"setTempo"==e.subtype)||(n.push({time:t,type:"meta",subtype:"timeSignature",numerator:4,denominator:4,thirtyseconds:8}),n.push({time:t,type:"meta",subtype:"setTempo",microsecondsPerBeat:e.microsecondsPerBeat}));let a=t||0;if(e.notes)for(const t of e.notes)n.push({time:t.start,type:"channel",subtype:"noteOn",channel:t.channel||0,noteNumber:t.pitch,velocity:t.velocity,finger:t.finger}),a=Math.max(a,t.start),Number.isFinite(s)&&(t.duration=t.duration||s),t.duration&&(n.push({time:t.start+t.duration,type:"channel",subtype:"noteOff",channel:t.channel||0,noteNumber:t.pitch,velocity:0}),a=Math.max(a,t.start+t.duration));if(e.events){const t=e.events.filter(e=>!Jt.includes(e.data.subtype));for(const e of t)n.push({time:e.time,...e.data}),a=Math.max(a,e.time)}return n.push({time:a+100,type:"meta",subtype:"endOfTrack"}),n.sort(function(e,t){return e.time-t.time}),n.map((e,t)=>({event:e,index:t})).filter(({event:e})=>"noteOn"==e.subtype&&null!=e.finger).reverse().forEach(({event:e,index:t})=>n.splice(t+1,0,{time:e.time,type:"meta",subtype:"text",text:`fingering(${e.finger})`})),n.forEach(e=>e.ticks=Math.round((e.time-t)*i)),n.forEach((e,t)=>e.deltaTime=e.ticks-(t>0?n[t-1].ticks:0)),{header:r,tracks:[n]}}var es={sliceMidi:(e,t,s)=>({header:e.header,tracks:e.tracks.map(e=>((e,t,s)=>{(e=>{let t=0;e.forEach(e=>{t+=e.deltaTime,e.tick=t})})(e);const i=[],r={};return e.forEach(e=>{e.tick>=t&&e.tick<=s&&"endOfTrack"!==e.subtype?i.push({...e,tick:e.tick-t}):e.ticki.push({...e,tick:0})),i.push({tick:s-t,type:"meta",subtype:"endOfTrack"}),(e=>{let t=0;e.sort((e,t)=>e.tick-t.tick).forEach(e=>{e.deltaTime=e.tick-t,t=e.tick})})(i),i})(e,t,s))}),encodeToMIDIData:Qt,encodeToMIDI:function(e,t){const s=Qt(e,t);return Zt.encodeMidiFile(s)}};var ts={MIDI:Ot,MusicNotation:Rt,MidiPlayer:Lt,Matcher:Kt,MidiUtils:es};const ss=["id","ids","pitch","velocity","track","channel","rest","tied","overlapped","implicitType","afterGrace","contextIndex","staffTrack","chordPosition","division"];class MetaNotation{static fromAbsoluteNotes(e,t,s){const i=new MetaNotation(s);return i.measures=Array(t.length).fill(null).map((s,i)=>{const r=t[i],n=t[i+1]?t[i+1]-r:0,a=e.filter(e=>e.measure===i+1).map(e=>({tick:e.startTick-r,duration:e.endTick-e.startTick,...v.default(e,ss),subNotes:[]}));return a.forEach(e=>["rest","tied","implicitType","afterGrace"].forEach(t=>{e[t]||delete e[t]})),{tick:r,duration:n,notes:a}}),i.idTrackMap=e.reduce((e,t)=>(t.id&&(e[t.id]=t.track),e),{}),i}static performAbsoluteNotes(e,{withRestTied:t=!1}={}){const s=e.filter(e=>(t||!e.rest&&!e.tied)&&!e.overlapped).map(e=>({measure:e.measure,channel:e.channel,track:e.track,start:e.start,startTick:e.startTick,endTick:e.endTick,pitch:e.pitch,duration:e.duration,velocity:e.velocity||127,id:e.id,ids:e.ids,staffTrack:e.staffTrack,contextIndex:e.contextIndex,implicitType:e.implicitType,chordPosition:e.chordPosition})).reduce((e,t)=>{const s=`${t.channel}|${t.start}|${t.pitch}`,i=e[s];return i?i.ids.push(...t.ids):e[s]=t,e},{});return Object.values(s)}constructor(e){this.ripe=!1,e&&Object.assign(this,e)}get trackTickBias(){const e=this.measures[0];return this.trackNames.reduce((t,s,i)=>{if(t[s]=0,e){const r=e.notes.find(e=>e.track===i);r&&(t[s]=Math.min(r.tick,0))}return t},{})}get idSet(){return this.measures.reduce((e,t)=>(t.notes.filter(e=>!e.rest).forEach(t=>t.ids.forEach(t=>e.add(t))),e),new Set)}toJSON(){return{__prototype:"LilyNotation",measures:this.measures,idTrackMap:this.idTrackMap,trackNames:this.trackNames,ripe:this.ripe}}toAbsoluteNotes(e){let t=0;const s=e.map(e=>{const s=this.measures[e-1];console.assert(!!s,"invalid measure index:",e,this.measures.length);const i=s.notes.map(s=>({startTick:t+s.tick,endTick:t+s.tick+s.duration,start:t+s.tick,duration:s.duration,measure:e,...v.default(s,ss)}));return t+=s.duration,i});return[].concat(...s)}toPerformingNotation(e,t={}){const s=this.toAbsoluteNotes(e),i=MetaNotation.performAbsoluteNotes(s,t),r=Math.max(...i.map(e=>e.start+e.duration)),n=e.reduce((e,t)=>e+this.measures[t-1].duration,0);return new ts.MusicNotation.Notation({ticksPerBeat:480,meta:{},tempos:[],channels:[i],endTime:r,endTick:n})}toPerformingMIDI(e,{trackList:t}={}){if(!e.length)return null;const s=-Math.min(0,...this.measures[0]?.events.map(e=>e.ticks)||[],...this.measures[0]?.notes.map(e=>e.tick)||[]);let i=s;const r=e.map(e=>{const t=this.measures[e-1];console.assert(!!t,"invalid measure index:",e,this.measures.length);const s=t.events.map(t=>({ticks:i+t.ticks,track:t.track,data:{...t.data,measure:e}}));return i+=t.duration,s}),n=e=>e.ticks+("noteOff"===e.subtype?-1e-8:0),a=[].concat(...r).reduce((e,t)=>(e[t.track]=e[t.track]||[],e[t.track].push({ticks:t.ticks,...t.data}),e),[]);a[0]=a[0]||[],i=s,e.map(e=>{const s=this.measures[e-1];console.assert(!!s,"invalid measure index:",e,this.measures.length),Number.isFinite(s.duration)&&(s.notes.forEach(s=>{if(t&&!t[s.track])return;if(s.rest)return;const r=i+s.tick,n=a[s.track]=a[s.track]||[];s.subNotes.forEach(t=>{n.push({ticks:r+t.startTick,measure:e,ids:s.ids,type:"channel",subtype:"noteOn",channel:s.channel,noteNumber:t.pitch,velocity:t.velocity,staffTrack:s.staffTrack,staff:s.staff}),n.push({ticks:r+t.endTick,measure:e,ids:s.ids,type:"channel",subtype:"noteOff",channel:s.channel,noteNumber:t.pitch,velocity:0,staffTrack:s.staffTrack,staff:s.staff})})}),i+=s.duration)});const o=i;for(let e=0;e{e.sort((e,t)=>n(e)-n(t));let t=0;e.forEach(e=>{e.deltaTime=e.ticks-t,Number.isFinite(e.deltaTime)?t=e.ticks:e.deltaTime=0}),e.push({deltaTime:Math.max(o-t,0),type:"meta",subtype:"endOfTrack"})}),{header:{formatType:0,ticksPerBeat:480},tracks:a,zeroTick:s}}toPerformingNotationWithEvents(e,t={}){if(!e.length)return null;const{zeroTick:s,...i}=this.toPerformingMIDI(e,t),r=ts.MusicNotation.Notation.parseMidi(i);is(r);let n=s;return r.measures=e.map(e=>{const t=n;return n+=this.measures[e-1].duration,{index:e,startTick:t,endTick:n}}),r}setTempo(e){let t=!1;for(const s of this.measures)for(const i of s.events)"setTempo"===i.data.subtype&&(i.data.microsecondsPerBeat=6e7/e,t=!0);return t}}const is=(e,t=["ids","measure","staffTrack"])=>{const s=(e,t,s)=>`${e}|${t}|${s}`,i=e.notes.reduce((e,t)=>(e[s(t.channel,t.pitch,t.startTick)]=t,e),{});e.events.forEach(e=>{if("noteOn"===e.data.subtype){const r=s(e.data.channel,e.data.noteNumber,e.ticks),n=i[r];console.assert(!!n,"cannot find note of",r),n&&Object.assign(n,v.default(e.data,t))}})};var rs,ns={exports:{}},as={exports:{}};as.exports=rs=rs||function(e,t){var s;if("undefined"!=typeof window&&window.crypto&&(s=window.crypto),"undefined"!=typeof self&&self.crypto&&(s=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(s=globalThis.crypto),!s&&"undefined"!=typeof window&&window.msCrypto&&(s=window.msCrypto),!s&&"undefined"!=typeof global&&global.crypto&&(s=global.crypto),!s)try{s=require("crypto")}catch(e){}var i=function(){if(s){if("function"==typeof s.getRandomValues)try{return s.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof s.randomBytes)try{return s.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},r=Object.create||function(){function e(){}return function(t){var s;return e.prototype=t,s=new e,e.prototype=null,s}}(),n={},a=n.lib={},o=a.Base={extend:function(e){var t=r(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},c=a.WordArray=o.extend({init:function(e,s){e=this.words=e||[],this.sigBytes=s!=t?s:4*e.length},toString:function(e){return(e||u).stringify(this)},concat:function(e){var t=this.words,s=e.words,i=this.sigBytes,r=e.sigBytes;if(this.clamp(),i%4)for(var n=0;n>>2]>>>24-n%4*8&255;t[i+n>>>2]|=a<<24-(i+n)%4*8}else for(var o=0;o>>2]=s[o>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,s=this.sigBytes;t[s>>>2]&=4294967295<<32-s%4*8,t.length=e.ceil(s/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],s=0;s>>2]>>>24-r%4*8&255;i.push((n>>>4).toString(16)),i.push((15&n).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,s=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new c.init(s,t/2)}},h=l.Latin1={stringify:function(e){for(var t=e.words,s=e.sigBytes,i=[],r=0;r>>2]>>>24-r%4*8&255;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var t=e.length,s=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new c.init(s,t)}},m=l.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},f=a.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=m.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var s,i=this._data,r=i.words,n=i.sigBytes,a=this.blockSize,o=n/(4*a),l=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,u=e.min(4*l,n);if(l){for(var h=0;h>>7)^(d<<14|d>>>18)^d>>>3,g=l[f-2],y=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;l[f]=p+l[f-7]+y+l[f-16]}var v=i&r^i&n^r&n,x=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),S=m+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&u^~o&h)+c[f]+l[f];m=h,h=u,u=o,o=a+S|0,a=n,n=r,r=i,i=S+(x+v)|0}s[0]=s[0]+i|0,s[1]=s[1]+r|0,s[2]=s[2]+n|0,s[3]=s[3]+a|0,s[4]=s[4]+o|0,s[5]=s[5]+u|0,s[6]=s[6]+h|0,s[7]=s[7]+m|0},_doFinalize:function(){var e=this._data,s=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;return s[r>>>5]|=128<<24-r%32,s[14+(r+64>>>9<<4)]=t.floor(i/4294967296),s[15+(r+64>>>9<<4)]=i,e.sigBytes=4*s.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});s.SHA256=n._createHelper(u),s.HmacSHA256=n._createHmacHelper(u)}(Math),e.SHA256}(as.exports);var os=ns.exports;class HashVector{static fromHash(e){const t=[];for(const s of e)for(let e=0;e<8;++e)t.push(s>>e&1?1:-1);return new HashVector(t)}static fromString(e){const t=(e=>{const{words:t,sigBytes:s}=os(e),i=t.map(e=>e<0?e+4294967296:e),r=s/t.length;return new Uint8Array(s).map((e,t)=>i[Math.floor(t/r)]>>8*(3-t%r)&255)})(e);return HashVector.fromHash(t)}static fromWords(e){return e.map(e=>HashVector.fromString(e)).reduce((e,t)=>e.add(t),HashVector.zero)}static concat(...e){const t=e.map(e=>e.fields).flat(1);return new HashVector(t)}constructor(e=null){this.fields=e||Array(256).fill(0)}get length(){return this.fields.length}toHash(){return Uint8Array.from(Array(this.length/8).fill(0).map((e,t)=>this.fields.slice(8*t,8*(t+1)).reduce((e,t,s)=>e|(t>0?1:0)<this.fields[s]=t+e.fields[s]),this}scale(e){return this.fields=this.fields.map(t=>t*e),this}sub(e){const t=e>0?this.fields.slice(0,e):this.fields.slice(e);return new HashVector(t)}static get zero(){return new HashVector}}const cs=Array(256).fill(0).map((e,t)=>(e=>{let t=0;for(let s=e;s>0;s>>=1)s%2&&++t;return t})(t));cs.reduce((e,t,s)=>({...e,[("0"+s.toString(16)).slice(-2)]:t}),{});const ls=(e,t)=>{const s=8*e.length,i=((e,t)=>e.map((e,s)=>e^t[s]))(e,t);return(s-2*i.reduce((e,t)=>e+cs[t],0))/s},us=e=>("0"+e.toString(16)).slice(-2);var hs={Matrix:function(){}};hs.Matrix.create=function(e){return(new hs.Matrix).setElements(e)},hs.Matrix.I=function(e){for(var t,s=[],i=e;i--;)for(t=e,s[i]=[];t--;)s[i][t]=i===t?1:0;return hs.Matrix.create(s)},hs.Matrix.prototype={dup:function(){return hs.Matrix.create(this.elements)},isSquare:function(){var e=0===this.elements.length?0:this.elements[0].length;return this.elements.length===e},toRightTriangular:function(){if(0===this.elements.length)return hs.Matrix.create([]);var e,t,s,i,r=this.dup(),n=this.elements.length,a=this.elements[0].length;for(t=0;t=n&&l[a].push(r);for(o.elements[a]=s,e=a;e--;){for(s=[],t=0;t1===e?null:(e=>{const t=Math.round(1920*e);return Oe(t,1920)})(e);var ds,ps,gs;!function(e){e[e.PLACE=0]="PLACE",e[e.VERTICAL=1]="VERTICAL",e[e.HORIZONTAL=2]="HORIZONTAL"}(ds||(ds={}));class Action{constructor(e){Object.assign(this,e)}static P(e){return new Action({type:ds.PLACE,e1:e})}static V(e,t,s=1){return new Action({type:ds.VERTICAL,e1:s>0?e:t,e2:s>0?t:e})}static H(e,t){return new Action({type:ds.HORIZONTAL,e1:e,e2:t})}get id(){switch(this.type){case ds.PLACE:return this.e1.toString();case ds.VERTICAL:return`${this.e1}|${this.e2}`;case ds.HORIZONTAL:return`${this.e1}-${this.e2>=0?this.e2:"."}`}}get events(){return[this.e1,this.e2].filter(Number.isFinite)}}class StageMatrix{static fromNode(e,t){const s=Array(e.stages.length).fill(null).map(()=>Array(e.stages.length).fill(null).map(()=>new Set));e.actions.filter(e=>e.type===ds.HORIZONTAL).forEach(t=>{const i=e.stages.findIndex(e=>e.events.includes(t.e1)),r=e.stages.findIndex(e=>e.events.includes(t.e2));console.assert(i>=0&&r>=0,"invalid stages for H action:",e.id,e.stages,t),s[i][r].add(t.e1)}),s[0][e.stages.length-1].add(0);const i=e.stagedEvents,r=t.matrixH[t.matrixH.length-1].filter((e,t)=>!i.has(t)),n=Math.max(0,Math.max(...r)-.01),a=e.actions.filter(e=>e.type===ds.HORIZONTAL),o=Object.keys(t.eventMap).map(Number).filter(e=>!a.find(t=>t.e2===e));return e.stages.forEach(i=>{i.events.forEach(r=>{if(r>0){!a.find(e=>e.e1===r)&&t.matrixH[t.matrixH.length-1][r]>=n&&(o.some(e=>t.matrixH[e][r]>0)||s[i.index][e.stages.length-1].add(r))}})}),new StageMatrix({matrix:s})}constructor(e){Object.assign(this,e)}pathOf(e,t,s,i=0){if(this.matrix[e][t].size){const r=[...this.matrix[e][t]][i];if(t===s)return[r];for(let e=t+1;e<=s;++e){const i=this.pathOf(t,e,s);if(i)return[r,...i]}}return null}findDoublePath(e,t){const s=[];for(let i=t;i>=e+1;--i)for(let r=0;rt.forEach(t=>e.forEach(e=>t.delete(e))))}toEquations(e){const t=[];for(let s=1;sn[e]=1),r.forEach(e=>n[e]=-1),t.push(n),this.reducePath(i.length>r.length?i:r)}}}return t}}class PathNode{constructor(e){Object.assign(this,e),console.assert(this.logger,"logger is null:",e)}get actions(){const e=this.parent?this.parent.actions:[];return this.action?[...e,this.action]:e}get id(){return this.actions.map(e=>e.id).sort().join(" ")}get stagedEvents(){const e=new Set;return this.stages&&this.stages.forEach(t=>t.events.forEach(t=>t>=0&&e.add(t))),e}like(e){return e.split(" ").sort().join(" ")===this.id}constructStages(e){this.stages=[{events:[-1]}];for(const t of this.actions)switch(t.type){case ds.PLACE:this.stages.unshift({events:[t.e1]});break;case ds.VERTICAL:{const e=this.stages.find(e=>e.events.includes(t.e1)),s=this.stages.find(e=>e.events.includes(t.e2));console.assert(e||s,"invalid V action:",this.stages,t),e&&s?(e.events.push(...s.events),s.events=null,this.stages=this.stages.filter(e=>e.events)):e?s||e.events.push(t.e2):s.events.unshift(t.e1)}break;case ds.HORIZONTAL:{const s=this.stages.find(e=>e.events.includes(t.e1)),i=this.stages.find(e=>e.events.includes(t.e2));console.assert(s||i,"invalid H action:",this.stages,t);const r=s=>{console.assert(e.eventMap[s],"invalid event id:",t.id,s,e.eventMap);const i=e.eventMap[s].x,r=this.stages.find(t=>t.events.some(t=>t>0&&e.eventMap[t].x<=i)&&t.events.some(t=>t>0&&e.eventMap[t].x>=i));if(r)r.events.push(s);else{const t={events:[s]},r=this.stages.findIndex(t=>-1===t.events[0]||e.eventMap[t.events[0]].x>=i);this.stages.splice(r,0,t)}};s||r(t.e1),i||r(t.e2)}}this.stages.forEach((e,t)=>e.index=t)}constructConstraints(e){const t=Object.keys(e.eventMap).length,s=StageMatrix.fromNode(this,e).toEquations(t),i=Array(t).fill(null).map((t,s)=>e.eventMap[s].duration);this.constraints=s.map(e=>e.map((e,t)=>e*i[t]))}inbalancesConstraints(e){console.assert(this.constraints,"constraints not constructed.");const t=Object.keys(e.eventMap).length,s=Array(t).fill(!0),i=Array(t).fill(!1),r=[];for(const e of this.constraints){const t=e.reduce((e,t)=>e+t,0);if(0!==t){const n=t<0?e.map(e=>-e):e;if(n[0]>0)continue;r.push(n),n.forEach((e,t)=>{i[t]=i[t]||e<0,e&&(s[t]=e<0||i[t])})}}return this.constraints.forEach(e=>{0!==e.reduce((e,t)=>e+t,0)||e[0]||e.some((e,t)=>e&&!s[t])&&(e.forEach((e,t)=>e&&(s[t]=!1)),r.push(e))}),{ones:s,inbalances:r}}solveEquations({ones:e,inbalances:t}){if(!t.length)return e.map(()=>1);const s=e.map((e,t)=>({fixed:e,i:t})).filter(({fixed:e})=>!e).map(({i:e})=>e).filter(e=>t.some(t=>0!==t[e]));if(!s.length)return e.map(()=>1);const i=s.map(e=>Math.abs(t.find(t=>0!==t[e])[e])),r=new Map;let n=!1;const a=t.map(e=>({line:e.filter((e,t)=>s.includes(t)),bias:-e.reduce((e,t,i)=>e+(s.includes(i)?0:t),0)})).filter(({line:e,bias:t})=>{if(e.every(e=>0===e))return!1;const s=e.join(",");return r.has(s)?(n=r.get(s)!==t,!1):(r.set(s,t),!0)});if(n)return null;const o=a.slice(0,s.length),c=a.slice(s.length);if(o.lengths===t?1:s===r?-1:0),bias:0,prior:(i[t]+i[r])/ms};o.some(e=>e.line[t]&&e.line[r])&&(n.prior-=10),o.some(e=>1===e.line.filter(Number).length&&(e.line[t]||e.line[r]))&&(n.prior+=1),e.push(n)}e.sort((e,t)=>e.prior-t.prior),o.push(...e.slice(0,s.length-o.length))}const l=o.map(({line:e})=>e),u=o.map(({bias:e})=>e),h=function(e){const t=hs.Matrix.create(e).inverse();return null!==t?t.elements:null}(l);if(!h)return this.logger.warn("null invert:",l),null;const m=h.map(e=>e.reduce((e,t,s)=>e+t*u[s],0));if(c.length&&c.some(e=>Math.abs(e.line.reduce((e,t,s)=>e+t*m[s],0))>.001))return null;const f=e.map(()=>1);return s.forEach((e,t)=>f[e]=m[t]),f}optimallySolve(e){const{ones:t,inbalances:s}=this.inbalancesConstraints(e),i=t.map((t,s)=>t?-1:Ne(e.eventMap[s].shrinkness,.01)).reduce((e,t,s)=>(t>=0&&(e[t]=e[t]||[],e[t].push(s)),e),{}),r=Object.entries(i).sort((e,t)=>Number(t[0])-Number(e[0])).map(e=>e[1]);for(let i=1;i!n.includes(t)),o=this.solveEquations({ones:a,inbalances:s});if(o&&o.every((t,s)=>t<=1&&t>e.eventMap[s].lowWarp))return o}return this.solveEquations({ones:t,inbalances:s})}isConflicted(e){const{ones:t,inbalances:s}=this.inbalancesConstraints(e);for(const i of s){if(i.reduce((s,i,r)=>s+i*(t[r]||i<=0?1:e.eventMap[r].lowWarp),0)>=0)return i.forEach((t,s)=>{t&&(e.eventTendencies[s]+=t>0?1:-1)}),!0}if(!s.length)return!1;const i=this.solveEquations({ones:t,inbalances:s});return!i||!i.every((t,s)=>t>e.eventMap[s].lowWarp&&t<=1)}getSolution(e){const t=t=>e.eventMap[t.e2]?e.eventMap[t.e2].x+.06*Math.abs(e.eventMap[t.e2].x-e.eventMap[t.e1].x):e.eventMap[t.e1].x+1e4,s=this.actions.filter(e=>e.type===ds.HORIZONTAL).sort((e,s)=>t(e)-t(s)),i=s.reduce((e,t)=>({...e,[t.e1]:t.e2}),{}),r=new Set([...Object.keys(i)].map(Number));s.forEach(e=>r.delete(e.e2)),this.stages[0].events.forEach(e=>e>0&&r.add(e));let n=[...r].map(e=>{const t=[e];let s=e;for(;i[s]&&(s=i[s],!(s<0||t.includes(s)));)t.push(s);return t});const a=Object.values(e.eventMap).filter(e=>e.id>0).map(e=>({id:e.id,tick:null,endTick:null,tickGroup:null,timeWarp:null})),o=a.filter(e=>n.some(t=>t.includes(e.id))||s.some(t=>[t.e1,t.e2].includes(e.id))).reduce((e,t)=>({...e,[t.id]:t}),{});this.stages.forEach((e,t)=>e.events.forEach(e=>o[e]&&(o[e].tickGroup=t))),this.stages[0].tick=0,this.stages[0].events.forEach(e=>o[e]&&(o[e].tick=0));const c=this.optimallySolve(e);a.forEach(e=>e.timeWarp=fs(c[e.id]));const l=this.stages.slice(0,this.stages.length-1),u=()=>{if(l.every(e=>Number.isFinite(e.tick)))return!1;let t=!1;return s.forEach(s=>{const i=this.stages.find(e=>e.events.includes(s.e1)),r=this.stages.find(e=>e.events.includes(s.e2));Number.isFinite(i.tick)&&!Number.isFinite(r.tick)&&(r.tick=i.tick+Ae(e.eventMap[s.e1].duration,o[s.e1].timeWarp),r.events.forEach(e=>o[e]&&(o[e].tick=r.tick)),t=!0)}),[...s].reverse().forEach(s=>{const i=this.stages.find(e=>e.events.includes(s.e1)),r=this.stages.find(e=>e.events.includes(s.e2));!Number.isFinite(i.tick)&&Number.isFinite(r.tick)&&(i.tick=r.tick-Ae(e.eventMap[s.e1].duration,o[s.e1].timeWarp),i.events.forEach(e=>o[e]&&(o[e].tick=i.tick)),t=!0)}),t};for(;u(););console.assert(l.every(e=>Number.isFinite(e.tick)),"stage ticks not all solved:",this.stages,this.id),a.filter(e=>Number.isFinite(e.tick)).forEach(t=>t.endTick=t.tick+Ae(e.eventMap[t.id].duration,t.timeWarp));const h=e.eventMap[0].duration;n.forEach(e=>{const t=e.findIndex(e=>o[e].endTick>h);if(t>=0){e.splice(t,e.length-t).forEach(e=>{o[e].tick=null,o[e].endTick=null})}}),n=n.filter(e=>e.length);const m=Math.max(0,...a.map(e=>e.endTick).filter(Number.isFinite));return this.logger.debug(String.fromCodePoint(127822),this.id,c),{voices:n,events:a,duration:m,actions:this.actions.map(e=>e.id).join(" ")}}deduce(e,t){this.stages||this.constructStages(e);const s=e.actionAccessing.get(this.id)||{times:0};if(++s.times,e.actionAccessing.set(this.id,s),this.constructConstraints(e),this.isConflicted(e))return s.closed=!0,this.logger.info(this.action.id,"❌"),null;if(this.logger.group(this.action&&this.action.id),t.credits>0){if(--t.credits,this.children||this.expand(e),this.children=this.children.filter(t=>!e.actionAccessing.get(t.id)||!e.actionAccessing.get(t.id).closed),this.children.length){const s=t=>t.possibility/((e.actionAccessing.get(t.id)||{times:0}).times+1);this.children.sort((e,t)=>s(t)-s(e));for(const s of this.children){const i=s.deduce(e,t);if(i)return this.logger.groupEnd(),i;if(t.credits<=0)break}}}else this.logger.debug("quota exhausted.");return this.logger.groupEnd(),s.closed=!0,this.getSolution(e)}expand(e){this.constructStages(e);const{eventMap:t,matrixV:s,matrixH:i}=e,r=this.stagedEvents,n=[],a=e=>{if(!this.actions.some(t=>t.id===e.action.id)&&!n.some(t=>t.action.id===e.action.id)){const t=this.stages.find(t=>t.events.includes(e.action.e1)),i=this.stages.find(t=>t.events.includes(e.action.e2));if(t===i||t&&i&&t.index>=i.index)return;if(t&&i)if(e.action.type===ds.VERTICAL){if(i.index-t.index>1)return;if(this.actions.some(e=>t.events.includes(e.e1)&&i.events.includes(e.e2)))return}else if(e.action.type===ds.HORIZONTAL&&t.index>i.index)return;if(e.action.type===ds.HORIZONTAL&&this.actions.some(t=>t.type===ds.HORIZONTAL&&(t.e1===e.action.e1||t.e2===e.action.e2||t.e1===e.action.e2&&t.e2===e.action.e1)))return;if(e.action.type===ds.VERTICAL){if(t&&(e.possibility=Math.min(e.possibility,...t.events.map(t=>s[e.action.e2][t])),e.possibility<=0))return;if(i&&(e.possibility=Math.min(e.possibility,...i.events.map(t=>s[t][e.action.e1])),e.possibility<=0))return}n.push(e)}};for(const e of r)e<0||(s[e].forEach((t,s)=>{t>0&&e!==s&&a({action:Action.V(s,e),possibility:t})}),s.forEach((t,s)=>{const i=t[e];i>0&&a({action:Action.V(e,s),possibility:i})}),i[e].forEach((t,s)=>{t>0&&a({action:Action.H(s,e),possibility:t})}),i.forEach((s,i)=>{i=i>=Object.keys(t).length?-1:i;const r=s[e];r>0&&a({action:Action.H(e,i),possibility:r})}));n.some(e=>[ds.HORIZONTAL,ds.PLACE].includes(e.action.type)||!r.has(e.action.e1)||!r.has(e.action.e2))?this.children=n.map(e=>new PathNode({logger:this.logger,parent:this,...e})):this.children=[]}}class Solver{constructor(e,{quota:t=1e3,logger:s=new DummyLogger}={}){this.quota=t,this.logger=s;const i={id:0,x:0,confidence:1,shrinkness:e.measureShrinkness,duration:e.expectedDuration,lowWarp:0};this.events=[i,...e.events.map(e=>({id:e.id,x:e.x,confidence:e.confidence,shrinkness:e.shrinkness,staff:e.staff,duration:e.duration,lowWarp:.5}))],this.eventMap=this.events.reduce((e,t)=>({...e,[t.id]:t}),{}),this.matrixH=e.matrixH,this.matrixV=e.matrixV,this.xSpan=e.endX-Math.min(e.endX-1,...e.events.map(e=>e.x)),this.actionAccessing=new Map}solve(){this.pathRoot=new PathNode({logger:this.logger,action:null}),this.pathRoot.children=this.events.slice(1).map(e=>new PathNode({logger:this.logger,parent:this.pathRoot,action:Action.P(e.id),possibility:this.matrixV[e.id].reduce((e,t)=>e+t,0)}));let e=null;this.logger.groupCollapsed("solve");const t=Array(this.events.length).fill(0),s={credits:this.quota,times:0};for(;s.credits>0;){++s.times;const i={eventMap:this.eventMap,matrixH:this.matrixH,matrixV:this.matrixV,actionAccessing:this.actionAccessing,eventTendencies:t},r=this.pathRoot.deduce(i,s);if(r.credits=this.quota-s.credits,r.times=s.times,this.evaluateSolution(r),this.logger.debug("loss:",r.loss),e=!e||r.losse/s.times)),e}evaluateSolution(e){e.loss=0;const t=e.events.reduce((e,t)=>({...e,[t.id]:{...t,...this.eventMap[t.id]}}),{}),s=e.events.filter(e=>Number.isFinite(e.tick)).map(e=>t[e.id]),i=s.reduce((e,t)=>(e[t.staff]=e[t.staff]||[],e[t.staff].push(t),e),{});Object.values(i).forEach(t=>{t.sort((e,t)=>e.x-t.x).slice(0,t.length-1).forEach((s,i)=>{t[i+1].tick{if(Number.isFinite(s.tick)&&!e.voices.every(e=>!e.includes(s.id))||(e.loss+=100*t[s.id].confidence),s.timeWarp){const{numerator:e,denominator:i}=s.timeWarp,n=t[s.id].shrinkness;r.set(e,Math.max(r.get(e)||0,1-n)),r.set(i,Math.max(r.get(i)||0,1-n))}});const n=Oe(e.duration,this.eventMap[0].duration);r.set(n.numerator,Math.max(r.get(n.numerator)||0,1-this.eventMap[0].shrinkness)),r.set(n.denominator,Math.max(r.get(n.denominator)||0,1-this.eventMap[0].shrinkness));for(const[t,s]of r.entries())t>1&&(e.loss+=Math.log(t)*s);let a=0,o=0;e.voices.forEach(s=>{console.assert(t[s[0]],"invalid voice:",s,Object.keys(t));const i=Math.abs(t[s[0]].tick),r=t[s[s.length-1]].endTick;a+=Math.max(0,i+e.duration-r);let n=null;s.forEach(e=>{const s=t[e];s.staff!==n&&(null!==n&&++o,n=s.staff)})}),e.loss+=10*a/ms,e.loss+=5**o-1;const c=[...s].sort((e,t)=>e.x-t.x),l=c.slice(1).map((t,s)=>{const i=c[s],r=t.x-i.x,n=t.tick-i.tick;if(!n)return r/this.xSpan;return(4*Math.atan2(n/e.duration,r/this.xSpan)/Math.PI-1)**2}),u=Math.max(...l,0);e.loss+=u**2,console.assert(e.loss>=0,"Invalid solution loss!!!",e.loss,r,a,o),e.loss<0&&(e.loss=1/0)}}!function(e){e[e.PAD=0]="PAD",e[e.BOS=1]="BOS",e[e.EOS=2]="EOS",e[e.CHORD=3]="CHORD",e[e.REST=4]="REST"}(ps||(ps={}));class EventCluster extends SimpleClass{constructor(e){super(),super.assign(e)}get regular(){return this.elements.some(e=>[ps.CHORD,ps.REST].includes(e.type)&&!e.fake)&&this.elements.every(e=>[e.x,e.y1,e.y2,e.tick].every(Number.isFinite))&&this.elements.slice(1).every((e,t)=>e.fake||this.elements[t].fake||e.grace||this.elements[t].grace||e.fullMeasure||this.elements[t].fullMeasure||e.tick<=this.elements[t].tick||e.x>this.elements[t].x)}get grant(){return this.annotation&&this.annotation.grant}get feature(){return{index:this.index,elements:this.elements}}get estimatedDuration(){const e=this.elements.find(e=>e.type===ps.EOS),t=e?.predisposition?e.predisposition?.tick:e?.tick;return Number.isFinite(t)?t:this.duration}assignPrediction(e){console.assert(e.index===this.index,"index mismatch:",e.index,this.index),this.matrixH=e.matrixH,e.elements.forEach(e=>{const{index:t,...s}=e,i=this.elements.find(e=>e.index===t);console.assert(i,"element not found:",t),i&&(i.predisposition=s)})}}EventCluster.className="EventCluster",EventCluster.blackKeys=["id"];class EventClusterSet extends SimpleClass{constructor(e){super(),super.assign(e)}trimIrregular(){let e=0;return this.clusters=this.clusters.filter(t=>{const s=t.regular;return s||(console.debug("irregular cluster:",t),++e),s}),e?console.debug("Irregular clusters trimmed:",`${e}/${this.clusters.length+e}`):console.debug(`The EventClusterSet (${this.clusters.length}) is fine.`),e}}EventClusterSet.className="EventClusterSet";class PatchMeasure extends SimpleClass{constructor(e){super(),Object.assign(this,e)}get staffN(){return Math.floor(Math.log2(this.staffMask))+1}get basics(){return Array(this.staffN).fill(this.basic)}get duration(){return Math.max(0,...(this.voices||[]).map(e=>e.map(e=>this.events.find(t=>t.id===e)).reduce((e,t)=>e+t.duration,0)))}}PatchMeasure.className="PatchMeasure",function(e){e.computeMeasureTicks=e=>{const t=(e=>{const t=new Map;return e.rows.forEach(e=>{if(1===e.events.length){const t=e.events[0];t.rest&&0===t.division&&(t.rest="R")}}),e.events.forEach(e=>{const s=Math.round(10*e.pivotX)/10;let i=0;i=e.fullMeasureRest?Math.min(s,...t.keys()):[...t.keys()].find(s=>{const i=t.get(s),r=Math.min(...i.map(e=>e.left)),n=Math.max(...i.map(e=>e.right));return Math.min(n,e.right)-Math.max(r,e.left)>.62*w.NoteheadS1})||s,e.roundX=i;const r=t.get(i)||[];t.set(i,r),r.push(e)}),t})(e);let s=0;const i=new Set([s]),r=[...t.entries()].sort(([e],[t])=>e-t);for(const[e,t]of r)t.forEach(e=>{e.predisposition&&(e.rest=e.rest&&e.predisposition.fullMeasure>.5?"R":e.rest,e.grace=e.predisposition.grace?Ve.Grace:null,e.division=$e(e.predisposition.divisionVector),e.dots=$e(e.predisposition.dotsVector),e.predisposition.timeWarped>.5&&(e.timeWarp=_e(2,3))),e.fullMeasureRest?e.tick=0:(e.zeroHolder&&(s-=e.duration),!e.zeroHolder&&e.predisposition&&Number.isInteger(e.predisposition.tick)?e.tick=e.predisposition.tick:e.tick=s,i.add(e.tick+e.duration))}),i.delete(s),i.size&&(s=Math.min(...i));Number.isInteger(e.estimatedDuration)?e.duration=e.estimatedDuration:e.duration=Math.max(...i,0)},e.computeMeasureVoices=e=>{e.voices=[];for(const t of e.rows){const s=t.events.filter(e=>!(e.grace||e.tremoloCatcher||e.fullMeasureRest||e.predisposition&&e.predisposition.fake>.5)),i=new Set(s);for(;i.size;){let t=0;const r=[],n=e=>{r.push(e.id),e.zeroHolder||(t+=e.duration),i.delete(e)},a=s.find(e=>i.has(e));for(a.alignedTick>0&&(t=a.alignedTick),n(a);;){const e=s.find(e=>i.has(e)&&e.alignedTick===t);if(!e)break;n(e)}e.voices.push(r)}}}}(gs||(gs={}));var ys;!function(e){const t=1921920,s=.7071067811865475,i=[[null,null],[null,ze.Open],[ze.Open,ze.Continue],[ze.Open,ze.Close],[ze.Continue,ze.Continue],[ze.Continue,ze.Close],[ze.Close,null],[ze.Close,ze.Open]].map(e=>e.join("-")),r=(e,t)=>{if(!e.events.length)return{events:[],voices:[],duration:0};return new Solver(e,t).solve()};e.estiamteMeasure=e=>{const r=e.events.filter(e=>!e.zeroHolder).map(s=>({id:s.id,staff:s.staff,x:s.x,tickEstimated:s.predisposition&&Number.isFinite(s.predisposition.tick)?s.predisposition.tick:s.x,tipX:s.tipX,y:s.tipY+100*s.staff,duration:s.mainDuration*t/je,division:s.division,dots:s.dots,stemDirection:s.stemDirection,beam:s.beam,rest:s.rest,pR:"R"===s.rest?1:"r"===s.rest&&0===s.division?Math.tanh(s.x-e.eventStartX):0,fakeP:s.predisposition&&s.predisposition.fakeP||0,shrinkness:s.predisposition?s.predisposition.timeWarped:null}));let n=t*e.timeSignature.numerator/e.timeSignature.denominator;Number.isFinite(e.estimatedDuration)&&(n=Math.max(n,Ne(e.estimatedDuration,480480)));const a=e.staffGroups.reduce((e,t,s)=>(t.forEach(t=>e[t]=s),e),{}),o=[0,...r.map(e=>e.id)],c=r.map(t=>({...t,id:o.indexOf(t.id),x:t.x-e.startX,confidence:(1-t.pR)*(1-t.fakeP),shrinkness:Number.isFinite(t.shrinkness)?t.shrinkness:Math.tanh((t.division-.1*t.dots)/4),staffGroup:a[t.staff]})),l=Array(o.length+1).fill(null).map(()=>Array(o.length).fill(0)),u=Array(o.length).fill(null).map(()=>Array(o.length).fill(0)),h=e=>S.default(e/1.6)*S.default(1.6/e);for(const t of c){for(const e of c){if(u[t.id][e.id]=t!==e&&t.tickEstimated>=e.tickEstimated?1-S.default((t.tickEstimated-e.tickEstimated)*s/.6):0,t.staffGroup!==e.staffGroup)l[t.id][e.id]=0;else if(t.x<=e.x)l[t.id][e.id]=0;else{const s=Math.exp(2*-Math.abs(t.staff-e.staff)),i=t.staff===e.staff?Math.exp(-Math.abs(t.y-e.y)/16):1,r=t.x-e.x,n=t.tipX-e.tipX;l[t.id][e.id]=(s*i*Math.min(h(r),h(n)))**(1/3)}const r=(1-t.pR)*(1-e.pR);u[t.id][e.id]*=r,l[t.id][e.id]*=r,u[t.id][e.id]<.01&&(u[t.id][e.id]=0),t.stemDirection&&e.stemDirection&&t.stemDirection!==e.stemDirection&&(l[t.id][e.id]*=.9),t.rest||e.rest||i.includes([e.beam,t.beam].join("-"))||(l[t.id][e.id]*=.2)}l[o.length][t.id]=h(e.width-t.x)**(1/3)}return{ids:o,events:c,expectedDuration:n,measureShrinkness:0,endX:e.position.right,matrixH:l,matrixV:u}},e.regulateMeasure=async(s,{solver:i=null,...n})=>{const a=e.estiamteMeasure(s),{ids:o,matrixH:c,matrixV:l}=a;if(s.matrixH){console.assert(s.matrixH.length>o[o.length-1]&&s.matrixH[0].length>o[o.length-1],"matrix shape mismatch:",o.length,`${s.matrixH.length}x${s.matrixH[0].length}`,`${c.length}x${c[0].length}`);for(let e=0;ee.forEach((e,i)=>{const r=s.matrixV[o[t]][o[i]];Number.isFinite(r)&&(l[t][i]=r)})),Number.isFinite(s.estimatedDuration)&&(a.measureShrinkness=Math.tanh(-3*Math.log(Math.min(1,s.estimatedDuration/s.duration)))),n.logger&&n.logger.info("--- MEASURE",s.measureIndex,"---",a);const u=i?await i(a,n):r(a,n),h=u.events.map(e=>({...e,id:a.ids[e.id]}));h.forEach(e=>{const i=s.events.find(t=>t.id===e.id);i.tick=Number.isFinite(e.tick)?Math.round(e.tick*je/t):null,i.tickGroup=e.tickGroup,i.timeWarp=e.timeWarp}),s.duration=Math.round(u.duration*je/t),s.voices=u.voices.map(e=>e.map(e=>a.ids[e])),s.solutionStat={loss:u.loss,solverCredits:u.credits,solverTimes:u.times},s.events.forEach(e=>{const t=h.find(t=>t.id===e.id);t&&(Number.isFinite(t.tick)||"r"!==e.rest||0!==e.division?"R"===e.rest&&(e.tick=0,e.tickGroup=0,e.duration=s.duration,s.voices.push([e.id])):(e.tick=0,e.tickGroup=0,e.rest="R",e.duration=s.duration,s.voices.push([e.id])))})},e.regulateMeasureWithRectification=async(e,i,{solver:n=null,...a})=>{const o=e.events.filter(e=>!e.zeroHolder).map(s=>{const r=i.events.find(e=>e&&e.id===s.id),n=Number.isFinite(r?.division)?r.division:s.division,a=Number.isFinite(r?.dots)?r.dots:s.dots,o=t*2**-n*(2-2**-a);return{id:s.id,staff:s.staff,x:s.x,tickEstimated:s.predisposition?.tick,y:s.tipY+100*s.staff,duration:o,pR:"R"===s.rest?1:"r"===s.rest&&0===s.division?Math.tanh(s.x-e.eventStartX):0,fakeP:s.predisposition&&s.predisposition.fakeP||0,shrinkness:s.predisposition?.timeWarped||0}});let c=t*e.timeSignature.numerator/e.timeSignature.denominator;Number.isFinite(e.estimatedDuration)&&(c=Math.max(c,Ne(e.estimatedDuration,480480)));const l=e.staffGroups.reduce((e,t,s)=>(t.forEach(t=>e[t]=s),e),{}),u=[0,...o.map(e=>e.id)],h=o.map(t=>({...t,id:u.indexOf(t.id),x:t.x-e.startX,confidence:(1-t.pR)*(1-t.fakeP),shrinkness:t.shrinkness,staffGroup:l[t.staff]})),m=Array(u.length+1).fill(null).map(()=>Array(u.length).fill(0)),f=Array(u.length).fill(null).map(()=>Array(u.length).fill(0));for(const e of h)for(const t of h){f[e.id][t.id]=e!==t&&e.tickEstimated>=t.tickEstimated?1-S.default((e.tickEstimated-t.tickEstimated)*s/.6):0;const i=(1-e.pR)*(1-t.pR);f[e.id][t.id]*=i,f[e.id][t.id]<.01&&(f[e.id][t.id]=0)}console.assert(e.matrixH&&e.matrixH.length>u[u.length-1]&&e.matrixH[0].length>u[u.length-1],"matrix shape mismatch:",u.length,`${e.matrixH.length}x${e.matrixH[0].length}`,`${m.length}x${m[0].length}`);for(let t=0;t{const a=i.events.find(t=>t&&t.id===e),o=Number.isFinite(s)?Math.round(s*je/t):s;return{id:e,tick:o,tickGroup:r,timeWarp:n,division:a?.division,dots:a?.dots}}),x=Math.round(g.duration*je/t);return{events:v,voices:g.voices,duration:x,priority:y}}}(ys||(ys={}));class SpartitoMeasure extends SimpleClass{static reorderEvents(e,t){const s=[],i=e.map(e=>({id:e.id,staff:e.staff,x:e.x/.7,rx:0,ry:t[e.staff]+e.tipY,tipY:e.tipY,prior:0}));i.sort((e,t)=>e.x-t.x),i.slice(1).forEach((e,t)=>{const s=Math.min(Math.round(e.x-i[t].x),2);e.rx=i[t].rx+s}),i.forEach(e=>{e.prior=1e4*e.staff+e.rx+.01*e.tipY,s.includes(e.ry)||s.push(e.ry)}),i.sort((e,t)=>e.prior-t.prior),s.sort((e,t)=>e-t);let r=0;const n=s.map((e,t)=>(!t||s[t]-s[t-1]<.5||++r,r)),a=i.map(t=>new EventTerm({...e.find(e=>e.id===t.id),intX:t.rx,intY:n[s.indexOf(t.ry)]}));return a.forEach((e,t)=>e.id=t+1),a}constructor(e){super(),super.assign(e),this.originalRegulationHash||this.regulated||(this.originalRegulationHash=this.regulationHash),this.barTypes=this.barTypes||{},this.regulated&&this.position&&this.postRegulate()}get timeSignature(){return this.basics&&this.basics[0].timeSignature}get keySignature(){return this.basics&&this.basics[0].keySignature}get timeSignatureChanged(){return this.contexts.filter(Boolean)[0].some(e=>[Ue.TimeSignatureC,Ue.TimeSignatureN].includes(e.type))}get doubtfulTimesig(){return this.basics&&this.basics[0].doubtfulTimesig}get regulated(){return!!this.voices}get validRegulated(){return!!this.voices&&this.voices.flat(1).every(e=>Number.isFinite(this.events.find(t=>t.id===e)?.tick))}get rows(){return this.contexts.map((e,t)=>({events:this.events.filter(e=>e.staff===t),contexts:e}))}get eventStartX(){return this.events.length?Math.min(...this.events.map(e=>e.x)):this.startX}get startX(){return this.position.left}get width(){return this.position.right-this.position.left}get tickMap(){return this.events.concat([this.endEvent]).filter(Boolean).reduce((e,t)=>(Number.isFinite(t.tick)&&(e.has(t.tick)||e.set(t.tick,[]),e.get(t.tick).push(t)),e),new Map)}get tickToX(){return[...this.tickMap.entries()].reduce((e,[t,s])=>{if((s=s.filter(e=>!e.fullMeasureRest&&!e.grace)).length){const i=Math.min(...s.map(e=>e.x));e[t]=i}return e},{})}get tickRates(){const e=this.events.filter(e=>Number.isFinite(e.tick)&&!e.fullMeasureRest);return e.sort((e,t)=>e.x-t.x),e.slice(0,e.length-1).map((t,s)=>{const i=e[s+1];return(i.tick-t.tick)/Math.max(i.x-t.x,.001)})}get tickRatesInStaves(){const e=this.events.filter(e=>Number.isFinite(e.tick)&&!e.fullMeasureRest&&!e.grace).reduce((e,t)=>(e[t.staff]=e[t.staff]||[],e[t.staff].push(t),e),{}),t=Object.values(e).map(e=>e.sort((e,t)=>e.x-t.x).slice(0,e.length-1).map((t,s)=>{const i=e[s+1];return(i.tick-t.tick)/Math.max(i.x-t.x,.001)}));return[].concat(...t)}get tickRatesInGroups(){const e=this.events.filter(e=>Number.isFinite(e.tick)&&!e.fullMeasureRest).reduce((e,t)=>{const s=this.staffGroups.findIndex(e=>e.includes(t.staff));return e[s]=e[s]||[],e[s].push(t),e},{}),t=Object.values(e).map(e=>e.sort((e,t)=>e.x-t.x).slice(0,e.length-1).map((t,s)=>{const i=e[s+1];return(i.tick-t.tick)/Math.max(i.x-t.x,.001)}));return[].concat(...t)}get tickTwist(){if(!this.duration||!this.staffGroups)return;const e=this.events.filter(e=>Number.isFinite(e.tick)&&!e.fullMeasureRest&&!e.grace&&!e.tremoloCatcher&&!(e.rest&&0===e.division)).reduce((e,t)=>{const s=this.staffGroups.findIndex(e=>e.includes(t.staff));return e[s]=e[s]||[],e[s].push(t),e},{}),t=Object.values(e).map(e=>{const t=[...e].sort((e,t)=>e.pivotX-t.pivotX),s=this.position.right-t[0].x,i=t.slice(1).map((e,i)=>{const r=t[i],n=e.pivotX-r.pivotX,a=e.tick-r.tick;if(!a)return n/s;return(4*Math.atan2(a/this.duration,n/s)/Math.PI-1)**2});return Math.max(0,...i)});return Math.max(0,...t)}get eventMap(){return this.events.reduce((e,t)=>(e[t.id]=t,e),{})}get empty(){return!this.events?.length||!this.voices?.length}get hasIllEvent(){const e=this.voices.flat(1),t=this.eventMap;return this.regulated&&e.some(e=>{const s=t[e];return!s.zeroHolder&&!Number.isFinite(s.tick)&&!s.fullMeasureRest})}get brief(){return[`${this.timeSignature.numerator}/${this.timeSignature.denominator}`,...this.events.map(e=>[e.staff,e.intX,Math.round(e.tip?e.tip.y:e.ys?.[0]??0),e.fullMeasureRest?0:e.division,e.fullMeasureRest?0:e.dots,e.rest?"r":"",e.grace||"",e.stemDirection,e.beam||""].join("|"))].join("\n")}get regulationHash(){return y.default(this.brief)}get regulationHash0(){return this.originalRegulationHash||this.regulationHash}get regulationHashes(){return Array.from(new Set([this.originalRegulationHash,this.regulationHash].filter(Boolean)))}get featureWords(){if(!this.regulated||!this.voices||!this.voices.length)return null;const e=this.tickRatesInStaves.some(e=>e<0),t=this.events.filter(e=>!e.zeroHolder&&!e.rest).map(e=>e.ys).flat(1).map(e=>"Y"+2*-e),s=Array.from(new Set(t));this.keySignature&&s.push(`K${this.keySignature}`);const i=this.voices.map(e=>e.map(e=>this.events.find(t=>t.id===e)).filter(e=>!e.zeroHolder&&!e.rest)).filter(e=>e.length),r=e?[]:i.map(e=>e.map(e=>e.scaleChord).join("-")),n=e?[]:i.map(e=>e.map(e=>e.division).join(""));return this.timeSignature&&n.push(`T${this.timeSignature.numerator}/${this.timeSignature.denominator}`),[s,r,n]}get barType(){if(this.voltaEnd)return"VoltaRight";const e=Object.entries(this.barTypes).sort((e,t)=>t[1]-e[1]);return e[0]&&e[0][1]>=1?e[0][0]:null}get partialDuration(){if(!Number.isFinite(this.duration))return!1;const e=Ae(je,this.timeSignature);return this.duration{const t=e.events.filter(e=>e.grace);if(!t.length)return;const s=[...e.tickMap.entries()].reduce((e,[t,s])=>(s.forEach(s=>{if(!s.grace){e[s.staff]=e[s.staff]||{};const i=e[s.staff][t];e[s.staff][t]=!i||i.x>s.x?s:i}}),e),{}),i=Object.entries(s).reduce((t,[s,i])=>{t[s]=Object.entries(i).map(([e,t])=>({event:t,tick:Number(e),preTick:-240,graces:[]})).sort((e,t)=>e.event.x-t.event.x),t[s].push({tick:e.duration,event:e.endEvent,preTick:0,graces:[]});let r=0;return t[s].forEach(e=>{e.tick>r&&(e.preTick=r,r=e.tick)}),t},{});t.forEach(e=>{const t=i[e.staff];if(t){const s=t.find(t=>t.event.x>e.x);s&&s.graces.push(e),e.roundX=e.x}}),Object.values(i).forEach(e=>e.forEach(e=>{if(e.graces.length){e.event.graceIds=e.graces.map(e=>e.id);const t=e.graces.reduce((e,t)=>e+t.duration,0),s=Math.min(t,e.tick-e.preTick)/t;let i=e.tick;[...e.graces].reverse().forEach(e=>{e.tick=Math.round(i-e.duration*s),i=e.tick})}}))})(this),(e=>{const t=e.events.filter(e=>e.tremoloCatcher&&!e.grace),s=e.events.filter(e=>e.tremoloLink===qe.Pitcher&&!e.grace);t.forEach(t=>{let i=s.filter(e=>e.division===t.division&&e.xNumber.isFinite(e.tick)&&!e.grace&&!e.rest&&e.division===t.division&&e.dots===t.dots&&e.xt.x-e.x),i.length){const e=i[0];e.catcherId=t.id;const r=Math.max(e.tremolo||3,t.tremolo||3);e.tremolo=r,t.tremolo=r,t.tick||(t.tick=e.tick+e.duration/2);const n=s.indexOf(e);n>=0&&s.splice(n,1)}})})(this),this.updateContextTick()}updateRoundX(){const e=this.tickToX;e&&this.events.forEach(t=>{const s=e[t.tick];Number.isFinite(s)&&(t.roundX=s)})}updateContextTick(){if(!this.staffGroups)return;const e=this.contexts.flat(1);this.staffGroups.flat(1).forEach(t=>{const s=[...this.events.filter(e=>e.staff===t),...e.filter(e=>e.staff===t)];s.sort((e,t)=>t.x-e.x);let i=this.duration;s.forEach(e=>{e instanceof EventTerm?e.fullMeasureRest||e.zeroHolder||(i=e.tick):e instanceof ContextedTerm&&(e.tick=i)})})}asSolution(e=void 0){return this.regulated?{events:this.events.map(t=>{const s={id:t.id,tick:t.tick,tickGroup:t.tickGroup,timeWarp:t.timeWarp};if(e){const i=e.events.find(e=>e.id===t.id);i&&(t.division!==i.division&&(s.division=t.division),t.dots!==i.dots&&(s.dots=t.dots),t.grace!==i.grace&&(s.grace=!!t.grace),t.beam!==i.beam&&(s.beam=t.beam),t.fullMeasureRest!==i.fullMeasureRest&&(s.fullMeasure=t.fullMeasureRest))}return s}),voices:this.voices,duration:this.duration,priority:-this.solutionStat?.loss}:null}applySolution(e){e.timeSignature&&this.basics.forEach(t=>{t.timeSignature=e.timeSignature,t.doubtfulTimesig=!1}),this.voices=e.voices,this.duration=e.duration,this.events.forEach(t=>{t.timeWarp=null,t.tick=null,t.tickGroup=null;const s=e.events?.find(e=>e.id===t.id);s&&(t.tick=s.tick,t.timeWarp=s.timeWarp,t.tickGroup=s.tickGroup,Number.isFinite(s.division)&&(t.division=s.division),Number.isFinite(s.dots)&&(t.dots=s.dots),void 0!==s.beam&&(t.beam=s.beam),void 0!==s.grace&&(t.grace=s.grace?Ve.Grace:void 0),s.fullMeasure&&(t.rest="R"))}),Number.isFinite(e.priority)&&(this.solutionStat={loss:-e.priority}),this.postRegulate()}cleanupRegulation(){this.voices=null,this.duration=null,this.events.forEach(e=>{e.tick=null,e.tickGroup=null,e.timeWarp=null})}regulateTest(){this.duration=0,this.voices=this.rows.map(e=>e.events.map(e=>e.id)),this.voices.forEach(e=>{let t=0;e.map(e=>this.events.find(t=>t.id===e)).forEach((e,s)=>{e.tickGroup=s,e.tick=t,t+=e.duration}),this.duration=Math.max(this.duration,t)})}regulateSimple(){gs.computeMeasureTicks(this),gs.computeMeasureVoices(this)}async regulateEquations(e){await ys.regulateMeasure(this,e)}async regulate({policy:e="advanced",...t}={}){switch(e){case"test":this.regulateTest();break;case"equations":case"advanced":await this.regulateEquations(t);break;default:this.regulateSimple()}this.postRegulate()}createPatch(){return new PatchMeasure({measureIndex:this.measureIndex,staffMask:this.staffMask,basic:this.basics[0],events:this.events,contexts:this.contexts,marks:this.marks,voices:this.voices})}createClusters(){const e=this.voices&&new Set(this.voices.flat(1));return this.staffGroups.filter(e=>e.length).map(t=>{const s=this.position.staffYs[0],i=e=>this.position.staffYs[t.indexOf(e)]-s,r=this.events.filter(e=>t.includes(e.staff));if(!r.length)return null;const n=r.map(s=>({index:s.id,voice:(this.voices||[]).findIndex(e=>e.includes(s.id)),type:s.rest?ps.REST:ps.CHORD,staff:t.indexOf(s.staff),x:s.tipX,pivotX:s.pivotX,y1:i(s.staff)+("u"===s.stemDirection?s.tipY:s.ys[s.ys.length-1]),y2:i(s.staff)+("u"===s.stemDirection?s.ys[0]:s.tipY),headY:"u"===s.stemDirection?s.ys[0]:s.ys[s.ys.length-1],feature:s.feature,division:s.division,dots:s.dots,beam:s.beam||null,stemDirection:s.stemDirection,grace:!!s.grace,tremoloCatcher:s.tremoloCatcher,timeWarped:!!s.timeWarp,fullMeasure:s.fullMeasureRest,tick:s.tick||0,fake:!s.fullMeasureRest&&!s.grace&&this.voices&&!e.has(s.id)}));if(!n.some(e=>!e.fake))return null;const a=Ae(je,this.timeSignature);n.unshift({index:0,type:ps.BOS,staff:null,division:null,beam:null,dots:null,stemDirection:null,grace:!1,tremoloCatcher:!1,fullMeasure:!1,x:this.position.left,pivotX:this.position.left,y1:0,y2:0,headY:0,feature:null,timeWarped:this.durationn.map(()=>0)),this.voices.forEach(e=>{let t=0;e.forEach(e=>{const s=n.findIndex(t=>t.index===e);s>0&&t>=0&&(o[s][t]=1),t=s}),t>=0&&(o[n.length-1][t]=1)}));const c={...this.solutionStat,patched:this.patched},l=this.backgroundImages&&this.backgroundImages.map(({url:e,position:t})=>({url:e,position:{...t,y:t.y-s}}));return new EventCluster({index:this.measureIndex,duration:this.duration,signatureDuration:a,staffY0:s,elements:n,matrixH:o,annotation:c,backgroundImages:l})}).filter(Boolean)}applyClusters(e){const t=this.events.reduce((e,t)=>Math.max(e,t.id),0)+1;this.matrixH=Array(t+1).fill(null).map(()=>Array(t).fill(0)),e.forEach(e=>{const s=e.elements.map(e=>e.index);console.assert(e.matrixH.length===s.length-1,"unexpected matrixH size:",e.matrixH.length,s.length);for(let i=1;i{const t=this.events.find(t=>t.id===e.index);t&&(t.predisposition=e.predisposition,void 0!==t.predisposition.grace&&(t.grace=t.predisposition.grace?Ve.Grace:null))})}),this.estimatedDuration=e.reduce((e,t)=>e+t.estimatedDuration,0)/e.length}}SpartitoMeasure.className="SpartitoMeasure",SpartitoMeasure.blackKeys=["staffGroups","solutionStat","measureNumber","deposit"];const vs=(e,t=!1)=>({empty:!0,duration:e.duration,tickMap:{0:EventTerm.space({duration:e.duration,tick:0})},timeSignature:e.timeSignature,timeSigNumeric:e.timeSigNumeric,keySignature:e.keySignature,contextedTerms:e.terms.filter(e=>e instanceof ContextedTerm&&(!e.staffLevel||t)),marks:[]}),xs=e=>{const t=[].concat(...e.measures.map(e=>Object.values(e.tickMap).filter(e=>e instanceof EventTerm)));for(let e=1;ee.type===B.SlurBegin)&&i.accessories.some(e=>e.type===B.SlurEnd)){const e=s.pitches.filter(e=>i.pitches.some(t=>t.note===e.note&&t.alter===e.alter));e.length>0&&(s.tying=!0,i.tied=!0,e.forEach(e=>{e.tying=!0;i.pitches.find(t=>t.note===e.note&&t.alter===e.alter).tied=!0}),e.forEach(()=>{const e=s.accessories.findIndex(e=>e.type===B.SlurBegin);e>=0&&s.accessories.splice(e,1);const t=i.accessories.findIndex(e=>e.type===B.SlurEnd);t>=0&&i.accessories.splice(t,1)}))}}};class Spartito extends SimpleClass{constructor(e){super(),super.assign(e),this.measures.forEach(e=>e.staffGroups=this.staffGroups)}get regulated(){return this.measures.every(e=>e.regulated)}get solidMeasureCount(){return this.measures.filter(e=>!e.empty).length}get measureIndexMapping(){let e=0;return this.measures.map(t=>t.empty?null:e++)}get headBPM(){for(const e of this.measures)if(e.marks){const t=e.marks.find(e=>e instanceof TempoTerm&&e.isValid());if(t)return t.bpm}return null}get measureLayoutCode(){const e=this.measures.filter(e=>!e.empty).map((e,t)=>({index:t+1,vb:e.voltaBegin,ve:e.voltaEnd,alter:e.alternative,leftSign:"",rightSign:""}));return e.forEach((t,s)=>{if(t.vb){const i=e.slice(s+1).findIndex(e=>e.vb),r=i>=0?s+i:e.length;e.slice(s,r-1).some(e=>e.ve)&&(t.leftSign="2*[")}if(t.ve){const i=e.slice(0,s+1).reverse(),r=i.slice(1).findIndex(e=>e.ve);if(r>=0&&!i.slice(1,r+1).some(e=>e.vb))return;if(t.alter){const r=i.findIndex(e=>!e.alter);r>0&&(i[r].rightSign="]",i[r-1].leftSign="{[",t.rightSign="],",e[s+1]&&(e[s+1].rightSign="},"))}else t.rightSign="],";i.some(e=>e.vb)||(e[0].leftSign="2*[")}}),e.map(e=>e.leftSign+e.index.toString()+e.rightSign+(e.rightSign?"":",")).join(" ").replace(/,$/,"")}get qualityScore(){const e=this.measures.filter(e=>!e.empty),t=e.map(Ke).map(e=>e.qualityScore).reduce((e,t)=>e+t,0);return e.length?t/e.length:null}dumpEvaluations(){const e=this.measures.filter(e=>!e.empty).map(e=>({measureIndex:e.measureIndex,...Ke(e)})),t=e.map(e=>e.qualityScore).reduce((e,t)=>e+t,0);console.log("qualityScore:",t/e.length),console.table(e)}regulate(e={}){this.measures.forEach(t=>t.regulated||t.regulate(e))}cleanupRegulation(){this.measures.forEach(e=>e.voices=null)}rectifyTimeSignatures(e=new DummyLogger){const t=this.measures.map((e,t)=>({measure:e,index:t})).filter(({measure:e,index:t})=>!t||e.timeSignatureChanged).map(({index:e})=>e);t.map((e,s)=>this.measures.slice(e,se.filter(e=>e.estimatedDuration>0)).filter(e=>e.length>=3||e.some(e=>e.doubtfulTimesig)).forEach(t=>{if(t[0].patched){const s=t[0].timeSignature,i=t.slice(1).filter(e=>!e.patched&&Be(e.timeSignature)!==Be(s));if(i.length){const t=i[0].timeSignature;i.forEach(e=>e.basics.forEach(e=>e.timeSignature=s)),e.info("[rectifyTimeSignatures]\ttimesignator overwrote by patched head:",`${Be(t)} -> ${Be(s)}`,i.map(e=>e.measureIndex))}return}const s=t[0].timeSignature,i=Number.isInteger(Math.log2(s.denominator));let r=i?4:8;i&&(r=Math.max(r,t[0].timeSignature.denominator));const n=t.map(e=>Math.round(e.estimatedDuration*r/je)),a=Object.entries(n.reduce((e,t)=>(e[t]=(e[t]||0)+1,e),{})).sort((e,t)=>t[1]-e[1]),o=a[0][1],c=a.filter(([e,t])=>t>.6*o).reduce((e,t)=>Number(t[0])>Number(e[0])?t:e);if(c[1]>1){let n=Number(c[0]);if(!i||s.denominator*n!==s.numerator*r){if(i&&r!==s.denominator){const e=n*s.denominator/r;Number.isInteger(e)&&(n=e,r=s.denominator)}const a=t.filter(e=>!e.patched),o=_e(n,r);a.forEach(e=>e.basics.forEach(e=>e.timeSignature=o)),e.info("[rectifyTimeSignatures]\ttimesignator overwrote by estimation:",`${Be(s)} -> ${n}/${r}`,a.map(e=>e.measureIndex))}}})}makeVoiceStaves(){this.regulate();const e=Math.max(...this.measures.map(e=>e.voices.length));if(!e||!Number.isFinite(e))return null;this.measures.filter(e=>e.patched).forEach(e=>{e.events.forEach(e=>{e.tied&&e.pitches.forEach(e=>e.tied=!0)})});for(let e=0;et.staff===e)||[]).reduce((e,t)=>Math.max(e,t.x||0),-1/0);if(!Number.isFinite(r))continue;const n=[];t.contexts[e]=i.filter(e=>!(0===e.type&&e.x>r)||(n.push(e),!1)),n.length>0&&s.contexts[e]&&(n.forEach(e=>e.tick=0),s.contexts[e]=[...n,...s.contexts[e]])}}const t=this.measures.map(t=>{console.assert(t.validRegulated,"[makeVoiceStaves] measure is invalid:",t);const s={};t.events.forEach(e=>s[e.id]=e);const i=new Set(Array(t.contexts.length).fill(null).map((e,t)=>t));let r=null;if(t.barType)switch(t.barType){case"Segment":r="||";break;case"Terminal":r="|."}const n=t.voices.map(e=>{const n=e.map(e=>s[e]);n.sort((e,t)=>e.tick-t.tick);const a={};let o=0,c=null;for(const e of n)Number.isFinite(e?.tick)?(e.tick>o?a[o]=EventTerm.space({tick:o,duration:e.tick-o}):!e.grace&&e.tick{const s=t.eventMap[e];s&&(a[s.tick]=s)}))):console.warn("invalid event tick:",e);t.endEvent&&t.endEvent.graceIds&&t.endEvent.graceIds.forEach(e=>{const s=t.eventMap[e];!s||c&&s.staff!==c.staff||(a[s.tick]=s)}),ot.duration&&Number.isFinite(t.duration)&&(c.timeWarp=Oe(t.duration-c.tick,c.duration)),console.assert(!c||!c.timeWarp||Number.isInteger(c.timeWarp.numerator)&&Number.isInteger(c.timeWarp.denominator),"invalid time warp:",c);const l=n[0]?n[0].staff:0;i.delete(l);const u=t.basics[l],h=t.contexts[l],m=n[n.length-1],f=m?m.staff:0;return{tickMap:a,duration:t.duration,...u,contextedTerms:h,marks:[],break:t.break,pageBreak:t.pageBreak,headStaff:l,tailStaff:f,bar:r}});for(;n.lengtht.headStaff!==e),o=vs({terms:r,duration:t.duration,...s,break:t.break,pageBreak:t.pageBreak},a);o.headStaff=e,o.tailStaff=e,n.push(o)}return n});t.forEach(e=>e.forEach(e=>{const t=[];e.empty||(t.push(`s${e.headStaff}`),t.push(`s${e.tailStaff}`)),Object.values(e.tickMap).forEach(e=>{if(e instanceof EventTerm){if(t.push(`s${e.staff}`),e.stemDirection){const s=`st${e.staff}-${e.stemDirection}`;t.push(s,s)}e.grace?t.push(`gd${e.mainDuration}`):t.push(`d${e.mainDuration}`),e.rest?t.push("r-"+e.rest):e.pitches.forEach(e=>{t.push(`p1-${e.note}`),t.push(`p8-${Math.round(e.note/8)}`)})}}),e.trait=HashVector.fromWords(t)}));const s=this.staffGroups.flat(1).reduce((e,t)=>(e[t]=this.staffGroups.findIndex(e=>e.includes(t)),e),{}),i=Array(e).fill(null).map((e,t)=>({vector:HashVector.zero,index:t,weight:0,headStaff:null}));t.forEach((e,t)=>{i.sort((e,t)=>t.weight-e.weight);const r=new Set(e);i.forEach(e=>{const i=[...r];let n=i[0];if(t>0&&i.length>1){const t=i.map(t=>s[t.headStaff]===s[e.headStaff]?ls(e.vector.toHash(),t.trait.toHash()):-1);n=i[$e(t)]}r.delete(n),n.voiceIndex=e.index,e.vector.scale(.4).add(n.trait),e.weight=Object.keys(n.tickMap).length,0===t&&(e.headStaff=n.headStaff)}),e.sort((e,t)=>e.voiceIndex-t.voiceIndex)});const r=Array(this.stavesCount).fill(null).map(()=>[]);i.forEach(e=>{r[e.headStaff].push(e.index)});const n=Array(this.stavesCount).fill(null).map((e,s)=>{if(!t[0])return{voices:[]};return{voices:r[s].map(e=>({mode:"relative",measures:t.map(t=>t[e])}))}});return(e=>{if(!e[0]||!e[0].voices[0])return void console.warn("empty voices:",e);const t=e[0].voices[0].measures.length;Array(t).fill(null).map((t,s)=>{for(const t of e)for(const e of t.voices)if(!e.measures[s].empty)return!1;return!0}).forEach((t,s)=>{t&&e.forEach(e=>e.voices.forEach(e=>{e.measures[s].tickMap={}}))})})(n),n.forEach(e=>e.voices.forEach(xs)),n}perform(){const e=this.makeVoiceStaves();if(!e)return null;const t=new Map,s=Array(this.stavesCount).fill(null).reduce((e,t,s)=>(e[s]=s,e),{}),i=[].concat(...e.map((e,t)=>e.voices.map(()=>s[t])));let r=!1,n=0,a=null;const o=this.measures.filter(e=>!e.empty).map(s=>{const{systemIndex:o,right:c}=s.position,l=s.measureIndex,u=[].concat(...e.map(e=>e.voices.map(e=>e.measures[l]))),h=u[0],m=n;n+=h.duration;const f=[].concat(...u.map((e,s)=>{const r=i[s],n=Object.values(e.tickMap).filter(e=>e instanceof EventTerm&&!e.rest).map(e=>{const s=Math.round(1*e.duration);console.assert(Number.isFinite(e.tick),"invalid event term tick:",e),console.assert(Number.isFinite(s),"invalid event term duration:",e),e.tick>=0&&e.noteIds.forEach(s=>{t.set(s,{system:o,measure:l,x:e.roundX,endX:c})});const i=this.staffGroups.findIndex(t=>t.includes(e.staff));return{tick:Math.round(1*e.tick),duration:s,pitches:e.pitches,noteIds:e.noteIds,part:i,staff:e.staff}});return[].concat(...n.map(e=>{const t=e.pitches.reduce((e,t)=>(e[Le(t)]=t,e),{});return Object.values(t).sort((e,t)=>e.note-t.note).filter(e=>!e.tied).map((t,s)=>{const i=Le(t),n=e.noteIds&&e.noteIds[s];return{tick:e.tick,pitch:i,duration:e.duration,chordPosition:{index:s,count:e.pitches.length},tied:t.tied,id:n,ids:[n],track:e.part,staff:e.staff,channel:r,subNotes:[{startTick:0,endTick:e.duration,pitch:i,velocity:127}]}})}))})),d=[];a=a||d,s.marks&&s.marks.forEach(e=>{if(e instanceof TempoTerm){const t=e.bpm;if(e.isValid()){const s=r?d:a,i=r?e.tick:0;s.push({track:0,ticks:i,data:{type:"meta",subtype:"setTempo",microsecondsPerBeat:Math.round(6e7/t)}}),r=!0}}});const p=s.basics[0];return{tick:m,duration:s.duration,notes:f,events:d,timeSignature:p&&p.timeSignature,keySignature:p&&p.keySignature}});r||o[0].events.push({track:0,ticks:0,data:{type:"meta",subtype:"setTempo",microsecondsPerBeat:5e5}});return{notation:new MetaNotation({measures:o}),tokenMap:t}}performByEstimation(){const e=new Map;let t=0;const s=this.measures.filter(e=>e.events.some(e=>e.predisposition)).map(s=>{const i=t,r=Math.round(s.estimatedDuration||Ae(je,s.timeSignature)),n=s.basics[0];t+=r;const{systemIndex:a,right:o}=s.position,c=s.measureIndex;return{tick:i,duration:r,notes:s.events.filter(e=>e.predisposition&&e.predisposition.fake<.5&&!e.rest).map(t=>{const s=Math.round(t.predisposition.tick);return t.noteIds.forEach(s=>{e.set(s,{system:a,measure:c,x:t.roundX,endX:o})}),t.pitches.map((e,i)=>{const r=Le(e),n=t.noteIds&&t.noteIds[i],a=this.staffGroups.findIndex(e=>e.includes(t.staff));return{tick:s,pitch:r,duration:t.duration,chordPosition:{index:i,count:t.pitches.length},tied:e.tied,id:n,ids:[n],track:a,staff:t.staff,channel:0,subNotes:[{startTick:0,endTick:t.duration,pitch:r,velocity:127}]}})}).flat(1),events:[],timeSignature:n&&n.timeSignature,keySignature:n&&n.keySignature}});return{notation:new MetaNotation({measures:s}),tokenMap:e}}featureHash(){const e=this.measures.slice(0,16).map(e=>e.featureWords),t=[1,4,16].map(t=>{const s=e.slice(0,t).filter(Boolean),i=s.map(e=>e[0]).flat(1),r=s.map(e=>e[1]).flat(1),n=s.map(e=>e[2]).flat(1),[a,o,c]=[i,r,n].map(HashVector.fromWords);return HashVector.concat(a,o.sub(128),c.sub(128))});return HashVector.concat(...t).toHash()}featureHashHex(){return e=this.featureHash(),Array.from(e).map(us).join("");var e}featureHashBigInt(){return e=this.featureHash(),Array.from(e).reduce((e,t)=>0x100n*e+BigInt(t),0n);var e}assignMeasureNumbers(){let e=null;for(const t of this.measures)(t.discard||t.events.length)&&(t.indent&&(e=null),Number.isFinite(e)||(e=t.partialDuration?0:1),t.measureNumber=e++)}}Spartito.className="Spartito";const Ss=[0,2,4,5,7,9,11],bs=e=>{let t=e%7;for(;t<0;)t+=7;return t},ks=e=>{let t=e%12;for(;t<0;)t+=12;return t},Ts={[-2]:"♭♭",[-1]:"♭",0:"♮",1:"♯",2:"𝄪"};class StaffContext{constructor(){this.logger=new DummyLogger,this.clef=-3,this.keyAlters=[],this.octaveShift=0,this.alters=[],this.timeSignature={numerator:4,denominator:4},this.timeSigNumeric=!1,this.timeSigNumSet=!1,this.timeSigDenSet=!1,this.doubtingTimesig=!0}change(e){switch(e.type){case Ue.Clef:this.clef=e.clef;break;case Ue.KeyAcc:this.keyAlters[bs(this.yToNote(e.y))]=e.alter;break;case Ue.Acc:this.alters[this.yToNote(e.y)]=e.alter;break;case Ue.OctaveShift:this.octaveShift=e.octaveShift;break;case Ue.TimeSignatureC:switch(this.timeSigNumeric=!1,e.tokenType){case"timesig-C44":this.timeSignature.numerator=4,this.timeSignature.denominator=4;break;case"timesig-C22":this.timeSignature.numerator=2,this.timeSignature.denominator=2}this.doubtingTimesig=this.partialTimeSignature;break;case Ue.TimeSignatureN:switch(this.timeSigNumeric=!0,e.y){case 1:this.timeSigDenSet?this.timeSignature.denominator=10*this.timeSignature.denominator+e.number:this.timeSignature.denominator=e.number,this.timeSigDenSet=!0;break;case-1:this.timeSigNumSet?this.timeSignature.numerator=10*this.timeSignature.numerator+e.number:this.timeSignature.numerator=e.number,this.timeSigNumSet=!0;break;default:this.logger.warn("unexpected time signature Y:",e.y)}this.doubtingTimesig=this.partialTimeSignature}}resetMeasure(){this.alters=[],this.timeSigNumSet=!1,this.timeSigDenSet=!1}resetSystem(){this.keyAlters=[]}get keySignature(){return this.keyAlters.filter(e=>Number.isInteger(e)).reduce((e,t)=>e+t,0)}get partialTimeSignature(){return!this.timeSigNumSet!=!this.timeSigDenSet}noteToY(e){return-e/2-this.clef-3.5*this.octaveShift}pitchToNote(e,{preferredAlter:t=null}={}){t||(t=this.keySignature<0?-1:1);const s=Math.floor((e-60)/12),i=ks(e),r=Ss.includes(i)?i:ks(i-t),n=Ss.indexOf(r);this.logger.assert(n>=0,"invalid preferredAlter:",e,t,r);const a=7*s+n,o=i-r,c=this.keyAlters[n]||0;return{note:a,alter:Number.isInteger(this.alters[a])?o:o===c?null:o}}pitchToY(e,{preferredAlter:t=null}={}){const{note:s,alter:i}=this.pitchToNote(e,{preferredAlter:t});return{y:this.noteToY(s),alter:i}}yToNote(e){return this.logger.assert(Number.isInteger(2*e),"invalid y:",e),2*(-e-3.5*this.octaveShift-this.clef)}alterOnNote(e){if(Number.isInteger(this.alters[e]))return this.alters[e];const t=bs(e);return Number.isInteger(this.keyAlters[t])?this.keyAlters[t]:0}noteToPitch(e){const t=Math.floor(e/7),s=bs(e),i=60+12*t+Ss[s]+this.alterOnNote(e);return Number.isFinite(i)?i:(this.logger.warn("invalid pitch value:",i,e,t,s),-1)}yToPitch(e){return this.noteToPitch(this.yToNote(e))}yToPitchName(e){const t=this.yToNote(e),s=Math.floor(t/7),i=bs(t);let r=this.alterOnNote(t);return r||Number.isInteger(this.alters[t])||(r=null),`${Ts[r]?Ts[r]:""}${"CDEFGAB"[i]}${s+4}`}}const ws=e=>e.reduce((e,t,s)=>t?e|1<{if(e.version<3){const{version:t,stavesCount:s,layoutTemplate:i,...r}=e;let n=s>1?Array(s-1).fill(",").join(""):"";2===s&&(n="{-}"),e={version:3,staffLayoutCode:n,...r}}return e.version<8&&(e.pages.forEach(e=>{e.systems.forEach(e=>{if(e.semantics){const t=e.semantics.filter(e=>e.semantic===g.vline_BarMeasure);e.semantics=[].concat(...e.staves.map(e=>{const s=e.top+e.staffY;return t.map(e=>({...e,y:e.y+s,extension:{...e.extension,y1:e.extension.y1+s,y2:e.extension.y2+s}}))}))}})}),e.version=8),e.version<9&&(e.spartito=null,e.version=9),e})(e)),this.pages=this.pages||[],this.headers=this.headers||{},this.instrumentDict=this.instrumentDict||{},this.pageSize=this.pageSize||{width:794,height:1122},this.unitSize=this.unitSize||null,this.staffLayoutCode=this.staffLayoutCode||(2===this.maxStavesCount?"{-}":Array(this.maxStavesCount).fill("").join(","))}get systems(){return[].concat(...this.pages.map(e=>e.systems))}get measureCount(){return this.systems.reduce((e,t)=>e+(t.measureCount||0),0)}get imageKeys(){return[...this.pages.map(e=>e.source?.url),...this.systems.map(e=>e.backgroundImage),...[].concat(...this.systems.map(e=>[...e.staves.map(e=>e.backgroundImage),...e.staves.map(e=>e.maskImage)].filter(Boolean)))].filter(Boolean)}get breakSystemIndices(){const e=[];let t=0;return this.pages.forEach((s,i)=>{ie.staves.length),0)}get sidBlackList(){const e=[].concat(...this.systems.map(e=>e.sidBlackList));return new Set(e)}get sidWhiteList(){const e=[].concat(...this.systems.map(e=>e.sidWhiteList));return new Set(e)}get semanticHash(){const e=[].concat(...this.systems.map(e=>[].concat(...e.staves.map(t=>t.semantics?e.qualifiedSemantics(t.semantics).map(e=>e.id):[]))));return y.default(e.join(""))}eventSystemsToTermStaves(e,t=new DummyLogger){const s=Array(this.maxStavesCount).fill(null).map((t,s)=>({rows:e.map((e,t)=>e.columns.map((i,r)=>{const n=i.rows[s];console.assert(n,"[eventSystemsToTermStaves] measure is null:",s,i.rows);const a=n.contexts;0===r&&(a.some(e=>e.type===Ue.OctaveShift)||a.unshift(new ContextedTerm({staff:s,x:0,y:0,tokenType:B.OctaveShift0,tick:0})));const o=[...n.events||[],...a].sort((e,t)=>e.x-t.x),c=0===s&&r===e.columns.length-1&&this.breakSystemIndices.includes(t);return{terms:o,duration:i.duration,pageBreak:c}}))}));return s.forEach(e=>((e,t=new DummyLogger)=>{const s=new StaffContext;s.logger=t;for(const t of e.rows){for(const e of t){const t=e.terms.find(e=>e instanceof EventTerm);let i=t?Math.min(t.tick,0):0;e.terms.forEach(e=>{if(e instanceof ContextedTerm)e.tick=i,s.change(e);else if(e instanceof EventTerm){const t=e.tick+(e.duration||0);t>i&&(i=t),e.ys&&(e.pitches=e.ys.map(e=>{const t=s.yToNote(e);return{note:t,alter:s.alterOnNote(t),octaveShift:s.octaveShift}}))}}),e.timeSignature={...s.timeSignature},e.timeSigNumeric=s.timeSigNumeric,e.doubtfulTimesig=s.doubtingTimesig||!Number.isInteger(Math.log2(e.timeSignature.denominator))||e.timeSignature.numerator<=e.timeSignature.denominator/4,e.keySignature=s.keySignature,0===e.duration&&(e.duration=je*e.timeSignature.numerator/e.timeSignature.denominator),s.resetMeasure()}s.resetSystem()}})(e,t)),s}resetPageLayout(e){const{unitSize:t=this.unitSize,pageSize:s=this.pageSize}=e,i=.5*s.width/t,r=.5*s.height/t;this.pages.forEach(e=>{const n=i-e.width/2,a=r-e.height/2;e.systems.forEach(e=>{e.left+=n,e.top+=a}),e.semantics&&e.semantics.forEach(e=>{e.x+=n,e.y+=a}),e.width=s.width/t,e.height=s.height/t,e.assemble({textAnnotations:this.textAnnotations})}),this.unitSize=t,this.pageSize=s}getMeasure(e){let t=e;for(const s of this.systems){if(te&&e.measures[t]);return{measureIndex:e,system:s,localIndex:t,left:r.left,right:r.right,measures:n}}t-=s.measureCount}return null}getRawCluster(e,t,{timeSignature:s}={}){const i=this.getMeasure(e);if(!i)return null;const{system:r,left:n,right:a}=i,o=[kt];s&&o.push(...Tt(s));const c=r.staves[0].top+r.staves[0].staffY-2;return r.staves.forEach(e=>{let s=r.qualifiedSemantics(e.semantics,t).filter(e=>e.x>n&&e.xe.semantic===g.TempoNotehead).forEach(e=>{const t=s.findIndex(t=>/^Notehead/.test(t.semantic)&&Ie(e,t)<.3);t>=0&&s.splice(t,1)});const i=e.top+e.staffY-c;s.forEach(t=>{const s=ot[t.semantic];if(s){let r=t.y,a=t.y;s===ot.vline_Stem&&(r=t.extension.y1,a=t.extension.y2),o.push({id:t.id,type:s,staff:e.index,x:t.x-n,y1:r+i,y2:a+i})}})}),new SemanticCluster({index:e,elements:o})}getRawClusters(e=1){return Array(this.measureCount).fill(null).map((t,s)=>this.getRawCluster(s,e))}makeSpartito(e=new DummyLogger){let t=this.systems.map(e=>e.getEvents(this.maxStavesCount));const s=this.eventSystemsToTermStaves(t,e);t.forEach((e,t)=>{e.columns.forEach((e,i)=>{e.basics=s.map(e=>{const{timeSignature:s,timeSigNumeric:r,keySignature:n,doubtfulTimesig:a}=e.rows[t][i];return{timeSignature:s,timeSigNumeric:r,keySignature:n,doubtfulTimesig:a}})})});const i=[].concat(...t.map(e=>e.columns.map(t=>{const s=t.measureIndex,{system:i,localIndex:r,left:n,right:a}=this.getMeasure(s),o=[];i.staves.forEach(e=>o[e.index]=e.top+e.staffY);const c=this.patches&&this.patches.find(e=>e.measureIndex===s),l=c?c.events:SpartitoMeasure.reorderEvents([].concat(...t.rows.map(e=>e.events)),o),u=Object.fromEntries(Object.entries(t.barTypes).map(([e,t])=>[e,t/i.staves.length])),h=0===r&&i.indent;return new SpartitoMeasure({measureIndex:s,staffMask:e.staffMask,position:{systemIndex:i.index,localIndex:r,left:n,right:a,staffYs:i.staves.map(e=>e.top+e.staffY),staffYsFull:o},duration:c?c.duration:t.duration,events:l,contexts:t.rows.map(e=>e.contexts),marks:t.marks,break:t.break,pageBreak:t.pageBreak,voltaBegin:t.voltaBegin,voltaEnd:t.voltaEnd,alternative:t.alternative,barTypes:u,indent:h,basics:c?c.basics:t.basics,matrixH:null,matrixV:null,voices:c?c.voices:null,patched:!!c})}))),r=this.staffLayout,n=r.standaloneGroups.map(e=>e.map(e=>r.staffIds.indexOf(e)));return this.spartito=new Spartito({stavesCount:this.maxStavesCount,staffGroups:n,measures:i}),this.spartito}makeMusicSheet(){const e=this.spartito||this.makeSpartito();e.regulated||console.warn("[makeMusicSheet]\tspartito not regulated.");const t=e.makeVoiceStaves(),{title:s,pageSize:i,unitSize:r,staffLayout:n,paperOptions:a,headers:o,instrumentDict:c}=this;return{title:s,pageSize:i,unitSize:r,measureLayout:this.getMeasureLayout(),staffLayout:n,paperOptions:a,headers:o,voiceStaves:t,instrumentDict:c}}findPoint(e){for(const t of this.systems)for(let s=0;st.id===e);if(i){return{point:i,pageIndex:this.pages.findIndex(e=>e.systems.includes(t)),systemIndex:t.index,staffIndex:s}}}return null}getMeasureSemantics(e,t){const s=this.systems[e];if(!s)return null;const i=t?s.measureBars[t-1]:0,r=s.measureBars[t]||s.width;return s.staves.map((e,t)=>{const s=e.top+e.staffY;return e.semantics.filter(e=>e.x>=i&&e.x{const[i,r]=Number.isFinite(e.extension?.y1)?[e.extension.y1,e.extension.y2]:[e.y,e.y];return{...e,staff:t,sy1:i+s,sy2:r+s}})}).flat(1)}makeTimewiseGraph({store:e=!1}={}){if(!this.spartito)return null;return{measures:this.spartito.measures.filter(e=>e.events.length>0).map(t=>{const s=this.getMeasureSemantics(t.position.systemIndex,t.position.localIndex),i={measureIndex:t.measureIndex,left:t.position.left,right:t.position.right,points:s};return e&&(t.graph=i),i})}}getTokenMap(){const e=new Map;return this.systems.forEach(t=>t.staves.forEach(t=>t.measures.forEach(t=>t.tokens.forEach(t=>e.set(t.id,t))))),e}assemble(e=1,t=new DummyLogger){const s=new Map;this.pages.forEach((e,t)=>e.index=t);let i=0;this.systems.forEach((r,n)=>{r.index=n,r.headMeasureIndex=i,r.prev=this.systems[n-1]||null,r.next=this.systems[n+1]||null,r.semantics&&r.semantics.length&&r.semantics.forEach(e=>((e,i,r)=>{const n=_(e,i,r);t.assert(!s.has(n),"semantic point hash conflicted:",n,r,s.get(n)),s.set(n,r)})(n,null,e)),r.assemble(e,t),i+=r.measureCount}),this.pages.forEach((e,s)=>{e.systems.forEach(e=>e.pageIndex=s),e.assemble({textAnnotations:this.textAnnotations},t)})}assembleSystem(e,t=1){this.systems.forEach((e,t)=>e.index=t);const s=e.index;e.semantics&&e.semantics.length&&(e.semantics.forEach(e=>_(s,null,e)),e.assemble(t))}markVoices(e){const t=this.getTokenMap();for(const e of t.values())e.voice=0;const s=[].concat(...e.map((e,t)=>(e.voices||[]).map((e,s)=>[t,s]))).sort(([e,t],[s,i])=>t-i||e-s).map(([e,t])=>`${e}|${t}`);e.forEach((e,i)=>(e.voices||[]).forEach((e,r)=>e.measures.forEach(e=>{const n=s.indexOf(`${i}|${r}`);Object.values(e.tickMap).filter(e=>e instanceof EventTerm).forEach(e=>{const s=e.noteIds?e.noteIds.map(e=>t.get(e)).filter(Boolean):[],i=e.accessories?e.accessories.map(e=>t.get(e.id)).filter(Boolean):[];[...s,...i].forEach(e=>e.voice|=1<e.timeWarped=!0)})})))}async replaceImageKeys(e){await Promise.all([...this.pages.map(async t=>{t.source&&(t.source.url=await e(t.source.url))}),...this.systems.map(t=>Promise.all([e(t.backgroundImage).then(e=>t.backgroundImage=e),...t.staves.map(async t=>{t.backgroundImage=await e(t.backgroundImage),t.maskImage=await e(t.maskImage)})]))])}inferenceStaffLayout(){const e=Math.max(...this.systems.map(e=>e.staves.length),0);this.staffLayoutCode=Array(e).fill("").join(",");const t=this.systems.filter(t=>t.staves.length===e&&t.bracketsAppearance);if(!t.length)return;const s=t.map(e=>{try{return Ee(e.bracketsAppearance).staffIds.length!==e.staves.length?null:e.bracketsAppearance}catch(e){return null}}).filter(Boolean);if(!s.length)return;const i=s.reduce((e,t)=>{const s=e[t]||0;return e[t]=s+1,e},{}),r=Math.max(...Object.values(i)),n=Object.entries(i).find(([e,t])=>t===r)[0].replace(/\{,*\}/g,e=>e.replace(/,/g,"-")),a=Ee(n);this.staffLayoutCode=n;let o=null;for(const t of this.systems)if(o&&t.staves.length===o.staves.length&&t.bracketsAppearance===o.bracketsAppearance)t.staffMaskChanged=null;else{if(t.staves.length{if(s.length>a.staffIds.length)return null;if(s.reduce((e,t)=>e+t,0)===t.staves.length)return ws(s);for(const i of[1,0]){const r=[...s,i],n=a.partialMaskCode(r);if(n===t.bracketsAppearance)return ws(r);if(t.bracketsAppearance.startsWith(n)){const t=e(r);if(t)return t}}return null},s=e([]);t.staffMaskChanged=o&&s===o.staffMask?null:s}o=t}}assignBackgroundForMeasure(e){e.backgroundImages=[];const t=this.systems[e.position.systemIndex];t.backgroundImage&&e.backgroundImages.push({url:t.backgroundImage,position:t.imagePosition,original:!0}),t.staves.forEach(s=>{!t.backgroundImage&&s.backgroundImage&&e.backgroundImages.push({url:s.backgroundImage.toString(),position:{...s.imagePosition,y:s.imagePosition.y+s.top},original:!0}),s.maskImage&&e.backgroundImages.push({url:s.maskImage.toString(),position:{...s.imagePosition,y:s.imagePosition.y+s.top}})})}blackoutFakeNotes(e="patched"){if(!this.spartito)return;let t=e=>!0;switch(e){case"patched":t=e=>e.patched;break;case"perfect":t=e=>e.patched||e.regulated&&Ke(e).perfect}const s=this.spartito.measures.filter(t).reduce((e,t)=>{if(!t.regulated)return;const s=t.voices.flat(1);return t.events.filter(e=>!e.rest&&!e.grace&&!s.includes(e.id)).forEach(t=>t.noteIds&&e.push(...t.noteIds)),e},[]),i=new Set(s);return this.systems.forEach(e=>e.staves.forEach(t=>{const s=t.semantics.filter(e=>i.has(e.id)).map(e=>e.id);e.sidBlackList.push(...s)})),s}getMeasureLayout(){const e=this.spartito&&this.spartito.measureLayoutCode;if(e)try{return(e=>{const t=fe(e);return t?.data?ae(t.data,he):null})(e)}catch(e){console.debug("invalid measure layout code:",e)}return null}*splitToSingleScoresGen(){this.assemble();const e=this.systems.filter(e=>e.index>0&&e.indent&&e.timeSignatureOnHead).map(e=>e.index);if(!e.length)return void(yield this.deepCopy());const t=new Score({...this,pages:[],topology:void 0,spartito:void 0,patches:void 0});this.pages.forEach(e=>{delete e.tokens,e.systems.forEach(e=>{delete e.tokens,e.staves.forEach(e=>{e.measures=[]})})});let s=0;for(const i of[...e,this.systems.length]){const e=e=>e.index>=s&&e.indext.systems.some(e)).map(t=>{const{systems:s,...i}=t;return new Page({...i,systems:s.filter(e).map(e=>new System({...e}))})}),n=t.deepCopy();n.headers.SubScoreSystem=`${s}-${i-1}`,n.headers.SubScorePage=`${r[0].index}-${r[r.length-1].index}`,n.pages=r,n.assemble(),n.inferenceStaffLayout(),s=i,yield n}}splitToSingleScores(){return[...this.splitToSingleScoresGen()]}}Score.className="Score";class EditableEvent extends EventTerm{constructor(e){super(e)}get agent(){return new Proxy(this,{get(e,t){const s=e;switch(t){case"id":case"tick":case"duration":case"rest":case"division":case"dots":case"stemDirection":case"beam":case"tremolo":case"tremoloLink":case"arpeggioStyle":{const e=s[t];return void 0===e?null:e}case"tying":case"tied":case"glissando":{const e=s[t];return void 0!==e&&e}case"grace":return!!s.grace;case"timeWarp":return s.timeWarp?`${s.timeWarp.numerator}/${s.timeWarp.denominator}`:null;case"multiplier":return s.multiplier?`${s.multiplier.numerator}/${s.multiplier.denominator}`:null;case"pitches":return s.pitches}},set:(e,t,s)=>{const i=e;switch(t){case"tick":case"duration":case"rest":case"division":case"dots":case"stemDirection":case"tying":case"tied":case"beam":case"tremolo":case"tremoloLink":case"glissando":case"arpeggioStyle":return i[t]=s,!0;case"grace":return i.grace=s?Ve.Grace:null,!0;case"timeWarp":if(i.timeWarp=null,s&&"string"==typeof s){const e=s.match(/^(\d+)\/(\d+)/);e&&(i.timeWarp={numerator:parseInt(e[1]),denominator:parseInt(e[2])})}return!0;case"multiplier":if(i.multiplier=null,s&&"string"==typeof s){const e=s.match(/^(\d+)\/(\d+)/);e&&(i.multiplier={numerator:parseInt(e[1]),denominator:parseInt(e[2])})}return!0;case"id":case"pitches":return!0}return!1},ownKeys:()=>["id","duration","rest","division","dots","stemDirection","tying","tied","beam","timeWarp","multiplier","tremolo","tremoloLink","glissando","arpeggioStyle","tick","grace","pitches"],getOwnPropertyDescriptor:()=>({enumerable:!0,configurable:!0})})}}class EditableMeasure extends SpartitoMeasure{constructor(e){super(e),this.events=null,this.events=e.events,this.events?.some(e=>!(e instanceof EditableEvent))&&(this.events=this.events.map(e=>new EditableEvent(e))),this.voices&&this.syncVoiceToEvents()}syncVoiceToEvents(){this.events.forEach(e=>e.voice=-1),this.voices.forEach((e,t)=>{e.forEach(e=>{const s=this.events.find(t=>t.id===e);s?s.voice=t:console.warn("no event with id:",e,this.events.length)})})}syncVoiceFromEvents(){const e=[];this.events.forEach(t=>{t?.voice>=0&&(e[t.voice]=e[t.voice]||[],e[t.voice].push(t))}),e.forEach(e=>e.sort((e,t)=>e.tick-t.tick)),this.voices=e.map(e=>e.map(e=>e.id))}get agent(){return new Proxy(this,{get:(e,t)=>{const s=e;switch(t){case"measureIndex":case"duration":return s[t];case"voices":return s.voices?.map(e=>e.join(","))||null;case"timeSignature":case"keySignature":case"doubtfulTimesig":return s.basics[0][t];case"toJSON":return()=>({measureIndex:s.measureIndex,voices:s.voices,duration:s.duration,timeSignature:s.basics[0].timeSignature,keySignature:s.basics[0].keySignature})}},set:(e,t,s)=>{const i=e;switch(t){case"timeSignature":case"keySignature":case"doubtfulTimesig":return i.basics[0][t]=s,i.basics=i.basics.map(()=>i.basics[0]),!0;case"duration":return i.duration=s,!0;case"measureIndex":case"voices":return!0}return!1},ownKeys:()=>["measureIndex","timeSignature","doubtfulTimesig","keySignature","duration","voices"],getOwnPropertyDescriptor:()=>({enumerable:!0,configurable:!0})})}makeMIDI(e=120){if(!this.regulated)return null;const t=6e7/e,s=this.voices.map((e,s)=>{const i=e.map(e=>{const t=this.events.find(t=>t.id===e);if(t){const e=t.graceIds?t.graceIds.map(e=>this.events.find(t=>t.id===e)):[];return[...e,t]}return[]}).flat(1),r=i.filter(e=>!e.rest&&Number.isFinite(e.tick)&&e.tick>=0&&Number.isFinite(e.duration)).map(e=>e.pitches.map(t=>[{id:e.id,time:e.tick,type:"channel",subtype:"noteOn",channel:e.staff,noteNumber:Le(t),velocity:96},{id:e.id,time:e.tick+e.duration,type:"channel",subtype:"noteOff",channel:e.staff,noteNumber:Le(t)}])).flat(2);return r.sort(function(e,t){return e.time-t.time}),0===s&&r.unshift({time:0,type:"meta",subtype:"timeSignature",numerator:this.timeSignature.numerator,denominator:this.timeSignature.denominator,thirtyseconds:8},{time:0,type:"meta",subtype:"setTempo",microsecondsPerBeat:t}),r.forEach(e=>{e.ticks=Math.round(e.time-0)}),r.forEach((e,t)=>{e.deltaTime=e.ticks-(t>0?r[t-1].ticks:0)}),r.push({deltaTime:0,type:"meta",subtype:"endOfTrack"}),r});return{header:{formatType:0,ticksPerBeat:480},tracks:s}}}var Ms;EditableMeasure.className="EditableMeasure",EditableMeasure.blackKeys=[],function(e){e.Pass="i",e.Division="d",e.Dots="o"}(Ms||(Ms={}));const Es=["whole","half","quarter","eighth","sixteenth","thirtysecond","sixtyfourth","128th","256th"],Ns=.4/je,Is=1e-12,Cs=[void 0,"u","d"],_s=[void 0,ze.Open,ze.Continue,ze.Close],Os=e=>({elements:e.elements.map(e=>({tick:e.tick,division:e.division,dots:e.dots,beam:e.beam,stemDirection:e.stemDirection,grace:e.grace,timeWarped:e.timeWarped,fullMeasure:e.fullMeasure,fake:e.fake,order:e.order,predisposition:e.predisposition}))});class BeadNode{constructor(e){Object.assign(this,e),this.children={},this.accessCount=0}nextBranch(){const e=this.possibilities.map((e,t)=>e/(this.children[t]?this.children[t].accessCount+1:1));return e.every(e=>!e)?(this.accessCount=1/0,null):$e(e)}get currentElem(){return this.cluster.elements[this.elemIndex]}branchID(e){switch(this.type){case Ms.Pass:return`i_${e}`;case Ms.Division:return Es[e];case Ms.Dots:return"o"+".".repeat(e)}return""}async deduce({picker:e,logger:t,ptFactor:s},i=0){++this.accessCount;const r=this.nextBranch();if(t.debug(String.fromCodePoint(127817)+" ".repeat(i),this.branchID(r),this.accessCount>1?`[${this.accessCount}]`:""),!Number.isInteger(r)||r<0)return this.accessCount=1/0,As(this.cluster,this.currentElem.order+1,this.pretentiousness);var n;if(this.pretentiousness+=(n=this.possibilities[r],Math.min(100,-Math.log(n))),this.pretentiousness>100*s)return this.accessCount=1/0,As(this.cluster,this.currentElem.order+1,this.pretentiousness);let a=null;switch(this.type){case Ms.Pass:{const t=this.currentElem.order+1,s=this.cluster.elements[r];if(console.assert(s,"null element:",r,this.cluster.elements.length),s.type===ps.EOS){if(a=As(this.cluster,t,this.pretentiousness),!a.residue||a.fatalError)return this.accessCount=1/0,a;if(this.cluster.elements[0].order=t,!this.children[r]){if(!e.quota)return a;const s=(await e.predictCluster(this.cluster,t+1)).map((e,s)=>this.cluster.elements[s].orderMath.max(Is,e));this.children[r]=new BeadNode({cluster:this.cluster,elemIndex:r,type:Ms.Division,possibilities:e,pretentiousness:this.pretentiousness})}}break;case Ms.Division:if(this.currentElem.division=r,!this.children[r]){const e=this.currentElem.predisposition.dotsVector.map(e=>Math.max(Is,e));this.children[r]=new BeadNode({cluster:this.cluster,elemIndex:this.elemIndex,type:Ms.Dots,possibilities:e,pretentiousness:this.pretentiousness})}break;case Ms.Dots:if(this.currentElem.dots=r,a=As(this.cluster,this.currentElem.order+1,this.pretentiousness),!a.residue||a.fatalError)return this.accessCount=1/0,a;if(!this.children[r]){if(!e.quota)return a;const t=this.currentElem.order+1,s=(await e.predictCluster(this.cluster,t)).map((e,s)=>this.cluster.elements[s].order{t.order>e&&(t.order=void 0)}),this.cluster.elements.forEach(e=>e.order=e.order>this.currentElem.order?void 0:e.order),this.cluster.elements[this.cluster.elements.length-1].tick=a.endTick,a}return o}}const Bs=e=>je*2**-e.division*(2-2**-e.dots),As=(e,t,s)=>{const i=e.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&Number.isInteger(e.order)&&e.ordere.order-t.order);const r=e.elements[e.elements.length-1];let n=0,a=0,o=0,c=1;const l=[[r.x,e.signatureDuration,e.signatureDuration]];let u=0;i.forEach(e=>{e.order>a+1&&(n=0,++c);const t=l.find(e=>e[1]>=n);if(t&&e.x>t[0]+3){const t=l.reduce((t,s)=>Math.abs(e.predisposition.tick-s[2])t[0]>e.x));l.splice(s,0,[e.x,e.tick,e.predisposition.tick]);let i=Bs(e);e.predisposition.timeWarped>.5&&(i=2*i/3),n+=i,u+=i,o=Math.max(o,n),a=e.order}),o>0&&(e.elements[e.elements.length-1].tick=o);const h=e.elements[e.elements.length-1].pivotX-e.elements[1].pivotX,m=Math.max(...i.map(e=>e.tick),o),f=[...i].sort((e,t)=>e.pivotX-t.pivotX),d=f.slice(1).map((e,t)=>{const s=f[t],i=e.pivotX-s.pivotX,r=e.tick-s.tick;if(!r)return i/h;return(4*Math.atan2(r/m,i/h)/Math.PI-1)**2}),p=Math.max(...d,0),g=i.map(e=>(e.tick-e.predisposition.tick)**2),y=g.length?Math.sqrt(g.reduce((e,t)=>e+t,0)/g.length):0,v=e.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&!(Number.isInteger(e.order)&&e.order.5)).length,x=p>=1||o>e.signatureDuration,S=Math.max(0,e.signatureDuration-u/c);return{tickErr:y,twist:p,residue:v,endTick:o,fatalError:x,voiceN:c,spaceDuration:S,pretentiousness:s,loss:y/je+p+.2*v+.002*c+S*Ns+.02*s}},Ps=async(e,t,s,i=200,r=0,n=1)=>{e.elements.forEach((e,t)=>e.order=t?void 0:0);const a=await t.predictCluster(e,1),o=new BeadNode({cluster:e,elemIndex:0,pretentiousness:0,type:Ms.Pass,possibilities:a});let c=null,l=null;for(t.quota=i;t.quota;){e.elements.forEach((e,t)=>e.order=t?void 0:0);const i=await o.deduce({picker:t,logger:s,ptFactor:n});if(s.debug("loss:",i),(!c||i.loss{e.elements.forEach((e,s)=>Object.assign(e,t.elements[s]))})(e,l);const u=e.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&Number.isInteger(e.order)),h=e.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&!Number.isInteger(e.order));u.length&&h.forEach(e=>{if(e.tick=void 0,e.predisposition.fakeP<.5){const t=Bs(e),s=u.filter(e=>e.tick+t<=c.endTick);if(s.length){const t=s.reduce((t,s)=>Math.abs(s.x-e.x)e.order-t.order),[...u,...h].forEach(e=>{e.grace=!Number.isFinite(e.tick)&&e.predisposition.grace,e.timeWarped=e.predisposition.timeWarped>.5,e.fullMeasure=e.predisposition.fullMeasure>.5,e.stemDirection=Cs[$e(e.predisposition.stemDirectionVector)],e.beam=_s[$e(e.predisposition.beamVector)]});const m=e.elements.map(e=>e.index),f=e=>m.indexOf(e);return e.matrixH=e.elements.map(()=>Array(e.elements.length).fill(0)),u.forEach((t,s)=>{const i=u[s-1];!i||i.order{const{stopLoss:s=.09,quotaMax:i=1e3,quotaFactor:r=5,ptFactor:n=1,logger:a=new DummyLogger}=t;let o=0;const c=e.createClusters();for(const l of c){const c=Math.min(i,Math.ceil(l.elements.length*r));a.info(`[measure-${e.measureIndex}]`,c);const{loss:u}=await Ps(l,t.picker,a,c,s,n);o=Math.max(o,u)}const l=[],u=[],h=[];c.forEach(t=>{const s=t.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&Number.isInteger(e.order));if(s.sort((e,t)=>e.order-t.order),!s.length)return;let i=[];l.push(i);let r=0;s.forEach(e=>{e.fullMeasure||e.grace||e.tremoloCatcher||(e.order>r+1?(i=[e.index],l.push(i)):i.push(e.index),r=e.order)});let n=s[s.length-1];const a=t.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)&&Number.isFinite(e.tick)&&!Number.isInteger(e.order));for(;a.length;){const e=a.findIndex(e=>e.tick>=n.tick+Bs(n));e>=0?i.push(a.splice(e,1)[0].index):(n=a.splice(0,1)[0],i=[n.index],l.push(i))}if(s.some(e=>!e.fullMeasure&&Number.isInteger(e.order))){const e=t.elements.find(e=>e.type===ps.EOS);u.push(e.tick)}const o=e.eventMap,c=t.elements.reduce((e,t)=>(Number.isFinite(t.tick)&&e.add(t.tick),e),new Set),m=Array.from(c).sort((e,t)=>e-t);s.forEach(e=>{const t=o[e.index];t&&h.push({id:t.id,tick:e.tick,tickGroup:m.indexOf(e.tick),division:e.division!==t.division?e.division:void 0,dots:e.dots!==t.dots?e.dots:void 0,timeWarp:e.timeWarped?_e(2,3):void 0,beam:e.beam!==t.beam?e.beam:void 0,grace:e.grace!==!!t.grace?e.grace:void 0,fullMeasure:e.fullMeasure||void 0})})});const m=Math.max(...c.map(e=>e.estimatedDuration));return{voices:l.filter(e=>e.length),duration:Math.max(...u),events:h,priority:-o,estimatedDuration:m}},Ds=async(e,{picker:t,resetSignatureForDoubtfulOnly:s})=>{const i=e.createClusters(),r=e.eventMap;for(const n of i)s&&!e.doubtfulTimesig||(n.signatureDuration=0),n.elements.forEach((e,t)=>e.order=t?void 0:0),await t.predictCluster(n,1),n.elements.filter(e=>[ps.CHORD,ps.REST].includes(e.type)).forEach(e=>{r[e.index].predisposition=e.predisposition});e.estimatedDuration=Math.max(...i.map(e=>e.estimatedDuration))},Fs=async(e,t)=>Ds(e,{picker:t,resetSignatureForDoubtfulOnly:!0});var Ls=Object.freeze({__proto__:null,solveCluster:Ps,solveMeasure:Rs,estimateMeasure:Fs,glimpseMeasure:Ds}),$s=Object.freeze({__proto__:null,beadSolver:Ls,get PageLayoutMethod(){return d},get TextType(){return p},TokenTypes:P,TokenClefs:R,TokenTimesigs:D,TokenTimesigsC:F,TokenTimesigsN:L,TokenOctshifts:$,TokenNumbers:j,TokenAccidentals:H,TokenNoteheads:V,TokenBareNoteheads:z,TokenDirectionalNoteheads:q,TokenRests:G,TokenFlags:W,TokenVolta:U,TokenDynamics:Y,TokenScripts:X,TokenPedals:K,TokenDots:Z,TokenArcs:J,TokenBeams:Q,TokenWedges:ee,TokenAccessories:te,TokenDirectionless:se,TokenGlyphs:ie,get TokenType(){return B},Token:Token,TextToken:TextToken,TOKEN_Y_ROUND:re,TOKEN_Y_FIXED:ne,VERSION:14,Score:Score,Page:Page,System:System,Staff:Staff,Measure:Measure,emptyVoiceFromStaffMeasure:vs,SpartitoMeasure:SpartitoMeasure,Spartito:Spartito,EditableEvent:EditableEvent,EditableMeasure:EditableMeasure,Term:Term,EventTerm:EventTerm,ContextedTerm:ContextedTerm,MarkTerm:MarkTerm,TempoTerm:TempoTerm,GlyphTerm:GlyphTerm,TextTerm:TextTerm,LyricTerm:LyricTerm,CommandTerm:CommandTerm,ChordmodeTerm:ChordmodeTerm,get ContextType(){return Ue},get GraceType(){return Ve},get GlissandoStyle(){return Ge},get ArpeggioStyle(){return We},get AccessoryDirection(){return He},WHOLE_DURATION:je,get StemBeam(){return ze},get TremoloLink(){return qe},mod7:bs,get SemanticType(){return g},glyphSemanticMapping:{"rests.1":"Rest1","rests.0o":"Rest0","rests.1o":"Rest1","rests.M1":"RestM1","rests.2":"Rest2","rests.3":"Rest3","rests.4":"Rest4","rests.5":"Rest5","rests.6":"Rest6","accidentals.sharp":"AccSharp","accidentals.doublesharp":"AccDoublesharp","accidentals.natural":"AccNatural","accidentals.flat":"AccFlat","accidentals.flatflat":"AccFlatflat","dots.dot":"Dot","scripts.ufermata":"ScriptFermata","scripts.dfermata":"ScriptFermata","scripts.ushortfermata":"ScriptShortFermata","scripts.dshortfermata":"ScriptShortFermata","scripts.staccato":"ScriptStaccato","scripts.ustaccatissimo":"ScriptStaccatissimo","scripts.dstaccatissimo":"ScriptStaccatissimo","scripts.turn":"ScriptTurn","scripts.trill":"ScriptTrill","scripts.segno":"ScriptSegno","scripts.coda":"ScriptCoda","scripts.arpeggio":"ScriptArpeggio","scripts.prall":"ScriptPrall","scripts.mordent":"ScriptMordent","scripts.umarcato":"ScriptMarcato","scripts.dmarcato":"ScriptMarcato","scripts.uportato":"ScriptPortato","scripts.dportato":"ScriptPortato","scripts.tenuto":"ScriptTenuto","scripts.sforzato":"ScriptSforzato","clefs.C":"ClefC","clefs.F":"ClefF","clefs.G":"ClefG","clefs.F_change":"ClefF","clefs.G_change":"ClefG","timesig.C44":"TimesigC44","timesig.C22":"TimesigC22","pedal.*":"PedalStar","pedal.Ped":"PedalPed","noteheads.s0":"NoteheadS0","noteheads.s1":"NoteheadS1","noteheads.s2":"NoteheadS2",f:"f",m:"m",p:"p",r:"r",s:"s",z:"z"},semanticPriorities:{ClefG:0,ClefF:0,TimesigFour:0,TimesigThree:0,TimesigTwo:0,NoteheadS0:0,NoteheadS1:0,NoteheadS2:0,Dot:0,vline_BarMeasure:0,vline_Stem:0,Flag3:0,TimesigC44:1,TimesigC22:1,TimesigEight:1,TimesigSix:1,AccNatural:1,AccSharp:1,AccFlat:1,KeyAcc:1,Rest0:1,Rest1:1,Rest2:1,Rest3:1,Rest4:1,OctaveShift8:1,OctaveShift0:1,AccDoublesharp:2,AccFlatflat:2,TimesigOne:2,TimesigNine:2,Rest5:2,Rest6:2,SlurBegin:2,SlurEnd:2,VoltaLeft:2,VoltaRight:2,vline_BarTerminal:2,vline_BarSegment:2,TempoNotehead:2,GraceNotehead:2,SignLined:2,SignInterval:2,BeamLeft:2,BeamRight:2,BeamContinue:2,TremoloLeft:2,TremoloRight:2,TremoloMiddle:2,StemTip:2,StemHead:2,f:3,p:3,m:3,ScriptFermata:3,ScriptSforzato:3,ScriptStaccato:3,ScriptStaccatissimo:3,ScriptTurn:3,ScriptTrill:3,ScriptSegno:3,ScriptCoda:3,ScriptArpeggio:3,ScriptPrall:3,ScriptMordent:3,ScriptTenuto:3,PedalStar:3,PedalPed:3,TimesigFive:3,TimesigSeven:3,TimesigZero:3,One:3,Two:3,Three:3,Four:3,Five:3,rect_Text:3,rect_Lyric:3,CrescendoBegin:3,CrescendoEnd:3,DecrescendoBegin:3,DecrescendoEnd:3,RestM1:4,ClefC:4,ScriptShortFermata:4,ScriptMarcato:4,ScriptPortato:4,s:4,r:4,z:4,Zero:4,Six:4,Seven:4,Eight:4,Nine:4},NOTEHEAD_WIDTHS:w,glyphCenters:M,ONE_D_SEMANTICS:["OctaveShift8va","OctaveShift8vb","OctaveShift8","OctaveShift0","vline_VoltaLeft","vline_VoltaRight","VoltaAlternativeBegin","vline_BarMeasure","vline_BarTerminal","vline_BarSegment"],SYSTEM_SEMANTIC_TYPES:E,CONFLICTION_GROUPS:I,STAMP_SEMANTICS:C,STAMP_RECTS:{ClefG:[-.0625,-1.125,3.6,8.6],ClefF:[.25,.5625,3.6,3.8],ClefC:[.25,0,3.25,4.5],NoteheadS0:[.0625,0,2.55,1.4],NoteheadS1:[.0625,0,1.8,1.4],NoteheadS2:[.0625,-.0625,1.65,1.35],Dot:[.25,0,.6,.6],Rest0:[0,-.75,3.25,.9],Rest1:[0,-.25,3.25,.9],Rest2:[-.0625,-.1875,1.6,3.375],Rest3:[0,.0625,1.2,2.25],Rest4:[.0625,.5625,1.65,3.375],Rest5:[.0625,.0625,1.95,4.375],Rest6:[.0625,.5625,1.95,5.375],RestM1:[-.4375,-1.5,.75,1.2],AccNatural:[0,0,.9,3.5],AccSharp:[0,0,1.5,3.5],AccDoublesharp:[0,0,1.5,1.5],AccFlat:[0,-.5625,1.2,3.125],AccFlatflat:[.1875,-.5625,1.95,3.125],TimesigC44:[-.0625,0,2.25,2.3],TimesigC22:[-.0625,0,2.25,3.2],TimesigZero:[0,0,1.8,2.2],TimesigOne:[-.125,0,1.5,2.2],TimesigTwo:[0,0,2.2,2.2],TimesigThree:[-.0625,0,1.9,2.4],TimesigFour:[.0625,0,1.95,2.2],TimesigFive:[0,0,1.8,2.3],TimesigSix:[0,0,2,2.4],TimesigSeven:[0,0,1.8,2.2],TimesigEight:[0,0,1.9,2.2],TimesigNine:[0,0,1.9,2.2],One:[-.0625,0,.75,1.6],Two:[0,0,1.2,1.6],Three:[0,0,1.2,1.6],Four:[0,0,1.2,1.6],Five:[0,0,1.2,1.6],OctaveShift8:[2.125,-.1875,4.75,3.6],OctaveShift0:[-.4,0,1.8,4.2],f:[.0625,-.125,2.55,3],p:[-.0625,.25,2.55,2.1],m:[-.125,-.0625,2.4,1.35],n:[-.3125,-.0625,1.95,1.35],r:[0,-.125,1.5,1.5],s:[0,-.0625,1.2,1.35],z:[.0625,0,1.35,1.5],ScriptFermata:[0,0,3.25,3.9],ScriptShortFermata:[0,0,2.4,4.95],ScriptSforzato:[-.0625,0,2.5,1.2],ScriptStaccato:[0,-.0625,.6,.45],ScriptStaccatissimo:[0,0,1.2,2.6],ScriptTurn:[0,0,2.7,1.5],ScriptTrill:[-.125,-.5,3,2.7],ScriptSegno:[0,0,2.4,3.5],ScriptCoda:[0,0,2.7,3.25],ScriptArpeggio:[-.0625,0,1.05,1.8],ScriptPrall:[0,0,2.4,1.2],ScriptMordent:[0,0,2.4,1.5],ScriptMarcato:[0,0,1.2,2.475],ScriptTenuto:[0,-.0625,1.5,.15],ScriptPortato:[0,0,1.5,1.65],PedalStar:[0,0,3.2,3.2],PedalPed:[0,-.25,4.7,2.4]},hashSemanticPoint:_,hashPageSemanticPoint:O,SemanticGraph:SemanticGraph,get SemanticElementType(){return ot},SemanticCluster:SemanticCluster,SemanticClusterSet:class SemanticClusterSet{constructor(e){if(e&&(this.clusters=e.clusters,e.vocab)){const t=e.vocab.map((e,t)=>[t,ot[e]]).filter(([e,t])=>e!==t).reduce((e,[t,s])=>(e[t]=s,e),{});this.clusters.forEach(e=>e.elements.forEach(e=>{Number.isFinite(t[e.type])&&(e.type=t[e.type])}))}}toJSON(){return{__prototype:"SemanticClusterSet",vocab:Object.entries(ot).filter(e=>Number.isFinite(e[1])).map(e=>e[0]),clusters:this.clusters.map(e=>e.toJSON())}}},ELEMENT_TOKEN_NAMES:ht,NOTEHEAD_ELEMENT_TYPES:ft,NOTE_ELEMENT_TYPES:gt,BOS_ELEMENT:kt,fractionToElems:Tt,expandMatrixByMasks:Mt,expandMatrixByMaskTriu:Et,matrixFromGroups:Nt,get EventElementType(){return ps},EventCluster:EventCluster,EventClusterSet:EventClusterSet,recoverJSON:ae,SimpleClass:SimpleClass,PatchMeasure:PatchMeasure,evaluateMeasure:Ke});const js=[B.ClefG,B.ClefF,B.ClefC],Hs=e=>{let t=null;switch(e.tokenType){case B.ClefG:t="Treble";break;case B.ClefF:t="Bass";break;case B.ClefC:t=-1===e.y?"Tenor":"Alto"}return t};var Vs,zs={exports:{}},qs="object"==typeof Reflect?Reflect:null,Gs=qs&&"function"==typeof qs.apply?qs.apply:function(e,t,s){return Function.prototype.apply.call(e,t,s)};Vs=qs&&"function"==typeof qs.ownKeys?qs.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var Ws=Number.isNaN||function(e){return e!=e};function Us(){Us.init.call(this)}zs.exports=Us,zs.exports.once=function(e,t){return new Promise(function(s,i){function r(s){e.removeListener(t,n),i(s)}function n(){"function"==typeof e.removeListener&&e.removeListener("error",r),s([].slice.call(arguments))}ii(e,t,n,{once:!0}),"error"!==t&&function(e,t,s){"function"==typeof e.on&&ii(e,"error",t,s)}(e,r,{once:!0})})},Us.EventEmitter=Us,Us.prototype._events=void 0,Us.prototype._eventsCount=0,Us.prototype._maxListeners=void 0;var Ys=10;function Xs(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function Ks(e){return void 0===e._maxListeners?Us.defaultMaxListeners:e._maxListeners}function Zs(e,t,s,i){var r,n,a,o;if(Xs(s),void 0===(n=e._events)?(n=e._events=Object.create(null),e._eventsCount=0):(void 0!==n.newListener&&(e.emit("newListener",t,s.listener?s.listener:s),n=e._events),a=n[t]),void 0===a)a=n[t]=s,++e._eventsCount;else if("function"==typeof a?a=n[t]=i?[s,a]:[a,s]:i?a.unshift(s):a.push(s),(r=Ks(e))>0&&a.length>r&&!a.warned){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=a.length,o=c,console&&console.warn&&console.warn(o)}return e}function Js(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Qs(e,t,s){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:s},r=Js.bind(i);return r.listener=s,i.wrapFn=r,r}function ei(e,t,s){var i=e._events;if(void 0===i)return[];var r=i[t];return void 0===r?[]:"function"==typeof r?s?[r.listener||r]:[r]:s?function(e){for(var t=new Array(e.length),s=0;s{s=e,i=r,t>=0&&setTimeout(i,t,"timeout")}),s,i]}Object.defineProperty(Us,"defaultMaxListeners",{enumerable:!0,get:function(){return Ys},set:function(e){if("number"!=typeof e||e<0||Ws(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Ys=e}}),Us.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Us.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||Ws(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},Us.prototype.getMaxListeners=function(){return Ks(this)},Us.prototype.emit=function(e){for(var t=[],s=1;s0&&(n=t[0]),n instanceof Error)throw n;var a=new Error("Unhandled error."+(n?" ("+n.message+")":""));throw a.context=n,a}var o=r[e];if(void 0===o)return!1;if("function"==typeof o)Gs(o,this,t);else{var c=o.length,l=si(o,c);for(s=0;s=0;n--)if(s[n]===t||s[n].listener===t){a=s[n].listener,r=n;break}if(r<0)return this;0===r?s.shift():function(e,t){for(;t+1=0;i--)this.removeListener(e,t[i]);return this},Us.prototype.listeners=function(e){return ei(this,e,!0)},Us.prototype.rawListeners=function(e){return ei(this,e,!1)},Us.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):ti.call(e,t)},Us.prototype.listenerCount=ti,Us.prototype.eventNames=function(){return this._eventsCount>0?Vs(this._events):[]};class AsyncQueue extends zs.exports.EventEmitter{constructor(){super(),this.working=!1,this.working=!1,this.tasks=[],process.nextTick(()=>{this.emit("idle")})}async _digest(e){this.working=!0;const[t,s,i,r]=e;await t(s).then(i,r),this.tasks.length>0?await this._digest(this.tasks.shift()):(this.working=!1,this.emit("idle"))}addTask(e,{timeout:t=6e5}={}){const[s,i,r]=ri({timeout:t});return this.working?this.tasks.push([...e,i,r]):this._digest([...e,i,r]),s}}class ZeroClient{constructor(e=console){this.queue=new AsyncQueue,this.logger=e}bind(e){e&&(this.url=e),this.socket=new n.Request({sendTimeout:15e3,receiveTimeout:3e5}),this.socket.connect(this.url)}__request(e){let t=0;const s=async e=>{try{return this.socket.closed&&this.bind(),await this.socket.send(r.pack(e)).then(()=>this.socket.receive())}catch(i){if(t<2)return t++,console.log(`请求失败,${i.stack}`),console.error(`3s后重试第${t}次`),this.socket.close(),await new Promise(e=>setTimeout(e,3e3)),s(e);throw i}};return s(e)}async request(e,t=null,s=null){const[i,n]=Array.isArray(t)?[t,s]:[void 0,t],a={method:e};return i&&(a.args=i),n&&(a.kwargs=n),this.queue.addTask([async e=>{const[t]=await this.__request(e),s=r.unpack(t);return 0===s.code?s.data:Promise.reject(s.msg)},a])}}class PyProcessor extends ZeroClient{constructor(e,t={},s=console){super(s),this.retryCount=0,this.retryDelay=3e3,this.scriptPath=e,this.options=t}async bind(e){const t=e||await a.getPortPromise({port:12022,stopPort:12122}),i=s.defaultsDeep({args:[...this.options.args||[],"-p",`${t}`]},this.options);this.logger.info(`[python-shell]: starting python shell. path: ${this.scriptPath}`),this.pyShell=new o.PythonShell(this.scriptPath,i),this.pyShell.stdout.on("data",e=>this.logger.info(e)),this.pyShell.on("pythonError",e=>this.logger.error(`[python-shell]: ${this.scriptPath} pythonError:`,e)),this.pyShell.on("stderr",e=>this.logger.error(`[python-shell]: ${this.scriptPath} stderr:`,e)),this.pyShell.on("error",e=>this.logger.error(`[python-shell]: ${this.scriptPath} error:`,e)),this.pyShell.on("close",()=>{this.retryCount<5&&(this.retryCount++,this.logger.info(`[python-shell]: ${this.scriptPath} will retry ${this.retryCount}th time after 3 seconds`),setTimeout(()=>{this.bind()},this.retryDelay))}),super.bind(`tcp://127.0.0.1:${t}`)}}var ni={},ai=function(e){return e instanceof Buffer},oi={exports:{}},ci={exports:{}};"function"==typeof Object.create?ci.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:ci.exports=function(e,t){e.super_=t;var s=function(){};s.prototype=t.prototype,e.prototype=new s,e.prototype.constructor=e};try{var li=require("util");if("function"!=typeof li.inherits)throw"";oi.exports=li.inherits}catch(e){oi.exports=ci.exports}!function(e){var t=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),s={},i=0;i=a)return e;switch(e){case"%s":return String(r[i++]);case"%d":return Number(r[i++]);case"%j":try{return JSON.stringify(r[i++])}catch(e){return"[Circular]"}default:return e}}),c=r[i];i=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),m(s)?i.showHidden=s:s&&e._extend(i,s),g(i.showHidden)&&(i.showHidden=!1),g(i.depth)&&(i.depth=2),g(i.colors)&&(i.colors=!1),g(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=a),c(i,t,i.depth)}function a(e,t){var s=n.styles[t];return s?"["+n.colors[s][0]+"m"+e+"["+n.colors[s][1]+"m":e}function o(e,t){return e}function c(t,s,i){if(t.customInspect&&s&&b(s.inspect)&&s.inspect!==e.inspect&&(!s.constructor||s.constructor.prototype!==s)){var r=s.inspect(i,t);return p(r)||(r=c(t,r,i)),r}var n=function(e,t){if(g(t))return e.stylize("undefined","undefined");if(p(t)){var s="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(s,"string")}if(d(t))return e.stylize(""+t,"number");if(m(t))return e.stylize(""+t,"boolean");if(f(t))return e.stylize("null","null")}(t,s);if(n)return n;var a=Object.keys(s),o=function(e){var t={};return e.forEach(function(e,s){t[e]=!0}),t}(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(s)),S(s)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return l(s);if(0===a.length){if(b(s)){var v=s.name?": "+s.name:"";return t.stylize("[Function"+v+"]","special")}if(y(s))return t.stylize(RegExp.prototype.toString.call(s),"regexp");if(x(s))return t.stylize(Date.prototype.toString.call(s),"date");if(S(s))return l(s)}var k,T="",w=!1,E=["{","}"];(h(s)&&(w=!0,E=["[","]"]),b(s))&&(T=" [Function"+(s.name?": "+s.name:"")+"]");return y(s)&&(T=" "+RegExp.prototype.toString.call(s)),x(s)&&(T=" "+Date.prototype.toUTCString.call(s)),S(s)&&(T=" "+l(s)),0!==a.length||w&&0!=s.length?i<0?y(s)?t.stylize(RegExp.prototype.toString.call(s),"regexp"):t.stylize("[Object]","special"):(t.seen.push(s),k=w?function(e,t,s,i,r){for(var n=[],a=0,o=t.length;a60)return s[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+s[1];return s[0]+t+" "+e.join(", ")+" "+s[1]}(k,T,E)):E[0]+T+E[1]}function l(e){return"["+Error.prototype.toString.call(e)+"]"}function u(e,t,s,i,r,n){var a,o,l;if((l=Object.getOwnPropertyDescriptor(t,r)||{value:t[r]}).get?o=l.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):l.set&&(o=e.stylize("[Setter]","special")),M(i,r)||(a="["+r+"]"),o||(e.seen.indexOf(l.value)<0?(o=f(s)?c(e,l.value,null):c(e,l.value,s-1)).indexOf("\n")>-1&&(o=n?o.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+o.split("\n").map(function(e){return" "+e}).join("\n")):o=e.stylize("[Circular]","special")),g(a)){if(n&&r.match(/^\d+$/))return o;(a=JSON.stringify(""+r)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+o}function h(e){return Array.isArray(e)}function m(e){return"boolean"==typeof e}function f(e){return null===e}function d(e){return"number"==typeof e}function p(e){return"string"==typeof e}function g(e){return void 0===e}function y(e){return v(e)&&"[object RegExp]"===k(e)}function v(e){return"object"==typeof e&&null!==e}function x(e){return v(e)&&"[object Date]"===k(e)}function S(e){return v(e)&&("[object Error]"===k(e)||e instanceof Error)}function b(e){return"function"==typeof e}function k(e){return Object.prototype.toString.call(e)}function T(e){return e<10?"0"+e.toString(10):e.toString(10)}e.debuglog=function(t){if(g(i)&&(i=process.env.NODE_DEBUG||""),t=t.toUpperCase(),!r[t])if(new RegExp("\\b"+t+"\\b","i").test(i)){var s=process.pid;r[t]=function(){var i=e.format.apply(e,arguments);console.error("%s %d: %s",t,s,i)}}else r[t]=function(){};return r[t]},e.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=h,e.isBoolean=m,e.isNull=f,e.isNullOrUndefined=function(e){return null==e},e.isNumber=d,e.isString=p,e.isSymbol=function(e){return"symbol"==typeof e},e.isUndefined=g,e.isRegExp=y,e.isObject=v,e.isDate=x,e.isError=S,e.isFunction=b,e.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},e.isBuffer=ai;var w=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function M(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.log=function(){var t,s;console.log("%s - %s",(t=new Date,s=[T(t.getHours()),T(t.getMinutes()),T(t.getSeconds())].join(":"),[t.getDate(),w[t.getMonth()],s].join(" ")),e.format.apply(e,arguments))},e.inherits=oi.exports,e._extend=function(e,t){if(!t||!v(t))return e;for(var s=Object.keys(t),i=s.length;i--;)e[s[i]]=t[s[i]];return e};var E="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function N(e,t){if(!e){var s=new Error("Promise was rejected with a falsy value");s.reason=e,e=s}return t(e)}e.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(E&&e[E]){var s;if("function"!=typeof(s=e[E]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(s,E,{value:s,enumerable:!1,writable:!1,configurable:!0}),s}function s(){for(var t,s,i=new Promise(function(e,i){t=e,s=i}),r=[],n=0;n>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&mi.rotl(e,8)|4278255360&mi.rotl(e,24);for(var t=0;t0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],s=0,i=0;s>>5]|=e[s]<<24-i%32;return t},wordsToBytes:function(e){for(var t=[],s=0;s<32*e.length;s+=8)t.push(e[s>>>5]>>>24-s%32&255);return t},bytesToHex:function(e){for(var t=[],s=0;s>>4).toString(16)),t.push((15&e[s]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],s=0;s>>6*(3-r)&63)):t.push("=");return t.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var t=[],s=0,i=0;s>>6-2*i);return t}},di.exports=mi;var pi={utf8:{stringToBytes:function(e){return pi.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(pi.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],s=0;s>5]|=128<<24-r%32,i[15+(r+64>>>9<<4)]=r;for(var h=0;h>>31}var x=(a<<5|a>>>27)+u+(n[y]>>>0)+(y<20?1518500249+(o&c|~o&l):y<40?1859775393+(o^c^l):y<60?(o&c|o&l|c&l)-1894007588:(o^c^l)-899497514);u=l,l=c,c=o<<30|o>>>2,o=a,a=x}a+=m,o+=f,c+=d,l+=p,u+=g}return[a,o,c,l,u]}(i));return r&&r.asBytes?n:r&&r.asString?s.bytesToString(n):e.bytesToHex(n)};i._blocksize=16,i._digestsize=20,fi.exports=i}();var yi=fi.exports;const vi=({page:e,backgroundImage:t,detection:s,imageSize:i,position:r})=>{const n=(s.phi2-s.phi1)/s.interval,a=i.height/s.interval,o=e.systems[e.systems.length-1],c=r?r.y:(o?o.top+o.height:0)+4,l=r?r.x:4,u=[0,...Array(s.middleRhos.length-1).fill(0).map((e,t)=>(s.middleRhos[t]+s.middleRhos[t+1])/2/s.interval)],h=[n],m=u.map((e,t)=>new Staff({top:e,height:(u[t+1]||a)-e,staffY:s.middleRhos[t]/s.interval-e,measureBars:h})),f={x:-s.phi1/s.interval,y:0,width:i.width/s.interval,height:i.height/s.interval};return new System({staves:m,left:l,top:c,width:n,backgroundImage:t,imagePosition:f,measureBars:h})};async function xi(e,{format:t="webp",maxHeight:s=1080,quality:i=80}={}){let r=await(async e=>"string"==typeof e?/^https?:\/\//.test(e)?(await T.default(e,{responseType:"buffer",decompress:!0,https:{rejectUnauthorized:!1}})).body:/^data:image\//.test(e)?Buffer.from(e.split(",")[1],"base64"):Buffer.from(e):e)(e);const n=await new Promise(e=>{k.default(r).resize({width:s,height:s,fit:"inside",withoutEnlargement:!0}).toFormat(t,{quality:i}).toBuffer((t,s)=>{e(s)})});return{buffer:n,filename:`${b.default.ArrayBuffer.hash(n)}.${t}`}}globalThis.OffscreenCanvas=globalThis.OffscreenCanvas||c.Canvas,globalThis.Image=globalThis.Image||c.Image,globalThis.btoa=globalThis.btoa||(e=>Buffer.from(e,"binary").toString("base64"));const Si=32,bi={viewportHeight:256,viewportUnit:8},ki=192,Ti=8,wi={viewportHeight:192,viewportUnit:8};const Mi=e=>Promise.all(e.map(e=>e())),Ei=async(e,t,{paddingLeft:s=0,scaling:i=1,spec:r})=>{if(!e||!e.backgroundImage)return null;const n=e.staves[t];if(!n)return null;const a=r.viewportHeight/r.viewportUnit/2,o=e.imagePosition.width*r.viewportUnit,l=e.imagePosition.height*r.viewportUnit,u=e.imagePosition.x*r.viewportUnit+s,h=(e.imagePosition.y-(n.top+n.staffY-a))*r.viewportUnit,m=new c.Canvas(Math.round(o+u)*i,r.viewportHeight*i),f=m.getContext("2d");return f.fillStyle="white",f.fillRect(0,0,m.width,m.height),f.drawImage(await c.loadImage(e.backgroundImage),u*i,h*i,o*i,l*i),m};async function Ni({system:e,staff:t,staffIndex:s}){const i=await Ei(e,s,{paddingLeft:Si,spec:wi});t.backgroundImage=i.toBufferSync("png"),t.imagePosition={x:-32/wi.viewportUnit,y:t.staffY-wi.viewportHeight/2/wi.viewportUnit,width:i.width/wi.viewportUnit,height:i.height/wi.viewportUnit}}async function Ii({system:e,staff:t,staffIndex:s,gaugeImage:i,pyClients:r}){const n=(await Ei(e,s,{paddingLeft:Si,spec:bi,scaling:2})).toBufferSync("png"),a=(e.middleY-(t.top+t.staffY))*bi.viewportUnit+bi.viewportHeight/2,{buffer:o,size:c}=await r.predictScoreImages("gaugeRenderer",[n,i,a]);t.backgroundImage=o,t.imagePosition={x:-32/bi.viewportUnit,y:t.staffY-c.height/2/bi.viewportUnit,width:c.width/bi.viewportUnit,height:c.height/bi.viewportUnit},t.maskImage=null}async function Ci({staff:e,staffIndex:t,maskImage:s}){const i=await c.loadImage(s);e.maskImage=s,e.imagePosition={x:-32/Ti,y:e.staffY-ki/2/Ti,width:i.width/Ti,height:i.height/Ti}}async function _i({score:e,staffIndex:t,system:s,staff:i,graph:r}){r.offset(-32/wi.viewportUnit,0),s.assignSemantics(t,r),i.assignSemantics(r),i.clearPredictedTokens(),e.assembleSystem(s,e.settings?.semanticConfidenceThreshold||1)}function Oi(e,t){[[e.source,"url"],...e.systems.map(e=>[[e,"backgroundImage"],...e.staves.map(e=>[[e,"backgroundImage"],[e,"maskImage"]]).flat()]).flat()].map(([e,s])=>{e[s]=t(e[s])})}class OMRProgress{constructor(e){this.state={},this.onChange=e}setTotal(e,t){this.state[e]=this.state[e]||{total:t,finished:0}}increase(e,t=1){(this.state[e]||{finished:0}).finished+=t,this.onChange(this.state)}}const Bi=new l.WeakLRUCache,Ai={get:async e=>Bi.getValue(e),async set(e,t){Bi.setValue(e,t)}},Pi=async e=>{if(e instanceof Buffer||"string"==typeof e&&(/^https?:\/\//.test(e)||/^data:image\//.test(e))){return`data:image/webp;base64,${(await xi(e)).buffer.toString("base64")}`}return e},Ri=e=>{const t=Math.random();let s=0;for(let i=0;it)return i;return e.length-1},Di=(e,t=.9)=>{const s=e.map(e=>Math.log(e)*t).map(Math.exp),i=s.reduce((e,t)=>e+t,0);return s.map(e=>e/i)},Fi=e=>{if(!e.predisposition?.divisionVector&&!e.predisposition?.dotsVector)return e;const t=e.predisposition?.divisionVector?Di(e.predisposition.divisionVector):null,s=e.predisposition?.dotsVector?Di(e.predisposition.dotsVector):null;return new EventTerm({...e,predisposition:{...e.predisposition,divisionVector:t,dotsVector:s}})};class MeasureRectification{constructor(e){Object.assign(this,e)}toString(){return this.events.map(e=>{if(!e)return"";const{division:t="",dots:s=""}=e;return`${t}|${s}`}).join(",")}static default(e){return new MeasureRectification({events:e.map(e=>{if(!e.predisposition?.divisionVector&&!e.predisposition?.dotsVector)return null;const t=e.predisposition.divisionVector?e.division:void 0,s=e.predisposition.dotsVector?e.dots:void 0;return{id:e.id,division:t,dots:s}})})}static roll(e){return new MeasureRectification({events:e.map(e=>{if(!e.predisposition?.divisionVector&&!e.predisposition?.dotsVector)return null;let t,s;return e.predisposition.divisionVector&&(t=Ri(e.predisposition.divisionVector)),e.predisposition.dotsVector&&(s=Ri(e.predisposition.dotsVector)),{id:e.id,division:t,dots:s}})})}}const Li=new l.WeakLRUCache,$i={get:async e=>Li.getValue(e),async set(e,t){Li.setValue(e,t)},batchGet:async e=>e.map(e=>Li.getValue(e))};var ji;!function(e){e[e.ErrorOnly=0]="ErrorOnly",e[e.NotFine=1]="NotFine",e[e.Imperfect=2]="Imperfect"}(ji||(ji={}));const Hi=async(e,t,s,i,r=ji.NotFine,n=0,a)=>{const o=e.filter(({evaluation:e})=>!e||((e,t)=>{switch(t){case ji.ErrorOnly:return e.error;case ji.Imperfect:return!e.perfect}return!e.fine})(e,r));s?.write(".".repeat(o.length)),s?.write("\b".repeat(o.length));const c=o.length;let l=0;for(const e of o){const s=e.current.deepCopy();s.staffGroups=e.current.staffGroups;const r=await Rs(s,{picker:e.picker,...i});s.applySolution(r);const o=Ke(s),u=!e.evaluation||o.fine>e.evaluation.fine||o.qualityScore>e.evaluation.qualityScore&&o.fine===e.evaluation.fine;u&&(e.evaluation=o,Object.assign(e.current,s)),t(e.current,o,u),l++,a?.(e.current,o,u,{pass:n,remaining:c-l,total:c})}return o.length&&s?.write("\n"),o.length};globalThis.btoa=globalThis.btoa||(e=>Buffer.from(e,"binary").toString("base64"));const Vi=parseInt(process.env.RECTIFICATION_SEARCH_ITERATIONS||"30"),zi=parseInt(process.env.BASE_QUOTA_FACTOR||"40"),qi=parseInt(process.env.RECTIFICATION_QUOTA_FACTOR||"80"),Gi=(e,t,s)=>Math.min(Math.ceil((e+1)*t*Math.log(e+2)),Math.ceil(s*Math.min(1,(24/(e+1))**2)));async function Wi(e,{solver:t,quotaMax:s=1e3,quotaFactor:i=zi,solutionStore:r=$i,ignoreCache:n=!1,logger:a}={}){let o=0,c=0;return a?.info(`[solveMeasures] begin, measure total: ${e.length}.`),await Promise.all(e.map(async l=>{if(!n){const e=await r.get(l.regulationHash);if(e)return l.applySolution(e),void++o}const u=Gi(l.events.length,i,s);await l.regulate({policy:"equations",quota:u,solver:t});const h=Ke(l);h.error||r.set(l.regulationHash0,{...l.asSolution(),priority:-l?.solutionStat?.loss}),h.perfect&&++c,a?.info(`[solveMeasures] measure[${l.measureIndex}/${e.length}] regulated: ${h.perfect?"solved":h.error?"error":"issue"}, ${l.regulationHash}`)})),a?.info(`[solveMeasures] ${o}/${e.length} cache hit, ${c} solved.`),{cached:o,computed:e.length-o,solved:c}}const Ui=async(e,{solver:t,quotaMax:s=4e3})=>{let i=Ke(e),r=e.asSolution();const n=Gi(e.events.length,qi,s);let a=0;for(const s of function*(e){const t=new Set,s=MeasureRectification.default(e.events);t.add(s.toString()),yield s;let i=0,r=e.events;for(;i<100;){i&&i%10==0&&(r=r.map(Fi));const e=MeasureRectification.roll(r),s=e.toString();t.has(s)?++i:(i=0,t.add(s),yield e)}}(e)){const o=await ys.regulateMeasureWithRectification(e,s,{solver:t,quota:n}),c=e.deepCopy();c.applySolution(o);const l=Ke(c);if((l.perfect>i.perfect||l.error=i.perfect&&o.priority>r.priority)&&(i=l,r=o),l.perfect)break;if(++a,a>Vi)break}return r};const Yi=async(e,{solver:t,solutionStore:s=$i,logger:i,quotaMax:r=240,quotaFactor:n=16})=>{e.assemble();const a=e.spartito||e.makeSpartito(),o=a.measures.filter(e=>!e.regulated);await Wi(o,{solver:t,quotaMax:r,quotaFactor:n,solutionStore:s,logger:i}),console.assert(e.spartito?.regulated,"doSimpleRegulate: regulation incomplete:",a.measures.filter(e=>!e.regulated).length)};console.info("%cstarry-omr%c v1.0.0 2026-04-23T11:20:50.919Z","color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;","color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;"),exports.DefaultSolutionStore=$i,exports.PyClients=class PyClients{constructor(e,t=console){this.options=e,this.logger=t,this.clients=new Map}async getClient(e){if(this.clients.has(e))return this.clients.get(e);const[t,s,i]=ri(),r=this.options[e];if(!r)throw new Error(`no config for client \`${e}\` found`);try{if("string"==typeof r){const e=new ZeroClient;e.bind(r),s(e)}else{const{scriptPath:e,...t}=r,i=new PyProcessor(e,t,this.logger);await i.bind(`${await ui()}`),s(i)}this.logger.info(`PyClients: ${e} started`)}catch(t){this.logger.error(`PyClients: ${e} start fail: ${JSON.stringify(t)}`),i(t)}return this.clients.set(e,t),t}async checkHost(e){return(await this.getClient(e)).request("checkHost")}async warmup(){const e=Object.keys(this.options);await Promise.all(e.map(e=>this.getClient(e)))}async predictScoreImages(e,...t){const s=e.split("$")[0],i=await this.getClient(s);let r=null;this.logger.info(`[predictor]: ${e} py start..`);const n=Date.now();switch(e){case"layout":r=await i.request("predictDetection",t);break;case"layout$reinforce":r=await i.request("predictReinforce",t);break;case"gauge":case"mask":r=await i.request("predict",t,{by_buffer:!0});break;case"semantic":case"textLoc":r=await i.request("predict",t);break;case"textOcr":case"brackets":case"topo":case"gaugeRenderer":case"jianpu":r=await i.request("predict",...t);break;default:this.logger.error(`[predictor]: no predictor ${e}`)}return this.logger.info(`[predictor]: ${e} py duration: ${Date.now()-n}ms`),r}},exports.abstractOMRStats=e=>{const{costTotal:t,pagesCostTotal:s,pagesTotal:i}=e.reduce((e,t)=>({costTotal:e.costTotal+t.cost,pagesCostTotal:e.pagesCostTotal+t.pagesCost,pagesTotal:e.pagesTotal+t.pages}),{costTotal:0,pagesCostTotal:0,pagesTotal:0});return{costTotal:t,costPerPage:i?t/i:null,pagesTotal:i,scoreN:e.length}},exports.abstractRegulationBeadStats=e=>{const{totalCost:t,pickerCost:s,measureN:i,timeN:r}=e.reduce((e,t)=>({totalCost:e.totalCost+t.totalCost,pickerCost:e.pickerCost+t.pickerCost,measureN:e.measureN+t.measures.computed,timeN:e.timeN+t.measures.tryTimes}),{totalCost:0,pickerCost:0,measureN:0,timeN:0}),n=i>0?t/i:null,a=r>0?t/r:null,{cached:o,simple:c,computed:l,tryTimes:u,solved:h,issue:m,fatal:f}=e.reduce((e,t)=>({cached:e.cached+t.measures.cached,simple:e.simple+t.measures.simple,computed:e.computed+t.measures.computed,tryTimes:e.tryTimes+t.measures.tryTimes,solved:e.solved+t.measures.solved,issue:e.issue+t.measures.issue,fatal:e.fatal+t.measures.fatal}),{cached:0,simple:0,computed:0,tryTimes:0,solved:0,issue:0,fatal:0});return{scoreN:e.length,totalCost:t,pickerCost:s,costPerMeasure:n,costPerTime:a,cached:o,simple:c,computed:l,tryTimes:u,solved:h,issue:m,fatal:f}},exports.abstractRegulationStats=e=>{const{baseCostTotal:t,topoCostTotal:s,baseMeasures:i,topoMeasures:r}=e.reduce((e,t)=>({baseCostTotal:e.baseCostTotal+t.baseCost,topoCostTotal:e.topoCostTotal+t.topoCost,baseMeasures:e.baseMeasures+t.baseMeasures.computed,topoMeasures:e.topoMeasures+(t.topoMeasures.solved+t.topoMeasures.issue+t.topoMeasures.fatal)}),{baseCostTotal:0,topoCostTotal:0,baseMeasures:0,topoMeasures:0}),n=i>0?t/i:null,a=r>0?s/r:null,{cached:o,baseComputed:c,baseSolved:l,topoSolved:u,topoIssue:h,topoFatal:m}=e.reduce((e,t)=>({cached:e.cached+t.baseMeasures.cached,baseComputed:e.baseComputed+t.baseMeasures.computed,baseSolved:e.baseSolved+t.baseMeasures.solved,topoSolved:e.topoSolved+t.topoMeasures.solved,topoIssue:e.topoIssue+t.topoMeasures.issue,topoFatal:e.topoFatal+t.topoMeasures.fatal}),{cached:0,baseComputed:0,baseSolved:0,topoSolved:0,topoIssue:0,topoFatal:0});return{scoreN:e.length,baseCostTotal:t,topoCostTotal:s,baseCostPerMeasure:n,topoCostPerMeasure:a,cached:o,baseComputed:c,baseSolved:l,topoSolved:u,topoIssue:h,topoFatal:m}},exports.constructSystem=vi,exports.convertImage=xi,exports.doRegulate=async(e,{pyClients:t,solver:s,solutionStore:i=$i,onSaveIssueMeasure:r})=>{t?.logger?.info(`[doRegulate] score: ${e.title}`),e.spartito=void 0,e.assemble();const n=e.makeSpartito();n.measures.forEach(t=>e.assignBackgroundForMeasure(t));const a=Date.now(),o=await Wi(n.measures,{solver:s,quotaMax:1e3,solutionStore:i,logger:t?.logger}),c=Date.now(),l=t?await async function(e,{pyClients:t,solver:s,solutionStore:i=$i,onSaveIssueMeasure:r}){t.logger.info(`[RegulateWithTopo] regulate score: ${e.title}, measures: ${e.spartito.measures.length}`);const n=e.spartito.measures.filter(e=>!Ke(e).perfect);if(t.logger.info(`[RegulateWithTopo] basic issues: ${n.length}`),0===n.length)return{solved:0,issue:0,fatal:0};const a=[].concat(...n.map(e=>e.createClusters())),o=await t.predictScoreImages("topo",{clusters:a});console.assert(o.length===a.length,"prediction number mismatch:",a.length,o.length),a.forEach((e,t)=>{const s=o[t];console.assert(s,"no result for cluster:",e.index),e.assignPrediction(s)}),n.forEach(e=>{const t=a.filter(t=>t.index===e.measureIndex);e.applyClusters(t);const{matrixH:s}=ys.estiamteMeasure(e);s.forEach((t,s)=>t.forEach((t,i)=>{e.matrixH[s][i]=.9*e.matrixH[s][i]+t*(1-.9)}))});const c=[],l=[];await Promise.all(n.map(async e=>{const n=e.regulationHash0,a=await Ui(e,{solver:s});a&&(e.applySolution(a),i.set(n,a),i.set(e.regulationHash,e.asSolution()),t.logger.info(`[RegulateWithTopo] solutionStore set: ${e.measureIndex}, ${n}, ${e.regulationHash}`));const o=Ke(e);r?.({measureIndex:e.measureIndex,measure:new EditableMeasure(e),status:o.error?2:1}),o.perfect?c.push(e.measureIndex):o.error&&l.push(e.measureIndex)}));const u=n.length-c.length-l.length;return t.logger.info(`[RegulateWithTopo] score: ${e.title}, solved/issue/fatal: ${c.length}/${u}/${l.length}`),c.length&&t.logger.info(`[RegulateWithTopo] solved measures: ${c.join(", ")}`),l.length&&t.logger.info(`[RegulateWithTopo] error measures: ${l.join(", ")}`),{solved:c.length,issue:u,fatal:l.length}}(e,{pyClients:t,solver:s,solutionStore:i,onSaveIssueMeasure:r}):void 0;return{baseCost:c-a,topoCost:Date.now()-c,baseMeasures:o,topoMeasures:l,qualityScore:n.qualityScore}},exports.doSimpleRegulate=Yi,exports.encodeFindResource=function(e){const t=e.spartito.perform(),s=e.systems.map(e=>e.staves.map(e=>e?.maskImage)).flat(),i=s.filter(Boolean).length>s.length/2,r={},n=new Map,a=new Map,o=new Map;r.unitSize=e.unitSize,r.title={title:e.title};const c=e.pages[0].tokens;if(Array.isArray(c)&&c.length>0){const[t,...s]=c.filter(e=>e.type===B.Text&&"Title"===e.textType).sort((e,t)=>t.fontSize-e.fontSize);t&&(r.title.title=t.text,r.title.t={size:t.fontSize}),s?.length>0&&(s.sort((e,t)=>e.y-t.y),r.title.subtitle=s.map(e=>e.text).join("\n"),r.title.s={size:s.reduce((e,t)=>e+t.fontSize,0)/s.length});const i=c.filter(t=>t.type===B.Text&&"Author"===t.textType&&t.x>e.pages[0].width/2);i.length>0&&(r.title.composer=i.map(e=>e.text).join("\n"),r.title.c={size:i.reduce((e,t)=>e+t.fontSize,0)/i.length})}if(r.page={w:e.pages[0].width,h:e.pages[0].height},r.pages=e.pages.map(t=>{const s=t.source.dimensions.width/t.source.interval,i=t.source.dimensions.height/t.source.interval,[r,n,a,o]=t.source.matrix;return{src:t.source.url,w:s,h:i,x:0,y:0,l1:e.systems.indexOf(t.systems[0]),ls:t.systems.length,matrix:[r,n,a,o,-.5*r*s+-.5*i*a+.5*t.width||0,-.5*n*s+-.5*i*o+.5*t.height||0]}}),r.parts=[],r.lines=[],i){const t=e.staffLayout.partGroups.map(e=>e.range[0]===e.range[1]?[e.range[0]]:e.range),s=e.getTokenMap(),i=[];for(const[c,l]of t.entries()){const u=t.slice(0,c).flat().length,h={measures:[]};e.systems.forEach((r,m)=>{const f=r.staves.slice(),d=t.flat().map(e=>1<m+1&&(p[m+1]=p[m]);continue}const g=[];for(const e of l){const t=d[e];t&&g.push(...t.measures[m].getChords().map(t=>({chord:t,staffIndexInPart:e-u})))}let y=0;const v=p[m],x=[];g.forEach(({staffIndexInPart:l,chord:u})=>{const h=[];let d=u.tip?u.tip.x:u.right-u.left/2;u.noteIds.forEach((e,i)=>{const r=s.get(e),m=`n_${t.length>1?c+"_":""}${f}_${y}`;y++,n.set(r.id,m),a.set(r.id,(r.left+r.right)/2-v),o.set(r.id,l+1),h.push({line:2*-u.ys[i],id:m,staff:l+1,x:(r.left+r.right)/2-d})}),i[f]=i[f]||[],i[f].push(d-v);const p=e.spartito.measures[r.headMeasureIndex+m].events.filter(e=>e.noteIds.some(e=>u.noteIds.includes(e)));x.push({elems:h,x:d-v,type:2**u.division,...p.some(e=>e.grace)?{grace:{}}:{}})}),h.measures[f]={w:p[m+1]-p[m],staves:l.length,notes:x}}});let m=null;e.spartito.measures.forEach((s,i)=>{const r=e.spartito.measureIndexMapping[i],n=s.contexts.flat().filter(e=>js.includes(e.tokenType)&&l.includes(e.staff)).map(e=>{const s=t.find(t=>t.includes(e.staff));return{x:e.x,clef:Hs(e),staff:s.indexOf(e.staff)+1,tick:e.tick}});n.length>0&&h.measures[r]&&(h.measures[r].clefs=n);const a=s.basics.filter((e,t)=>1<0&&(r.parts[c]=h)}e.systems.forEach((s,i)=>{const n=[],a=s.staves[0],o=s.staves[s.staves.length-1],c=a.top+a.staffY-2,l=o.top+o.staffY-2,u=s.staves.slice(),h=t.flat().map(e=>!(1<h.find(t=>t?.index===e)||null),a=t.map((e,t)=>[t,!e]).filter(e=>e[1]);let o=null;a.length>0&&(o=Object.fromEntries(a.map(e=>[e[0]+1,{hide:e[1]}])));let l=0,u=0;const f=t.filter(e=>!!e);if(f.length>0){const e=f[0],t=f[f.length-1],s=e.top+e.staffY-2,i=t.top+t.staffY-2;l=s-c,u=i-s+4}const{list:d,last:p}=t.reduce((e,t,s)=>(null===e.last||null===t?0===s&&l>0?e.list.push(l-4):e.list.push(0):e.list.push(t.top+t.staffY-(e.last.top+e.last.staffY)-4),e.last=t||e.last,e),{last:m,list:[]});m=p;const g=t.map(e=>{if(e?.maskImage){const t=e.imagePosition;return{src:e.maskImage,x:t.x,y:s.top+e.top+t.y-(s.top+e.top+e.staffY-2),w:t.width,h:t.height}}return null}),y=e.spartito.measures[s.headMeasureIndex];n.push({distances:d,imgs:g,y:l,staves:r.length,parti:i,height:u,...o?{details:o}:{},clef:Object.fromEntries(e.spartito.measures[s.headMeasureIndex]?.contexts.flat().filter(e=>js.includes(e.tokenType)&&r.includes(e.staff)).map(e=>[e.staff,Hs(e)])),fifths:y.basics.filter((e,t)=>1<e.spartito.measureIndexMapping[s.headMeasureIndex+i]).filter(e=>Number.isFinite(e));r.lines[i]={m1:f[0],m2:f.length>0?f[f.length-1]+1:void 0,x:s.left,y:s.top+c,w:s.measureBars[s.measureBars.length-1],h:l-c+4,lineStaves:n}});const c={0:"default",1:"brace",2:"bracket",3:"square"},l=Ee(e.staffLayoutCode),u=l.partGroups.map(e=>({sort:e.range[0],part:e})).sort((e,t)=>e.sort-t.sort).map(e=>e.part);r.groups=l.groups.filter(e=>0!==e.group.type).map((e,t)=>({type:c[e.group.type],p1:u.findIndex(t=>t.range.includes(e.range[0])),p2:u.findIndex(t=>t.range.includes(e.range[e.range.length-1]))})).filter(e=>"default"!==e.type)}let l;if(t&&(r.measInfo=t.notation.measures.map((e,t)=>{const s=new Map;return e.notes.forEach(e=>{s.set(e.tick,[...s.get(e.tick)||[],a.get(e.id)])}),Array.from(s.entries()).sort((e,t)=>+e[0]-t[0]).reduce((e,t,s)=>{const i=t[1].find(t=>t>e.last)||t[1][0];return e.list.push(i),e.last=i,e},{last:null,list:[]}).list.filter(Number.isFinite)})),t){l={};const s=new Map;let i,r;t.notation.measures.forEach((e,t)=>{const{numerator:s,denominator:n}=e.timeSignature;l.beats||l.beatsUnit||(l.beats=s,l.beatsUnit=n,i=s,r=n),l.beatInfos=l.beatInfos||[],i===s&&r===n||(i=s,r=n,l.beatInfos.push({tick:e.tick,beats:s,beatsUnit:n})),l.tempos=l.tempos||[],e.events.forEach(t=>{"meta"===t.data.type&&"setTempo"===t.data.subtype&&l.tempos.push({tick:e.tick,tempo:t.data.microsecondsPerBeat})})}),l.measures=t.notation.measures.reduce((e,t,i)=>{const r=Array.from(new Set(t.notes.map(e=>e.tick))).sort((e,t)=>e-t);return t.notes.forEach(e=>{s.set(e.id,r.indexOf(e.tick))}),e[t.tick]={measure:i,duration:t.duration,note_ticks:r},e},{}),l.measureInfos=t.notation.measures.map((e,t)=>({number:String(t+1),fifths:e.keySignature,beats:e.timeSignature.numerator,beatUnit:e.timeSignature.denominator}));const a=t.notation.toPerformingMIDI(t.notation.measures.map((e,t)=>t+1)).tracks,{partGroups:c}=e.staffLayout;let u=a.map((t,s)=>{const i=c[s].key;let r;switch(i){case"vi":case"vi1":case"vi2":r=40;break;case"viola":r=42;break;case"vo":r=55;break;case"basso":r=71;break;default:r=0}return{program:r,channel:s,name:e.instrumentDict[i]??"Piano",track:t}});if(c.some(e=>e.group.grand)){const t=/l\.?h\.?|左手|left hand/i,s=/r\.?h\.?|右手|right hand/i,i=Object.entries(e.instrumentDict).filter(([e,i])=>t.test(i)||s.test(i)).map(([e,s])=>({key:e,hand:t.test(s)?"left":"right"}));let r,n=null;if(2===i.length&&i[0].hand!==i[1].hand){const t=i.find(e=>"left"===e.hand),s=i.find(e=>"right"===e.hand);n=[e.staffLayout.staffIds.findIndex(e=>e===s?.key),e.staffLayout.staffIds.findIndex(e=>e===t?.key)],r=c.findIndex(e=>e.range[0]<=Math.min(...n)&&e.range[1]>=Math.max(...n))}if(Number.isFinite(r)&&r>-1){const e=u[r],t=[];e.track.forEach(e=>{Number.isFinite(e.staff)&&(t[e.staff]||(t[e.staff]=[]),t[e.staff].push(e)),"meta"===e.type&&t.forEach(t=>{t.push(e)})}),u.splice(r,1,t.filter(Boolean).map(t=>({...e,track:t}))),u=u.flat(),l.rightHandTrack=n[0],l.leftHandTrack=n[1]}else u.sort((e,t)=>e===u[r]?-1:0)}l.tracks=u.map(({program:e,channel:t,name:s})=>({program:e,channel:t,name:s}));const h=u.map(({track:e})=>{const t=new Map;return e.map(e=>{if("noteOn"===e.subtype&&t.set(e.noteNumber,e),"noteOff"===e.subtype){const s=t.get(e.noteNumber);s?.noteNumber===e.noteNumber&&(s.duration=e.ticks-s.ticks)}return e})}),m=new Map(Object.entries(l.measures).map(([e,t])=>[t.measure,+e]));l.events=h.map((e,t)=>e.filter(e=>"channel"===e.type).map(e=>{e?.ids?.[0]&&(e.numId=n.get(e.ids[0]));let i=[0,0,0];switch(e.subtype){case"noteOn":i=[144|e.channel,e.noteNumber,e.velocity];break;case"noteOff":i=[128|e.channel,e.noteNumber,e.velocity?e.velocity:0];break;case"noteAftertouch":i=[160|e.channel,e.noteNumber,e.amount];break;case"controller":i=[176|e.channel,e.controllerType,e.value];break;case"programChange":i=[192|e.channel,e.programNumber,0];break;case"channelAftertouch":i=[208|e.channel,e.amount,0];break;case"pitchBend":i=[224|e.channel,255&e.value,e.value>>7&255];break;default:throw new Error("unhandled event subtype:"+e.subtype)}return{..."noteOn"===e.subtype?{id:n.get(e?.ids?.[0])}:{},tick:e.ticks,channel:e.channel,duration:e.duration,track:t,event:i,elem_ids:e?.ids.map(e=>n.get(e)),measure:e.measure-1,meas_start_tick:m.get(e.measure-1),staff:o.get(e.ids[0]),note:s.get(e.ids[0])}})).flat(1).sort((e,t)=>{for(const s of["tick","measure","track"])if(e[s]!==t[s])return e[s]-t[s];return 0})}return{scoreJson:r,midiJson:l}},exports.evaluateScoreQuality=async(e,t)=>(e.spartito?.regulated||await Yi(e,t),e.spartito.regulated?e.spartito.qualityScore:null),exports.getScoreJsonImages=e=>[...e.pages.map(e=>e?.src),...e.lines.map(e=>e.lineStaves.map(e=>e.imgs)).flat(2).map(e=>e?.src).filter(Boolean)],exports.predictPages=async(e,t,s={outputWidth:1200,pageStore:Ai,onReplaceImage:Pi})=>{const i=e.logger;s.outputWidth=s.outputWidth||1200,s.pageStore=s.pageStore||Ai,s.onReplaceImage=s.onReplaceImage||Pi,s.processes=Array.isArray(s.processes)&&s.processes.length>0?s.processes:["layout","text","gauge","mask","semantic","brackets"];const r=new OMRProgress(s.onProgress),n=Date.now();t.forEach(e=>{e.layout?.detection?e.layout.detection.areas=e.layout.detection?.areas?.filter(e=>e?.staves?.middleRhos?.length>0):delete e.layout});const a=new Score({title:s?.title,stavesCount:2,paperOptions:{raggedLast:!0,raggedLastBottom:!0},headers:{},instrumentDict:{},settings:{enabledGauge:s.processes.includes("gauge"),semanticConfidenceThreshold:1}});i.info(`[predictor]: download_source_images-${t.length}`);const o=await Promise.all(t.map(e=>c.loadImage(e.url)));i.info(`[predictor]: source_images_downloaded-${t.length}`);const l=o.map((e,s)=>function(e,t){let s=e.height/e.width*t;const i=new c.Canvas(t,s);return i.getContext("2d").drawImage(e,0,0,t,t*e.height/e.width),i}(e,t[s].layout?.sourceSize?.width??e.width));r.setTotal("layout",o.length),r.setTotal("text",o.length);const u=await Promise.all(l.map(async(s,i)=>t[i].layout?!t[i].enableGauge&&t[i]?.layout?.detection?.areas?.length?(await e.predictScoreImages("layout$reinforce",[s.toBufferSync("png")],[t[i].layout]))?.[0]:t[i].layout:(await e.predictScoreImages("layout",[s.toBufferSync("png")]))?.[0]));u.forEach(e=>{e.detection.areas=e.detection?.areas?.filter(e=>e?.staves?.middleRhos?.length>0)});const h=new Map,m=async e=>{const t=await s.onReplaceImage(e);h.set(e,t)};async function f(e,i){const{url:n,key:o,layout:u,enableGauge:h}=t[i],m=yi(JSON.stringify({key:o||n,layout:u,enableGauge:h})),f=await s.pageStore.get(m),d=!s.renew&&(f&&!t[i].renew||!e.detection.areas?.length),p=a.pages[i]=d&&f?ae(f,$s):new Page({source:{name:o||("string"==typeof n&&/https?:\/\//.test(n)?n:null),size:0,url:n,crop:{unit:"%",x:0,y:0,width:100,height:100},dimensions:e.sourceSize,matrix:[Math.cos(e.theta),-Math.sin(e.theta),Math.sin(e.theta),Math.cos(e.theta),0,0],interval:e.interval,needGauge:t[i].enableGauge},layout:e.detection}),g=d?null:await async function({page:e,score:t,pageCanvas:s}){if(!e?.layout?.areas?.length)return null;e.width=t.pageSize.width/t.unitSize,e.height=t.pageSize.height/t.unitSize;const i=new c.Canvas(s.width,s.height),r=i.getContext("2d");r.save();const{width:n,height:a}=i,[o,l,u,h]=e.source.matrix;r.setTransform(o,l,u,h,-.5*n+.5*o*n+.5*l*a,-.5*a+.5*u*n+.5*h*a),r.drawImage(s,0,0),r.restore();const m=e.source.interval;return e.layout.areas.map((t,i)=>{console.assert(t.staves?.middleRhos?.length,"[shootImageByDetection] empty area:",t);const n=r.getImageData(t.x,t.y,t.width,t.height),a=new c.Canvas(t.width,t.height);a.getContext("2d").putImageData(n,0,0);const o=t.staves,l={width:t.width,height:t.height},u=s.width/2/m,h=s.height/2/m,f={x:(t.x+t.staves.phi1)/m-u+e.width/2,y:t.y/m-h+e.height/2};e.systems[i]=vi({page:e,backgroundImage:a.toBufferSync("png"),detection:o,imageSize:l,position:f})}),i}({score:a,page:p,pageCanvas:l[i]});return r.increase("layout"),{page:p,omit:d,hash:m,correctCanvas:g}}!function(e,t,s){const i=t.filter(e=>e&&e.detection&&e.detection.areas?.length).map((e,t)=>{const s=Math.min(...e.detection.areas.filter(e=>e.staves?.middleRhos?.length).map(e=>e.staves.interval)),i=e.sourceSize;return{...e,index:t,vw:i.width/s,hwr:i.height/i.width}});if(!i.length)throw new Error("empty result");const r=i.sort((e,t)=>t.vw-e.vw)[0],n=Math.max(...i.map(e=>e.hwr));e.unitSize=s/r.vw,e.pageSize={width:s,height:s*n}}(a,u,s.outputWidth);const d=u.reduce((e,t)=>e+(t.detection.areas?.length??0),0),p=u.reduce((e,t)=>e+(t.detection.areas?.reduce?.((e,t)=>e+(t.staves?.middleRhos?.length??0),0)??0),0);r.setTotal("gauge",p),r.setTotal("mask",p),r.setTotal("semantic",p),r.setTotal("brackets",d);const g=[],y=[],v=Date.now();let x=0;for(const n of u.keys()){const o=[],{page:l,correctCanvas:d,omit:p,hash:v}=await f(u[n],n);if(o.push(m(l.source.url)),o.push(...l.systems.map(e=>m(e.backgroundImage))),i.info(`[predictor]: check_cache_pageIndex-${n} omit: ${p}`),p)y.push(n);else{const u=l.systems.map((e,t)=>e.staves.map((s,i)=>({pageIndex:n,systemIndex:t,staffIndex:i,page:l,system:e,staff:s}))).flat(1);await Mi([async()=>{if(!s.processes.includes("brackets"))return;const t=l.layout,a=l.source.interval,o=Date.now(),u=l.systems.map((e,s)=>{const{x:i,y:r,staves:{middleRhos:n,phi1:o}}=t.areas[s],l=n[0],u=n[n.length-1],h={x:i+o-4*a,y:r+l-4*a,width:8*a,height:u-l+8*a},m=new c.Canvas(64,h.height/a*8);return m.getContext("2d").drawImage(d,h.x,h.y,h.width,h.height,0,0,m.width,m.height),{system:e,buffer:m.toBufferSync("png")}});i.info(`[predictor]: brackets js [pageIndex-${n}] duration: ${Date.now()-o}`);const h=await e.predictScoreImages("brackets",{buffers:u.map(e=>e.buffer)});r.increase("brackets",u.length),u.forEach(({system:e},t)=>{h[t]&&(e.bracketsAppearance=h[t])})},async()=>{if(s.processes.includes("text"))try{const t=Date.now(),o=d.toBufferSync("png"),c=(await e.predictScoreImages("textLoc",[o]))[0].filter(e=>e.score>0);if(c.length>0){const[t]=await e.predictScoreImages("textOcr",{buffers:[o],location:c});l.assignTexts(t.areas,t.imageSize),l.assemble()}if(i.info(`[predictor]: text js [pageIndex-${n}] duration: ${Date.now()-t}`),r.increase("text"),!s.title){const e=a.pages[0].tokens;if(Array.isArray(e)&&e.length>0){const[t]=e.filter(e=>e.type===B.Text&&"Title"===e.textType).sort((e,t)=>t.fontSize-e.fontSize);t&&(a.title=t.text)}}}catch(e){i.error(`[predictor]: text js [pageIndex-${n}] ${JSON.stringify(e)}`)}},async()=>{var c;await(c=async()=>{if(s.processes.includes("gauge")&&!1!==t[n].enableGauge){const t=await e.predictScoreImages("gauge",await Promise.all(u.map(async({staffIndex:e,system:t})=>{const s=Date.now(),r=await Ei(t,e,{paddingLeft:Si,spec:bi});return i.info(`[predictor]: gauge js shoot [page-${n}, staff-${e}] duration: ${Date.now()-s}`),r.toBufferSync("png")})));for(const[s,{system:n,staff:a,pageIndex:c,staffIndex:l}]of u.entries()){const u=Date.now();i.info(`[predictor]: gauge js [page-${c}, staff-${l}] start..`),await Ii({pyClients:e,system:n,staff:a,staffIndex:l,gaugeImage:t[s].image}),i.info(`[predictor]: gauge js [page-${c}, staff-${l}] duration: ${Date.now()-u}`),r.increase("gauge"),o.push(m(a.backgroundImage))}}else for(const[e,{system:t,staff:s,staffIndex:i}]of u.entries())await Ni({system:t,staff:s,staffIndex:i}),o.push(m(s.backgroundImage))},c()),await Mi([async()=>{if(!s.processes.includes("mask"))return;const t=await e.predictScoreImages("mask",u.map(({staff:e})=>e.backgroundImage));for(const[e,{staff:s,staffIndex:a}]of u.entries()){const c=Date.now();await Ci({staff:s,staffIndex:a,maskImage:t[e].image}),i.info(`[predictor]: mask js [page-${n}, ${e}, staff-${a}] duration: ${Date.now()-c}`),r.increase("mask"),o.push(m(s.maskImage))}},async()=>{if(!s.processes.includes("semantic"))return;const t=ae(await e.predictScoreImages("semantic",u.map(({staff:e})=>e.backgroundImage)),$s);u.forEach(({system:e})=>e.clearTokens());for(const[e,{staffIndex:s,system:o,staff:c}]of u.entries()){const l=Date.now();await _i({score:a,system:o,staff:c,staffIndex:s,graph:t[e]}),i.info(`[predictor]: semantic js [page-${n}, system-${o.index}, staff-${c.index}] duration: ${Date.now()-l}`),r.increase("semantic")}}])}]),++x}g.push(Promise.all(o).then(()=>(Oi(l,e=>h.get(e)),i.info(`[predictor]: pageStore set: [${n}]`),s.pageStore.set(v,JSON.stringify(l)))))}const S=Date.now();await Promise.all(g),i.info(`[predictor]: inferenceStaffLayout: ${a.title}, [${a.systems.length}]`),a.inferenceStaffLayout(),i.info(`[predictor]: done: ${a.title}`),a.assemble();const b=Date.now();return{score:a,omitPages:y,stat:{cost:b-n,pagesCost:S-v,pages:x}}},exports.regulateWithBeadSolver=async(e,{logger:t,pickers:s,solutionStore:i=$i,ignoreCache:r,freshOnly:n,onSaveIssueMeasure:a,onProgress:o,onPassStart:c})=>{e.spartito=void 0,e.assemble();const l=e.makeSpartito();l.measures.forEach(t=>e.assignBackgroundForMeasure(t));const u=Date.now();t?.info(`[regulateWithBeadSolver] begin, measure total: ${l.measures.length}.`,r?"ignoreCache":"",n?"freshOnly":"");const h=l.measures.filter(e=>e.events?.length&&!e.patched).map(e=>({origin:e.deepCopy(),current:e,evaluation:void 0,baseQuality:0}));for(const e of l.measures.filter(e=>e.events?.length)){const t=s.find(t=>t.n_seq>e.events.length+1);t&&await Fs(e,t)}l.rectifyTimeSignatures(t),s.forEach(e=>e.cost=0);const m={cached:0,simple:0,computed:0,tryTimes:0,solved:0,issue:0,fatal:0};if(t?.info("[regulateWithBeadSolver] measures estimation finished."),i&&!r)for(const e of h){const t=await i.get(e.origin.regulationHash0);t&&(e.current.applySolution(t),++m.cached,e.evaluation=Ke(e.current),e.baseQuality=e.evaluation.qualityScore)}t?.info("[regulateWithBeadSolver]",`${m.cached}/${h.length}`,"solutions loaded.");const f=t?null:process.stdout;m.cached&&f?.write(`${m.cached}c`),h.forEach(e=>{const i=s.find(t=>t.n_seq>e.current.events.length+1);i?e.picker=i:t?.info(`[regulateWithBeadSolver] measure[${e.current.measureIndex}] size out of range:`,e.current.events.length)});const d=h.filter(e=>e.picker&&(!e.evaluation||!e.evaluation.fine&&!n));d.forEach(e=>{const s=e.current.deepCopy();s.staffGroups=e.current.staffGroups,s.regulate({policy:"simple"});const i=Ke(s);(!e.evaluation||i.qualityScore>e.evaluation.qualityScore)&&(e.evaluation=i,Object.assign(e.current,s),i.perfect&&(t?.info(`[regulateWithBeadSolver] measure[${e.current.measureIndex}] regulated by simple policy.`),++m.simple))}),m.computed=d.length-m.simple,m.simple&&f?.write(`${m.simple}s`);const p=(e,s,i)=>{t?.info(`[regulateWithBeadSolver] measure[${e.measureIndex}/${l.measures.length}] regulated${i?"+":"-"}: ${s.qualityScore.toFixed(3)}, ${s.fine?"solved":s.error?"error":"issue"}, ${e.regulationHash}`),f?.write(`[${s.fine?"32":s.error?"31":"33"}m${i?"+":"-"}`)},g=l.measures.length,y=()=>d.filter(e=>!e.evaluation?.fine).length,v=o?(e,t,s,i)=>{o(e,t,s,{pass:i.pass,remaining:y(),total:g})}:void 0;c?.(1,"Imperfect",y()),m.tryTimes+=await Hi(d,p,f,{stopLoss:.05,quotaMax:200,quotaFactor:3,ptFactor:1},ji.Imperfect,1,v),c?.(2,"NotFine",y()),m.tryTimes+=await Hi(d,p,f,{stopLoss:.08,quotaMax:1e3,quotaFactor:20,ptFactor:1.6},ji.NotFine,2,v),c?.(3,"ErrorOnly",y()),m.tryTimes+=await Hi(d,p,f,{stopLoss:.08,quotaMax:1e3,quotaFactor:40,ptFactor:3},ji.ErrorOnly,3,v),d.forEach(({evaluation:e,baseQuality:t,current:s,origin:r})=>{e.fine?++m.solved:e.error?++m.fatal:++m.issue,(e.qualityScore>t||!t)&&(i.set(r.regulationHash0,{...s.asSolution(r),priority:-s?.solutionStat?.loss}),s.regulationHash!==r.regulationHash0&&i.set(s.regulationHash,{...s.asSolution(),priority:-s?.solutionStat?.loss})),e.fine||a?.({measureIndex:s.measureIndex,measure:new EditableMeasure(s),status:e.error?2:1})});const x=Date.now(),S=s.reduce((e,t)=>e+t.cost,0),b=l.qualityScore,k=x-u;return t?.info("[regulateWithBeadSolver] done in ",k,"ms, qualityScore:",b),n&&(m.cached=0),{totalCost:x-u,pickerCost:S,measures:m,qualityScore:b}},exports.replaceScoreJsonImages=(e,t=e=>e)=>{const s=JSON.parse(JSON.stringify(e));return s.pages.forEach(e=>{e?.src&&(e.src=t(e?.src))}),s.lines.forEach(e=>{e.lineStaves.forEach(e=>{e.imgs.forEach(e=>{e?.src&&(e.src=t(e.src))})})}),s},exports.saveEditableMeasures=async(e,t,s,{status:i=2,solutionStore:r}={})=>{e.assemble();const n=e.spartito||e.makeSpartito(),a=t.map(e=>n.measures.find(t=>t.measureIndex===e)).filter(Boolean);if(r){const e=await r.batchGet(a.map(e=>e.regulationHash0));a.forEach((t,s)=>{const i=e[s];i&&t.applySolution(i)})}a.forEach(e=>{s({measureIndex:e.measureIndex,measure:new EditableMeasure(e),status:i})})},exports.starry=$s,exports.updateScorePatches=(e,t,s={})=>{if(console.assert(t.every(e=>e.validRegulated),"[updateScorePatches] some measures not valid regulated:",t.filter(e=>!e.validRegulated)),e.patches=t.map(e=>e.createPatch()),s?.solutionStore){e.assemble();const i=e.makeSpartito();t.forEach(e=>{if(s.solutionStore.set(e.regulationHash,{...e.asSolution(),priority:1}),e.regulationHash0!==e.regulationHash){const t=i.measures.find(t=>t.measureIndex===e.measureIndex);s.solutionStore.set(e.regulationHash0,{...e.asSolution(t),priority:1})}})}}; //# sourceMappingURL=index.js.map diff --git a/backend/omr/dist/index.js.map b/backend/omr/dist/index.js.map index 8a91fb64619e660a680dec280da13a1db92f4ccc..909551468b53d2924bc7218d2f65378ffa644fea 100644 --- a/backend/omr/dist/index.js.map +++ b/backend/omr/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../../../src/starry/interfaces.ts","../../../src/starry/semanticPoint.ts","../../libs/browserComponents.ts","../../../src/starry/token.ts","../../../src/starry/aux_/typedJSON.ts","../../../src/measureLayout/measureLayout.ts","../../../src/measureLayout/grammar.jison.js","../../../src/staffLayout/staffLayout.ts","../../../src/staffLayout/grammar.jison.js","../../../src/staffLayout/parser.ts","../../../src/starry/logger.ts","../../../src/starry/utils.ts","../../../src/starry/term.ts","../../../src/starry/measureEvaluator.ts","../../../src/starry/semanticGraph.ts","../../../src/starry/scoreComponents.ts","../../../src/starry/semanticTopology.ts","../../../src/performer/types.ts","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/midifile.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/stream.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/midifileEx.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/streamEx.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/index.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiSequence.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MusicNotation.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiPlayer.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/config.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/node.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/navigator.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/index.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiUtils.js","../../../node_modules/@k-l-lambda/music-widgets/index.js","../../../src/performer/notation.ts","../../../node_modules/crypto-js/core.js","../../../node_modules/crypto-js/sha256.js","../../../src/starry/hashVector.ts","../../../node_modules/matrix-inverse/matrix-inverse.js","../../../src/starry/equationSolver.ts","../../../src/starry/eventTopology.ts","../../../src/starry/spartitoMeasure.ts","../../../src/starry/patch.ts","../../../src/starry/spartito.ts","../../../src/starry/staffContext.ts","../../../src/starry/score.ts","../../../src/measureLayout/parser.ts","../../../src/starry/editableMeasure.ts","../../../src/starry/beadSolver.ts","../../../src/isomorphic/converter.ts","../../../node_modules/events/events.js","../../libs/async-queue.ts","../../libs/ZeroClient.ts","../../libs/PyProcessor.ts","../../../node_modules/util/support/isBuffer.js","../../../node_modules/util/node_modules/inherits/inherits_browser.js","../../../node_modules/util/node_modules/inherits/inherits.js","../../../node_modules/util/util.js","../../libs/predictors.ts","../../../node_modules/crypt/crypt.js","../../../node_modules/charenc/charenc.js","../../../node_modules/sha1/sha1.js","../../libs/util.ts","../../libs/predictPages.ts","../../../src/starry/measureRectification.ts","../../libs/store.ts","../../libs/regulationBead.ts","../../libs/regulation.ts","../src/index.ts"],"sourcesContent":["import { MetaNotation, TokenPosition } from '../performer';\nimport { Term, EventTerm, ContextedTerm, ChordmodeTerm, MarkTerm, Accessory, GraceType, TremoloLink } from './term';\nimport { HashVector } from './hashVector';\nimport { StaffLayout } from '../staffLayout';\nimport * as measureLayout from '../measureLayout';\n\ninterface Rect {\n\tx: number;\n\ty: number;\n\twidth: number;\n\theight: number;\n}\n\ninterface ChordRect {\n\tx: number;\n\tstemX: number;\n\twidth: number;\n\ttop: number;\n\tbottom: number;\n\tstemDirection: string;\n\ttip?: { x: number; y: number };\n}\n\ninterface VLine {\n\tx: number;\n\ty1: number;\n\ty2: number;\n}\n\ninterface Fraction {\n\tnumerator: number;\n\tdenominator: number;\n}\n\ntype DivisionVecotor = [number, number, number, number, number, number, number, number, number]; // [0, 1, 2, 3, 4, 5, 6, 7, 8]\n\ntype MeasureBarType = null | 'Terminal' | 'Segment' | 'VoltaRight';\n\ninterface EventFeature {\n\tdivisions: DivisionVecotor;\n\tdots: [number, number]; // [1, 2]\n\tbeams: [number, number, number]; // ['Open', 'Continue', 'Close']\n\tstemDirections: [number, number]; // ['u', 'd']\n\tgrace: number;\n\ttremoloCatcher: number;\n}\n\ninterface EventPredisposition {\n\tgrace: boolean;\n\ttimeWarped: number;\n\tfullMeasure: number;\n\tfake: number;\n\tfakeP: number;\n\ttick: number;\n\tdivision: number;\n\tdots: number;\n\tdivisionVector: DivisionVecotor;\n\tdotsVector: [number, number, number]; // [0, 1, 2]\n\tbeamVector: [number, number, number, number]; // [null, open, continue, close]\n\tstemDirectionVector: [number, number, number]; // [null, up, down]\n}\n\ninterface ChordColumn {\n\tleft: number;\n\tright: number;\n\tpivotX: number;\n\tys: number[];\n\tnoteIds: string[]; // order by upwards\n\tdivision: number;\n\tdots: number;\n\trest: boolean;\n\tstemDirection: string;\n\taccessories?: Accessory[];\n\tgrace?: GraceType;\n\ttremolo?: number;\n\ttremoloLink?: TremoloLink;\n\tbeam?: string;\n\ttip?: { x: number; y: number };\n\n\t//stemTipY?: number;\n\n\t// for topology\n\tstaff?: number;\n\tid?: number;\n\tprevId?: number;\n\ttickGroup?: number;\n\n\tfeature?: EventFeature;\n}\n\ninterface EventMeasure {\n\tevents: EventTerm[];\n\tcontexts: ContextedTerm[];\n}\n\ninterface StaffBasic {\n\ttimeSignature: Fraction;\n\ttimeSigNumeric: boolean;\n\tkeySignature: number;\n\tdoubtfulTimesig: boolean;\n}\n\ninterface EventMeasureColumn {\n\tmeasureIndex: number;\n\t//startX: number;\n\t//width: number;\n\n\trows: EventMeasure[]; // [staff]\n\tmarks: MarkTerm[];\n\tduration: number;\n\n\tvoices?: number[][]; // [voice, id]\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbasics?: StaffBasic[]; // [staff]\n\txMap?: Map;\n\tregularLoss?: number;\n\tvoltaBegin: boolean;\n\tvoltaEnd: boolean;\n\talternative: boolean;\n\tbarTypes: Record;\n}\n\ninterface EventSystem {\n\tstaffMask: number;\n\tcolumns: EventMeasureColumn[]; // [measure]\n}\n\ninterface TermMeasure extends Partial {\n\tterms: Term[];\n\tduration: number;\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n}\n\ntype TermRow = TermMeasure[];\n\ninterface TermStaff {\n\trows: TermRow[]; // [system]\n}\n\ninterface Pitch {\n\tnote: number;\n\talter: number;\n}\n\nenum PageLayoutMethod {\n\tByLines = 'ByLines',\n\tByBlocks = 'ByBlocks',\n}\n\ninterface RecognitionSettings {\n\tenabledGauge: boolean; // staves straighten\n\tpageLayoutMethod: PageLayoutMethod;\n\tsemanticConfidenceThreshold: number;\n}\n\ninterface Crop {\n\taspect?: number | undefined;\n\tx?: number | undefined;\n\ty?: number | undefined;\n\twidth?: number | undefined;\n\theight?: number | undefined;\n\tunit?: 'px' | '%' | undefined;\n}\n\n//\t0 2 4\t\t\tr r tx\n//\t1 3 5\t\t\tr r ty\ntype Matrix2x3 = [number, number, number, number, number, number];\n\ninterface SourceImageFile {\n\tname: string;\n\tsize: number;\n\turl: string;\n\tcrop?: Crop;\n\tmatrix: Matrix2x3;\n\tdimensions: {\n\t\twidth: number;\n\t\theight: number;\n\t};\n\tinterval: number;\n\tneedGauge?: boolean;\n}\n\ninterface Area extends Rect {\n\tstaves: {\n\t\tinterval: number;\n\t\tmiddleRhos: number[];\n\t\tphi1: number;\n\t\tphi2: number;\n\t};\n}\n\ninterface PageLayout {\n\tareas: Area[];\n}\n\ninterface MeasureBrief {\n\ttimeSignature: Fraction;\n}\n\ninterface VoiceMeasure {\n\ttickMap: { [key: number]: EventTerm | ChordmodeTerm };\n\tduration: number;\n\n\ttimeSignature?: Fraction;\n\ttimeSigNumeric?: boolean;\n\tkeySignature?: number;\n\n\tcontextedTerms: ContextedTerm[];\n\tmarks: MarkTerm[];\n\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbar?: string;\n\n\tempty?: boolean;\n\n\theadStaff?: number;\n\ttailStaff?: number;\n\n\ttrait?: HashVector;\n\tvoiceIndex?: number;\n}\n\ninterface TermVoice {\n\tmode: string;\n\tmeasures: VoiceMeasure[];\n}\n\ninterface VoicesStaff {\n\tcontext?: string;\n\tname?: string;\n\tvoices: TermVoice[];\n}\n\ninterface PaperOptions {\n\traggedLast: boolean;\n\traggedBottom: boolean;\n\traggedLastBottom: boolean;\n\tslashSystemSeparator: boolean;\n}\n\ninterface MusicHeaders {\n\ttitle: string;\n\tsubtitle: string;\n\tsubsubtitle: string;\n\tcomposer: string;\n\tpoet: string;\n\tarranger: string;\n\topus: string;\n\tcopyright: string;\n\tinstrument: string;\n\tdedication: string;\n\ttagline: string;\n}\n\ninterface MusicSheet {\n\ttitle: string;\n\tpageSize: {\n\t\t// in pixels\n\t\twidth: number;\n\t\theight: number;\n\t};\n\tunitSize: number;\n\tmeasureLayout?: measureLayout.MeasureLayout;\n\tstaffLayout: StaffLayout;\n\tpaperOptions?: Partial;\n\theaders: Partial;\n\n\tvoiceStaves: VoicesStaff[];\n\tinstrumentDict: { [key: string]: string };\n}\n\ninterface Performing {\n\tnotation: MetaNotation;\n\ttokenMap: Map;\n}\n\ntype RegulationPolicy = 'test' | 'simple' | 'equations' | 'advanced';\n\ninterface RegulationOptions {\n\tpolicy?: RegulationPolicy;\n\tquota?: number;\n\t[key: string]: any;\n}\n\ninterface ScoreData {\n\tversion?: number;\n\t[key: string]: any;\n}\n\ninterface AdditionalLineStack {\n\tleft: number;\n\tright: number;\n\tn: number;\n}\n\ninterface RegulationSolutionEvent {\n\tid: number;\n\ttick: number;\n\ttickGroup: number;\n\ttimeWarp: Fraction;\n\tdivision?: number;\n\tdots?: number;\n\tbeam?: string;\n\tgrace?: boolean;\n\tfullMeasure?: boolean;\n}\n\ninterface RegulationSolution {\n\tevents: RegulationSolutionEvent[];\n\tvoices: number[][];\n\tduration: number;\n\tpriority?: number;\n\testimatedDuration?: number;\n\ttimeSignature?: Fraction;\n}\n\ninterface BackgroundImage {\n\turl: string;\n\tposition: Rect;\n\toriginal?: boolean;\n}\n\nenum TextType { //\tLEVEL\t\t\tCHARSET\n\tTitle = 'Title', // page\t\t\t\tgeneral\n\tAuthor = 'Author', // page\t\t\t\tgeneral\n\tTempoText = 'TempoText', // measure\t\t\tspecific vocabulary\n\tTempoNumeral = 'TempoNumeral', // measure\t\t\tsymbolic and numeric\n\tTextualMark = 'TextualMark', // term\t\t\t\tspecific vocabulary\n\tLyric = 'Lyric', // term\t\t\t\tgeneral\n\tInstrument = 'Instrument', // system\t\t\tspecific vocabulary\n\tMeasureNumber = 'MeasureNumber', // system\t\t\tnumeric\n\tTimes = 'Times', // staff\t\t\tnumeric\n\tAlternation1 = 'Alternation1', // measure\t\t\tnumeric\n\tAlternation2 = 'Alternation2', // measure\t\t\tnumeric\n\tChord = 'Chord', // measure\t\t\tspecific domian\n\tPageMargin = 'PageMargin', // page\t\t\t\tgeneral\n\tOther = 'Other', // page\t\t\t\tgeneral\n}\n\nexport {\n\tRect,\n\tChordRect,\n\tVLine,\n\tFraction,\n\tMeasureBarType,\n\tEventFeature,\n\tEventPredisposition,\n\tChordColumn,\n\tEventMeasure,\n\tEventMeasureColumn,\n\tEventSystem,\n\tTermMeasure,\n\tTermRow,\n\tTermStaff,\n\tPitch,\n\tPageLayoutMethod,\n\tRecognitionSettings,\n\tSourceImageFile,\n\tPageLayout,\n\tStaffBasic,\n\tVoiceMeasure,\n\tVoicesStaff,\n\tTermVoice,\n\tMeasureBrief,\n\tAdditionalLineStack,\n\tTextType,\n\tMusicSheet,\n\tPerforming,\n\tRegulationOptions,\n\tScoreData,\n\tMusicHeaders,\n\tMatrix2x3,\n\tRegulationSolutionEvent,\n\tRegulationSolution,\n\tBackgroundImage,\n};\n","import sha1 from 'js-sha1';\n\nenum SemanticType {\n\t// clefs\n\tClefG = 'ClefG',\n\tClefF = 'ClefF',\n\tClefC = 'ClefC',\n\n\t// noteheads\n\tNoteheadS0 = 'NoteheadS0',\n\tNoteheadS1 = 'NoteheadS1',\n\tNoteheadS2 = 'NoteheadS2',\n\tNoteheadS1stemU = 'NoteheadS1stemU',\n\tNoteheadS1stemD = 'NoteheadS1stemD',\n\tNoteheadS2stemU = 'NoteheadS2stemU',\n\tNoteheadS2stemD = 'NoteheadS2stemD',\n\n\tvline_Stem = 'vline_Stem',\n\n\t// flags\n\tFlag3 = 'Flag3',\n\n\t// beams\n\tBeamLeft = 'BeamLeft',\n\tBeamContinue = 'BeamContinue',\n\tBeamRight = 'BeamRight',\n\n\t// tremolos\n\tTremoloLeft = 'TremoloLeft',\n\tTremoloRight = 'TremoloRight',\n\tTremoloMiddle = 'TremoloMiddle',\n\n\t// dots (duration)\n\tDot = 'Dot',\n\n\t// rests\n\tRest0 = 'Rest0',\n\tRest1 = 'Rest1',\n\tRest2 = 'Rest2',\n\tRest3 = 'Rest3',\n\tRest4 = 'Rest4',\n\tRest5 = 'Rest5',\n\tRest6 = 'Rest6',\n\tRest0W = 'Rest0W', // capital 'R' in lilypond\n\tRestM1 = 'RestM1',\n\n\t// accidentals\n\tAccNatural = 'AccNatural',\n\tAccSharp = 'AccSharp',\n\tAccDoublesharp = 'AccDoublesharp',\n\tAccFlat = 'AccFlat',\n\tAccFlatflat = 'AccFlatflat',\n\n\t// volta\n\tvline_VoltaLeft = 'vline_VoltaLeft',\n\tvline_VoltaRight = 'vline_VoltaRight',\n\tVoltaLeft = 'VoltaLeft',\n\tVoltaRight = 'VoltaRight',\n\n\tVoltaAlternativeBegin = 'VoltaAlternativeBegin',\n\t//VoltaAlternativeEnd\t= \"VoltaAlternativeEnd\",\n\n\t// vertical bars\n\tBarMeasure = 'BarMeasure',\n\tvline_BarMeasure = 'vline_BarMeasure',\n\tvline_BarTerminal = 'vline_BarTerminal',\n\tvline_BarSegment = 'vline_BarSegment',\n\n\t// slur & tie\n\tSlurBegin = 'SlurBegin',\n\tSlurEnd = 'SlurEnd',\n\n\t// time signature\n\tTimesigC44 = 'TimesigC44',\n\tTimesigC22 = 'TimesigC22',\n\tTimesigZero = 'TimesigZero',\n\tTimesigOne = 'TimesigOne',\n\tTimesigTwo = 'TimesigTwo',\n\tTimesigThree = 'TimesigThree',\n\tTimesigFour = 'TimesigFour',\n\tTimesigFive = 'TimesigFive',\n\tTimesigSix = 'TimesigSix',\n\tTimesigSeven = 'TimesigSeven',\n\tTimesigEight = 'TimesigEight',\n\tTimesigNine = 'TimesigNine',\n\n\t// octave shifts\n\tOctaveShift8va = 'OctaveShift8va',\n\tOctaveShift8vb = 'OctaveShift8vb',\n\tOctaveShift8 = 'OctaveShift8',\n\tOctaveShift0 = 'OctaveShift0',\n\n\t// numbers\n\tZero = 'Zero',\n\tOne = 'One',\n\tTwo = 'Two',\n\tThree = 'Three',\n\tFour = 'Four',\n\tFive = 'Five',\n\tSix = 'Six',\n\tSeven = 'Seven',\n\tEight = 'Eight',\n\tNine = 'Nine',\n\n\t// dynamics\n\tf = 'f',\n\tp = 'p',\n\tm = 'm',\n\tn = 'n',\n\tr = 'r',\n\ts = 's',\n\tz = 'z',\n\n\tCrescendoBegin = 'CrescendoBegin',\n\tCrescendoEnd = 'CrescendoEnd',\n\tDecrescendoBegin = 'DecrescendoBegin',\n\tDecrescendoEnd = 'DecrescendoEnd',\n\n\t// scripts\n\tScriptFermata = 'ScriptFermata',\n\tScriptShortFermata = 'ScriptShortFermata',\n\tScriptSforzato = 'ScriptSforzato',\n\tScriptStaccato = 'ScriptStaccato',\n\tScriptStaccatissimo = 'ScriptStaccatissimo',\n\tScriptTurn = 'ScriptTurn',\n\tScriptTrill = 'ScriptTrill',\n\tScriptSegno = 'ScriptSegno',\n\tScriptCoda = 'ScriptCoda',\n\tScriptArpeggio = 'ScriptArpeggio',\n\tScriptPrall = 'ScriptPrall',\n\tScriptMordent = 'ScriptMordent',\n\tScriptMarcato = 'ScriptMarcato',\n\tScriptTenuto = 'ScriptTenuto',\n\tScriptPortato = 'ScriptPortato',\n\n\t// pedal\n\tPedalStar = 'PedalStar',\n\tPedalPed = 'PedalPed',\n\n\t// additional annotation\n\tKeyAcc = 'KeyAcc',\n\tTempoNotehead = 'TempoNotehead',\n\tGraceNotehead = 'GraceNotehead',\n\tSignLined = 'SignLined',\n\tSignInterval = 'SignInterval',\n\n\trect_Text = 'rect_Text',\n\trect_Lyric = 'rect_Lyric',\n}\n\nconst glyphSemanticMapping: { [key: string]: string } = {\n\t'rests.1': 'Rest1',\n\t'rests.0o': 'Rest0',\n\t'rests.1o': 'Rest1',\n\t'rests.M1': 'RestM1',\n\t'rests.2': 'Rest2',\n\t'rests.3': 'Rest3',\n\t'rests.4': 'Rest4',\n\t'rests.5': 'Rest5',\n\t'rests.6': 'Rest6',\n\t'accidentals.sharp': 'AccSharp',\n\t'accidentals.doublesharp': 'AccDoublesharp',\n\t'accidentals.natural': 'AccNatural',\n\t'accidentals.flat': 'AccFlat',\n\t'accidentals.flatflat': 'AccFlatflat',\n\t'dots.dot': 'Dot',\n\t'scripts.ufermata': 'ScriptFermata',\n\t'scripts.dfermata': 'ScriptFermata',\n\t'scripts.ushortfermata': 'ScriptShortFermata',\n\t'scripts.dshortfermata': 'ScriptShortFermata',\n\t'scripts.staccato': 'ScriptStaccato',\n\t'scripts.ustaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.dstaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.turn': 'ScriptTurn',\n\t'scripts.trill': 'ScriptTrill',\n\t'scripts.segno': 'ScriptSegno',\n\t'scripts.coda': 'ScriptCoda',\n\t'scripts.arpeggio': 'ScriptArpeggio',\n\t'scripts.prall': 'ScriptPrall',\n\t'scripts.mordent': 'ScriptMordent',\n\t'scripts.umarcato': 'ScriptMarcato',\n\t'scripts.dmarcato': 'ScriptMarcato',\n\t'scripts.uportato': 'ScriptPortato',\n\t'scripts.dportato': 'ScriptPortato',\n\t'scripts.tenuto': 'ScriptTenuto',\n\t'scripts.sforzato': 'ScriptSforzato',\n\t'clefs.C': 'ClefC',\n\t'clefs.F': 'ClefF',\n\t'clefs.G': 'ClefG',\n\t'clefs.F_change': 'ClefF',\n\t'clefs.G_change': 'ClefG',\n\t'timesig.C44': 'TimesigC44',\n\t'timesig.C22': 'TimesigC22',\n\t'pedal.*': 'PedalStar',\n\t'pedal.Ped': 'PedalPed',\n\t'noteheads.s0': 'NoteheadS0',\n\t'noteheads.s1': 'NoteheadS1',\n\t'noteheads.s2': 'NoteheadS2',\n\tf: 'f',\n\tm: 'm',\n\tp: 'p',\n\tr: 'r',\n\ts: 's',\n\tz: 'z',\n};\n\nconst semanticPriorities: { [key: string]: number } = {\n\tClefG: 0,\n\tClefF: 0,\n\tTimesigFour: 0,\n\tTimesigThree: 0,\n\tTimesigTwo: 0,\n\tNoteheadS0: 0,\n\tNoteheadS1: 0,\n\tNoteheadS2: 0,\n\tDot: 0,\n\tvline_BarMeasure: 0,\n\tvline_Stem: 0,\n\tFlag3: 0,\n\n\tTimesigC44: 1,\n\tTimesigC22: 1,\n\tTimesigEight: 1,\n\tTimesigSix: 1,\n\tAccNatural: 1,\n\tAccSharp: 1,\n\tAccFlat: 1,\n\tKeyAcc: 1,\n\tRest0: 1,\n\tRest1: 1,\n\tRest2: 1,\n\tRest3: 1,\n\tRest4: 1,\n\tOctaveShift8: 1,\n\tOctaveShift0: 1,\n\n\tAccDoublesharp: 2,\n\tAccFlatflat: 2,\n\tTimesigOne: 2,\n\tTimesigNine: 2,\n\tRest5: 2,\n\tRest6: 2,\n\tSlurBegin: 2,\n\tSlurEnd: 2,\n\tVoltaLeft: 2,\n\tVoltaRight: 2,\n\t//VoltaAlternativeBegin: 2,\n\tvline_BarTerminal: 2,\n\tvline_BarSegment: 2,\n\tTempoNotehead: 2,\n\tGraceNotehead: 2,\n\tSignLined: 2,\n\tSignInterval: 2,\n\tBeamLeft: 2,\n\tBeamRight: 2,\n\tBeamContinue: 2,\n\tTremoloLeft: 2,\n\tTremoloRight: 2,\n\tTremoloMiddle: 2,\n\tStemTip: 2,\n\tStemHead: 2,\n\n\t//Rest0W: 3,\n\tf: 3,\n\tp: 3,\n\tm: 3,\n\tScriptFermata: 3,\n\tScriptSforzato: 3,\n\tScriptStaccato: 3,\n\tScriptStaccatissimo: 3,\n\tScriptTurn: 3,\n\tScriptTrill: 3,\n\tScriptSegno: 3,\n\tScriptCoda: 3,\n\tScriptArpeggio: 3,\n\tScriptPrall: 3,\n\tScriptMordent: 3,\n\tScriptTenuto: 3,\n\tPedalStar: 3,\n\tPedalPed: 3,\n\tTimesigFive: 3,\n\tTimesigSeven: 3,\n\tTimesigZero: 3,\n\tOne: 3,\n\tTwo: 3,\n\tThree: 3,\n\tFour: 3,\n\tFive: 3,\n\trect_Text: 3,\n\trect_Lyric: 3,\n\tCrescendoBegin: 3,\n\tCrescendoEnd: 3,\n\tDecrescendoBegin: 3,\n\tDecrescendoEnd: 3,\n\n\tRestM1: 4,\n\tClefC: 4,\n\tScriptShortFermata: 4,\n\tScriptMarcato: 4,\n\tScriptPortato: 4,\n\ts: 4,\n\tr: 4,\n\tz: 4,\n\tZero: 4,\n\tSix: 4,\n\tSeven: 4,\n\tEight: 4,\n\tNine: 4,\n};\n\ninterface Position {\n\tx?: number;\n\ty?: number;\n}\n\nconst NOTEHEAD_WIDTHS = {\n\tNoteheadS0: 0.913 * 2,\n\tNoteheadS1: 0.632 * 2,\n\tNoteheadS2: 0.599 * 2,\n};\n\nconst glyphCenters: { [key: string]: Position } = {\n\t//\"clefs.C\": { x: 1.3 },\n\t'clefs.F': { x: 1.06 },\n\t'clefs.G': { x: 1.3 },\n\t'clefs.F_change': { x: 0.87 },\n\t'clefs.G_change': { x: 1.07 },\n\t'timesig.C44': { x: 0.9 },\n\t'timesig.C22': { x: 0.9 },\n\tzero: { x: 0.7, y: -1 },\n\tone: { x: 0.7, y: -1 },\n\ttwo: { x: 0.7, y: -1 },\n\tthree: { x: 0.7, y: -1 },\n\tfour: { x: 0.7, y: -1 },\n\tfive: { x: 0.7, y: -1 },\n\tsix: { x: 0.7, y: -1 },\n\tseven: { x: 0.7, y: -1 },\n\teight: { x: 0.7, y: -1 },\n\tnine: { x: 0.7, y: -1 },\n\t'accidentals.sharp': { x: 0.55 },\n\t'accidentals.doublesharp': { x: 0.5 },\n\t'accidentals.natural': { x: 0.3 },\n\t'accidentals.flat': { x: 0.3 },\n\t'accidentals.flatflat': { x: 0.5 },\n\t'noteheads.s0': { x: NOTEHEAD_WIDTHS.NoteheadS0 / 2 },\n\t'noteheads.s1': { x: NOTEHEAD_WIDTHS.NoteheadS1 / 2 },\n\t'noteheads.s2': { x: NOTEHEAD_WIDTHS.NoteheadS2 / 2 },\n\t'rests.0': { x: 0.75, y: 1 },\n\t'rests.1': { x: 0.75 },\n\t'rests.0o': { x: 0.75, y: 1 },\n\t'rests.1o': { x: 0.75 },\n\t'rests.M1': { x: 0.75, y: 1 },\n\t'rests.2': { x: 0.5 },\n\t'rests.3': { x: 0.5 },\n\t'rests.4': { x: 0.5 },\n\t'rests.5': { x: 0.5 },\n\t'rests.6': { x: 0.5 },\n\tf: { x: 0.6, y: -0.5 },\n\tm: { x: 0.9, y: -0.5 },\n\tp: { x: 0.5, y: -0.5 },\n\tr: { x: 0.5, y: -0.5 },\n\ts: { x: 0.5, y: -0.5 },\n\tz: { x: 0.5, y: -0.5 },\n\t'scripts.trill': { y: -0.5 },\n\t'scripts.segno': { x: 0, y: 0 },\n\t'scripts.coda': { x: 0, y: 0 },\n\t'scripts.arpeggio': { x: 0.5, y: -0.5 },\n\t'pedal.*': { x: 0.78, y: -0.78 },\n\t'pedal.Ped': { x: 1.6, y: -0.7 },\n};\n\ninterface Point {\n\t// in staff unit coordinates\n\tx: number;\n\ty: number;\n\n\tpivotX?: number;\n\n\t// for prediction\n\tconfidence?: number;\n\n\t// sheet token index in page\n\tindex?: number;\n\ttag?: string;\n\n\textension?: {\n\t\ty1?: number;\n\t\ty2?: number;\n\n\t\thref?: string;\n\t\twidth?: number;\n\t\theight?: number;\n\n\t\ttext?: string;\n\t\ttheta?: number;\n\t\ttype?: string;\n\t\ttextFeature?: Record;\n\t};\n}\n\ninterface SemanticPoint extends Point {\n\tid?: string;\n\tsemantic: SemanticType;\n}\n\nconst ONE_D_SEMANTICS = [\n\t'OctaveShift8va',\n\t'OctaveShift8vb',\n\t'OctaveShift8',\n\t'OctaveShift0',\n\t'vline_VoltaLeft',\n\t'vline_VoltaRight',\n\t'VoltaAlternativeBegin',\n\t'vline_BarMeasure',\n\t'vline_BarTerminal',\n\t'vline_BarSegment',\n];\n\nconst SYSTEM_SEMANTIC_TYPES = [\n\tSemanticType.BarMeasure,\n\tSemanticType.vline_BarMeasure,\n\tSemanticType.vline_BarTerminal,\n\tSemanticType.vline_BarSegment,\n\tSemanticType.vline_VoltaLeft,\n\tSemanticType.vline_VoltaRight,\n\tSemanticType.VoltaAlternativeBegin,\n];\n\nconst st = SemanticType;\nconst CONFLICTION_GROUPS = [\n\t[st.NoteheadS0, st.NoteheadS1, st.NoteheadS2],\n\t[st.Zero, st.One, st.Two, st.Three, st.Four, st.Five, st.Six, st.Seven, st.Eight, st.Nine, st.ScriptStaccatissimo],\n\t[\n\t\tst.TimesigZero,\n\t\tst.TimesigOne,\n\t\tst.TimesigTwo,\n\t\tst.TimesigThree,\n\t\tst.TimesigFour,\n\t\tst.TimesigFive,\n\t\tst.TimesigSix,\n\t\tst.TimesigSeven,\n\t\tst.TimesigEight,\n\t\tst.TimesigNine,\n\t],\n\t[st.Rest0, st.Rest1, st.Rest2, st.Rest3, st.Rest4, st.Rest5, st.Rest6, st.Rest0W, st.RestM1],\n\t[st.SignInterval, st.SignLined],\n\t[st.BeamLeft, st.BeamContinue, st.BeamRight],\n];\n\nconst STAMP_SEMANTICS = [\n\tst.ClefG,\n\tst.ClefF,\n\tst.ClefC,\n\tst.NoteheadS0,\n\tst.NoteheadS1,\n\tst.NoteheadS2,\n\tst.Dot,\n\tst.Rest0,\n\tst.Rest1,\n\tst.Rest2,\n\tst.Rest3,\n\tst.Rest4,\n\tst.Rest5,\n\tst.Rest6,\n\tst.RestM1,\n\tst.AccNatural,\n\tst.AccSharp,\n\tst.AccDoublesharp,\n\tst.AccFlat,\n\tst.AccFlatflat,\n\tst.TimesigC44,\n\tst.TimesigC22,\n\tst.TimesigZero,\n\tst.TimesigOne,\n\tst.TimesigTwo,\n\tst.TimesigThree,\n\tst.TimesigFour,\n\tst.TimesigFive,\n\tst.TimesigSix,\n\tst.TimesigSeven,\n\tst.TimesigEight,\n\tst.TimesigNine,\n\tst.One,\n\tst.Two,\n\tst.Three,\n\tst.Four,\n\tst.Five,\n\tst.OctaveShift8,\n\t//st.OctaveShift15,\n\tst.OctaveShift0,\n\tst.f,\n\tst.p,\n\tst.m,\n\tst.n,\n\tst.r,\n\tst.s,\n\tst.z,\n\tst.ScriptFermata,\n\tst.ScriptShortFermata,\n\tst.ScriptSforzato,\n\tst.ScriptStaccato,\n\tst.ScriptStaccatissimo,\n\tst.ScriptTurn,\n\tst.ScriptTrill,\n\tst.ScriptSegno,\n\tst.ScriptCoda,\n\tst.ScriptArpeggio,\n\tst.ScriptPrall,\n\tst.ScriptMordent,\n\tst.ScriptMarcato,\n\tst.ScriptTenuto,\n\tst.ScriptPortato,\n\tst.PedalStar,\n\tst.PedalPed,\n];\n\n// [cx, cy, width, height]\nconst STAMP_RECTS = {\n\tClefG: [-0.0625, -1.125, 3.6, 8.6],\n\tClefF: [0.25, 0.5625, 3.6, 3.8],\n\tClefC: [0.25, 0, 3.25, 4.5],\n\tNoteheadS0: [0.0625, 0, 2.55, 1.4],\n\tNoteheadS1: [0.0625, 0, 1.8, 1.4],\n\tNoteheadS2: [0.0625, -0.0625, 1.65, 1.35],\n\tDot: [0.25, 0, 0.6, 0.6],\n\tRest0: [0, -0.75, 3.25, 0.9],\n\tRest1: [0, -0.25, 3.25, 0.9],\n\tRest2: [-0.0625, -0.1875, 1.6, 3.375],\n\tRest3: [0, 0.0625, 1.2, 2.25],\n\tRest4: [0.0625, 0.5625, 1.65, 3.375],\n\tRest5: [0.0625, 0.0625, 1.95, 4.375],\n\tRest6: [0.0625, 0.5625, 1.95, 5.375],\n\tRestM1: [-0.4375, -1.5, 0.75, 1.2],\n\tAccNatural: [0, 0, 0.9, 3.5],\n\tAccSharp: [0, 0, 1.5, 3.5],\n\tAccDoublesharp: [0, 0, 1.5, 1.5],\n\tAccFlat: [0, -0.5625, 1.2, 3.125],\n\tAccFlatflat: [0.1875, -0.5625, 1.95, 3.125],\n\tTimesigC44: [-0.0625, 0, 2.25, 2.3],\n\tTimesigC22: [-0.0625, 0, 2.25, 3.2],\n\tTimesigZero: [0, 0, 1.8, 2.2],\n\tTimesigOne: [-0.125, 0, 1.5, 2.2],\n\tTimesigTwo: [0, 0, 2.2, 2.2],\n\tTimesigThree: [-0.0625, 0, 1.9, 2.4],\n\tTimesigFour: [0.0625, 0, 1.95, 2.2],\n\tTimesigFive: [0, 0, 1.8, 2.3],\n\tTimesigSix: [0, 0, 2.0, 2.4],\n\tTimesigSeven: [0, 0, 1.8, 2.2],\n\tTimesigEight: [0, 0, 1.9, 2.2],\n\tTimesigNine: [0, 0, 1.9, 2.2],\n\tOne: [-0.0625, 0, 0.75, 1.6],\n\tTwo: [0, 0, 1.2, 1.6],\n\tThree: [0, 0, 1.2, 1.6],\n\tFour: [0, 0, 1.2, 1.6],\n\tFive: [0, 0, 1.2, 1.6],\n\tOctaveShift8: [2.125, -0.1875, 4.75, 3.6],\n\tOctaveShift0: [-0.4, 0, 1.8, 4.2],\n\tf: [0.0625, -0.125, 2.55, 3],\n\tp: [-0.0625, 0.25, 2.55, 2.1],\n\tm: [-0.125, -0.0625, 2.4, 1.35],\n\tn: [-0.3125, -0.0625, 1.95, 1.35],\n\tr: [0, -0.125, 1.5, 1.5],\n\ts: [0, -0.0625, 1.2, 1.35],\n\tz: [0.0625, 0, 1.35, 1.5],\n\tScriptFermata: [0, 0, 3.25, 3.9],\n\tScriptShortFermata: [0, 0, 2.4, 4.95],\n\tScriptSforzato: [-0.0625, 0, 2.5, 1.2],\n\tScriptStaccato: [0, -0.0625, 0.6, 0.45],\n\tScriptStaccatissimo: [0, 0, 1.2, 2.6],\n\tScriptTurn: [0, 0, 2.7, 1.5],\n\tScriptTrill: [-0.125, -0.5, 3, 2.7],\n\tScriptSegno: [0, 0, 2.4, 3.5],\n\tScriptCoda: [0, 0, 2.7, 3.25],\n\tScriptArpeggio: [-0.0625, 0, 1.05, 1.8],\n\tScriptPrall: [0, 0, 2.4, 1.2],\n\tScriptMordent: [0, 0, 2.4, 1.5],\n\tScriptMarcato: [0, 0, 1.2, 2.475],\n\tScriptTenuto: [0, -0.0625, 1.5, 0.15],\n\tScriptPortato: [0, 0, 1.5, 1.65],\n\tPedalStar: [0, 0, 3.2, 3.2],\n\tPedalPed: [0, -0.25, 4.7, 2.4],\n};\n\nconst hashSemanticPoint = (systemIndex: number, staffIndex: number, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x * 10);\n\tconst y = Math.round(point.y * 10);\n\tconst source = `${systemIndex}|${staffIndex}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nconst hashPageSemanticPoint = (pageName: string, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x);\n\tconst y = Math.round(point.y);\n\tconst source = `p-${pageName}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nexport {\n\tSemanticType,\n\tglyphSemanticMapping,\n\tsemanticPriorities,\n\tPoint,\n\tSemanticPoint,\n\tNOTEHEAD_WIDTHS,\n\tglyphCenters,\n\tONE_D_SEMANTICS,\n\tSYSTEM_SEMANTIC_TYPES,\n\tCONFLICTION_GROUPS,\n\tSTAMP_SEMANTICS,\n\tSTAMP_RECTS,\n\thashSemanticPoint,\n\thashPageSemanticPoint,\n};\n","globalThis.btoa = (str) => Buffer.from(str, 'binary').toString('base64');\nglobalThis.atob = (str) => Buffer.from(str, 'base64').toString('binary');\n","import { TextType } from './interfaces';\nimport { NOTEHEAD_WIDTHS } from './semanticPoint';\n\nenum TokenType {\n\t// clefs\n\tClefG = 'clefs-G', // clefs.G_change\n\tClefF = 'clefs-F', // clefs.F_change\n\tClefC = 'clefs-C', // clefs.C_change\n\n\t// time signature\n\tTimesigC44 = 'timesig-C44',\n\tTimesigC22 = 'timesig-C22',\n\tTimesigZero = 'zero|timesig0',\n\tTimesigOne = 'one|timesig1',\n\tTimesigTwo = 'two|timesig2',\n\tTimesigThree = 'three|timesig3',\n\tTimesigFour = 'four|timesig4',\n\tTimesigFive = 'five|timesig5',\n\tTimesigSix = 'six|timesig6',\n\tTimesigSeven = 'seven|timesig7',\n\tTimesigEight = 'eight|timesig8',\n\tTimesigNine = 'nine|timesig9',\n\n\t// octave shifts\n\tOctaveShift8va = 'octave-a',\n\tOctaveShift8vb = 'octave-b',\n\tOctaveShift0 = 'octave-0',\n\n\t// numbers\n\tZero = 'zero|n0',\n\tOne = 'one|n1',\n\tTwo = 'two|n2',\n\tThree = 'three|n3',\n\tFour = 'four|n4',\n\tFive = 'five|n5',\n\tSix = 'six|n6',\n\tSeven = 'seven|n7',\n\tEight = 'eight|n8',\n\tNine = 'nine|n9',\n\n\t// accidentals\n\tAccNatural = 'accidentals-natural',\n\tAccSharp = 'accidentals-sharp',\n\tAccDoublesharp = 'accidentals-doublesharp',\n\tAccFlat = 'accidentals-flat',\n\tAccFlatflat = 'accidentals-flatflat',\n\tKeyNatural = 'accidentals-natural|key-natural',\n\tKeySharp = 'accidentals-sharp|key-sharp',\n\tKeyFlat = 'accidentals-flat|key-flat',\n\n\t// noteheads\n\tNoteheadS0 = 'noteheads-s0',\n\tNoteheadS1 = 'noteheads-s1',\n\tNoteheadS2 = 'noteheads-s2',\n\tNoteheadS1stemU = 'noteheads-s1|noteheads-s1-u',\n\tNoteheadS1stemD = 'noteheads-s1|noteheads-s1-d',\n\tNoteheadS2stemU = 'noteheads-s2|noteheads-s2-u',\n\tNoteheadS2stemD = 'noteheads-s2|noteheads-s2-d',\n\n\t// rests\n\tRest0 = 'rests-0o',\n\tRest1 = 'rests-1o',\n\tRest2 = 'rests-2',\n\tRest3 = 'rests-3',\n\tRest4 = 'rests-4',\n\tRest5 = 'rests-5',\n\tRest6 = 'rests-6',\n\tRest0W = 'rests-0',\n\tRestM1 = 'rests-M1',\n\n\t// flags\n\tFlag3 = 'flags-u3', // flags.d3\n\tFlag4 = 'flags-u4', // flags.d4\n\tFlag5 = 'flags-u5', // flags.d5\n\tFlag6 = 'flags-u6', // flags.d6\n\tFlag7 = 'flags-u7', // flags.d7\n\tFlag8 = 'flags-u8', // flags.d8\n\n\t// beams\n\tBeamLeft = '|beam-left',\n\tBeamRight = '|beam-right',\n\tBeamContinue = '|beam-continue',\n\n\t// tremolos\n\tTremoloLeft = '|tremolo-left',\n\tTremoloRight = '|tremolo-right',\n\tTremoloMiddle = '|tremolo-middle',\n\n\t// slur & tie\n\tSlurBegin = '|slur-begin',\n\tSlurEnd = '|slur-end',\n\tTieBegin = '|tie-begin',\n\tTieEnd = '|tie-end',\n\n\t// volta\n\tVoltaLeft = '|volta-left',\n\tVoltaRight = '|volta-right',\n\n\tVoltaAlternativeBegin = '|volta-alter-begin',\n\t//VoltaAlternativeEnd = \"|volta-alter-end\",\n\n\t// vertical bars\n\t//BarMeasure = \"|bar-measure\",\n\tBarTerminal = '|bar-terminal',\n\tBarSegment = '|bar-segment',\n\n\t// dots (duration)\n\tDot = '|dot',\n\tDotDot = '|dotdot',\n\n\t// dynamics\n\tf = 'f',\n\tp = 'p',\n\tm = 'm',\n\tr = 'r',\n\ts = 's',\n\tz = 'z',\n\n\t//\n\tWedgeCrescendo = '|wedge-crescendo',\n\tWedgeDiminuendo = '|wedge-diminuendo',\n\tWedgeClose = '|wedge-close',\n\n\tCrescendoBegin = '|wedge-crescendo',\n\tDecrescendoBegin = '|wedge-diminuendo',\n\tCrescendoEnd = '|wedge-close',\n\tDecrescendoEnd = '|wedge-close',\n\n\t// scripts\n\tScriptFermata = 'scripts-ufermata', // scripts.dfermata\n\tScriptShortFermata = 'scripts-ushortfermata', // scripts.dshortfermata\n\tScriptSforzato = 'scripts-sforzato',\n\tScriptStaccato = 'scripts-staccato',\n\tScriptStaccatissimo = 'scripts-ustaccatissimo', // scripts.dstaccatissimo\n\tScriptTurn = 'scripts-turn',\n\tScriptTrill = 'scripts-trill',\n\tScriptSegno = 'scripts-segno',\n\tScriptCoda = 'scripts-coda',\n\tScriptArpeggio = 'scripts-arpeggio',\n\tScriptPrall = 'scripts-prall',\n\tScriptMordent = 'scripts-mordent',\n\tScriptMarcato = 'scripts-umarcato', // scripts.dmarcato\n\tScriptTenuto = 'scripts-tenuto',\n\tScriptPortato = 'scripts-uportato', // scripts.dportato\n\n\t// pedal\n\tPedalStar = 'pedal-star',\n\tPedalPed = 'pedal-Ped',\n\n\tText = '|text',\n\tGraceNotehead = '|grace-notehead',\n}\n\n// alias\nconst tt = TokenType;\n\nexport const TokenTypes = Object.values(TokenType);\nexport const TokenClefs = TokenTypes.filter((t) => /clefs-/.test(t));\nexport const TokenTimesigs = TokenTypes.filter((t) => /timesig/.test(t));\nexport const TokenTimesigsC = TokenTypes.filter((t) => /timesig-/.test(t));\nexport const TokenTimesigsN = TokenTypes.filter((t) => /timesig\\d/.test(t));\nexport const TokenOctshifts = TokenTypes.filter((t) => /octave-/.test(t));\nexport const TokenNumbers = TokenTypes.filter((t) => /n\\d/.test(t));\nexport const TokenAccidentals = TokenTypes.filter((t) => /accidentals-/.test(t));\nexport const TokenNoteheads = TokenTypes.filter((t) => /noteheads-/.test(t));\nexport const TokenBareNoteheads = [tt.NoteheadS0, tt.NoteheadS1, tt.NoteheadS2];\nexport const TokenDirectionalNoteheads = TokenTypes.filter((t) => /noteheads-.+-[ud]/.test(t));\nexport const TokenRests = TokenTypes.filter((t) => /rests-/.test(t));\nexport const TokenFlags = TokenTypes.filter((t) => /flags-/.test(t));\nexport const TokenVolta = TokenTypes.filter((t) => /volta-/.test(t));\nexport const TokenDynamics = TokenTypes.filter((t) => /^[a-z]$/.test(t));\nexport const TokenScripts = TokenTypes.filter((t) => /scripts-/.test(t));\nexport const TokenPedals = TokenTypes.filter((t) => /pedal-/.test(t));\nexport const TokenDots = [tt.Dot, tt.DotDot];\nexport const TokenArcs = [tt.SlurBegin, tt.SlurEnd, tt.TieBegin, tt.TieEnd];\nexport const TokenBeams = TokenTypes.filter((t) => /beam-/.test(t));\nexport const TokenWedges = TokenTypes.filter((t) => /wedge-/.test(t));\n\nexport const TokenAccessories = [\n\t...TokenNumbers,\n\t...TokenDynamics,\n\t...TokenWedges,\n\t...TokenPedals,\n\t...TokenArcs,\n\n\ttt.ScriptFermata,\n\ttt.ScriptShortFermata,\n\ttt.ScriptSforzato,\n\ttt.ScriptStaccato,\n\ttt.ScriptStaccatissimo,\n\ttt.ScriptTurn,\n\ttt.ScriptTrill,\n\ttt.ScriptPrall,\n\ttt.ScriptMordent,\n\ttt.ScriptMarcato,\n\ttt.ScriptTenuto,\n\ttt.ScriptPortato,\n];\n\nexport const TokenDirectionless = [...TokenPedals];\n\nexport const TokenGlyphs = [\n\t...TokenClefs,\n\t...TokenTimesigs,\n\t...TokenNumbers,\n\t...TokenAccidentals,\n\ttt.NoteheadS0,\n\ttt.NoteheadS1,\n\ttt.NoteheadS2,\n\t...TokenRests,\n\t...TokenDynamics,\n\t...TokenScripts,\n\t...TokenPedals,\n\t...TokenDots,\n];\n\nconst TOKEN_Y_ROUND = {} as Record;\nTokenClefs.forEach((t) => (TOKEN_Y_ROUND[t] = 1));\nTokenTimesigsN.forEach((t) => (TOKEN_Y_ROUND[t] = 1));\nTokenAccidentals.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenNoteheads.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenRests.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenDots.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\n\nconst TOKEN_Y_FIXED = {} as Record;\nTokenTimesigsC.forEach((t) => (TOKEN_Y_FIXED[t] = 0));\nTokenVolta.forEach((t) => (TOKEN_Y_FIXED[t] = 0));\n\nclass Token {\n\tstatic className = 'Token';\n\n\tid: string;\n\ttype: TokenType;\n\tx: number;\n\ty: number;\n\tpivotX?: number;\n\n\tconfidence: number;\n\n\ttip?: { x: number; y: number };\n\n\tvoice?: number; // integer, every bit stand for a voice\n\ttimeWarped?: boolean;\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tget typeId(): string {\n\t\treturn this.type.split('|').reverse()[0];\n\t}\n\n\tget isPredicted(): boolean {\n\t\treturn Number.isFinite(this.confidence);\n\t}\n\n\tget isNotehead(): boolean {\n\t\treturn TokenDirectionalNoteheads.includes(this.type) || this.type === TokenType.NoteheadS0;\n\t}\n\n\tget isContexted(): boolean {\n\t\treturn (\n\t\t\tTokenClefs.includes(this.type) || TokenTimesigs.includes(this.type) || TokenOctshifts.includes(this.type) || TokenAccidentals.includes(this.type)\n\t\t);\n\t}\n\n\tget isAccessory(): boolean {\n\t\treturn TokenNumbers.includes(this.type) || TokenDynamics.includes(this.type) || TokenScripts.includes(this.type) || TokenPedals.includes(this.type);\n\t}\n\n\tget division(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn 0;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn 2;\n\n\t\t\tcase tt.Flag3:\n\t\t\t\treturn 3;\n\n\t\t\tcase tt.Flag4:\n\t\t\t\treturn 4;\n\n\t\t\tcase tt.Flag5:\n\t\t\t\treturn 5;\n\n\t\t\tcase tt.Flag6:\n\t\t\t\treturn 6;\n\n\t\t\tcase tt.Flag7:\n\t\t\t\treturn 7;\n\n\t\t\tcase tt.Flag8:\n\t\t\t\treturn 8;\n\n\t\t\tcase tt.RestM1:\n\t\t\t\treturn -1;\n\n\t\t\tcase tt.Rest0:\n\t\t\t\treturn 0;\n\n\t\t\tcase tt.Rest1:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.Rest2:\n\t\t\t\treturn 2;\n\n\t\t\tcase tt.Rest3:\n\t\t\t\treturn 3;\n\n\t\t\tcase tt.Rest4:\n\t\t\t\treturn 4;\n\n\t\t\tcase tt.Rest5:\n\t\t\t\treturn 5;\n\n\t\t\tcase tt.Rest6:\n\t\t\t\treturn 6;\n\n\t\t\t// TODO:\n\t\t\t//case tt.Rest0W:\n\t\t\t//\treturn 0;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget dots(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.Dot:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.DotDot:\n\t\t\t\treturn 2;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget direction(): 'u' | 'd' | null {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn 'u';\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn 'd';\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget width(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS0;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS2;\n\t\t}\n\t}\n\n\tget left(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn this.x - this.width / 2;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn this.x - this.width;\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn this.x;\n\t\t}\n\n\t\treturn this.x;\n\t}\n\n\tget right(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn this.x + this.width / 2;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn this.x;\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn this.x + this.width;\n\t\t}\n\n\t\treturn this.x;\n\t}\n\n\tget voiceIndices(): number[] {\n\t\tif (!this.voice || this.voice < 0) return [];\n\n\t\treturn Array(Math.floor(Math.log2(this.voice)) + 1)\n\t\t\t.fill(null)\n\t\t\t.reduce((indices, _, i) => (this.voice & (1 << i) ? [i + 1, ...indices] : indices), []);\n\t}\n}\n\nclass TextToken extends Token {\n\ttextType: TextType;\n\ttext: string;\n\ttextFeature?: Record;\n\twidth_: number;\n\tfontSize: number;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\t\tObject.assign(this, data);\n\t}\n\n\tget width(): number {\n\t\treturn this.width_;\n\t}\n\n\tset width(value: number) {\n\t\tthis.width_ = value;\n\t}\n}\n\nexport { TokenType, Token, TextToken, TOKEN_Y_ROUND, TOKEN_Y_FIXED };\n","import pick from 'lodash/pick';\n\nconst recoverJSON = (json: string | object, classDict): T => {\n\tif (typeof json === 'object') json = JSON.stringify(json);\n\n\treturn JSON.parse(json, (_, value) => {\n\t\tif (value && typeof value === 'object' && value.__prototype) {\n\t\t\tconst Class = classDict[value.__prototype];\n\t\t\tif (Class) {\n\t\t\t\tconst { __prototype, ...fields } = value;\n\t\t\t\treturn new Class(fields);\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t});\n};\n\nconst deepCopy = (o: any, dict: Map = null): any => {\n\tdict = dict || new Map();\n\tif (dict.get(o)) return dict.get(o);\n\n\tif (Array.isArray(o)) {\n\t\tconst result = [];\n\t\tdict.set(o, result);\n\n\t\to.forEach((e) => result.push(deepCopy(e, dict)));\n\n\t\treturn result;\n\t} else if (o && typeof o === 'object') {\n\t\tconst result = {};\n\t\tdict.set(o, result);\n\n\t\tObject.entries(o).forEach(([key, value]) => (result[key] = deepCopy(value, dict)));\n\t\tObject.setPrototypeOf(result, o.__proto__);\n\n\t\treturn result;\n\t}\n\n\treturn o;\n};\n\nclass SimpleClass {\n\tassign(data?: object) {\n\t\tif (data) Object.assign(this, data);\n\t}\n\n\ttoJSON() {\n\t\tconst cls = this.constructor as any;\n\n\t\tconst serializedKeys = cls.serializedKeys || (cls.blackKeys && Object.keys(this).filter((key) => !cls.blackKeys.includes(key)));\n\t\tconst fields = serializedKeys ? pick(this, serializedKeys) : this;\n\n\t\treturn {\n\t\t\t__prototype: cls.className,\n\t\t\t...fields,\n\t\t};\n\t}\n\n\tdeepCopy(): this {\n\t\treturn deepCopy(this);\n\t}\n}\n\nexport { recoverJSON, SimpleClass };\n","import { SimpleClass } from '../starry/aux_/typedJSON';\n\nenum LayoutType {\n\tOrdinary = 'ordinary',\n\tFull = 'full',\n\tConservative = 'conservative',\n\tOnce = 'once',\n}\n\ninterface MeasureLayout {\n\tserialize(type: LayoutType): number[];\n\n\tseq: MeasureSeq;\n\tcode: string;\n}\n\nexport type MeasureSeq = MeasureLayout[];\n\nconst spreadMeasureSeq = (seq: MeasureSeq, type: LayoutType = LayoutType.Ordinary): number[] => [].concat(...seq.map((layout) => layout.serialize(type)));\n\nconst seqToCode = (seq: MeasureSeq, { withBrackets = false }: { withBrackets?: boolean } = {}): string => {\n\t//const code = seq.map(layout => layout.code).join(\", \");\n\tlet code = '';\n\tlet inRange = false;\n\n\tfor (let i = 0; i < seq.length; ++i) {\n\t\tconst middle = seq[i - 1] instanceof SingleMLayout && seq[i] instanceof SingleMLayout && seq[i + 1] instanceof SingleMLayout;\n\t\tif (middle) {\n\t\t\tif (!inRange) {\n\t\t\t\tcode += '..';\n\t\t\t\tinRange = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (i > 0 && !inRange) code += ', ';\n\n\t\t\tinRange = false;\n\n\t\t\tcode += seq[i].code;\n\t\t}\n\t}\n\n\treturn withBrackets ? `[${code}]` : code;\n};\n\nclass SingleMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'SingleMLayout';\n\n\tmeasure: number;\n\n\tstatic from(measure: number) {\n\t\tconst layout = new SingleMLayout();\n\t\tlayout.measure = measure;\n\n\t\treturn layout;\n\t}\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(): number[] {\n\t\treturn [this.measure];\n\t}\n\n\tget seq(): MeasureSeq {\n\t\treturn [this];\n\t}\n\n\tget code(): string {\n\t\treturn this.measure.toString();\n\t}\n}\n\nclass BlockMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'BlockMLayout';\n\n\tseq: MeasureSeq;\n\n\tstatic trimSeq(seq: MeasureSeq): MeasureSeq {\n\t\tconst seq2 = [];\n\t\tfor (const layout of seq) {\n\t\t\tif (layout instanceof BlockMLayout) {\n\t\t\t\tfor (const sub of layout.seq) seq2.push(sub);\n\t\t\t} else seq2.push(layout);\n\t\t}\n\n\t\t// reduce duplicated or backwards single measures\n\t\tconst seq3 = [];\n\t\tlet measure = null;\n\t\tfor (const layout of seq2) {\n\t\t\tif (layout instanceof SingleMLayout) {\n\t\t\t\tif (layout.measure > measure) {\n\t\t\t\t\tseq3.push(layout);\n\t\t\t\t\tmeasure = layout.measure;\n\t\t\t\t}\n\t\t\t} else seq3.push(layout);\n\t\t}\n\n\t\treturn seq3;\n\t}\n\n\tstatic fromSeq(seq: MeasureSeq): BlockMLayout {\n\t\tconst layout = new BlockMLayout();\n\t\tlayout.seq = BlockMLayout.trimSeq(seq);\n\n\t\treturn layout;\n\t}\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\treturn spreadMeasureSeq(this.seq, type);\n\t}\n\n\tget code(): string {\n\t\treturn seqToCode(this.seq, { withBrackets: true });\n\t}\n}\n\nclass VoltaMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'VoltaMLayout';\n\n\ttimes: number;\n\tbody: MeasureSeq;\n\talternates: MeasureSeq[];\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\tconst bodySeq = spreadMeasureSeq(this.body);\n\n\t\tif (this.alternates) {\n\t\t\tconst alternateSeqs = this.alternates.map((seq) => spreadMeasureSeq(seq));\n\t\t\tconst lastAlternateSeq = alternateSeqs[alternateSeqs.length - 1];\n\n\t\t\tswitch (type) {\n\t\t\t\tcase LayoutType.Ordinary:\n\t\t\t\t\treturn bodySeq.concat(...alternateSeqs);\n\n\t\t\t\tcase LayoutType.Conservative:\n\t\t\t\tcase LayoutType.Full: {\n\t\t\t\t\tconst priorSeq = [].concat(\n\t\t\t\t\t\t...Array(this.times - 1)\n\t\t\t\t\t\t\t.fill(null)\n\t\t\t\t\t\t\t.map((_, i) => [...bodySeq, ...alternateSeqs[i % (this.times - 1)]])\n\t\t\t\t\t);\n\n\t\t\t\t\treturn [...priorSeq, ...bodySeq, ...lastAlternateSeq];\n\t\t\t\t}\n\n\t\t\t\tcase LayoutType.Once:\n\t\t\t\t\treturn [...bodySeq, ...lastAlternateSeq];\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (type) {\n\t\t\t\tcase LayoutType.Ordinary:\n\t\t\t\tcase LayoutType.Conservative:\n\t\t\t\tcase LayoutType.Once:\n\t\t\t\t\treturn bodySeq;\n\n\t\t\t\tcase LayoutType.Full:\n\t\t\t\t\treturn [].concat(\n\t\t\t\t\t\t...Array(this.times)\n\t\t\t\t\t\t\t.fill(null)\n\t\t\t\t\t\t\t.map(() => bodySeq)\n\t\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconsole.warn('the current case not handled:', type, this);\n\t}\n\n\tget seq(): MeasureSeq {\n\t\tconst alternates = this.alternates ? this.alternates[this.alternates.length - 1] : [];\n\n\t\treturn [...this.body, ...alternates];\n\t}\n\n\tget code(): string {\n\t\tconst body = seqToCode(this.body, { withBrackets: true });\n\n\t\tlet code = `${this.times}*${body}`;\n\t\tif (this.alternates) code += '{' + this.alternates.map((seq) => seqToCode(seq, { withBrackets: seq.length > 1 })).join(', ') + '}';\n\n\t\treturn code;\n\t}\n}\n\nclass ABAMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'ABAMLayout';\n\n\tmain: MeasureLayout;\n\trest: MeasureSeq;\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\tconst seqA = this.main.serialize(type);\n\t\tconst seqA_ = spreadMeasureSeq(this.main.seq, LayoutType.Once);\n\t\tconst seqB = spreadMeasureSeq(this.rest, type);\n\n\t\tswitch (type) {\n\t\t\tcase LayoutType.Ordinary: // A B\n\t\t\t\treturn [...seqA, ...seqB];\n\n\t\t\tcase LayoutType.Once: // B A'\n\t\t\t\treturn [...seqB, ...seqA_];\n\n\t\t\tcase LayoutType.Conservative: // A B A'\n\t\t\tcase LayoutType.Full: // A B A'\n\t\t\t\treturn [...seqA, ...seqB, ...seqA_];\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn('the current case not handled:', type, this);\n\t\t}\n\t}\n\n\tget seq(): MeasureSeq {\n\t\treturn [this.main, ...this.rest];\n\t}\n\n\tget code(): string {\n\t\treturn '<' + this.main.code + ', ' + seqToCode(this.rest) + '>';\n\t}\n}\n\nexport { LayoutType, MeasureLayout, SingleMLayout, BlockMLayout, VoltaMLayout, ABAMLayout };\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function () {\n\tvar o = function (k, v, o, l) {\n\t\t\tfor (o = o || {}, l = k.length; l--; o[k[l]] = v);\n\t\t\treturn o;\n\t\t},\n\t\t$V0 = [1, 13],\n\t\t$V1 = [1, 16],\n\t\t$V2 = [1, 15],\n\t\t$V3 = [1, 26],\n\t\t$V4 = [1, 29],\n\t\t$V5 = [1, 28],\n\t\t$V6 = [1, 30],\n\t\t$V7 = [5, 13, 22, 27, 29],\n\t\t$V8 = [2, 15],\n\t\t$V9 = [1, 32],\n\t\t$Va = [5, 14, 21, 22, 27, 28, 29];\n\tvar parser = {\n\t\ttrace: function trace() {},\n\t\tyy: {},\n\t\tsymbols_: {\n\t\t\terror: 2,\n\t\t\tstart_symbol: 3,\n\t\t\tmeasure_layout: 4,\n\t\t\tEOF: 5,\n\t\t\tindex_wise_measure_layout: 6,\n\t\t\t'i:': 7,\n\t\t\t's:': 8,\n\t\t\tsegment_wise_measure_layout: 9,\n\t\t\tiw_sequence: 10,\n\t\t\tiw_item: 11,\n\t\t\trange: 12,\n\t\t\t',': 13,\n\t\t\tUNSIGNED: 14,\n\t\t\t'..': 15,\n\t\t\tsingle: 16,\n\t\t\tiw_block_item: 17,\n\t\t\tiw_volta: 18,\n\t\t\tiw_aba: 19,\n\t\t\tiw_block: 20,\n\t\t\t'[': 21,\n\t\t\t']': 22,\n\t\t\t'*': 23,\n\t\t\tiw_optional_alternates: 24,\n\t\t\tiw_alternates: 25,\n\t\t\t'{': 26,\n\t\t\t'}': 27,\n\t\t\t'<': 28,\n\t\t\t'>': 29,\n\t\t\tsw_sequence: 30,\n\t\t\tsw_item: 31,\n\t\t\tsegment: 32,\n\t\t\tsw_block_item: 33,\n\t\t\tsw_volta: 34,\n\t\t\tsw_aba: 35,\n\t\t\tsw_block: 36,\n\t\t\tsw_optional_alternates: 37,\n\t\t\tsw_alternates: 38,\n\t\t\t$accept: 0,\n\t\t\t$end: 1,\n\t\t},\n\t\tterminals_: {\n\t\t\t2: 'error',\n\t\t\t5: 'EOF',\n\t\t\t7: 'i:',\n\t\t\t8: 's:',\n\t\t\t13: ',',\n\t\t\t14: 'UNSIGNED',\n\t\t\t15: '..',\n\t\t\t21: '[',\n\t\t\t22: ']',\n\t\t\t23: '*',\n\t\t\t26: '{',\n\t\t\t27: '}',\n\t\t\t28: '<',\n\t\t\t29: '>',\n\t\t},\n\t\tproductions_: [\n\t\t\t0,\n\t\t\t[3, 2],\n\t\t\t[4, 1],\n\t\t\t[4, 2],\n\t\t\t[4, 2],\n\t\t\t[6, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 3],\n\t\t\t[10, 3],\n\t\t\t[12, 3],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[16, 1],\n\t\t\t[17, 1],\n\t\t\t[20, 3],\n\t\t\t[18, 4],\n\t\t\t[24, 0],\n\t\t\t[24, 1],\n\t\t\t[25, 3],\n\t\t\t[19, 5],\n\t\t\t[9, 1],\n\t\t\t[30, 1],\n\t\t\t[30, 2],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[32, 1],\n\t\t\t[33, 1],\n\t\t\t[36, 3],\n\t\t\t[34, 4],\n\t\t\t[37, 0],\n\t\t\t[37, 1],\n\t\t\t[38, 3],\n\t\t\t[35, 4],\n\t\t],\n\t\tperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n\t\t\t/* this == yyval */\n\n\t\t\tvar $0 = $$.length - 1;\n\t\t\tswitch (yystate) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tthis.$ = root(null, $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.$ = root('index-wise', $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tthis.$ = root('segment-wise', serialize($$[$0]));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\tcase 23:\n\t\t\t\t\tif ($$[$0].length === 1 && $$[$0][0].__prototype === 'BlockMLayout') this.$ = $$[$0][0];\n\t\t\t\t\telse this.$ = blockLayout($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 6:\n\t\t\t\tcase 24:\n\t\t\t\t\tthis.$ = [$$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 7:\n\t\t\t\tcase 11:\n\t\t\t\tcase 12:\n\t\t\t\tcase 13:\n\t\t\t\tcase 14:\n\t\t\t\tcase 20:\n\t\t\t\tcase 27:\n\t\t\t\tcase 28:\n\t\t\t\tcase 29:\n\t\t\t\tcase 35:\n\t\t\t\t\tthis.$ = $$[$0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\tthis.$ = [...$$[$0 - 2], $$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9:\n\t\t\t\t\tthis.$ = [...$$[$0 - 2], ...$$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 10:\n\t\t\t\t\tthis.$ = range($$[$0 - 2], $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 15:\n\t\t\t\t\tthis.$ = singleLayout($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 16:\n\t\t\t\tcase 31:\n\t\t\t\t\tthis.$ = blockLayout($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 17:\n\t\t\t\tcase 32:\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 18:\n\t\t\t\tcase 33:\n\t\t\t\t\tthis.$ = voltaBlock($$[$0 - 3], $$[$0 - 1], $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 19:\n\t\t\t\tcase 34:\n\t\t\t\t\tthis.$ = null;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 21:\n\t\t\t\tcase 36:\n\t\t\t\t\tthis.$ = alternates($$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 22:\n\t\t\t\t\tthis.$ = abaBlock($$[$0 - 3], $$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 25:\n\t\t\t\t\tthis.$ = [...$$[$0 - 1], $$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 26:\n\t\t\t\t\tthis.$ = blockLayout([$$[$0]]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 30:\n\t\t\t\t\tthis.$ = segment($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37:\n\t\t\t\t\tthis.$ = abaBlock($$[$0 - 2], $$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\ttable: [\n\t\t\t{ 3: 1, 4: 2, 6: 3, 7: [1, 4], 8: [1, 5], 10: 6, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 1: [3] },\n\t\t\t{ 5: [1, 17] },\n\t\t\t{ 5: [2, 2] },\n\t\t\t{ 6: 18, 10: 6, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 9: 19, 14: $V3, 21: $V4, 28: $V5, 30: 20, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 5: [2, 5], 13: $V6 },\n\t\t\to($V7, [2, 6]),\n\t\t\to($V7, [2, 7]),\n\t\t\to($V7, [2, 11]),\n\t\t\to($V7, [2, 12]),\n\t\t\to($V7, [2, 13]),\n\t\t\to($V7, [2, 14]),\n\t\t\to($V7, $V8, { 15: [1, 31], 23: $V9 }),\n\t\t\to($V7, [2, 16]),\n\t\t\t{ 11: 33, 14: [1, 34], 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 10: 35, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 1: [2, 1] },\n\t\t\t{ 5: [2, 3] },\n\t\t\t{ 5: [2, 4] },\n\t\t\t{ 5: [2, 23], 14: $V3, 21: $V4, 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($Va, [2, 24]),\n\t\t\to($Va, [2, 26]),\n\t\t\to($Va, [2, 27]),\n\t\t\to($Va, [2, 28]),\n\t\t\to($Va, [2, 29]),\n\t\t\to($Va, [2, 30], { 23: [1, 37] }),\n\t\t\to($Va, [2, 31]),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 31: 38, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 39, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 11: 40, 12: 41, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 14: [1, 42] },\n\t\t\t{ 20: 43, 21: $V1 },\n\t\t\t{ 13: [1, 44] },\n\t\t\t{ 13: $V8, 23: $V9 },\n\t\t\t{ 13: $V6, 22: [1, 45] },\n\t\t\to($Va, [2, 25]),\n\t\t\t{ 21: $V4, 36: 46 },\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 47, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 14: $V3, 21: $V4, 22: [1, 48], 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($V7, [2, 8]),\n\t\t\to($V7, [2, 9]),\n\t\t\to($V7, [2, 10]),\n\t\t\to($V7, [2, 19], { 24: 49, 25: 50, 26: [1, 51] }),\n\t\t\t{ 10: 52, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\to([5, 13, 22, 26, 27, 29], [2, 17]),\n\t\t\to($Va, [2, 34], { 37: 53, 38: 54, 26: [1, 55] }),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 29: [1, 56], 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to([5, 14, 21, 22, 26, 27, 28, 29], [2, 32]),\n\t\t\to($V7, [2, 18]),\n\t\t\to($V7, [2, 20]),\n\t\t\t{ 10: 57, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 13: $V6, 29: [1, 58] },\n\t\t\to($Va, [2, 33]),\n\t\t\to($Va, [2, 35]),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 59, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($Va, [2, 37]),\n\t\t\t{ 13: $V6, 27: [1, 60] },\n\t\t\to($V7, [2, 22]),\n\t\t\t{ 14: $V3, 21: $V4, 27: [1, 61], 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($V7, [2, 21]),\n\t\t\to($Va, [2, 36]),\n\t\t],\n\t\tdefaultActions: { 3: [2, 2], 17: [2, 1], 18: [2, 3], 19: [2, 4] },\n\t\tparseError: function parseError(str, hash) {\n\t\t\tif (hash.recoverable) {\n\t\t\t\tthis.trace(str);\n\t\t\t} else {\n\t\t\t\tvar error = new Error(str);\n\t\t\t\terror.hash = hash;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tparse: function parse(input) {\n\t\t\tvar self = this,\n\t\t\t\tstack = [0],\n\t\t\t\ttstack = [],\n\t\t\t\tvstack = [null],\n\t\t\t\tlstack = [],\n\t\t\t\ttable = this.table,\n\t\t\t\tyytext = '',\n\t\t\t\tyylineno = 0,\n\t\t\t\tyyleng = 0,\n\t\t\t\trecovering = 0,\n\t\t\t\tTERROR = 2,\n\t\t\t\tEOF = 1;\n\t\t\tvar args = lstack.slice.call(arguments, 1);\n\t\t\tvar lexer = Object.create(this.lexer);\n\t\t\tvar sharedState = { yy: {} };\n\t\t\tfor (var k in this.yy) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n\t\t\t\t\tsharedState.yy[k] = this.yy[k];\n\t\t\t\t}\n\t\t\t}\n\t\t\tlexer.setInput(input, sharedState.yy);\n\t\t\tsharedState.yy.lexer = lexer;\n\t\t\tsharedState.yy.parser = this;\n\t\t\tif (typeof lexer.yylloc == 'undefined') {\n\t\t\t\tlexer.yylloc = {};\n\t\t\t}\n\t\t\tvar yyloc = lexer.yylloc;\n\t\t\tlstack.push(yyloc);\n\t\t\tvar ranges = lexer.options && lexer.options.ranges;\n\t\t\tif (typeof sharedState.yy.parseError === 'function') {\n\t\t\t\tthis.parseError = sharedState.yy.parseError;\n\t\t\t} else {\n\t\t\t\tthis.parseError = Object.getPrototypeOf(this).parseError;\n\t\t\t}\n\t\t\tfunction popStack(n) {\n\t\t\t\tstack.length = stack.length - 2 * n;\n\t\t\t\tvstack.length = vstack.length - n;\n\t\t\t\tlstack.length = lstack.length - n;\n\t\t\t}\n\t\t\t_token_stack: var lex = function () {\n\t\t\t\tvar token;\n\t\t\t\ttoken = lexer.lex() || EOF;\n\t\t\t\tif (typeof token !== 'number') {\n\t\t\t\t\ttoken = self.symbols_[token] || token;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t};\n\t\t\tvar symbol,\n\t\t\t\tpreErrorSymbol,\n\t\t\t\tstate,\n\t\t\t\taction,\n\t\t\t\ta,\n\t\t\t\tr,\n\t\t\t\tyyval = {},\n\t\t\t\tp,\n\t\t\t\tlen,\n\t\t\t\tnewState,\n\t\t\t\texpected;\n\t\t\twhile (true) {\n\t\t\t\tstate = stack[stack.length - 1];\n\t\t\t\tif (this.defaultActions[state]) {\n\t\t\t\t\taction = this.defaultActions[state];\n\t\t\t\t} else {\n\t\t\t\t\tif (symbol === null || typeof symbol == 'undefined') {\n\t\t\t\t\t\tsymbol = lex();\n\t\t\t\t\t}\n\t\t\t\t\taction = table[state] && table[state][symbol];\n\t\t\t\t}\n\t\t\t\tif (typeof action === 'undefined' || !action.length || !action[0]) {\n\t\t\t\t\tvar errStr = '';\n\t\t\t\t\texpected = [];\n\t\t\t\t\tfor (p in table[state]) {\n\t\t\t\t\t\tif (this.terminals_[p] && p > TERROR) {\n\t\t\t\t\t\t\texpected.push(\"'\" + this.terminals_[p] + \"'\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (lexer.showPosition) {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t':\\n' +\n\t\t\t\t\t\t\tlexer.showPosition() +\n\t\t\t\t\t\t\t'\\nExpecting ' +\n\t\t\t\t\t\t\texpected.join(', ') +\n\t\t\t\t\t\t\t\", got '\" +\n\t\t\t\t\t\t\t(this.terminals_[symbol] || symbol) +\n\t\t\t\t\t\t\t\"'\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t': Unexpected ' +\n\t\t\t\t\t\t\t(symbol == EOF ? 'end of input' : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.parseError(errStr, {\n\t\t\t\t\t\ttext: lexer.match,\n\t\t\t\t\t\ttoken: this.terminals_[symbol] || symbol,\n\t\t\t\t\t\tline: lexer.yylineno,\n\t\t\t\t\t\tloc: yyloc,\n\t\t\t\t\t\texpected: expected,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (action[0] instanceof Array && action.length > 1) {\n\t\t\t\t\tthrow new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n\t\t\t\t}\n\t\t\t\tswitch (action[0]) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tstack.push(symbol);\n\t\t\t\t\t\tvstack.push(lexer.yytext);\n\t\t\t\t\t\tlstack.push(lexer.yylloc);\n\t\t\t\t\t\tstack.push(action[1]);\n\t\t\t\t\t\tsymbol = null;\n\t\t\t\t\t\tif (!preErrorSymbol) {\n\t\t\t\t\t\t\tyyleng = lexer.yyleng;\n\t\t\t\t\t\t\tyytext = lexer.yytext;\n\t\t\t\t\t\t\tyylineno = lexer.yylineno;\n\t\t\t\t\t\t\tyyloc = lexer.yylloc;\n\t\t\t\t\t\t\tif (recovering > 0) {\n\t\t\t\t\t\t\t\trecovering--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsymbol = preErrorSymbol;\n\t\t\t\t\t\t\tpreErrorSymbol = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tlen = this.productions_[action[1]][1];\n\t\t\t\t\t\tyyval.$ = vstack[vstack.length - len];\n\t\t\t\t\t\tyyval._$ = {\n\t\t\t\t\t\t\tfirst_line: lstack[lstack.length - (len || 1)].first_line,\n\t\t\t\t\t\t\tlast_line: lstack[lstack.length - 1].last_line,\n\t\t\t\t\t\t\tfirst_column: lstack[lstack.length - (len || 1)].first_column,\n\t\t\t\t\t\t\tlast_column: lstack[lstack.length - 1].last_column,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (ranges) {\n\t\t\t\t\t\t\tyyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tr = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n\t\t\t\t\t\tif (typeof r !== 'undefined') {\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (len) {\n\t\t\t\t\t\t\tstack = stack.slice(0, -1 * len * 2);\n\t\t\t\t\t\t\tvstack = vstack.slice(0, -1 * len);\n\t\t\t\t\t\t\tlstack = lstack.slice(0, -1 * len);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstack.push(this.productions_[action[1]][0]);\n\t\t\t\t\t\tvstack.push(yyval.$);\n\t\t\t\t\t\tlstack.push(yyval._$);\n\t\t\t\t\t\tnewState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n\t\t\t\t\t\tstack.push(newState);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tconst root = (type, data) => ({ __prototype: 'MesaureLayout', type, data });\n\n\tconst singleLayout = (n) => ({ __prototype: 'SingleMLayout', measure: Number(n) });\n\tconst blockLayout = (seq) => ({ __prototype: 'BlockMLayout', seq });\n\tconst voltaBlock = (times, body, alternates) => ({ __prototype: 'VoltaMLayout', times: Number(times), body, alternates });\n\tconst abaBlock = (main, rest) => ({ __prototype: 'ABAMLayout', main, rest });\n\n\tconst segment = (n) => ({ segment: true, length: Number(n) });\n\n\tconst alternates = (items) =>\n\t\titems.map((item) => {\n\t\t\tif (item.__prototype === 'BlockMLayout') return item.seq;\n\n\t\t\treturn [item];\n\t\t});\n\n\tconst range = (start, end) => {\n\t\tstart = Number(start);\n\t\tend = Number(end);\n\n\t\tif (!(end >= start)) throw new Error(`invalid measure range: ${start}..${end}`);\n\n\t\treturn Array(end + 1 - start)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => singleLayout(start + i));\n\t};\n\n\tconst serializeSeq = (item, options) => {\n\t\tif (item.segment) {\n\t\t\tconst index = options.index;\n\t\t\toptions.index += item.length;\n\n\t\t\treturn Array(item.length)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => singleLayout(index + i));\n\t\t}\n\n\t\treturn [serialize(item, options)];\n\t};\n\n\tconst serialize = (item, options = { index: 1 }) => {\n\t\tconst speard = (seq) => [].concat(...seq.map((it) => serializeSeq(it, options)));\n\n\t\tswitch (item.__prototype) {\n\t\t\tcase 'BlockMLayout':\n\t\t\t\titem.seq = speard(item.seq);\n\n\t\t\t\tbreak;\n\t\t\tcase 'VoltaMLayout':\n\t\t\t\titem.body = speard(item.body);\n\t\t\t\titem.alternates = item.alternates && item.alternates.map(speard);\n\n\t\t\t\tbreak;\n\t\t\tcase 'ABAMLayout':\n\t\t\t\titem.main = serialize(item.main, options);\n\t\t\t\titem.rest = speard(item.rest);\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn item;\n\t};\n\t/* generated by jison-lex 0.3.4 */\n\tvar lexer = (function () {\n\t\tvar lexer = {\n\t\t\tEOF: 1,\n\n\t\t\tparseError: function parseError(str, hash) {\n\t\t\t\tif (this.yy.parser) {\n\t\t\t\t\tthis.yy.parser.parseError(str, hash);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(str);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// resets the lexer, sets new input\n\t\t\tsetInput: function (input, yy) {\n\t\t\t\tthis.yy = yy || this.yy || {};\n\t\t\t\tthis._input = input;\n\t\t\t\tthis._more = this._backtrack = this.done = false;\n\t\t\t\tthis.yylineno = this.yyleng = 0;\n\t\t\t\tthis.yytext = this.matched = this.match = '';\n\t\t\t\tthis.conditionStack = ['INITIAL'];\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: 1,\n\t\t\t\t\tfirst_column: 0,\n\t\t\t\t\tlast_line: 1,\n\t\t\t\t\tlast_column: 0,\n\t\t\t\t};\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [0, 0];\n\t\t\t\t}\n\t\t\t\tthis.offset = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// consumes and returns one char from the input\n\t\t\tinput: function () {\n\t\t\t\tvar ch = this._input[0];\n\t\t\t\tthis.yytext += ch;\n\t\t\t\tthis.yyleng++;\n\t\t\t\tthis.offset++;\n\t\t\t\tthis.match += ch;\n\t\t\t\tthis.matched += ch;\n\t\t\t\tvar lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno++;\n\t\t\t\t\tthis.yylloc.last_line++;\n\t\t\t\t} else {\n\t\t\t\t\tthis.yylloc.last_column++;\n\t\t\t\t}\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range[1]++;\n\t\t\t\t}\n\n\t\t\t\tthis._input = this._input.slice(1);\n\t\t\t\treturn ch;\n\t\t\t},\n\n\t\t\t// unshifts one char (or a string) into the input\n\t\t\tunput: function (ch) {\n\t\t\t\tvar len = ch.length;\n\t\t\t\tvar lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n\t\t\t\tthis._input = ch + this._input;\n\t\t\t\tthis.yytext = this.yytext.substr(0, this.yytext.length - len);\n\t\t\t\t//this.yyleng -= len;\n\t\t\t\tthis.offset -= len;\n\t\t\t\tvar oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n\t\t\t\tthis.match = this.match.substr(0, this.match.length - 1);\n\t\t\t\tthis.matched = this.matched.substr(0, this.matched.length - 1);\n\n\t\t\t\tif (lines.length - 1) {\n\t\t\t\t\tthis.yylineno -= lines.length - 1;\n\t\t\t\t}\n\t\t\t\tvar r = this.yylloc.range;\n\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length\n\t\t\t\t\t\t: this.yylloc.first_column - len,\n\t\t\t\t};\n\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [r[0], r[0] + this.yyleng - len];\n\t\t\t\t}\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, caches matched text and appends it on next action\n\t\t\tmore: function () {\n\t\t\t\tthis._more = true;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n\t\t\treject: function () {\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\tthis._backtrack = true;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError(\n\t\t\t\t\t\t'Lexical error on line ' +\n\t\t\t\t\t\t\t(this.yylineno + 1) +\n\t\t\t\t\t\t\t'. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' +\n\t\t\t\t\t\t\tthis.showPosition(),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// retain first n characters of the match\n\t\t\tless: function (n) {\n\t\t\t\tthis.unput(this.match.slice(n));\n\t\t\t},\n\n\t\t\t// displays already matched input, i.e. for error messages\n\t\t\tpastInput: function () {\n\t\t\t\tvar past = this.matched.substr(0, this.matched.length - this.match.length);\n\t\t\t\treturn (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays upcoming input, i.e. for error messages\n\t\t\tupcomingInput: function () {\n\t\t\t\tvar next = this.match;\n\t\t\t\tif (next.length < 20) {\n\t\t\t\t\tnext += this._input.substr(0, 20 - next.length);\n\t\t\t\t}\n\t\t\t\treturn (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays the character position where the lexing error occurred, i.e. for error messages\n\t\t\tshowPosition: function () {\n\t\t\t\tvar pre = this.pastInput();\n\t\t\t\tvar c = new Array(pre.length + 1).join('-');\n\t\t\t\treturn pre + this.upcomingInput() + '\\n' + c + '^';\n\t\t\t},\n\n\t\t\t// test the lexed token: return FALSE when not a match, otherwise return token\n\t\t\ttest_match: function (match, indexed_rule) {\n\t\t\t\tvar token, lines, backup;\n\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t// save context\n\t\t\t\t\tbackup = {\n\t\t\t\t\t\tyylineno: this.yylineno,\n\t\t\t\t\t\tyylloc: {\n\t\t\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\t\t\tlast_line: this.last_line,\n\t\t\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\t\t\tlast_column: this.yylloc.last_column,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tyytext: this.yytext,\n\t\t\t\t\t\tmatch: this.match,\n\t\t\t\t\t\tmatches: this.matches,\n\t\t\t\t\t\tmatched: this.matched,\n\t\t\t\t\t\tyyleng: this.yyleng,\n\t\t\t\t\t\toffset: this.offset,\n\t\t\t\t\t\t_more: this._more,\n\t\t\t\t\t\t_input: this._input,\n\t\t\t\t\t\tyy: this.yy,\n\t\t\t\t\t\tconditionStack: this.conditionStack.slice(0),\n\t\t\t\t\t\tdone: this.done,\n\t\t\t\t\t};\n\t\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\t\tbackup.yylloc.range = this.yylloc.range.slice(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno += lines.length;\n\t\t\t\t}\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.last_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.last_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length\n\t\t\t\t\t\t: this.yylloc.last_column + match[0].length,\n\t\t\t\t};\n\t\t\t\tthis.yytext += match[0];\n\t\t\t\tthis.match += match[0];\n\t\t\t\tthis.matches = match;\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [this.offset, (this.offset += this.yyleng)];\n\t\t\t\t}\n\t\t\t\tthis._more = false;\n\t\t\t\tthis._backtrack = false;\n\t\t\t\tthis._input = this._input.slice(match[0].length);\n\t\t\t\tthis.matched += match[0];\n\t\t\t\ttoken = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\t\t\t\tif (this.done && this._input) {\n\t\t\t\t\tthis.done = false;\n\t\t\t\t}\n\t\t\t\tif (token) {\n\t\t\t\t\treturn token;\n\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t// recover context\n\t\t\t\t\tfor (var k in backup) {\n\t\t\t\t\t\tthis[k] = backup[k];\n\t\t\t\t\t}\n\t\t\t\t\treturn false; // rule action called reject() implying the next rule should be tested instead.\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\t// return next match in input\n\t\t\tnext: function () {\n\t\t\t\tif (this.done) {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t}\n\t\t\t\tif (!this._input) {\n\t\t\t\t\tthis.done = true;\n\t\t\t\t}\n\n\t\t\t\tvar token, match, tempMatch, index;\n\t\t\t\tif (!this._more) {\n\t\t\t\t\tthis.yytext = '';\n\t\t\t\t\tthis.match = '';\n\t\t\t\t}\n\t\t\t\tvar rules = this._currentRules();\n\t\t\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\t\t\ttempMatch = this._input.match(this.rules[rules[i]]);\n\t\t\t\t\tif (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n\t\t\t\t\t\tmatch = tempMatch;\n\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t\t\ttoken = this.test_match(tempMatch, rules[i]);\n\t\t\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\t\t\treturn token;\n\t\t\t\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\t\t\tcontinue; // rule action called reject() implying a rule MISmatch.\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!this.options.flex) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (match) {\n\t\t\t\t\ttoken = this.test_match(match, rules[index]);\n\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\treturn token;\n\t\t\t\t\t}\n\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this._input === '') {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return next match that has a token\n\t\t\tlex: function lex() {\n\t\t\t\tvar r = this.next();\n\t\t\t\tif (r) {\n\t\t\t\t\treturn r;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.lex();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n\t\t\tbegin: function begin(condition) {\n\t\t\t\tthis.conditionStack.push(condition);\n\t\t\t},\n\n\t\t\t// pop the previously active lexer condition state off the condition stack\n\t\t\tpopState: function popState() {\n\t\t\t\tvar n = this.conditionStack.length - 1;\n\t\t\t\tif (n > 0) {\n\t\t\t\t\treturn this.conditionStack.pop();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditionStack[0];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// produce the lexer rule set which is active for the currently active lexer condition state\n\t\t\t_currentRules: function _currentRules() {\n\t\t\t\tif (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n\t\t\t\t\treturn this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditions['INITIAL'].rules;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n\t\t\ttopState: function topState(n) {\n\t\t\t\tn = this.conditionStack.length - 1 - Math.abs(n || 0);\n\t\t\t\tif (n >= 0) {\n\t\t\t\t\treturn this.conditionStack[n];\n\t\t\t\t} else {\n\t\t\t\t\treturn 'INITIAL';\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// alias for begin(condition)\n\t\t\tpushState: function pushState(condition) {\n\t\t\t\tthis.begin(condition);\n\t\t\t},\n\n\t\t\t// return the number of states currently on the stack\n\t\t\tstateStackSize: function stateStackSize() {\n\t\t\t\treturn this.conditionStack.length;\n\t\t\t},\n\t\t\toptions: {},\n\t\t\tperformAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n\t\t\t\tvar YYSTATE = YY_START;\n\t\t\t\tswitch ($avoiding_name_collisions) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn 14;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\treturn 5;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\trules: [/^(?:\\s+)/, /^(?:([*,\\[\\]<>{}]))/, /^(?:(([1-9])([0-9])*))/, /^(?:(([a-z])+):)/, /^(?:\\.\\.)/, /^(?:$)/],\n\t\t\tconditions: { INITIAL: { rules: [0, 1, 2, 3, 4, 5], inclusive: true } },\n\t\t};\n\t\treturn lexer;\n\t})();\n\tparser.lexer = lexer;\n\tfunction Parser() {\n\t\tthis.yy = {};\n\t}\n\tParser.prototype = parser;\n\tparser.Parser = Parser;\n\treturn new Parser();\n})();\n\nexport { parser };\nexport var Parser = parser.Parser;\nexport var parse = function () {\n\treturn parser.parse.apply(parser, arguments);\n};\nexport default { parser: parser, Parser: parser.Parser, parse: parse };\n","export interface RawItem {\n\tid: string;\n\tleftBounds: string[];\n\trightBounds: string[];\n\tconjunction: string;\n}\n\nexport enum StaffGroupType {\n\tDefault,\n\tBrace, // {}\n\tBracket, // <>\n\tSquare, // []\n}\n\nexport enum StaffConjunctionType {\n\tBlank,\n\tDashed,\n\tSolid,\n}\n\ntype StaffID = string;\n\nexport interface StaffGroup {\n\ttype: StaffGroupType;\n\tsubs?: StaffGroup[];\n\tstaff?: StaffID;\n\tlevel?: number;\n\tgrand?: boolean;\n}\n\ninterface StaffGroupTrait {\n\tgroup: StaffGroup;\n\trange: [number, number];\n\tkey: string;\n}\n\nconst singleGroup = (id: string) => ({ type: StaffGroupType.Default, staff: id });\n\nconst BOUNDS_TO_GROUPTYPE: { [bound: string]: StaffGroupType } = {\n\t'{': StaffGroupType.Brace,\n\t'}': StaffGroupType.Brace,\n\t'<': StaffGroupType.Bracket,\n\t'>': StaffGroupType.Bracket,\n\t'[': StaffGroupType.Square,\n\t']': StaffGroupType.Square,\n};\n\nconst OPEN_BOUNDS = '{<[';\nconst CLOSE_BOUNDS = '}>]';\n\nconst CONJUNCTIONS_MAP: { [conj: string]: StaffConjunctionType } = {\n\t',': StaffConjunctionType.Blank,\n\t'-': StaffConjunctionType.Solid,\n\t'.': StaffConjunctionType.Dashed,\n};\n\nconst bracketCode = (type: StaffGroupType, partial: boolean = false): ((inner: string) => string) => {\n\tif (type === StaffGroupType.Default) return (inner) => inner;\n\n\tif (partial) {\n\t\tswitch (type) {\n\t\t\tcase StaffGroupType.Brace:\n\t\t\t\treturn (inner) => `{${inner}`;\n\t\t\tcase StaffGroupType.Bracket:\n\t\t\t\treturn (inner) => `<${inner}`;\n\t\t\tcase StaffGroupType.Square:\n\t\t\t\treturn (inner) => `[${inner}`;\n\t\t\tdefault:\n\t\t\t\treturn (inner) => inner;\n\t\t}\n\t}\n\n\tswitch (type) {\n\t\tcase StaffGroupType.Brace:\n\t\t\treturn (inner) => `{${inner}}`;\n\t\tcase StaffGroupType.Bracket:\n\t\t\treturn (inner) => `<${inner}>`;\n\t\tcase StaffGroupType.Square:\n\t\t\treturn (inner) => `[${inner}]`;\n\t\tdefault:\n\t\t\treturn (inner) => inner;\n\t}\n};\n\nconst randomB64 = (): string => {\n\tconst code = btoa(Math.random().toString().substr(2)).replace(/=/g, '');\n\n\treturn code.split('').reverse().slice(0, 6).join('');\n};\n\nconst makeUniqueName = (set: Set, index: number, prefix?: string): string => {\n\tlet name = prefix;\n\tif (!name) name = index.toString();\n\telse if (set.has(name)) name += '_' + index.toString();\n\n\twhile (set.has(name)) name += '_' + randomB64();\n\n\treturn name;\n};\n\nconst makeGroupsFromRaw = (parent: StaffGroup, seq: string[]): string[] => {\n\tlet remains = seq;\n\twhile (remains.length) {\n\t\tconst word = remains.shift();\n\t\tconst bound = BOUNDS_TO_GROUPTYPE[word];\n\t\tif (bound) {\n\t\t\tif (CLOSE_BOUNDS.includes(word) && bound === parent.type) break;\n\n\t\t\tif (OPEN_BOUNDS.includes(word)) {\n\t\t\t\tconst group = { type: bound, level: Number.isFinite(parent.level) ? parent.level + 1 : 0 };\n\t\t\t\tremains = makeGroupsFromRaw(group, remains);\n\n\t\t\t\tparent.subs = parent.subs || [];\n\t\t\t\tparent.subs.push(group);\n\t\t\t}\n\t\t} else {\n\t\t\tparent.subs = parent.subs || [];\n\t\t\tparent.subs.push(singleGroup(word));\n\t\t}\n\t}\n\n\twhile (parent.type === StaffGroupType.Default && parent.subs && parent.subs.length === 1) {\n\t\tconst sub = parent.subs[0];\n\t\tparent.type = sub.type;\n\t\tparent.subs = sub.subs;\n\t\tparent.staff = sub.staff;\n\t\tparent.level = sub.level;\n\t}\n\n\twhile (parent.subs && parent.subs.length === 1 && parent.subs[0].type === StaffGroupType.Default) {\n\t\tconst sub = parent.subs[0];\n\t\tparent.subs = sub.subs;\n\t\tparent.staff = sub.staff;\n\t}\n\n\tparent.grand = parent.type === StaffGroupType.Brace && parent.subs && parent.subs.every((sub) => sub.staff);\n\n\treturn remains;\n};\n\nconst groupHead = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return groupHead(group.subs[0]);\n};\n\nconst groupTail = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return groupTail(group.subs[group.subs.length - 1]);\n};\n\nexport const groupKey = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return `${groupHead(group)}-${groupTail(group)}`;\n};\n\nconst groupDict = (group: StaffGroup, dict: { [key: string]: StaffGroup }): void => {\n\tdict[groupKey(group)] = group;\n\n\tif (group.subs) group.subs.forEach((sub) => groupDict(sub, dict));\n};\n\nexport interface MaskedStaffLayout {\n\tstaffIds: string[];\n\tconjunctions: StaffConjunctionType[];\n\tgroups: StaffGroupTrait[];\n}\n\nclass StaffLayout {\n\tstaffIds: string[];\n\tconjunctions: StaffConjunctionType[];\n\tgroup: StaffGroup;\n\tgroups: StaffGroupTrait[];\n\n\tmaskCache: Map;\n\n\tconstructor(raw: RawItem[]) {\n\t\t// make unique ids\n\t\tconst ids = new Set();\n\t\traw.forEach((item, i) => {\n\t\t\titem.id = makeUniqueName(ids, i + 1, item.id);\n\t\t\tids.add(item.id);\n\t\t});\n\t\tthis.staffIds = raw.map((item) => item.id);\n\t\tthis.conjunctions = raw.slice(0, raw.length - 1).map((item) => (item.conjunction ? CONJUNCTIONS_MAP[item.conjunction] : StaffConjunctionType.Blank));\n\n\t\t// make groups\n\t\tconst seq = [].concat(...raw.map((item) => [...item.leftBounds, item.id, ...item.rightBounds]));\n\t\tthis.group = { type: StaffGroupType.Default };\n\t\tmakeGroupsFromRaw(this.group, seq);\n\n\t\tconst dict = {};\n\t\tgroupDict(this.group, dict);\n\t\tthis.groups = Object.entries(dict).map(([key, group]) => {\n\t\t\tlet ids = key.split('-');\n\t\t\tif (ids.length === 1) ids = [ids[0], ids[0]];\n\t\t\tconst range = ids.map((id) => this.staffIds.indexOf(id));\n\n\t\t\treturn {\n\t\t\t\tgroup,\n\t\t\t\trange,\n\t\t\t\tkey,\n\t\t\t} as StaffGroupTrait;\n\t\t});\n\n\t\tthis.maskCache = new Map();\n\t}\n\n\tget stavesCount(): number {\n\t\tif (!this.staffIds) return null;\n\n\t\treturn this.staffIds.length;\n\t}\n\n\tget partGroups(): StaffGroupTrait[] {\n\t\tconst grands = this.groups.filter((g) => g.group.grand);\n\t\tconst parts = this.groups.filter((g) => {\n\t\t\tif (g.group.grand) return true;\n\n\t\t\tif (g.range[0] === g.range[1]) {\n\t\t\t\tconst index = g.range[0];\n\t\t\t\treturn !grands.some((g) => g.range[0] <= index && g.range[1] >= index);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t\treturn parts;\n\t}\n\n\tget standaloneGroups(): string[][] {\n\t\tconst groups: string[][] = [];\n\t\tconst collect = (group: StaffGroup): void => {\n\t\t\tif (group.grand) groups.push(group.subs.map((sub) => sub.staff));\n\t\t\telse if (group.staff) groups.push([group.staff]);\n\t\t\telse if (group.subs) group.subs.forEach((sub) => collect(sub));\n\t\t};\n\t\tcollect(this.group);\n\n\t\treturn groups;\n\t}\n\n\tconjunctionBetween(upStaff: number, downStaff: number): StaffConjunctionType {\n\t\tif (downStaff <= upStaff) return null;\n\n\t\tlet con = StaffConjunctionType.Solid;\n\t\tfor (let i = upStaff; i < downStaff; i++) con = Math.min(con, this.conjunctions[i]);\n\n\t\treturn con;\n\t}\n\n\tstatic makeMaskLayout(layout: StaffLayout, mask: number): MaskedStaffLayout {\n\t\tconst staffIds = layout.staffIds.filter((_, i) => mask & (1 << i));\n\t\tif (staffIds.length === layout.staffIds.length) {\n\t\t\treturn {\n\t\t\t\tstaffIds: layout.staffIds,\n\t\t\t\tconjunctions: layout.conjunctions,\n\t\t\t\tgroups: layout.groups,\n\t\t\t};\n\t\t}\n\n\t\tconst groups = layout.groups\n\t\t\t.map((g) => ({ ids: layout.staffIds.slice(g.range[0], g.range[1] + 1).filter((id) => staffIds.includes(id)), ...g }))\n\t\t\t.filter(({ ids }) => ids.length)\n\t\t\t.map(\n\t\t\t\t({ ids, ...g }) =>\n\t\t\t\t\t({\n\t\t\t\t\t\tkey: g.key,\n\t\t\t\t\t\tgroup: g.group,\n\t\t\t\t\t\trange: [staffIds.indexOf(ids[0]), staffIds.indexOf(ids[ids.length - 1])],\n\t\t\t\t\t} as StaffGroupTrait)\n\t\t\t);\n\n\t\tconst conjunctions = staffIds.slice(0, staffIds.length - 1).map((id, i) => {\n\t\t\tconst nextId = staffIds[i + 1];\n\t\t\treturn layout.conjunctionBetween(layout.staffIds.indexOf(id), layout.staffIds.indexOf(nextId));\n\t\t});\n\n\t\treturn {\n\t\t\tstaffIds,\n\t\t\tconjunctions,\n\t\t\tgroups,\n\t\t};\n\t}\n\n\tmask(mask: number): MaskedStaffLayout {\n\t\tif (!this.maskCache.get(mask)) this.maskCache.set(mask, StaffLayout.makeMaskLayout(this, mask));\n\n\t\treturn this.maskCache.get(mask);\n\t}\n\n\t// {,}\t*\t1,1\t\t=> {,}\n\t// {,}\t*\t1,x\t\t=> {\n\t// {,}\t*\t0,x\t\t=>\n\t// {,}\t*\t0,1\t\t=> {}\n\tpartialMaskCode(bits: (1 | 0)[], withIds = false): string {\n\t\ttype Attendance = 0 | 1 | null;\n\t\tconst staffStatus = this.staffIds\n\t\t\t.map((_, i) => (i < bits.length ? bits[i] : null))\n\t\t\t.reduce((status, x, i) => {\n\t\t\t\tstatus[this.staffIds[i]] = x;\n\t\t\t\treturn status;\n\t\t\t}, {} as { [id: string]: Attendance });\n\n\t\tconst joinGroup = (group: StaffGroup): [string, boolean] => {\n\t\t\tif (group.staff) return [staffStatus[group.staff] ? group.staff : null, staffStatus[group.staff] === null];\n\n\t\t\tconst subs = group.subs.map((sub) => joinGroup(sub));\n\t\t\tconst subStr = subs\n\t\t\t\t.map((pair) => pair[0])\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(',');\n\t\t\tconst partial = subs.some(([_, partial]) => partial);\n\n\t\t\tconst code = subStr ? bracketCode(group.type, partial)(subStr) : null;\n\n\t\t\treturn [code, partial];\n\t\t};\n\n\t\tlet [code] = joinGroup(this.group);\n\t\tcode = code || '';\n\t\tif (!withIds) code = code.replace(/[_\\w]+/g, '');\n\n\t\treturn code;\n\t}\n}\n\nexport default StaffLayout;\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function () {\n\tvar o = function (k, v, o, l) {\n\t\t\tfor (o = o || {}, l = k.length; l--; o[k[l]] = v);\n\t\t\treturn o;\n\t\t},\n\t\t$V0 = [1, 15],\n\t\t$V1 = [1, 16],\n\t\t$V2 = [1, 17],\n\t\t$V3 = [1, 11],\n\t\t$V4 = [1, 12],\n\t\t$V5 = [1, 13],\n\t\t$V6 = [1, 24],\n\t\t$V7 = [1, 25],\n\t\t$V8 = [1, 26],\n\t\t$V9 = [5, 11, 12, 13, 15, 16, 17, 21, 22, 23, 24],\n\t\t$Va = [15, 16, 17, 21, 22, 23, 24],\n\t\t$Vb = [11, 12, 13, 15, 16, 17, 21, 22, 23, 24],\n\t\t$Vc = [5, 11, 12, 13, 21, 22, 23, 24];\n\tvar parser = {\n\t\ttrace: function trace() {},\n\t\tyy: {},\n\t\tsymbols_: {\n\t\t\terror: 2,\n\t\t\tstart_symbol: 3,\n\t\t\tstaff_layout: 4,\n\t\t\tEOF: 5,\n\t\t\tseq: 6,\n\t\t\tseq_id: 7,\n\t\t\tseq_br: 8,\n\t\t\tseq_con: 9,\n\t\t\tbound_left: 10,\n\t\t\t'<': 11,\n\t\t\t'[': 12,\n\t\t\t'{': 13,\n\t\t\tbound_right: 14,\n\t\t\t'>': 15,\n\t\t\t']': 16,\n\t\t\t'}': 17,\n\t\t\tbound_lefts: 18,\n\t\t\tbound_rights: 19,\n\t\t\tconjunction: 20,\n\t\t\t'-': 21,\n\t\t\t',': 22,\n\t\t\t'.': 23,\n\t\t\tID: 24,\n\t\t\tseq_bl: 25,\n\t\t\t$accept: 0,\n\t\t\t$end: 1,\n\t\t},\n\t\tterminals_: { 2: 'error', 5: 'EOF', 11: '<', 12: '[', 13: '{', 15: '>', 16: ']', 17: '}', 21: '-', 22: ',', 23: '.', 24: 'ID' },\n\t\tproductions_: [\n\t\t\t0,\n\t\t\t[3, 2],\n\t\t\t[4, 1],\n\t\t\t[6, 0],\n\t\t\t[6, 1],\n\t\t\t[6, 1],\n\t\t\t[6, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[14, 1],\n\t\t\t[14, 1],\n\t\t\t[14, 1],\n\t\t\t[18, 1],\n\t\t\t[18, 2],\n\t\t\t[19, 1],\n\t\t\t[19, 2],\n\t\t\t[20, 1],\n\t\t\t[20, 1],\n\t\t\t[20, 1],\n\t\t\t[7, 1],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[25, 1],\n\t\t\t[25, 2],\n\t\t\t[25, 2],\n\t\t\t[25, 2],\n\t\t\t[8, 2],\n\t\t\t[8, 2],\n\t\t\t[8, 2],\n\t\t\t[9, 1],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t],\n\t\tperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n\t\t\t/* this == yyval */\n\n\t\t\tvar $0 = $$.length - 1;\n\t\t\tswitch (yystate) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\t$$[$0].next();\n\n\t\t\t\t\tthis.$ = $$[$0].toJSON();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.$ = new Seq();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13:\n\t\t\t\tcase 15:\n\t\t\t\t\tthis.$ = [$$[$0]];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 14:\n\t\t\t\tcase 16:\n\t\t\t\t\tthis.$ = [...$$[$0 - 1], $$[$0]];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 20:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.i($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 21:\n\t\t\t\tcase 23:\n\t\t\t\t\t$$[$0 - 1].next();\n\t\t\t\t\t$$[$0 - 1].tip.i($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 22:\n\t\t\t\tcase 24:\n\t\t\t\t\t$$[$0 - 1].tip.i($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 25:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.bl($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 26:\n\t\t\t\tcase 27:\n\t\t\t\t\t$$[$0 - 1].next();\n\t\t\t\t\t$$[$0 - 1].tip.bl($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 28:\n\t\t\t\t\t$$[$0 - 1].tip.bl($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 29:\n\t\t\t\tcase 30:\n\t\t\t\tcase 31:\n\t\t\t\t\t$$[$0 - 1].tip.br($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 32:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.con($$[$0]);\n\t\t\t\t\tthis.$.next();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 33:\n\t\t\t\tcase 34:\n\t\t\t\tcase 35:\n\t\t\t\tcase 36:\n\t\t\t\t\t$$[$0 - 1].tip.con($$[$0]);\n\t\t\t\t\t$$[$0 - 1].next();\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\ttable: [\n\t\t\t{ 3: 1, 4: 2, 5: [2, 3], 6: 3, 7: 4, 8: 5, 9: 6, 10: 14, 11: $V0, 12: $V1, 13: $V2, 18: 10, 20: 9, 21: $V3, 22: $V4, 23: $V5, 24: [1, 7], 25: 8 },\n\t\t\t{ 1: [3] },\n\t\t\t{ 5: [1, 18] },\n\t\t\t{ 5: [2, 2] },\n\t\t\t{ 5: [2, 4], 10: 14, 11: $V0, 12: $V1, 13: $V2, 14: 23, 15: $V6, 16: $V7, 17: $V8, 18: 22, 19: 20, 20: 21, 21: $V3, 22: $V4, 23: $V5, 24: [1, 19] },\n\t\t\t{ 5: [2, 5], 10: 14, 11: $V0, 12: $V1, 13: $V2, 18: 29, 20: 28, 21: $V3, 22: $V4, 23: $V5, 24: [1, 27] },\n\t\t\t{ 5: [2, 6], 10: 14, 11: $V0, 12: $V1, 13: $V2, 14: 23, 15: $V6, 16: $V7, 17: $V8, 18: 33, 19: 31, 20: 32, 21: $V3, 22: $V4, 23: $V5, 24: [1, 30] },\n\t\t\to($V9, [2, 20]),\n\t\t\t{ 14: 23, 15: $V6, 16: $V7, 17: $V8, 19: 35, 20: 36, 21: $V3, 22: $V4, 23: $V5, 24: [1, 34] },\n\t\t\to($V9, [2, 32]),\n\t\t\to($Va, [2, 25], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 17]),\n\t\t\to($V9, [2, 18]),\n\t\t\to($V9, [2, 19]),\n\t\t\to($Vb, [2, 13]),\n\t\t\to($Vb, [2, 7]),\n\t\t\to($Vb, [2, 8]),\n\t\t\to($Vb, [2, 9]),\n\t\t\t{ 1: [2, 1] },\n\t\t\to($V9, [2, 21]),\n\t\t\to($Vc, [2, 29], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 33]),\n\t\t\to($Va, [2, 26], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 15]),\n\t\t\to($V9, [2, 10]),\n\t\t\to($V9, [2, 11]),\n\t\t\to($V9, [2, 12]),\n\t\t\to($V9, [2, 23]),\n\t\t\to($V9, [2, 35]),\n\t\t\to($Va, [2, 27], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 24]),\n\t\t\to($Vc, [2, 31], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 36]),\n\t\t\to($Va, [2, 28], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 22]),\n\t\t\to($Vc, [2, 30], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 34]),\n\t\t\to($Vb, [2, 14]),\n\t\t\to($V9, [2, 16]),\n\t\t],\n\t\tdefaultActions: { 3: [2, 2], 18: [2, 1] },\n\t\tparseError: function parseError(str, hash) {\n\t\t\tif (hash.recoverable) {\n\t\t\t\tthis.trace(str);\n\t\t\t} else {\n\t\t\t\tvar error = new Error(str);\n\t\t\t\terror.hash = hash;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tparse: function parse(input) {\n\t\t\tvar self = this,\n\t\t\t\tstack = [0],\n\t\t\t\ttstack = [],\n\t\t\t\tvstack = [null],\n\t\t\t\tlstack = [],\n\t\t\t\ttable = this.table,\n\t\t\t\tyytext = '',\n\t\t\t\tyylineno = 0,\n\t\t\t\tyyleng = 0,\n\t\t\t\trecovering = 0,\n\t\t\t\tTERROR = 2,\n\t\t\t\tEOF = 1;\n\t\t\tvar args = lstack.slice.call(arguments, 1);\n\t\t\tvar lexer = Object.create(this.lexer);\n\t\t\tvar sharedState = { yy: {} };\n\t\t\tfor (var k in this.yy) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n\t\t\t\t\tsharedState.yy[k] = this.yy[k];\n\t\t\t\t}\n\t\t\t}\n\t\t\tlexer.setInput(input, sharedState.yy);\n\t\t\tsharedState.yy.lexer = lexer;\n\t\t\tsharedState.yy.parser = this;\n\t\t\tif (typeof lexer.yylloc == 'undefined') {\n\t\t\t\tlexer.yylloc = {};\n\t\t\t}\n\t\t\tvar yyloc = lexer.yylloc;\n\t\t\tlstack.push(yyloc);\n\t\t\tvar ranges = lexer.options && lexer.options.ranges;\n\t\t\tif (typeof sharedState.yy.parseError === 'function') {\n\t\t\t\tthis.parseError = sharedState.yy.parseError;\n\t\t\t} else {\n\t\t\t\tthis.parseError = Object.getPrototypeOf(this).parseError;\n\t\t\t}\n\t\t\tfunction popStack(n) {\n\t\t\t\tstack.length = stack.length - 2 * n;\n\t\t\t\tvstack.length = vstack.length - n;\n\t\t\t\tlstack.length = lstack.length - n;\n\t\t\t}\n\t\t\t_token_stack: var lex = function () {\n\t\t\t\tvar token;\n\t\t\t\ttoken = lexer.lex() || EOF;\n\t\t\t\tif (typeof token !== 'number') {\n\t\t\t\t\ttoken = self.symbols_[token] || token;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t};\n\t\t\tvar symbol,\n\t\t\t\tpreErrorSymbol,\n\t\t\t\tstate,\n\t\t\t\taction,\n\t\t\t\ta,\n\t\t\t\tr,\n\t\t\t\tyyval = {},\n\t\t\t\tp,\n\t\t\t\tlen,\n\t\t\t\tnewState,\n\t\t\t\texpected;\n\t\t\twhile (true) {\n\t\t\t\tstate = stack[stack.length - 1];\n\t\t\t\tif (this.defaultActions[state]) {\n\t\t\t\t\taction = this.defaultActions[state];\n\t\t\t\t} else {\n\t\t\t\t\tif (symbol === null || typeof symbol == 'undefined') {\n\t\t\t\t\t\tsymbol = lex();\n\t\t\t\t\t}\n\t\t\t\t\taction = table[state] && table[state][symbol];\n\t\t\t\t}\n\t\t\t\tif (typeof action === 'undefined' || !action.length || !action[0]) {\n\t\t\t\t\tvar errStr = '';\n\t\t\t\t\texpected = [];\n\t\t\t\t\tfor (p in table[state]) {\n\t\t\t\t\t\tif (this.terminals_[p] && p > TERROR) {\n\t\t\t\t\t\t\texpected.push(\"'\" + this.terminals_[p] + \"'\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (lexer.showPosition) {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t':\\n' +\n\t\t\t\t\t\t\tlexer.showPosition() +\n\t\t\t\t\t\t\t'\\nExpecting ' +\n\t\t\t\t\t\t\texpected.join(', ') +\n\t\t\t\t\t\t\t\", got '\" +\n\t\t\t\t\t\t\t(this.terminals_[symbol] || symbol) +\n\t\t\t\t\t\t\t\"'\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t': Unexpected ' +\n\t\t\t\t\t\t\t(symbol == EOF ? 'end of input' : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.parseError(errStr, {\n\t\t\t\t\t\ttext: lexer.match,\n\t\t\t\t\t\ttoken: this.terminals_[symbol] || symbol,\n\t\t\t\t\t\tline: lexer.yylineno,\n\t\t\t\t\t\tloc: yyloc,\n\t\t\t\t\t\texpected: expected,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (action[0] instanceof Array && action.length > 1) {\n\t\t\t\t\tthrow new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n\t\t\t\t}\n\t\t\t\tswitch (action[0]) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tstack.push(symbol);\n\t\t\t\t\t\tvstack.push(lexer.yytext);\n\t\t\t\t\t\tlstack.push(lexer.yylloc);\n\t\t\t\t\t\tstack.push(action[1]);\n\t\t\t\t\t\tsymbol = null;\n\t\t\t\t\t\tif (!preErrorSymbol) {\n\t\t\t\t\t\t\tyyleng = lexer.yyleng;\n\t\t\t\t\t\t\tyytext = lexer.yytext;\n\t\t\t\t\t\t\tyylineno = lexer.yylineno;\n\t\t\t\t\t\t\tyyloc = lexer.yylloc;\n\t\t\t\t\t\t\tif (recovering > 0) {\n\t\t\t\t\t\t\t\trecovering--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsymbol = preErrorSymbol;\n\t\t\t\t\t\t\tpreErrorSymbol = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tlen = this.productions_[action[1]][1];\n\t\t\t\t\t\tyyval.$ = vstack[vstack.length - len];\n\t\t\t\t\t\tyyval._$ = {\n\t\t\t\t\t\t\tfirst_line: lstack[lstack.length - (len || 1)].first_line,\n\t\t\t\t\t\t\tlast_line: lstack[lstack.length - 1].last_line,\n\t\t\t\t\t\t\tfirst_column: lstack[lstack.length - (len || 1)].first_column,\n\t\t\t\t\t\t\tlast_column: lstack[lstack.length - 1].last_column,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (ranges) {\n\t\t\t\t\t\t\tyyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tr = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n\t\t\t\t\t\tif (typeof r !== 'undefined') {\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (len) {\n\t\t\t\t\t\t\tstack = stack.slice(0, -1 * len * 2);\n\t\t\t\t\t\t\tvstack = vstack.slice(0, -1 * len);\n\t\t\t\t\t\t\tlstack = lstack.slice(0, -1 * len);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstack.push(this.productions_[action[1]][0]);\n\t\t\t\t\t\tvstack.push(yyval.$);\n\t\t\t\t\t\tlstack.push(yyval._$);\n\t\t\t\t\t\tnewState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n\t\t\t\t\t\tstack.push(newState);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tclass Item {\n\t\tconstructor() {\n\t\t\tthis.id = null;\n\t\t\tthis.leftBounds = [];\n\t\t\tthis.rightBounds = [];\n\t\t\tthis.conjunction = null;\n\t\t}\n\n\t\ti(id) {\n\t\t\tthis.id = id;\n\t\t\treturn this;\n\t\t}\n\n\t\tbl(leftBounds) {\n\t\t\tthis.leftBounds = leftBounds;\n\t\t\treturn this;\n\t\t}\n\n\t\tbr(rightBounds) {\n\t\t\tthis.rightBounds = rightBounds;\n\t\t\treturn this;\n\t\t}\n\n\t\tcon(conjunction) {\n\t\t\tthis.conjunction = conjunction;\n\t\t\treturn this;\n\t\t}\n\t}\n\n\tclass Seq {\n\t\tconstructor() {\n\t\t\tthis.body = [];\n\t\t\tthis.tip = new Item();\n\t\t}\n\n\t\tnext() {\n\t\t\tthis.body.push(this.tip);\n\t\t\tthis.tip = new Item();\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\treturn this.body;\n\t\t}\n\t}\n\t/* generated by jison-lex 0.3.4 */\n\tvar lexer = (function () {\n\t\tvar lexer = {\n\t\t\tEOF: 1,\n\n\t\t\tparseError: function parseError(str, hash) {\n\t\t\t\tif (this.yy.parser) {\n\t\t\t\t\tthis.yy.parser.parseError(str, hash);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(str);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// resets the lexer, sets new input\n\t\t\tsetInput: function (input, yy) {\n\t\t\t\tthis.yy = yy || this.yy || {};\n\t\t\t\tthis._input = input;\n\t\t\t\tthis._more = this._backtrack = this.done = false;\n\t\t\t\tthis.yylineno = this.yyleng = 0;\n\t\t\t\tthis.yytext = this.matched = this.match = '';\n\t\t\t\tthis.conditionStack = ['INITIAL'];\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: 1,\n\t\t\t\t\tfirst_column: 0,\n\t\t\t\t\tlast_line: 1,\n\t\t\t\t\tlast_column: 0,\n\t\t\t\t};\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [0, 0];\n\t\t\t\t}\n\t\t\t\tthis.offset = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// consumes and returns one char from the input\n\t\t\tinput: function () {\n\t\t\t\tvar ch = this._input[0];\n\t\t\t\tthis.yytext += ch;\n\t\t\t\tthis.yyleng++;\n\t\t\t\tthis.offset++;\n\t\t\t\tthis.match += ch;\n\t\t\t\tthis.matched += ch;\n\t\t\t\tvar lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno++;\n\t\t\t\t\tthis.yylloc.last_line++;\n\t\t\t\t} else {\n\t\t\t\t\tthis.yylloc.last_column++;\n\t\t\t\t}\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range[1]++;\n\t\t\t\t}\n\n\t\t\t\tthis._input = this._input.slice(1);\n\t\t\t\treturn ch;\n\t\t\t},\n\n\t\t\t// unshifts one char (or a string) into the input\n\t\t\tunput: function (ch) {\n\t\t\t\tvar len = ch.length;\n\t\t\t\tvar lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n\t\t\t\tthis._input = ch + this._input;\n\t\t\t\tthis.yytext = this.yytext.substr(0, this.yytext.length - len);\n\t\t\t\t//this.yyleng -= len;\n\t\t\t\tthis.offset -= len;\n\t\t\t\tvar oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n\t\t\t\tthis.match = this.match.substr(0, this.match.length - 1);\n\t\t\t\tthis.matched = this.matched.substr(0, this.matched.length - 1);\n\n\t\t\t\tif (lines.length - 1) {\n\t\t\t\t\tthis.yylineno -= lines.length - 1;\n\t\t\t\t}\n\t\t\t\tvar r = this.yylloc.range;\n\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length\n\t\t\t\t\t\t: this.yylloc.first_column - len,\n\t\t\t\t};\n\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [r[0], r[0] + this.yyleng - len];\n\t\t\t\t}\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, caches matched text and appends it on next action\n\t\t\tmore: function () {\n\t\t\t\tthis._more = true;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n\t\t\treject: function () {\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\tthis._backtrack = true;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError(\n\t\t\t\t\t\t'Lexical error on line ' +\n\t\t\t\t\t\t\t(this.yylineno + 1) +\n\t\t\t\t\t\t\t'. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' +\n\t\t\t\t\t\t\tthis.showPosition(),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// retain first n characters of the match\n\t\t\tless: function (n) {\n\t\t\t\tthis.unput(this.match.slice(n));\n\t\t\t},\n\n\t\t\t// displays already matched input, i.e. for error messages\n\t\t\tpastInput: function () {\n\t\t\t\tvar past = this.matched.substr(0, this.matched.length - this.match.length);\n\t\t\t\treturn (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays upcoming input, i.e. for error messages\n\t\t\tupcomingInput: function () {\n\t\t\t\tvar next = this.match;\n\t\t\t\tif (next.length < 20) {\n\t\t\t\t\tnext += this._input.substr(0, 20 - next.length);\n\t\t\t\t}\n\t\t\t\treturn (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays the character position where the lexing error occurred, i.e. for error messages\n\t\t\tshowPosition: function () {\n\t\t\t\tvar pre = this.pastInput();\n\t\t\t\tvar c = new Array(pre.length + 1).join('-');\n\t\t\t\treturn pre + this.upcomingInput() + '\\n' + c + '^';\n\t\t\t},\n\n\t\t\t// test the lexed token: return FALSE when not a match, otherwise return token\n\t\t\ttest_match: function (match, indexed_rule) {\n\t\t\t\tvar token, lines, backup;\n\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t// save context\n\t\t\t\t\tbackup = {\n\t\t\t\t\t\tyylineno: this.yylineno,\n\t\t\t\t\t\tyylloc: {\n\t\t\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\t\t\tlast_line: this.last_line,\n\t\t\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\t\t\tlast_column: this.yylloc.last_column,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tyytext: this.yytext,\n\t\t\t\t\t\tmatch: this.match,\n\t\t\t\t\t\tmatches: this.matches,\n\t\t\t\t\t\tmatched: this.matched,\n\t\t\t\t\t\tyyleng: this.yyleng,\n\t\t\t\t\t\toffset: this.offset,\n\t\t\t\t\t\t_more: this._more,\n\t\t\t\t\t\t_input: this._input,\n\t\t\t\t\t\tyy: this.yy,\n\t\t\t\t\t\tconditionStack: this.conditionStack.slice(0),\n\t\t\t\t\t\tdone: this.done,\n\t\t\t\t\t};\n\t\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\t\tbackup.yylloc.range = this.yylloc.range.slice(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno += lines.length;\n\t\t\t\t}\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.last_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.last_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length\n\t\t\t\t\t\t: this.yylloc.last_column + match[0].length,\n\t\t\t\t};\n\t\t\t\tthis.yytext += match[0];\n\t\t\t\tthis.match += match[0];\n\t\t\t\tthis.matches = match;\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [this.offset, (this.offset += this.yyleng)];\n\t\t\t\t}\n\t\t\t\tthis._more = false;\n\t\t\t\tthis._backtrack = false;\n\t\t\t\tthis._input = this._input.slice(match[0].length);\n\t\t\t\tthis.matched += match[0];\n\t\t\t\ttoken = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\t\t\t\tif (this.done && this._input) {\n\t\t\t\t\tthis.done = false;\n\t\t\t\t}\n\t\t\t\tif (token) {\n\t\t\t\t\treturn token;\n\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t// recover context\n\t\t\t\t\tfor (var k in backup) {\n\t\t\t\t\t\tthis[k] = backup[k];\n\t\t\t\t\t}\n\t\t\t\t\treturn false; // rule action called reject() implying the next rule should be tested instead.\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\t// return next match in input\n\t\t\tnext: function () {\n\t\t\t\tif (this.done) {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t}\n\t\t\t\tif (!this._input) {\n\t\t\t\t\tthis.done = true;\n\t\t\t\t}\n\n\t\t\t\tvar token, match, tempMatch, index;\n\t\t\t\tif (!this._more) {\n\t\t\t\t\tthis.yytext = '';\n\t\t\t\t\tthis.match = '';\n\t\t\t\t}\n\t\t\t\tvar rules = this._currentRules();\n\t\t\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\t\t\ttempMatch = this._input.match(this.rules[rules[i]]);\n\t\t\t\t\tif (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n\t\t\t\t\t\tmatch = tempMatch;\n\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t\t\ttoken = this.test_match(tempMatch, rules[i]);\n\t\t\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\t\t\treturn token;\n\t\t\t\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\t\t\tcontinue; // rule action called reject() implying a rule MISmatch.\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!this.options.flex) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (match) {\n\t\t\t\t\ttoken = this.test_match(match, rules[index]);\n\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\treturn token;\n\t\t\t\t\t}\n\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this._input === '') {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return next match that has a token\n\t\t\tlex: function lex() {\n\t\t\t\tvar r = this.next();\n\t\t\t\tif (r) {\n\t\t\t\t\treturn r;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.lex();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n\t\t\tbegin: function begin(condition) {\n\t\t\t\tthis.conditionStack.push(condition);\n\t\t\t},\n\n\t\t\t// pop the previously active lexer condition state off the condition stack\n\t\t\tpopState: function popState() {\n\t\t\t\tvar n = this.conditionStack.length - 1;\n\t\t\t\tif (n > 0) {\n\t\t\t\t\treturn this.conditionStack.pop();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditionStack[0];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// produce the lexer rule set which is active for the currently active lexer condition state\n\t\t\t_currentRules: function _currentRules() {\n\t\t\t\tif (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n\t\t\t\t\treturn this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditions['INITIAL'].rules;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n\t\t\ttopState: function topState(n) {\n\t\t\t\tn = this.conditionStack.length - 1 - Math.abs(n || 0);\n\t\t\t\tif (n >= 0) {\n\t\t\t\t\treturn this.conditionStack[n];\n\t\t\t\t} else {\n\t\t\t\t\treturn 'INITIAL';\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// alias for begin(condition)\n\t\t\tpushState: function pushState(condition) {\n\t\t\t\tthis.begin(condition);\n\t\t\t},\n\n\t\t\t// return the number of states currently on the stack\n\t\t\tstateStackSize: function stateStackSize() {\n\t\t\t\treturn this.conditionStack.length;\n\t\t\t},\n\t\t\toptions: {},\n\t\t\tperformAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n\t\t\t\tvar YYSTATE = YY_START;\n\t\t\t\tswitch ($avoiding_name_collisions) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn 24;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn 5;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\trules: [/^(?:\\s+)/, /^(?:([-,.\\[\\]<>{}]))/, /^(?:([a-zA-Z_0-9]+))/, /^(?:$)/],\n\t\t\tconditions: { INITIAL: { rules: [0, 1, 2, 3], inclusive: true } },\n\t\t};\n\t\treturn lexer;\n\t})();\n\tparser.lexer = lexer;\n\tfunction Parser() {\n\t\tthis.yy = {};\n\t}\n\tParser.prototype = parser;\n\tparser.Parser = Parser;\n\treturn new Parser();\n})();\n\n// if (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexport { parser };\nexport var Parser = parser.Parser;\nexport var parse = function () {\n\treturn parser.parse.apply(parser, arguments);\n};\nexport default { parser: parser, Parser: parser.Parser, parse: parse };\n","import StaffLayout from './staffLayout';\nimport grammar from './grammar.jison';\n\nconst parseCode = (code: string): StaffLayout => {\n\tconst raw = grammar.parse(code);\n\n\treturn new StaffLayout(raw);\n};\n\nexport { parseCode };\n","interface Logger {\n\tdebug(message?: any, ...optionalParams: any[]): void;\n\tinfo(message?: any, ...optionalParams: any[]): void;\n\twarn(message?: any, ...optionalParams: any[]): void;\n\tgroup(...label: any[]): void;\n\tgroupCollapsed(...label: any[]): void;\n\tgroupEnd(): void;\n\tassert(expr: boolean, ...optionalParams: any[]): void;\n}\n\nclass DummyLogger implements Logger {\n\tdebug(..._: any[]): void {}\n\tgroup(..._: any[]): void {}\n\tgroupCollapsed(..._: any[]): void {}\n\tgroupEnd(): void {}\n\tinfo(..._: any[]): void {}\n\twarn(..._: any[]): void {}\n\tassert(..._: any[]): void {}\n}\n\nexport { Logger, DummyLogger };\n","import { Fraction, Pitch, Matrix2x3 } from './interfaces';\nimport { SemanticPoint, CONFLICTION_GROUPS } from './semanticPoint';\n\ntype Point2D = { x: number; y: number };\ntype PointSegment = Point2D[];\n\nconst POINT_CONFLICTION_DISTANCE = 0.4;\n\nconst roundNumber = (x: number, precision: number, min = -Infinity): number => Math.max(Math.round(x / precision) * precision, min);\n\nconst distance2D = (p1: Point2D, p2: Point2D): number => {\n\tconst dx = p1.x - p2.x;\n\tconst dy = p1.y - p2.y;\n\n\treturn Math.sqrt(dx * dx + dy * dy);\n};\n\nconst trans23 = (point: Point2D, matrix: Matrix2x3): Point2D => ({\n\tx: matrix[0] * point.x + matrix[2] * point.y + matrix[4],\n\ty: matrix[1] * point.x + matrix[3] * point.y + matrix[5],\n});\n\nconst gcd = (a: number, b: number): number => {\n\tif (!(Number.isInteger(a) && Number.isInteger(b))) {\n\t\tconsole.error('non-integer gcd:', a, b);\n\t\treturn 1;\n\t}\n\n\treturn b === 0 ? a : gcd(b, a % b);\n};\n\nconst frac = (numerator: number, denominator: number): Fraction => ({ numerator, denominator });\n\nconst reducedFraction = (n: number, d: number): Fraction => {\n\tn = Math.round(n);\n\td = Math.round(d);\n\n\tconst g = n !== 0 ? gcd(n, d) : d;\n\n\treturn frac(n / g, d / g);\n};\n\nconst printFraction = (f: Fraction): string => `${f.numerator}/${f.denominator}`;\n\nconst fractionMul = (value: number, fraction: Fraction): number => (fraction ? (value * fraction.numerator) / fraction.denominator : value);\n\nconst segmentPoints = (points: Point2D[], axis: 'x' | 'y'): PointSegment[] => {\n\tconst sorted = [...points].sort((p1, p2) => p1[axis] - p2[axis]);\n\n\tlet seg: Point2D[] = null;\n\tlet lastP = null;\n\n\treturn sorted.reduce((segments, p, i) => {\n\t\tif (!lastP) {\n\t\t\tlastP = p;\n\t\t\tseg = [p];\n\t\t} else {\n\t\t\tif (p[axis] - lastP[axis] < POINT_CONFLICTION_DISTANCE) seg.push(p);\n\t\t\telse {\n\t\t\t\tif (seg.length > 1) segments.push(seg);\n\t\t\t\tlastP = p;\n\t\t\t\tseg = [p];\n\t\t\t}\n\t\t}\n\n\t\tif (seg.length > 1 && i === sorted.length - 1) segments.push(seg);\n\n\t\treturn segments;\n\t}, []);\n};\n\nconst filterWeekPoints = (points: SemanticPoint[]): SemanticPoint[] => {\n\t//console.log(\"filterWeekPoints:\", points.map(p => `${p.semantic}, ${p.x}, ${p.y}`));\n\t//console.table(points.map(p => ({ ...p })));\n\n\tif (points.length <= 1) return [];\n\n\tlet rests = points.slice(1);\n\tconst group = CONFLICTION_GROUPS.find((group) => group.includes(points[0].semantic));\n\tif (!group) return filterWeekPoints(rests);\n\n\tconst weeks = rests.filter((p) => group.includes(p.semantic));\n\trests = rests.filter((p) => !group.includes(p.semantic));\n\n\treturn [...weeks, ...filterWeekPoints(rests)];\n};\n\nconst solveOverlapping = (points: SemanticPoint[]): SemanticPoint[] => {\n\tconst pset = new Set(points);\n\n\tconst xClusters = segmentPoints(points, 'x');\n\tconst clusters: SemanticPoint[][] = [].concat(...xClusters.map((c) => segmentPoints(c, 'y')));\n\tclusters.forEach((ps) => ps.sort((p1, p2) => p2.confidence - p1.confidence));\n\n\tclusters.forEach((ps) => {\n\t\tfilterWeekPoints(ps).forEach((p) => pset.delete(p));\n\t});\n\n\treturn Array.from(pset);\n};\n\nconst GROUP_N_TO_PITCH = [0, 2, 4, 5, 7, 9, 11];\nconst MIDDLE_C = 60;\n\nconst mod7 = (x) => {\n\tlet y = x % 7;\n\twhile (y < 0) y += 7;\n\n\treturn y;\n};\n\nconst mod12 = (x) => {\n\tlet y = x % 12;\n\twhile (y < 0) y += 12;\n\n\treturn y;\n};\n\nconst noteToPitch = ({ note, alter }: Pitch): number => {\n\tconst group = Math.floor(note / 7);\n\tconst gn = mod7(note);\n\n\treturn MIDDLE_C + group * 12 + GROUP_N_TO_PITCH[gn] + alter;\n};\n\nconst argmax = (data: number[]): number => {\n\tconst max = Math.max(...data);\n\n\treturn data.indexOf(max);\n};\n\nexport {\n\tPoint2D,\n\troundNumber,\n\tdistance2D,\n\ttrans23,\n\tsolveOverlapping,\n\tgcd,\n\tfrac,\n\treducedFraction,\n\tprintFraction,\n\tfractionMul,\n\tGROUP_N_TO_PITCH,\n\tMIDDLE_C,\n\tmod7,\n\tmod12,\n\tnoteToPitch,\n\targmax,\n};\n","import { Fraction, Pitch, EventFeature, EventPredisposition } from './interfaces';\nimport { gcd, reducedFraction } from './utils';\nimport { TokenType } from './token';\nimport * as Token from './token';\nimport { SimpleClass } from './aux_/typedJSON';\n\nconst WHOLE_DURATION = 128 * 3 * 5;\nconst WHOLE_EXP2 = WHOLE_DURATION / 15;\n\nenum AccessoryDirection {\n\tUp = '^',\n\tDown = '_',\n\tMiddle = '-',\n}\n\nenum GraceType {\n\tGrace = 'grace',\n\tAfterGrace = 'afterGrace',\n\tAcciaccatura = 'acciaccatura',\n\tAppoggiatura = 'appoggiatura',\n\tSlashedGrace = 'slashedGrace',\n}\n\nenum StemBeam {\n\tOpen = 'Open',\n\tClose = 'Close',\n\tContinue = 'Continue',\n}\n\nenum TremoloLink {\n\tPitcher = 'Pitcher',\n\tCatcher = 'Catcher',\n\tPierced = 'Pierced',\n}\n\nenum GlissandoStyle {\n\tNormal = 'normal',\n\tDashedLine = 'dashed-line',\n\tDottedLine = 'dotted-line',\n\tZigzag = 'zigzag',\n\tTrill = 'trill',\n}\n\nenum ArpeggioStyle {\n\tNormal = 'Normal',\n\tBracket = 'Bracket',\n\tParenthesis = 'Parenthesis',\n\tParenthesisDashed = 'ParenthesisDashed',\n\tArrowDown = 'ArrowDown',\n}\n\ninterface Accessory {\n\tdirection?: AccessoryDirection;\n\tparenthesized?: boolean;\n\ttype: TokenType;\n\tid?: string;\n\tx: number;\n}\n\ninterface TermPitch extends Pitch {\n\ttying?: boolean;\n\ttied?: boolean;\n\tparenthesized?: boolean;\n\toctaveShift?: number;\n}\n\nclass Term extends SimpleClass {\n\tx: number;\n\tstaff?: number;\n}\n\ntype RestType = 'r' | 'R' | 's' | null;\n\ninterface DurationalTerm {\n\tdivision: number;\n\tdots: number;\n\tmultiplier?: Fraction;\n}\n\nconst SCALE_NAMES = 'CDEFGAB';\n\nclass EventTerm extends Term implements DurationalTerm {\n\tstatic className = 'EventTerm';\n\n\tleft: number;\n\tright: number;\n\tpivotX: number;\n\n\tsystem: number;\n\troundX: number; // for tick map, scheduler\n\tintX: number; // for measure hash\n\tintY: number;\n\tys: number[]; // order by ascending pitch, low (greater Y) to high (less Y)\n\tpitches?: TermPitch[];\n\trest: RestType;\n\tdivision: number;\n\tdots: number;\n\taccessories: Accessory[];\n\tmultiplier: Fraction;\n\tstemDirection: string;\n\ttying: boolean;\n\ttied: boolean;\n\trepetitionChord: boolean;\n\tgrace?: GraceType;\n\tbeam?: StemBeam;\n\ttimeWarp?: Fraction;\n\tparenthesized?: boolean;\n\ttremolo?: number; // like division, 'number of beams' + 2\n\ttremoloLink?: TremoloLink;\n\tglissando?: boolean;\n\tglissandoStyle?: GlissandoStyle;\n\tarpeggioStyle?: ArpeggioStyle;\n\ttip?: { x: number; y: number };\n\n\ttick: number;\n\n\t// for topology\n\tid?: number;\n\tprevId?: number;\n\ttickGroup?: number;\n\n\tfeature: EventFeature;\n\tpredisposition: EventPredisposition;\n\n\tgraceIds?: number[];\n\tcatcherId?: number; // tremolo catcher event ID for tremolo pitcher event\n\n\tnoteIds?: string[]; // order by upwards\n\n\tstatic space({ tick, duration }: { tick: number; duration: number }): EventTerm {\n\t\tconst term = new EventTerm({\n\t\t\trest: 's',\n\t\t\ttick,\n\t\t\taccessories: [],\n\t\t});\n\t\tterm.duration = Math.round(duration);\n\n\t\treturn term;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tObject.assign(this, data);\n\n\t\tif (Number.isFinite(data.left) && Number.isFinite(data.right)) this.x = (this.left + this.right) / 2;\n\t\tif (!Number.isFinite(this.pivotX)) this.pivotX = this.x;\n\t\t//console.assert(Number.isFinite(this.x), \"EventTerm: invalid x,\", data);\n\t}\n\n\tget alignedTick(): number {\n\t\treturn this.grace ? this.tick + this.duration : this.tick;\n\t}\n\n\tget mainDuration(): number {\n\t\treturn WHOLE_DURATION * 2 ** -this.division * (2 - 2 ** -this.dots);\n\t}\n\n\tget duration(): number {\n\t\tlet value = this.mainDuration;\n\t\tif (this.multiplier) value *= this.multiplier.numerator / this.multiplier.denominator;\n\t\tif (this.timeWarp) value *= this.timeWarp.numerator / this.timeWarp.denominator;\n\n\t\treturn this.grace ? value / 8 : value;\n\t}\n\n\tset duration(value: number) {\n\t\tconsole.assert(Number.isFinite(value), 'invalid duration value:', value);\n\n\t\tconst divider = gcd(value, WHOLE_EXP2);\n\t\tconst division = Math.log2(WHOLE_EXP2 / divider);\n\t\tconst multiplier = reducedFraction(value * 2 ** division, WHOLE_DURATION);\n\n\t\tthis.division = division;\n\t\tthis.dots = 0;\n\n\t\tif (multiplier.numerator !== multiplier.denominator) this.multiplier = multiplier;\n\t\telse this.multiplier = undefined;\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick;\n\t}\n\n\tget times(): string {\n\t\tif (!this.timeWarp) return null;\n\n\t\treturn `${this.timeWarp.numerator}/${this.timeWarp.denominator}`;\n\t}\n\n\tget fullMeasureRest(): boolean {\n\t\treturn this.rest === 'R';\n\t}\n\n\tget tipX(): number {\n\t\treturn this.tip ? this.tip.x : this.x;\n\t}\n\n\tget tipY(): number {\n\t\treturn this.tip ? this.tip.y : this.ys ? this.ys[0] : 0;\n\t}\n\n\tget tremoloCatcher(): boolean {\n\t\treturn this.tremoloLink === TremoloLink.Catcher;\n\t}\n\n\tget scaleChord(): string {\n\t\treturn this.pitches.map((pitch) => SCALE_NAMES[(pitch.note + 700) % 7]).join('');\n\t}\n\n\tget zeroHolder(): boolean {\n\t\treturn !!this.grace || this.tremoloCatcher;\n\t}\n}\n\nenum ContextType {\n\tClef,\n\tKeyAcc,\n\tAcc,\n\tOctaveShift,\n\tTimeSignatureC,\n\tTimeSignatureN,\n}\n\nclass ContextedTerm extends Term {\n\tstatic className = 'ContextedTerm';\n\n\ty: number;\n\ttokenType: TokenType;\n\n\ttick: number;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget type(): ContextType {\n\t\tif (Token.TokenClefs.includes(this.tokenType)) return ContextType.Clef;\n\t\tif (/\\|key-/.test(this.tokenType)) return ContextType.KeyAcc;\n\t\tif (/accidentals-/.test(this.tokenType)) return ContextType.Acc;\n\t\tif (Token.TokenOctshifts.includes(this.tokenType)) return ContextType.OctaveShift;\n\t\tif (Token.TokenTimesigsC.includes(this.tokenType)) return ContextType.TimeSignatureC;\n\t\tif (Token.TokenTimesigsN.includes(this.tokenType)) return ContextType.TimeSignatureN;\n\n\t\treturn null;\n\t}\n\n\tget staffLevel(): boolean {\n\t\treturn [ContextType.OctaveShift, ContextType.Clef, ContextType.KeyAcc].includes(this.type);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick - 0.1;\n\t}\n\n\tget clef(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.ClefG:\n\t\t\t\treturn -this.y - 2;\n\n\t\t\tcase TokenType.ClefF:\n\t\t\t\treturn -this.y + 2;\n\n\t\t\tcase TokenType.ClefC:\n\t\t\t\treturn -this.y;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget alter() {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.AccNatural:\n\t\t\tcase TokenType.KeyNatural:\n\t\t\t\treturn 0;\n\n\t\t\tcase TokenType.AccSharp:\n\t\t\tcase TokenType.KeySharp:\n\t\t\t\treturn 1;\n\n\t\t\tcase TokenType.AccFlat:\n\t\t\tcase TokenType.KeyFlat:\n\t\t\t\treturn -1;\n\n\t\t\tcase TokenType.AccDoublesharp:\n\t\t\t\treturn 2;\n\n\t\t\tcase TokenType.AccFlatflat:\n\t\t\t\treturn -2;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget octaveShift(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.OctaveShift8va:\n\t\t\t\treturn -1;\n\n\t\t\tcase TokenType.OctaveShift0:\n\t\t\t\treturn 0;\n\n\t\t\tcase TokenType.OctaveShift8vb:\n\t\t\t\treturn 1;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget number(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.TimesigZero:\n\t\t\t\treturn 0;\n\t\t\tcase TokenType.TimesigOne:\n\t\t\t\treturn 1;\n\t\t\tcase TokenType.TimesigTwo:\n\t\t\t\treturn 2;\n\t\t\tcase TokenType.TimesigThree:\n\t\t\t\treturn 3;\n\t\t\tcase TokenType.TimesigFour:\n\t\t\t\treturn 4;\n\t\t\tcase TokenType.TimesigFive:\n\t\t\t\treturn 5;\n\t\t\tcase TokenType.TimesigSix:\n\t\t\t\treturn 6;\n\t\t\tcase TokenType.TimesigSeven:\n\t\t\t\treturn 7;\n\t\t\tcase TokenType.TimesigEight:\n\t\t\t\treturn 8;\n\t\t\tcase TokenType.TimesigNine:\n\t\t\t\treturn 9;\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n//class BreakTerm extends Term {\n//};\n\nclass MarkTerm extends Term {\n\tstatic className = 'MarkTerm';\n\n\ttick: number;\n\n\tget prior(): number {\n\t\treturn this.tick + 0.01;\n\t}\n}\n\nconst MUSIC_NOTES = Array(7)\n\t.fill(0)\n\t.map((_, i) => String.fromCodePoint(0x1d15d + i));\n\nclass TempoTerm extends MarkTerm {\n\tstatic className = 'TempoTerm';\n\n\tduration: string;\n\tbeats: string;\n\n\tstatic fromNumeralText(text: string): TempoTerm {\n\t\tif (/.+=.*\\d+/.test(text)) {\n\t\t\tconst [symbol, value] = text.split('=');\n\t\t\tlet division = MUSIC_NOTES.findIndex((n) => symbol.includes(n));\n\t\t\tdivision = division >= 0 ? division : 2;\n\t\t\tlet duration = (2 ** division).toString();\n\t\t\tif (symbol.includes('.')) duration += '.';\n\n\t\t\treturn new TempoTerm({ tick: 0, duration, beats: value });\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick - 0.01;\n\t}\n\n\t// a whole note equal to 1920\n\tget durationMagnitude(): number {\n\t\tconst [_, den, dot] = this.duration.match(/^(\\d+)(\\.)?$/);\n\t\tconst magnitude = (WHOLE_DURATION / Number(den)) * (dot ? 1.5 : 1);\n\n\t\treturn magnitude;\n\t}\n\n\t// beats per minute, suppose 1 beat = 480 ticks\n\tget bpm(): number {\n\t\tconst [number] = this.beats.match(/\\d+/) || [90];\n\t\tconst beats = Number(number);\n\n\t\treturn (beats * this.durationMagnitude * 4) / WHOLE_DURATION;\n\t}\n\n\tisValid(range = [10, 400]): boolean {\n\t\tconst bpm = this.bpm;\n\n\t\treturn Number.isFinite(this.bpm) && bpm >= range[0] && bpm < range[1];\n\t}\n}\n\nclass GlyphTerm extends MarkTerm {\n\tstatic className = 'GlyphTerm';\n\n\tglyph: string;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass TextTerm extends MarkTerm {\n\tstatic className = 'TextTerm';\n\n\tdirection?: AccessoryDirection;\n\ttext: string;\n\tbold: boolean;\n\titalic: boolean;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass LyricTerm extends MarkTerm {\n\tstatic className = 'LyricTerm';\n\n\ttext: string;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass CommandTerm extends MarkTerm {\n\tstatic className = 'CommandTerm';\n\n\tcommand: string;\n\tparameters: string[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass ChordmodeTerm extends Term implements DurationalTerm {\n\tstatic className = 'ChordmodeTerm';\n\n\tpitch: Pitch;\n\tbasePitch?: Pitch;\n\tmodifier?: string;\n\n\tdivision: number;\n\tdots: number;\n\tmultiplier: Fraction;\n\n\ttick: number;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick;\n\t}\n\n\tget duration(): number {\n\t\tconst value = WHOLE_DURATION * 2 ** -this.division * (2 - 2 ** -this.dots);\n\t\tif (this.multiplier) return (value * this.multiplier.numerator) / this.multiplier.denominator;\n\n\t\treturn value;\n\t}\n}\n\nexport {\n\tTerm,\n\tEventTerm,\n\tContextedTerm,\n\t//BreakTerm,\n\tMarkTerm,\n\tTempoTerm,\n\tGlyphTerm,\n\tTextTerm,\n\tLyricTerm,\n\tCommandTerm,\n\tChordmodeTerm,\n\tDurationalTerm,\n\tContextType,\n\tGraceType,\n\tTermPitch,\n\tRestType,\n\tGlissandoStyle,\n\tArpeggioStyle,\n\tAccessory,\n\tAccessoryDirection,\n\tWHOLE_DURATION,\n\tStemBeam,\n\tTremoloLink,\n};\n","import { fractionMul, gcd } from './utils';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { StemBeam, WHOLE_DURATION } from './term';\n\nexport interface MeasureEvaluation {\n\tevents: number;\n\tvalidEvents: number;\n\tvoiceRugged: boolean;\n\tnullEvents: number;\n\tfakeEvents: number;\n\twarpedEvents: number;\n\tcomplicatedTimewarp: boolean;\n\tspaceTime: number;\n\tsurplusTime: number;\n\tdurationRate: number;\n\tbeamBroken: boolean;\n\tfractionalWarp: boolean;\n\tirregularWarpsN: number;\n\tirregularTick: boolean;\n\ttickTwist: number;\n\ttickOverlapped: boolean;\n\tgraceInVoice: boolean;\n\tgraceN: number;\n\tgraceDominant: boolean;\n\tperfect: boolean;\n\tfine: boolean;\n\terror: boolean;\n\tqualityScore: number;\n}\n\nconst BEAM_STATUS = {\n\t[StemBeam.Open]: 1,\n\t[StemBeam.Continue]: 0,\n\t[StemBeam.Close]: -1,\n};\n\nexport const evaluateMeasure = (measure: SpartitoMeasure): MeasureEvaluation => {\n\tif (!measure.regulated) return undefined;\n\n\tconst eventMap = measure.eventMap;\n\n\tconst events = measure.events.length;\n\tconst validEvents = measure.voices.flat(1).length;\n\tconst warpedEvents = measure.events.filter((e) => e.timeWarp).length;\n\tconst warps = new Set(\n\t\tmeasure.events.filter((e) => e.timeWarp && !(e.rest && e.division === 0)).map((e) => `${e.timeWarp!.numerator}/${e.timeWarp!.denominator}`)\n\t);\n\tconst irregularWarps = new Set(warps);\n\tirregularWarps.delete('2/3');\n\n\tconst fractionalWarp = measure.voices.some((voice) => {\n\t\tconst events = voice.map((id) => eventMap[id]);\n\t\tif (!events.some((e) => e.timeWarp)) return false;\n\n\t\tlet denominator = 0;\n\t\tlet tickSum = 0;\n\t\tlet eventN = 0;\n\t\treturn events.some((event, i) => {\n\t\t\tconst d = event.timeWarp ? event.timeWarp.denominator : 0;\n\t\t\tif (d !== denominator) {\n\t\t\t\tif (denominator > 0 && (tickSum % denominator || eventN < 2)) return true;\n\n\t\t\t\ttickSum = 0;\n\t\t\t\teventN = 0;\n\t\t\t}\n\n\t\t\tdenominator = d;\n\t\t\ttickSum += event.duration;\n\t\t\t++eventN;\n\n\t\t\tif (i === events.length - 1) {\n\t\t\t\tif (denominator > 0 && (tickSum % denominator || eventN < 2)) return true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\t});\n\n\tconst tickOverlapped = measure.voices.some((voice) => {\n\t\tconst events = voice.map((id) => eventMap[id]);\n\t\tlet tick = 0;\n\t\treturn events.some((event) => {\n\t\t\tif (event.grace) return false;\n\n\t\t\tif (event.tick < tick) return true;\n\t\t\ttick = event.tick + event.duration;\n\n\t\t\treturn false;\n\t\t});\n\t});\n\n\tconst fractionalTimes = new Set(measure.events.filter((e) => e.timeWarp && e.timeWarp.denominator > 3).map((e) => e.duration));\n\tconst complicatedTimewarp = fractionalTimes.size > 1;\n\n\tconst literalDuration = fractionMul(WHOLE_DURATION, measure.timeSignature);\n\tconst sigDuration = measure.doubtfulTimesig ? measure.duration : literalDuration;\n\n\tconst inVoiceEvents = measure.voices.flat(1).map((id) => eventMap[id]);\n\n\t// Guard: detect corrupted event data in voices (e.g. missing division, NaN tick)\n\tconst corruptedVoiceEvent = inVoiceEvents.some(\n\t\t(event) =>\n\t\t\t!event ||\n\t\t\t!Number.isFinite(event.tick) ||\n\t\t\t!Number.isFinite(event.division) ||\n\t\t\tevent.division < 0 ||\n\t\t\t!Number.isFinite(event.duration) ||\n\t\t\tevent.duration <= 0\n\t);\n\n\tconst overranged = inVoiceEvents.reduce((over, event) => over || event.tick < 0 || event.tick + event.duration > sigDuration, false);\n\tconst overDuration = measure.duration > literalDuration;\n\tconst graceInVoice = inVoiceEvents.some((event) => event.grace);\n\tconst graceN = measure.events.filter((e) => e.grace).length;\n\tconst graceDominant = graceN >= inVoiceEvents.length;\n\n\tconst irregularTick = inVoiceEvents.some((event) => {\n\t\tlet t = event.tick * 2 ** (event.division + 2);\n\t\tif (event.timeWarp) t *= event.timeWarp.denominator;\n\n\t\tif (!Number.isFinite(t)) return true;\n\n\t\tconst fragment = gcd(Math.round(t), WHOLE_DURATION);\n\t\t//if (fragment < WHOLE_DURATION)\n\t\t//\tconsole.log(\"irregularTick:\", event.tick, fragment);\n\t\treturn fragment < WHOLE_DURATION;\n\t});\n\n\tconst beamStatus = measure.voices!.map((voice) =>\n\t\tvoice.reduce(\n\t\t\t({ status, broken }, ei) => {\n\t\t\t\tconst event = eventMap[ei];\n\t\t\t\tif (event.beam) {\n\t\t\t\t\tstatus += BEAM_STATUS[event.beam];\n\t\t\t\t\tbroken = broken || !(status >= 0 && status <= 1);\n\t\t\t\t}\n\n\t\t\t\treturn { status, broken };\n\t\t\t},\n\t\t\t{ status: 0, broken: false }\n\t\t)\n\t);\n\tconst beamBroken = beamStatus.some(({ status, broken }) => status || broken);\n\tlet spaceTime = 0;\n\tlet surplusTime = 0;\n\tmeasure.voices!.forEach((voice) => {\n\t\tconst eventDuration = voice.reduce((sum, ei) => sum + eventMap[ei].duration, 0);\n\t\tspaceTime += Math.max(0, measure.duration - eventDuration);\n\t\tsurplusTime += Math.max(0, eventDuration - measure.duration);\n\t});\n\tspaceTime /= WHOLE_DURATION;\n\tconst nullEvents = measure.events.filter(\n\t\t(e) => !e.grace && !e.fullMeasureRest && !e.tremoloCatcher && (!e.predisposition || e.predisposition.fakeP < 0.1) && !Number.isFinite(e.tick)\n\t).length;\n\n\tconst fakeEvents = measure.events.filter(\n\t\t(event) => !event.fullMeasureRest && !event.grace && !event.tremoloCatcher && !inVoiceEvents.includes(event)\n\t).length;\n\n\tconst { voiceRugged } = measure.voices!.flat(1).reduce(\n\t\t(result, ei) => {\n\t\t\tif (!result.voiceRugged) {\n\t\t\t\tif (result.es.has(ei)) return { voiceRugged: true, es: result.es };\n\t\t\t}\n\n\t\t\tresult.es.add(ei);\n\n\t\t\treturn result;\n\t\t},\n\t\t{ voiceRugged: false, es: new Set() }\n\t);\n\n\tconst tickTwist = measure.tickTwist || 0;\n\n\tconst error =\n\t\tcorruptedVoiceEvent ||\n\t\ttickTwist >= 1 ||\n\t\ttickOverlapped ||\n\t\tvoiceRugged ||\n\t\tmeasure.tickRatesInStaves.some((rate) => rate < 0) ||\n\t\tnullEvents > 2 ||\n\t\t!measure.timeSignature ||\n\t\toverranged ||\n\t\tmeasure.duration > sigDuration ||\n\t\tmeasure.events.some((event) => event.timeWarp && event.timeWarp.numerator / event.timeWarp.denominator <= 0.5);\n\tconst perfect =\n\t\t!error &&\n\t\t!overDuration &&\n\t\ttickTwist < 0.2 &&\n\t\t!fractionalWarp &&\n\t\t!irregularWarps.size &&\n\t\t!irregularTick &&\n\t\t!spaceTime &&\n\t\t!surplusTime &&\n\t\t!!measure.voices!.length &&\n\t\t!beamBroken &&\n\t\t!graceInVoice &&\n\t\t!graceDominant &&\n\t\t(measure.duration === sigDuration || (Number.isFinite(measure.estimatedDuration) && measure.estimatedDuration <= sigDuration * 0.75));\n\tconst fine = !error && !overDuration && tickTwist < 0.3 && !fractionalWarp && !irregularTick && !surplusTime && !beamBroken && !graceInVoice;\n\n\tlet expectDuration = Math.min(sigDuration, WHOLE_DURATION * 2);\n\tif (Number.isFinite(measure.estimatedDuration)) expectDuration = Math.max(0, Math.min(expectDuration, measure.estimatedDuration));\n\tconst durationRate = measure.duration / expectDuration;\n\n\tlet qualityScore = 0;\n\tif (measure.patched && !corruptedVoiceEvent) qualityScore = 1;\n\telse if (!error) {\n\t\tconst spaceLoss = Math.tanh(Math.abs(spaceTime / Math.max(1, measure.voices.length)) * 1);\n\n\t\tlet expectDuration = Math.min(sigDuration, WHOLE_DURATION * 2);\n\t\tif (Number.isFinite(measure.estimatedDuration)) expectDuration = Math.max(0, Math.min(expectDuration, measure.estimatedDuration));\n\t\tconst durationLoss = expectDuration ? Math.max(0, 1 - durationRate) ** 2 : 0;\n\t\tconst warpsLoss = Math.tanh(irregularWarps.size);\n\n\t\tqualityScore = (1 - spaceLoss) * (1 - durationLoss) * (1 - warpsLoss) * (1 - tickTwist ** 2);\n\t}\n\n\treturn {\n\t\tevents,\n\t\tvalidEvents,\n\t\tvoiceRugged,\n\t\tnullEvents,\n\t\tfakeEvents,\n\t\twarpedEvents,\n\t\tcomplicatedTimewarp,\n\t\tspaceTime,\n\t\tsurplusTime,\n\t\tdurationRate,\n\t\tbeamBroken,\n\t\tfractionalWarp,\n\t\tirregularWarpsN: irregularWarps.size,\n\t\tirregularTick,\n\t\ttickTwist,\n\t\ttickOverlapped,\n\t\tgraceInVoice,\n\t\tgraceN,\n\t\tgraceDominant,\n\t\tperfect,\n\t\tfine,\n\t\terror,\n\t\tqualityScore,\n\t};\n};\n","//import { staffSvg } from \"@kelvinnxu/lotus\";\n\nimport { SemanticType, SemanticPoint, /*glyphSemanticMapping, glyphCenters,*/ SYSTEM_SEMANTIC_TYPES, Point } from './semanticPoint';\nimport { SimpleClass } from './aux_/typedJSON';\n\nclass SemanticGraph extends SimpleClass {\n\tstatic className = 'SemanticGraph';\n\n\tpoints: SemanticPoint[];\n\n\tconstructor(data?: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\t/*static fromSheetStaff(staff: staffSvg.SheetStaff, hashTable: {[key: string]: any}): SemanticGraph {\n\t\tconst tokens = [].concat(...staff.measures.map(measure => measure.tokens));\n\n\t\tconst voltaRightXs = [];\n\n\t\tconst points = [];\n\t\ttokens.forEach(token => {\n\t\t\tconst def = hashTable[token.hash];\n\n\t\t\tif (token.glyph) {\n\t\t\t\tconst glyph = token.glyph as string;\n\t\t\t\tlet semantic = null;\n\n\t\t\t\tconst isKey = /^\\\\key/.test(token.source) || token.is(\"KEY\");\n\t\t\t\tlet { x: cx = 0, y: cy = 0 } = glyphCenters[glyph] || { x: 0, y: 0 };\n\t\t\t\tif (token.scale2) {\n\t\t\t\t\tcx *= token.scale2.x;\n\t\t\t\t\tcy *= token.scale2.y;\n\t\t\t\t}\n\n\t\t\t\tlet x = token.x + cx;\n\t\t\t\tconst y = token.y + cy;\n\n\t\t\t\tswitch (glyph) {\n\t\t\t\tcase \"rests.0\":\n\t\t\t\t\tif (/^R/.test(token.source))\n\t\t\t\t\t\tsemantic = \"Rest0W\";\n\t\t\t\t\telse\n\t\t\t\t\t\tsemantic = \"Rest0\";\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.flat\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.natural\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.sharp\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dots.dot\":\n\t\t\t\t\tif (token.is(\"VOLTA\")) {\n\t\t\t\t\t\tx += 0.24;\t// dot glyph center X offset\n\t\t\t\t\t\tif (token.is(\"LEFT\"))\n\t\t\t\t\t\t\tsemantic = SemanticType.VoltaLeft;\n\t\t\t\t\t\telse if (token.is(\"RIGHT\")) {\n\t\t\t\t\t\t\tvoltaRightXs.push(x);\n\t\t\t\t\t\t\tsemantic = SemanticType.VoltaRight;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tsemantic = \"Dot\";\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"zero\":\n\t\t\t\tcase \"one\":\n\t\t\t\tcase \"two\":\n\t\t\t\tcase \"three\":\n\t\t\t\tcase \"four\":\n\t\t\t\tcase \"five\":\n\t\t\t\tcase \"six\":\n\t\t\t\tcase \"seven\":\n\t\t\t\tcase \"eight\":\n\t\t\t\tcase \"nine\": {\n\t\t\t\t\tconst upper = glyph[0].toUpperCase() + glyph.substr(1);\n\t\t\t\t\tsemantic = token.is(\"TIME_SIG\") ? \"Timesig\" + upper : upper;\n\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t}\n\n\t\t\t\tif (semantic) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (token.is(\"TEMPO_NOTEHEAD\")) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.TempoNotehead,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// grace noteheads\n\t\t\t\tif (token.is(\"NOTEHEAD\") && Number.isFinite(token.scale) && token.scale < 0.75) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.GraceNotehead,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// semantic from token symbol\n\t\t\tlet semantic = null;\n\t\t\tconst cx = 0;\n\t\t\tlet cy = 0;\n\t\t\tif (token.is(\"OCTAVE\")) {\n\t\t\t\tif (token.is(\"_8\")) {\n\t\t\t\t\tsemantic = SemanticType.OctaveShift8;\n\t\t\t\t\tcy = token.is(\"B\") ? -0.7512 : -0.7256;\n\t\t\t\t}\n\t\t\t\telse if (token.is(\"CLOSE\")) {\n\t\t\t\t\tsemantic = SemanticType.OctaveShift0;\n\t\t\t\t\tcy = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (/^flags/.test(token.glyph)) {\n\t\t\t\tlet direction = 0;\n\t\t\t\tif (/\\.u\\d/.test(token.glyph))\n\t\t\t\t\tdirection = 1;\n\t\t\t\tif (/\\.d\\d/.test(token.glyph))\n\t\t\t\t\tdirection = -1;\n\t\t\t\tif (direction) {\n\t\t\t\t\tconst [n] = token.glyph.match(/\\d+/);\n\t\t\t\t\tconst flagCount = Number(n) - 2;\n\t\t\t\t\t//console.log(\"flags:\", token.glyph, flagCount);\n\t\t\t\t\tfor (let i = 0; i < flagCount; ++i) {\n\t\t\t\t\t\tconst y = token.y + (i + 0.5) * direction;\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.Flag3,\n\t\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t\t//console.log(\"flags.1:\", token.x, y);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (token.is(\"SLUR\")) {\n\t\t\t\tconst d = def && def.d;\n\t\t\t\tif (d) {\n\t\t\t\t\tconst numbers = d.match(/-?[\\d.]+/g).map(Number);\n\t\t\t\t\t//console.log(\"slur:\", numbers);\n\t\t\t\t\tconst x1 = token.x + numbers[0];\n\t\t\t\t\tconst y1 = token.y + numbers[1];\n\t\t\t\t\tconst x2 = token.x + numbers[6];\n\t\t\t\t\tconst y2 = token.y + numbers[7];\n\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.SlurBegin,\n\t\t\t\t\t\tx: x1,\n\t\t\t\t\t\ty: y1,\n\t\t\t\t\t});\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.SlurEnd,\n\t\t\t\t\t\tx: x2,\n\t\t\t\t\t\ty: y2,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (token.is(\"NOTE_STEM\")) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.vline_Stem,\n\t\t\t\t\tx: token.x + def.width / 2,\n\t\t\t\t\ty: token.y,\n\t\t\t\t\textension: {\n\t\t\t\t\t\ty1: token.y,\n\t\t\t\t\t\ty2: token.y + token.height,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (token.is(\"TEXT\") || token.is(\"CHORD_TEXT\")) {\n\t\t\t\tif (/\\S/.test(token.text)) {\n\t\t\t\t\t// NOTE: text rect computation is delayed to sheet rendering\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.rect_Text,\n\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\ty: token.y,\n\t\t\t\t\t\textension: {\n\t\t\t\t\t\t\tindex: token.index,\n\t\t\t\t\t\t\ttext: token.text,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (semantic) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic,\n\t\t\t\t\tx: token.x + cx,\n\t\t\t\t\ty: token.y + cy,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// beams\n\t\tconst stems = tokens.filter(token => token.is(\"NOTE_STEM\")).map(stem => ({\n\t\t\tx: stem.x + stem.width / 2,\n\t\t\ty1: stem.y,\n\t\t\ty2: stem.y + stem.height,\n\t\t}));\n\t\tconst beams = tokens.filter(token => token.is(\"NOTETAIL\") && token.is(\"JOINT\"))\n\t\t\t.map(beam => {\n\t\t\t\tconst def = hashTable[beam.hash];\n\t\t\t\tconst points = def && def.points;\n\t\t\t\tif (points) {\n\t\t\t\t\tconst floats = points.split(\" \").map(Number);\n\t\t\t\t\tconst x1 = beam.x + floats[4];\n\t\t\t\t\tconst x2 = beam.x + floats[0];\n\t\t\t\t\tconst y1 = beam.y + (floats[5] + floats[7]) / 2;\n\t\t\t\t\tconst y2 = beam.y + (floats[1] + floats[3]) / 2;\n\t\t\t\t\tconst k = (y2 - y1) / (x2 - x1);\n\n\t\t\t\t\treturn { x1, x2, y1, y2, k, capital: beam.is(\"CAPITAL_BEAM\") };\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}).filter(Boolean);\n\t\t//console.log(\"beams:\", beams);\n\t\tbeams.forEach(beam => {\n\t\t\tconst innerStems = stems.filter(stem => stem.x > beam.x1 - 0.2 && stem.x < beam.x2 + 0.2);\n\t\t\t//console.log(\"innerStems:\", beam, innerStems);\n\n\t\t\tlet lines = 0;\n\t\t\tinnerStems.forEach(stem => {\n\t\t\t\tconst beamY = beam.y1 + (stem.x - beam.x1) * beam.k;\n\t\t\t\t//console.log(\"beamY:\", beamY, Math.min(Math.abs(beamY - beam.y1), Math.abs(beamY - beam.y2)));\n\t\t\t\tif (beamY >= stem.y1 - 0.1 && beamY <= stem.y2 + 0.1) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.Flag3,\n\t\t\t\t\t\tx: stem.x,\n\t\t\t\t\t\ty: beamY,\n\t\t\t\t\t});\n\n\t\t\t\t\t++lines;\n\n\t\t\t\t\t// beam semantics\n\t\t\t\t\tif (beam.capital) {\n\t\t\t\t\t\tlet semantic = SemanticType.BeamContinue;\n\t\t\t\t\t\tif (Math.abs(stem.x - beam.x1) < 0.2)\n\t\t\t\t\t\t\tsemantic = SemanticType.BeamLeft;\n\t\t\t\t\t\telse if (Math.abs(stem.x - beam.x2) < 0.2)\n\t\t\t\t\t\t\tsemantic = SemanticType.BeamRight;\n\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\t\tx: stem.x,\n\t\t\t\t\t\t\ty: beamY,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!lines)\n\t\t\t\tconsole.warn(\"empty beam:\", beam, innerStems, stems);\n\t\t\t//else if (lines < 2)\n\t\t\t//\tconsole.debug(\"single beam:\", beam, innerStems, stems);\n\t\t});\n\n\t\t// wedges (crescendo & decrescendo)\n\t\tconst crescendos = tokens.filter(token => token.is(\"WEDGE CRESCENDO TOP\"));\n\t\tconst crescendoBottoms = tokens.filter(token => token.is(\"WEDGE CRESCENDO BOTTOM\"));\n\t\tconst decrescendos = tokens.filter(token => token.is(\"WEDGE DECRESCENDO TOP\"));\n\t\tconst decrescendoBottoms = tokens.filter(token => token.is(\"WEDGE DECRESCENDO BOTTOM\"));\n\t\tcrescendos.forEach(line => {\n\t\t\tconst partner = crescendoBottoms.find(b => b.x === line.x && Math.abs(b.y - line.y) < 0.06);\n\n\t\t\tif (partner) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.CrescendoBegin,\n\t\t\t\t\tx: line.x,\n\t\t\t\t\ty: line.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.log(\"unpaired crescendo:\", line, crescendoBottoms);\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.CrescendoEnd,\n\t\t\t\tx: line.x + line.target.x,\n\t\t\t\ty: line.y + line.target.y,\n\t\t\t});\n\t\t});\n\t\tdecrescendos.forEach(line => {\n\t\t\tconst partner = decrescendoBottoms.find(b => b.x + b.target.x === line.x + line.target.x && Math.abs(b.y + b.target.y - (line.y + line.target.y)) < 0.06);\n\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.DecrescendoBegin,\n\t\t\t\tx: line.x,\n\t\t\t\ty: line.y,\n\t\t\t});\n\t\t\tif (partner) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.DecrescendoEnd,\n\t\t\t\t\tx: line.x + line.target.x,\n\t\t\t\t\ty: line.y + line.target.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.log(\"unpaired decrescendo:\", line, decrescendoBottoms);\n\t\t});\n\n\t\t// TODO: volta alternative\n\n\t\t// measure bars\n\t\tconst measureSeparators = staff.tokens.filter(token => token.is(\"MEASURE_SEPARATOR\"));\n\t\tconst singleBars = [];\n\t\tconst groupBars = [];\n\n\t\tfor (let i = 0; i < measureSeparators.length; ++i) {\n\t\t\tconst bar = measureSeparators[i];\n\t\t\tconst nextBar = measureSeparators[i + 1];\n\t\t\tconst inteval = nextBar ? nextBar.x - bar.x : Infinity;\n\n\t\t\tif (inteval < 1) {\n\t\t\t\tgroupBars.push([bar, nextBar]);\n\t\t\t\t++i;\n\t\t\t}\n\t\t\telse\n\t\t\t\tsingleBars.push(bar);\n\t\t};\n\t\t//console.log(\"bars:\", singleBars, groupBars);\n\n\t\tsingleBars.forEach(bar => {\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.vline_BarMeasure,\n\t\t\t\tx: bar.x + bar.sw / 2,\n\t\t\t\ty: 0,\n\t\t\t\textension: {\n\t\t\t\t\ty1: -2,\n\t\t\t\t\ty2: 2,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tgroupBars.forEach(group => {\n\t\t\tlet x = (group[0].x + group[1].x) / 2;\n\t\t\tconst bold0 = group[0].is(\"BOLD\");\n\t\t\tconst bold1 = group[1].is(\"BOLD\");\n\n\t\t\tlet semantic = null;\n\t\t\tif (!bold0 && bold1) {\n\t\t\t\tx = group[0].x;\n\n\t\t\t\tif (!voltaRightXs.some(vx => x - vx < 2))\n\t\t\t\t\tsemantic = SemanticType.vline_BarTerminal;\n\t\t\t}\n\t\t\telse if (bold0 && !bold1)\n\t\t\t\tx = group[1].x;\n\t\t\telse if (!bold0 && !bold1)\n\t\t\t\tsemantic = SemanticType.vline_BarSegment;\n\n\t\t\t//console.log(\"group:\", group[0].x, group[1].x, x);\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.vline_BarMeasure,\n\t\t\t\tx,\n\t\t\t\ty: 0,\n\t\t\t\textension: {\n\t\t\t\t\ty1: -2,\n\t\t\t\t\ty2: 2,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tif (semantic) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic,\n\t\t\t\t\tx,\n\t\t\t\t\ty: 0,\n\t\t\t\t\textension: {\n\t\t\t\t\t\ty1: -2,\n\t\t\t\t\t\ty2: 2,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst graph = new SemanticGraph();\n\t\tgraph.points = points;\n\n\t\treturn graph;\n\t}*/\n\n\tstatic fromPoints(points: SemanticPoint[] = []): SemanticGraph {\n\t\tconst graph = new SemanticGraph();\n\t\tgraph.points = points;\n\n\t\treturn graph;\n\t}\n\n\tgetLayer(semantic: SemanticType): Point[] {\n\t\treturn this.points.filter((p) => p.semantic === semantic);\n\t}\n\n\tgetConfidentLayer(semantic: SemanticType, threshold: number): Point[] {\n\t\treturn this.points.filter((p) => p.semantic === semantic && (!Number.isFinite(p.confidence) || p.confidence >= threshold));\n\t}\n\n\tgetSystemPoints(): SemanticPoint[] {\n\t\treturn this.points.filter((point) => SYSTEM_SEMANTIC_TYPES.includes(point.semantic));\n\t}\n\n\tgetStaffPoints(): SemanticPoint[] {\n\t\treturn this.points.filter((point) => !SYSTEM_SEMANTIC_TYPES.includes(point.semantic));\n\t}\n\n\toffset(x: number, y: number): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tpoint.x += x;\n\t\t\tpoint.y += y;\n\t\t});\n\t}\n\n\tscale(factor: number): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tpoint.x *= factor;\n\t\t\tpoint.y *= factor;\n\t\t});\n\t}\n\n\t// multipy 3x2 matrix\n\ttransform(matrix: [number, number][]): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tlet x = point.x * matrix[0][0] + point.y * matrix[1][0] + matrix[2][0];\n\t\t\tconst y = point.x * matrix[0][1] + point.y * matrix[1][1] + matrix[2][1];\n\n\t\t\tif (point.extension) {\n\t\t\t\tif (Number.isFinite(point.extension.y1)) {\n\t\t\t\t\tconst y1 = point.x * matrix[0][1] + point.extension.y1 * matrix[1][1] + matrix[2][1];\n\t\t\t\t\tconst y2 = point.x * matrix[0][1] + point.extension.y2 * matrix[1][1] + matrix[2][1];\n\t\t\t\t\tx = point.x * matrix[0][0] + (point.extension.y1 + point.extension.y2) * 0.5 * matrix[1][0] + matrix[2][0];\n\n\t\t\t\t\tpoint.extension.y1 = y1;\n\t\t\t\t\tpoint.extension.y2 = y2;\n\t\t\t\t}\n\n\t\t\t\tif (Number.isFinite(point.extension.width)) {\n\t\t\t\t\tconst scaling = Math.sqrt(matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]);\n\t\t\t\t\tpoint.extension.width *= scaling;\n\t\t\t\t\tpoint.extension.height *= scaling;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpoint.x = x;\n\t\t\tpoint.y = y;\n\t\t});\n\t}\n}\n\nexport { SemanticGraph };\n","import { SimpleClass } from './aux_/typedJSON';\nimport {\n\tRect,\n\tChordRect,\n\tVLine,\n\tChordColumn,\n\tEventMeasureColumn,\n\tEventSystem,\n\tSourceImageFile,\n\tPageLayout,\n\tAdditionalLineStack,\n\tTextType,\n\tEventFeature,\n} from './interfaces';\nimport { distance2D, solveOverlapping, roundNumber, trans23 } from './utils';\nimport {\n\tToken,\n\tTextToken,\n\tTokenType,\n\tTokenNoteheads,\n\tTokenFlags,\n\tTokenDots,\n\tTokenRests,\n\tTokenAccessories,\n\tTokenDirectionless,\n\tTokenClefs,\n\tTokenBeams,\n\tTokenTimesigs,\n\tTOKEN_Y_FIXED,\n\tTOKEN_Y_ROUND,\n} from './token';\nimport { EventTerm, ContextedTerm, MarkTerm, TempoTerm, AccessoryDirection, GraceType, ContextType, TremoloLink } from './term';\nimport { SemanticGraph } from './semanticGraph';\nimport { SemanticType, SemanticPoint, NOTEHEAD_WIDTHS, hashSemanticPoint, hashPageSemanticPoint } from './semanticPoint';\nimport { Logger, DummyLogger } from './logger';\n\ntype ChordsFeeder = (si: number, mi: number) => ChordColumn[];\ntype ColumnProcessor = (column: EventMeasureColumn) => EventMeasureColumn;\n\nconst CHORD_X_TOLERANCE = 0.2;\n//const EVENT_X_TOLERANCE = 0.8;\n\nconst STEM_LENGTH_MAX = 6;\n\nconst INDENT_THRESHOLD = 2;\n\nconst MEASURE_SEMANTICS = [\n\tSemanticType.ClefG,\n\tSemanticType.ClefF,\n\tSemanticType.ClefC,\n\tSemanticType.TimesigC44,\n\tSemanticType.TimesigC22,\n\tSemanticType.TimesigZero,\n\tSemanticType.TimesigOne,\n\tSemanticType.TimesigTwo,\n\tSemanticType.TimesigThree,\n\tSemanticType.TimesigFour,\n\tSemanticType.TimesigFive,\n\tSemanticType.TimesigSix,\n\tSemanticType.TimesigSeven,\n\tSemanticType.TimesigEight,\n\tSemanticType.TimesigNine,\n\tSemanticType.OctaveShift8va,\n\tSemanticType.OctaveShift8vb,\n\tSemanticType.OctaveShift0,\n\tSemanticType.Zero,\n\tSemanticType.One,\n\tSemanticType.Two,\n\tSemanticType.Three,\n\tSemanticType.Four,\n\tSemanticType.Five,\n\tSemanticType.Six,\n\tSemanticType.Seven,\n\tSemanticType.Eight,\n\tSemanticType.Nine,\n\tSemanticType.AccNatural,\n\tSemanticType.AccSharp,\n\tSemanticType.AccDoublesharp,\n\tSemanticType.AccFlat,\n\tSemanticType.AccFlatflat,\n\tSemanticType.NoteheadS0,\n\tSemanticType.NoteheadS1,\n\tSemanticType.NoteheadS2,\n\tSemanticType.NoteheadS1stemU,\n\tSemanticType.NoteheadS1stemD,\n\tSemanticType.NoteheadS2stemU,\n\tSemanticType.NoteheadS2stemD,\n\tSemanticType.Rest0,\n\tSemanticType.Rest1,\n\tSemanticType.Rest2,\n\tSemanticType.Rest3,\n\tSemanticType.Rest4,\n\tSemanticType.Rest5,\n\tSemanticType.Rest6,\n\tSemanticType.Rest0W,\n\tSemanticType.RestM1,\n\tSemanticType.SlurBegin,\n\tSemanticType.SlurEnd,\n\tSemanticType.Dot,\n\tSemanticType.f,\n\tSemanticType.p,\n\tSemanticType.m,\n\tSemanticType.n,\n\tSemanticType.r,\n\tSemanticType.s,\n\tSemanticType.z,\n\tSemanticType.ScriptFermata,\n\tSemanticType.ScriptShortFermata,\n\tSemanticType.ScriptSforzato,\n\tSemanticType.ScriptStaccato,\n\tSemanticType.ScriptStaccatissimo,\n\tSemanticType.ScriptTurn,\n\tSemanticType.ScriptTrill,\n\tSemanticType.ScriptSegno,\n\tSemanticType.ScriptCoda,\n\tSemanticType.ScriptArpeggio,\n\tSemanticType.ScriptPrall,\n\tSemanticType.ScriptMordent,\n\tSemanticType.ScriptMarcato,\n\tSemanticType.ScriptTenuto,\n\tSemanticType.ScriptPortato,\n\tSemanticType.PedalStar,\n\tSemanticType.PedalPed,\n\tSemanticType.GraceNotehead,\n\tSemanticType.BeamLeft,\n\tSemanticType.BeamRight,\n\tSemanticType.BeamContinue,\n\tSemanticType.CrescendoBegin,\n\tSemanticType.CrescendoEnd,\n\tSemanticType.DecrescendoBegin,\n\tSemanticType.DecrescendoEnd,\n\tSemanticType.TremoloLeft,\n\tSemanticType.TremoloRight,\n\tSemanticType.TremoloMiddle,\n];\n\nconst STAFF_LINED_SEMANTICS = [\n\tSemanticType.AccNatural,\n\tSemanticType.AccSharp,\n\tSemanticType.AccDoublesharp,\n\tSemanticType.AccFlat,\n\tSemanticType.AccFlatflat,\n\tSemanticType.NoteheadS0,\n\tSemanticType.NoteheadS1,\n\tSemanticType.NoteheadS2,\n\tSemanticType.NoteheadS1stemU,\n\tSemanticType.NoteheadS1stemD,\n\tSemanticType.NoteheadS2stemU,\n\tSemanticType.NoteheadS2stemD,\n];\n\nconst LINED_INTERVAL_SEMANTICS = [SemanticType.SignLined, SemanticType.SignInterval];\n\nconst NOTEHEAD_FOR_STEM_SEMANTICS = [SemanticType.NoteheadS1, SemanticType.NoteheadS2];\n\nconst KEYACC_CANDIDATE_SEMANTICS = {\n\tAccSharp: TokenType.KeySharp,\n\tAccNatural: TokenType.KeyNatural,\n\tAccFlat: TokenType.KeyFlat,\n};\n\nconst NOTEHEAD_TABLE: { [key: string]: { [key: string]: SemanticType } } = {\n\t[SemanticType.NoteheadS1]: {\n\t\tup: SemanticType.NoteheadS1stemU,\n\t\tdown: SemanticType.NoteheadS1stemD,\n\t},\n\t[SemanticType.NoteheadS2]: {\n\t\tup: SemanticType.NoteheadS2stemU,\n\t\tdown: SemanticType.NoteheadS2stemD,\n\t},\n};\n\nconst REST_SEMANTICS = [\n\tSemanticType.Rest0,\n\tSemanticType.Rest1,\n\tSemanticType.Rest2,\n\tSemanticType.Rest3,\n\tSemanticType.Rest4,\n\tSemanticType.Rest5,\n\tSemanticType.Rest6,\n];\n\nconst TOKEN_TO_STEMBEAM = {\n\t[TokenType.BeamLeft]: 'Open',\n\t[TokenType.BeamRight]: 'Close',\n\t[TokenType.BeamContinue]: 'Continue',\n};\n\nconst TEXT_TYPE_ALIAS = {\n\tAlter1: TextType.Alternation1,\n\tAlter2: TextType.Alternation2,\n};\n\ninterface StaffPosition {\n\ty: number;\n\tradius: number;\n}\n\ninterface TextArea {\n\tscore: number;\n\tcx: number;\n\tcy: number;\n\twidth: number;\n\theight: number;\n\ttext: string;\n\ttype: string;\n\ttheta: number;\n\tfeature_dict: Record;\n}\n\ntype Stem = VLine & { direction: 'u' | 'd' };\n\nconst noteheadsXPivot = (xs: number[], direction: 'u' | 'd' | null): number => {\n\tswitch (xs.length) {\n\t\tcase 0:\n\t\t\treturn undefined;\n\n\t\tcase 1:\n\t\t\treturn xs[0];\n\n\t\tcase 2:\n\t\t\treturn direction === 'u' ? Math.min(...xs) : Math.max(...xs);\n\n\t\tdefault: {\n\t\t\tconst mean = xs.reduce((sum, x) => sum + x, 0) / xs.length;\n\t\t\txs.sort((x1, x2) => Math.abs(x1 - mean) - Math.abs(x2 - mean));\n\n\t\t\treturn noteheadsXPivot(xs.slice(0, xs.length - 1), direction);\n\t\t}\n\t}\n};\n\nconst noteheadsPivot = (nhs: Token[]): number =>\n\tnoteheadsXPivot(\n\t\tnhs.map((nh) => (Number.isFinite(nh.pivotX) ? nh.pivotX : nh.x)),\n\t\tnhs[0].direction\n\t);\n\nclass Measure extends SimpleClass {\n\tstatic className = 'Measure';\n\tstatic blackKeys = ['tokens', 'antiTokens'];\n\n\tleft: number;\n\twidth: number;\n\theight: number;\n\n\talternative: boolean;\n\n\ttokens: Token[];\n\tantiTokens: Token[];\n\n\tbarTypes: Record;\n\n\tconstructor(data?: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.tokens = this.tokens || [];\n\t\tthis.antiTokens = this.antiTokens || [];\n\t\tthis.barTypes = this.barTypes || {};\n\t}\n\n\tget right(): number {\n\t\treturn this.left + this.width;\n\t}\n\n\tget noteheads(): Token[] {\n\t\treturn this.tokens.filter((t) => t.isNotehead).sort((n1, n2) => n1.x - n2.x);\n\t}\n\n\tget chordRects(): ChordRect[] {\n\t\tconst noteheads = this.noteheads.filter((nh) =>\n\t\t\t[TokenType.NoteheadS0, TokenType.NoteheadS1stemU, TokenType.NoteheadS2stemU, TokenType.NoteheadS1stemD, TokenType.NoteheadS2stemD].includes(nh.type)\n\t\t);\n\n\t\tlet nulN = 0;\n\n\t\tconst nhmap: Record = noteheads.reduce((map, nh) => {\n\t\t\tconst tip = nh.tip ? `${nh.tip.x}|${nh.tip.y}` : `nul${nulN}`;\n\t\t\tlet key = `${nh.type}|${tip}`;\n\n\t\t\tif (!nh.tip && map[key]) {\n\t\t\t\tif (!map[key].some((hh) => Math.abs(hh.x - nh.x) < NOTEHEAD_WIDTHS.NoteheadS0)) {\n\t\t\t\t\t++nulN;\n\t\t\t\t\tkey = `${nh.type}|nul${nulN}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmap[key] = map[key] || [];\n\t\t\tmap[key].push(nh);\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn Object.values(nhmap).map((nhs) => {\n\t\t\tconst left = Math.min(...nhs.map((nh) => nh.x));\n\t\t\tconst right = Math.max(...nhs.map((nh) => nh.x));\n\t\t\tconst top = Math.min(...nhs.map((nh) => nh.y));\n\t\t\tconst bottom = Math.max(...nhs.map((nh) => nh.y));\n\n\t\t\tconst nh0 = nhs[0];\n\n\t\t\tconst stemX = nh0 && nh0.tip ? nh0.tip.x : left;\n\n\t\t\tlet x = left;\n\t\t\tlet width = right - left;\n\t\t\tlet stemDirection = null;\n\n\t\t\tswitch (nh0.type) {\n\t\t\t\tcase TokenType.NoteheadS0:\n\t\t\t\t\tx -= NOTEHEAD_WIDTHS.NoteheadS0 / 2;\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS0;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase TokenType.NoteheadS1stemU:\n\t\t\t\tcase TokenType.NoteheadS2stemU:\n\t\t\t\t\tstemDirection = 'u';\n\t\t\t\t\tx -= NOTEHEAD_WIDTHS.NoteheadS1;\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase TokenType.NoteheadS1stemD:\n\t\t\t\tcase TokenType.NoteheadS2stemD:\n\t\t\t\t\tstemDirection = 'd';\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tx,\n\t\t\t\twidth,\n\t\t\t\tstemX,\n\t\t\t\tstemDirection,\n\t\t\t\ttop,\n\t\t\t\tbottom,\n\t\t\t\ttip: nh0.tip,\n\t\t\t};\n\t\t});\n\t}\n\n\tget timeWarped(): boolean {\n\t\treturn this.tokens && this.tokens.some((token) => token.timeWarped);\n\t}\n\n\tget additionalLines(): AdditionalLineStack[] {\n\t\tconst chords = this.getChords();\n\t\tconst up = chords\n\t\t\t.filter((chord) => chord.ys.some((y) => y <= -3))\n\t\t\t.map((chord) => ({\n\t\t\t\tleft: chord.left,\n\t\t\t\tright: chord.right,\n\t\t\t\tn: Math.ceil(Math.min(...chord.ys)) + 2,\n\t\t\t}));\n\t\tconst down = chords\n\t\t\t.filter((chord) => chord.ys.some((y) => y >= 3))\n\t\t\t.map((chord) => ({\n\t\t\t\tleft: chord.left,\n\t\t\t\tright: chord.right,\n\t\t\t\tn: Math.floor(Math.max(...chord.ys)) - 2,\n\t\t\t}));\n\n\t\treturn [...up, ...down].map((stack) => ({\n\t\t\tleft: stack.left - 0.28,\n\t\t\tright: stack.right + 0.28,\n\t\t\tn: stack.n,\n\t\t}));\n\t}\n\n\tgetChords(): ChordColumn[] {\n\t\tconst flags = this.tokens.filter((t) => TokenFlags.includes(t.type));\n\t\tconst dots = this.tokens.filter((t) => TokenDots.includes(t.type));\n\t\tconst beams = this.tokens.filter((t) => TokenBeams.includes(t.type));\n\n\t\tconst chordRcs = this.chordRects\n\t\t\t.map((rect) => {\n\t\t\t\tconst noteheads = this.noteheads.filter(\n\t\t\t\t\t(nh) =>\n\t\t\t\t\t\tnh.direction === rect.stemDirection &&\n\t\t\t\t\t\tnh.left >= rect.x &&\n\t\t\t\t\t\tnh.right <= rect.x + rect.width + CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tnh.y >= rect.top &&\n\t\t\t\t\t\tnh.y <= rect.bottom\n\t\t\t\t);\n\t\t\t\tnoteheads.sort((n1, n2) => n2.y - n1.y);\n\t\t\t\tconst ys = noteheads.map((nh) => nh.y);\n\t\t\t\tconst noteIds = noteheads.map((nh) => nh.id);\n\n\t\t\t\tconst division = noteheads.reduce((d, nh) => Math.max(d, nh.division), 0);\n\n\t\t\t\treturn {\n\t\t\t\t\trect,\n\t\t\t\t\tleft: rect.x,\n\t\t\t\t\tright: rect.x + rect.width,\n\t\t\t\t\tpivotX: noteheadsPivot(noteheads),\n\t\t\t\t\tys,\n\t\t\t\t\ttip: rect.tip,\n\t\t\t\t\tnoteIds,\n\t\t\t\t\tdivision,\n\t\t\t\t\tdots: null,\n\t\t\t\t\trest: false,\n\t\t\t\t\tstemDirection: rect.stemDirection,\n\t\t\t\t\tbeam: null,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.sort((c1, c2) => c2.left - c1.left);\n\n\t\tconst accs = new Set();\n\n\t\tconst chords = chordRcs.map(({ rect, ...chord }) => {\n\t\t\tif (chord.division >= 1) {\n\t\t\t\t// NOTE: notehead-s1 may have flags too\n\t\t\t\tconst flagRange = [rect.bottom, rect.top];\n\t\t\t\tswitch (rect.stemDirection) {\n\t\t\t\t\tcase 'u':\n\t\t\t\t\t\tflagRange[0] = rect.tip ? rect.tip.y - 0.2 : rect.top - STEM_LENGTH_MAX - 0.5;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tflagRange[1] = rect.tip ? rect.tip.y + 0.2 : rect.bottom + STEM_LENGTH_MAX + 0.5;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst nearbyFlags = flags.filter(\n\t\t\t\t\t(flag) =>\n\t\t\t\t\t\t!accs.has(flag.id) &&\n\t\t\t\t\t\tflag.x > rect.stemX - CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tflag.x < rect.stemX + CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tflag.y > flagRange[0] &&\n\t\t\t\t\t\tflag.y < flagRange[1]\n\t\t\t\t);\n\t\t\t\tchord.division = nearbyFlags.reduce((d, flag) => Math.max(d, flag.division), chord.division);\n\n\t\t\t\tnearbyFlags.forEach((flag) => accs.add(flag.id));\n\n\t\t\t\tconst beamToken = rect.tip && beams.find((t) => Math.abs(rect.tip.x - t.x) < 0.3 && Math.abs(rect.tip.y - t.y) < 0.7);\n\t\t\t\tif (beamToken) chord.beam = TOKEN_TO_STEMBEAM[beamToken.type];\n\t\t\t}\n\n\t\t\tconst nearbyDots = dots.filter(\n\t\t\t\t(dot) =>\n\t\t\t\t\t!accs.has(dot.id) &&\n\t\t\t\t\tdot.x > rect.x + rect.width - 0.2 &&\n\t\t\t\t\tdot.x < rect.x + rect.width + 1.2 &&\n\t\t\t\t\tdot.y > rect.top - 1 &&\n\t\t\t\t\tdot.y <= rect.bottom + 0.5\n\t\t\t);\n\t\t\tchord.dots = nearbyDots.reduce((v, dot) => Math.max(v, dot.dots), 0);\n\n\t\t\tnearbyDots.forEach((dot) => accs.add(dot.id));\n\n\t\t\treturn chord;\n\t\t});\n\n\t\tchords.reverse();\n\n\t\treturn chords;\n\t}\n\n\tgetRests(): ChordColumn[] {\n\t\tconst rests = this.tokens.filter((t) => TokenRests.includes(t.type));\n\t\tconst dots = this.tokens.filter((t) => TokenDots.includes(t.type));\n\n\t\treturn rests.map((rest) => {\n\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > rest.x + 0.5 && dot.x < rest.x + 2 && dot.y > rest.y - 1 && dot.y < rest.y + 0.5);\n\t\t\tconst dotValue = nearbyDots.reduce((v, dot) => Math.max(v, dot.dots), 0);\n\n\t\t\treturn {\n\t\t\t\tleft: rest.x - 0.75,\n\t\t\t\tright: rest.x + 0.75,\n\t\t\t\tpivotX: rest.x,\n\t\t\t\trest: true,\n\t\t\t\tys: [rest.y],\n\t\t\t\tnoteIds: [rest.id],\n\t\t\t\tdots: dotValue,\n\t\t\t\tdivision: rest.division,\n\t\t\t\tstemDirection: null,\n\t\t\t};\n\t\t});\n\t}\n\n\tgetEvents(): ChordColumn[] {\n\t\treturn [...this.getChords(), ...this.getRests()].sort((e1, e2) => e1.left - e2.left);\n\t}\n\n\tgetContexts(fields = {}): ContextedTerm[] {\n\t\treturn this.tokens\n\t\t\t.filter((t) => t.isContexted)\n\t\t\t.sort((n1, n2) => n1.x - n2.x)\n\t\t\t.map(\n\t\t\t\t(token) =>\n\t\t\t\t\tnew ContextedTerm({\n\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\ty: token.y,\n\t\t\t\t\t\ttokenType: token.type,\n\t\t\t\t\t\t...fields,\n\t\t\t\t\t})\n\t\t\t);\n\t}\n\n\tassignAccessoriesOnEvents(events: ChordColumn[]): void {\n\t\tevents.forEach((event) => (event.accessories = event.accessories || []));\n\n\t\tconst accessories = this.tokens.filter((token) => TokenAccessories.includes(token.type));\n\t\t//console.log(\"accessories:\", accessories);\n\t\taccessories.forEach((accessory) => {\n\t\t\tconst relatedEvents = events.filter((event) => accessory.x > event.left - 1 && accessory.x < event.right + 1);\n\n\t\t\tif (relatedEvents.length > 0) {\n\t\t\t\tlet owner = relatedEvents[0];\n\t\t\t\tif (relatedEvents.length > 1) {\n\t\t\t\t\towner = relatedEvents\n\t\t\t\t\t\t.map((event) => ({ event, d: Math.min(...event.ys.map((y) => Math.abs(y - accessory.y))) }))\n\t\t\t\t\t\t.sort(({ d: d1 }, { d: d2 }) => d1 - d2)\n\t\t\t\t\t\t.map(({ event }) => event)[0];\n\t\t\t\t}\n\t\t\t\t//console.log(\"relatedEvents:\", accessory, owner);\n\n\t\t\t\tlet direction = accessory.y > Math.max(...owner.ys) ? AccessoryDirection.Down : AccessoryDirection.Up;\n\t\t\t\tif (TokenDirectionless.includes(accessory.type)) direction = null;\n\n\t\t\t\towner.accessories.push({\n\t\t\t\t\ttype: accessory.type,\n\t\t\t\t\tid: accessory.id,\n\t\t\t\t\tdirection,\n\t\t\t\t\tx: accessory.x - owner.left,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"alone accessory:\", accessory.type);\n\t\t});\n\n\t\t// arpeggio\n\t\tconst sortEvents = [...events];\n\t\tsortEvents.sort((e1, e2) => e1.left - e2.left);\n\n\t\tconst arpeggios = this.tokens.filter((token) => token.type === TokenType.ScriptArpeggio);\n\t\tarpeggios.forEach((arpeggio) => {\n\t\t\tconst owner = sortEvents.find(\n\t\t\t\t(event) => arpeggio.x < event.left && event.ys.some((y) => y < arpeggio.y + 0.25) && event.ys.some((y) => y > arpeggio.y)\n\t\t\t);\n\t\t\t//const owner = sortEvents.find(event => event.left - leftMost.left < 2 && event.ys.some(y => Math.abs(y - arpeggio.y + 0.25) < 0.5));\n\t\t\tif (owner) {\n\t\t\t\towner.accessories.push({\n\t\t\t\t\ttype: TokenType.ScriptArpeggio,\n\t\t\t\t\tid: arpeggio.id,\n\t\t\t\t\tx: arpeggio.x - owner.left,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"alone arpeggio:\", arpeggio);\n\t\t});\n\n\t\t// grace noteheads\n\t\tconst graceNhs = this.tokens.filter((token) => token.type === TokenType.GraceNotehead);\n\t\tgraceNhs.forEach((grace) => {\n\t\t\tconst event = events.find((event) => grace.x > event.left && grace.x < event.right && event.ys.some((y) => Math.abs(grace.y - y) < 0.4));\n\t\t\tif (event) event.grace = GraceType.Grace;\n\t\t});\n\n\t\t// tremolos\n\t\tconst tremolsLs = this.tokens.filter((token) => token.type === TokenType.TremoloLeft);\n\t\tconst tremolsRs = this.tokens.filter((token) => token.type === TokenType.TremoloRight);\n\t\tconst tremolsMs = this.tokens.filter((token) => token.type === TokenType.TremoloMiddle);\n\n\t\tconst tevents = events\n\t\t\t.filter((event) => !event.rest)\n\t\t\t.map((event) => {\n\t\t\t\tconst ys = [...event.ys];\n\t\t\t\tif (event.tip) ys.push(event.tip.y);\n\t\t\t\telse {\n\t\t\t\t\tys.push(event.ys[0] + 2);\n\t\t\t\t\tys.push(event.ys[event.ys.length - 1] - 2);\n\t\t\t\t}\n\n\t\t\t\tconst stemL = event.tip ? event.tip.x : event.left;\n\t\t\t\tconst stemR = event.tip ? event.tip.x : event.right;\n\n\t\t\t\treturn {\n\t\t\t\t\tevent,\n\t\t\t\t\ttop: Math.min(...ys),\n\t\t\t\t\tbottom: Math.max(...ys),\n\t\t\t\t\tstemL,\n\t\t\t\t\tstemR,\n\t\t\t\t};\n\t\t\t});\n\n\t\ttremolsMs.forEach((tm) => {\n\t\t\tconst te = tevents.find((te) => {\n\t\t\t\tif (te.event.tip) return tm.y > te.top && tm.y < te.bottom && Math.abs(tm.x - te.event.tip.x) < 0.3;\n\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t}\n\t\t});\n\t\ttremolsLs.forEach((tl) => {\n\t\t\tconst te = tevents.find((te) => tl.y > te.top && tl.y < te.bottom && tl.x > te.stemR && tl.x < te.stemR + 1.6);\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t\tte.event.tremoloLink = TremoloLink.Pitcher;\n\t\t\t}\n\t\t});\n\t\ttremolsRs.forEach((tr) => {\n\t\t\tconst te = tevents.find((te) => tr.y > te.top && tr.y < te.bottom && tr.x < te.stemL && tr.x > te.stemL - 1.6);\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t\tte.event.tremoloLink = TremoloLink.Catcher;\n\t\t\t}\n\t\t});\n\t}\n\n\tassignFeaturesOnEvents(events: ChordColumn[], semantics: SemanticPoint[]): void {\n\t\tconst points = semantics.filter((point) => point.x > this.left && point.x < this.right);\n\t\tconst rests = points.filter((point) => REST_SEMANTICS.includes(point.semantic));\n\t\tconst flags = points.filter((point) => point.semantic === SemanticType.Flag3);\n\t\tconst dotPs = points.filter((point) => point.semantic === SemanticType.Dot);\n\t\tconst beamLs = points.filter((points) => points.semantic === SemanticType.BeamLeft);\n\t\tconst beamMs = points.filter((points) => points.semantic === SemanticType.BeamContinue);\n\t\tconst beamRs = points.filter((points) => points.semantic === SemanticType.BeamRight);\n\t\tconst gracePs = points.filter((point) => point.semantic === SemanticType.GraceNotehead);\n\t\tconst tremoloRs = points.filter((point) => point.semantic === SemanticType.TremoloRight);\n\t\tconst stems = points.filter((point) => point.semantic === SemanticType.vline_Stem);\n\t\tconst s0 = points.filter((point) => point.semantic === SemanticType.NoteheadS0);\n\t\tconst s1 = points.filter((point) => point.semantic === SemanticType.NoteheadS1);\n\t\tconst s2 = points.filter((point) => point.semantic === SemanticType.NoteheadS2);\n\n\t\tevents.forEach((event) => {\n\t\t\tconst cx = event.tip ? event.tip.x : (event.left + event.right) / 2;\n\t\t\tconst top = event.tip ? Math.min(event.tip.y, event.ys[event.ys.length - 1]) : event.ys[event.ys.length - 1];\n\t\t\tconst bottom = event.tip ? Math.max(event.tip.y, event.ys[0]) : event.ys[0];\n\t\t\tconst stemL = event.tip ? event.tip.x : event.left;\n\n\t\t\tconst divisions = [0, 0, 0, 0, 0, 0, 0];\n\t\t\tif (event.rest) {\n\t\t\t\tconst i_rests = rests.filter((point) => distance2D(point, { x: cx, y: event.ys[0] }) < 0.5);\n\t\t\t\ti_rests.forEach((r) => {\n\t\t\t\t\tconst d = REST_SEMANTICS.indexOf(r.semantic);\n\t\t\t\t\tdivisions[d] = Math.max(divisions[d], r.confidence);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst nhs = [s0, s1, s2]\n\t\t\t\t\t.map((ss) => ss.filter((nh) => nh.x > event.left && nh.x < event.right && nh.y > top - 0.25 && nh.y < bottom + 0.25))\n\t\t\t\t\t.map((ss) => Math.max(0, ...ss.map((nh) => nh.confidence)));\n\n\t\t\t\tconst i_flags = flags.filter((flag) => flag.y > top - 0.2 && flag.y < bottom + 0.2 && Math.abs(flag.x - cx) < 0.2);\n\t\t\t\ti_flags.sort((f1, f2) => f2.confidence - f1.confidence);\n\n\t\t\t\tdivisions[0] = nhs[0];\n\t\t\t\tdivisions[1] = nhs[1];\n\t\t\t\tdivisions[2] = nhs[2];\n\t\t\t\tArray(divisions.length - 3)\n\t\t\t\t\t.fill(0)\n\t\t\t\t\t.forEach((_, i) => (divisions[3 + i] = i_flags[i] ? i_flags[i].confidence : 0));\n\t\t\t}\n\n\t\t\tconst i_dots = dotPs.filter((dot) => dot.x > cx && dot.x < event.right + 2.6);\n\t\t\tconst dots2 = i_dots.filter((dot) => i_dots.some((d) => dot.x > d.x && Math.abs(dot.y - d.y) < 0.2));\n\t\t\tconst dots = [Math.max(0, ...i_dots.map((dot) => dot.confidence)), Math.max(0, ...dots2.map((dot) => dot.confidence))];\n\n\t\t\tconst beams = [beamLs, beamMs, beamRs]\n\t\t\t\t.map((bs) => bs.filter((b) => Math.abs(b.x - cx) < 0.2 && b.y > top - 0.2 && b.y < bottom + 0.2))\n\t\t\t\t.map((bs) => Math.max(0, ...bs.map((b) => b.confidence)));\n\n\t\t\tconst u_stems = stems.filter((stem) => distance2D({ x: cx, y: event.ys[0] }, { x: stem.x, y: stem.extension.y2 }) < 0.5);\n\t\t\tconst d_stems = stems.filter((stem) => distance2D({ x: cx, y: event.ys[event.ys.length - 1] }, { x: stem.x, y: stem.extension.y1 }) < 0.5);\n\t\t\tconst stemDirections = [Math.max(0, ...u_stems.map((stem) => stem.confidence)), Math.max(0, ...d_stems.map((stem) => stem.confidence))];\n\n\t\t\tconst graces = gracePs.filter((grace) => Math.abs(grace.x - cx) < 0.6 && event.ys.some((y) => Math.abs(grace.y - y) < 0.4));\n\t\t\tconst grace = Math.max(0, ...graces.map((grace) => grace.confidence));\n\n\t\t\tconst tremolos =\n\t\t\t\tevent.division === 0\n\t\t\t\t\t? tremoloRs.filter((tremolo) => tremolo.x > event.left - 2 && tremolo.x < event.right)\n\t\t\t\t\t: tremoloRs.filter((tremolo) => tremolo.y > top - 0.04 && tremolo.y < bottom + 0.04 && tremolo.x > stemL - 2 && tremolo.x < stemL);\n\t\t\tconst tremoloCatcher = Math.max(0, ...tremolos.map((tremolo) => tremolo.confidence));\n\n\t\t\tevent.feature = {\n\t\t\t\tdivisions,\n\t\t\t\tdots,\n\t\t\t\tbeams,\n\t\t\t\tstemDirections,\n\t\t\t\tgrace,\n\t\t\t\ttremoloCatcher,\n\t\t\t} as EventFeature;\n\t\t});\n\t}\n}\n\nclass Staff extends SimpleClass {\n\tstatic className = 'Staff';\n\tstatic blackKeys = ['index', 'semanticTop', 'semanticBttom'];\n\n\tindex?: number; // staff index in full staff layout\n\n\t// in units\n\ttop: number;\n\theight: number;\n\tstaffY: number;\n\n\tsemanticTop: number;\n\tsemanticBottom: number;\n\n\tbackgroundImage: string | Buffer;\n\tmaskImage: string | Buffer;\n\timagePosition: Rect;\n\n\tmeasures: Measure[];\n\n\tsemantics: SemanticPoint[];\n\n\tconstructor({ measureCount = null, measureBars = null, ...data }: Record = {}) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.height = this.height || 10;\n\t\tthis.staffY = this.staffY || 5;\n\n\t\tif (measureBars) {\n\t\t\tlet left = 0;\n\t\t\tthis.measures = measureBars.map((endX) => {\n\t\t\t\tconst measure = new Measure({ left, width: endX - left, height: this.height });\n\t\t\t\tleft = endX;\n\n\t\t\t\treturn measure;\n\t\t\t});\n\t\t} else if (measureCount)\n\t\t\tthis.measures = Array(measureCount)\n\t\t\t\t.fill(null)\n\t\t\t\t.map(() => new Measure());\n\t\telse this.measures = [];\n\t}\n\n\t// relative to staffY\n\tget noteRange(): { top: number; bottom: number } {\n\t\tconst noteheads: Token[] = [].concat(...this.measures.map((measure) => measure.noteheads));\n\t\tconst ys = noteheads.map((note) => note.y);\n\t\tconst top = Math.min(-2, ...ys);\n\t\tconst bottom = Math.max(2, ...ys);\n\n\t\treturn { top, bottom };\n\t}\n\n\tget additionalLines(): AdditionalLineStack[] {\n\t\treturn [].concat(...this.measures.map((measure) => measure.additionalLines));\n\t}\n\n\trearrangeMeasures(measureBars: number[]): void {\n\t\tif (!measureBars.length) {\n\t\t\tconsole.warn('rearrangeMeasures error, measureBars are empty.');\n\t\t\treturn;\n\t\t}\n\n\t\tconst tokens = this.measures?.map((measure) => measure.tokens).flat(1) || [];\n\n\t\tlet left = 0;\n\t\tthis.measures = measureBars.map((endX) => {\n\t\t\tconst measure = new Measure({ left, width: endX - left, height: this.height });\n\t\t\tleft = endX;\n\n\t\t\treturn measure;\n\t\t});\n\n\t\tthis.reassignTokens(tokens);\n\t}\n\n\treassignTokens(tokens: Token[] = null): void {\n\t\tif (!tokens) tokens = [].concat(...this.measures.map((measure) => measure.tokens));\n\n\t\tthis.measures.forEach((measure) => (measure.tokens = []));\n\n\t\ttokens.forEach((token) => {\n\t\t\tfor (const measure of this.measures) {\n\t\t\t\tif (token.x < measure.right) {\n\t\t\t\t\tmeasure.tokens.push(token);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tassignSemantics(graph: SemanticGraph): void {\n\t\tthis.semantics = graph.getStaffPoints();\n\t}\n\n\t// generate tokens from semantics\n\tassemble(threshold: number, system: System, logger: Logger = new DummyLogger()): void {\n\t\tif (!this.semantics) return;\n\n\t\tlet points = system.qualifiedSemantics(this.semantics, threshold);\n\t\tpoints = solveOverlapping(points);\n\n\t\t// tempo noteheads\n\t\tconst tempoNhs = points.filter((point) => point.semantic === SemanticType.TempoNotehead);\n\t\ttempoNhs.forEach((tempoNh) => {\n\t\t\tconst index = points.findIndex((point) => /^Notehead/.test(point.semantic) && distance2D(tempoNh, point) < 0.3);\n\t\t\t//console.log(\"temponh:\", tempoNh, index, points[index]);\n\t\t\tif (index >= 0) points.splice(index, 1);\n\t\t\t// TODO: construct tempo term\n\t\t});\n\n\t\tconst antiP = (id: string): SemanticPoint | null => {\n\t\t\tif (system.displacementSemantics?.[id]) return this.semantics.find((p) => p.id === id);\n\n\t\t\treturn null;\n\t\t};\n\n\t\tpoints.filter((point) => MEASURE_SEMANTICS.includes(point.semantic)).forEach((point) => this.appendPoint(point, { points }));\n\n\t\t// noteheads with stem from noteheads & stems\n\t\tconst stems: Stem[] = points\n\t\t\t.filter((point) => point.semantic === SemanticType.vline_Stem)\n\t\t\t.filter((stem) => stem.extension.y2 - stem.extension.y1 > 1.5) // exclude too short stems\n\t\t\t.map((p) => ({\n\t\t\t\tx: p.x,\n\t\t\t\ty1: p.extension.y1,\n\t\t\t\ty2: p.extension.y2,\n\t\t\t\tdirection: null,\n\t\t\t}));\n\t\tconst noteheads = points.filter(\n\t\t\t(point) => NOTEHEAD_FOR_STEM_SEMANTICS.includes(point.semantic) && point.y > this.semanticTop && point.y < this.semanticBottom\n\t\t);\n\t\tconst rootNhs = new Set();\n\n\t\t// for 2nd degree chord notes\n\t\tconst nhOffsetX = (nh: SemanticPoint, stem: Stem, down: boolean): number => {\n\t\t\tif ((down ? 1 : 0) ^ (nh.x < stem.x ? 1 : 0)) return 0;\n\n\t\t\tconst offset = NOTEHEAD_WIDTHS[nh.semantic];\n\n\t\t\treturn down ? -offset : offset;\n\t\t};\n\n\t\t// find root noteheads on stem\n\t\tstems.forEach((stem) => {\n\t\t\tconst attachedHeads = noteheads.filter(\n\t\t\t\t(nh) =>\n\t\t\t\t\tMath.abs(nh.x - stem.x) - NOTEHEAD_WIDTHS[nh.semantic] / 2 < 0.28 &&\n\t\t\t\t\tMath.abs(nh.x - stem.x) - NOTEHEAD_WIDTHS[nh.semantic] / 2 > -0.44 && // for grace noteheads, more close to their stem\n\t\t\t\t\tnh.y > stem.y1 - 0.5 &&\n\t\t\t\t\tnh.y < stem.y2 + 0.5 &&\n\t\t\t\t\t!(nh.x > stem.x && nh.y > stem.y2) &&\n\t\t\t\t\t!(nh.x < stem.x && nh.y < stem.y1)\n\t\t\t);\n\t\t\t//if (stem.x===102.0625 && stem.y2===1.875)\n\t\t\t//\tdebugger;\n\t\t\tif (attachedHeads.length) {\n\t\t\t\tattachedHeads.sort((n1, n2) => n1.y - n2.y);\n\n\t\t\t\tconst topDist = Math.min(...attachedHeads.map((nh) => nh.y - stem.y1));\n\t\t\t\tconst bottomDist = Math.min(...attachedHeads.map((nh) => stem.y2 - nh.y));\n\t\t\t\tif (Math.min(topDist, bottomDist) > 0.5) return; // no root notehead on this stem\n\n\t\t\t\tconst down = topDist < bottomDist;\n\t\t\t\tstem.direction = down ? 'd' : 'u';\n\n\t\t\t\tif (!down) attachedHeads.reverse();\n\t\t\t\tconst root = attachedHeads[0];\n\n\t\t\t\tconst semantic = down ? NOTEHEAD_TABLE[root.semantic].down : NOTEHEAD_TABLE[root.semantic].up;\n\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: root.id,\n\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\tx: stem.x + nhOffsetX(root, stem, down),\n\t\t\t\t\t\ty: root.y,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\tconfidence: root.confidence,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttip: { x: stem.x, y: down ? stem.y2 : stem.y1 },\n\t\t\t\t\t\tantiPoint: antiP(root.id),\n\t\t\t\t\t\tpoints,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\trootNhs.add(root.id);\n\t\t\t}\n\t\t});\n\n\t\t// non-root noteheads\n\t\tnoteheads\n\t\t\t.filter((nh) => !rootNhs.has(nh.id))\n\t\t\t.forEach((nh) => {\n\t\t\t\tconst nearStems = stems\n\t\t\t\t\t.filter((stem) => Math.abs(stem.x - nh.x) < 2 && nh.y > stem.y1 && nh.y < stem.y2)\n\t\t\t\t\t.sort((s1, s2) => Math.abs(s1.x - nh.x) - Math.abs(s2.x - nh.x));\n\t\t\t\tconst stem = nearStems[0];\n\t\t\t\tif (stem) {\n\t\t\t\t\tconst down = stem.direction === 'd';\n\t\t\t\t\tconst semantic = down ? NOTEHEAD_TABLE[nh.semantic].down : NOTEHEAD_TABLE[nh.semantic].up;\n\n\t\t\t\t\tthis.appendPoint(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: nh.id,\n\t\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\t\tx: stem.x + nhOffsetX(nh, stem, down),\n\t\t\t\t\t\t\ty: nh.y,\n\t\t\t\t\t\t\tpivotX: nh.x,\n\t\t\t\t\t\t\tconfidence: nh.confidence,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttip: { x: stem.x, y: down ? stem.y2 : stem.y1 },\n\t\t\t\t\t\t\tantiPoint: antiP(nh.id),\n\t\t\t\t\t\t\tpoints,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else logger.debug('isolated notehead:', system.index, this.index, nh);\n\t\t\t});\n\n\t\t// group flags\n\t\tconst flags = points.filter((point) => point.semantic === SemanticType.Flag3);\n\t\tflags.sort((f1, f2) => f1.x - f2.x);\n\t\tthis.appendFlags(flags, stems);\n\n\t\t// group dots\n\t\tconst dots = points\n\t\t\t.filter((point) => point.semantic === SemanticType.Dot)\n\t\t\t.map((dot) => {\n\t\t\t\tconst y = roundNumber(dot.y, 0.5);\n\t\t\t\treturn { x: dot.x, y };\n\t\t\t});\n\t\tconst dotLines: { [key: number]: SemanticPoint[] } = dots.reduce((table, dot) => {\n\t\t\ttable[dot.y] = table[dot.y] || [];\n\t\t\ttable[dot.y].push(dot);\n\t\t\treturn table;\n\t\t}, {});\n\t\tObject.entries(dotLines).forEach(([sy, line]) => {\n\t\t\tconst y = Number(sy);\n\t\t\tif (line.length > 1) {\n\t\t\t\tline.sort((d1, d2) => d1.x - d2.x);\n\t\t\t\tfor (let i = 0; i < line.length - 1; i++) {\n\t\t\t\t\tconst dot = line[i];\n\t\t\t\t\tif (line.find((d) => d.x > dot.x && d.x - dot.x < 1.2)) {\n\t\t\t\t\t\tthis.appendPoint(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: dot.id,\n\t\t\t\t\t\t\t\tx: dot.x,\n\t\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\t\tconfidence: dot.confidence,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: TokenType.DotDot, antiPoint: antiP(dot.id), points }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// pair key accidentals\n\t\tconst keyaccs = points.filter((point) => point.semantic === SemanticType.KeyAcc);\n\t\tconst accs = points.filter((point) => KEYACC_CANDIDATE_SEMANTICS[point.semantic]);\n\t\taccs.forEach((acc) => {\n\t\t\tif (keyaccs.some((key) => Math.abs(acc.x - key.x) < 0.5 && Math.abs(acc.y - key.y) < 1)) {\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: acc.id,\n\t\t\t\t\t\tx: acc.x,\n\t\t\t\t\t\ty: acc.y,\n\t\t\t\t\t\tconfidence: acc.confidence,\n\t\t\t\t\t},\n\t\t\t\t\t{ type: KEYACC_CANDIDATE_SEMANTICS[acc.semantic], points }\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\t// octave shift heads\n\t\tconst octs = points.filter((point) => point.semantic === SemanticType.OctaveShift8);\n\t\tocts.forEach((oct) => {\n\t\t\tconst type = oct.y < 0 ? TokenType.OctaveShift8va : TokenType.OctaveShift8vb;\n\t\t\tthis.appendPoint(\n\t\t\t\t{\n\t\t\t\t\tid: oct.id,\n\t\t\t\t\tx: oct.x,\n\t\t\t\t\ty: oct.y,\n\t\t\t\t\tconfidence: oct.confidence,\n\t\t\t\t},\n\t\t\t\t{ type, points }\n\t\t\t);\n\t\t});\n\n\t\t// group volta dots\n\t\tconst voltaDots = this.semantics.filter((point) => [SemanticType.VoltaLeft, SemanticType.VoltaRight].includes(point.semantic));\n\t\tvoltaDots.sort((d1, d2) => d1.x - d2.x);\n\t\tconst voltaGroups: Record> = voltaDots.reduce(\n\t\t\t(groups, dot) => {\n\t\t\t\tconst group = groups[dot.semantic];\n\t\t\t\tconst xs = Array.from(Object.keys(group)).map(Number);\n\t\t\t\tconst x = xs.find((x) => dot.x < x + 0.2) || dot.x;\n\n\t\t\t\tgroup[x] = groups[dot.semantic][x] || [];\n\t\t\t\tgroup[x].push(dot);\n\n\t\t\t\treturn groups;\n\t\t\t},\n\t\t\t{ [SemanticType.VoltaLeft]: {}, [SemanticType.VoltaRight]: {} }\n\t\t);\n\t\tfor (const [type, group] of Object.entries(voltaGroups)) {\n\t\t\tObject.values(group).forEach((dots) => {\n\t\t\t\tif (dots.length > 1) {\n\t\t\t\t\tconst confidence = dots.reduce((sum, dot) => sum + dot.confidence, 0);\n\t\t\t\t\tif (dots[0].y * dots[1].y < 0 && confidence >= threshold * 2) this.appendPoint(dots[0], { type: TokenType[type] });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tappendPoint(\n\t\tpoint: Partial,\n\t\t{ type, points = null, antiPoint, ...fields }: { type?: TokenType; antiPoint?: SemanticPoint; [key: string]: any } = {}\n\t): void {\n\t\t//console.log(\"appendPoint.0:\", point, point.x, point.y);\n\t\tconst x = point.x;\n\t\tconst measure = this.measures.find((measure) => x < measure.left + measure.width);\n\t\tif (!measure)\n\t\t\t// drop tokens out of measures range\n\t\t\treturn;\n\n\t\t// lined or interval\n\t\tlet lined = false;\n\t\tlet interval = false;\n\t\tif (STAFF_LINED_SEMANTICS.includes(point.semantic)) {\n\t\t\tconsole.assert(points, 'argument of points for this semantic is required:', point.semantic);\n\t\t\tconst signs = points.filter((p) => LINED_INTERVAL_SEMANTICS.includes(p.semantic) && Math.abs(p.y - point.y) < 0.2 && Math.abs(p.x - point.x) < 1.2);\n\t\t\tif (signs.some((s) => s.semantic === SemanticType.SignLined)) lined = true;\n\t\t\telse if (signs.some((s) => s.semantic === SemanticType.SignInterval)) interval = true;\n\t\t}\n\n\t\ttype = type || TokenType[point.semantic];\n\t\tconst fixedY = TOKEN_Y_FIXED[type];\n\t\tlet roundY = TOKEN_Y_ROUND[type];\n\n\t\tif (lined || interval) roundY = Math.max(roundY, 1);\n\n\t\tlet y = point.y;\n\t\tif (Number.isFinite(fixedY)) y = fixedY;\n\t\telse if (roundY) {\n\t\t\tif (interval) y = roundNumber(y + 0.5, roundY) - 0.5;\n\t\t\telse y = roundNumber(y, roundY);\n\t\t}\n\t\t//if (lined || interval)\n\t\t//\tconsole.log(\"round sign:\", point.semantic, y, lined, interval);\n\n\t\tconst holder = measure.tokens.find((token) => token.type === type && Math.abs(token.x - x) < 0.1 && Math.abs(token.y - y) < 0.1);\n\t\tif (holder) {\n\t\t\tif (Number.isFinite(holder.confidence) && holder.confidence < point.confidence) {\n\t\t\t\tholder.x = x;\n\t\t\t\tholder.y = y;\n\t\t\t\tholder.confidence = point.confidence;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// exlude clef out of pitch range\n\t\tif (TokenClefs.includes(type)) {\n\t\t\tif (Math.abs(y) > 3) return;\n\t\t}\n\n\t\t// TODO: exclude overlapped pair by a token prior table\n\n\t\tmeasure.tokens.push(\n\t\t\tnew Token({\n\t\t\t\tid: point.id,\n\t\t\t\ttype,\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\tpivotX: point.pivotX,\n\t\t\t\tconfidence: point.confidence,\n\t\t\t\t...fields,\n\t\t\t})\n\t\t);\n\n\t\tif (antiPoint) {\n\t\t\tmeasure.antiTokens.push(\n\t\t\t\tnew Token({\n\t\t\t\t\tid: antiPoint.id,\n\t\t\t\t\ttype,\n\t\t\t\t\tx,\n\t\t\t\t\ty: antiPoint.y,\n\t\t\t\t\tconfidence: antiPoint.confidence,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\n\tappendFlags(flags: SemanticPoint[], stems: Stem[]): void {\n\t\t//console.log(\"flags:\", flags);\n\t\tconst stemGroups = stems\n\t\t\t.map((stem) => ({\n\t\t\t\t...stem,\n\t\t\t\tflags: flags.filter((flag) => Math.abs(flag.x - stem.x) < 0.3 && flag.y > stem.y1 - 0.5 && flag.y < stem.y2 + 0.5),\n\t\t\t}))\n\t\t\t.filter((group) => group.flags.length);\n\n\t\tstemGroups.forEach((group) => {\n\t\t\tconst mainFlag = group.flags.reduce((main, flag) => (main && main.confidence > flag.confidence ? main : flag), null);\n\n\t\t\t//const upDistance = mainFlag.y - group.y1;\n\t\t\t//const downDistance = group.y2 - mainFlag.y;\n\t\t\t//const downward = downDistance < upDistance;\n\t\t\tconst downward = group.direction === 'd';\n\n\t\t\tconst tailY = downward ? Math.min(group.y2, group.y1 + STEM_LENGTH_MAX) : Math.max(group.y1, group.y2 - STEM_LENGTH_MAX);\n\n\t\t\tconst flagTips = group.flags.map((flag) => ({\n\t\t\t\ttip: (tailY - flag.y) * (downward ? 1 : -1),\n\t\t\t\tconfidence: flag.confidence,\n\t\t\t}));\n\t\t\tconst count = flagTips.filter((f) => f.tip < 2 || f.confidence > mainFlag.confidence * 0.7).length;\n\n\t\t\tconst type = TokenFlags[count - 1];\n\t\t\tif (type) {\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: group.flags[0].id,\n\t\t\t\t\t\tx: group.x,\n\t\t\t\t\t\ty: tailY,\n\t\t\t\t\t\tconfidence: Math.min(...group.flags.map((flag) => flag.confidence)),\n\t\t\t\t\t},\n\t\t\t\t\t{ type }\n\t\t\t\t);\n\t\t\t\t//console.log(\"flag:\", type);\n\t\t\t}\n\t\t});\n\t}\n\n\tclearTokens(): void {\n\t\tthis.measures.forEach((measure) => (measure.tokens = []));\n\t\tthis.semantics = [];\n\t}\n\n\tclearPredictedTokens(): void {\n\t\tthis.measures.forEach((measure) => (measure.tokens = measure.tokens.filter((token) => !token.isPredicted)));\n\t}\n}\n\nclass System extends SimpleClass {\n\tstatic className = 'System';\n\tstatic blackKeys = ['index', 'pageIndex', 'prev', 'next', 'headMeasureIndex', 'tokens', 'indent'];\n\n\tindex?: number;\n\tpageIndex?: number;\n\tprev?: System;\n\tnext?: System;\n\theadMeasureIndex?: number; // zero based\n\n\t// in units\n\tleft: number;\n\ttop: number;\n\twidth: number;\n\tindent: boolean;\n\n\tmeasureCount: number;\n\tstaves: Staff[];\n\n\tmeasureBars: number[];\n\n\tbackgroundImage: string;\n\timagePosition: Rect;\n\n\tsemantics: SemanticPoint[];\n\ttokens?: Token[];\n\n\tsidBlackList: string[];\n\tsidWhiteList: string[];\n\n\tdisplacementSemantics?: { [id: string]: Partial };\n\n\tstaffMaskChanged: number;\n\tbracketsAppearance: string; // the staff layout code by prediction\n\n\tconstructor({ stavesCount, ...fields }: any) {\n\t\tsuper();\n\t\tsuper.assign(fields);\n\n\t\tif (!this.measureBars) {\n\t\t\tconst HEAD_WIDTH = 5;\n\t\t\tconst segmentLength = (this.width - HEAD_WIDTH) / this.measureCount;\n\t\t\tthis.measureBars = Array(this.measureCount)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => HEAD_WIDTH + segmentLength * (i + 1));\n\t\t}\n\n\t\tif (!fields.staves && stavesCount)\n\t\t\tthis.staves = Array(stavesCount)\n\t\t\t\t.fill(null)\n\t\t\t\t.map(() => new Staff({ measureBars: this.measureBars }));\n\n\t\tthis.arrangePosition();\n\n\t\tthis.measureCount = this.measureCount || this.measureBars.length;\n\n\t\tthis.sidBlackList = this.sidBlackList || [];\n\t\tthis.sidWhiteList = this.sidWhiteList || [];\n\t}\n\n\tget noteRange(): { top: number; bottom: number } {\n\t\tif (!this.staves.length) return null;\n\n\t\tconst staffTop = this.staves[0];\n\t\tconst staffBottom = this.staves[this.staves.length - 1];\n\n\t\treturn {\n\t\t\ttop: staffTop.top + staffTop.staffY + staffTop.noteRange.top,\n\t\t\tbottom: staffBottom.top + staffBottom.staffY + staffBottom.noteRange.bottom,\n\t\t};\n\t}\n\n\tget staffPositions(): StaffPosition[] {\n\t\treturn this.staves.map((staff) => ({\n\t\t\ty: staff.top + staff.staffY,\n\t\t\tradius: 2,\n\t\t}));\n\t}\n\n\tget staffMask(): number {\n\t\tif (this.staffMaskChanged) return this.staffMaskChanged;\n\n\t\tif (this.prev && this.staves.length === this.prev.staves.length) return this.prev.staffMask;\n\n\t\treturn 2 ** this.staves.length - 1;\n\t}\n\n\tget staffTop(): number {\n\t\tconst positions = this.staffPositions;\n\t\treturn positions.length ? positions[0].y - positions[0].radius : 0;\n\t}\n\n\tget staffBottom(): number {\n\t\tconst positions = this.staffPositions;\n\t\treturn positions.length ? positions[positions.length - 1].y + positions[positions.length - 1].radius : 0;\n\t}\n\n\tarrangePosition(): void {\n\t\tlet y = 0;\n\t\tfor (const staff of this.staves) {\n\t\t\tif (Number.isFinite(staff.top)) break;\n\n\t\t\tstaff.top = y;\n\t\t\ty += staff.height;\n\t\t}\n\t}\n\n\ttidyMeasureBars(): void {\n\t\tthis.measureBars = this.measureBars.filter((x) => x > 1);\n\t\tthis.measureBars.sort((b1, b2) => b1 - b2);\n\n\t\tconst restWidth = this.width - this.measureBars[this.measureBars.length - 1];\n\t\tif (restWidth > 12) this.measureBars.push(this.width);\n\t\telse if (restWidth < 2) this.measureBars[this.measureBars.length - 1] = this.width;\n\n\t\tthis.measureBars = this.measureBars.filter((x, i) => i < 1 || x - this.measureBars[i - 1] > 4);\n\t}\n\n\trearrangeMeasures(): void {\n\t\tthis.measureCount = this.measureBars.length;\n\t\tthis.staves.forEach((staff) => staff.rearrangeMeasures(this.measureBars));\n\t}\n\n\tget height(): number {\n\t\treturn this.staves.reduce((height, staff) => height + staff.height, 0);\n\t}\n\n\tget connectionLine(): { top: number; bottom: number } {\n\t\tconst staffHead = this.staves[0];\n\t\tconst staffTail = this.staves[this.staves.length - 1];\n\n\t\treturn (\n\t\t\tstaffHead && {\n\t\t\t\ttop: staffHead.top + staffHead.staffY - 2,\n\t\t\t\tbottom: staffTail.top + staffTail.staffY + 2,\n\t\t\t}\n\t\t);\n\t}\n\n\tget middleY(): number {\n\t\tif (!this.staves.length) return 0;\n\n\t\tconst sum = this.staves.reduce((sum, staff) => sum + staff.top + staff.staffY, 0);\n\n\t\treturn sum / this.staves.length;\n\t}\n\n\tget timeSignatureOnHead(): boolean {\n\t\treturn this.staves.some((staff) => staff.measures[0]?.tokens.some((token) => TokenTimesigs.includes(token.type)));\n\t}\n\n\t// an array staff or null on every position of full staff layout\n\tgetStaffArray(stavesCount: number): Staff[] {\n\t\tlet si = 0;\n\n\t\treturn Array(stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, i) => {\n\t\t\t\tconst on = this.staffMask & (1 << i);\n\t\t\t\tconst staff = on ? this.staves[si++] : null;\n\t\t\t\tconsole.assert(!on || staff, 'system staves count is less than staff mask declared:', this.staves.length, this.staffMask.toString(2));\n\n\t\t\t\treturn staff;\n\t\t\t});\n\t}\n\n\t// measureIndex: the local measure index\n\tgetMarksInMeasure(measureIndex: number): MarkTerm[] {\n\t\tconsole.assert(measureIndex < this.measureBars.length, 'measure index out of range:', measureIndex, this.measureBars.length);\n\n\t\tconst left = measureIndex > 0 ? this.measureBars[measureIndex - 1] : 0;\n\t\tconst right = this.measureBars[measureIndex];\n\n\t\tconst tempoTokens = (this.tokens ?? []).filter(\n\t\t\t(token) => token.x >= left && token.x < right && token instanceof TextToken && token.textType === TextType.TempoNumeral\n\t\t) as TextToken[];\n\n\t\treturn [...tempoTokens.map((token) => TempoTerm.fromNumeralText(token.text)).filter(Boolean)];\n\t}\n\n\tgetEvents(stavesCount: number): EventSystem {\n\t\tconsole.assert(Number.isInteger(this.headMeasureIndex), 'invalid headMeasureIndex:', this.headMeasureIndex);\n\n\t\t// Empty system (no measureBars / no staves with measures): return empty result\n\t\tif (!this.measureBars?.length && this.staves.every((s) => !s.measures?.length)) {\n\t\t\treturn { staffMask: this.staffMask, columns: [] };\n\t\t}\n\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: [] as EventTerm[],\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure) => {\n\t\t\t\tconst events = measure.getEvents();\n\t\t\t\tmeasure.assignAccessoriesOnEvents(events);\n\t\t\t\tmeasure.assignFeaturesOnEvents(events, staff.semantics);\n\n\t\t\t\treturn {\n\t\t\t\t\tevents: events.map(\n\t\t\t\t\t\t(event) =>\n\t\t\t\t\t\t\tnew EventTerm({\n\t\t\t\t\t\t\t\tstaff: staff.index,\n\t\t\t\t\t\t\t\tsystem: this.index,\n\t\t\t\t\t\t\t\t...event,\n\t\t\t\t\t\t\t\trest: event.rest ? 'r' : null,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t\tcontexts: measure.getContexts({ staff: staff.index }),\n\t\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\t\talternative: measure.alternative,\n\t\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\n\t\t// supplement time signatures for empty staves\n\t\tfor (let mi = 0; mi < this.measureCount; ++mi) {\n\t\t\tconst tsRows = rows.map((row) => row[mi]?.contexts?.filter((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type)));\n\t\t\tconst timeSigs = tsRows.find((row) => row?.length);\n\t\t\tif (timeSigs) {\n\t\t\t\trows.forEach((row) => {\n\t\t\t\t\tif (row[mi] && !row[mi].contexts.length && !row[mi].events.length) row[mi].contexts.push(...timeSigs);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//onst measureStartXs = [0, ...this.measureBars];\n\n\t\tconst columns = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map(\n\t\t\t\t(_, i): EventMeasureColumn => ({\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + i,\n\t\t\t\t\t//startX: measureStartXs[i],\n\t\t\t\t\t//width: measureWidths[i],\n\t\t\t\t\trows: rows.map((row) => row[i]),\n\t\t\t\t\tmarks: this.getMarksInMeasure(i),\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\tvoltaBegin: rows.some((row) => row[i]?.voltaBegin),\n\t\t\t\t\tvoltaEnd: rows.some((row) => row[i]?.voltaEnd),\n\t\t\t\t\talternative: rows.some((row) => row[i]?.alternative),\n\t\t\t\t\tbarTypes: rows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row[i]?.barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t);\n\t\t//columns.forEach(computeMeasureTicks);\n\n\t\t// assign id on column events\n\t\tcolumns.forEach((column) => {\n\t\t\tconst events = [].concat(...column.rows.filter(Boolean).map((row) => row.events));\n\t\t\tevents.forEach((event, i) => (event.id = i + 1));\n\t\t});\n\n\t\tconst lastColumn = columns[columns.length - 1];\n\t\tif (lastColumn) lastColumn.break = true;\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\tgetEventsFunctional(stavesCount: number, ev: ChordsFeeder, processors: ColumnProcessor[] = [], { useXMap = false } = {}): EventSystem {\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff, si) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: [] as EventTerm[],\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure, mi) => {\n\t\t\t\tconst events = ev(si, mi);\n\n\t\t\t\treturn (\n\t\t\t\t\tevents && {\n\t\t\t\t\t\tevents: events.map(\n\t\t\t\t\t\t\t(event) =>\n\t\t\t\t\t\t\t\tnew EventTerm({\n\t\t\t\t\t\t\t\t\tsystem: this.index,\n\t\t\t\t\t\t\t\t\t...event,\n\t\t\t\t\t\t\t\t\trest: event.rest ? 'r' : null,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcontexts: measure.getContexts({ staff: si }),\n\t\t\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\t\t\talternative: measure.alternative,\n\t\t\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//const measureStartXs = [0, ...this.measureBars];\n\n\t\t// [measure, staff]\n\t\tconst columns: EventMeasureColumn[] = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, mi) => {\n\t\t\t\tconst localRows = rows.map((row) => row[mi]);\n\t\t\t\tif (localRows.some((row) => !row)) return null;\n\n\t\t\t\tlet xMap: Map = null;\n\t\t\t\tif (useXMap) {\n\t\t\t\t\tconst events: EventTerm[] = [].concat(...localRows.map((row) => row.events));\n\t\t\t\t\tconst groupMap: { [group: number]: EventTerm[] } = events.reduce((map, event) => {\n\t\t\t\t\t\tif (Number.isFinite(event.tickGroup)) map[event.tickGroup] = map[event.tickGroup] || [];\n\t\t\t\t\t\tmap[event.tickGroup].push(event);\n\n\t\t\t\t\t\treturn map;\n\t\t\t\t\t}, {});\n\n\t\t\t\t\txMap = Object.values(groupMap).reduce((map, events) => {\n\t\t\t\t\t\tconst x = Math.min(...events.map((event) => (event.left + event.right) / 2));\n\t\t\t\t\t\tmap.set(x, events);\n\n\t\t\t\t\t\treturn map;\n\t\t\t\t\t}, new Map());\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + mi,\n\t\t\t\t\t//startX: measureStartXs[mi],\n\t\t\t\t\t//width: measureWidths[mi],\n\t\t\t\t\trows: localRows, // [staff]\n\t\t\t\t\tmarks: this.getMarksInMeasure(mi),\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\txMap,\n\t\t\t\t\tvoltaBegin: localRows.some((row) => row.voltaBegin),\n\t\t\t\t\tvoltaEnd: localRows.some((row) => row.voltaEnd),\n\t\t\t\t\talternative: localRows.some((row) => row.alternative),\n\t\t\t\t\tbarTypes: localRows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row.barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t});\n\t\tprocessors.forEach((proc) => columns.forEach(proc));\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\t// get EventSystem contains only contexted terms\n\tgetContexts(stavesCount: number): EventSystem {\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: null,\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure) => ({\n\t\t\t\tevents: null,\n\t\t\t\tcontexts: measure.getContexts(),\n\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\talternative: rows.some((row) => row.alternative),\n\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t}));\n\t\t});\n\n\t\t// supplement time signatures for empty staves\n\t\tfor (let mi = 0; mi < this.measureCount; ++mi) {\n\t\t\tconst tsRows = rows.map((row) => row[mi]?.contexts.filter((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type)));\n\t\t\tconst timeSigs = tsRows.find((row) => row?.length);\n\t\t\tif (timeSigs) {\n\t\t\t\trows.forEach((row) => {\n\t\t\t\t\tif (!row[mi].contexts.length) row[mi].contexts.push(...timeSigs);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//const measureStartXs = [0, ...this.measureBars];\n\n\t\tconst columns = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map(\n\t\t\t\t(_, i): EventMeasureColumn => ({\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + i,\n\t\t\t\t\t//startX: measureStartXs[i],\n\t\t\t\t\t//width: measureWidths[i],\n\t\t\t\t\trows: rows.map((row) => row[i]),\n\t\t\t\t\tmarks: [],\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\tvoltaBegin: rows.some((row) => row[i].voltaBegin),\n\t\t\t\t\tvoltaEnd: rows.some((row) => row[i].voltaEnd),\n\t\t\t\t\talternative: rows.some((row) => row.alternative),\n\t\t\t\t\tbarTypes: rows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row[i].barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t);\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\tassignSemantics(staffIndex: number, graph: SemanticGraph): void {\n\t\tconst staff = this.staves[staffIndex];\n\t\tconsole.assert(staff, 'staff is null:', staffIndex, this.staves);\n\t\tconst oy = staff.top + staff.staffY;\n\n\t\tgraph.getSystemPoints().forEach((point) => {\n\t\t\tconst p = { ...point };\n\t\t\tp.y += oy;\n\n\t\t\tif (p.extension) {\n\t\t\t\tp.extension = { ...p.extension };\n\t\t\t\tif (Number.isFinite(p.extension.y1)) {\n\t\t\t\t\tp.extension.y1 += oy;\n\t\t\t\t\tp.extension.y2 += oy;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.semantics.push(p);\n\t\t});\n\t}\n\n\t// generate tokens from semantics\n\tassemble(threshold: number, logger: Logger = new DummyLogger()): void {\n\t\t//console.log(\"System.assignSemantics:\", graph);\n\t\tthis.measureBars = [];\n\n\t\tif (!this.semantics) return;\n\n\t\tconst graph = SemanticGraph.fromPoints(this.semantics);\n\n\t\tconst bars = graph.getConfidentLayer(SemanticType.vline_BarMeasure, threshold);\n\t\tbars.sort((b1, b2) => b1.x - b2.x);\n\n\t\tconst staffTop = this.staffTop;\n\t\tconst staffBottom = this.staffBottom;\n\n\t\tconst MERGE_WINDOW = 0.4;\n\t\tlet lastX = 0;\n\t\tconst barColumns: { [key: number]: number } = bars.reduce((columns, bar) => {\n\t\t\tconst confidence = Number.isFinite(bar.confidence) ? Math.tanh(bar.confidence) : 1;\n\n\t\t\tconst x = bar.x - lastX > MERGE_WINDOW ? bar.x : lastX;\n\t\t\tlastX = bar.x;\n\t\t\tlet intensity = columns[x] || 0;\n\t\t\tintensity += (Math.min(bar.extension.y2, staffBottom) - Math.max(bar.extension.y1, staffTop)) * confidence;\n\n\t\t\tif (bar.x !== x) delete columns[x];\n\t\t\tcolumns[bar.x] = intensity;\n\n\t\t\treturn columns;\n\t\t}, {});\n\t\tconst barXs: number[] = Object.entries(barColumns)\n\t\t\t.filter(([x, intensity]) => (void x, intensity > 3 * this.staves.length))\n\t\t\t.map(([x]) => Number(x));\n\t\tbarXs.sort((x1, x2) => x1 - x2);\n\t\tbarXs.forEach((x, i) => {\n\t\t\tif (i <= 0 || x - barXs[i - 1] > 2) this.measureBars.push(x);\n\t\t});\n\n\t\tif (!this.measureBars.length) this.measureBars.push(this.width);\n\n\t\tthis.tidyMeasureBars();\n\t\tthis.rearrangeMeasures();\n\n\t\t// measure bar type\n\t\tconst typeBars = this.semantics.filter((point) => [SemanticType.vline_BarTerminal, SemanticType.vline_BarSegment].includes(point.semantic));\n\t\ttypeBars.forEach((bar) => {\n\t\t\tconst measure = this.staves[0].measures.find((measure) => bar.x > measure.right - 2 && bar.x < measure.right + 1);\n\t\t\tif (measure) {\n\t\t\t\tconst type = bar.semantic.replace(/^vline_Bar/, '');\n\t\t\t\tmeasure.barTypes[type] = measure.barTypes[type] || 0;\n\t\t\t\tmeasure.barTypes[type] += bar.confidence;\n\t\t\t}\n\t\t});\n\n\t\tlet staffIndex = 0;\n\t\tconst staffMask = this.staffMask;\n\t\tthis.staves.forEach((staff, si) => {\n\t\t\t// staff index\n\t\t\twhile (!(staffMask & (1 << staffIndex))) ++staffIndex;\n\t\t\tstaff.index = staffIndex++;\n\n\t\t\t// assign semantic boundaries\n\t\t\tif (si === 0) staff.semanticTop = -staff.staffY;\n\t\t\telse {\n\t\t\t\tconst prevStaff = this.staves[si - 1];\n\t\t\t\tstaff.semanticTop = prevStaff.top + prevStaff.staffY + 3 - (staff.top + staff.staffY);\n\t\t\t}\n\n\t\t\tif (si < this.staves.length - 1) {\n\t\t\t\tconst nextStaff = this.staves[si + 1];\n\t\t\t\tstaff.semanticBottom = nextStaff.top + nextStaff.staffY - 3 - (staff.top + staff.staffY);\n\t\t\t} else staff.semanticBottom = this.height - (staff.top + staff.staffY);\n\n\t\t\tif (staff.semantics && staff.semantics.length) {\n\t\t\t\tstaff.semantics.forEach((point) => hashSemanticPoint(this.index, si, point));\n\n\t\t\t\tstaff.clearPredictedTokens();\n\t\t\t\tstaff.assemble(threshold, this, logger);\n\t\t\t}\n\t\t});\n\t}\n\n\tqualifiedSemantics(semantics: SemanticPoint[], threshold: number = 1): SemanticPoint[] {\n\t\treturn semantics\n\t\t\t.filter(\n\t\t\t\t(p) => this.sidWhiteList.includes(p.id) || (!this.sidBlackList.includes(p.id) && (p.confidence >= threshold || !Number.isFinite(p.confidence)))\n\t\t\t)\n\t\t\t.map((point) => {\n\t\t\t\t// displace semantic point\n\t\t\t\tif (this.displacementSemantics && this.displacementSemantics[point.id]) return { ...point, ...this.displacementSemantics[point.id] };\n\n\t\t\t\treturn point;\n\t\t\t});\n\t}\n\n\tclearTokens(): void {\n\t\tthis.staves.forEach((staff) => staff.clearTokens());\n\t\tthis.semantics = [];\n\t}\n\n\tnewPoint(staffIndex: number, data: SemanticPoint, threshold: number = 1): SemanticPoint {\n\t\tconst staff = this.staves[staffIndex];\n\t\tconsole.assert(staff, 'staff index out of bound:', staffIndex, this.staves.length);\n\n\t\tconst { semantic, x, y, confidence = 0, extension = null } = data;\n\t\tconst point = { semantic, x, y, confidence, extension };\n\t\tif (!point.extension) delete point.extension;\n\n\t\thashSemanticPoint(this.index, staffIndex, point);\n\t\tstaff.semantics.push(point);\n\t\tstaff.clearPredictedTokens();\n\t\tstaff.assemble(threshold, this);\n\n\t\treturn point;\n\t}\n\n\tappendToken(token: TextToken): void {\n\t\tthis.tokens.push(token);\n\n\t\tswitch (token.textType) {\n\t\t\tcase TextType.TempoNumeral:\n\t\t\t\t{\n\t\t\t\t\t// remove noteheads in text area\n\t\t\t\t\tconst staff = this.staves[0];\n\t\t\t\t\tif (staff) {\n\t\t\t\t\t\tconst oy = staff.top + staff.staffY;\n\t\t\t\t\t\tstaff.measures.forEach((measure) => {\n\t\t\t\t\t\t\tmeasure.tokens = measure.tokens.filter(\n\t\t\t\t\t\t\t\t(t) =>\n\t\t\t\t\t\t\t\t\t!TokenNoteheads.includes(t.type) ||\n\t\t\t\t\t\t\t\t\tMath.abs(t.x - token.x) > token.width / 2 ||\n\t\t\t\t\t\t\t\t\tMath.abs(oy + t.y - token.y) > token.fontSize / 2\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase TextType.Alternation1:\n\t\t\tcase TextType.Alternation2:\n\t\t\t\t//console.log(\"appendToken:\", token, this.staves[0].measures);\n\t\t\t\tthis.staves[0].measures.forEach((measure) => {\n\t\t\t\t\tconst overlap = Math.min(measure.left + measure.width, token.x + token.width / 2) - Math.max(measure.left, token.x - token.width / 2);\n\t\t\t\t\tmeasure.alternative = measure.alternative || overlap / measure.width > 0.5;\n\t\t\t\t});\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nclass Page extends SimpleClass {\n\tstatic className = 'Page';\n\tstatic blackKeys = ['index', 'tokens'];\n\n\tindex?: number;\n\n\t// in units\n\twidth: number;\n\theight: number;\n\n\tsystems: System[];\n\n\tsource: SourceImageFile;\n\tlayout?: PageLayout;\n\n\tsemantics: SemanticPoint[];\n\ttokens?: Token[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.systems = this.systems || [];\n\n\t\tif (this.source) {\n\t\t\tthis.source.matrix = this.source.matrix || [1, 0, 0, 1, 0, 0];\n\t\t}\n\t}\n\n\tget sidBlackList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidBlackList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget sidWhiteList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidWhiteList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tclearTokens(): void {\n\t\tthis.semantics = null;\n\t\tthis.tokens = null;\n\n\t\tthis.systems.forEach((system) => (system.tokens = null));\n\t}\n\n\tassignTexts(areas: TextArea[], [imageHeight, imageWidth]: [number, number]): void {\n\t\tconst interval = this.source && this.source.interval ? this.source.interval * (imageHeight / this.source.dimensions.height) : imageHeight / this.height;\n\n\t\tthis.semantics = areas.map((area) => {\n\t\t\tconst p = {\n\t\t\t\tx: (area.cx - imageWidth / 2) / interval,\n\t\t\t\ty: (area.cy - imageHeight / 2) / interval,\n\t\t\t};\n\t\t\tconst rp = this.source && this.source.matrix ? trans23(p, this.source.matrix) : p;\n\n\t\t\treturn {\n\t\t\t\tconfidence: area.score,\n\t\t\t\tx: rp.x + this.width / 2,\n\t\t\t\ty: rp.y + this.height / 2,\n\t\t\t\tsemantic: SemanticType.rect_Text,\n\t\t\t\textension: {\n\t\t\t\t\ttext: area.text,\n\t\t\t\t\ttype: area.type,\n\t\t\t\t\twidth: area.width / interval,\n\t\t\t\t\theight: area.height / interval,\n\t\t\t\t\ttheta: area.theta,\n\t\t\t\t\ttextFeature: area.feature_dict,\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tassemble({ textAnnotations = null }: { textAnnotations?: { [id: string]: string } } = {}, logger: Logger = new DummyLogger()): void {\n\t\tthis.tokens = [];\n\t\tthis.systems.forEach((system) => (system.tokens = []));\n\n\t\t// compute system indent\n\t\tif (this.systems.length) {\n\t\t\tconst sysXs = this.systems.map((system) => system.left);\n\t\t\tconst middleX = sysXs[Math.floor((sysXs.length - 1) / 2)];\n\t\t\tthis.systems.forEach((system) => (system.indent = system.left > middleX + INDENT_THRESHOLD));\n\t\t}\n\n\t\tif (this.semantics) {\n\t\t\tconst pageName = this.source ? this.source.name : this.index.toString();\n\n\t\t\tthis.semantics.forEach((point) => {\n\t\t\t\thashPageSemanticPoint(pageName, point);\n\n\t\t\t\tconst fields = {\n\t\t\t\t\tid: point.id,\n\t\t\t\t\ttype: TokenType.Text,\n\t\t\t\t\tconfidence: point.confidence,\n\t\t\t\t\ttextType: TEXT_TYPE_ALIAS[point.extension.type] || point.extension.type,\n\t\t\t\t\ttext: (textAnnotations && textAnnotations[point.id]) || point.extension.text,\n\t\t\t\t\ttextFeasure: point.extension.textFeature,\n\t\t\t\t\twidth: point.extension.width,\n\t\t\t\t\tfontSize: point.extension.height,\n\t\t\t\t};\n\n\t\t\t\tswitch (point.semantic) {\n\t\t\t\t\tcase SemanticType.rect_Text:\n\t\t\t\t\t\tswitch (fields.textType) {\n\t\t\t\t\t\t\t// page tokens\n\t\t\t\t\t\t\tcase TextType.Title:\n\t\t\t\t\t\t\tcase TextType.Author:\n\t\t\t\t\t\t\tcase TextType.PageMargin:\n\t\t\t\t\t\t\tcase TextType.Other:\n\t\t\t\t\t\t\t\tthis.tokens.push(\n\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\tx: point.x,\n\t\t\t\t\t\t\t\t\t\ty: point.y,\n\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// tokens on the top of system\n\t\t\t\t\t\t\tcase TextType.TempoNumeral:\n\t\t\t\t\t\t\tcase TextType.Chord:\n\t\t\t\t\t\t\tcase TextType.MeasureNumber:\n\t\t\t\t\t\t\tcase TextType.Instrument:\n\t\t\t\t\t\t\tcase TextType.Alternation1:\n\t\t\t\t\t\t\tcase TextType.Alternation2:\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconst system = this.systems.find((system) => system.top + system.staffTop > point.y);\n\t\t\t\t\t\t\t\t\tif (system) {\n\t\t\t\t\t\t\t\t\t\tsystem.appendToken(\n\t\t\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\t\t\tx: point.x - system.left,\n\t\t\t\t\t\t\t\t\t\t\t\ty: point.y - system.top,\n\t\t\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// tokens in staff\n\t\t\t\t\t\t\tcase TextType.TextualMark:\n\t\t\t\t\t\t\tcase TextType.Times:\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconst system = [...this.systems].reverse().find((system) => system.top < point.y);\n\t\t\t\t\t\t\t\t\tif (system) {\n\t\t\t\t\t\t\t\t\t\tconst sy = point.y - (system.top + system.staffTop);\n\t\t\t\t\t\t\t\t\t\tconst sx = point.x - system.left;\n\t\t\t\t\t\t\t\t\t\tconst staff = system.staves.find((staff) => sy >= staff.top && sy < staff.top + staff.height);\n\t\t\t\t\t\t\t\t\t\tif (staff) {\n\t\t\t\t\t\t\t\t\t\t\tconst measure = staff.measures.find((measure) => sx >= measure.left && sx < measure.left + measure.width);\n\t\t\t\t\t\t\t\t\t\t\tif (measure) {\n\t\t\t\t\t\t\t\t\t\t\t\tmeasure.tokens.push(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tx: sx,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ty: sy,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\nexport { Measure, Staff, System, Page };\n","import { ChordColumn, Fraction } from './interfaces';\nimport { GraceType } from './term';\nimport { roundNumber } from './utils';\nimport { SimpleClass } from './aux_/typedJSON';\n\nenum SemanticElementType {\n\tBOS,\n\tPAD,\n\n\tNoteheadS0,\n\tNoteheadS1,\n\tNoteheadS2,\n\tNoteheadGrace,\n\tvline_Stem,\n\tFlag3,\n\tBeamLeft,\n\tBeamContinue,\n\tBeamRight,\n\tDot,\n\tRest0,\n\tRest1,\n\tRest2,\n\tRest3,\n\tRest4,\n\tRest5,\n\tRest6,\n\n\t// measure time signature denominators & numerators\n\tTimeD2,\n\tTimeD4,\n\tTimeD8,\n\tTimeN1,\n\tTimeN2,\n\tTimeN3,\n\tTimeN4,\n\tTimeN5,\n\tTimeN6,\n\tTimeN7,\n\tTimeN8,\n\tTimeN9,\n\tTimeN10,\n\tTimeN11,\n\tTimeN12,\n}\n\nconst TIME_SIG_DENOMINATORS = Object.fromEntries([2, 4, 8].map((n) => [n, SemanticElementType[`TimeD${n}`]]));\nconst TIME_SIG_NUMERATORS = Object.fromEntries(\n\tArray(12)\n\t\t.fill(null)\n\t\t.map((_, i) => i + 1)\n\t\t.map((n) => [n, SemanticElementType[`TimeN${n}`]])\n);\n\nconst et = SemanticElementType;\n\nconst ELEMENT_TOKEN_NAMES = {\n\t[et.BOS]: 'BOS',\n\t[et.NoteheadS0]: 'noteheads-s0',\n\t[et.NoteheadS1]: 'noteheads-s1',\n\t[et.NoteheadS2]: 'noteheads-s2',\n\t[et.NoteheadGrace]: 'GraceNotehead',\n\t[et.Flag3]: 'flags-u3',\n\t[et.BeamLeft]: 'BeamLeft',\n\t[et.BeamContinue]: 'BeamContinue',\n\t[et.BeamRight]: 'BeamRight',\n\t[et.Dot]: 'dot',\n\t[et.Rest0]: 'rests-0o',\n\t[et.Rest1]: 'rests-1o',\n\t[et.Rest2]: 'rests-2',\n\t[et.Rest3]: 'rests-3',\n\t[et.Rest4]: 'rests-4',\n\t[et.Rest5]: 'rests-5',\n\t[et.Rest6]: 'rests-6',\n};\n\nconst NOTEHEAD_BASE_DIVISION = {\n\t[et.NoteheadS0]: 0,\n\t[et.NoteheadS1]: 1,\n\t[et.NoteheadS2]: 2,\n\t[et.NoteheadGrace]: 2,\n};\n\nconst NOTEHEAD_ELEMENT_TYPES = [et.NoteheadS0, et.NoteheadS1, et.NoteheadS2, et.NoteheadGrace];\n\nconst REST_ELEMENT_TYPES = [et.Rest0, et.Rest1, et.Rest2, et.Rest3, et.Rest4, et.Rest5, et.Rest6];\n\nconst BEAM_ELEMENT_TYPES = [et.BeamLeft, et.BeamContinue, et.BeamRight];\n\nconst NOTE_ELEMENT_TYPES = [...NOTEHEAD_ELEMENT_TYPES, ...REST_ELEMENT_TYPES];\n\nconst SOURCE_ELEMENT_TYPES = [...NOTEHEAD_ELEMENT_TYPES, ...REST_ELEMENT_TYPES, et.vline_Stem];\n\nconst TARGET_ELEMENT_TYPES = [et.BOS, et.NoteheadS0, et.vline_Stem, ...REST_ELEMENT_TYPES];\n\nconst ROOT_NOTE_ELEMENT_TYPES = [...NOTE_ELEMENT_TYPES, et.vline_Stem];\n\nconst ELEMENT_TO_STEMBEAM = {\n\t[et.BeamLeft]: 'Open',\n\t[et.BeamRight]: 'Close',\n};\n\ninterface SemanticElement {\n\ttype: SemanticElementType;\n\tstaff: number;\n\tx: number;\n\ty1: number;\n\ty2: number;\n\n\tindex?: number;\n\ttick?: number;\n\tid?: string;\n}\n\ntype Matrix = number[][];\n\nconst metaElem = (type: SemanticElementType): SemanticElement => ({\n\ttype,\n\tstaff: -1,\n\tx: 0,\n\ty1: 0,\n\ty2: 0,\n});\n\nconst BOS_ELEMENT = metaElem(SemanticElementType.BOS);\n\nconst fractionToElems = (fraction: Fraction): SemanticElement[] => [\n\tmetaElem(TIME_SIG_NUMERATORS[fraction.numerator]),\n\tmetaElem(TIME_SIG_DENOMINATORS[fraction.denominator]),\n];\n\nconst argmax = (data: number[], mask: boolean[]): number => {\n\tconst values = data.filter((_, i) => mask[i]);\n\tconst max = Math.max(...values);\n\n\treturn data.findIndex((x) => x === max);\n};\n\nclass SemanticCluster extends SimpleClass {\n\tindex?: number;\n\n\telements: SemanticElement[];\n\tmatrixH?: Matrix; // matrix N x N\n\t_matrixV?: Matrix; // matrix N x N\n\tgroupsV?: number[][]; // ids array\n\tmasks?: [boolean[], boolean[], boolean[]]; // the masks for: [jointer source, jointer target, V]\n\n\tstatic elementToJSON(elem: SemanticElement): object {\n\t\tconst result: any = {\n\t\t\ttype: elem.type,\n\t\t\tstaff: elem.staff,\n\t\t\tx: elem.x,\n\t\t\ty1: elem.y1,\n\t\t\ty2: elem.y2,\n\t\t};\n\n\t\tif (elem.id) result.id = elem.id;\n\n\t\treturn result;\n\t}\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\tget sourceMask(): boolean[] {\n\t\treturn this.elements.map((elem) => SOURCE_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget targetMask(): boolean[] {\n\t\treturn this.elements.map((elem) => TARGET_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget vMask(): boolean[] {\n\t\treturn this.elements.map((elem) => ROOT_NOTE_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget compactMatrixH(): Matrix {\n\t\tif (!this.matrixH) return null;\n\n\t\tconst sourceMask = this.sourceMask;\n\t\tconst targetMask = this.targetMask;\n\n\t\treturn this.matrixH.filter((_, i) => sourceMask[i]).map((row) => row.filter((_, j) => targetMask[j]));\n\t}\n\n\tset compactMatrixH(value: Matrix) {\n\t\tthis.matrixH = expandMatrixByMasks([].concat(...value), [this.sourceMask, this.targetMask]);\n\t}\n\n\tget compactMatrixV(): number[] {\n\t\tif (!this._matrixV) return null;\n\n\t\tconst vMask = this.vMask;\n\n\t\tconst matrix = this._matrixV.filter((_, i) => vMask[i]).map((row) => row.filter((_, j) => vMask[j]));\n\n\t\treturn [].concat(...matrix.map((row, i) => row.slice(0, i)));\n\t}\n\n\tset compactMatrixV(value: number[]) {\n\t\tthis.matrixV = value && expandMatrixByMaskTriu(value, this.vMask);\n\t}\n\n\tget matrixV(): Matrix {\n\t\treturn this.groupsV && matrixFromGroups(this.elements.length, this.groupsV);\n\t}\n\n\tset matrixV(value: Matrix) {\n\t\tif (!value) {\n\t\t\tthis.groupsV = null;\n\t\t\tthis._matrixV = value;\n\t\t\treturn;\n\t\t}\n\n\t\tconst THRESHOLD = 0.5;\n\n\t\tconst groups: number[][] = [];\n\t\tconst vMask = value.map((row, i) => row.some(Number.isFinite) || value.some((row) => Number.isFinite(row[i])));\n\n\t\tvalue.forEach((row, i) => {\n\t\t\tif (vMask[i]) {\n\t\t\t\tlet found = false;\n\n\t\t\t\tfor (let j = 0; j < i; ++j) {\n\t\t\t\t\tconst cell = row[j];\n\t\t\t\t\tif (cell >= THRESHOLD) {\n\t\t\t\t\t\tconst g = groups.findIndex((group) => group.includes(j));\n\t\t\t\t\t\tgroups[g].push(i);\n\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!found) groups.push([i]);\n\t\t\t}\n\t\t});\n\n\t\tthis.groupsV = groups;\n\t\tthis._matrixV = value;\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\t__prototype: 'SemanticCluster',\n\t\t\tindex: this.index,\n\t\t\telements: this.elements.map(SemanticCluster.elementToJSON),\n\t\t\tcompactMatrixH: this.compactMatrixH,\n\t\t\tcompactMatrixV: this.compactMatrixV,\n\t\t\t//groupsV: this.groupsV,\n\t\t};\n\t}\n\n\tstatic mapMatrix(matrix: number[][], x2i: number[], i2x: number[]): number[][] {\n\t\tconst rows = x2i.reduce((rows, i, x) => {\n\t\t\tif (rows[i]) rows[i] = rows[i].map((v, xi) => (v + matrix[x][xi] ? 1 : 0));\n\t\t\telse rows[i] = matrix[x];\n\n\t\t\treturn rows;\n\t\t}, [] as number[][]);\n\n\t\treturn rows.map((row) => i2x.map((x) => row[x]));\n\t}\n\n\tmergeOverlapping() {\n\t\tconst overlaps = this.overlappedNoteheads();\n\t\tif (overlaps.length) {\n\t\t\tconst x2i = this.elements.map((_, index) => {\n\t\t\t\tconst pair = overlaps.find((ij) => index === ij[1]);\n\t\t\t\tconst i = pair ? pair[0] : index;\n\n\t\t\t\treturn i - overlaps.filter((ij) => ij[1] < i).length;\n\t\t\t});\n\t\t\tconst i2x = Array(this.elements.length - overlaps.length)\n\t\t\t\t.fill(null)\n\t\t\t\t.map((_, i) => x2i.findIndex((ii) => ii === i));\n\n\t\t\tthis.elements = i2x.map((x) => this.elements[x]);\n\t\t\tconsole.assert(this.elements.every(Boolean), 'null element found:', this, x2i, i2x);\n\n\t\t\tthis.matrixH = SemanticCluster.mapMatrix(this.matrixH, x2i, i2x);\n\t\t\tthis.groupsV = this.groupsV.map((group) => Array.from(new Set(group.map((x) => x2i[x]))));\n\t\t}\n\t}\n\n\toverlappedNoteheads(): [number, number][] {\n\t\tconst indices = [];\n\n\t\tconst noteheads = this.elements.filter((elem) => NOTEHEAD_ELEMENT_TYPES.includes(elem.type));\n\t\tfor (let i = 0; i < noteheads.length; ++i) {\n\t\t\tconst nh1 = noteheads[i];\n\t\t\tfor (let j = i + 1; j < noteheads.length; ++j) {\n\t\t\t\tconst nh2 = noteheads[j];\n\t\t\t\tif ((nh1.x - nh2.x) * (nh1.x - nh2.x) + (nh1.y1 - nh2.y1) * (nh1.y1 - nh2.y1) < 0.2 ** 2) indices.push([nh1.index, nh2.index]);\n\t\t\t}\n\t\t}\n\n\t\treturn indices;\n\t}\n\n\tgetEvents(): ChordColumn[] {\n\t\tconsole.assert(this.matrixH, '[SemanticCluster.getEvents]\tmatrixH is null.');\n\n\t\tconst NOTE_STEM_CONFIDENCE = 0.5;\n\n\t\tconst ids = Array(this.elements.length)\n\t\t\t.fill(null)\n\t\t\t.map((_, index) => index);\n\n\t\tconst targetMask = this.masks ? this.masks[1] : ids.map((id) => TARGET_ELEMENT_TYPES.includes(this.elements[id].type));\n\n\t\t//const stems = ids.filter(i => this.elements[i].type === et.vline_Stem);\n\t\tconst stemMasks = ids.map((id) => this.elements[id].type === et.vline_Stem && this.elements[id].y2 - this.elements[id].y1 > 2); // TODO: sift out too short stems by rectification model\n\t\tconst stemNotes = ids.filter((i) => [et.NoteheadS1, et.NoteheadS2, et.NoteheadGrace].includes(this.elements[i].type));\n\t\tconst s0s = ids.filter((i) => this.elements[i].type === et.NoteheadS0);\n\t\tconst subS0Masks = ids.map(() => false);\n\n\t\t// root elements: top NoteheadS0, Rests, stem with noteheads\n\t\tconst stemMap: { [stem: number]: number[] } = {};\n\t\tstemNotes.forEach((id) => {\n\t\t\tconst note = this.elements[id];\n\t\t\tconst stems = ids\n\t\t\t\t.filter((i) => stemMasks[i])\n\t\t\t\t.filter((stemId) => this.elements[stemId].y1 - 0.5 < note.y1 && this.elements[stemId].y2 + 0.5 > note.y1) // filter by stem Y range\n\t\t\t\t.sort((i1, i2) => this.matrixH[id][i2] - this.matrixH[id][i1]) // sort by confidence\n\t\t\t\t.slice(0, 2)\n\t\t\t\t.filter((i, ii) => ii === 0 || this.matrixH[id][i] >= NOTE_STEM_CONFIDENCE);\n\t\t\tstems.forEach((stem) => {\n\t\t\t\tstemMap[stem] = stemMap[stem] || [];\n\t\t\t\tstemMap[stem].push(id);\n\t\t\t});\n\t\t});\n\n\t\ts0s.forEach((id) => {\n\t\t\tconst s0 = this.elements[id];\n\t\t\tconst prevId = argmax(this.matrixH[id], targetMask);\n\t\t\tconst prev = this.elements[prevId];\n\t\t\tif (prev.type === et.NoteheadS0 && Math.abs(s0.x - prev.x) < 2.6) {\n\t\t\t\tsubS0Masks[id] = true;\n\t\t\t\tstemMap[prevId] = stemMap[prevId] || [prevId];\n\t\t\t\tstemMap[prevId].push(id);\n\t\t\t} else stemMap[id] = stemMap[id] || [id];\n\t\t});\n\n\t\t// setup linkings\n\t\tconst linkings: { [key: number]: number } = {};\n\n\t\tconst roots = ids.filter((id) => stemMap[id] || REST_ELEMENT_TYPES.includes(this.elements[id].type));\n\t\troots.sort((i1, i2) => this.elements[i1].x - this.elements[i2].x); // traverse roots from left to right later\n\n\t\tconst parentMasks = ids.map((id) => id === et.BOS);\n\t\troots.forEach((id) => {\n\t\t\tconst parentId = argmax(this.matrixH[id], parentMasks);\n\t\t\tlinkings[id] = parentId;\n\n\t\t\tif (parentId && !REST_ELEMENT_TYPES.includes(this.elements[parentId].type)) parentMasks[parentId] = false;\n\n\t\t\tparentMasks[id] = true;\n\t\t});\n\t\t//console.log(\"topology:\", stemMap, linkings);\n\n\t\tconst dots = this.elements.filter((elem) => elem.type === et.Dot);\n\t\tconst flags = this.elements.filter((elem) => elem.type === et.Flag3);\n\t\tconst beams = this.elements.filter((elem) => BEAM_ELEMENT_TYPES.includes(elem.type));\n\n\t\tconst groupsV = this.groupsV;\n\n\t\treturn roots\n\t\t\t.map((rootId): ChordColumn => {\n\t\t\t\tconst root = this.elements[rootId];\n\n\t\t\t\tconst tickGroup = groupsV ? groupsV.findIndex((group) => group.includes(rootId)) : null;\n\n\t\t\t\tif (REST_ELEMENT_TYPES.includes(root.type)) {\n\t\t\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > root.x + 0.5 && dot.x < root.x + 0.75 + 1.2 && dot.y1 > root.y1 - 1 && dot.y1 < root.y1);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tleft: root.x - 0.75,\n\t\t\t\t\t\tright: root.x + 0.75,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\trest: true,\n\t\t\t\t\t\tys: [root.y1],\n\t\t\t\t\t\tnoteIds: [root.id],\n\t\t\t\t\t\tdots: nearbyDots.length,\n\t\t\t\t\t\tdivision: root.type - et.Rest0,\n\t\t\t\t\t\tstemDirection: null,\n\t\t\t\t\t\tid: rootId,\n\t\t\t\t\t\tprevId: linkings[rootId],\n\t\t\t\t\t\tstaff: root.staff,\n\t\t\t\t\t\ttickGroup,\n\t\t\t\t\t};\n\t\t\t\t} else if (stemMap[rootId]) {\n\t\t\t\t\tconst subNotes = stemMap[rootId].map((id) => this.elements[id]);\n\t\t\t\t\tconst left = Math.min(...subNotes.map((n) => n.x - 0.7));\n\t\t\t\t\tconst right = Math.max(...subNotes.map((n) => n.x + 0.7));\n\t\t\t\t\tsubNotes.sort((n1, n2) => n2.y1 - n1.y1);\n\n\t\t\t\t\tconst ys = subNotes.map((note) => note.y1);\n\n\t\t\t\t\tconst noteIds = subNotes.map((note) => note.id);\n\n\t\t\t\t\tconst top = ys[0];\n\t\t\t\t\tconst bottom = ys[ys.length - 1];\n\n\t\t\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > right && dot.x < right + 1.2 && dot.y1 > top - 1 && dot.y1 < bottom + 0.5);\n\t\t\t\t\tconst dotGroups: { [key: number]: SemanticElement[] } = nearbyDots.reduce((groups, dot) => {\n\t\t\t\t\t\tconst y = roundNumber(dot.y1, 0.5);\n\t\t\t\t\t\tgroups[y] = groups[y] || [];\n\t\t\t\t\t\tgroups[y].push(dot);\n\n\t\t\t\t\t\treturn groups;\n\t\t\t\t\t}, {});\n\t\t\t\t\tconst dotValue = Math.max(...Object.values(dotGroups).map((group) => group.length), 0);\n\n\t\t\t\t\tlet division = NOTEHEAD_BASE_DIVISION[subNotes[0].type];\n\n\t\t\t\t\tlet stemDirection = null;\n\t\t\t\t\tlet beam: string = null;\n\t\t\t\t\tlet tip = null;\n\t\t\t\t\tif (root.type === et.vline_Stem) {\n\t\t\t\t\t\tconst topTip = top - root.y1;\n\t\t\t\t\t\tconst bottomTip = root.y2 - bottom;\n\t\t\t\t\t\tstemDirection = topTip > bottomTip ? 'u' : 'd';\n\n\t\t\t\t\t\ttip = { x: root.x, y: stemDirection === 'u' ? root.y1 : root.y2 };\n\n\t\t\t\t\t\tif (division === 2) {\n\t\t\t\t\t\t\tconst flagRange = stemDirection === 'u' ? [root.y1 - 0.4, root.y2 - 1] : [root.y1 + 1, root.y2 + 0.4];\n\t\t\t\t\t\t\tconst nearbyFlags = flags.filter((flag) => Math.abs(flag.x - root.x) < 0.2 && flag.y1 > flagRange[0] && flag.y1 < flagRange[1]);\n\t\t\t\t\t\t\tdivision += nearbyFlags.length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//const tipY = stemDirection === \"u\" ? root.y1 : root.y2;\n\t\t\t\t\t\tconst tipRange = stemDirection === 'u' ? [root.y1 - 0.2, root.y1 + 0.9] : [root.y2 - 0.9, root.y2 + 0.2];\n\t\t\t\t\t\tconst beamElem = beams.find((beam) => Math.abs(beam.x - root.x) < 0.2 && beam.y1 > tipRange[0] && beam.y1 < tipRange[1]);\n\t\t\t\t\t\tbeam = beamElem ? ELEMENT_TO_STEMBEAM[beamElem.type] : null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst grace = subNotes[0].type === SemanticElementType.NoteheadGrace ? GraceType.Grace : null;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\tright,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\tys,\n\t\t\t\t\t\ttip,\n\t\t\t\t\t\tnoteIds,\n\t\t\t\t\t\tdivision,\n\t\t\t\t\t\tdots: dotValue,\n\t\t\t\t\t\trest: false,\n\t\t\t\t\t\tstemDirection,\n\t\t\t\t\t\tbeam,\n\t\t\t\t\t\tid: rootId,\n\t\t\t\t\t\tprevId: linkings[rootId],\n\t\t\t\t\t\tstaff: subNotes[0].staff,\n\t\t\t\t\t\tgrace,\n\t\t\t\t\t\ttickGroup,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t}\n}\n\ninterface SemanticClusterSetData {\n\tvocab?: string[];\n\tclusters: SemanticCluster[];\n}\n\nclass SemanticClusterSet {\n\tclusters: SemanticCluster[];\n\n\tconstructor(data?: SemanticClusterSetData) {\n\t\tif (data) {\n\t\t\tthis.clusters = data.clusters;\n\n\t\t\t// upgrade vocab\n\t\t\tif (data.vocab) {\n\t\t\t\tconst converts = data.vocab\n\t\t\t\t\t.map((name, i) => [i, SemanticElementType[name]])\n\t\t\t\t\t.filter(([x, y]) => x !== y)\n\t\t\t\t\t.reduce((table, [x, y]) => ((table[x] = y), table), {});\n\t\t\t\tthis.clusters.forEach((connection) =>\n\t\t\t\t\tconnection.elements.forEach((elem) => {\n\t\t\t\t\t\tif (Number.isFinite(converts[elem.type])) elem.type = converts[elem.type];\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\ttoJSON() {\n\t\tconst vocab = Object.entries(SemanticElementType)\n\t\t\t.filter((entry) => Number.isFinite(entry[1]))\n\t\t\t.map((entry) => entry[0]);\n\n\t\treturn {\n\t\t\t__prototype: 'SemanticClusterSet',\n\t\t\tvocab,\n\t\t\tclusters: this.clusters.map((c) => c.toJSON()),\n\t\t};\n\t}\n}\n\nconst expandMatrixByMasks = (matrix: number[], masks: [boolean[], boolean[]]): Matrix => {\n\tconst gen = function* (): Generator {\n\t\tfor (const x of matrix) yield x;\n\t};\n\tconst iter = gen();\n\n\tconst [maskSrc, maskTar] = masks;\n\n\treturn maskSrc.map((src) => maskTar.map((tar) => (src && tar ? iter.next().value : null)));\n};\n\nconst expandMatrixByMaskTriu = (matrix: number[], mask: boolean[]): Matrix => {\n\tconst gen = function* (): Generator {\n\t\tfor (const x of matrix) yield x;\n\t};\n\tconst iter = gen();\n\n\treturn mask.map((row, i) => mask.map((column, j) => (row && column && j < i ? iter.next().value : null)));\n};\n\nconst matrixFromGroups = (len: number, groups: number[][]): Matrix => {\n\tconst groupIds = Array(len)\n\t\t.fill(null)\n\t\t.map((_, i) => groups.findIndex((group) => group.includes(i)));\n\n\treturn Array(len)\n\t\t.fill(null)\n\t\t.map((_, i) =>\n\t\t\tArray(len)\n\t\t\t\t.fill(null)\n\t\t\t\t.map((_, j) => {\n\t\t\t\t\tif (j >= i) return null;\n\n\t\t\t\t\tconst id1 = groupIds[i];\n\t\t\t\t\tconst id2 = groupIds[j];\n\n\t\t\t\t\tif (id1 < 0 || id2 < 0) return null;\n\n\t\t\t\t\treturn id1 === id2 ? 1 : 0;\n\t\t\t\t})\n\t\t);\n};\n\nexport {\n\tSemanticElementType,\n\tSemanticElement,\n\tSemanticCluster,\n\tSemanticClusterSet,\n\tELEMENT_TOKEN_NAMES,\n\tNOTEHEAD_ELEMENT_TYPES,\n\tNOTE_ELEMENT_TYPES,\n\tBOS_ELEMENT,\n\tfractionToElems,\n\texpandMatrixByMasks,\n\texpandMatrixByMaskTriu,\n\tmatrixFromGroups,\n};\n","import { MusicNotation } from '@k-l-lambda/music-widgets';\n\n// implicit note (from expressive marks) types\nenum ImplicitType {\n\tNone = 0,\n\n\tMordent = 'mordent',\n\tPrall = 'prall',\n\tTurn = 'turn',\n\tTrill = 'trill',\n\tTremolo = 'tremolo',\n\tArpeggio = 'arpeggio',\n}\n\ninterface ChordPosition {\n\tindex: number;\n\tcount: number;\n}\n\nclass TokenPosition {\n\tsystem?: number;\n\tmeasure?: number;\n\tx: number;\n\tendX?: number;\n}\n\ninterface Note extends MusicNotation.Note {\n\tchordPosition?: ChordPosition;\n\tmeasure?: number;\n}\n\ninterface Notation {\n\tnotes: Note[];\n\tendTick: number;\n}\n\ninterface SheetPosition {\n\tsystem: number;\n\tx: number;\n}\n\nexport { ChordPosition, ImplicitType, TokenPosition, Note, Notation, SheetPosition };\n","/*\nclass to parse the .mid file format\n(depends on stream.js)\n*/\n\nconst Stream = require(\"./stream.js\");\n\n\n\nmodule.exports = function MidiFile (data) {\n\tfunction readChunk (stream) {\n\t\tconst id = stream.readString(4);\n\t\tconst length = stream.readInt32();\n\n\t\treturn {\n\t\t\tid,\n\t\t\tlength,\n\t\t\tdata: stream.read(length),\n\t\t};\n\t}\n\n\tlet lastEventTypeByte;\n\n\tfunction readEvent (stream) {\n\t\tconst event = {};\n\t\tevent.deltaTime = stream.readVarInt();\n\t\tlet eventTypeByte = stream.readInt8();\n\t\tif ((eventTypeByte & 0xf0) === 0xf0) {\n\t\t\t// system / meta event\n\t\t\tif (eventTypeByte === 0xff) {\n\t\t\t\t// meta event\n\t\t\t\tevent.type = \"meta\";\n\t\t\t\tconst subtypeByte = stream.readInt8();\n\t\t\t\tconst length = stream.readVarInt();\n\n\t\t\t\tswitch (subtypeByte) {\n\t\t\t\tcase 0x00:\n\t\t\t\t\tevent.subtype = \"sequenceNumber\";\n\t\t\t\t\tif (length !== 2)\n\t\t\t\t\t\tthrow new Error(\"Expected length for sequenceNumber event is 2, got \" + length);\n\t\t\t\t\tevent.number = stream.readInt16();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x01:\n\t\t\t\t\tevent.subtype = \"text\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x02:\n\t\t\t\t\tevent.subtype = \"copyrightNotice\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tevent.subtype = \"trackName\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x04:\n\t\t\t\t\tevent.subtype = \"instrumentName\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x05:\n\t\t\t\t\tevent.subtype = \"lyrics\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x06:\n\t\t\t\t\tevent.subtype = \"marker\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x07:\n\t\t\t\t\tevent.subtype = \"cuePoint\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x20:\n\t\t\t\t\tevent.subtype = \"midiChannelPrefix\";\n\t\t\t\t\tif (length !== 1)\n\t\t\t\t\t\tthrow new Error(\"Expected length for midiChannelPrefix event is 1, got \" + length);\n\t\t\t\t\tevent.channel = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x2f:\n\t\t\t\t\tevent.subtype = \"endOfTrack\";\n\t\t\t\t\tif (length !== 0)\n\t\t\t\t\t\tthrow new Error(\"Expected length for endOfTrack event is 0, got \" + length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x51:\n\t\t\t\t\tevent.subtype = \"setTempo\";\n\t\t\t\t\tif (length !== 3)\n\t\t\t\t\t\tthrow new Error(\"Expected length for setTempo event is 3, got \" + length);\n\t\t\t\t\tevent.microsecondsPerBeat = (\n\t\t\t\t\t\t(stream.readInt8() << 16) +\n\t\t\t\t\t\t\t(stream.readInt8() << 8) +\n\t\t\t\t\t\t\tstream.readInt8()\n\t\t\t\t\t);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x54:\n\t\t\t\t\tevent.subtype = \"smpteOffset\";\n\t\t\t\t\tif (length !== 5)\n\t\t\t\t\t\tthrow new Error(\"Expected length for smpteOffset event is 5, got \" + length);\n\t\t\t\t\tconst hourByte = stream.readInt8();\n\t\t\t\t\tevent.frameRate = {\n\t\t\t\t\t\t0x00: 24, 0x20: 25, 0x40: 29, 0x60: 30,\n\t\t\t\t\t}[hourByte & 0x60];\n\t\t\t\t\tevent.hour = hourByte & 0x1f;\n\t\t\t\t\tevent.min = stream.readInt8();\n\t\t\t\t\tevent.sec = stream.readInt8();\n\t\t\t\t\tevent.frame = stream.readInt8();\n\t\t\t\t\tevent.subframe = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x58:\n\t\t\t\t\tevent.subtype = \"timeSignature\";\n\t\t\t\t\tif (length !== 4)\n\t\t\t\t\t\tthrow new Error(\"Expected length for timeSignature event is 4, got \" + length);\n\t\t\t\t\tevent.numerator = stream.readInt8();\n\t\t\t\t\tevent.denominator = Math.pow(2, stream.readInt8());\n\t\t\t\t\tevent.metronome = stream.readInt8();\n\t\t\t\t\tevent.thirtyseconds = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x59:\n\t\t\t\t\tevent.subtype = \"keySignature\";\n\t\t\t\t\tif (length !== 2)\n\t\t\t\t\t\tthrow new Error(\"Expected length for keySignature event is 2, got \" + length);\n\t\t\t\t\tevent.key = stream.readInt8(true);\n\t\t\t\t\tevent.scale = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x7f:\n\t\t\t\t\tevent.subtype = \"sequencerSpecific\";\n\t\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tdefault:\n\t\t\t\t\t// console.log(\"Unrecognised meta event subtype: \" + subtypeByte);\n\t\t\t\t\tevent.subtype = \"unknown\";\n\t\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\t}\n\n\t\t\t\t//event.data = stream.readString(length);\n\t\t\t\t//return event;\n\t\t\t}\n\t\t\telse if (eventTypeByte === 0xf0) {\n\t\t\t\tevent.type = \"sysEx\";\n\t\t\t\tconst length = stream.readVarInt();\n\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\treturn event;\n\t\t\t}\n\t\t\telse if (eventTypeByte === 0xf7) {\n\t\t\t\tevent.type = \"dividedSysEx\";\n\t\t\t\tconst length = stream.readVarInt();\n\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\treturn event;\n\t\t\t}\n\t\t\telse\n\t\t\t\tthrow new Error(\"Unrecognised MIDI event type byte: \" + eventTypeByte);\n\t\t}\n\t\telse {\n\t\t\t/* channel event */\n\t\t\tlet param1;\n\t\t\tif ((eventTypeByte & 0x80) === 0) {\n\t\t\t\t/* running status - reuse lastEventTypeByte as the event type.\n\t\t\t\t\teventTypeByte is actually the first parameter\n\t\t\t\t*/\n\t\t\t\tparam1 = eventTypeByte;\n\t\t\t\teventTypeByte = lastEventTypeByte;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparam1 = stream.readInt8();\n\t\t\t\tlastEventTypeByte = eventTypeByte;\n\t\t\t}\n\n\t\t\tconst eventType = eventTypeByte >> 4;\n\t\t\tevent.channel = eventTypeByte & 0x0f;\n\t\t\tevent.type = \"channel\";\n\n\t\t\tswitch (eventType) {\n\t\t\tcase 0x08:\n\t\t\t\tevent.subtype = \"noteOff\";\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.velocity = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x09:\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.velocity = stream.readInt8();\n\t\t\t\tif (event.velocity === 0)\n\t\t\t\t\tevent.subtype = \"noteOff\";\n\t\t\t\telse\n\t\t\t\t\tevent.subtype = \"noteOn\";\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0a:\n\t\t\t\tevent.subtype = \"noteAftertouch\";\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.amount = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0b:\n\t\t\t\tevent.subtype = \"controller\";\n\t\t\t\tevent.controllerType = param1;\n\t\t\t\tevent.value = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0c:\n\t\t\t\tevent.subtype = \"programChange\";\n\t\t\t\tevent.programNumber = param1;\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0d:\n\t\t\t\tevent.subtype = \"channelAftertouch\";\n\t\t\t\tevent.amount = param1;\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0e:\n\t\t\t\tevent.subtype = \"pitchBend\";\n\t\t\t\tevent.value = param1 + (stream.readInt8() << 7);\n\n\t\t\t\treturn event;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Unrecognised MIDI event type: \" + eventType);\n\n\t\t\t\t/*\n\t\t\t\tconsole.log(\"Unrecognised MIDI event type: \" + eventType);\n\t\t\t\tstream.readInt8();\n\t\t\t\tevent.subtype = 'unknown';\n\t\t\t\treturn event;\n\t\t\t\t*/\n\t\t\t}\n\t\t}\n\t}\n\n\n\tlet source = data;\n\tif (typeof data === \"string\")\n\t\tsource = data.split(\"\").map(c => c.charCodeAt(0));\n\n\tconst stream = new Stream(source);\n\tconst headerChunk = readChunk(stream);\n\tif (headerChunk.id !== \"MThd\" || headerChunk.length !== 6)\n\t\tthrow new Error(\"Bad .mid file - header not found\");\n\n\tconst headerStream = new Stream(headerChunk.data);\n\tconst formatType = headerStream.readInt16();\n\tconst trackCount = headerStream.readInt16();\n\tconst timeDivision = headerStream.readInt16();\n\n\tlet ticksPerBeat;\n\tif (timeDivision & 0x8000)\n\t\tthrow new Error(\"Expressing time division in SMTPE frames is not supported yet\");\n\telse\n\t\tticksPerBeat = timeDivision;\n\n\n\tconst header = {\n\t\tformatType,\n\t\ttrackCount,\n\t\tticksPerBeat,\n\t};\n\tconst tracks = [];\n\tfor (let i = 0; i < header.trackCount; i++) {\n\t\ttracks[i] = [];\n\t\tconst trackChunk = readChunk(stream);\n\t\tif (trackChunk.id !== \"MTrk\")\n\t\t\tthrow new Error(\"Unexpected chunk - expected MTrk, got \" + trackChunk.id);\n\n\t\tconst trackStream = new Stream(trackChunk.data);\n\t\twhile (!trackStream.eof()) {\n\t\t\tconst event = readEvent(trackStream);\n\t\t\ttracks[i].push(event);\n\t\t}\n\t}\n\n\treturn {\n\t\theader,\n\t\ttracks,\n\t};\n};\n","\n/* Wrapper for accessing buffer through sequential reads */\n\n\n\nmodule.exports = class Stream {\n\tconstructor (buffer) {\n\t\tthis.array = new Uint8Array(buffer);\n\t\tthis.position = 0;\n\t}\n\n\n\teof () {\n\t\treturn this.position >= this.array.length;\n\t}\n\n\n\tread (length) {\n\t\tconst result = this.array.slice(this.position, this.position + length);\n\t\tthis.position += length;\n\n\t\treturn result;\n\t}\n\n\n\treadString (length) {\n\t\tconst data = Array.from(this.read(length));\n\n\t\treturn data.map(c => String.fromCharCode(c)).join(\"\");\n\t}\n\n\n\t// read a big-endian 32-bit integer\n\treadInt32 () {\n\t\tconst result = (\n\t\t\t(this.array[this.position] << 24) +\n\t\t\t(this.array[this.position + 1] << 16) +\n\t\t\t(this.array[this.position + 2] << 8) +\n\t\t\tthis.array[this.position + 3]);\n\t\tthis.position += 4;\n\n\t\treturn result;\n\t}\n\n\n\t// read a big-endian 16-bit integer\n\treadInt16 () {\n\t\tconst result = (\n\t\t\t(this.array[this.position] << 8) +\n\t\t\tthis.array[this.position + 1]);\n\t\tthis.position += 2;\n\n\t\treturn result;\n\t}\n\n\n\t// read an 8-bit integer\n\treadInt8 (signed) {\n\t\tlet result = this.array[this.position];\n\t\tif (signed && result > 127)\n\t\t\tresult -= 256;\n\t\tthis.position += 1;\n\n\t\treturn result;\n\t}\n\n\n\t/* read a MIDI-style variable-length integer\n\t\t(big-endian value in groups of 7 bits,\n\t\twith top bit set to signify that another byte follows)\n\t*/\n\treadVarInt () {\n\t\tlet result = 0;\n\t\twhile (true) {\n\t\t\tconst b = this.readInt8();\n\t\t\tif (b & 0x80) {\n\t\t\t\tresult += (b & 0x7f);\n\t\t\t\tresult <<= 7;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// b is the last byte\n\t\t\t\treturn result + b;\n\t\t\t}\n\t\t}\n\t}\n};\n","/*\r\nclass to encode the .mid file format\r\n(depends on streamEx.js)\r\n*/\r\n\r\nconst OStream = require(\"./streamEx.js\");\r\n\r\n\r\n\r\nmodule.exports = function OMidiFile ({ header, tracks }) {\r\n\tfunction writeChunk (stream, id, data) {\r\n\t\tconsole.assert(id.length === 4, \"chunk id must be 4 byte\");\r\n\r\n\t\tstream.write(id);\r\n\t\tstream.writeInt32(data.length);\r\n\t\tstream.write(data);\r\n\t}\r\n\r\n\tfunction writeEvent (stream, event) {\r\n\t\tif (event.subtype === \"unknown\")\r\n\t\t\treturn;\r\n\r\n\t\tstream.writeVarInt(event.deltaTime);\r\n\r\n\t\tswitch (event.type) {\r\n\t\tcase \"meta\":\r\n\t\t\tstream.writeInt8(0xff);\r\n\r\n\t\t\tswitch (event.subtype) {\r\n\t\t\tcase \"sequenceNumber\":\r\n\t\t\t\tstream.writeInt8(0x00);\r\n\t\t\t\tstream.writeVarInt(2);\r\n\r\n\t\t\t\tstream.writeInt16(event.number);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"text\":\r\n\t\t\t\tstream.writeInt8(0x01);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"copyrightNotice\":\r\n\t\t\t\tstream.writeInt8(0x02);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"trackName\":\r\n\t\t\t\tstream.writeInt8(0x03);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"instrumentName\":\r\n\t\t\t\tstream.writeInt8(0x04);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"lyrics\":\r\n\t\t\t\tstream.writeInt8(0x05);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"marker\":\r\n\t\t\t\tstream.writeInt8(0x06);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"cuePoint\":\r\n\t\t\t\tstream.writeInt8(0x07);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"midiChannelPrefix\":\r\n\t\t\t\tstream.writeInt8(0x20);\r\n\t\t\t\tstream.writeVarInt(1);\r\n\r\n\t\t\t\tstream.writeInt8(event.channel);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"endOfTrack\":\r\n\t\t\t\tstream.writeInt8(0x2f);\r\n\t\t\t\tstream.writeVarInt(0);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"setTempo\":\r\n\t\t\t\tstream.writeInt8(0x51);\r\n\t\t\t\tstream.writeVarInt(3);\r\n\r\n\t\t\t\tstream.writeInt8((event.microsecondsPerBeat >> 16) & 0xff);\r\n\t\t\t\tstream.writeInt8((event.microsecondsPerBeat >> 8) & 0xff);\r\n\t\t\t\tstream.writeInt8(event.microsecondsPerBeat & 0xff);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"smpteOffset\":\r\n\t\t\t\tstream.writeInt8(0x54);\r\n\t\t\t\tstream.writeVarInt(5);\r\n\r\n\t\t\t\tvar frameByte = { 24: 0x00, 25: 0x20, 29: 0x40, 30: 0x60 }[event.frameRate];\r\n\t\t\t\tstream.writeInt8(event.hour | frameByte);\r\n\t\t\t\tstream.writeInt8(event.min);\r\n\t\t\t\tstream.writeInt8(event.sec);\r\n\t\t\t\tstream.writeInt8(event.frame);\r\n\t\t\t\tstream.writeInt8(event.subframe);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"timeSignature\":\r\n\t\t\t\tstream.writeInt8(0x58);\r\n\t\t\t\tstream.writeVarInt(4);\r\n\r\n\t\t\t\tstream.writeInt8(event.numerator);\r\n\t\t\t\tstream.writeInt8(Math.log2(event.denominator));\r\n\t\t\t\tstream.writeInt8(event.metronome);\r\n\t\t\t\tstream.writeInt8(event.thirtyseconds);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"keySignature\":\r\n\t\t\t\tstream.writeInt8(0x59);\r\n\t\t\t\tstream.writeVarInt(2);\r\n\r\n\t\t\t\tstream.writeInt8(event.key);\r\n\t\t\t\tstream.writeInt8(event.scale);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"sequencerSpecific\":\r\n\t\t\t\tstream.writeInt8(0x7f);\r\n\t\t\t\tstream.writeVarInt(event.data.length);\r\n\r\n\t\t\t\tstream.write(event.data);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"unhandled event subtype:\" + event.subtype);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"sysEx\":\r\n\t\t\tstream.writeInt8(0xf0);\r\n\t\t\tstream.writeVarInt(event.data.length);\r\n\t\t\tstream.write(event.data);\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"dividedSysEx\":\r\n\t\t\tstream.writeInt8(0xf7);\r\n\t\t\tstream.writeVarInt(event.data.length);\r\n\t\t\tstream.write(event.data);\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"channel\":\r\n\t\t\tswitch (event.subtype) {\r\n\t\t\tcase \"noteOn\":\r\n\t\t\t\tstream.writeInt8(0x90 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.velocity);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"noteOff\":\r\n\t\t\t\tstream.writeInt8(0x80 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.velocity ? event.velocity : 0);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"noteAftertouch\":\r\n\t\t\t\tstream.writeInt8(0xa0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.amount);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"controller\":\r\n\t\t\t\tstream.writeInt8(0xb0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.controllerType);\r\n\t\t\t\tstream.writeInt8(event.value);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"programChange\":\r\n\t\t\t\tstream.writeInt8(0xc0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.programNumber);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"channelAftertouch\":\r\n\t\t\t\tstream.writeInt8(0xd0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.amount);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pitchBend\":\r\n\t\t\t\tstream.writeInt8(0xe0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.value & 0xff);\r\n\t\t\t\tstream.writeInt8((event.value >> 7) & 0xff);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"unhandled event subtype:\" + event.subtype);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"unhandled event type:\" + event.type);\r\n\t\t}\r\n\t}\r\n\r\n\tconst stream = new OStream();\r\n\r\n\tconst headerChunk = new OStream();\r\n\theaderChunk.writeInt16(header.formatType);\r\n\theaderChunk.writeInt16(tracks.length);\r\n\theaderChunk.writeInt16(header.ticksPerBeat);\r\n\r\n\twriteChunk(stream, \"MThd\", headerChunk.getBuffer());\r\n\r\n\tfor (let i = 0; i < tracks.length; ++i) {\r\n\t\tconst trackChunk = new OStream();\r\n\r\n\t\tfor (let ei = 0; ei < tracks[i].length; ++ei)\r\n\t\t\twriteEvent(trackChunk, tracks[i][ei]);\r\n\r\n\t\twriteChunk(stream, \"MTrk\", trackChunk.getBuffer());\r\n\t}\r\n\r\n\treturn stream.getArrayBuffer();\r\n};\r\n","\r\n/* Wrapper for accessing strings through sequential writes */\r\n\r\n\r\n\r\nmodule.exports = class OStream {\r\n\tconstructor () {\r\n\t\tthis.buffer = \"\";\r\n\t}\r\n\r\n\twrite (str) {\r\n\t\tthis.buffer += str;\r\n\t}\r\n\r\n\t/* write a big-endian 32-bit integer */\r\n\twriteInt32 (i) {\r\n\t\tthis.buffer += String.fromCharCode((i >> 24) & 0xff) + String.fromCharCode((i >> 16) & 0xff) +\r\n\t\t\tString.fromCharCode((i >> 8) & 0xff) + String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write a big-endian 16-bit integer */\r\n\twriteInt16 (i) {\r\n\t\tthis.buffer += String.fromCharCode((i >> 8) & 0xff) + String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write an 8-bit integer */\r\n\twriteInt8 (i) {\r\n\t\tthis.buffer += String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write a MIDI-style variable-length integer\r\n\t\t(big-endian value in groups of 7 bits,\r\n\t\twith top bit set to signify that another byte follows)\r\n\t*/\r\n\twriteVarInt (i) {\r\n\t\tif (i < 0)\r\n\t\t\tthrow new Error(\"OStream.writeVarInt minus number: \" + i);\r\n\r\n\t\tconst b = i & 0x7f;\r\n\t\ti >>= 7;\r\n\t\tlet str = String.fromCharCode(b);\r\n\r\n\t\twhile (i) {\r\n\t\t\tconst b = i & 0x7f;\r\n\t\t\ti >>= 7;\r\n\t\t\tstr = String.fromCharCode(b | 0x80) + str;\r\n\t\t}\r\n\r\n\t\tthis.buffer += str;\r\n\t}\r\n\r\n\tgetBuffer () {\r\n\t\treturn this.buffer;\r\n\t}\r\n\r\n\tgetArrayBuffer () {\r\n\t\treturn Uint8Array.from(this.buffer.split(\"\").map(c => c.charCodeAt(0))).buffer;\r\n\t}\r\n};\r\n","\nmodule.exports = {\n\tparseMidiData: require(\"./midifile.js\"),\n\tencodeMidiFile: require(\"./midifileEx.js\"),\n};\n","\nconst midiToSequence = (midiFile, {timeWarp = 1} = {}) => {\n\tconst trackStates = [];\n\tlet beatsPerMinute = 120;\n\tconst ticksPerBeat = midiFile.header.ticksPerBeat;\n\n\tfor (let i = 0; i < midiFile.tracks.length; i++) {\n\t\ttrackStates[i] = {\n\t\t\tnextEventIndex: 0,\n\t\t\tticksToNextEvent: (\n\t\t\t\tmidiFile.tracks[i].length ?\n\t\t\t\t\tmidiFile.tracks[i][0].deltaTime :\n\t\t\t\t\tnull\n\t\t\t),\n\t\t};\n\t}\n\n\tfunction getNextEvent () {\n\t\tlet ticksToNextEvent = null;\n\t\tlet nextEventTrack = null;\n\t\tlet nextEventIndex = null;\n\n\t\tfor (let i = 0; i < trackStates.length; i++) {\n\t\t\tif (\n\t\t\t\ttrackStates[i].ticksToNextEvent != null\n\t\t\t\t&& (ticksToNextEvent == null || trackStates[i].ticksToNextEvent < ticksToNextEvent)\n\t\t\t) {\n\t\t\t\tticksToNextEvent = trackStates[i].ticksToNextEvent;\n\t\t\t\tnextEventTrack = i;\n\t\t\t\tnextEventIndex = trackStates[i].nextEventIndex;\n\t\t\t}\n\t\t}\n\t\tif (nextEventTrack != null) {\n\t\t\t/* consume event from that track */\n\t\t\tconst nextEvent = midiFile.tracks[nextEventTrack][nextEventIndex];\n\t\t\tif (midiFile.tracks[nextEventTrack][nextEventIndex + 1]) \n\t\t\t\ttrackStates[nextEventTrack].ticksToNextEvent += midiFile.tracks[nextEventTrack][nextEventIndex + 1].deltaTime;\n\t\t\telse \n\t\t\t\ttrackStates[nextEventTrack].ticksToNextEvent = null;\n\n\t\t\ttrackStates[nextEventTrack].nextEventIndex += 1;\n\t\t\t/* advance timings on all tracks by ticksToNextEvent */\n\t\t\tfor (let i = 0; i < trackStates.length; i++) {\n\t\t\t\tif (trackStates[i].ticksToNextEvent != null) \n\t\t\t\t\ttrackStates[i].ticksToNextEvent -= ticksToNextEvent;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tticksToEvent: ticksToNextEvent,\n\t\t\t\tevent: nextEvent,\n\t\t\t\ttrack: nextEventTrack,\n\t\t\t};\n\t\t}\n\t\telse \n\t\t\treturn null;\n\t\t\n\t};\n\t//\n\tlet midiEvent;\n\tconst events = [];\n\t//\n\tfunction processEvents () {\n\t\tfunction processNext () {\n\t\t\tlet secondsToGenerate = 0;\n\t\t\tif (midiEvent.ticksToEvent > 0) {\n\t\t\t\tconst beatsToGenerate = midiEvent.ticksToEvent / ticksPerBeat;\n\t\t\t\tsecondsToGenerate = beatsToGenerate / (beatsPerMinute / 60);\n\t\t\t}\n\n\t\t\t// beatsPerMinute must be changed after secondsToGenerate calculation\n\t\t\tif ( midiEvent.event.type == \"meta\" && midiEvent.event.subtype == \"setTempo\" ) {\n\t\t\t\t// tempo change events can occur anywhere in the middle and affect events that follow\n\t\t\t\tbeatsPerMinute = 60e+6 / midiEvent.event.microsecondsPerBeat;\n\t\t\t}\n\n\t\t\tconst time = (secondsToGenerate * 1000 * timeWarp) || 0;\n\t\t\tevents.push([ midiEvent, time ]);\n\t\t\tmidiEvent = getNextEvent();\n\t\t};\n\t\t//\n\t\tif (midiEvent = getNextEvent()) {\n\t\t\twhile (midiEvent)\n\t\t\t\tprocessNext();\n\t\t}\n\t};\n\n\tprocessEvents();\n\n\treturn events;\n};\n\n\nconst trimSequence = seq => {\n\tconst status = new Map();\n\n\treturn seq.filter(([{event, ticksToEvent}]) => {\n\t\tif (ticksToEvent > 0)\n\t\t\tstatus.clear();\n\n\t\tif (event.type !== \"channel\")\n\t\t\treturn true;\n\n\t\tconst key = `${event.subtype}|${event.channel}|${event.noteNumber}`;\n\n\t\tif (status.get(key)) {\n\t\t\t//console.debug(\"event trimmed:\", event, ticksToEvent);\n\t\t\treturn false;\n\t\t}\n\n\t\tstatus.set(key, event);\n\n\t\treturn true;\n\t});\n};\n\n\nconst fixOverlapNotes = seq => {\n\tconst noteMap = new Map();\n\tconst overlapMap = new Map();\n\tconst swaps = [];\n\n\tlet leapIndex = -1;\n\n\tseq.forEach(([{event, ticksToEvent}], index) => {\n\t\tif (ticksToEvent > 0)\n\t\t\tleapIndex = index;\n\n\t\tif (event.type !== \"channel\")\n\t\t\treturn;\n\n\t\tconst key = `${event.channel}|${event.noteNumber}`;\n\n\t\tswitch (event.subtype) {\n\t\tcase \"noteOn\":\n\t\t\tif (noteMap.get(key))\n\t\t\t\toverlapMap.set(key, leapIndex);\n\t\t\telse\n\t\t\t\tnoteMap.set(key, leapIndex);\n\n\t\t\tbreak;\n\t\tcase \"noteOff\":\n\t\t\tif (overlapMap.get(key)) {\n\t\t\t\tswaps.push([overlapMap.get(key), index]);\n\t\t\t\toverlapMap.delete(key);\n\t\t\t}\n\t\t\telse\n\t\t\t\tnoteMap.delete(key);\n\n\t\t\tbreak;\n\t\t}\n\t});\n\n\t// shift overlapped swaps\n\tswaps.forEach((swap, i) => {\n\t\tfor (let ii = i - 1; ii >= 0; --ii) {\n\t\t\tconst pre = swaps[ii];\n\t\t\tif (pre[1] < swap[0])\n\t\t\t\tbreak;\n\n\t\t\tif (swap[0] > pre[0])\n\t\t\t\t++swap[0];\n\t\t}\n\t});\n\n\t//console.debug(\"swaps:\", swaps);\n\tswaps.forEach(([front, back]) => {\n\t\tif (back >= seq.length - 1 || front < 0)\n\t\t\treturn;\n\n\t\tconst offEvent = seq[back];\n\t\tconst nextEvent = seq[back + 1];\n\t\tconst leapEvent = seq[front];\n\n\t\tif (!leapEvent[0].ticksToEvent) {\n\t\t\tconsole.warn(\"invalid front index:\", front, back, leapEvent);\n\t\t\treturn;\n\t\t}\n\n\t\t// ms per tick\n\t\tconst tempo = leapEvent[1] / leapEvent[0].ticksToEvent;\n\n\t\tnextEvent[1] += offEvent[1];\n\t\tnextEvent[0].ticksToEvent += offEvent[0].ticksToEvent;\n\n\t\toffEvent[0].ticksToEvent = leapEvent[0].ticksToEvent - 1;\n\t\tleapEvent[0].ticksToEvent = 1;\n\n\t\toffEvent[1] = offEvent[0].ticksToEvent * tempo;\n\t\tleapEvent[1] = leapEvent[0].ticksToEvent * tempo;\n\t\t//console.debug(\"swap:\", [front, back], offEvent, nextEvent, leapEvent);\n\n\t\tseq.splice(back, 1);\n\t\tseq.splice(front, 0, offEvent);\n\t});\n\n\treturn seq;\n};\n\n\n\nmodule.exports = {\n\tmidiToSequence,\n\ttrimSequence,\n\tfixOverlapNotes,\n};\n","\nconst MidiSequence = require(\"./MidiSequence.js\");\n\n\n\nconst PedalControllerTypes = {\n\t64: \"Sustain\",\n\t65: \"Portamento\",\n\t66: \"Sostenuto\",\n\t67: \"Soft\",\n};\n\n\n\nclass Notation {\n\tstatic parseMidi (data, {fixOverlap = true} = {}) {\n\t\tconst channelStatus = [];\n\t\tconst pedalStatus = {};\n\t\tconst pedals = {};\n\t\tconst channels = [];\n\t\tconst bars = [];\n\t\tlet time = 0;\n\t\tlet millisecondsPerBeat = 600000 / 120;\n\t\tlet beats = 0;\n\t\tlet numerator = 4;\n\t\tlet barIndex = 0;\n\t\tconst keyRange = {};\n\t\tlet rawTicks = 0;\n\t\tlet ticks = 0;\n\t\tlet correspondences;\n\t\tconst tempos = [];\n\n\t\tconst ticksPerBeat = data.header.ticksPerBeat;\n\n\t\tlet rawEvents = MidiSequence.midiToSequence(data);\n\n\t\tif (fixOverlap)\n\t\t\trawEvents = MidiSequence.trimSequence(MidiSequence.fixOverlapNotes(rawEvents));\n\n\t\tconst events = rawEvents.map(d => ({\n\t\t\tdata: d[0].event,\n\t\t\ttrack: d[0].track,\n\t\t\tdeltaTime: d[1],\n\t\t\tdeltaTicks: d[0].ticksToEvent,\n\t\t}));\n\n\t\tlet index = 0;\n\n\t\tconst ticksNormal = 1;\n\n\t\tfor (const ev of events) {\n\t\t\trawTicks += ev.deltaTicks;\n\t\t\tticks = Math.round(rawTicks * ticksNormal);\n\n\t\t\tif (ev.deltaTicks > 0) {\n\t\t\t\t// append bars\n\t\t\t\tconst deltaBeats = ev.deltaTicks / ticksPerBeat;\n\t\t\t\tfor (let b = Math.ceil(beats); b < beats + deltaBeats; ++b) {\n\t\t\t\t\tconst t = time + (b - beats) * millisecondsPerBeat;\n\t\t\t\t\tbars.push({time: t, index: barIndex % numerator});\n\n\t\t\t\t\t++barIndex;\n\t\t\t\t}\n\n\t\t\t\tbeats += deltaBeats;\n\t\t\t}\n\n\t\t\ttime += ev.deltaTime;\n\n\t\t\t//const ticksTime = beats * millisecondsPerBeat;\n\t\t\t//console.log(\"time:\", time, ticksTime, ticksTime - time);\n\n\t\t\tev.time = time;\n\t\t\tev.ticks = ticks;\n\n\t\t\tconst event = ev.data;\n\t\t\tswitch (event.type) {\n\t\t\tcase \"channel\":\n\t\t\t\t//channelStatus[event.channel] = channelStatus[event.channel] || [];\n\n\t\t\t\tswitch (event.subtype) {\n\t\t\t\tcase \"noteOn\":\n\t\t\t\t\t{\n\t\t\t\t\t\tconst pitch = event.noteNumber;\n\t\t\t\t\t\t//channelStatus[event.channel][pitch] = {\n\t\t\t\t\t\tchannelStatus.push({\n\t\t\t\t\t\t\tchannel: event.channel,\n\t\t\t\t\t\t\tpitch,\n\t\t\t\t\t\t\tstartTick: ticks,\n\t\t\t\t\t\t\tstart: time,\n\t\t\t\t\t\t\tvelocity: event.velocity,\n\t\t\t\t\t\t\tbeats: beats,\n\t\t\t\t\t\t\ttrack: ev.track,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tkeyRange.low = Math.min(keyRange.low || pitch, pitch);\n\n\t\t\t\t\t\tev.index = index;\n\t\t\t\t\t\t++index;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"noteOff\":\n\t\t\t\t\t{\n\t\t\t\t\t\tconst pitch = event.noteNumber;\n\n\t\t\t\t\t\tchannels[event.channel] = channels[event.channel] || [];\n\n\t\t\t\t\t\tconst statusIndex = channelStatus.findIndex(status => status.channel == event.channel && status.pitch == pitch);\n\t\t\t\t\t\tif (statusIndex >= 0) {\n\t\t\t\t\t\t\tconst status = channelStatus.splice(statusIndex, 1)[0];\n\n\t\t\t\t\t\t\tchannels[event.channel].push({\n\t\t\t\t\t\t\t\tchannel: event.channel,\n\t\t\t\t\t\t\t\tstartTick: status.startTick,\n\t\t\t\t\t\t\t\tendTick: ticks,\n\t\t\t\t\t\t\t\tpitch,\n\t\t\t\t\t\t\t\tstart: status.start,\n\t\t\t\t\t\t\t\tduration: time - status.start,\n\t\t\t\t\t\t\t\tvelocity: status.velocity,\n\t\t\t\t\t\t\t\tbeats: status.beats,\n\t\t\t\t\t\t\t\ttrack: status.track,\n\t\t\t\t\t\t\t\tfinger: status.finger,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tconsole.debug(\"unexpected noteOff: \", time, event);\n\n\t\t\t\t\t\tkeyRange.high = Math.max(keyRange.high || pitch, pitch);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"controller\":\n\t\t\t\t\tswitch (event.controllerType) {\n\t\t\t\t\t// pedal controllers\n\t\t\t\t\tcase 64:\n\t\t\t\t\tcase 65:\n\t\t\t\t\tcase 66:\n\t\t\t\t\tcase 67:\n\t\t\t\t\t\tconst pedalType = PedalControllerTypes[event.controllerType];\n\n\t\t\t\t\t\tpedalStatus[event.channel] = pedalStatus[event.channel] || {};\n\t\t\t\t\t\tpedals[event.channel] = pedals[event.channel] || [];\n\n\t\t\t\t\t\tconst status = pedalStatus[event.channel][pedalType];\n\n\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\tpedals[event.channel].push({type: pedalType, start: status.start, duration: time - status.start, value: status.value});\n\t\t\t\t\t\tpedalStatus[event.channel][pedalType] = {start: time, value: event.value};\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase \"meta\":\n\t\t\t\tswitch (event.subtype) {\n\t\t\t\tcase \"setTempo\":\n\t\t\t\t\tmillisecondsPerBeat = event.microsecondsPerBeat / 1000;\n\t\t\t\t\t//beats = Math.round(beats);\n\t\t\t\t\t//console.assert(Number.isFinite(time), \"invalid time:\", time);\n\t\t\t\t\ttempos.push({tempo: event.microsecondsPerBeat, tick: ticks, time});\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"timeSignature\":\n\t\t\t\t\tnumerator = event.numerator;\n\t\t\t\t\tbarIndex = 0;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tif (!correspondences && /^find-corres:/.test(event.text)) {\n\t\t\t\t\t\tconst captures = event.text.match(/:([\\d\\,-]+)/);\n\t\t\t\t\t\tconst str = captures && captures[1] || \"\";\n\t\t\t\t\t\tcorrespondences = str.split(\",\").map(s => Number(s));\n\t\t\t\t\t}\n\t\t\t\t\telse if (/fingering\\(.*\\)/.test(event.text)) {\n\t\t\t\t\t\tconst [_, fingers] = event.text.match(/\\((.+)\\)/);\n\t\t\t\t\t\tconst finger = Number(fingers);\n\t\t\t\t\t\tif (!Number.isNaN(finger)) {\n\t\t\t\t\t\t\tconst status = channelStatus[channelStatus.length - 1];\n\t\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\t\tstatus.finger = finger;\n\n\t\t\t\t\t\t\tconst event = events.find(e => e.index == index - 1);\n\t\t\t\t\t\t\tif (event)\n\t\t\t\t\t\t\t\tevent.data.finger = finger;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"copyrightNotice\":\n\t\t\t\t\tconsole.log(\"MIDI copyright:\", event.text);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tchannelStatus.forEach(status => {\n\t\t\tconsole.debug(\"unclosed noteOn event at\", status.startTick, status);\n\n\t\t\tchannels[status.channel].push({\n\t\t\t\tstartTick: status.startTick,\n\t\t\t\tendTick: ticks,\n\t\t\t\tpitch: status.pitch,\n\t\t\t\tstart: status.start,\n\t\t\t\tduration: time - status.start,\n\t\t\t\tvelocity: status.velocity,\n\t\t\t\tbeats: status.beats,\n\t\t\t\ttrack: status.track,\n\t\t\t\tfinger: status.finger,\n\t\t\t});\n\t\t});\n\n\t\treturn new Notation({\n\t\t\tchannels,\n\t\t\tkeyRange,\n\t\t\tpedals,\n\t\t\tbars,\n\t\t\tendTime: time,\n\t\t\tendTick: ticks,\n\t\t\tcorrespondences,\n\t\t\tevents,\n\t\t\ttempos,\n\t\t\tticksPerBeat,\n\t\t\tmeta: {},\n\t\t});\n\t}\n\n\n\tconstructor (fields) {\n\t\tObject.assign(this, fields);\n\n\t\t// channels to notes\n\t\tthis.notes = [];\n\t\tfor (const channel of this.channels) {\n\t\t\tif (channel) {\n\t\t\t\tfor (const note of channel)\n\t\t\t\t\tthis.notes.push(note);\n\t\t\t}\n\t\t}\n\t\tthis.notes.sort(function (n1, n2) {\n\t\t\treturn n1.start - n2.start;\n\t\t});\n\n\t\tfor (const i in this.notes)\n\t\t\tthis.notes[i].index = Number(i);\n\n\n\t\t// duration\n\t\tthis.duration = this.notes.length > 0 ? (this.endTime - this.notes[0].start) : 0,\n\n\t\t//this.endSoftIndex = this.notes.length ? this.notes[this.notes.length - 1].softIndex : 0;\n\n\n\t\t// pitch map\n\t\tthis.pitchMap = [];\n\t\tfor (const c in this.channels) {\n\t\t\tfor (const n in this.channels[c]) {\n\t\t\t\tconst pitch = this.channels[c][n].pitch;\n\t\t\t\tthis.pitchMap[pitch] = this.pitchMap[pitch] || [];\n\n\t\t\t\tthis.pitchMap[pitch].push(this.channels[c][n]);\n\t\t\t}\n\t\t}\n\n\t\tthis.pitchMap.forEach(notes => notes.sort((n1, n2) => n1.start - n2.start));\n\n\n\t\t/*// setup measure notes index\n\t\tif (this.measures) {\n\t\t\tconst measure_list = [];\n\n\t\t\tlet last_measure = null;\n\t\t\tconst measure_entries = Object.entries(this.measures).sort((e1, e2) => Number(e1[0]) - Number(e2[0]));\n\t\t\tfor (const [t, measure] of measure_entries) {\n\t\t\t\t//console.log(\"measure time:\", Number(t));\n\t\t\t\tmeasure.startTick = Number(t);\n\t\t\t\tmeasure.notes = [];\n\n\t\t\t\tif (last_measure)\n\t\t\t\t\tlast_measure.endTick = measure.startTick;\n\n\t\t\t\tconst m = measure.measure;\n\t\t\t\tmeasure_list[m] = measure_list[m] || [];\n\t\t\t\tmeasure_list[m].push(measure);\n\n\t\t\t\tlast_measure = measure;\n\t\t\t}\n\t\t\tif (last_measure)\n\t\t\t\tlast_measure.endTick = this.notes[this.notes.length - 1].endTick;\n\t\t\tfor (const i in this.notes) {\n\t\t\t\tconst note = this.notes[i];\n\t\t\t\tfor (const t in this.measures) {\n\t\t\t\t\tconst measure = this.measures[t];\n\t\t\t\t\tif (note.startTick >= measure.startTick && note.startTick < measure.endTick || note.endTick > measure.startTick && note.endTick <= measure.endTick)\n\t\t\t\t\t\tmeasure.notes.push(note);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.measure_list = measure_list;\n\t\t}*/\n\n\n\t\t// prepare beats info\n\t\tif (this.meta.beatInfos) {\n\t\t\tfor (let i = 0; i < this.meta.beatInfos.length; ++i) {\n\t\t\t\tconst info = this.meta.beatInfos[i];\n\t\t\t\tif (i > 0) {\n\t\t\t\t\tconst lastInfo = this.meta.beatInfos[i - 1];\n\t\t\t\t\tinfo.beatIndex = lastInfo.beatIndex + Math.ceil((info.tick - lastInfo.tick) / this.ticksPerBeat);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tinfo.beatIndex = 0;\n\t\t\t}\n\t\t}\n\n\n\t\t// compute tempos tick -> time\n\t\t{\n\t\t\tlet time = 0;\n\t\t\tlet ticks = 0;\n\t\t\tlet tempo = 500000;\n\t\t\tfor (const entry of this.tempos) {\n\t\t\t\tconst deltaTicks = entry.tick - ticks;\n\t\t\t\ttime += (tempo / 1000) * deltaTicks / this.ticksPerBeat;\n\n\t\t\t\tticks = entry.tick;\n\t\t\t\ttempo = entry.tempo;\n\n\t\t\t\tentry.time = time;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfindChordBySoftindex (softIndex, radius = 0.8) {\n\t\treturn this.notes.filter(note => Math.abs(note.softIndex - softIndex) < radius);\n\t}\n\n\n\taverageTempo (tickRange) {\n\t\ttickRange = tickRange || {from: 0, to: this.endtick};\n\n\t\tconsole.assert(this.tempos, \"no tempos.\");\n\t\tconsole.assert(tickRange.to > tickRange.from, \"range is invalid:\", tickRange);\n\n\t\tconst span = index => {\n\t\t\tconst from = Math.max(tickRange.from, this.tempos[index].tick);\n\t\t\tconst to = (index < this.tempos.length - 1) ? Math.min(this.tempos[index + 1].tick, tickRange.to) : tickRange.to;\n\n\t\t\treturn Math.max(0, to - from);\n\t\t};\n\n\t\tconst tempo_sum = this.tempos.reduce((sum, tempo, index) => sum + tempo.tempo * span(index), 0);\n\n\t\tconst average = tempo_sum / (tickRange.to - tickRange.from);\n\n\t\t// convert microseconds per beat to beats per minute\n\t\treturn 60e+6 / average;\n\t}\n\n\n\tticksToTime (tick) {\n\t\tconsole.assert(Number.isFinite(tick), \"invalid tick value:\", tick);\n\t\tconsole.assert(this.tempos && this.tempos.length, \"no tempos.\");\n\n\t\tconst next_tempo_index = this.tempos.findIndex(tempo => tempo.tick > tick);\n\t\tconst tempo_index = next_tempo_index < 0 ? this.tempos.length - 1 : Math.max(next_tempo_index - 1, 0);\n\n\t\tconst tempo = this.tempos[tempo_index];\n\n\t\treturn tempo.time + (tick - tempo.tick) * tempo.tempo * 1e-3 / this.ticksPerBeat;\n\t}\n\n\n\ttimeToTicks (time) {\n\t\tconsole.assert(Number.isFinite(time), \"invalid time value:\", time);\n\t\tconsole.assert(this.tempos && this.tempos.length, \"no tempos.\");\n\n\t\tconst next_tempo_index = this.tempos.findIndex(tempo => tempo.time > time);\n\t\tconst tempo_index = next_tempo_index < 0 ? this.tempos.length - 1 : Math.max(next_tempo_index - 1, 0);\n\n\t\tconst tempo = this.tempos[tempo_index];\n\n\t\treturn tempo.tick + (time - tempo.time) * this.ticksPerBeat / (tempo.tempo * 1e-3);\n\t}\n\n\n\ttickRangeToTimeRange (tickRange) {\n\t\tconsole.assert(tickRange.to >= tickRange.from, \"invalid tick range:\", tickRange);\n\n\t\treturn {\n\t\t\tfrom: this.ticksToTime(tickRange.from),\n\t\t\tto: this.ticksToTime(tickRange.to),\n\t\t};\n\t}\n\n\n\t/*getMeasureRange (measureRange) {\n\t\tconsole.assert(Number.isInteger(measureRange.start) && Number.isInteger(measureRange.end), \"invalid measure range:\", measureRange);\n\t\tconsole.assert(this.measure_list && this.measure_list[measureRange.start] && this.measure_list[measureRange.end], \"no measure data for specific index:\", this.measure_list, measureRange);\n\n\t\tconst startMeasure = this.measure_list[measureRange.start][0];\n\t\tlet endMeasure = null;\n\t\tfor (const measure of this.measure_list[measureRange.end]) {\n\t\t\tif (measure.endTick > startMeasure.startTick) {\n\t\t\t\tendMeasure = measure;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// there no path between start measure and end measure.\n\t\tif (!endMeasure)\n\t\t\treturn null;\n\n\t\tconst tickRange = {from: startMeasure.startTick, to: endMeasure.endTick, duration: endMeasure.endTick - startMeasure.startTick};\n\t\tconst timeRange = this.tickRangeToTimeRange(tickRange);\n\t\ttimeRange.duration = timeRange.to - timeRange.from;\n\n\t\treturn {\n\t\t\ttickRange,\n\t\t\ttimeRange,\n\t\t};\n\t}*/\n\n\n\tscaleTempo ({factor, headTempo}) {\n\t\tconsole.assert(this.tempos && this.tempos.length, \"[Notation.scaleTempo] tempos is empty.\");\n\n\t\tif (headTempo)\n\t\t\tfactor = headTempo / this.tempos[0].tempo;\n\n\t\tconsole.assert(Number.isFinite(factor) && factor > 0, \"[Notation.scaleTempo] invalid factor:\", factor);\n\n\t\tthis.tempos.forEach(tempo => {\n\t\t\ttempo.tempo *= factor;\n\t\t\ttempo.time *= factor;\n\t\t});\n\t\tthis.events.forEach(event => {\n\t\t\tevent.deltaTime *= factor;\n\t\t\tevent.time *= factor;\n\t\t});\n\t\tthis.notes.forEach(note => {\n\t\t\tnote.start *= factor;\n\t\t\tnote.duration *= factor;\n\t\t});\n\n\t\tthis.endTime *= factor;\n\t}\n};\n\n\n\nmodule.exports = {\n\tNotation,\n};\n","\nconst { Notation } = require(\"./MusicNotation.js\");\n\n\n\n//const msDelay = ms => new Promise(resolve => setTimeout(resolve, ms));\nconst animationDelay = () => new Promise(resolve => requestAnimationFrame(resolve));\n\n\nclass MidiPlayer {\n\tconstructor (midiData, {cacheSpan = 600, onMidi, onPlayFinish, onTurnCursor} = {}) {\n\t\tthis.cacheSpan = cacheSpan;\n\t\tthis.onMidi = onMidi;\n\t\tthis.onPlayFinish = onPlayFinish;\n\t\tthis.onTurnCursor = onTurnCursor;\n\n\t\tlet notation;\n\t\tif (midiData.notes && Number.isFinite(midiData.endTime))\n\t\t\tnotation = midiData;\n\t\telse\n\t\t\tnotation = Notation.parseMidi(midiData);\n\n\t\tthis.notation = notation;\n\t\tthis.events = notation.events;\n\t\t//console.log(\"events:\", this.events);\n\n\t\tthis.isPlaying = false;\n\t\tthis.progressTime = 0;\n\t\tthis.startTime = performance.now();\n\t\tthis.duration = notation.endTime;\n\t\tthis.cursorTurnDelta = 0;\n\n\t\tconsole.assert(notation.tempos && notation.tempos.length, \"[MidiPlayer] invalid notation, tempos is empty.\");\n\t}\n\n\n\tdispose () {\n\t\tthis.isPlaying = false;\n\t\tthis.progressTime = 0;\n\t}\n\n\n\tget progressTicks () {\n\t\treturn this.notation.timeToTicks(this.progressTime);\n\t}\n\n\n\tset progressTicks (value) {\n\t\tthis.progressTime = this.notation.ticksToTime(value);\n\n\t\tif (this.onTurnCursor)\n\t\t\tthis.onTurnCursor(this.progressTime);\n\t}\n\n\n\tasync play ({nextFrame = animationDelay} = {}) {\n\t\tif (this.progressTime >= this.duration)\n\t\t\tthis.progressTime = 0;\n\n\t\tlet now = performance.now();\n\t\tthis.startTime = now - this.progressTime;\n\n\t\tthis.isPlaying = true;\n\n\t\tlet currentEventIndex = this.events.findIndex(event => event.time >= now - this.startTime);\n\n\t\twhile (this.isPlaying) {\n\t\t\tfor (; currentEventIndex < this.events.length; ++currentEventIndex) {\n\t\t\t\tconst event = this.events[currentEventIndex];\n\t\t\t\t//console.log(\"play event:\", currentEventIndex, event.time, this.progressTime + this.cacheSpan);\n\t\t\t\tif (!event || event.time > this.progressTime + this.cacheSpan)\n\t\t\t\t\tbreak;\n\n\t\t\t\tif (event.data.type === \"channel\" && this.startTime + event.time >= now)\n\t\t\t\t\tif (this.onMidi)\n\t\t\t\t\t\tthis.onMidi(event.data, this.startTime + event.time);\n\t\t\t}\n\n\t\t\tawait nextFrame();\n\n\t\t\tif (!this.isPlaying)\n\t\t\t\tbreak;\n\n\t\t\tif (this.cursorTurnDelta !== 0) {\n\t\t\t\tconst backturn = this.cursorTurnDelta < 0;\n\n\t\t\t\tthis.startTime -= this.cursorTurnDelta;\n\t\t\t\tthis.cursorTurnDelta = 0;\n\n\t\t\t\tif (backturn) {\n\t\t\t\t\tfor (; currentEventIndex > 0; --currentEventIndex) {\n\t\t\t\t\t\tconst eventTime = this.events[currentEventIndex].time;\n\t\t\t\t\t\tif (this.startTime + eventTime < now)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnow = performance.now();\n\n\t\t\tthis.progressTime = now - this.startTime;\n\n\t\t\tif (this.progressTime > this.duration) {\n\t\t\t\tthis.isPlaying = false;\n\n\t\t\t\tif (this.onPlayFinish)\n\t\t\t\t\tthis.onPlayFinish();\n\t\t\t}\n\t\t}\n\t}\n\n\n\tpause () {\n\t\tthis.isPlaying = false;\n\t}\n\n\n\tturnCursor (time) {\n\t\t//console.log(\"onTurnCursor:\", time, oldTime);\n\t\tif (this.isPlaying)\n\t\t\tthis.cursorTurnDelta += time - this.progressTime;\n\t\telse\n\t\t\tthis.progressTime = time;\n\n\t\tif (this.onTurnCursor)\n\t\t\tthis.onTurnCursor(time);\n\t}\n};\n\n\n\nmodule.exports = MidiPlayer;\n","\nmodule.exports = {\n\tCostStepAttenuation: 0.6,\n\tSkipDeep: 3,\n\tPriorDistanceSigmoidFactor: 0.1,\n\tPriorValueSigmoidFactor: 0.12,\n\n\tSkipCost: 0.5,\n\tLagOffsetCost: 1,\n\tLeadOffsetCost: 1.6,\n\tZeroOffsetCost: 0.58,\n\n\tRelocationThreshold: 6,\n};\n","\nconst {pick} = require(\"lodash\");\n\nconst Config = require(\"./config.js\");\n\n\n\nclass Node {\n\tconstructor (s_note, c_note) {\n\t\tthis.s_note = s_note;\n\t\tthis.c_note = c_note;\n\n\t\tconsole.assert(this.s_note.softIndex != null, \"s_note softIndex is null\");\n\t\tthis.offset = this.s_note.softIndex - this.c_note.softIndex;\n\n\t\tthis._prev = null;\n\t\tthis._totalCost = 0;\n\t\tthis._value = 0;\n\t\tthis.cacheDirty = true;\n\n\t\t//this.evaluatePrev(Node.Zero);\n\t}\n\n\n\tget prev () {\n\t\treturn this._prev;\n\t}\n\n\n\tset prev (value) {\n\t\tif (value != this._prev) {\n\t\t\tthis._prev = value;\n\t\t\tthis.cacheDirty = true;\n\t\t}\n\t}\n\n\n\tget si () {\n\t\treturn this.s_note.index;\n\t}\n\n\n\tget ci () {\n\t\treturn this.c_note.index;\n\t}\n\n\n\tget root () {\n\t\treturn this.prev.root || this;\n\t}\n\n\n\tget rootSi () {\n\t\treturn !this.prev.zero ? this.prev.rootSi : this.si;\n\t}\n\n\n\tget id () {\n\t\treturn `${this.s_note.index},${this.c_note.index}`;\n\t}\n\n\n\tstatic cost (prev, skip, self) {\n\t\treturn prev * Config.CostStepAttenuation + Math.tanh(skip * Config.SkipCost) + Math.tanh(self * 0.5);\n\t}\n\n\n\tupdateCache () {\n\t\tif (this.cacheDirty) {\n\t\t\tthis._totalCost = Node.cost(this.prev.totalCost, this.si - this.prev.si - 1, this.selfCost);\n\t\t\tthis._value = this.prev.value + 1 - Math.tanh(this.selfCost * 0.5);\n\n\t\t\tthis.cacheDirty = false;\n\t\t}\n\t}\n\n\n\tget totalCost () {\n\t\tthis.updateCache();\n\n\t\treturn this._totalCost;\n\t}\n\n\n\tget value () {\n\t\tthis.updateCache();\n\n\t\treturn this._value;\n\t}\n\n\n\tget deep () {\n\t\treturn this.prev.deep + 1;\n\t}\n\n\n\tget path () {\n\t\tconst path = [];\n\t\tfor (let node = this; !node.zero; node = node.prev) {\n\t\t\tpath[node.si] = node.ci;\n\t\t}\n\n\t\tfor (let i = 0; i < path.length; ++i)\n\t\t\tif (typeof path[i] != \"number\")\n\t\t\t\tpath[i] = -1;\n\n\t\treturn path;\n\t}\n\n\n\tdump () {\n\t\treturn pick(this, [\"id\", \"si\", \"ci\", \"rootSi\", \"value\", \"deep\", \"rootSi\", \"offset\", \"prior\", \"selfCost\", \"totalCost\"]);\n\t}\n\n\n\tevaluatePrev (node) {\n\t\tconst cost = this.evaluatePrevCost(node);\n\n\t\tconsole.assert(this.si - node.si >= 1, \"node index error:\", this, node/*, {get [Symbol.toStringTag]() {debugger}}*/);\n\t\t//if (this.si - node.si < 1)\n\t\t//\tdebugger;\n\n\t\tconst totalCost = Node.cost(node.totalCost, this.si - node.si - 1, cost);\n\n\t\tif (!this.prev || totalCost < this.totalCost) {\n\t\t\tthis.prev = node;\n\t\t\tthis.selfCost = cost;\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\tevaluatePrevCost (node) {\n\t\tlet cost = 0;\n\n\t\tif (node.offset != null) {\n\t\t\tconst bias = this.offset - node.offset;\n\t\t\tconst costCoeff = node.zero ? Config.ZeroOffsetCost : (bias > 0 ? Config.LagOffsetCost : Config.LeadOffsetCost);\n\t\t\tcost += (bias * costCoeff) ** 2;\n\t\t}\n\n\t\treturn cost;\n\t}\n\n\n\tpriorByOffset (offset) {\n\t\tconst distance = Math.abs(this.offset - offset) / 1;//(this.s_note.deltaSi + 0.04);\n\n\t\treturn Math.tanh(this.value * Config.PriorValueSigmoidFactor) - Math.tanh(distance * Config.PriorDistanceSigmoidFactor);\n\t\t//return Math.log(this.value) * Math.tanh(4 / distance);\n\t\t//return this.value - distance;\n\t}\n\n\n\tstatic zero () {\n\t\treturn {\n\t\t\tzero: true,\n\t\t\ttotalCost: 0,\n\t\t\tvalue: 0,\n\t\t\tsi: -1,\n\t\t\tci: -1,\n\t\t\tdeep: 0,\n\t\t\toffset: 0,\n\t\t};\n\t}\n};\n\n\n\nmodule.exports = Node;\n","\nconst Config = require(\"./config.js\");\nconst Node = require(\"./node.js\");\n\n\n\nclass Navigator {\n\tconstructor (criterion, sample, options = {}) {\n\t\tthis.criterion = criterion;\n\t\tthis.sample = sample;\n\n\t\tthis.getCursorOffset = options.getCursorOffset || (() => null);\n\t\tthis.outOfPage = options.outOfPage;\n\n\t\tthis.bestNode = null;\n\t\tthis.fineCursor = null;\n\n\t\tthis.breakingSI = sample.notes.length - 1;\n\n\t\tthis.zeroNode = Node.zero();\n\t\tthis.zeroNode.offset = this.getCursorOffset() || 0;\n\n\t\tthis.relocationThreshold = options.relocationThreshold || Config.RelocationThreshold;\n\t}\n\n\n\tstep (index) {\n\t\t//console.log(\"step:\", this.zeroNode.offset);\n\t\tconst note = this.sample.notes[index];\n\n\t\tif (note.matches.length > 0) {\n\t\t\t//console.log(\"zeroNode.offset:\", index, this.zeroNode.offset);\n\t\t\tnote.matches.forEach(node => {\n\t\t\t\tnode.evaluatePrev(this.zeroNode);\n\t\t\t\t//console.log(\"node:\", node, node.evaluatePrevCost(this.zeroNode), node.offset, this.zeroNode.offset);\n\n\t\t\t\tfor (let si = index - 1; si >= Math.max(this.breakingSI + 1, index - Config.SkipDeep); --si) {\n\t\t\t\t\t//const skipCost = Config.SkipCost * (index - 1 - si);\n\n\t\t\t\t\tconst prevNote = this.sample.notes[si];\n\t\t\t\t\tconsole.assert(prevNote, \"prevNote is null:\", si, index, this.sample.notes);\n\t\t\t\t\tprevNote.matches.forEach(prevNode => {\n\t\t\t\t\t\tconst bias = node.offset - prevNode.offset;\n\t\t\t\t\t\tif (/*prevNode.totalCost + skipCost < node.totalCost\n\t\t\t\t\t\t\t&&*/ (bias < 2 / Config.LagOffsetCost && bias > -2 / Config.LeadOffsetCost))\n\t\t\t\t\t\t\tnode.evaluatePrev(prevNode);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tnode.prior = node.totalCost > 1.99 ? -1 : node.priorByOffset(this.zeroNode.offset);\n\n\t\t\t\tif (node.prior > 0 && this.outOfPage) {\n\t\t\t\t\tconst tick = this.criterion.notes[node.ci].startTick;\n\t\t\t\t\tif (this.outOfPage(tick))\n\t\t\t\t\t\tnode.prior -= 0.7;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tnote.matches.sort((c1, c2) => c2.prior - c1.prior);\n\t\t\tthis.cursors = note.matches;\n\t\t\t//console.log(\"navigator cursors:\", this.cursors);\n\n\t\t\tlet fineCursor = null;\n\t\t\tconst nullLength = this.nullSteps(index);\n\n\t\t\tconst cursor = this.cursors[0];\n\t\t\tif (cursor && cursor.totalCost < 1) {\n\t\t\t\t//console.log(\"nullLength:\", nullLength, nullLength * Math.log(cursor.value / 4));\n\t\t\t\tif (cursor.prior > 0 || (cursor.totalCost < 0.4 && Math.log(Math.max(nullLength * cursor.value, 1e-3)) > this.relocationThreshold)) {\n\t\t\t\t\tthis.zeroNode.offset = cursor.offset;\n\n\t\t\t\t\tfineCursor = cursor;\n\n\t\t\t\t\tif (!this.bestNode || cursor.value > this.bestNode.value)\n\t\t\t\t\t\tthis.bestNode = cursor;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (fineCursor)\n\t\t\t\tthis.fineCursor = fineCursor;\n\t\t\telse {\n\t\t\t\tif (!this.resetCursor(index, {breaking: false/*nullLength > Config.SkipDeep*/})) {\n\t\t\t\t\tthis.zeroNode.offset += note.deltaSi * Math.tanh(nullLength);\n\t\t\t\t\tconsole.assert(!Number.isNaN(this.zeroNode.offset), \"zeroNode.offset is NaN.\", note.deltaSi, nullLength);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t\tthis.cursors = [];\n\t}\n\n\n\tpath ({fromIndex = 0, toIndex = this.sample.notes.length - 1} = {}) {\n\t\tconst path = [];\n\n\t\tlet offset = null;\n\n\t\tfor (let si = toIndex; si >= fromIndex;) {\n\t\t\tconst note = this.sample.notes[si];\n\n\t\t\tif (!note.matches.length || note.matches[0].prior < -0.01 || note.matches[0].totalCost >= 1) {\n\t\t\t\t//if (note.matches.length)\n\t\t\t\t//\tconsole.log(\"path -1:\", si, note.matches[0].prior, note.matches[0].totalCost);\n\t\t\t\tpath[si] = -1;\n\t\t\t\t--si;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// sort nodes by backwards heuristic offset\n\t\t\tif (offset != null) {\n\t\t\t\tnote.matches.forEach(node => node.backPrior = (node.totalCost < 1.99 ? node.priorByOffset(offset) : -1));\n\t\t\t\tnote.matches.sort((n1, n2) => n2.backPrior - n1.backPrior);\n\t\t\t}\n\n\t\t\tconst node = note.matches[0];\n\t\t\tnode.path.forEach((ci, si) => path[si] = ci);\n\t\t\t//console.log(\"node path:\", si, node.path);\n\n\t\t\toffset = node.root.offset;\n\n\t\t\tsi = node.rootSi - 1;\n\t\t}\n\n\t\tconsole.assert(path.length == toIndex + 1, \"path length error:\", path, fromIndex, toIndex + 1,\n\t\t\tthis.sample.notes.length, this.sample.notes.length ? this.sample.notes[this.sample.notes.length - 1].index : null);\n\n\t\treturn path;\n\t}\n\n\n\tnullSteps (index) {\n\t\treturn index - (this.fineCursor ? this.fineCursor.si : -1) - 1;\n\t}\n\n\n\tresetCursor (index, {breaking = true} = {}) {\n\t\tif (breaking)\n\t\t\tthis.breakingSI = index;\n\n\t\tconst cursorOffset = this.getCursorOffset();\n\t\tif (cursorOffset != null) {\n\t\t\t//console.log(\"cursorOffset:\", cursorOffset);\n\n\t\t\tthis.zeroNode.offset = cursorOffset;\n\t\t\t//this.breaking = this.nullSteps(index) > Config.SkipDeep;\n\t\t\t//if (this.breaking)\t// trivial zero node si resets result in focus path interruption\n\t\t\tthis.zeroNode.si = index;\n\t\t\tthis.fineCursor = null;\n\n\t\t\tconsole.assert(!Number.isNaN(this.zeroNode.offset), \"zeroNode.offset is NaN.\", cursorOffset);\n\t\t\t//console.log(\"cursor offset reset:\", cursorOffset);\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\tget relocationTendency () {\n\t\tconst cursor = this.cursors && this.cursors[0];\n\t\tif (!cursor)\n\t\t\treturn null;\n\n\t\tconst nullLength = this.nullSteps(cursor.si);\n\t\tif (nullLength <= 0)\n\t\t\treturn 0;\n\n\t\treturn Math.log(Math.max(nullLength * cursor.value, 1e-3)) / this.relocationThreshold;\n\t}\n};\n\n\n\nmodule.exports = Navigator;\n","\nconst Node = require(\"./node.js\");\nconst Navigator = require(\"./navigator.js\");\n\n\n\nconst HEART_BEAT = 800;\t// in ms\nconst SIMULTANEOUS_INTERVAL = HEART_BEAT * 0.24;\n\n\nconst normalizeInterval = interval => Math.tanh(interval / SIMULTANEOUS_INTERVAL);\n\n\n// greater softIndexFactor make 'harder' soft index\nconst makeNoteSoftIndex = function (notes, index, {softIndexFactor = 1} = {}) {\n\tindex = Number(index);\n\n\tconst note = notes[index];\n\n\t// make soft index\n\tif (index > 0) {\n\t\tconst lastNote = notes[index - 1];\n\n\t\tconsole.assert(note.start != null, \"note.start is null\", note);\n\t\tconsole.assert(lastNote.start != null, \"lastNote.start is null\", lastNote);\n\n\t\tnote.deltaSi = normalizeInterval((note.start - lastNote.start) * softIndexFactor);\n\t\tnote.softIndex = lastNote.softIndex + note.deltaSi;\n\n\t\tconsole.assert(!Number.isNaN(note.deltaSi), \"note.deltaSi is NaN.\", note.start, lastNote.start);\n\t}\n\telse {\n\t\tnote.softIndex = 0;\n\t\tnote.deltaSi = 0;\n\t}\n};\n\n\nconst makeMatchNodes = function (note, criterion, zeroNode = Node.zero()) {\n\tnote.matches = [];\n\n\tconst targetList = criterion.pitchMap[note.pitch];\n\tif (targetList) {\n\t\tfor (const targetNote of targetList) {\n\t\t\tconst node = new Node(note, targetNote);\n\t\t\tif (zeroNode)\n\t\t\t\tnode.evaluatePrev(zeroNode);\n\n\t\t\tnote.matches.push(node);\n\t\t}\n\t}\n};\n\n\nconst genNotationContext = function (notation, {softIndexFactor = 1} = {}) {\n\tfor (let i = 0; i < notation.notes.length; ++i)\n\t\tmakeNoteSoftIndex(notation.notes, i, {softIndexFactor});\n};\n\n\nconst runNavigation = async function(criterion, sample, onStep) {\n\tconst navigator = new Navigator(criterion, sample);\n\tnavigator.resetCursor(-1);\n\n\tfor (let i = 0; i < sample.notes.length; ++i) {\n\t\tnavigator.step(i);\n\n\t\tconst next = await (onStep && onStep(i, navigator));\n\t\tif (next === Symbol.for(\"end\")) {\n\t\t\tconsole.log(\"Navigation interrupted.\");\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t//console.log(\"Navigation accomplished.\");\n\n\treturn navigator;\n};\n\n\n\nmodule.exports = {\n\tnormalizeInterval,\n\tmakeNoteSoftIndex,\n\tmakeMatchNodes,\n\tgenNotationContext,\n\trunNavigation,\n\tNavigator,\n\tNode,\n};\n","\nconst MIDI = require(\"./MIDI\");\n\n\n\nconst trackDeltaToAbs = events => {\n\tlet tick = 0;\n\n\tevents.forEach(event => {\n\t\ttick += event.deltaTime;\n\t\tevent.tick = tick;\n\t});\n};\n\n\nconst trackAbsToDelta = events => {\n\tlet lastTick = 0;\n\n\tevents.sort((e1, e2) => e1.tick - e2.tick).forEach(event => {\n\t\tevent.deltaTime = event.tick - lastTick;\n\t\tlastTick = event.tick;\n\t});\n};\n\n\nconst sliceTrack = (track, startTick, endTick) => {\n\ttrackDeltaToAbs(track);\n\n\tconst events = [];\n\tconst status = {};\n\n\ttrack.forEach(event => {\n\t\tif (event.tick >= startTick && event.tick <= endTick && event.subtype !== \"endOfTrack\")\n\t\t\tevents.push({\n\t\t\t\t...event,\n\t\t\t\ttick: event.tick - startTick,\n\t\t\t});\n\t\telse if (event.tick < startTick) {\n\t\t\tswitch (event.type) {\n\t\t\tcase \"meta\":\n\t\t\t\tstatus[event.subtype] = event;\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\n\tObject.values(status).forEach(event => events.push({\n\t\t...event,\n\t\ttick: 0,\n\t}));\n\n\tevents.push({\n\t\ttick: endTick - startTick,\n\t\ttype: \"meta\",\n\t\tsubtype: \"endOfTrack\",\n\t});\n\n\ttrackAbsToDelta(events);\n\n\treturn events;\n};\n\n\nconst sliceMidi = (midi, startTick, endTick) => ({\n\theader: midi.header,\n\ttracks: midi.tracks.map(track => sliceTrack(track, startTick, endTick)),\n});\n\n\nconst TICKS_PER_BEATS = 480;\n\nconst EXCLUDE_MIDI_EVENT_SUBTYPES = [\n\t\"endOfTrack\", \"trackName\",\n\t\"noteOn\", \"noteOff\",\n];\n\n\nfunction encodeToMIDIData(notation, {startTime, unclosedNoteDuration = 30e+3} = {}) {\n\tnotation.microsecondsPerBeat = notation.microsecondsPerBeat || 500000;\n\n\tconst ticksPerBeat = TICKS_PER_BEATS;\n\tconst msToTicks = ticksPerBeat * 1000 / notation.microsecondsPerBeat;\n\n\tconst header = { formatType: 0, ticksPerBeat };\n\tconst track = [];\n\n\tif (!Number.isFinite(startTime)) {\n\t\tif (!notation.notes || !notation.notes[0])\n\t\t\tthrow new Error(\"encodeToMidiData: no start time specificed\");\n\n\t\tstartTime = notation.notes[0].start;\n\t}\n\n\ttrack.push({ time: startTime, type: \"meta\", subtype: \"copyrightNotice\", text: `Composed by MusicWdigets. BUILT on ${new Date(Number(process.env.VUE_APP_BUILD_TIME)).toDateString()}` });\n\n\tconst containsTempo = notation.events && notation.events.find(event => event.subtype == \"setTempo\");\n\tif (!containsTempo) {\n\t\ttrack.push({ time: startTime, type: \"meta\", subtype: \"timeSignature\", numerator: 4, denominator: 4, thirtyseconds: 8 });\n\t\ttrack.push({ time: startTime, type: \"meta\", subtype: \"setTempo\", microsecondsPerBeat: notation.microsecondsPerBeat });\n\t}\n\n\t//if (notation.correspondences)\n\t//\ttrack.push({ time: startTime, type: \"meta\", subtype: \"text\", text: \"find-corres:\" + notation.correspondences.join(\",\") });\n\n\tlet endTime = startTime || 0;\n\n\tif (notation.notes) {\n\t\tfor (const note of notation.notes) {\n\t\t\ttrack.push({\n\t\t\t\ttime: note.start,\n\t\t\t\ttype: \"channel\",\n\t\t\t\tsubtype: \"noteOn\",\n\t\t\t\tchannel: note.channel || 0,\n\t\t\t\tnoteNumber: note.pitch,\n\t\t\t\tvelocity: note.velocity,\n\t\t\t\tfinger: note.finger,\n\t\t\t});\n\n\t\t\tendTime = Math.max(endTime, note.start);\n\n\t\t\tif (Number.isFinite(unclosedNoteDuration))\n\t\t\t\tnote.duration = note.duration || unclosedNoteDuration;\n\t\t\tif (note.duration) {\n\t\t\t\ttrack.push({\n\t\t\t\t\ttime: note.start + note.duration,\n\t\t\t\t\ttype: \"channel\",\n\t\t\t\t\tsubtype: \"noteOff\",\n\t\t\t\t\tchannel: note.channel || 0,\n\t\t\t\t\tnoteNumber: note.pitch,\n\t\t\t\t\tvelocity: 0,\n\t\t\t\t});\n\n\t\t\t\tendTime = Math.max(endTime, note.start + note.duration);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (notation.events) {\n\t\tconst events = notation.events.filter(event => !EXCLUDE_MIDI_EVENT_SUBTYPES.includes(event.data.subtype));\n\t\tfor (const event of events) {\n\t\t\ttrack.push({\n\t\t\t\ttime: event.time,\n\t\t\t\t...event.data,\n\t\t\t});\n\n\t\t\tendTime = Math.max(endTime, event.time);\n\t\t}\n\t}\n\n\ttrack.push({ time: endTime + 100, type: \"meta\", subtype: \"endOfTrack\" });\n\n\ttrack.sort(function (e1, e2) { return e1.time - e2.time; });\n\n\t// append finger event after every noteOn event\n\ttrack.map((event, index) => ({event, index}))\n\t\t.filter(({event}) => event.subtype == \"noteOn\" && event.finger != null)\n\t\t.reverse()\n\t\t.forEach(({event, index}) => track.splice(index + 1, 0, {\n\t\t\ttime: event.time,\n\t\t\ttype: \"meta\",\n\t\t\tsubtype: \"text\",\n\t\t\ttext: `fingering(${event.finger})`,\n\t\t}));\n\n\ttrack.forEach(event => event.ticks = Math.round((event.time - startTime) * msToTicks));\n\ttrack.forEach((event, i) => event.deltaTime = (event.ticks - (i > 0 ? track[i - 1].ticks : 0)));\n\n\treturn {header, tracks: [track]};\n};\n\n\nfunction encodeToMIDI(notation, options) {\n\tconst data = encodeToMIDIData(notation, options);\n\treturn MIDI.encodeMidiFile(data);\n};\n\n\n\nmodule.exports = {\n\tsliceMidi,\n\tencodeToMIDIData,\n\tencodeToMIDI,\n};\n","\nconst MIDI = require(\"./source/inc/MIDI\");\nconst MusicNotation = require(\"./source/inc/MusicNotation\");\nconst MidiPlayer = require(\"./source/inc/MidiPlayer.js\");\nconst Matcher = require(\"./source/inc/Matcher\");\nconst MidiUtils = require(\"./source/inc/MidiUtils.js\");\n\n\n\nmodule.exports = {\n\tMIDI,\n\tMusicNotation,\n\tMidiPlayer,\n\tMatcher,\n\tMidiUtils,\n};\n","import pick from 'lodash/pick';\n\nimport { MusicNotation, MIDI } from '@k-l-lambda/music-widgets';\n\n//import {MeasureLayout, LayoutType} from\nimport { ImplicitType, ChordPosition } from './types';\n\nconst WHOLE_DURATION_MAGNITUDE = 1920;\nconst TICKS_PER_BEAT = WHOLE_DURATION_MAGNITUDE / 4;\n\ninterface Fraction {\n\tnumerator: number;\n\tdenominator: number;\n}\n\ninterface StaffNoteProperties {\n\trest: boolean;\n\ttied: boolean;\n\toverlapped: boolean;\n\timplicitType: ImplicitType;\n\tafterGrace: boolean;\n\tchordPosition: ChordPosition;\n\tdivision: number;\n\n\tcontextIndex: number;\n\tstaffTrack: number;\n}\n\ninterface MetaNote extends MusicNotation.Note, Partial {\n\tid: string;\n\tmeasure: number;\n\tendTick: number;\n}\n\ninterface SubNote {\n\tstartTick: number;\n\tendTick: number;\n\tpitch: number;\n\tvelocity?: number;\n}\n\ninterface MeasureNote extends Partial {\n\ttick: number;\n\tpitch: number;\n\tduration: number;\n\tchordPosition: ChordPosition;\n\tstaff: number;\n\n\ttrack: number;\n\tchannel: number;\n\tid: string;\n\tids: string[];\n\n\tsubNotes: SubNote[];\n}\n\ninterface MeasureEvent {\n\tdata: any;\n\ttrack: number;\n\tticks?: number;\n}\n\ninterface Measure {\n\ttick: number;\n\tduration: number;\n\n\tnotes: MeasureNote[];\n\tevents?: MeasureEvent[];\n\ttimeSignature?: Fraction;\n\tkeySignature?: number;\n}\n\ninterface PerformOptions {\n\twithRestTied?: boolean;\n}\n\ninterface MidiEvent extends MIDI.MidiEvent {\n\tticks?: number;\n\tmeasure?: number;\n\tids?: string[];\n\tstaffTrack?: number;\n\tstaff?: number;\n}\ntype MidiTrack = MidiEvent[];\n\nconst EXTRA_NOTE_FIELDS = ['rest', 'tied', 'overlapped', 'implicitType', 'afterGrace', 'contextIndex', 'staffTrack', 'chordPosition', 'division'];\nconst COMMON_NOTE_FIELDS = ['id', 'ids', 'pitch', 'velocity', 'track', 'channel', ...EXTRA_NOTE_FIELDS];\n\nclass MetaNotation {\n\t//pitchContextGroup: PitchContextTable[];\n\t//measureLayout: MeasureLayout;\n\tmeasures: Measure[];\n\n\ttrackNames: string[];\n\tidTrackMap: { [key: string]: number };\n\n\tripe: boolean = false;\n\n\tstatic fromAbsoluteNotes(notes: MetaNote[], measureHeads: number[], data?: Partial): MetaNotation {\n\t\tconst notation = new MetaNotation(data);\n\n\t\tnotation.measures = Array(measureHeads.length)\n\t\t\t.fill(null)\n\t\t\t.map((__, i) => {\n\t\t\t\tconst tick = measureHeads[i];\n\t\t\t\tconst duration = measureHeads[i + 1] ? measureHeads[i + 1] - tick : 0;\n\n\t\t\t\tconst mnotes = notes\n\t\t\t\t\t.filter((note) => note.measure === i + 1)\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(note) =>\n\t\t\t\t\t\t\t({\n\t\t\t\t\t\t\t\ttick: note.startTick - tick,\n\t\t\t\t\t\t\t\tduration: note.endTick - note.startTick,\n\t\t\t\t\t\t\t\t...pick(note, COMMON_NOTE_FIELDS),\n\t\t\t\t\t\t\t\tsubNotes: [],\n\t\t\t\t\t\t\t} as MeasureNote)\n\t\t\t\t\t);\n\n\t\t\t\t// reduce note data size\n\t\t\t\tmnotes.forEach((mn) =>\n\t\t\t\t\t['rest', 'tied', 'implicitType', 'afterGrace'].forEach((field) => {\n\t\t\t\t\t\tif (!mn[field]) delete mn[field];\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration,\n\t\t\t\t\tnotes: mnotes,\n\t\t\t\t};\n\t\t\t});\n\n\t\tnotation.idTrackMap = notes.reduce((map, note) => {\n\t\t\tif (note.id) map[note.id] = note.track;\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn notation;\n\t}\n\n\tstatic performAbsoluteNotes(abNotes: MetaNote[], { withRestTied = false }: PerformOptions = {}): MusicNotation.Note[] {\n\t\tconst notes = abNotes\n\t\t\t.filter((note) => (withRestTied || (!note.rest && !note.tied)) && !note.overlapped)\n\t\t\t.map((note) => ({\n\t\t\t\tmeasure: note.measure,\n\t\t\t\tchannel: note.channel,\n\t\t\t\ttrack: note.track,\n\t\t\t\tstart: note.start,\n\t\t\t\tstartTick: note.startTick,\n\t\t\t\tendTick: note.endTick,\n\t\t\t\tpitch: note.pitch,\n\t\t\t\tduration: note.duration,\n\t\t\t\tvelocity: note.velocity || 127,\n\t\t\t\tid: note.id,\n\t\t\t\tids: note.ids,\n\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\tcontextIndex: note.contextIndex,\n\t\t\t\timplicitType: note.implicitType,\n\t\t\t\tchordPosition: note.chordPosition,\n\t\t\t}));\n\n\t\tconst noteMap = notes.reduce((map, note) => {\n\t\t\tconst key = `${note.channel}|${note.start}|${note.pitch}`;\n\t\t\tconst priorNote = map[key];\n\t\t\tif (priorNote) priorNote.ids.push(...note.ids);\n\t\t\telse map[key] = note;\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn Object.values(noteMap);\n\t}\n\n\tconstructor(data?: Partial) {\n\t\tif (data) Object.assign(this, data);\n\t}\n\n\t/*get ordinaryMeasureIndices (): number[] {\n\t\tif (this.measureLayout)\n\t\t\treturn this.measureLayout.serialize(LayoutType.Ordinary);\n\n\t\treturn Array(this.measures.length).fill(null).map((_, i) => i + 1);\n\t}*/\n\n\t// In Lilypond 2.20.0, minus tick value at the head of a track result in MIDI event time bias,\n\t//\tSo store the bias values to correct MIDI time from lilyond.\n\tget trackTickBias(): { [key: string]: number } {\n\t\tconst headMeasure = this.measures[0];\n\t\treturn this.trackNames.reduce((map, name, track) => {\n\t\t\tmap[name] = 0;\n\t\t\tif (headMeasure) {\n\t\t\t\tconst note = headMeasure.notes.find((note) => note.track === track);\n\t\t\t\tif (note) map[name] = Math.min(note.tick, 0);\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget idSet(): Set {\n\t\treturn this.measures.reduce(\n\t\t\t(set, measure) => (measure.notes.filter((note) => !note.rest).forEach((note) => note.ids.forEach((id) => set.add(id))), set),\n\t\t\tnew Set()\n\t\t);\n\t}\n\n\ttoJSON() {\n\t\treturn {\n\t\t\t__prototype: 'LilyNotation',\n\t\t\t//pitchContextGroup: this.pitchContextGroup,\n\t\t\t//measureLayout: this.measureLayout,\n\t\t\tmeasures: this.measures,\n\t\t\tidTrackMap: this.idTrackMap,\n\t\t\ttrackNames: this.trackNames,\n\t\t\tripe: this.ripe,\n\t\t};\n\t}\n\n\ttoAbsoluteNotes(measureIndices: number[] /*= this.ordinaryMeasureIndices*/): MetaNote[] {\n\t\tlet measureTick = 0;\n\t\tconst measureNotes: MetaNote[][] = measureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\n\t\t\tconst notes = measure.notes.map((mnote) => {\n\t\t\t\treturn {\n\t\t\t\t\tstartTick: measureTick + mnote.tick,\n\t\t\t\t\tendTick: measureTick + mnote.tick + mnote.duration,\n\t\t\t\t\tstart: measureTick + mnote.tick,\n\t\t\t\t\tduration: mnote.duration,\n\t\t\t\t\tmeasure: index,\n\t\t\t\t\t...pick(mnote, COMMON_NOTE_FIELDS),\n\t\t\t\t} as MetaNote;\n\t\t\t});\n\n\t\t\tmeasureTick += measure.duration;\n\n\t\t\treturn notes;\n\t\t});\n\n\t\treturn [].concat(...measureNotes);\n\t}\n\n\t/*getMeasureIndices (type: LayoutType) {\n\t\treturn this.measureLayout.serialize(type);\n\t}*/\n\n\ttoPerformingNotation(measureIndices: number[] /*= this.ordinaryMeasureIndices*/, options: PerformOptions = {}): MusicNotation.Notation {\n\t\t//console.debug(\"toPerformingNotation:\", this, measureIndices);\n\t\tconst abNotes = this.toAbsoluteNotes(measureIndices);\n\t\tconst notes = MetaNotation.performAbsoluteNotes(abNotes, options);\n\n\t\t//const lastNote = notes[notes.length - 1];\n\t\tconst endTime = Math.max(...notes.map((note) => note.start + note.duration));\n\n\t\tconst endTick = measureIndices.reduce((tick, index) => tick + this.measures[index - 1].duration, 0);\n\n\t\tconst notation = new MusicNotation.Notation({\n\t\t\tticksPerBeat: TICKS_PER_BEAT,\n\t\t\tmeta: {},\n\t\t\ttempos: [], // TODO\n\t\t\tchannels: [notes],\n\t\t\tendTime,\n\t\t\tendTick,\n\t\t});\n\n\t\treturn notation;\n\t}\n\n\ttoPerformingMIDI(measureIndices: number[], { trackList }: { trackList?: boolean[] } = {}): MIDI.MidiData & { zeroTick: number } {\n\t\tif (!measureIndices.length) return null;\n\n\t\t// to avoid begin minus tick\n\t\tconst zeroTick = -Math.min(0, ...(this.measures[0]?.events.map((e) => e.ticks) || []), ...(this.measures[0]?.notes.map((note) => note.tick) || []));\n\n\t\tlet measureTick = zeroTick;\n\t\tconst measureEvents: MeasureEvent[][] = measureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\n\t\t\tconst events = measure.events.map((mevent) => ({\n\t\t\t\tticks: measureTick + mevent.ticks,\n\t\t\t\ttrack: mevent.track,\n\t\t\t\tdata: {\n\t\t\t\t\t...mevent.data,\n\t\t\t\t\tmeasure: index,\n\t\t\t\t},\n\t\t\t}));\n\n\t\t\tmeasureTick += measure.duration;\n\n\t\t\treturn events;\n\t\t});\n\n\t\tconst eventPriority = (event: MidiEvent): number => event.ticks + (event.subtype === 'noteOff' ? -1e-8 : 0);\n\n\t\tconst tracks: MidiTrack[] = [].concat(...measureEvents).reduce((tracks, mevent) => {\n\t\t\ttracks[mevent.track] = tracks[mevent.track] || [];\n\t\t\ttracks[mevent.track].push({\n\t\t\t\tticks: mevent.ticks,\n\t\t\t\t...mevent.data,\n\t\t\t});\n\n\t\t\treturn tracks;\n\t\t}, []);\n\n\t\ttracks[0] = tracks[0] || [];\n\t\t/*tracks[0].push({\n\t\t\tticks: 0,\n\t\t\ttype: \"meta\",\n\t\t\tsubtype: \"text\",\n\t\t\ttext: `${npmPackage.name} ${npmPackage.version}`,\n\t\t});*/\n\n\t\t// append note events\n\t\tmeasureTick = zeroTick;\n\t\tmeasureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\t\t\tif (!Number.isFinite(measure.duration)) return;\n\n\t\t\tmeasure.notes.forEach((note) => {\n\t\t\t\tif (trackList && !trackList[note.track]) return;\n\n\t\t\t\tif (note.rest) return;\n\n\t\t\t\tconst tick = measureTick + note.tick;\n\n\t\t\t\tconst track = (tracks[note.track] = tracks[note.track] || []);\n\n\t\t\t\tnote.subNotes.forEach((subnote) => {\n\t\t\t\t\ttrack.push({\n\t\t\t\t\t\tticks: tick + subnote.startTick,\n\t\t\t\t\t\tmeasure: index,\n\t\t\t\t\t\tids: note.ids,\n\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\tsubtype: 'noteOn',\n\t\t\t\t\t\tchannel: note.channel,\n\t\t\t\t\t\tnoteNumber: subnote.pitch,\n\t\t\t\t\t\tvelocity: subnote.velocity,\n\t\t\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\t\t\tstaff: note.staff,\n\t\t\t\t\t});\n\n\t\t\t\t\ttrack.push({\n\t\t\t\t\t\tticks: tick + subnote.endTick,\n\t\t\t\t\t\tmeasure: index,\n\t\t\t\t\t\tids: note.ids,\n\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\tsubtype: 'noteOff',\n\t\t\t\t\t\tchannel: note.channel,\n\t\t\t\t\t\tnoteNumber: subnote.pitch,\n\t\t\t\t\t\tvelocity: 0,\n\t\t\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\t\t\tstaff: note.staff,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tmeasureTick += measure.duration;\n\t\t});\n\n\t\tconst finalTick = measureTick;\n\n\t\t// ensure no empty track\n\t\tfor (let t = 0; t < tracks.length; ++t) tracks[t] = tracks[t] || [];\n\n\t\t// sort & make deltaTime\n\t\ttracks.forEach((events) => {\n\t\t\tevents.sort((e1, e2) => eventPriority(e1) - eventPriority(e2));\n\n\t\t\tlet ticks = 0;\n\t\t\tevents.forEach((event) => {\n\t\t\t\tevent.deltaTime = event.ticks - ticks;\n\t\t\t\tif (!Number.isFinite(event.deltaTime)) event.deltaTime = 0;\n\t\t\t\telse ticks = event.ticks;\n\t\t\t});\n\n\t\t\tevents.push({ deltaTime: Math.max(finalTick - ticks, 0), type: 'meta', subtype: 'endOfTrack' });\n\t\t});\n\n\t\treturn {\n\t\t\theader: {\n\t\t\t\tformatType: 0,\n\t\t\t\tticksPerBeat: TICKS_PER_BEAT,\n\t\t\t},\n\t\t\ttracks,\n\t\t\tzeroTick,\n\t\t};\n\t}\n\n\ttoPerformingNotationWithEvents(measureIndices: number[], options: { trackList?: boolean[] } = {}): MusicNotation.Notation {\n\t\tif (!measureIndices.length) return null;\n\n\t\tconst { zeroTick, ...midi } = this.toPerformingMIDI(measureIndices, options);\n\t\tconst notation = MusicNotation.Notation.parseMidi(midi);\n\n\t\tassignNotationNoteDataFromEvents(notation);\n\n\t\tlet tick = zeroTick;\n\n\t\tnotation.measures = measureIndices.map((index) => {\n\t\t\tconst startTick = tick;\n\t\t\ttick += this.measures[index - 1].duration;\n\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tstartTick,\n\t\t\t\tendTick: tick,\n\t\t\t};\n\t\t});\n\n\t\treturn notation;\n\t}\n\n\t// find the MIDI event of setTempo in measures data, and change the value of microsecondsPerBeat\n\tsetTempo(bpm: number): boolean {\n\t\tlet found = false;\n\t\tfor (const measure of this.measures) {\n\t\t\tfor (const event of measure.events) {\n\t\t\t\tif (event.data.subtype === 'setTempo') {\n\t\t\t\t\tevent.data.microsecondsPerBeat = 60e6 / bpm;\n\t\t\t\t\tfound = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn found;\n\t}\n}\n\nconst assignNotationNoteDataFromEvents = (midiNotation: MusicNotation.NotationData, fields = ['ids', 'measure', 'staffTrack']) => {\n\tconst noteId = (channel: number, pitch: number, tick: number): string => `${channel}|${pitch}|${tick}`;\n\n\tconst noteMap = midiNotation.notes.reduce((map, note) => {\n\t\tmap[noteId(note.channel, note.pitch, note.startTick)] = note;\n\n\t\treturn map;\n\t}, {});\n\n\tmidiNotation.events.forEach((event) => {\n\t\tif (event.data.subtype === 'noteOn') {\n\t\t\tconst id = noteId(event.data.channel, event.data.noteNumber, event.ticks);\n\t\t\tconst note = noteMap[id];\n\t\t\tconsole.assert(!!note, 'cannot find note of', id);\n\n\t\t\tif (note) Object.assign(note, pick(event.data, fields));\n\t\t}\n\t});\n};\n\nexport { MetaNote, MetaNotation, MidiEvent };\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","import _SHA256 from 'crypto-js/sha256';\n\nconst SHA256 = (source: string): Uint8Array => {\n\tconst { words, sigBytes } = _SHA256(source);\n\tconst uwords = words.map((x) => (x < 0 ? x + 0x100000000 : x));\n\tconst word_len = sigBytes / words.length;\n\n\treturn new Uint8Array(sigBytes).map((_, i) => (uwords[Math.floor(i / word_len)] >> ((3 - (i % word_len)) * 8)) & 0xff);\n};\n\ntype Hash = Uint8Array;\nconst HASH_LEN = 256;\n\nclass HashVector {\n\tfields: number[];\n\n\tstatic fromHash(hash: Hash): HashVector {\n\t\tconst fields = [];\n\t\tfor (const byte of hash) {\n\t\t\tfor (let b = 0; b < 8; ++b) fields.push((byte >> b) & 1 ? 1 : -1);\n\t\t}\n\n\t\treturn new HashVector(fields);\n\t}\n\n\tstatic fromString(source: string): HashVector {\n\t\tconst hash = SHA256(source);\n\t\treturn HashVector.fromHash(hash);\n\t}\n\n\tstatic fromWords(words: string[]): HashVector {\n\t\tconst vs = words.map((word) => HashVector.fromString(word));\n\t\treturn vs.reduce((sum, v) => sum.add(v), HashVector.zero);\n\t}\n\n\tstatic concat(...vectors: HashVector[]): HashVector {\n\t\tconst fields = vectors.map((v) => v.fields).flat(1);\n\n\t\treturn new HashVector(fields);\n\t}\n\n\tconstructor(fields: number[] | null = null) {\n\t\tthis.fields = fields || Array(HASH_LEN).fill(0);\n\t}\n\n\tget length(): number {\n\t\treturn this.fields.length;\n\t}\n\n\ttoHash(): Hash {\n\t\treturn Uint8Array.from(\n\t\t\tArray(this.length / 8)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => {\n\t\t\t\t\tconst bits = this.fields.slice(i * 8, (i + 1) * 8);\n\n\t\t\t\t\treturn bits.reduce((byte, bit, b) => byte | ((bit > 0 ? 1 : 0) << b), 0);\n\t\t\t\t})\n\t\t) as Hash;\n\t}\n\n\tadd(vec: HashVector): this {\n\t\tthis.fields.forEach((value, i) => (this.fields[i] = value + vec.fields[i]));\n\n\t\treturn this;\n\t}\n\n\tscale(factor: number): this {\n\t\tthis.fields = this.fields.map((value) => value * factor);\n\n\t\treturn this;\n\t}\n\n\tsub(crop: number): HashVector {\n\t\tconst fields = crop > 0 ? this.fields.slice(0, crop) : this.fields.slice(crop);\n\t\treturn new HashVector(fields);\n\t}\n\n\tstatic get zero(): HashVector {\n\t\treturn new HashVector();\n\t}\n}\n\nconst odds = (byte: number): number => {\n\tlet result = 0;\n\tfor (let b = byte; b > 0; b >>= 1) {\n\t\tif (b % 2) ++result;\n\t}\n\n\treturn result;\n};\nconst ODDS = Array(2 ** 8)\n\t.fill(0)\n\t.map((_, i) => odds(i));\nconst ODDS_HEX = ODDS.reduce((table, odd, i) => ({ ...table, [('0' + i.toString(16)).slice(-2)]: odd }), {});\n\nconst countOnes = (hash: Hash): number => hash.reduce((sum, byte) => sum + ODDS[byte], 0);\n\nconst xorHashes = (hash1: Hash, hash2: Hash): Hash => hash1.map((byte, i) => byte ^ hash2[i]) as Hash;\n\nconst cosHashes = (hash1: Hash, hash2: Hash): number => {\n\tconst len = hash1.length * 8;\n\n\tconst xor = xorHashes(hash1, hash2);\n\tconst ones = countOnes(xor);\n\n\treturn (len - ones * 2) / len;\n};\n\nconst cosBigInts = (hash1: bigint, hash2: bigint, len: number = HASH_LEN): number => {\n\tconst xor = hash1 ^ hash2;\n\tconst xor_hex = '0'.repeat(len / 4) + xor.toString(16);\n\n\tconst ones = Array(len / 8)\n\t\t.fill(0)\n\t\t.reduce((ones, _, i) => ones + ODDS_HEX[xor_hex.slice((i + 1) * -2, i ? i * -2 : undefined)], 0);\n\n\treturn (len - ones * 2) / len;\n};\n\nconst i2hex = (i) => ('0' + i.toString(16)).slice(-2);\nconst hashToHex = (hash: Hash): string => Array.from(hash).map(i2hex).join('');\n\nconst hexToHash = (hex: string): Hash =>\n\tUint8Array.from(\n\t\tArray(hex.length / 2)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => hex.substring(i * 2, (i + 1) * 2))\n\t\t\t.map((x) => parseInt(x, 16))\n\t);\n\nconst hashToBigInt = (hash: Hash): bigint => {\n\t// __NOT_FOR_BROWSER_\n\treturn Array.from(hash).reduce((r, x) => r * 0x100n + BigInt(x), 0n);\n\t/*\n\t// _NOT_FOR_BROWSER__\n\tthrow new Error('BigInt not supported');\n\t//*/\n};\n\nconst hashFromWords = (words: string[]): Hash => HashVector.fromWords(words).toHash();\n\nexport { Hash, HashVector, cosHashes, cosBigInts, hashToHex, hexToHash, hashToBigInt, hashFromWords };\n","var Sylvester = {}\n\nSylvester.Matrix = function () {}\n\nSylvester.Matrix.create = function (elements) {\n var M = new Sylvester.Matrix()\n return M.setElements(elements)\n}\n\nSylvester.Matrix.I = function (n) {\n var els = [],\n i = n,\n j\n while (i--) {\n j = n\n els[i] = []\n while (j--) {\n els[i][j] = i === j ? 1 : 0\n }\n }\n return Sylvester.Matrix.create(els)\n}\n\nSylvester.Matrix.prototype = {\n dup: function () {\n return Sylvester.Matrix.create(this.elements)\n },\n\n isSquare: function () {\n var cols = this.elements.length === 0 ? 0 : this.elements[0].length\n return this.elements.length === cols\n },\n\n toRightTriangular: function () {\n if (this.elements.length === 0) return Sylvester.Matrix.create([])\n var M = this.dup(),\n els\n var n = this.elements.length,\n i,\n j,\n np = this.elements[0].length,\n p\n for (i = 0; i < n; i++) {\n if (M.elements[i][i] === 0) {\n for (j = i + 1; j < n; j++) {\n if (M.elements[j][i] !== 0) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[i][p] + M.elements[j][p])\n }\n M.elements[i] = els\n break\n }\n }\n }\n if (M.elements[i][i] !== 0) {\n for (j = i + 1; j < n; j++) {\n var multiplier = M.elements[j][i] / M.elements[i][i]\n els = []\n for (p = 0; p < np; p++) {\n // Elements with column numbers up to an including the number of the\n // row that we're subtracting can safely be set straight to zero,\n // since that's the point of this routine and it avoids having to\n // loop over and correct rounding errors later\n els.push(\n p <= i ? 0 : M.elements[j][p] - M.elements[i][p] * multiplier\n )\n }\n M.elements[j] = els\n }\n }\n }\n return M\n },\n\n determinant: function () {\n if (this.elements.length === 0) {\n return 1\n }\n if (!this.isSquare()) {\n return null\n }\n var M = this.toRightTriangular()\n var det = M.elements[0][0],\n n = M.elements.length\n for (var i = 1; i < n; i++) {\n det = det * M.elements[i][i]\n }\n return det\n },\n\n isSingular: function () {\n return this.isSquare() && this.determinant() === 0\n },\n\n augment: function (matrix) {\n if (this.elements.length === 0) {\n return this.dup()\n }\n var M = matrix.elements || matrix\n if (typeof M[0][0] === 'undefined') {\n M = Sylvester.Matrix.create(M).elements\n }\n var T = this.dup(),\n cols = T.elements[0].length\n var i = T.elements.length,\n nj = M[0].length,\n j\n if (i !== M.length) {\n return null\n }\n while (i--) {\n j = nj\n while (j--) {\n T.elements[i][cols + j] = M[i][j]\n }\n }\n return T\n },\n\n inverse: function () {\n if (this.elements.length === 0) {\n return null\n }\n if (!this.isSquare() || this.isSingular()) {\n return null\n }\n var n = this.elements.length,\n i = n,\n j\n var M = this.augment(Sylvester.Matrix.I(n)).toRightTriangular()\n var np = M.elements[0].length,\n p,\n els,\n divisor\n var inverse_elements = [],\n new_element\n // Sylvester.Matrix is non-singular so there will be no zeros on the\n // diagonal. Cycle through rows from last to first.\n while (i--) {\n // First, normalise diagonal elements to 1\n els = []\n inverse_elements[i] = []\n divisor = M.elements[i][i]\n for (p = 0; p < np; p++) {\n new_element = M.elements[i][p] / divisor\n els.push(new_element)\n // Shuffle off the current row of the right hand side into the results\n // array as it will not be modified by later runs through this loop\n if (p >= n) {\n inverse_elements[i].push(new_element)\n }\n }\n M.elements[i] = els\n // Then, subtract this row from those above it to give the identity matrix\n // on the left hand side\n j = i\n while (j--) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[j][p] - M.elements[i][p] * M.elements[j][i])\n }\n M.elements[j] = els\n }\n }\n return Sylvester.Matrix.create(inverse_elements)\n },\n\n setElements: function (els) {\n var i,\n j,\n elements = els.elements || els\n if (elements[0] && typeof elements[0][0] !== 'undefined') {\n i = elements.length\n this.elements = []\n while (i--) {\n j = elements[i].length\n this.elements[i] = []\n while (j--) {\n this.elements[i][j] = elements[i][j]\n }\n }\n return this\n }\n var n = elements.length\n this.elements = []\n for (i = 0; i < n; i++) {\n this.elements.push([elements[i]])\n }\n return this\n },\n}\n\nmodule.exports = function (elements) {\n const mat = Sylvester.Matrix.create(elements).inverse()\n if (mat !== null) {\n return mat.elements\n } else {\n return null\n }\n}\n","import matrixInverse from 'matrix-inverse';\n\nimport { Fraction } from './interfaces';\nimport { fractionMul, reducedFraction, roundNumber } from './utils';\nimport { Logger, DummyLogger } from './logger';\n\ntype Matrix = number[][];\ntype EventID = number;\ntype Time = number;\ntype EventSet = Set;\ntype Equation = number[];\n\nconst EOM = -1; // end event id of measure\n\n//const GREAT_NUMBER = 16 * 9 * 5 * 7 * 11 * 13 * 17 * 19 * 23;\nconst GREAT_NUMBER = 1920;\n\nconst DURATION_MULTIPLIER = 128 * 3 * 5 * 7 * 11 * 13;\n\nconst floatToFrac = (x: number): Fraction => {\n\tconst n = Math.round(x * GREAT_NUMBER);\n\n\treturn reducedFraction(n, GREAT_NUMBER);\n};\n\nconst floatToTimeWarp = (x: number): Fraction => {\n\tif (x === 1) return null;\n\n\treturn floatToFrac(x);\n};\n\ninterface Stage {\n\tevents: EventID[];\n\tindex?: number;\n\ttick?: Time;\n}\n\nenum ActionType {\n\tPLACE,\n\tVERTICAL,\n\tHORIZONTAL,\n}\n\nclass Action {\n\ttype: ActionType;\n\te1: EventID;\n\te2?: EventID;\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tstatic P(e: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.PLACE,\n\t\t\te1: e,\n\t\t});\n\t}\n\n\tstatic V(e1: EventID, e2: EventID, order: number = 1): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.VERTICAL,\n\t\t\te1: order > 0 ? e1 : e2,\n\t\t\te2: order > 0 ? e2 : e1,\n\t\t});\n\t}\n\n\tstatic H(e1: EventID, e2: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.HORIZONTAL,\n\t\t\te1,\n\t\t\te2,\n\t\t});\n\t}\n\n\tget id(): string {\n\t\tswitch (this.type) {\n\t\t\tcase ActionType.PLACE:\n\t\t\t\treturn this.e1.toString();\n\n\t\t\tcase ActionType.VERTICAL:\n\t\t\t\treturn `${this.e1}|${this.e2}`;\n\n\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\treturn `${this.e1}-${this.e2 >= 0 ? this.e2 : '.'}`;\n\t\t}\n\t}\n\n\tget events(): EventID[] {\n\t\treturn [this.e1, this.e2].filter(Number.isFinite);\n\t}\n}\n\ninterface Quota {\n\tcredits: number;\n}\n\ninterface BasicEvent {\n\tid: EventID;\n\tconfidence: number;\n\tshrinkness: number; // the possibility of time warp\n\tx: number;\n\tstaff?: number;\n\tduration: Time;\n}\n\ninterface Event extends BasicEvent {\n\tlowWarp: number;\n}\n\ninterface EventResult {\n\tid: EventID;\n\ttick: Time;\n\tendTick: Time;\n\ttickGroup: number;\n\ttimeWarp?: Fraction;\n}\n\ninterface Environment {\n\tevents: BasicEvent[];\n\texpectedDuration: Time;\n\tmeasureShrinkness: number;\n\tendX: number;\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n}\n\ninterface Solution {\n\tevents: EventResult[];\n\tvoices: EventID[][];\n\tduration: number;\n\n\tloss?: number;\n\tactions?: string;\n\tcredits?: number;\n\ttimes?: number;\n}\n\ninterface Status {\n\tactionAccessing: Map;\n\teventMap: { [id: number]: Event };\n\teventTendencies: number[];\n\tmatrixH: Matrix; // matrix N+1 x N\t\t[right][left]\n\tmatrixV: Matrix; // matrix N x N\n}\n\ninterface NodeBranch {\n\taction: Action;\n\tpossibility: number;\n}\n\ntype Path = EventID[];\n\ninterface InbalanceEquations {\n\tones: boolean[];\n\tinbalances: Equation[];\n}\n\ninterface SolverOptions {\n\tquota?: number;\n\tlogger?: Logger;\n}\n\nclass StageMatrix {\n\tmatrix: EventSet[][];\n\n\tstatic fromNode(node: PathNode, status: Status): StageMatrix {\n\t\tconst matrix = Array(node.stages.length)\n\t\t\t.fill(null)\n\t\t\t.map(() =>\n\t\t\t\tArray(node.stages.length)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => new Set())\n\t\t\t);\n\n\t\tnode.actions\n\t\t\t.filter((action) => action.type === ActionType.HORIZONTAL)\n\t\t\t.forEach((action) => {\n\t\t\t\tconst stage1 = node.stages.findIndex((stage) => stage.events.includes(action.e1));\n\t\t\t\tconst stage2 = node.stages.findIndex((stage) => stage.events.includes(action.e2));\n\t\t\t\tconsole.assert(stage1 >= 0 && stage2 >= 0, 'invalid stages for H action:', node.id, node.stages, action);\n\n\t\t\t\tmatrix[stage1][stage2].add(action.e1);\n\t\t\t});\n\t\tmatrix[0][node.stages.length - 1].add(0); // the entire measure edge\n\n\t\tconst stagedEvents = node.stagedEvents;\n\t\tconst endHs = status.matrixH[status.matrixH.length - 1].filter((_, i) => !stagedEvents.has(i));\n\t\tconst endHP = Math.max(0, Math.max(...endHs) - 0.01);\n\n\t\tconst hActions = node.actions.filter((action) => action.type === ActionType.HORIZONTAL);\n\n\t\tconst pendingHeads = Object.keys(status.eventMap)\n\t\t\t.map(Number)\n\t\t\t.filter((eid) => !hActions.find((action) => action.e2 === eid));\n\n\t\t// edges to end stage\n\t\tnode.stages.forEach((stage) => {\n\t\t\tstage.events.forEach((eid) => {\n\t\t\t\tif (eid > 0) {\n\t\t\t\t\tconst act = hActions.find((action) => action.e1 === eid);\n\t\t\t\t\tif (!act && status.matrixH[status.matrixH.length - 1][eid] >= endHP) {\n\t\t\t\t\t\tif (!pendingHeads.some((id) => status.matrixH[id][eid] > 0)) matrix[stage.index][node.stages.length - 1].add(eid);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn new StageMatrix({ matrix });\n\t}\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tpathOf(x: number, y: number, target: number, ei: number = 0): Path {\n\t\tif (this.matrix[x][y].size) {\n\t\t\tconst eid = [...this.matrix[x][y]][ei];\n\t\t\tif (y === target) return [eid];\n\n\t\t\tfor (let yy = y + 1; yy <= target; ++yy) {\n\t\t\t\tconst sub = this.pathOf(y, yy, target);\n\t\t\t\tif (sub) return [eid, ...sub];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfindDoublePath(s1: number, s2: number): [Path, Path] {\n\t\tconst paths = [];\n\t\tfor (let t = s2; t >= s1 + 1; --t) {\n\t\t\tfor (let ei = 0; ei < this.matrix[s1][t].size; ++ei) {\n\t\t\t\tconst path = this.pathOf(s1, t, s2, ei);\n\t\t\t\tif (path) {\n\t\t\t\t\tpaths.push(path);\n\t\t\t\t\tif (paths.length === 2) return [paths[0], paths[1]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\treducePath(path: Path): void {\n\t\tthis.matrix.forEach((column) => column.forEach((set) => path.forEach((id) => set.delete(id))));\n\t}\n\n\ttoEquations(eventCount: number): Equation[] {\n\t\tconst equations: Equation[] = [];\n\n\t\tfor (let d = 1; d < this.matrix.length; d++) {\n\t\t\tfor (let s1 = 0; s1 < this.matrix.length - d; s1++) {\n\t\t\t\tconst s2 = s1 + d;\n\n\t\t\t\twhile (true) {\n\t\t\t\t\t// find closed loop from s1 to s2\n\t\t\t\t\tconst paths = this.findDoublePath(s1, s2);\n\t\t\t\t\tif (paths) {\n\t\t\t\t\t\tconst [path1, path2] = paths;\n\t\t\t\t\t\tconst equation = Array(eventCount).fill(0);\n\t\t\t\t\t\tpath1.forEach((eid) => (equation[eid] = 1));\n\t\t\t\t\t\tpath2.forEach((eid) => (equation[eid] = -1));\n\t\t\t\t\t\tequations.push(equation);\n\n\t\t\t\t\t\tthis.reducePath(path1.length > path2.length ? path1 : path2);\n\t\t\t\t\t} else break;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn equations;\n\t}\n}\n\nclass PathNode {\n\tlogger: Logger;\n\n\tparent: PathNode;\n\taction: Action;\n\tpossibility: number;\n\tchildren: PathNode[];\n\n\tstages: Stage[];\n\t//stageMatrix: StageMatrix;\n\tconstraints: Equation[];\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\n\t\tconsole.assert(this.logger, 'logger is null:', data);\n\t}\n\n\tget actions(): Action[] {\n\t\tconst last = this.parent ? this.parent.actions : [];\n\t\treturn this.action ? [...last, this.action] : last;\n\t}\n\n\tget id(): string {\n\t\tconst actionIds = this.actions.map((action) => action.id).sort();\n\t\treturn actionIds.join(' ');\n\t}\n\n\tget stagedEvents(): Set {\n\t\tconst set = new Set();\n\t\tif (this.stages) this.stages.forEach((stage) => stage.events.forEach((eid) => eid >= 0 && set.add(eid)));\n\n\t\treturn set;\n\t}\n\n\tlike(ids: string): boolean {\n\t\tconst actionIds = ids.split(' ').sort();\n\t\treturn actionIds.join(' ') === this.id;\n\t}\n\n\tconstructStages(status: Status): void {\n\t\tthis.stages = [{ events: [EOM] }];\n\n\t\tfor (const action of this.actions) {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase ActionType.PLACE:\n\t\t\t\t\tthis.stages.unshift({ events: [action.e1] });\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.VERTICAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid V action:', this.stages, action);\n\n\t\t\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\t\t\tstage1.events.push(...stage2.events);\n\t\t\t\t\t\t\tstage2.events = null;\n\t\t\t\t\t\t\tthis.stages = this.stages.filter((stage) => stage.events);\n\t\t\t\t\t\t} else if (!stage1) stage2.events.unshift(action.e1);\n\t\t\t\t\t\telse if (!stage2) stage1.events.push(action.e2);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid H action:', this.stages, action);\n\n\t\t\t\t\t\tconst newStage = (eid) => {\n\t\t\t\t\t\t\tconsole.assert(status.eventMap[eid], 'invalid event id:', action.id, eid, status.eventMap);\n\t\t\t\t\t\t\tconst x = status.eventMap[eid].x;\n\n\t\t\t\t\t\t\tconst stage = this.stages.find(\n\t\t\t\t\t\t\t\t(s) => s.events.some((e) => e > 0 && status.eventMap[e].x <= x) && s.events.some((e) => e > 0 && status.eventMap[e].x >= x)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (stage) stage.events.push(eid);\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconst newStage = { events: [eid] };\n\t\t\t\t\t\t\t\tconst si = this.stages.findIndex((s) => s.events[0] === EOM || status.eventMap[s.events[0]].x >= x);\n\t\t\t\t\t\t\t\tthis.stages.splice(si, 0, newStage);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (!stage1) newStage(action.e1);\n\t\t\t\t\t\tif (!stage2) newStage(action.e2);\n\n\t\t\t\t\t\t/*if (this.stages.some((s, si) => si < this.stages.length - 2\n\t\t\t\t\t&& s.events.some(e1 => this.stages[si + 1].events.some(e2 => status.eventMap[e2].x <= status.eventMap[e1].x))))\n\t\t\t\t\tdebugger;*/\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.stages.forEach((stage, i) => (stage.index = i));\n\t}\n\n\tconstructConstraints(status: Status): void {\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst stageMatrix = StageMatrix.fromNode(this, status);\n\t\tconst equations = stageMatrix.toEquations(eventCount);\n\n\t\tconst factors = Array(eventCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, id) => status.eventMap[id].duration);\n\t\tthis.constraints = equations.map((equation) => equation.map((it, i) => it * factors[i]));\n\t}\n\n\tinbalancesConstraints(status: Status): InbalanceEquations {\n\t\tconsole.assert(this.constraints, 'constraints not constructed.');\n\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst ones = Array(eventCount).fill(true);\n\t\tconst fixed = Array(eventCount).fill(false);\n\n\t\tconst inbalances: Equation[] = [];\n\n\t\tfor (const constraint of this.constraints) {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum !== 0) {\n\t\t\t\tconst c = sum < 0 ? constraint.map((it) => -it) : constraint;\n\t\t\t\tif (c[0] > 0) continue; // entire measure edge usually is larger than others, no effect\n\n\t\t\t\tinbalances.push(c);\n\n\t\t\t\t// set ones for tight items\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tfixed[i] = fixed[i] || it < 0;\n\t\t\t\t\tif (it) ones[i] = it < 0 || fixed[i];\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// pick out influenced equations\n\t\tthis.constraints.forEach((constraint) => {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum === 0 && !constraint[0]) {\n\t\t\t\tif (constraint.some((it, i) => it && !ones[i])) {\n\t\t\t\t\tconstraint.forEach((it, i) => it && (ones[i] = false));\n\t\t\t\t\tinbalances.push(constraint);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn { ones, inbalances };\n\t}\n\n\tsolveEquations({ ones, inbalances }: InbalanceEquations): number[] {\n\t\tif (!inbalances.length) return ones.map(() => 1);\n\n\t\tconst xis = ones\n\t\t\t.map((fixed, i) => ({ fixed, i }))\n\t\t\t.filter(({ fixed }) => !fixed)\n\t\t\t.map(({ i }) => i)\n\t\t\t.filter((i) => inbalances.some((items) => items[i] !== 0));\n\t\tif (!xis.length) return ones.map(() => 1);\n\n\t\tconst factors = xis.map((i) => Math.abs(inbalances.find((items) => items[i] !== 0)[i]));\n\n\t\ttype Line = { line: number[]; bias: number };\n\n\t\tconst equationMap = new Map();\n\t\tlet conflicted = false;\n\n\t\tconst lines: Line[] = inbalances\n\t\t\t.map((items) => {\n\t\t\t\tconst line = items.filter((_, i) => xis.includes(i));\n\t\t\t\tconst bias = -items.reduce((sum, it, i) => sum + (xis.includes(i) ? 0 : it), 0);\n\n\t\t\t\treturn { line, bias };\n\t\t\t\t// remove duplicated equations\n\t\t\t})\n\t\t\t.filter(({ line, bias }) => {\n\t\t\t\tif (line.every((it) => it === 0)) return false;\n\n\t\t\t\tconst id = line.join(',');\n\t\t\t\tif (equationMap.has(id)) {\n\t\t\t\t\tconflicted = equationMap.get(id) !== bias;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tequationMap.set(id, bias);\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tif (conflicted) return null;\n\n\t\tconst squareLines = lines.slice(0, xis.length);\n\t\tconst restLines = lines.slice(xis.length);\n\t\tif (squareLines.length < xis.length) {\n\t\t\tconst candidateLines = [];\n\t\t\tfor (let i1 = 0; i1 < xis.length - 1; ++i1) {\n\t\t\t\tconst i2 = i1 + 1;\n\t\t\t\tconst line = {\n\t\t\t\t\tline: xis.map((_, i) => (i === i1 ? 1 : i === i2 ? -1 : 0)),\n\t\t\t\t\tbias: 0,\n\t\t\t\t\tprior: (factors[i1] + factors[i2]) / DURATION_MULTIPLIER,\n\t\t\t\t};\n\t\t\t\tif (squareLines.some((sl) => sl.line[i1] && sl.line[i2])) line.prior -= 10;\n\t\t\t\tif (squareLines.some((sl) => sl.line.filter(Number).length === 1 && (sl.line[i1] || sl.line[i2]))) line.prior += 1;\n\t\t\t\tcandidateLines.push(line);\n\t\t\t}\n\t\t\tcandidateLines.sort((c1, c2) => c1.prior - c2.prior);\n\n\t\t\tsquareLines.push(...candidateLines.slice(0, xis.length - squareLines.length));\n\t\t}\n\t\t//console.assert(squareLines.length, \"squareLines is empty.\", lines, xis, equationMap, inbalances);\n\n\t\tconst matrix = squareLines.map(({ line }) => line);\n\t\tconst bias = squareLines.map(({ bias }) => bias);\n\n\t\tconst invert = matrixInverse(matrix);\n\t\tif (!invert) {\n\t\t\tthis.logger.warn('null invert:', matrix);\n\t\t\t//debugger;\n\t\t\treturn null;\n\t\t}\n\t\tconst solution = invert.map((row) => row.reduce((sum, it, i) => sum + it * bias[i], 0));\n\t\t//console.log(\"solution:\", matrix, invert, solution);\n\n\t\tif (restLines.length) {\n\t\t\tif (restLines.some((line) => Math.abs(line.line.reduce((sum, it, i) => sum + it * solution[i], 0)) > 1e-3)) {\n\t\t\t\t//console.debug(\"rest lines not satisfied:\", restLines, solution);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tconst result = ones.map(() => 1);\n\t\txis.forEach((xi, i) => (result[xi] = solution[i]));\n\n\t\treturn result;\n\t}\n\n\toptimallySolve(status: Status): number[] {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 1-2 9|1 2-3 3-4 9-10 4-5 5-6 6-7 7-8 8-. 12|6 11-12 10-11\"))\n\t\t//\tdebugger;\n\n\t\tconst shrinknesses = ones.map((fixed, id) => (fixed ? -1 : roundNumber(status.eventMap[id].shrinkness, 0.01)));\n\t\tconst shrinkMap = shrinknesses.reduce((map, shrinkness, id) => {\n\t\t\tif (shrinkness >= 0) {\n\t\t\t\tmap[shrinkness] = map[shrinkness] || [];\n\t\t\t\tmap[shrinkness].push(id);\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t\tconst groups = Object.entries(shrinkMap)\n\t\t\t.sort((p1, p2) => Number(p2[0]) - Number(p1[0]))\n\t\t\t.map((pair) => pair[1]);\n\t\t//console.log(\"groups:\", groups, shrinknesses);\n\n\t\tfor (let released = 1; released < groups.length; ++released) {\n\t\t\tconst releasedIds = [].concat(...groups.slice(0, released));\n\t\t\tconst fixed = ones.map((_, id) => !releasedIds.includes(id));\n\t\t\tconst warps = this.solveEquations({ ones: fixed, inbalances });\n\n\t\t\tif (warps && warps.every((it, i) => it <= 1 && it > status.eventMap[i].lowWarp)) return warps;\n\t\t}\n\n\t\treturn this.solveEquations({ ones, inbalances });\n\t}\n\n\tisConflicted(status: Status): boolean {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 8|2 8-9 3|9 2-3 3-4 10|4 4-5 5|11 11-12 6|12 5-6 10-11 9-10 6-7\"))\n\t\t//\tdebugger;\n\n\t\tfor (const c of inbalances) {\n\t\t\t// sum with low warps\n\t\t\tconst lowSum = c.reduce((sum, it, i) => sum + it * (ones[i] || it <= 0 ? 1 : status.eventMap[i].lowWarp), 0);\n\n\t\t\tif (lowSum >= 0) {\n\t\t\t\t// mark events' broken tendency\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tif (it) status.eventTendencies[i] += it > 0 ? 1 : -1;\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (!inbalances.length) return false;\n\n\t\tconst timeWarps = this.solveEquations({ ones, inbalances });\n\t\tif (!timeWarps) return true;\n\n\t\treturn !timeWarps.every((it, i) => it > status.eventMap[i].lowWarp && it <= 1);\n\t}\n\n\tgetSolution(status: Status): Solution {\n\t\tconst actionKey = (action) =>\n\t\t\tstatus.eventMap[action.e2]\n\t\t\t\t? status.eventMap[action.e2].x + Math.abs(status.eventMap[action.e2].x - status.eventMap[action.e1].x) * 0.06\n\t\t\t\t: status.eventMap[action.e1].x + 1e4;\n\t\tconst hacts = this.actions.filter((action) => action.type === ActionType.HORIZONTAL).sort((a1, a2) => actionKey(a1) - actionKey(a2));\n\t\tconst hmap = hacts.reduce((map, act) => ({ ...map, [act.e1]: act.e2 }), {});\n\t\tconst startEs = new Set([...Object.keys(hmap)].map(Number));\n\t\thacts.forEach((act) => startEs.delete(act.e2));\n\t\tthis.stages[0].events.forEach((eid) => eid > 0 && startEs.add(eid));\n\n\t\tlet voices = [...startEs].map((se) => {\n\t\t\tconst voice = [se];\n\n\t\t\tlet x = se;\n\t\t\twhile (hmap[x]) {\n\t\t\t\tx = hmap[x];\n\t\t\t\tif (x < 0 || voice.includes(x)) break;\n\n\t\t\t\tvoice.push(x);\n\t\t\t}\n\n\t\t\treturn voice;\n\t\t});\n\n\t\tconst events: EventResult[] = Object.values(status.eventMap)\n\t\t\t.filter((e) => e.id > 0)\n\t\t\t.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\ttick: null,\n\t\t\t\tendTick: null,\n\t\t\t\ttickGroup: null,\n\t\t\t\ttimeWarp: null,\n\t\t\t}));\n\t\tconst eventMap: { [id: number]: EventResult } = events\n\t\t\t.filter((e) => voices.some((voice) => voice.includes(e.id)) || hacts.some((act) => [act.e1, act.e2].includes(e.id)))\n\t\t\t.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.stages.forEach((stage, si) => stage.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tickGroup = si)));\n\n\t\tthis.stages[0].tick = 0;\n\t\tthis.stages[0].events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = 0));\n\n\t\t// solve time warps\n\t\tconst timeWarps = this.optimallySolve(status);\n\t\tevents.forEach((e) => (e.timeWarp = floatToTimeWarp(timeWarps[e.id])));\n\n\t\t//if (this.like(\"1 12|1 1-2 9|2 2-3 13|3 3-4 4-5 10|5 14|10 10-11 8-9 14-15 15|6 6-7 7-. 13-14 5-6 12-13 9-10\"))\n\t\t//\tdebugger;\n\n\t\t// solve stage ticks\n\t\tconst estages = this.stages.slice(0, this.stages.length - 1);\n\t\tconst solveStages = (): boolean => {\n\t\t\tif (estages.every((stage) => Number.isFinite(stage.tick))) return false;\n\n\t\t\tlet changed = false;\n\n\t\t\t// forward\n\t\t\thacts.forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (Number.isFinite(stage1.tick) && !Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage2.tick = stage1.tick + fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage2.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage2.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// backward\n\t\t\t[...hacts].reverse().forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (!Number.isFinite(stage1.tick) && Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage1.tick = stage2.tick - fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage1.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage1.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn changed;\n\t\t};\n\t\twhile (solveStages());\n\n\t\tconsole.assert(\n\t\t\testages.every((stage) => Number.isFinite(stage.tick)),\n\t\t\t'stage ticks not all solved:',\n\t\t\tthis.stages,\n\t\t\tthis.id\n\t\t);\n\t\tevents\n\t\t\t.filter((event) => Number.isFinite(event.tick))\n\t\t\t.forEach((event) => (event.endTick = event.tick + fractionMul(status.eventMap[event.id].duration, event.timeWarp)));\n\n\t\t// clip out of bound events\n\t\tconst measureDuration = status.eventMap[0].duration;\n\t\tvoices.forEach((voice) => {\n\t\t\tconst outEI = voice.findIndex((eid) => eventMap[eid].endTick > measureDuration);\n\t\t\tif (outEI >= 0) {\n\t\t\t\tconst es = voice.splice(outEI, voice.length - outEI);\n\t\t\t\tes.forEach((eid) => {\n\t\t\t\t\teventMap[eid].tick = null;\n\t\t\t\t\teventMap[eid].endTick = null;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tvoices = voices.filter((voice) => voice.length);\n\n\t\tconst duration = Math.max(0, ...events.map((e) => e.endTick).filter(Number.isFinite));\n\t\t//console.log(\"getSolution:\", this);\n\t\tthis.logger.debug(String.fromCodePoint(0x1f34e), this.id, timeWarps);\n\n\t\treturn {\n\t\t\tvoices,\n\t\t\tevents,\n\t\t\tduration,\n\t\t\tactions: this.actions.map((action) => action.id).join(' '),\n\t\t};\n\t}\n\n\tdeduce(status: Status, quota: Quota): Solution {\n\t\tif (!this.stages) this.constructStages(status);\n\t\t//console.log(\"deduce:\", status);\n\n\t\t// increase access counting\n\t\tconst access = status.actionAccessing.get(this.id) || { times: 0 };\n\t\t++access.times;\n\t\tstatus.actionAccessing.set(this.id, access);\n\n\t\tthis.constructConstraints(status);\n\t\t//console.log(\"constraints:\", this.id, this.stages, this.constraints);\n\n\t\tif (this.isConflicted(status)) {\n\t\t\taccess.closed = true;\n\t\t\tthis.logger.info(this.action.id, '\\u274c');\n\t\t\treturn null;\n\t\t}\n\n\t\t//const newStatus = status;\n\t\tthis.logger.group(this.action && this.action.id);\n\n\t\tif (quota.credits > 0) {\n\t\t\t--quota.credits;\n\n\t\t\tif (!this.children) this.expand(status);\n\n\t\t\tthis.children = this.children.filter((node) => !status.actionAccessing.get(node.id) || !status.actionAccessing.get(node.id).closed);\n\t\t\tif (this.children.length) {\n\t\t\t\tconst p = (node: PathNode): number => node.possibility / ((status.actionAccessing.get(node.id) || { times: 0 }).times + 1);\n\t\t\t\tthis.children.sort((n1, n2) => p(n2) - p(n1));\n\n\t\t\t\tfor (const child of this.children) {\n\t\t\t\t\tconst solution = child.deduce(status, quota);\n\t\t\t\t\tif (solution) {\n\t\t\t\t\t\tthis.logger.groupEnd();\n\t\t\t\t\t\treturn solution;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (quota.credits <= 0) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"got the leaf:\", this, status);\n\t\t} else this.logger.debug('quota exhausted.');\n\n\t\tthis.logger.groupEnd();\n\n\t\taccess.closed = true;\n\n\t\treturn this.getSolution(status);\n\t}\n\n\texpand(status: Status): void {\n\t\t//this.action.events.forEach(eid => status.pendingEvents.delete(eid));\n\t\tthis.constructStages(status);\n\n\t\tconst { eventMap, matrixV, matrixH } = status;\n\t\tconst stagedEvents = this.stagedEvents;\n\n\t\tconst branches: NodeBranch[] = [];\n\t\tconst appendBranch = (branch: NodeBranch): void => {\n\t\t\tif (!this.actions.some((a) => a.id === branch.action.id) && !branches.some((b) => b.action.id === branch.action.id)) {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(branch.action.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(branch.action.e2));\n\t\t\t\tif (stage1 === stage2 || (stage1 && stage2 && stage1.index >= stage2.index)) return;\n\n\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\t\tif (stage2.index - stage1.index > 1) return;\n\t\t\t\t\t\tif (this.actions.some((a) => stage1.events.includes(a.e1) && stage2.events.includes(a.e2))) return;\n\t\t\t\t\t} else if (branch.action.type === ActionType.HORIZONTAL) {\n\t\t\t\t\t\tif (stage1.index > stage2.index) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tbranch.action.type === ActionType.HORIZONTAL &&\n\t\t\t\t\tthis.actions.some(\n\t\t\t\t\t\t(a) =>\n\t\t\t\t\t\t\ta.type === ActionType.HORIZONTAL &&\n\t\t\t\t\t\t\t(a.e1 === branch.action.e1 || a.e2 === branch.action.e2 || (a.e1 === branch.action.e2 && a.e2 === branch.action.e1))\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\treturn;\n\n\t\t\t\t// exclude 2 too far away events by vertical\n\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\tif (stage1) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage1.events.map((e) => matrixV[branch.action.e2][e]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (stage2) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage2.events.map((e) => matrixV[e][branch.action.e1]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbranches.push(branch);\n\t\t\t}\n\t\t};\n\n\t\tfor (const eid of stagedEvents) {\n\t\t\tif (eid < 0) continue;\n\n\t\t\tmatrixV[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0 && eid !== id) appendBranch({ action: Action.V(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixV.forEach((ps, id) => {\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.V(eid, id), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH.forEach((ps, id) => {\n\t\t\t\tid = id >= Object.keys(eventMap).length ? -1 : id;\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(eid, id), possibility: p });\n\t\t\t});\n\t\t}\n\n\t\t// If branches not contains extending actions, clear it.\n\t\t//\tBecause pure inner vertical action may be harmful\n\t\tif (\n\t\t\t!branches.some(\n\t\t\t\t(branch) =>\n\t\t\t\t\t[ActionType.HORIZONTAL, ActionType.PLACE].includes(branch.action.type) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e1) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e2)\n\t\t\t)\n\t\t) {\n\t\t\tthis.children = [];\n\t\t\treturn;\n\t\t}\n\n\t\t//console.table(branches.map(b => [b.action.id, b.possibility]));\n\t\t//console.log(\"branches:\", branches.map(b => b.action.id).join(\", \"), \"\\n\", this.actions.map(a => a.id).join(\", \"));\n\t\tthis.children = branches.map((branch) => new PathNode({ logger: this.logger, parent: this, ...branch }));\n\t}\n}\n\nclass Solver {\n\tquota: number;\n\tlogger: Logger;\n\n\tevents: Event[];\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n\txSpan: number;\n\n\teventMap: { [id: number]: Event };\n\tactionAccessing: Map;\n\n\tpathRoot: PathNode;\n\n\tconstructor(env: Environment, { quota = 1000, logger = new DummyLogger() }: SolverOptions = {}) {\n\t\tthis.quota = quota;\n\t\tthis.logger = logger;\n\n\t\tconst event0 = {\n\t\t\tid: 0,\n\t\t\tx: 0,\n\t\t\tconfidence: 1,\n\t\t\tshrinkness: env.measureShrinkness,\n\t\t\tduration: env.expectedDuration,\n\t\t\tlowWarp: 0,\n\t\t};\n\n\t\tthis.events = [\n\t\t\tevent0,\n\t\t\t...env.events.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\tx: e.x,\n\t\t\t\tconfidence: e.confidence,\n\t\t\t\tshrinkness: e.shrinkness,\n\t\t\t\tstaff: e.staff,\n\t\t\t\tduration: e.duration,\n\t\t\t\tlowWarp: 0.5,\n\t\t\t})),\n\t\t];\n\t\tthis.eventMap = this.events.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.matrixH = env.matrixH;\n\t\tthis.matrixV = env.matrixV;\n\n\t\tthis.xSpan = env.endX - Math.min(env.endX - 1, ...env.events.map((e) => e.x));\n\n\t\tthis.actionAccessing = new Map();\n\t}\n\n\tsolve(): Solution {\n\t\t// construct path root\n\t\tthis.pathRoot = new PathNode({\n\t\t\tlogger: this.logger,\n\t\t\taction: null,\n\t\t});\n\t\tthis.pathRoot.children = this.events.slice(1).map(\n\t\t\t(event) =>\n\t\t\t\tnew PathNode({\n\t\t\t\t\tlogger: this.logger,\n\t\t\t\t\tparent: this.pathRoot,\n\t\t\t\t\taction: Action.P(event.id),\n\t\t\t\t\tpossibility: this.matrixV[event.id].reduce((sum, p) => sum + p, 0),\n\t\t\t\t})\n\t\t);\n\n\t\tlet bestSolution: Solution = null;\n\n\t\tthis.logger.groupCollapsed('solve');\n\n\t\tconst eventTendencies = Array(this.events.length).fill(0);\n\n\t\tconst quota = { credits: this.quota, times: 0 };\n\t\twhile (quota.credits > 0) {\n\t\t\t++quota.times;\n\n\t\t\tconst status = {\n\t\t\t\teventMap: this.eventMap,\n\t\t\t\tmatrixH: this.matrixH,\n\t\t\t\tmatrixV: this.matrixV,\n\t\t\t\tactionAccessing: this.actionAccessing,\n\t\t\t\teventTendencies,\n\t\t\t};\n\n\t\t\tconst solution = this.pathRoot.deduce(status, quota);\n\t\t\tsolution.credits = this.quota - quota.credits;\n\t\t\tsolution.times = quota.times;\n\t\t\tthis.evaluateSolution(solution);\n\t\t\tthis.logger.debug('loss:', solution.loss);\n\n\t\t\tbestSolution = !bestSolution || solution.loss < bestSolution.loss ? solution : bestSolution;\n\t\t\tif (!bestSolution.loss) break;\n\n\t\t\t// check if searching tree traversed\n\t\t\tif (this.actionAccessing.get('').closed) break;\n\t\t}\n\n\t\tthis.logger.groupEnd();\n\t\tthis.logger.debug('solution', bestSolution && bestSolution.loss, bestSolution);\n\t\tthis.logger.debug('cost:', this.quota - quota.credits);\n\n\t\tthis.logger.debug(\n\t\t\t'eventTendencies:',\n\t\t\teventTendencies.map((t) => t / quota.times)\n\t\t);\n\n\t\treturn bestSolution;\n\t}\n\n\tevaluateSolution(solution: Solution): void {\n\t\tsolution.loss = 0;\n\n\t\ttype EventR = Event & EventResult;\n\t\tconst eventMap: Record = solution.events.reduce((map, e) => ({ ...map, [e.id]: { ...e, ...this.eventMap[e.id] } }), {});\n\n\t\t/*// minus tick\n\t\tconst minuses = solution.events.filter((e) => e.tick < 0).length;\n\t\tsolution.loss += minuses * 1000;*/\n\n\t\t// minus tick rates penalty\n\t\tconst events = solution.events.filter((event) => Number.isFinite(event.tick)).map((event) => eventMap[event.id]);\n\t\tconst sevents: Record = events.reduce((map, event) => {\n\t\t\tmap[event.staff] = map[event.staff] || [];\n\t\t\tmap[event.staff].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\t\tObject.values(sevents).forEach((es) => {\n\t\t\tconst ses = es.sort((e1, e2) => e1.x - e2.x).slice(0, es.length - 1);\n\t\t\tses.forEach((e1, i) => {\n\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\tif (e2.tick < e1.tick) solution.loss += 1000;\n\t\t\t});\n\t\t});\n\n\t\tconst times = new Map();\n\t\tsolution.events.forEach((event) => {\n\t\t\tif (!Number.isFinite(event.tick) || solution.voices.every((voice) => !voice.includes(event.id)))\n\t\t\t\tsolution.loss += 100 * eventMap[event.id].confidence;\n\n\t\t\tif (event.timeWarp) {\n\t\t\t\tconst { numerator, denominator } = event.timeWarp;\n\t\t\t\tconst shrinkness = eventMap[event.id].shrinkness;\n\t\t\t\ttimes.set(numerator, Math.max(times.get(numerator) || 0, 1 - shrinkness));\n\t\t\t\ttimes.set(denominator, Math.max(times.get(denominator) || 0, 1 - shrinkness));\n\t\t\t}\n\t\t});\n\n\t\t// partial measure penalty\n\t\tconst partialFrac = reducedFraction(solution.duration, this.eventMap[0].duration);\n\t\ttimes.set(partialFrac.numerator, Math.max(times.get(partialFrac.numerator) || 0, 1 - this.eventMap[0].shrinkness));\n\t\ttimes.set(partialFrac.denominator, Math.max(times.get(partialFrac.denominator) || 0, 1 - this.eventMap[0].shrinkness));\n\n\t\tfor (const [n, weight] of times.entries()) {\n\t\t\tif (n > 1) solution.loss += Math.log(n) * weight;\n\t\t}\n\n\t\tlet spaceTime = 0;\n\t\tlet staffAlters = 0;\n\t\tsolution.voices.forEach((voice) => {\n\t\t\tconsole.assert(eventMap[voice[0]], 'invalid voice:', voice, Object.keys(eventMap));\n\n\t\t\tconst start = Math.abs(eventMap[voice[0]].tick); // abs: penalty for minus start\n\t\t\tconst end = eventMap[voice[voice.length - 1]].endTick;\n\n\t\t\tspaceTime += Math.max(0, start + solution.duration - end);\n\n\t\t\t// staff alternation penalty\n\t\t\tlet staff = null;\n\t\t\tvoice.forEach((id) => {\n\t\t\t\tconst event = eventMap[id];\n\t\t\t\tif (event.staff !== staff) {\n\t\t\t\t\tif (staff !== null) ++staffAlters;\n\t\t\t\t\tstaff = event.staff;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tsolution.loss += (spaceTime * 10) / DURATION_MULTIPLIER;\n\t\tsolution.loss += 5 ** staffAlters - 1;\n\n\t\t// tick twist\n\t\tconst eventsXOrder = [...events].sort((e1, e2) => e1.x - e2.x);\n\t\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\t\tconst e1 = eventsXOrder[i];\n\t\t\tconst dx = e2.x - e1.x;\n\t\t\tconst dt = e2.tick - e1.tick;\n\n\t\t\tif (!dt) return dx / this.xSpan;\n\n\t\t\tconst rate = Math.atan2(dt / solution.duration, dx / this.xSpan);\n\n\t\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t\t});\n\t\tconst tickTwist = Math.max(...tickTwists, 0);\n\t\tsolution.loss += tickTwist ** 2;\n\n\t\tconsole.assert(solution.loss >= 0, 'Invalid solution loss!!!', solution.loss, times, spaceTime, staffAlters);\n\t\tif (solution.loss < 0) solution.loss = Infinity;\n\t}\n}\n\nexport { SolverOptions, Solver };\n","import { EventFeature, BackgroundImage, EventPredisposition } from './interfaces';\nimport { StemBeam } from './term';\nimport { SimpleClass } from './aux_/typedJSON';\n\nenum EventElementType {\n\tPAD,\n\tBOS,\n\tEOS,\n\n\tCHORD,\n\tREST,\n}\n\ninterface EventElement {\n\thref?: string;\n\tdisposed?: boolean;\n\tindex?: number;\n\tvoice?: number;\n\n\ttype: EventElementType;\n\tstaff: number;\n\tx: number;\n\ty1: number;\n\ty2: number;\n\tfeature: EventFeature;\n\tpivotX?: number;\n\theadY?: number;\n\n\t// targets\n\ttick?: number;\n\tdivision?: number;\n\tdots?: number;\n\tbeam?: StemBeam;\n\tstemDirection?: string;\n\tgrace?: boolean;\n\ttremoloCatcher?: boolean;\n\ttimeWarped?: boolean;\n\tfullMeasure?: boolean; // full measure rest\n\tfake?: boolean;\n\n\torder?: number;\n\n\tpredisposition?: EventPredisposition;\n}\n\ntype Matrix = number[][];\n\ninterface Annotation {\n\tloss: number;\n\tgrant: boolean;\n\tpatched: boolean; // from manually solved measure\n}\n\nclass EventCluster extends SimpleClass {\n\tstatic className = 'EventCluster';\n\tstatic blackKeys = ['id'];\n\n\tid?: string; // for db access\n\tindex?: number;\n\tduration?: number;\n\tstaffY0?: number; // the first staff top + staffY\n\n\tsignatureDuration: number;\n\telements: EventElement[];\n\tmatrixH?: Matrix; // matrix N x N, [next][prev]\n\n\tbackgroundImages?: BackgroundImage[];\n\n\tannotation?: Annotation;\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\tget regular(): boolean {\n\t\treturn (\n\t\t\tthis.elements.some((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && !elem.fake) &&\n\t\t\tthis.elements.every((elem) => [elem.x, elem.y1, elem.y2, elem.tick].every(Number.isFinite)) &&\n\t\t\tthis.elements\n\t\t\t\t.slice(1)\n\t\t\t\t.every(\n\t\t\t\t\t(elem, ei) =>\n\t\t\t\t\t\telem.fake ||\n\t\t\t\t\t\tthis.elements[ei].fake ||\n\t\t\t\t\t\telem.grace ||\n\t\t\t\t\t\tthis.elements[ei].grace ||\n\t\t\t\t\t\telem.fullMeasure ||\n\t\t\t\t\t\tthis.elements[ei].fullMeasure ||\n\t\t\t\t\t\telem.tick <= this.elements[ei].tick ||\n\t\t\t\t\t\telem.x > this.elements[ei].x\n\t\t\t\t)\n\t\t);\n\t}\n\n\tget grant(): boolean {\n\t\treturn this.annotation && this.annotation.grant;\n\t}\n\n\tget feature(): Partial {\n\t\treturn {\n\t\t\tindex: this.index,\n\t\t\telements: this.elements,\n\t\t};\n\t}\n\n\tget estimatedDuration(): number {\n\t\tconst endElem = this.elements.find((elem) => elem.type === EventElementType.EOS);\n\n\t\tconst tick = endElem?.predisposition ? endElem.predisposition?.tick : endElem?.tick;\n\n\t\treturn Number.isFinite(tick) ? tick : this.duration;\n\t}\n\n\tassignPrediction(prediction: any): void {\n\t\tconsole.assert(prediction.index === this.index, 'index mismatch:', prediction.index, this.index);\n\n\t\tthis.matrixH = prediction.matrixH;\n\t\tprediction.elements.forEach((pe) => {\n\t\t\tconst { index, ...predisposition } = pe;\n\t\t\tconst elem = this.elements.find((elem) => elem.index === index);\n\t\t\tconsole.assert(elem, 'element not found:', index);\n\n\t\t\tif (elem) elem.predisposition = predisposition;\n\t\t});\n\t}\n}\n\nclass EventClusterSet extends SimpleClass {\n\tstatic className = 'EventClusterSet';\n\n\tname?: string;\n\n\tclusters: EventCluster[];\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\ttrimIrregular(): number {\n\t\tlet ir = 0;\n\n\t\tthis.clusters = this.clusters.filter((cluster) => {\n\t\t\tconst regular = cluster.regular;\n\t\t\tif (!regular) {\n\t\t\t\tconsole.debug('irregular cluster:', cluster);\n\t\t\t\t++ir;\n\t\t\t}\n\n\t\t\treturn regular;\n\t\t});\n\n\t\tif (ir) console.debug('Irregular clusters trimmed:', `${ir}/${this.clusters.length + ir}`);\n\t\telse console.debug(`The EventClusterSet (${this.clusters.length}) is fine.`);\n\n\t\treturn ir;\n\t}\n}\n\nexport { EventElementType, EventElement, EventCluster, EventClusterSet };\n","import erf from 'math-erf';\nimport sha1 from 'js-sha1';\n\nimport { SimpleClass } from './aux_/typedJSON';\nimport { EventTerm, ContextedTerm, MarkTerm, WHOLE_DURATION, StemBeam, GraceType, ContextType, TremoloLink } from './term';\nimport {\n\tFraction,\n\tStaffBasic,\n\tEventMeasure,\n\tRegulationOptions,\n\tRegulationSolution,\n\tRegulationSolutionEvent,\n\tBackgroundImage,\n\tMeasureBarType,\n} from './interfaces';\nimport { frac, fractionMul, roundNumber, argmax } from './utils';\nimport { NOTEHEAD_WIDTHS } from './semanticPoint';\nimport * as EquationSolver from './equationSolver';\nimport { PatchMeasure } from './patch';\nimport { EventCluster, EventElement, EventElementType } from './eventTopology';\nimport type { MeasureRectification } from './measureRectification';\nimport type { GraphMeasure } from './timewiseGraph';\n\nnamespace SimplePolicy {\n\tconst constructXMap = (measure: SpartitoMeasure): Map => {\n\t\tconst xMap = new Map();\n\n\t\t// mark full measure rests\n\t\tmeasure.rows.forEach((row) => {\n\t\t\tif (row.events.length === 1) {\n\t\t\t\tconst event = row.events[0];\n\t\t\t\tif (event.rest && event.division === 0) event.rest = 'R';\n\t\t\t}\n\t\t});\n\n\t\tmeasure.events.forEach((event) => {\n\t\t\tconst x = Math.round(event.pivotX * 10) / 10;\n\t\t\tlet key = 0;\n\t\t\tif (event.fullMeasureRest) key = Math.min(x, ...xMap.keys());\n\t\t\telse {\n\t\t\t\tkey =\n\t\t\t\t\t[...xMap.keys()].find((k) => {\n\t\t\t\t\t\t// check if the event is aligned with the current chord\n\t\t\t\t\t\tconst es = xMap.get(k);\n\t\t\t\t\t\tconst left = Math.min(...es.map((e) => e.left));\n\t\t\t\t\t\tconst right = Math.max(...es.map((e) => e.right));\n\n\t\t\t\t\t\tconst overlaySize = Math.min(right, event.right) - Math.max(left, event.left);\n\n\t\t\t\t\t\treturn overlaySize > NOTEHEAD_WIDTHS.NoteheadS1 * 0.62;\n\t\t\t\t\t}) || x;\n\t\t\t}\n\t\t\tevent.roundX = key;\n\n\t\t\tconst es = xMap.get(key) || [];\n\t\t\txMap.set(key, es);\n\n\t\t\tes.push(event);\n\t\t});\n\n\t\treturn xMap;\n\t};\n\n\texport const computeMeasureTicks = (measure: SpartitoMeasure): void => {\n\t\tconst xMap = constructXMap(measure);\n\n\t\tlet tick = 0;\n\t\tconst ts = new Set([tick]);\n\t\tconst eventGroups = [...xMap.entries()].sort(([x1], [x2]) => x1 - x2); //.map(entry => entry[1]);\n\t\tfor (const [x, events] of eventGroups) {\n\t\t\tvoid x;\n\n\t\t\tevents.forEach((event: EventTerm) => {\n\t\t\t\tif (event.predisposition) {\n\t\t\t\t\tevent.rest = event.rest && event.predisposition.fullMeasure > 0.5 ? 'R' : event.rest;\n\t\t\t\t\tevent.grace = event.predisposition.grace ? GraceType.Grace : null;\n\t\t\t\t\tevent.division = argmax(event.predisposition.divisionVector);\n\t\t\t\t\tevent.dots = argmax(event.predisposition.dotsVector);\n\t\t\t\t\tif (event.predisposition.timeWarped > 0.5) event.timeWarp = frac(2, 3);\n\t\t\t\t}\n\n\t\t\t\tif (event.fullMeasureRest) event.tick = 0;\n\t\t\t\telse {\n\t\t\t\t\tif (event.zeroHolder) tick -= event.duration;\n\n\t\t\t\t\tif (!event.zeroHolder && event.predisposition && Number.isInteger(event.predisposition.tick)) event.tick = event.predisposition.tick;\n\t\t\t\t\telse event.tick = tick;\n\t\t\t\t\tts.add(event.tick + event.duration);\n\t\t\t\t}\n\t\t\t\t//console.log(\"append tick:\", event.tick + event.duration, event);\n\t\t\t});\n\t\t\tts.delete(tick);\n\n\t\t\t//column.xToTick[x] = tick;\n\n\t\t\tif (ts.size) tick = Math.min(...ts);\n\t\t}\n\n\t\tif (Number.isInteger(measure.estimatedDuration)) measure.duration = measure.estimatedDuration;\n\t\telse measure.duration = Math.max(...ts, 0);\n\t};\n\n\texport const computeMeasureVoices = (measure: SpartitoMeasure): void => {\n\t\tmeasure.voices = [];\n\t\tfor (const row of measure.rows) {\n\t\t\tconst events = row.events.filter(\n\t\t\t\t(event) => !event.grace && !event.tremoloCatcher && !event.fullMeasureRest && !(event.predisposition && event.predisposition.fake > 0.5)\n\t\t\t);\n\t\t\tconst eventSet = new Set(events);\n\n\t\t\twhile (eventSet.size) {\n\t\t\t\tlet tick = 0;\n\n\t\t\t\tconst voice = [];\n\t\t\t\tconst pushEvent = (e: EventTerm) => {\n\t\t\t\t\tvoice.push(e.id);\n\t\t\t\t\tif (!e.zeroHolder) tick += e.duration;\n\t\t\t\t\teventSet.delete(e);\n\t\t\t\t};\n\n\t\t\t\tconst e0 = events.find((e) => eventSet.has(e));\n\t\t\t\tif (e0.alignedTick > 0) {\n\t\t\t\t\t//voice.tickMap[tick] = EventTerm.space({ tick, duration: e0.alignedTick });\n\t\t\t\t\ttick = e0.alignedTick;\n\t\t\t\t}\n\t\t\t\tpushEvent(e0);\n\n\t\t\t\twhile (true) {\n\t\t\t\t\t// TODO: consider slur pair\n\t\t\t\t\tconst e = events.find((e) => eventSet.has(e) && e.alignedTick === tick);\n\t\t\t\t\tif (!e) break;\n\n\t\t\t\t\tpushEvent(e);\n\t\t\t\t}\n\n\t\t\t\t//if (tick < measure.duration)\n\t\t\t\t//\tvoice.tickMap[tick] = EventTerm.space({ tick, duration: staff.duration - tick });\n\n\t\t\t\tmeasure.voices.push(voice);\n\t\t\t}\n\t\t}\n\t};\n}\n\nconst solveGraceEvents = (measure: SpartitoMeasure): void => {\n\tconst graceEvents = measure.events.filter((event) => event.grace /*&& !Number.isFinite(event.tick)*/);\n\tif (!graceEvents.length) return;\n\n\tconst tickMap = measure.tickMap;\n\tconst staffMap = [...tickMap.entries()].reduce((smap, [tick, events]) => {\n\t\tevents.forEach((event) => {\n\t\t\tif (!event.grace) {\n\t\t\t\tsmap[event.staff] = smap[event.staff] || {};\n\n\t\t\t\tconst oldEvent = smap[event.staff][tick];\n\t\t\t\tsmap[event.staff][tick] = !oldEvent || oldEvent.x > event.x ? event : oldEvent;\n\t\t\t}\n\t\t});\n\n\t\treturn smap;\n\t}, {} as { [staff: number]: { [tick: number]: EventTerm } });\n\n\ttype Position = { tick: number; preTick: number; graces: EventTerm[]; event: EventTerm };\n\tconst staffPositions = Object.entries(staffMap).reduce((map, [staff, emap]) => {\n\t\tmap[staff] = Object.entries(emap)\n\t\t\t.map(([t, event]) => ({ event, tick: Number(t), preTick: -240, graces: [] }))\n\t\t\t.sort((p1, p2) => p1.event.x - p2.event.x);\n\t\tmap[staff].push({ tick: measure.duration, event: measure.endEvent, preTick: 0, graces: [] }); // terminal bar\n\n\t\tlet tick = 0;\n\t\tmap[staff].forEach((position) => {\n\t\t\tif (position.tick > tick) {\n\t\t\t\tposition.preTick = tick;\n\t\t\t\ttick = position.tick;\n\t\t\t}\n\t\t});\n\n\t\treturn map;\n\t}, {} as { [staff: number]: Position[] });\n\n\t// append grace events into positions\n\tgraceEvents.forEach((event) => {\n\t\tconst staff = staffPositions[event.staff];\n\t\tif (staff) {\n\t\t\tconst position = staff.find((p) => p.event.x > event.x);\n\t\t\tif (position) position.graces.push(event);\n\t\t\tevent.roundX = event.x;\n\t\t\t//if (position.tick >= measure.duration)\n\t\t\t//\tevent.grace = GraceType.AfterGrace;\n\t\t}\n\t});\n\n\tObject.values(staffPositions).forEach((staff) =>\n\t\tstaff.forEach((position) => {\n\t\t\tif (position.graces.length) {\n\t\t\t\tposition.event.graceIds = position.graces.map((e) => e.id);\n\n\t\t\t\tconst totalDuration = position.graces.reduce((t, e) => t + e.duration, 0);\n\t\t\t\tconst duration = Math.min(totalDuration, position.tick - position.preTick);\n\t\t\t\tconst warp = duration / totalDuration;\n\n\t\t\t\tlet tick = position.tick;\n\t\t\t\t[...position.graces].reverse().forEach((event) => {\n\t\t\t\t\tevent.tick = Math.round(tick - event.duration * warp);\n\t\t\t\t\ttick = event.tick;\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t);\n};\n\nconst solveTremoloPairs = (measure: SpartitoMeasure): void => {\n\tconst catchers = measure.events.filter((event) => event.tremoloCatcher && !event.grace);\n\tconst pitchers = measure.events.filter((event) => event.tremoloLink === TremoloLink.Pitcher && !event.grace);\n\n\tcatchers.forEach((catcher) => {\n\t\tlet candidates = pitchers.filter((event) => event.division === catcher.division && event.x < catcher.x);\n\t\tif (!candidates.length)\n\t\t\tcandidates = measure.events.filter(\n\t\t\t\t(event) =>\n\t\t\t\t\tNumber.isFinite(event.tick) &&\n\t\t\t\t\t!event.grace &&\n\t\t\t\t\t!event.rest &&\n\t\t\t\t\tevent.division === catcher.division &&\n\t\t\t\t\tevent.dots === catcher.dots &&\n\t\t\t\t\tevent.x < catcher.x\n\t\t\t);\n\t\tcandidates.sort((c1, c2) => c2.x - c1.x);\n\t\tif (candidates.length) {\n\t\t\tconst pitcher = candidates[0];\n\t\t\tpitcher.catcherId = catcher.id;\n\t\t\tconst tremolo = Math.max(pitcher.tremolo || 3, catcher.tremolo || 3);\n\t\t\tpitcher.tremolo = tremolo;\n\t\t\tcatcher.tremolo = tremolo;\n\n\t\t\tif (!catcher.tick) catcher.tick = pitcher.tick + pitcher.duration / 2;\n\n\t\t\tconst pi = pitchers.indexOf(pitcher);\n\t\t\tif (pi >= 0) pitchers.splice(pi, 1);\n\t\t}\n\t});\n};\n\nnamespace EquationPolicy {\n\ttype EventID = number;\n\ttype Time = number;\n\n\tconst DURATION_MULTIPLIER = 128 * 3 * 5 * 7 * 11 * 13;\n\n\tconst CHORDS_SEAM_SIGMA = 0.6;\n\tconst NEIGHBOR_CHORDS_SIGMA = 1.6;\n\tconst Y_DECAY_SIGMA = 16;\n\tconst STAFF_DECAY_FACTOR = 2;\n\tconst STEM_DIRECTION_DECAY = 0.9;\n\tconst ILL_BEAMS_PENALTY = 0.2;\n\n\tconst INVERT_SQRT2 = 0.7071067811865475;\n\n\tconst MATRIX_H_WEIGHT = 3;\n\n\tconst FINE_BEAMS = [\n\t\t[null, null],\n\t\t[null, StemBeam.Open],\n\t\t[StemBeam.Open, StemBeam.Continue],\n\t\t[StemBeam.Open, StemBeam.Close],\n\t\t[StemBeam.Continue, StemBeam.Continue],\n\t\t[StemBeam.Continue, StemBeam.Close],\n\t\t[StemBeam.Close, null],\n\t\t[StemBeam.Close, StemBeam.Open],\n\t].map((bb) => bb.join('-'));\n\n\tinterface Event {\n\t\tid: EventID;\n\t\tstaff: number;\n\t\tx: number;\n\t\ty: number;\n\t\tduration: Time;\n\t\tconfidence: number;\n\t\tshrinkness: number;\n\t}\n\n\texport interface StaffGroup {\n\t\tevents: Event[];\n\t\texpectedDuration: Time;\n\t\tmeasureShrinkness: number;\n\t\tendX: number;\n\t\tmatrixH: Matrix;\n\t\tmatrixV: Matrix;\n\n\t\tids?: EventID[];\n\t}\n\n\tinterface EventResult {\n\t\tid: EventID;\n\t\ttick: Time;\n\t\tendTick: Time;\n\t\ttickGroup: number;\n\t\ttimeWarp?: Fraction;\n\t}\n\n\texport interface StaffGroupSolution {\n\t\tevents: EventResult[];\n\t\tvoices: EventID[][];\n\t\tduration: number;\n\n\t\tloss?: number;\n\t\tcredits?: number;\n\t\ttimes?: number;\n\t}\n\n\texport interface RegulatorOptions extends EquationSolver.SolverOptions {\n\t\tsolver?: (staffGroup: StaffGroup, options: EquationSolver.SolverOptions) => Promise;\n\t}\n\n\tconst solveStaffGroup = (staffGroup: StaffGroup, options: EquationSolver.SolverOptions): StaffGroupSolution => {\n\t\tif (!staffGroup.events.length) {\n\t\t\treturn {\n\t\t\t\tevents: [],\n\t\t\t\tvoices: [],\n\t\t\t\tduration: 0,\n\t\t\t};\n\t\t}\n\n\t\tconst solver = new EquationSolver.Solver(staffGroup, options);\n\n\t\treturn solver.solve();\n\t};\n\n\texport const estiamteMeasure = (measure: SpartitoMeasure): StaffGroup => {\n\t\tconst allEvents = measure.events\n\t\t\t.filter((event) => !event.zeroHolder)\n\t\t\t.map((event) => ({\n\t\t\t\tid: event.id,\n\t\t\t\tstaff: event.staff,\n\t\t\t\tx: event.x,\n\t\t\t\ttickEstimated: event.predisposition && Number.isFinite(event.predisposition.tick) ? event.predisposition.tick : event.x,\n\t\t\t\ttipX: event.tipX,\n\t\t\t\ty: event.tipY + event.staff * 100, // TODO: refine y by event term tipY\n\t\t\t\tduration: (event.mainDuration * DURATION_MULTIPLIER) / WHOLE_DURATION,\n\t\t\t\tdivision: event.division,\n\t\t\t\tdots: event.dots,\n\t\t\t\tstemDirection: event.stemDirection,\n\t\t\t\tbeam: event.beam,\n\t\t\t\trest: event.rest,\n\t\t\t\t// the possibility of full measure rest\n\t\t\t\tpR: event.rest === 'R' ? 1 : event.rest === 'r' && event.division === 0 ? Math.tanh(event.x - measure.eventStartX) : 0,\n\t\t\t\tfakeP: event.predisposition ? event.predisposition.fakeP || 0 : 0,\n\t\t\t\tshrinkness: event.predisposition ? event.predisposition.timeWarped : null,\n\t\t\t}));\n\t\tlet expectedDuration = (DURATION_MULTIPLIER * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\texpectedDuration = Math.max(expectedDuration, roundNumber(measure.estimatedDuration, DURATION_MULTIPLIER / 4));\n\n\t\tconst staffGroupMap = measure.staffGroups.reduce((map, staves, group) => {\n\t\t\tstaves.forEach((staff) => (map[staff] = group));\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst ids = [0, ...allEvents.map((e) => e.id)]; // compact ids\n\t\tconst ievents = allEvents.map((e) => ({\n\t\t\t...e,\n\t\t\tid: ids.indexOf(e.id),\n\t\t\tx: e.x - measure.startX,\n\t\t\tconfidence: (1 - e.pR) * (1 - e.fakeP),\n\t\t\tshrinkness: Number.isFinite(e.shrinkness) ? e.shrinkness : Math.tanh((e.division - e.dots * 0.1) / 4),\n\t\t\tstaffGroup: staffGroupMap[e.staff],\n\t\t}));\n\n\t\t// estimate topology matrices\n\t\tconst matrixH = Array(ids.length + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\t\tconst matrixV = Array(ids.length)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\n\t\t//const hp = (dx: number): number => 1 - erf(((dx / NEIGHBOR_CHORDS_SIGMA) ** 0.6) * INVERT_SQRT2);\n\t\tconst hp = (dx: number): number => erf(dx / NEIGHBOR_CHORDS_SIGMA) * erf(NEIGHBOR_CHORDS_SIGMA / dx);\n\n\t\tfor (const e1 of ievents) {\n\t\t\tfor (const e2 of ievents) {\n\t\t\t\tmatrixV[e1.id][e2.id] =\n\t\t\t\t\te1 !== e2 && e1.tickEstimated >= e2.tickEstimated ? 1 - erf(((e1.tickEstimated - e2.tickEstimated) * INVERT_SQRT2) / CHORDS_SEAM_SIGMA) : 0;\n\n\t\t\t\tif (e1.staffGroup !== e2.staffGroup) matrixH[e1.id][e2.id] = 0;\n\t\t\t\t// prohibit voice crossing staff groups\n\t\t\t\telse if (e1.x <= e2.x) matrixH[e1.id][e2.id] = 0;\n\t\t\t\telse {\n\t\t\t\t\tconst staffDecay = Math.exp(-Math.abs(e1.staff - e2.staff) * STAFF_DECAY_FACTOR);\n\t\t\t\t\tconst yDecay = e1.staff === e2.staff ? Math.exp(-Math.abs(e1.y - e2.y) / Y_DECAY_SIGMA) : 1;\n\t\t\t\t\tconst dx = e1.x - e2.x;\n\t\t\t\t\tconst dtx = e1.tipX - e2.tipX;\n\t\t\t\t\tmatrixH[e1.id][e2.id] = (staffDecay * yDecay * Math.min(hp(dx), hp(dtx))) ** (1 / MATRIX_H_WEIGHT);\n\t\t\t\t}\n\n\t\t\t\t// weaken full measure rest connections\n\t\t\t\tconst nR = (1 - e1.pR) * (1 - e2.pR);\n\t\t\t\tmatrixV[e1.id][e2.id] *= nR;\n\t\t\t\tmatrixH[e1.id][e2.id] *= nR;\n\n\t\t\t\tif (matrixV[e1.id][e2.id] < 1e-2) matrixV[e1.id][e2.id] = 0;\n\n\t\t\t\t// weaken inconsistent stem directions\n\t\t\t\tif (e1.stemDirection && e2.stemDirection && e1.stemDirection !== e2.stemDirection) matrixH[e1.id][e2.id] *= STEM_DIRECTION_DECAY;\n\n\t\t\t\t// ill beams penalty\n\t\t\t\tif (!e1.rest && !e2.rest && !FINE_BEAMS.includes([e2.beam, e1.beam].join('-'))) matrixH[e1.id][e2.id] *= ILL_BEAMS_PENALTY;\n\t\t\t}\n\n\t\t\t// H possibility of e1 and end of measure\n\t\t\tmatrixH[ids.length][e1.id] = hp(measure.width - e1.x) ** (1 / MATRIX_H_WEIGHT);\n\t\t}\n\n\t\treturn {\n\t\t\tids,\n\t\t\tevents: ievents,\n\t\t\texpectedDuration,\n\t\t\tmeasureShrinkness: 0,\n\t\t\tendX: measure.position.right,\n\t\t\tmatrixH,\n\t\t\tmatrixV,\n\t\t};\n\t};\n\n\texport const regulateMeasure = async (measure: SpartitoMeasure, { solver = null, ...options }: RegulatorOptions): Promise => {\n\t\tconst env = estiamteMeasure(measure);\n\t\tconst { ids, matrixH, matrixV } = env;\n\n\t\t// copy matrices values from measure topology data\n\t\tif (measure.matrixH) {\n\t\t\tconsole.assert(\n\t\t\t\tmeasure.matrixH.length > ids[ids.length - 1] && measure.matrixH[0].length > ids[ids.length - 1],\n\t\t\t\t'matrix shape mismatch:',\n\t\t\t\tids.length,\n\t\t\t\t`${measure.matrixH.length}x${measure.matrixH[0].length}`,\n\t\t\t\t`${matrixH.length}x${matrixH[0].length}`\n\t\t\t);\n\t\t\tfor (let i = 0; i < ids.length + 1; i++) {\n\t\t\t\tconst ii = i < ids.length ? ids[i] : measure.matrixH.length - 1;\n\t\t\t\tfor (let j = 1; j < ids.length; j++) matrixH[i][j] = measure.matrixH[ii][ids[j]];\n\t\t\t}\n\t\t}\n\t\tif (measure.matrixV) {\n\t\t\tmatrixV.forEach((row, i) =>\n\t\t\t\trow.forEach((_, j) => {\n\t\t\t\t\tconst mp = measure.matrixV[ids[i]][ids[j]];\n\t\t\t\t\tif (Number.isFinite(mp)) matrixV[i][j] = mp;\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\tenv.measureShrinkness = Math.tanh(Math.log(Math.min(1, measure.estimatedDuration / measure.duration)) * -3);\n\n\t\tif (options.logger) options.logger.info('--- MEASURE', measure.measureIndex, '---', env);\n\n\t\tconst solution = solver ? await solver(env, options) : solveStaffGroup(env, options);\n\t\tconst resultEvents = solution.events.map((e) => ({\n\t\t\t...e,\n\t\t\tid: env.ids[e.id], // decode compact ids\n\t\t}));\n\t\tresultEvents.forEach((e) => {\n\t\t\tconst event = measure.events.find((e0) => e0.id === e.id);\n\t\t\tevent.tick = Number.isFinite(e.tick) ? Math.round((e.tick * WHOLE_DURATION) / DURATION_MULTIPLIER) : null;\n\t\t\tevent.tickGroup = e.tickGroup;\n\t\t\tevent.timeWarp = e.timeWarp;\n\t\t});\n\n\t\tmeasure.duration = Math.round((solution.duration * WHOLE_DURATION) / DURATION_MULTIPLIER);\n\t\tmeasure.voices = solution.voices.map((voice) => voice.map((id) => env.ids[id]));\n\n\t\tmeasure.solutionStat = {\n\t\t\tloss: solution.loss,\n\t\t\tsolverCredits: solution.credits,\n\t\t\tsolverTimes: solution.times,\n\t\t};\n\n\t\t// full measure rests\n\t\tmeasure.events.forEach((event) => {\n\t\t\tconst result = resultEvents.find((e) => e.id === event.id);\n\t\t\tif (!result) return;\n\t\t\telse if (!Number.isFinite(result.tick) && event.rest === 'r' && event.division === 0) {\n\t\t\t\tevent.tick = 0;\n\t\t\t\tevent.tickGroup = 0;\n\t\t\t\tevent.rest = 'R';\n\t\t\t\tevent.duration = measure.duration;\n\t\t\t\tmeasure.voices.push([event.id]);\n\t\t\t} else if (event.rest === 'R') {\n\t\t\t\tevent.tick = 0;\n\t\t\t\tevent.tickGroup = 0;\n\t\t\t\tevent.duration = measure.duration;\n\t\t\t\tmeasure.voices.push([event.id]);\n\t\t\t}\n\t\t});\n\t};\n\n\texport const regulateMeasureWithRectification = async (\n\t\tmeasure: SpartitoMeasure,\n\t\trectification: MeasureRectification,\n\t\t{ solver = null, ...options }: RegulatorOptions\n\t): Promise => {\n\t\tconst allEvents = measure.events\n\t\t\t.filter((event) => !event.zeroHolder)\n\t\t\t.map((event) => {\n\t\t\t\tconst re = rectification.events.find((e) => e && e.id === event.id);\n\t\t\t\tconst division = Number.isFinite(re?.division) ? re.division : event.division;\n\t\t\t\tconst dots = Number.isFinite(re?.dots) ? re.dots : event.dots;\n\t\t\t\tconst duration = DURATION_MULTIPLIER * 2 ** -division * (2 - 2 ** -dots);\n\n\t\t\t\treturn {\n\t\t\t\t\tid: event.id,\n\t\t\t\t\tstaff: event.staff,\n\t\t\t\t\tx: event.x,\n\t\t\t\t\ttickEstimated: event.predisposition?.tick,\n\t\t\t\t\ty: event.tipY + event.staff * 100, // TODO: refine y by event term tipY\n\t\t\t\t\tduration,\n\t\t\t\t\t// the possibility of full measure rest\n\t\t\t\t\tpR: event.rest === 'R' ? 1 : event.rest === 'r' && event.division === 0 ? Math.tanh(event.x - measure.eventStartX) : 0,\n\t\t\t\t\tfakeP: event.predisposition ? event.predisposition.fakeP || 0 : 0,\n\t\t\t\t\tshrinkness: event.predisposition?.timeWarped || 0,\n\t\t\t\t};\n\t\t\t});\n\t\tlet expectedDuration = (DURATION_MULTIPLIER * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\texpectedDuration = Math.max(expectedDuration, roundNumber(measure.estimatedDuration, DURATION_MULTIPLIER / 4));\n\n\t\tconst staffGroupMap = measure.staffGroups.reduce((map, staves, group) => {\n\t\t\tstaves.forEach((staff) => (map[staff] = group));\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst ids = [0, ...allEvents.map((e) => e.id)]; // compact ids\n\t\tconst ievents = allEvents.map((e) => ({\n\t\t\t...e,\n\t\t\tid: ids.indexOf(e.id),\n\t\t\tx: e.x - measure.startX,\n\t\t\tconfidence: (1 - e.pR) * (1 - e.fakeP),\n\t\t\tshrinkness: e.shrinkness,\n\t\t\tstaffGroup: staffGroupMap[e.staff],\n\t\t}));\n\n\t\t// estimate topology matrices\n\t\tconst matrixH = Array(ids.length + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\t\tconst matrixV = Array(ids.length)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\n\t\tfor (const e1 of ievents) {\n\t\t\tfor (const e2 of ievents) {\n\t\t\t\tmatrixV[e1.id][e2.id] =\n\t\t\t\t\te1 !== e2 && e1.tickEstimated >= e2.tickEstimated ? 1 - erf(((e1.tickEstimated - e2.tickEstimated) * INVERT_SQRT2) / CHORDS_SEAM_SIGMA) : 0;\n\n\t\t\t\t// weaken full measure rest connections\n\t\t\t\tconst nR = (1 - e1.pR) * (1 - e2.pR);\n\t\t\t\tmatrixV[e1.id][e2.id] *= nR;\n\n\t\t\t\tif (matrixV[e1.id][e2.id] < 1e-2) matrixV[e1.id][e2.id] = 0;\n\t\t\t}\n\t\t}\n\n\t\t// copy matrices values from measure topology data\n\t\tconsole.assert(\n\t\t\tmeasure.matrixH && measure.matrixH.length > ids[ids.length - 1] && measure.matrixH[0].length > ids[ids.length - 1],\n\t\t\t'matrix shape mismatch:',\n\t\t\tids.length,\n\t\t\t`${measure.matrixH.length}x${measure.matrixH[0].length}`,\n\t\t\t`${matrixH.length}x${matrixH[0].length}`\n\t\t);\n\t\tfor (let i = 0; i < ids.length + 1; i++) {\n\t\t\tconst ii = i < ids.length ? ids[i] : measure.matrixH.length - 1;\n\t\t\tfor (let j = 1; j < ids.length; j++) matrixH[i][j] = measure.matrixH[ii][ids[j]];\n\t\t}\n\n\t\tlet measureShrinkness = 0;\n\t\tif (Number.isFinite(measure.estimatedDuration)) measureShrinkness = Math.tanh(Math.log(Math.min(1, measure.estimatedDuration / measure.duration)) * -3);\n\n\t\tconst env = {\n\t\t\tids,\n\t\t\tevents: ievents,\n\t\t\texpectedDuration,\n\t\t\tmeasureShrinkness,\n\t\t\tendX: measure.position.right,\n\t\t\tmatrixH,\n\t\t\tmatrixV,\n\t\t};\n\t\tconst solution = solver ? await solver(env, options) : solveStaffGroup(env, options);\n\n\t\tconst priority = -solution.loss;\n\n\t\tconst events = solution.events.map(({ id, tick, tickGroup, timeWarp }) => {\n\t\t\tconst re = rectification.events.find((e) => e && e.id === id);\n\t\t\tconst tickN = Number.isFinite(tick) ? Math.round((tick * WHOLE_DURATION) / DURATION_MULTIPLIER) : tick;\n\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\ttick: tickN,\n\t\t\t\ttickGroup,\n\t\t\t\ttimeWarp,\n\t\t\t\tdivision: re?.division,\n\t\t\t\tdots: re?.dots,\n\t\t\t};\n\t\t});\n\n\t\tconst duration = Math.round((solution.duration * WHOLE_DURATION) / DURATION_MULTIPLIER);\n\n\t\treturn {\n\t\t\tevents,\n\t\t\tvoices: solution.voices,\n\t\t\tduration,\n\t\t\tpriority,\n\t\t};\n\t};\n}\n\ntype Matrix = number[][];\n\ntype TickMap = Map;\n\ninterface SolutionStatistics {\n\tloss?: number;\n\tsolverCredits?: number;\n\tsolverTimes?: number;\n}\n\nclass SpartitoMeasure extends SimpleClass {\n\tstatic className = 'SpartitoMeasure';\n\tstatic blackKeys = ['staffGroups', 'solutionStat', 'measureNumber', 'deposit'];\n\n\tmeasureIndex: number;\n\tstaffMask: number;\n\tstaffGroups: number[][];\n\toriginalRegulationHash?: string;\n\tmeasureNumber?: number; // count from the last indent measure, head partial measure is zero, skip empty measures\n\n\tpatched: boolean;\n\tdiscard: boolean;\n\n\tposition: {\n\t\tsystemIndex: number;\n\t\tlocalIndex: number; // the measure local index in its system\n\t\tleft: number;\n\t\tright: number;\n\t\tstaffYs?: number[];\n\t\tstaffYsFull?: number[];\n\t};\n\n\tbackgroundImages: BackgroundImage[];\n\n\tevents: EventTerm[];\n\tendEvent: Partial; // the placeholder for end tick\n\tcontexts: ContextedTerm[][]; // [staff]\n\tmarks: MarkTerm[];\n\tduration: number;\n\n\tvoices?: number[][]; // [voice, id]\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbasics?: StaffBasic[]; // [staff]\n\tvoltaBegin: boolean;\n\tvoltaEnd: boolean;\n\talternative: boolean;\n\tbarTypes: Record;\n\tindent: boolean;\n\n\tsolutionStat?: SolutionStatistics;\n\n\tmatrixH: Matrix; // matrix N x N\t\t[right][left]\n\tmatrixV: Matrix; // matrix N x N\n\testimatedDuration: number;\n\n\tgraph: GraphMeasure;\n\n\tdeposit: Record;\n\n\tstatic reorderEvents(events: EventTerm[], staffYsFull: number[]): EventTerm[] {\n\t\tconst HALF_NOTEHEAD = 0.7;\n\n\t\tconst ys = [];\n\n\t\tconst es = events.map((e) => ({\n\t\t\tid: e.id,\n\t\t\tstaff: e.staff,\n\t\t\tx: e.x / HALF_NOTEHEAD,\n\t\t\trx: 0,\n\t\t\try: staffYsFull[e.staff] + e.tipY,\n\t\t\ttipY: e.tipY,\n\t\t\tprior: 0,\n\t\t}));\n\t\tes.sort((e1, e2) => e1.x - e2.x);\n\t\tes.slice(1).forEach((e, i) => {\n\t\t\tconst dx = Math.min(Math.round(e.x - es[i].x), 2);\n\t\t\te.rx = es[i].rx + dx;\n\t\t});\n\t\tes.forEach((e) => {\n\t\t\te.prior = e.staff * 1e4 + e.rx + e.tipY * 0.01;\n\n\t\t\tif (!ys.includes(e.ry)) ys.push(e.ry);\n\t\t});\n\t\tes.sort((e1, e2) => e1.prior - e2.prior);\n\t\tys.sort((y1, y2) => y1 - y2);\n\n\t\tlet yi = 0;\n\t\tconst yis = ys.map((y, i) => {\n\t\t\tif (!i || ys[i] - ys[i - 1] < 0.5) return yi;\n\n\t\t\t++yi;\n\t\t\treturn yi;\n\t\t});\n\n\t\tconst result = es.map((e) => new EventTerm({ ...events.find((ev) => ev.id === e.id), intX: e.rx, intY: yis[ys.indexOf(e.ry)] }));\n\t\tresult.forEach((e, i) => (e.id = i + 1));\n\n\t\treturn result;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tif (!this.originalRegulationHash && !this.regulated) this.originalRegulationHash = this.regulationHash;\n\n\t\tthis.barTypes = this.barTypes || {};\n\n\t\t// Ensure postRegulate runs for measures deserialized with voices (e.g. from patches/JSON)\n\t\t// to set endEvent and roundX needed for playback cursor positioning.\n\t\tif (this.regulated && this.position) this.postRegulate();\n\t}\n\n\tget timeSignature(): Fraction {\n\t\treturn this.basics && this.basics[0].timeSignature;\n\t}\n\n\tget keySignature(): number {\n\t\treturn this.basics && this.basics[0].keySignature;\n\t}\n\n\tget timeSignatureChanged(): boolean {\n\t\treturn this.contexts.filter(Boolean)[0].some((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type));\n\t}\n\n\tget doubtfulTimesig(): boolean {\n\t\treturn this.basics && this.basics[0].doubtfulTimesig;\n\t}\n\n\tget regulated(): boolean {\n\t\treturn !!this.voices;\n\t}\n\n\tget validRegulated(): boolean {\n\t\tif (!this.voices) return false;\n\n\t\treturn this.voices.flat(1).every((id) => Number.isFinite(this.events.find((e) => e.id === id)?.tick));\n\t}\n\n\tget rows(): EventMeasure[] {\n\t\treturn this.contexts.map((contexts, si) => {\n\t\t\tconst events = this.events.filter((e) => e.staff === si);\n\n\t\t\treturn {\n\t\t\t\tevents,\n\t\t\t\tcontexts,\n\t\t\t};\n\t\t});\n\t}\n\n\tget eventStartX(): number {\n\t\treturn this.events.length ? Math.min(...this.events.map((e) => e.x)) : this.startX;\n\t}\n\n\tget startX(): number {\n\t\treturn this.position.left;\n\t}\n\n\tget width(): number {\n\t\treturn this.position.right - this.position.left;\n\t}\n\n\tget tickMap(): TickMap {\n\t\treturn this.events\n\t\t\t.concat([this.endEvent as EventTerm])\n\t\t\t.filter(Boolean)\n\t\t\t.reduce((map, event) => {\n\t\t\t\tif (Number.isFinite(event.tick)) {\n\t\t\t\t\tif (!map.has(event.tick)) map.set(event.tick, []);\n\n\t\t\t\t\tmap.get(event.tick).push(event);\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}, new Map());\n\t}\n\n\tget tickToX(): { [tick: number]: number } {\n\t\treturn [...this.tickMap.entries()].reduce((map, [tick, events]) => {\n\t\t\tevents = events.filter((e) => !e.fullMeasureRest && !e.grace);\n\t\t\tif (events.length) {\n\t\t\t\tconst x = Math.min(...events.map((e) => e.x));\n\t\t\t\tmap[tick] = x;\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget tickRates(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest);\n\t\tevents.sort((e1, e2) => e1.x - e2.x);\n\n\t\treturn events.slice(0, events.length - 1).map((e1, i) => {\n\t\t\tconst e2 = events[i + 1];\n\n\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t});\n\t}\n\n\tget tickRatesInStaves(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest && !event.grace);\n\t\tconst sevents: Record = events.reduce((map, event) => {\n\t\t\tmap[event.staff] = map[event.staff] || [];\n\t\t\tmap[event.staff].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst rates = Object.values(sevents).map((es) =>\n\t\t\tes\n\t\t\t\t.sort((e1, e2) => e1.x - e2.x)\n\t\t\t\t.slice(0, es.length - 1)\n\t\t\t\t.map((e1, i) => {\n\t\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t\t\t})\n\t\t);\n\n\t\treturn [].concat(...rates);\n\t}\n\n\tget tickRatesInGroups(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest);\n\t\tconst gevents: Record = events.reduce((map, event) => {\n\t\t\tconst groupIndex = this.staffGroups.findIndex((group) => group.includes(event.staff));\n\t\t\tmap[groupIndex] = map[groupIndex] || [];\n\t\t\tmap[groupIndex].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst rates = Object.values(gevents).map((es) =>\n\t\t\tes\n\t\t\t\t.sort((e1, e2) => e1.x - e2.x)\n\t\t\t\t.slice(0, es.length - 1)\n\t\t\t\t.map((e1, i) => {\n\t\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t\t\t})\n\t\t);\n\n\t\treturn [].concat(...rates);\n\t}\n\n\tget tickTwist(): number {\n\t\tif (!this.duration || !this.staffGroups) return undefined;\n\n\t\tconst events = this.events.filter(\n\t\t\t(event) => Number.isFinite(event.tick) && !event.fullMeasureRest && !event.grace && !event.tremoloCatcher && !(event.rest && event.division === 0)\n\t\t); // ignore rest0\n\t\tconst gevents: Record = events.reduce((map, event) => {\n\t\t\tconst groupIndex = this.staffGroups.findIndex((group) => group.includes(event.staff));\n\t\t\tmap[groupIndex] = map[groupIndex] || [];\n\t\t\tmap[groupIndex].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst twists = Object.values(gevents).map((es) => {\n\t\t\tconst eventsXOrder = [...es].sort((e1, e2) => e1.pivotX - e2.pivotX);\n\t\t\tconst xSpan = this.position.right - eventsXOrder[0].x;\n\t\t\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\t\t\tconst e1 = eventsXOrder[i];\n\t\t\t\tconst dx = e2.pivotX - e1.pivotX;\n\t\t\t\tconst dt = e2.tick! - e1.tick!;\n\n\t\t\t\tif (!dt) return dx / xSpan;\n\n\t\t\t\tconst rate = Math.atan2(dt / this.duration, dx / xSpan);\n\n\t\t\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t\t\t});\n\n\t\t\treturn Math.max(0, ...tickTwists);\n\t\t});\n\n\t\treturn Math.max(0, ...twists);\n\t}\n\n\tget eventMap(): Record {\n\t\treturn this.events.reduce((map, event) => {\n\t\t\tmap[event.id] = event;\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget empty(): boolean {\n\t\treturn !this.events?.length || !this.voices?.length;\n\t}\n\n\tget hasIllEvent(): boolean {\n\t\treturn this.regulated && this.events.some((event) => !event.zeroHolder && !Number.isFinite(event.tick) && !event.fullMeasureRest);\n\t}\n\n\tget brief(): string {\n\t\tconst timesig = `${this.timeSignature.numerator}/${this.timeSignature.denominator}`;\n\t\tconst eventBrieves = this.events.map((e) =>\n\t\t\t[\n\t\t\t\te.staff,\n\t\t\t\te.intX,\n\t\t\t\tMath.round(e.tip ? e.tip.y : e.ys?.[0] ?? 0),\n\t\t\t\te.fullMeasureRest ? 0 : e.division,\n\t\t\t\te.fullMeasureRest ? 0 : e.dots,\n\t\t\t\te.rest ? 'r' : '',\n\t\t\t\te.grace || '',\n\t\t\t\te.stemDirection,\n\t\t\t\te.beam || '',\n\t\t\t].join('|')\n\t\t);\n\n\t\treturn [timesig, ...eventBrieves].join('\\n');\n\t}\n\n\tget regulationHash(): string {\n\t\treturn sha1(this.brief);\n\t}\n\n\t// prefer use originalRegulationHash\n\tget regulationHash0(): string {\n\t\treturn this.originalRegulationHash || this.regulationHash;\n\t}\n\n\tget regulationHashes(): string[] {\n\t\treturn Array.from(new Set([this.originalRegulationHash, this.regulationHash].filter(Boolean)));\n\t}\n\n\tget featureWords(): string[][] | null {\n\t\tif (!this.regulated || !this.voices || !this.voices.length) return null;\n\n\t\tconst invalid = this.tickRatesInStaves.some((rate) => rate < 0);\n\n\t\tconst mainEvents = this.events.filter((event) => !event.zeroHolder && !event.rest);\n\n\t\tconst ys = mainEvents\n\t\t\t.map((event) => event.ys)\n\t\t\t.flat(1)\n\t\t\t.map((y) => `Y${-y * 2}`);\n\t\tconst uys = Array.from(new Set(ys));\n\t\tif (this.keySignature) uys.push(`K${this.keySignature}`);\n\n\t\tconst voices = this.voices\n\t\t\t.map((ids) => ids.map((id) => this.events.find((e) => e.id === id)).filter((event) => !event.zeroHolder && !event.rest))\n\t\t\t.filter((voice) => voice.length);\n\n\t\tconst melodies = invalid ? [] : voices.map((es) => es.map((e) => e.scaleChord).join('-'));\n\n\t\tconst rhythm = invalid ? [] : voices.map((es) => es.map((e) => e.division).join(''));\n\t\tif (this.timeSignature) rhythm.push(`T${this.timeSignature.numerator}/${this.timeSignature.denominator}`);\n\n\t\treturn [uys, melodies, rhythm];\n\t}\n\n\tget barType(): MeasureBarType {\n\t\tif (this.voltaEnd) return 'VoltaRight';\n\n\t\tconst typeEntris = Object.entries(this.barTypes).sort((e1, e2) => e2[1] - e1[1]);\n\t\tif (typeEntris[0] && typeEntris[0][1] >= 1) return typeEntris[0][0] as MeasureBarType;\n\n\t\treturn null;\n\t}\n\n\tget partialDuration(): boolean {\n\t\tif (!Number.isFinite(this.duration)) return false;\n\n\t\tconst signatureDuration = fractionMul(WHOLE_DURATION, this.timeSignature);\n\n\t\treturn this.duration < signatureDuration;\n\t}\n\n\tpostRegulate(): void {\n\t\tthis.endEvent = new EventTerm({ tick: this.duration, x: this.position.right });\n\n\t\tthis.updateRoundX();\n\t\tsolveGraceEvents(this);\n\t\tsolveTremoloPairs(this);\n\t\tthis.updateContextTick();\n\t}\n\n\tupdateRoundX(): void {\n\t\tconst tickToX = this.tickToX;\n\t\tif (tickToX)\n\t\t\tthis.events.forEach((event) => {\n\t\t\t\tconst x = tickToX[event.tick];\n\t\t\t\tif (Number.isFinite(x)) event.roundX = x;\n\t\t\t});\n\t}\n\n\tupdateContextTick(): void {\n\t\tif (!this.staffGroups) return;\n\t\tconst contexts = this.contexts.flat(1);\n\t\tthis.staffGroups.flat(1).forEach((staffIndex) => {\n\t\t\tconst terms = [...this.events.filter((e) => e.staff === staffIndex), ...contexts.filter((c) => c.staff === staffIndex)];\n\t\t\tterms.sort((t1, t2) => t2.x - t1.x); // order by x from right to left\n\n\t\t\tlet tick = this.duration;\n\t\t\tterms.forEach((term) => {\n\t\t\t\tif (term instanceof EventTerm) {\n\t\t\t\t\tif (!term.fullMeasureRest && !term.zeroHolder) tick = term.tick;\n\t\t\t\t} else if (term instanceof ContextedTerm) term.tick = tick;\n\t\t\t});\n\t\t});\n\t}\n\n\tasSolution(ref: SpartitoMeasure = undefined): RegulationSolution {\n\t\tif (!this.regulated) return null;\n\n\t\t//let timeSignature = undefined;\n\t\t//if (ref && printFraction(ref.timeSignature) !== printFraction(this.timeSignature)) timeSignature = this.timeSignature;\n\n\t\treturn {\n\t\t\t//timeSignature,\n\t\t\tevents: this.events.map((e) => {\n\t\t\t\tconst se = {\n\t\t\t\t\tid: e.id,\n\t\t\t\t\ttick: e.tick,\n\t\t\t\t\ttickGroup: e.tickGroup,\n\t\t\t\t\ttimeWarp: e.timeWarp,\n\t\t\t\t} as RegulationSolutionEvent;\n\n\t\t\t\tif (ref) {\n\t\t\t\t\tconst refEvent = ref.events.find((re) => re.id === e.id);\n\t\t\t\t\tif (refEvent) {\n\t\t\t\t\t\tif (e.division !== refEvent.division) se.division = e.division;\n\t\t\t\t\t\tif (e.dots !== refEvent.dots) se.dots = e.dots;\n\t\t\t\t\t\tif (e.grace !== refEvent.grace) se.grace = !!e.grace;\n\t\t\t\t\t\tif (e.beam !== refEvent.beam) se.beam = e.beam;\n\t\t\t\t\t\tif (e.fullMeasureRest !== refEvent.fullMeasureRest) se.fullMeasure = e.fullMeasureRest;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn se;\n\t\t\t}),\n\t\t\tvoices: this.voices,\n\t\t\tduration: this.duration,\n\t\t\tpriority: -this.solutionStat?.loss,\n\t\t};\n\t}\n\n\tapplySolution(solution: RegulationSolution): void {\n\t\tif (solution.timeSignature) {\n\t\t\tthis.basics.forEach((basic) => {\n\t\t\t\tbasic.timeSignature = solution.timeSignature;\n\t\t\t\tbasic.doubtfulTimesig = false;\n\t\t\t});\n\t\t}\n\n\t\tthis.voices = solution.voices;\n\t\tthis.duration = solution.duration;\n\t\tthis.events.forEach((event) => {\n\t\t\tevent.timeWarp = null;\n\t\t\tevent.tick = null;\n\t\t\tevent.tickGroup = null;\n\n\t\t\tconst se = solution.events?.find((e) => e.id === event.id);\n\t\t\tif (se) {\n\t\t\t\tevent.tick = se.tick;\n\t\t\t\tevent.timeWarp = se.timeWarp;\n\t\t\t\tevent.tickGroup = se.tickGroup;\n\n\t\t\t\tif (Number.isFinite(se.division)) event.division = se.division;\n\t\t\t\tif (Number.isFinite(se.dots)) event.dots = se.dots;\n\t\t\t\tif (se.beam) event.beam = se.beam as StemBeam;\n\t\t\t\tif (se.grace !== undefined) event.grace = se.grace ? GraceType.Grace : undefined;\n\t\t\t\tif (se.fullMeasure) event.rest = 'R';\n\t\t\t}\n\t\t});\n\n\t\tif (Number.isFinite(solution.priority)) this.solutionStat = { loss: -solution.priority };\n\n\t\tthis.postRegulate();\n\t}\n\n\tcleanupRegulation(): void {\n\t\tthis.voices = null;\n\t\tthis.duration = null;\n\t\tthis.events.forEach((event) => {\n\t\t\tevent.tick = null;\n\t\t\tevent.tickGroup = null;\n\t\t\tevent.timeWarp = null;\n\t\t});\n\t}\n\n\tregulateTest(): void {\n\t\tthis.duration = 0;\n\t\tthis.voices = this.rows.map((row) => row.events.map((e) => e.id));\n\t\tthis.voices.forEach((ids) => {\n\t\t\tlet tick = 0;\n\t\t\tconst events = ids.map((id) => this.events.find((e) => e.id === id));\n\t\t\tevents.forEach((e, index) => {\n\t\t\t\te.tickGroup = index;\n\t\t\t\te.tick = tick;\n\n\t\t\t\ttick += e.duration;\n\t\t\t});\n\n\t\t\tthis.duration = Math.max(this.duration, tick);\n\t\t});\n\t}\n\n\tregulateSimple(): void {\n\t\tSimplePolicy.computeMeasureTicks(this);\n\t\tSimplePolicy.computeMeasureVoices(this);\n\t}\n\n\tasync regulateEquations(options: EquationPolicy.RegulatorOptions): Promise {\n\t\tawait EquationPolicy.regulateMeasure(this, options);\n\t}\n\n\t// compute event.tick, event.tickGroup, event.timeWarp, voices, duration\n\tasync regulate({ policy = 'advanced', ...options }: RegulationOptions = {}): Promise {\n\t\tswitch (policy) {\n\t\t\tcase 'test':\n\t\t\t\tthis.regulateTest();\n\n\t\t\t\tbreak;\n\t\t\tcase 'equations':\n\t\t\tcase 'advanced':\n\t\t\t\tawait this.regulateEquations(options);\n\n\t\t\t\tbreak;\n\t\t\tcase 'simple':\n\t\t\tdefault:\n\t\t\t\tthis.regulateSimple();\n\t\t}\n\n\t\tthis.postRegulate();\n\t}\n\n\tcreatePatch(): PatchMeasure {\n\t\treturn new PatchMeasure({\n\t\t\tmeasureIndex: this.measureIndex,\n\t\t\tstaffMask: this.staffMask,\n\t\t\tbasic: this.basics[0],\n\t\t\t//points: [],\n\t\t\tevents: this.events,\n\t\t\tcontexts: this.contexts,\n\t\t\tmarks: this.marks,\n\t\t\tvoices: this.voices,\n\t\t});\n\t}\n\n\tcreateClusters(): EventCluster[] {\n\t\tconst trueEventIds = this.voices && new Set(this.voices.flat(1));\n\n\t\treturn this.staffGroups\n\t\t\t.filter((idx) => idx.length)\n\t\t\t.map((staffIndices) => {\n\t\t\t\tconst staffY0 = this.position.staffYs[0];\n\t\t\t\tconst staffYn = (n) => this.position.staffYs[staffIndices.indexOf(n)] - staffY0;\n\n\t\t\t\tconst events = this.events.filter((event) => staffIndices.includes(event.staff));\n\t\t\t\tif (!events.length) return null;\n\n\t\t\t\tconst elements: EventElement[] = events.map((event) => ({\n\t\t\t\t\tindex: event.id,\n\t\t\t\t\tvoice: (this.voices || []).findIndex((voice) => voice.includes(event.id)),\n\t\t\t\t\ttype: event.rest ? EventElementType.REST : EventElementType.CHORD,\n\t\t\t\t\tstaff: staffIndices.indexOf(event.staff),\n\t\t\t\t\tx: event.tipX,\n\t\t\t\t\tpivotX: event.pivotX,\n\t\t\t\t\ty1: staffYn(event.staff) + (event.stemDirection === 'u' ? event.tipY : event.ys[event.ys.length - 1]),\n\t\t\t\t\ty2: staffYn(event.staff) + (event.stemDirection === 'u' ? event.ys[0] : event.tipY),\n\t\t\t\t\theadY: event.stemDirection === 'u' ? event.ys[0] : event.ys[event.ys.length - 1],\n\t\t\t\t\tfeature: event.feature,\n\t\t\t\t\tdivision: event.division,\n\t\t\t\t\tdots: event.dots,\n\t\t\t\t\tbeam: event.beam || null,\n\t\t\t\t\tstemDirection: event.stemDirection,\n\t\t\t\t\tgrace: !!event.grace,\n\t\t\t\t\ttremoloCatcher: event.tremoloCatcher,\n\t\t\t\t\ttimeWarped: !!event.timeWarp,\n\t\t\t\t\tfullMeasure: event.fullMeasureRest,\n\t\t\t\t\ttick: event.tick || 0,\n\t\t\t\t\tfake: !event.fullMeasureRest && !event.grace && this.voices && !trueEventIds.has(event.id), // tremoloCatcher deemed as fake\n\t\t\t\t}));\n\t\t\t\tif (!elements.some((elem) => !elem.fake)) return null;\n\n\t\t\t\tconst signatureDuration = fractionMul(WHOLE_DURATION, this.timeSignature);\n\n\t\t\t\t// BOS & EOS\n\t\t\t\telements.unshift({\n\t\t\t\t\tindex: 0,\n\t\t\t\t\ttype: EventElementType.BOS,\n\t\t\t\t\tstaff: null,\n\t\t\t\t\tdivision: null,\n\t\t\t\t\tbeam: null,\n\t\t\t\t\tdots: null,\n\t\t\t\t\tstemDirection: null,\n\t\t\t\t\tgrace: false,\n\t\t\t\t\ttremoloCatcher: false,\n\t\t\t\t\tfullMeasure: false,\n\t\t\t\t\tx: this.position.left,\n\t\t\t\t\tpivotX: this.position.left,\n\t\t\t\t\ty1: 0,\n\t\t\t\t\ty2: 0,\n\t\t\t\t\theadY: 0,\n\t\t\t\t\tfeature: null,\n\t\t\t\t\ttimeWarped: this.duration < signatureDuration,\n\t\t\t\t\ttick: 0,\n\t\t\t\t\tfake: false,\n\t\t\t\t});\n\t\t\t\telements.push({\n\t\t\t\t\tindex: -1,\n\t\t\t\t\ttype: EventElementType.EOS,\n\t\t\t\t\tstaff: null,\n\t\t\t\t\tdivision: null,\n\t\t\t\t\tbeam: null,\n\t\t\t\t\tdots: null,\n\t\t\t\t\tstemDirection: null,\n\t\t\t\t\tgrace: false,\n\t\t\t\t\ttremoloCatcher: false,\n\t\t\t\t\tfullMeasure: false,\n\t\t\t\t\tx: this.position.right,\n\t\t\t\t\tpivotX: this.position.right,\n\t\t\t\t\ty1: 0,\n\t\t\t\t\ty2: 0,\n\t\t\t\t\theadY: 0,\n\t\t\t\t\tfeature: null,\n\t\t\t\t\ttimeWarped: false,\n\t\t\t\t\ttick: this.duration,\n\t\t\t\t\tfake: false,\n\t\t\t\t});\n\n\t\t\t\tlet matrixH = null;\n\t\t\t\tif (this.voices) {\n\t\t\t\t\tmatrixH = elements.map(() => elements.map(() => 0));\n\n\t\t\t\t\tthis.voices.forEach((voice) => {\n\t\t\t\t\t\tlet tar = 0;\n\t\t\t\t\t\tvoice.forEach((id) => {\n\t\t\t\t\t\t\tconst src = elements.findIndex((e) => e.index === id);\n\t\t\t\t\t\t\tif (src > 0 && tar >= 0) matrixH[src][tar] = 1;\n\t\t\t\t\t\t\ttar = src;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (tar >= 0) matrixH[elements.length - 1][tar] = 1;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst annotation = { ...this.solutionStat, patched: this.patched };\n\n\t\t\t\tconst backgroundImages =\n\t\t\t\t\tthis.backgroundImages &&\n\t\t\t\t\tthis.backgroundImages.map(({ url, position }) => ({\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t...position,\n\t\t\t\t\t\t\ty: position.y - staffY0,\n\t\t\t\t\t\t},\n\t\t\t\t\t}));\n\n\t\t\t\treturn new EventCluster({\n\t\t\t\t\tindex: this.measureIndex,\n\t\t\t\t\tduration: this.duration,\n\t\t\t\t\tsignatureDuration,\n\t\t\t\t\tstaffY0,\n\t\t\t\t\telements,\n\t\t\t\t\tmatrixH,\n\t\t\t\t\tannotation,\n\t\t\t\t\tbackgroundImages,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t}\n\n\tapplyClusters(clusters: EventCluster[]): void {\n\t\tconst id_max = this.events.reduce((max, event) => Math.max(max, event.id), 0) + 1;\n\t\tthis.matrixH = Array(id_max + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(id_max).fill(0));\n\n\t\tclusters.forEach((cluster) => {\n\t\t\tconst ids = cluster.elements.map((e) => e.index);\n\t\t\tconsole.assert(cluster.matrixH.length === ids.length - 1, 'unexpected matrixH size:', cluster.matrixH.length, ids.length);\n\n\t\t\tfor (let is = 1; is < ids.length; ++is) {\n\t\t\t\tfor (let it = 0; it < ids.length - 1; ++it) {\n\t\t\t\t\tconst srcId = ids[is] < 0 ? id_max : ids[is];\n\t\t\t\t\tconst tarId = ids[it];\n\n\t\t\t\t\tthis.matrixH[srcId][tarId] = cluster.matrixH[is - 1][it];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// event predisposition\n\t\t\tcluster.elements.forEach((elem) => {\n\t\t\t\tconst event = this.events.find((event) => event.id === elem.index);\n\t\t\t\tif (event) {\n\t\t\t\t\tevent.predisposition = elem.predisposition;\n\t\t\t\t\tif (event.predisposition.grace !== undefined) event.grace = event.predisposition.grace ? GraceType.Grace : null;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t// estimated measure duration\n\t\tthis.estimatedDuration = clusters.reduce((sum, cluster) => sum + cluster.estimatedDuration, 0) / clusters.length;\n\t}\n}\n\nexport { SpartitoMeasure, EquationPolicy };\n","import { SimpleClass } from './aux_/typedJSON';\nimport { StaffBasic } from './interfaces';\nimport { SemanticPoint } from './semanticPoint';\nimport { EventTerm, ContextedTerm, MarkTerm } from './term';\n\nclass PatchMeasure extends SimpleClass {\n\tstatic className = 'PatchMeasure';\n\n\tmeasureIndex: number;\n\tstaffMask: number;\n\tbasic: StaffBasic;\n\n\t//points: SemanticPoint[];\n\tevents: EventTerm[];\n\tcontexts: ContextedTerm[][]; // [staff]\n\tmarks: MarkTerm[];\n\tvoices: number[][]; // [voice, id]\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tObject.assign(this, data);\n\t}\n\n\tget staffN(): number {\n\t\treturn Math.floor(Math.log2(this.staffMask)) + 1;\n\t}\n\n\tget basics(): StaffBasic[] {\n\t\treturn Array(this.staffN).fill(this.basic);\n\t}\n\n\tget duration(): number {\n\t\treturn Math.max(\n\t\t\t0,\n\t\t\t...this.voices.map((ids) => {\n\t\t\t\tconst events = ids.map((id) => this.events.find((e) => e.id === id));\n\n\t\t\t\treturn events.reduce((duration, event) => duration + event.duration, 0);\n\t\t\t})\n\t\t);\n\t}\n}\n\nexport { PatchMeasure };\n","import { MetaNotation, TokenPosition } from '../performer';\nimport { Hash, HashVector, cosHashes, hashToHex, hashToBigInt } from './hashVector';\nimport { EventTerm, ContextedTerm, TermPitch, TempoTerm, WHOLE_DURATION } from './term';\nimport { VoicesStaff, VoiceMeasure, TermMeasure, TermVoice, Performing, RegulationOptions } from './interfaces';\nimport { reducedFraction, argmax, noteToPitch, frac, printFraction, fractionMul } from './utils';\nimport { TokenType } from './token';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { SimpleClass } from './aux_/typedJSON';\nimport { evaluateMeasure } from './measureEvaluator';\nimport { Logger, DummyLogger } from './logger';\n\nexport const emptyVoiceFromStaffMeasure = (staff: TermMeasure, chiefVoice: boolean = false): VoiceMeasure => {\n\treturn {\n\t\tempty: true,\n\t\tduration: staff.duration,\n\t\ttickMap: {\n\t\t\t[0]: EventTerm.space({ duration: staff.duration, tick: 0 }),\n\t\t},\n\t\ttimeSignature: staff.timeSignature,\n\t\ttimeSigNumeric: staff.timeSigNumeric,\n\t\tkeySignature: staff.keySignature,\n\t\tcontextedTerms: staff.terms.filter((term) => term instanceof ContextedTerm && (!term.staffLevel || chiefVoice)) as ContextedTerm[],\n\t\tmarks: [],\n\t};\n};\n\nconst removeEmptyMeasuresInVoicesStaves = (staves: VoicesStaff[]): void => {\n\t//console.assert(staves[0] && staves[0].voices[0], 'voices is empty:', staves);\n\tif (!(staves[0] && staves[0].voices[0])) {\n\t\tconsole.warn('empty voices:', staves);\n\t\treturn;\n\t}\n\n\tconst measureCount = staves[0].voices[0].measures.length;\n\tconst measureEmpties = Array(measureCount)\n\t\t.fill(null)\n\t\t.map((_, m) => {\n\t\t\tfor (const staff of staves) {\n\t\t\t\tfor (const voice of staff.voices) {\n\t\t\t\t\tconst measure = voice.measures[m];\n\t\t\t\t\tif (!measure.empty) return false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\tmeasureEmpties.forEach((empty, m) => {\n\t\tif (empty) {\n\t\t\tstaves.forEach((staff) =>\n\t\t\t\tstaff.voices.forEach((voice) => {\n\t\t\t\t\tconst measure = voice.measures[m];\n\t\t\t\t\tmeasure.tickMap = {};\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t});\n};\n\nconst markingTiesInVoice = (voice: TermVoice) => {\n\tconst events = [].concat(...voice.measures.map((m) => Object.values(m.tickMap).filter((event) => event instanceof EventTerm)));\n\t//console.log(\"events:\", events);\n\n\tfor (let i = 1; i < events.length; ++i) {\n\t\tconst event0 = events[i - 1];\n\t\tconst event1 = events[i];\n\t\tif (!event0.rest && !event1.rest) {\n\t\t\tif (event0.accessories.some((acc) => acc.type === TokenType.SlurBegin) && event1.accessories.some((acc) => acc.type === TokenType.SlurEnd)) {\n\t\t\t\tconst pitches = event0.pitches.filter((p0) => event1.pitches.some((p1) => p1.note === p0.note && p1.alter === p0.alter));\n\t\t\t\tif (pitches.length > 0) {\n\t\t\t\t\tevent0.tying = true;\n\t\t\t\t\tevent1.tied = true;\n\n\t\t\t\t\tpitches.forEach((p0) => {\n\t\t\t\t\t\tp0.tying = true;\n\t\t\t\t\t\tconst p1 = event1.pitches.find((p1) => p1.note === p0.note && p1.alter === p0.alter);\n\t\t\t\t\t\tp1.tied = true;\n\t\t\t\t\t});\n\n\t\t\t\t\t// remove slurs from accessories\n\t\t\t\t\tpitches.forEach(() => {\n\t\t\t\t\t\tconst si0 = event0.accessories.findIndex((acc) => acc.type === TokenType.SlurBegin);\n\t\t\t\t\t\tif (si0 >= 0) event0.accessories.splice(si0, 1);\n\n\t\t\t\t\t\tconst si1 = event1.accessories.findIndex((acc) => acc.type === TokenType.SlurEnd);\n\t\t\t\t\t\tif (si1 >= 0) event1.accessories.splice(si1, 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nclass Spartito extends SimpleClass {\n\tstatic className = 'Spartito';\n\n\tstavesCount: number;\n\tstaffGroups: number[][];\n\tmeasures: SpartitoMeasure[];\n\n\ttags: string[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.measures.forEach((measure) => (measure.staffGroups = this.staffGroups));\n\t}\n\n\tget regulated(): boolean {\n\t\treturn this.measures.every((m) => m.regulated);\n\t}\n\n\tget solidMeasureCount(): number {\n\t\treturn this.measures.filter((measure) => !measure.empty).length;\n\t}\n\n\tget measureIndexMapping(): number[] {\n\t\tlet n = 0;\n\t\treturn this.measures.map((measure) => {\n\t\t\treturn !measure.empty ? n++ : null;\n\t\t});\n\t}\n\n\tget headBPM(): number {\n\t\tfor (const measure of this.measures) {\n\t\t\tif (measure.marks) {\n\t\t\t\tconst tempoMark = measure.marks.find((mark) => mark instanceof TempoTerm && mark.isValid()) as TempoTerm;\n\t\t\t\tif (tempoMark) return tempoMark.bpm;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget measureLayoutCode(): string {\n\t\tconst ms = this.measures\n\t\t\t.filter((measure) => !measure.empty)\n\t\t\t.map((measure, i) => ({\n\t\t\t\tindex: i + 1,\n\t\t\t\tvb: measure.voltaBegin,\n\t\t\t\tve: measure.voltaEnd,\n\t\t\t\talter: measure.alternative,\n\t\t\t\tleftSign: '',\n\t\t\t\trightSign: '',\n\t\t\t}));\n\t\tms.forEach((m, i) => {\n\t\t\tif (m.vb) {\n\t\t\t\tconst nextI = ms.slice(i + 1).findIndex((mm) => mm.vb);\n\t\t\t\tconst nextVBI = nextI >= 0 ? i + nextI : ms.length;\n\t\t\t\tif (ms.slice(i, nextVBI - 1).some((mm) => mm.ve))\n\t\t\t\t\t// check if volta range closed\n\t\t\t\t\tm.leftSign = '2*[';\n\t\t\t}\n\n\t\t\tif (m.ve) {\n\t\t\t\tconst pms = ms.slice(0, i + 1).reverse();\n\t\t\t\tconst lastVEI = pms.slice(1).findIndex((mm) => mm.ve);\n\t\t\t\tif (lastVEI >= 0) {\n\t\t\t\t\tif (!pms.slice(1, lastVEI + 1).some((mm) => mm.vb))\n\t\t\t\t\t\t// ignore unclosed right volta\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m.alter) {\n\t\t\t\t\tconst lastMI = pms.findIndex((m) => !m.alter);\n\t\t\t\t\tif (lastMI > 0) {\n\t\t\t\t\t\tpms[lastMI].rightSign = ']';\n\t\t\t\t\t\tpms[lastMI - 1].leftSign = '{[';\n\n\t\t\t\t\t\tm.rightSign = '],';\n\n\t\t\t\t\t\tif (ms[i + 1]) ms[i + 1].rightSign = '},';\n\t\t\t\t\t}\n\t\t\t\t} else m.rightSign = '],';\n\n\t\t\t\tif (!pms.some((m) => m.vb)) ms[0].leftSign = '2*[';\n\t\t\t}\n\t\t});\n\n\t\treturn ms\n\t\t\t.map((m) => m.leftSign + m.index.toString() + m.rightSign + (m.rightSign ? '' : ','))\n\t\t\t.join(' ')\n\t\t\t.replace(/,$/, '');\n\t}\n\n\tget qualityScore(): number {\n\t\tconst measures = this.measures.filter((measure) => !measure.empty);\n\t\tconst qss = measures.map(evaluateMeasure).map((e) => e.qualityScore);\n\t\tconst sum = qss.reduce((a, b) => a + b, 0);\n\t\t//console.log('qss:', qss);\n\n\t\treturn measures.length ? sum / measures.length : null;\n\t}\n\n\tdumpEvaluations(): void {\n\t\tconst es = this.measures.filter((measure) => !measure.empty).map((m) => ({ measureIndex: m.measureIndex, ...evaluateMeasure(m) }));\n\t\tconst qss = es.map((e) => e.qualityScore);\n\t\tconst sum = qss.reduce((a, b) => a + b, 0);\n\t\tconsole.log('qualityScore:', sum / es.length);\n\n\t\tconsole.table(es);\n\t}\n\n\tregulate(options: RegulationOptions = {}): void {\n\t\tthis.measures.forEach((m) => m.regulated || m.regulate(options));\n\t}\n\n\tcleanupRegulation(): void {\n\t\tthis.measures.forEach((m) => (m.voices = null));\n\t}\n\n\t// measures' estimatedDuration should be valid\n\trectifyTimeSignatures(logger: Logger = new DummyLogger()): void {\n\t\tconst mis = this.measures\n\t\t\t.map((measure, index) => ({ measure, index }))\n\t\t\t.filter(({ measure, index }) => !index || measure.timeSignatureChanged)\n\t\t\t.map(({ index }) => index);\n\t\tconst segments = mis\n\t\t\t.map((index, si) => this.measures.slice(index, si < mis.length - 1 ? mis[si + 1] : this.measures.length))\n\t\t\t.map((ms) => ms.filter((m) => m.estimatedDuration > 0))\n\t\t\t.filter((seg) => seg.length >= 3 || seg.some((measure) => measure.doubtfulTimesig));\n\t\t//console.log(\"segments:\", segments.map(ms => ms.map(m => m.measureIndex)));\n\n\t\tsegments.forEach((measures) => {\n\t\t\tif (measures[0].patched) {\n\t\t\t\t// rectify according to patched head measure\n\t\t\t\tconst newTimeSignature = measures[0].timeSignature;\n\t\t\t\tconst measuresToFix = measures\n\t\t\t\t\t.slice(1)\n\t\t\t\t\t.filter((measure) => !measure.patched && printFraction(measure.timeSignature) !== printFraction(newTimeSignature));\n\t\t\t\tif (measuresToFix.length) {\n\t\t\t\t\tconst originTimeSignature = measuresToFix[0].timeSignature;\n\t\t\t\t\tmeasuresToFix.forEach((measure) => measure.basics.forEach((basic) => (basic.timeSignature = newTimeSignature)));\n\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t'[rectifyTimeSignatures]\ttimesignator overwrote by patched head:',\n\t\t\t\t\t\t`${printFraction(originTimeSignature)} -> ${printFraction(newTimeSignature)}`,\n\t\t\t\t\t\tmeasuresToFix.map((m) => m.measureIndex)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst originTimeSignature = measures[0].timeSignature;\n\t\t\tconst regularD = Number.isInteger(Math.log2(originTimeSignature.denominator));\n\n\t\t\tlet denominator = regularD ? 4 : 8;\n\t\t\tif (regularD) denominator = Math.max(denominator, measures[0].timeSignature.denominator);\n\n\t\t\tconst numerators = measures.map((measure) => Math.round((measure.estimatedDuration * denominator) / WHOLE_DURATION));\n\t\t\tconst countings = Object.entries(numerators.reduce((c, n) => ((c[n] = (c[n] || 0) + 1), c), {} as Record)).sort(\n\t\t\t\t(p1, p2) => p2[1] - p1[1]\n\t\t\t);\n\t\t\tconst peakCount = countings[0][1];\n\t\t\tconst candidateNumerators = countings.filter(([_, c]) => c > peakCount * 0.6);\n\t\t\tconst bestCounting = candidateNumerators.reduce((best, c) => (Number(c[0]) > Number(best[0]) ? c : best));\n\t\t\tif (bestCounting[1] > 1) {\n\t\t\t\t//console.log(\"countings:\", countings, bestCounting[0]);\n\t\t\t\tlet numerator = Number(bestCounting[0]);\n\t\t\t\tif (!regularD || originTimeSignature.denominator * numerator !== originTimeSignature.numerator * denominator) {\n\t\t\t\t\tif (regularD && denominator !== originTimeSignature.denominator) {\n\t\t\t\t\t\tconst reducedN = (numerator * originTimeSignature.denominator) / denominator;\n\t\t\t\t\t\tif (Number.isInteger(reducedN)) {\n\t\t\t\t\t\t\tnumerator = reducedN;\n\t\t\t\t\t\t\tdenominator = originTimeSignature.denominator;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst measuresToFix = measures.filter((measure) => !measure.patched);\n\n\t\t\t\t\tconst newTimeSignature = frac(numerator, denominator);\n\t\t\t\t\tmeasuresToFix.forEach((measure) => measure.basics.forEach((basic) => (basic.timeSignature = newTimeSignature)));\n\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t'[rectifyTimeSignatures]\ttimesignator overwrote by estimation:',\n\t\t\t\t\t\t`${printFraction(originTimeSignature)} -> ${numerator}/${denominator}`,\n\t\t\t\t\t\tmeasuresToFix.map((m) => m.measureIndex)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tmakeVoiceStaves(): VoicesStaff[] {\n\t\tthis.regulate();\n\n\t\tconst voiceCount = Math.max(...this.measures.map((measure) => measure.voices.length));\n\t\tif (!voiceCount || !Number.isFinite(voiceCount)) return null;\n\n\t\t// mark tied pitches for patched measues\n\t\tthis.measures\n\t\t\t.filter((measure) => measure.patched)\n\t\t\t.forEach((measure) => {\n\t\t\t\tmeasure.events.forEach((event) => {\n\t\t\t\t\tif (event.tied) event.pitches.forEach((pitch) => (pitch.tied = true));\n\t\t\t\t});\n\t\t\t});\n\n\t\t// [measure, voice]\n\t\tconst measures: VoiceMeasure[][] = this.measures.map((measure /*, mi*/) => {\n\t\t\tconsole.assert(measure.validRegulated, '[makeVoiceStaves] measure is invalid:', measure);\n\n\t\t\tconst eventMap: { [key: number]: EventTerm } = {};\n\t\t\tmeasure.events.forEach((event) => (eventMap[event.id] = event));\n\n\t\t\tconst leftStaves = new Set(\n\t\t\t\tArray(measure.contexts.length)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map((_, i) => i)\n\t\t\t);\n\n\t\t\tlet bar = null;\n\t\t\tif (measure.barType) {\n\t\t\t\tswitch (measure.barType) {\n\t\t\t\t\tcase 'Segment':\n\t\t\t\t\t\tbar = '||';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Terminal':\n\t\t\t\t\t\tbar = '|.';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst voices: VoiceMeasure[] = measure.voices.map((ids /*, vi*/) => {\n\t\t\t\tconst events = ids.map((id) => eventMap[id]);\n\t\t\t\tevents.sort((e1, e2) => e1.tick - e2.tick);\n\n\t\t\t\tconst tickMap = {};\n\t\t\t\tlet tick = 0;\n\t\t\t\tlet lastEvent = null;\n\t\t\t\tfor (const event of events) {\n\t\t\t\t\tif (!Number.isFinite(event?.tick)) {\n\t\t\t\t\t\tconsole.warn('invalid event tick:', event);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (event.tick > tick) tickMap[tick] = EventTerm.space({ tick, duration: event.tick - tick });\n\t\t\t\t\telse if (!event.grace && event.tick < tick && lastEvent)\n\t\t\t\t\t\tlastEvent.timeWarp = reducedFraction(event.tick - lastEvent.tick, lastEvent.duration);\n\t\t\t\t\t//console.log(\"timewarp:\", event.tick - lastEvent.tick, lastEvent.duration, lastEvent.timeWarp);\n\n\t\t\t\t\ttickMap[event.tick] = event;\n\n\t\t\t\t\tif (!event.zeroHolder) {\n\t\t\t\t\t\ttick = Math.round(event.tick + event.duration);\n\t\t\t\t\t\tlastEvent = event;\n\n\t\t\t\t\t\t// sub grace events\n\t\t\t\t\t\tif (event.graceIds) {\n\t\t\t\t\t\t\tevent.graceIds.forEach((id) => {\n\t\t\t\t\t\t\t\tconst grace = measure.eventMap[id];\n\t\t\t\t\t\t\t\tif (grace) tickMap[grace.tick] = grace;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (measure.endEvent && measure.endEvent.graceIds) {\n\t\t\t\t\tmeasure.endEvent.graceIds.forEach((id) => {\n\t\t\t\t\t\tconst grace = measure.eventMap[id];\n\t\t\t\t\t\tif (grace && (!lastEvent || grace.staff === lastEvent.staff)) tickMap[grace.tick] = grace;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (tick < measure.duration) tickMap[tick] = EventTerm.space({ tick, duration: measure.duration - tick });\n\t\t\t\telse if (tick > measure.duration && Number.isFinite(measure.duration))\n\t\t\t\t\t//console.warn(\"duration out of range:\", tick, column.duration, mi, vi);\n\t\t\t\t\tlastEvent.timeWarp = reducedFraction(measure.duration - lastEvent.tick, lastEvent.duration);\n\n\t\t\t\tconsole.assert(\n\t\t\t\t\t!lastEvent || !lastEvent.timeWarp || (Number.isInteger(lastEvent.timeWarp.numerator) && Number.isInteger(lastEvent.timeWarp.denominator)),\n\t\t\t\t\t'invalid time warp:',\n\t\t\t\t\tlastEvent\n\t\t\t\t);\n\n\t\t\t\tconst staffIndex = events[0] ? events[0].staff : 0;\n\t\t\t\tleftStaves.delete(staffIndex);\n\t\t\t\tconst basic = measure.basics[staffIndex];\n\n\t\t\t\t//const row = measure.rows[staffIndex];\n\t\t\t\tconst contextedTerms = measure.contexts[staffIndex];\n\n\t\t\t\tconst tailEvent = events[events.length - 1];\n\t\t\t\tconst tailStaff = tailEvent ? tailEvent.staff : 0;\n\n\t\t\t\t// TODO: modify full measure rests duration\n\n\t\t\t\treturn {\n\t\t\t\t\ttickMap,\n\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\t...basic,\n\t\t\t\t\t// TODO: consider staff altered voice\n\t\t\t\t\tcontextedTerms,\n\t\t\t\t\tmarks: [],\n\t\t\t\t\tbreak: measure.break,\n\t\t\t\t\tpageBreak: measure.pageBreak,\n\t\t\t\t\theadStaff: staffIndex,\n\t\t\t\t\ttailStaff,\n\t\t\t\t\tbar,\n\t\t\t\t};\n\t\t\t});\n\n\t\t\twhile (voices.length < voiceCount) {\n\t\t\t\tconst staffIndex = leftStaves.values().next().value || 0;\n\t\t\t\tleftStaves.delete(staffIndex);\n\n\t\t\t\tconst basic = measure.basics[staffIndex];\n\t\t\t\tconst terms = measure.contexts[staffIndex];\n\n\t\t\t\tconst chiefVoice = voices.every((voice) => voice.headStaff !== staffIndex);\n\n\t\t\t\tconst voice = emptyVoiceFromStaffMeasure(\n\t\t\t\t\t{\n\t\t\t\t\t\tterms,\n\t\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\t\t...basic,\n\t\t\t\t\t\tbreak: measure.break,\n\t\t\t\t\t\tpageBreak: measure.pageBreak,\n\t\t\t\t\t},\n\t\t\t\t\tchiefVoice\n\t\t\t\t);\n\t\t\t\tvoice.headStaff = staffIndex;\n\t\t\t\tvoice.tailStaff = staffIndex;\n\t\t\t\tvoices.push(voice);\n\t\t\t}\n\n\t\t\treturn voices;\n\t\t});\n\t\t//console.log(\"measures:\", measures);\n\n\t\t// compute traits for voice-measures\n\t\tmeasures.forEach((voices) =>\n\t\t\tvoices.forEach((measure) => {\n\t\t\t\tconst words = [];\n\n\t\t\t\tif (!measure.empty) {\n\t\t\t\t\twords.push(`s${measure.headStaff}`);\n\t\t\t\t\twords.push(`s${measure.tailStaff}`);\n\t\t\t\t}\n\n\t\t\t\tObject.values(measure.tickMap).forEach((event) => {\n\t\t\t\t\tif (event instanceof EventTerm) {\n\t\t\t\t\t\twords.push(`s${event.staff}`);\n\n\t\t\t\t\t\tif (event.stemDirection) {\n\t\t\t\t\t\t\tconst sd = `st${event.staff}-${event.stemDirection}`;\n\t\t\t\t\t\t\twords.push(sd, sd);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (event.grace) words.push(`gd${event.mainDuration}`);\n\t\t\t\t\t\telse words.push(`d${event.mainDuration}`);\n\n\t\t\t\t\t\tif (event.rest) words.push('r-' + event.rest);\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tevent.pitches.forEach((pitch) => {\n\t\t\t\t\t\t\t\twords.push(`p1-${pitch.note}`);\n\t\t\t\t\t\t\t\twords.push(`p8-${Math.round(pitch.note / 8)}`);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tmeasure.trait = HashVector.fromWords(words);\n\t\t\t})\n\t\t);\n\t\t//console.log(\"measure traits:\");\n\t\t//console.table(measures.map(voices => voices.map(measure => hashToHex(measure.trait.toHash()))));\n\n\t\tconst staffToGroup: Record = this.staffGroups\n\t\t\t.flat(1)\n\t\t\t.reduce((map, si) => ((map[si] = this.staffGroups.findIndex((group) => group.includes(si))), map), {});\n\n\t\t// sort voices to connect voices between neighhoring measures\n\t\tconst voiceTraits = Array(voiceCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, index) => ({ vector: HashVector.zero, index, weight: 0, headStaff: null }));\n\t\tmeasures.forEach((voices, mi) => {\n\t\t\tvoiceTraits.sort((v1, v2) => v2.weight - v1.weight);\n\n\t\t\tconst leftVoices = new Set(voices);\n\t\t\tvoiceTraits.forEach((voiceTrait) => {\n\t\t\t\tconst vs = [...leftVoices];\n\t\t\t\tlet measure = vs[0];\n\t\t\t\tif (mi > 0 && vs.length > 1) {\n\t\t\t\t\tconst consistencies = vs.map((measure) =>\n\t\t\t\t\t\tstaffToGroup[measure.headStaff] === staffToGroup[voiceTrait.headStaff]\n\t\t\t\t\t\t\t? cosHashes(voiceTrait.vector.toHash(), measure.trait.toHash())\n\t\t\t\t\t\t\t: -1\n\t\t\t\t\t);\n\t\t\t\t\tmeasure = vs[argmax(consistencies)];\n\t\t\t\t}\n\t\t\t\tleftVoices.delete(measure);\n\n\t\t\t\tmeasure.voiceIndex = voiceTrait.index;\n\t\t\t\tvoiceTrait.vector.scale(0.4).add(measure.trait);\n\n\t\t\t\tvoiceTrait.weight = Object.keys(measure.tickMap).length;\n\n\t\t\t\tif (mi === 0) voiceTrait.headStaff = measure.headStaff;\n\t\t\t});\n\n\t\t\tvoices.sort((m1, m2) => m1.voiceIndex - m2.voiceIndex);\n\t\t});\n\n\t\t//const staffTraits = Array(this.stavesCount).fill(null).map((_, si) => HashVector.fromString(`s${si}`).toHash());\n\t\tconst staffVoiceIndices = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map(() => []);\n\t\tvoiceTraits.forEach((trait) => {\n\t\t\t//const consistencies = staffTraits.map(staff => cosHashes(trait.vector.toHash(), staff));\n\t\t\t//staffVoiceIndices[argmax(consistencies)].push(trait.index);\n\t\t\tstaffVoiceIndices[trait.headStaff].push(trait.index);\n\t\t});\n\n\t\tconst staves = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, si) => {\n\t\t\t\tif (!measures[0]) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvoices: [],\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t//const voiceIndicies = measures[0].map((voice, vi) => ({ voice, vi })).filter(({ voice }) => voice.headStaff === si).map(({ vi }) => vi);\n\t\t\t\tconst voiceIndicies = staffVoiceIndices[si];\n\n\t\t\t\tconst voices = voiceIndicies.map((vi): TermVoice => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmode: 'relative',\n\t\t\t\t\t\tmeasures: measures.map((m) => m[vi]),\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\treturn { voices };\n\t\t\t});\n\n\t\tremoveEmptyMeasuresInVoicesStaves(staves);\n\t\tstaves.forEach((staff) => staff.voices.forEach(markingTiesInVoice));\n\n\t\treturn staves;\n\t}\n\n\tperform(): Performing {\n\t\tconst staves = this.makeVoiceStaves();\n\t\tif (!staves) return null;\n\n\t\tconst tokenMap = new Map();\n\n\t\t// TODO: store staff channels in score\n\t\tconst staffToChannel = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.reduce((map, _, i) => {\n\t\t\t\tmap[i] = i;\n\t\t\t\treturn map;\n\t\t\t}, {});\n\n\t\tconst voiceChannels = [].concat(...staves.map((staff, si) => staff.voices.map(() => staffToChannel[si])));\n\n\t\tlet hasTempo = false;\n\n\t\tlet nextTick = 0;\n\t\tlet events0 = null;\n\t\tconst measures = this.measures\n\t\t\t.filter((measure) => !measure.empty)\n\t\t\t.map((measure) => {\n\t\t\t\tconst { systemIndex, right: endX } = measure.position;\n\t\t\t\tconst measureIndex = measure.measureIndex;\n\n\t\t\t\tconst voices: VoiceMeasure[] = [].concat(...staves.map((staff) => staff.voices.map((voice) => voice.measures[measureIndex])));\n\t\t\t\tconst voice0 = voices[0];\n\t\t\t\tconst tick = nextTick;\n\n\t\t\t\t//const signatureDuration = (WHOLE_DURATION * voice0.timeSignature.numerator) / voice0.timeSignature.denominator;\n\n\t\t\t\tnextTick += voice0.duration;\n\n\t\t\t\tconst notes = [].concat(\n\t\t\t\t\t...voices.map((measure, vi) => {\n\t\t\t\t\t\tconst tickFactor = 1; //measure.duration ? signatureDuration / measure.duration : 1;\n\n\t\t\t\t\t\tconst channel = voiceChannels[vi];\n\n\t\t\t\t\t\tconst chords = Object.values(measure.tickMap)\n\t\t\t\t\t\t\t.filter((term) => term instanceof EventTerm && !term.rest)\n\t\t\t\t\t\t\t.map((term: EventTerm) => {\n\t\t\t\t\t\t\t\tconst duration = Math.round(term.duration * tickFactor);\n\t\t\t\t\t\t\t\tconsole.assert(Number.isFinite(term.tick), 'invalid event term tick:', term);\n\t\t\t\t\t\t\t\tconsole.assert(Number.isFinite(duration), 'invalid event term duration:', term);\n\n\t\t\t\t\t\t\t\tif (term.tick >= 0) {\n\t\t\t\t\t\t\t\t\t// exclude minus tick tokens\n\t\t\t\t\t\t\t\t\tterm.noteIds.forEach((id) => {\n\t\t\t\t\t\t\t\t\t\ttokenMap.set(id, {\n\t\t\t\t\t\t\t\t\t\t\tsystem: systemIndex,\n\t\t\t\t\t\t\t\t\t\t\tmeasure: measureIndex,\n\t\t\t\t\t\t\t\t\t\t\tx: term.roundX,\n\t\t\t\t\t\t\t\t\t\t\tendX,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst part = this.staffGroups.findIndex((group) => group.includes(term.staff));\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttick: Math.round(term.tick * tickFactor),\n\t\t\t\t\t\t\t\t\tduration,\n\t\t\t\t\t\t\t\t\tpitches: term.pitches,\n\t\t\t\t\t\t\t\t\tnoteIds: term.noteIds,\n\t\t\t\t\t\t\t\t\tpart,\n\t\t\t\t\t\t\t\t\tstaff: term.staff,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn [].concat(\n\t\t\t\t\t\t\t...chords.map((chord) => {\n\t\t\t\t\t\t\t\t// exclude repeated pitches\n\t\t\t\t\t\t\t\tconst pitchMap: { [pitch: number]: TermPitch } = chord.pitches.reduce((map, pitch) => {\n\t\t\t\t\t\t\t\t\tmap[noteToPitch(pitch)] = pitch;\n\t\t\t\t\t\t\t\t\treturn map;\n\t\t\t\t\t\t\t\t}, {});\n\t\t\t\t\t\t\t\tconst pitches = Object.values(pitchMap).sort((p1, p2) => p1.note - p2.note);\n\n\t\t\t\t\t\t\t\treturn pitches\n\t\t\t\t\t\t\t\t\t.filter((pitch) => !pitch.tied)\n\t\t\t\t\t\t\t\t\t.map((pitch, i) => {\n\t\t\t\t\t\t\t\t\t\tconst pitchValue = noteToPitch(pitch);\n\t\t\t\t\t\t\t\t\t\tconst id = chord.noteIds && chord.noteIds[i];\n\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\ttick: chord.tick,\n\t\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\t\tduration: chord.duration,\n\t\t\t\t\t\t\t\t\t\t\tchordPosition: {\n\t\t\t\t\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\t\t\t\t\tcount: chord.pitches.length,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\ttied: pitch.tied,\n\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\tids: [id],\n\t\t\t\t\t\t\t\t\t\t\ttrack: chord.part,\n\t\t\t\t\t\t\t\t\t\t\tstaff: chord.staff,\n\t\t\t\t\t\t\t\t\t\t\tchannel,\n\t\t\t\t\t\t\t\t\t\t\tsubNotes: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tstartTick: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tendTick: chord.duration,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvelocity: 127,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst events = [];\n\t\t\t\tevents0 = events0 || events;\n\n\t\t\t\tif (measure.marks)\n\t\t\t\t\tmeasure.marks.forEach((mark) => {\n\t\t\t\t\t\tif (mark instanceof TempoTerm) {\n\t\t\t\t\t\t\tconst bpm = mark.bpm;\n\t\t\t\t\t\t\tif (mark.isValid()) {\n\t\t\t\t\t\t\t\tconst es = hasTempo ? events : events0; // set the first tempo to the beginning of the track\n\t\t\t\t\t\t\t\tconst tick = hasTempo ? mark.tick : 0;\n\t\t\t\t\t\t\t\tes.push({\n\t\t\t\t\t\t\t\t\ttrack: 0,\n\t\t\t\t\t\t\t\t\tticks: tick,\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\ttype: 'meta',\n\t\t\t\t\t\t\t\t\t\tsubtype: 'setTempo',\n\t\t\t\t\t\t\t\t\t\tmicrosecondsPerBeat: Math.round(60e6 / bpm),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\thasTempo = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\tconst basic = measure.basics[0];\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\tnotes,\n\t\t\t\t\tevents,\n\t\t\t\t\ttimeSignature: basic && basic.timeSignature,\n\t\t\t\t\tkeySignature: basic && basic.keySignature,\n\t\t\t\t};\n\t\t\t});\n\n\t\tif (!hasTempo) {\n\t\t\tmeasures[0].events.push({\n\t\t\t\ttrack: 0,\n\t\t\t\tticks: 0,\n\t\t\t\tdata: {\n\t\t\t\t\ttype: 'meta',\n\t\t\t\t\tsubtype: 'setTempo',\n\t\t\t\t\tmicrosecondsPerBeat: 0.5e6, // TODO\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst notation = new MetaNotation({ measures });\n\n\t\treturn {\n\t\t\tnotation,\n\t\t\ttokenMap,\n\t\t};\n\t}\n\n\tperformByEstimation(): Performing {\n\t\tconst tokenMap = new Map();\n\t\tlet nextTick = 0;\n\n\t\tconst measures = this.measures\n\t\t\t.filter((measure) => measure.events.some((event) => event.predisposition))\n\t\t\t.map((measure) => {\n\t\t\t\tconst tick = nextTick;\n\t\t\t\tconst duration = Math.round(measure.estimatedDuration || fractionMul(WHOLE_DURATION, measure.timeSignature));\n\t\t\t\tconst basic = measure.basics[0];\n\n\t\t\t\tnextTick += duration;\n\n\t\t\t\tconst { systemIndex, right: endX } = measure.position;\n\t\t\t\tconst measureIndex = measure.measureIndex;\n\n\t\t\t\tconst chords = measure.events.filter((event) => event.predisposition && event.predisposition.fake < 0.5 && !event.rest);\n\t\t\t\tconst notes = chords\n\t\t\t\t\t.map((chord) => {\n\t\t\t\t\t\tconst noteTick = Math.round(chord.predisposition.tick);\n\n\t\t\t\t\t\tchord.noteIds.forEach((id) => {\n\t\t\t\t\t\t\ttokenMap.set(id, {\n\t\t\t\t\t\t\t\tsystem: systemIndex,\n\t\t\t\t\t\t\t\tmeasure: measureIndex,\n\t\t\t\t\t\t\t\tx: chord.roundX,\n\t\t\t\t\t\t\t\tendX,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn chord.pitches.map((pitch, i) => {\n\t\t\t\t\t\t\tconst pitchValue = noteToPitch(pitch);\n\t\t\t\t\t\t\tconst id = chord.noteIds && chord.noteIds[i];\n\t\t\t\t\t\t\tconst part = this.staffGroups.findIndex((group) => group.includes(chord.staff));\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttick: noteTick,\n\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\tduration: chord.duration,\n\t\t\t\t\t\t\t\tchordPosition: {\n\t\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\t\tcount: chord.pitches.length,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ttied: pitch.tied,\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\tids: [id],\n\t\t\t\t\t\t\t\ttrack: part,\n\t\t\t\t\t\t\t\tstaff: chord.staff,\n\t\t\t\t\t\t\t\tchannel: 0,\n\t\t\t\t\t\t\t\tsubNotes: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tstartTick: 0,\n\t\t\t\t\t\t\t\t\t\tendTick: chord.duration,\n\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\tvelocity: 127,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.flat(1);\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration,\n\t\t\t\t\tnotes,\n\t\t\t\t\tevents: [],\n\t\t\t\t\ttimeSignature: basic && basic.timeSignature,\n\t\t\t\t\tkeySignature: basic && basic.keySignature,\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst notation = new MetaNotation({ measures });\n\n\t\treturn {\n\t\t\tnotation,\n\t\t\ttokenMap,\n\t\t};\n\t}\n\n\tfeatureHash(): Hash {\n\t\tconst headMeasures = this.measures.slice(0, 16);\n\t\tconst measureWords = headMeasures.map((measure) => measure.featureWords);\n\n\t\tconst levels = [1, 4, 16].map((len) => {\n\t\t\tconst meaures = measureWords.slice(0, len).filter(Boolean);\n\t\t\tconst ys = meaures.map((words) => words[0]).flat(1);\n\t\t\tconst melodies = meaures.map((words) => words[1]).flat(1);\n\t\t\tconst rhythm = meaures.map((words) => words[2]).flat(1);\n\n\t\t\tconst [vecY, vecMelody, vecRhythm] = [ys, melodies, rhythm].map(HashVector.fromWords);\n\n\t\t\treturn HashVector.concat(vecY, vecMelody.sub(128), vecRhythm.sub(128));\n\t\t});\n\n\t\treturn HashVector.concat(...levels).toHash();\n\t}\n\n\tfeatureHashHex(): string {\n\t\treturn hashToHex(this.featureHash());\n\t}\n\n\tfeatureHashBigInt(): bigint {\n\t\treturn hashToBigInt(this.featureHash());\n\t}\n\n\tassignMeasureNumbers(): void {\n\t\tlet n = null as any;\n\t\tfor (const measure of this.measures) {\n\t\t\tif (!measure.discard && !measure.events.length) continue;\n\n\t\t\tif (measure.indent) n = null;\n\n\t\t\tif (!Number.isFinite(n)) n = measure.partialDuration ? 0 : 1;\n\n\t\t\tmeasure.measureNumber = n++;\n\t\t}\n\t}\n}\n\nexport { SpartitoMeasure, Spartito };\n","import { Fraction } from './interfaces';\nimport { ContextedTerm, ContextType } from './term';\nimport { Logger, DummyLogger } from './logger';\n\nconst GROUP_N_TO_PITCH = [0, 2, 4, 5, 7, 9, 11];\nconst MIDDLE_C = 60;\n\nexport const mod7 = (x) => {\n\tlet y = x % 7;\n\twhile (y < 0) y += 7;\n\n\treturn y;\n};\n\nconst mod12 = (x) => {\n\tlet y = x % 12;\n\twhile (y < 0) y += 12;\n\n\treturn y;\n};\n\nconst PHONETS = 'CDEFGAB';\n\nconst ALTER_NAMES = {\n\t[-2]: '\\u266D\\u266D',\n\t[-1]: '\\u266D',\n\t[0]: '\\u266E',\n\t[1]: '\\u266F',\n\t[2]: '\\uD834\\uDD2A',\n};\n\n/*\n\tCoordinates:\n\n\t\tnote:\n\t\t\tzero: the middle C line (maybe altered)\n\t\t\tpositive: high (right on piano keyboard)\n\t\t\tunit: a step in scales of the current staff key\n\n\t\tstaff Y:\n\t\t\tzero: the third (middle) line among 5 staff lines\n\t\t\tpositive: down\n\t\t\tunit: a interval between 2 neighbor staff lines\n*/\n\nexport default class StaffContext {\n\tlogger: Logger = new DummyLogger();\n\n\tclef: number = -3;\n\tkeyAlters: number[] = [];\n\toctaveShift: number = 0;\n\talters: number[] = [];\n\n\ttimeSignature: Fraction = {\n\t\tnumerator: 4,\n\t\tdenominator: 4,\n\t};\n\ttimeSigNumeric: boolean = false;\n\ttimeSigNumSet: boolean = false;\n\ttimeSigDenSet: boolean = false;\n\tdoubtingTimesig: boolean = true;\n\n\tchange(term: ContextedTerm) {\n\t\tswitch (term.type) {\n\t\t\tcase ContextType.Clef:\n\t\t\t\tthis.clef = term.clef;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.KeyAcc:\n\t\t\t\tthis.keyAlters[mod7(this.yToNote(term.y))] = term.alter;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.Acc:\n\t\t\t\tthis.alters[this.yToNote(term.y)] = term.alter;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.OctaveShift:\n\t\t\t\tthis.octaveShift = term.octaveShift;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.TimeSignatureC:\n\t\t\t\tthis.timeSigNumeric = false;\n\t\t\t\tswitch (term.tokenType) {\n\t\t\t\t\tcase 'timesig-C44':\n\t\t\t\t\t\tthis.timeSignature.numerator = 4;\n\t\t\t\t\t\tthis.timeSignature.denominator = 4;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'timesig-C22':\n\t\t\t\t\t\tthis.timeSignature.numerator = 2;\n\t\t\t\t\t\tthis.timeSignature.denominator = 2;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tthis.doubtingTimesig = this.partialTimeSignature;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.TimeSignatureN:\n\t\t\t\tthis.timeSigNumeric = true;\n\t\t\t\tswitch (term.y) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tif (this.timeSigDenSet) this.timeSignature.denominator = this.timeSignature.denominator * 10 + term.number;\n\t\t\t\t\t\telse this.timeSignature.denominator = term.number;\n\n\t\t\t\t\t\tthis.timeSigDenSet = true;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase -1:\n\t\t\t\t\t\tif (this.timeSigNumSet) this.timeSignature.numerator = this.timeSignature.numerator * 10 + term.number;\n\t\t\t\t\t\telse this.timeSignature.numerator = term.number;\n\n\t\t\t\t\t\tthis.timeSigNumSet = true;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.logger.warn('unexpected time signature Y:', term.y);\n\t\t\t\t}\n\t\t\t\tthis.doubtingTimesig = this.partialTimeSignature;\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tresetMeasure() {\n\t\tthis.alters = [];\n\n\t\tthis.timeSigNumSet = false;\n\t\tthis.timeSigDenSet = false;\n\t}\n\n\tresetSystem() {\n\t\tthis.keyAlters = [];\n\t}\n\n\tget keySignature(): number {\n\t\treturn this.keyAlters.filter((a) => Number.isInteger(a)).reduce((sum, a) => sum + a, 0);\n\t}\n\n\tget partialTimeSignature(): boolean {\n\t\treturn !this.timeSigNumSet !== !this.timeSigDenSet;\n\t}\n\n\tnoteToY(note: number): number {\n\t\treturn -note / 2 - this.clef - this.octaveShift * 3.5;\n\t}\n\n\tpitchToNote(pitch: number, { preferredAlter = null } = {}): { note: number; alter: number } {\n\t\tif (!preferredAlter) preferredAlter = this.keySignature < 0 ? -1 : 1;\n\n\t\tconst group = Math.floor((pitch - MIDDLE_C) / 12);\n\t\tconst gp = mod12(pitch);\n\t\tconst alteredGp = GROUP_N_TO_PITCH.includes(gp) ? gp : mod12(gp - preferredAlter);\n\t\tconst gn = GROUP_N_TO_PITCH.indexOf(alteredGp);\n\t\tthis.logger.assert(gn >= 0, 'invalid preferredAlter:', pitch, preferredAlter, alteredGp);\n\n\t\tconst naturalNote = group * 7 + gn;\n\n\t\tconst alterValue = gp - alteredGp;\n\t\tconst keyAlterValue = this.keyAlters[gn] || 0;\n\t\tconst onAcc = Number.isInteger(this.alters[naturalNote]);\n\n\t\tconst alter = onAcc ? alterValue : alterValue === keyAlterValue ? null : alterValue;\n\n\t\treturn { note: naturalNote, alter };\n\t}\n\n\tpitchToY(pitch: number, { preferredAlter = null } = {}): { y: number; alter: number } {\n\t\tconst { note, alter } = this.pitchToNote(pitch, { preferredAlter });\n\t\tconst y = this.noteToY(note);\n\n\t\treturn { y, alter };\n\t}\n\n\tyToNote(y: number): number {\n\t\tthis.logger.assert(Number.isInteger(y * 2), 'invalid y:', y);\n\n\t\treturn (-y - this.octaveShift * 3.5 - this.clef) * 2;\n\t}\n\n\talterOnNote(note: number): number {\n\t\tif (Number.isInteger(this.alters[note])) return this.alters[note];\n\n\t\tconst gn = mod7(note);\n\t\tif (Number.isInteger(this.keyAlters[gn])) return this.keyAlters[gn];\n\n\t\treturn 0;\n\t}\n\n\tnoteToPitch(note: number): number {\n\t\tconst group = Math.floor(note / 7);\n\t\tconst gn = mod7(note);\n\n\t\tconst pitch = MIDDLE_C + group * 12 + GROUP_N_TO_PITCH[gn] + this.alterOnNote(note);\n\t\tif (!Number.isFinite(pitch)) {\n\t\t\tthis.logger.warn('invalid pitch value:', pitch, note, group, gn);\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn pitch;\n\t}\n\n\tyToPitch(y: number): number {\n\t\treturn this.noteToPitch(this.yToNote(y));\n\t}\n\n\tyToPitchName(y: number): string {\n\t\tconst note = this.yToNote(y);\n\t\tconst group = Math.floor(note / 7);\n\t\tconst gn = mod7(note);\n\n\t\tlet alter = this.alterOnNote(note);\n\t\tif (!alter && !Number.isInteger(this.alters[note])) alter = null;\n\n\t\treturn `${ALTER_NAMES[alter] ? ALTER_NAMES[alter] : ''}${PHONETS[gn]}${group + 4}`;\n\t}\n}\n","import sha1 from 'js-sha1';\n\nimport * as measureLayout from '../measureLayout';\nimport * as staffLayout from '../staffLayout';\nimport { SimpleClass } from './aux_/typedJSON';\nimport { EventSystem, MeasureBrief, MusicSheet, RecognitionSettings, ScoreData, TermMeasure, TermStaff, VoicesStaff } from './interfaces';\nimport { DummyLogger, Logger } from './logger';\nimport { evaluateMeasure } from './measureEvaluator';\nimport { PatchMeasure } from './patch';\nimport { Measure, Page, Staff, System } from './scoreComponents';\nimport { hashSemanticPoint, SemanticPoint, SemanticType } from './semanticPoint';\nimport { BOS_ELEMENT, fractionToElems, SemanticCluster, SemanticElement, SemanticElementType } from './semanticTopology';\nimport { Spartito, SpartitoMeasure } from './spartito';\nimport StaffContext from './staffContext';\nimport { ContextedTerm, ContextType, EventTerm, WHOLE_DURATION } from './term';\nimport type { SemanticPointInMeasure } from './timewiseGraph';\nimport { TimewiseGraph } from './timewiseGraph';\nimport { Token, TokenType } from './token';\nimport { distance2D, solveOverlapping } from './utils';\n\nexport const VERSION = 14;\n\ninterface Topology {\n\tclusters: SemanticCluster[];\n}\n\ninterface PaperOptions {\n\traggedLast: boolean;\n\traggedBottom: boolean;\n\traggedLastBottom: boolean;\n}\n\nconst GRAND_STAFF_LAYOUT = '{-}';\n\nconst processStaffContext = (staff: TermStaff, logger: Logger = new DummyLogger()): void => {\n\tconst context = new StaffContext();\n\tcontext.logger = logger;\n\n\tfor (const row of staff.rows) {\n\t\tfor (const measure of row) {\n\t\t\tconst startEvent = measure.terms.find((term) => term instanceof EventTerm) as EventTerm;\n\t\t\tlet tick = startEvent ? Math.min(startEvent.tick, 0) : 0;\n\n\t\t\tmeasure.terms.forEach((term) => {\n\t\t\t\tif (term instanceof ContextedTerm) {\n\t\t\t\t\tterm.tick = tick; // TODO: not working here because measure not regulated yet\n\t\t\t\t\tcontext.change(term);\n\t\t\t\t} else if (term instanceof EventTerm) {\n\t\t\t\t\tconst endTick = term.tick + (term.duration || 0);\n\t\t\t\t\tif (endTick > tick) tick = endTick;\n\n\t\t\t\t\tif (term.ys) {\n\t\t\t\t\t\tterm.pitches = term.ys.map((y) => {\n\t\t\t\t\t\t\tconst note = context.yToNote(y);\n\t\t\t\t\t\t\tconst alter = context.alterOnNote(note);\n\n\t\t\t\t\t\t\treturn { note, alter, octaveShift: context.octaveShift };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeasure.timeSignature = { ...context.timeSignature };\n\t\t\tmeasure.timeSigNumeric = context.timeSigNumeric;\n\t\t\tmeasure.doubtfulTimesig =\n\t\t\t\tcontext.doubtingTimesig ||\n\t\t\t\t!Number.isInteger(Math.log2(measure.timeSignature.denominator)) ||\n\t\t\t\tmeasure.timeSignature.numerator <= measure.timeSignature.denominator / 4;\n\n\t\t\tmeasure.keySignature = context.keySignature;\n\n\t\t\t// fill empty measure duration\n\t\t\tif (measure.duration === 0) measure.duration = (WHOLE_DURATION * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\n\t\t\tcontext.resetMeasure();\n\t\t}\n\n\t\tcontext.resetSystem();\n\t}\n};\n\nconst upgradeScoreData = (data: ScoreData): ScoreData => {\n\tif (data.version < 3) {\n\t\tconst { version, stavesCount, layoutTemplate, ...fields } = data;\n\t\tvoid version;\n\t\tvoid layoutTemplate;\n\n\t\tlet staffLayoutCode =\n\t\t\tstavesCount > 1\n\t\t\t\t? Array(stavesCount - 1)\n\t\t\t\t\t\t.fill(',')\n\t\t\t\t\t\t.join('')\n\t\t\t\t: '';\n\n\t\t// use graph staff by default for 2 staves score\n\t\tif (stavesCount === 2) staffLayoutCode = '{-}';\n\n\t\tdata = {\n\t\t\tversion: 3,\n\t\t\tstaffLayoutCode,\n\t\t\t...fields,\n\t\t};\n\t}\n\n\tif (data.version < 8) {\n\t\t// upgrade system measure bar semantics\n\t\tdata.pages.forEach((page) => {\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tif (system.semantics) {\n\t\t\t\t\tconst bars = system.semantics.filter((point) => point.semantic === SemanticType.vline_BarMeasure);\n\n\t\t\t\t\tsystem.semantics = [].concat(\n\t\t\t\t\t\t...system.staves.map((staff) => {\n\t\t\t\t\t\t\tconst oy = staff.top + staff.staffY;\n\n\t\t\t\t\t\t\treturn bars.map((point) => ({\n\t\t\t\t\t\t\t\t...point,\n\t\t\t\t\t\t\t\ty: point.y + oy,\n\t\t\t\t\t\t\t\textension: {\n\t\t\t\t\t\t\t\t\t...point.extension,\n\t\t\t\t\t\t\t\t\ty1: point.extension.y1 + oy,\n\t\t\t\t\t\t\t\t\ty2: point.extension.y2 + oy,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tdata.version = 8;\n\t}\n\n\tif (data.version < 9) {\n\t\t// remove old format spartito\n\t\tdata.spartito = null;\n\n\t\tdata.version = 9;\n\t}\n\n\treturn data;\n};\n\nconst bitsToMask = (bits: number[]): number => bits.reduce((mask, bit, i) => (bit ? mask | (1 << i) : mask), 0);\n\ninterface PointPosition {\n\tpoint: SemanticPoint;\n\tpageIndex: number;\n\tsystemIndex: number;\n\tstaffIndex: number;\n}\n\ninterface MeasureValidation {\n\ttickMap: { [tick: number]: number };\n}\n\ninterface Size {\n\twidth: number;\n\theight: number;\n}\n\nclass Score extends SimpleClass {\n\tstatic className = 'Score';\n\n\tversion = VERSION;\n\n\ttitle: string;\n\t// in pixels\n\tpageSize: Size;\n\tunitSize: number;\n\tstaffLayoutCode: string;\n\n\tpaperOptions?: Partial;\n\n\theaders: { [key: string]: string };\n\n\ttextAnnotations: { [id: string]: string };\n\n\ttags?: string[];\n\n\tinstrumentDict: { [key: string]: string };\n\n\tpages: Page[];\n\ttopology: Topology;\n\tspartito?: Spartito;\n\n\tpatches?: PatchMeasure[];\n\n\tsettings: RecognitionSettings;\n\n\tconstructor(data: ScoreData) {\n\t\tsuper();\n\t\tsuper.assign(upgradeScoreData(data));\n\n\t\tthis.pages = this.pages || [];\n\t\tthis.headers = this.headers || {};\n\t\tthis.instrumentDict = this.instrumentDict || {};\n\n\t\tthis.pageSize = this.pageSize || {\n\t\t\t// A4 paper\n\t\t\twidth: 794,\n\t\t\theight: 1122,\n\t\t};\n\n\t\tthis.unitSize = this.unitSize || null;\n\n\t\tthis.staffLayoutCode = this.staffLayoutCode || (this.maxStavesCount === 2 ? GRAND_STAFF_LAYOUT : Array(this.maxStavesCount).fill('').join(','));\n\t}\n\n\tget systems(): System[] {\n\t\treturn [].concat(...this.pages.map((page) => page.systems));\n\t}\n\n\tget measureCount(): number {\n\t\treturn this.systems.reduce((sum, system) => sum + (system.measureCount || 0), 0);\n\t}\n\n\tget imageKeys(): string[] {\n\t\treturn [\n\t\t\t...this.pages.map((page) => page.source?.url),\n\t\t\t...this.systems.map((system) => system.backgroundImage),\n\t\t\t...[].concat(\n\t\t\t\t...this.systems.map((system) =>\n\t\t\t\t\t[...system.staves.map((staff) => staff.backgroundImage), ...system.staves.map((staff) => staff.maskImage)].filter(Boolean)\n\t\t\t\t)\n\t\t\t),\n\t\t].filter(Boolean);\n\t}\n\n\tget breakSystemIndices(): number[] {\n\t\tconst indices = [];\n\t\tlet systemCount = 0;\n\t\tthis.pages.forEach((page, i) => {\n\t\t\tif (i < this.pages.length - 1) {\n\t\t\t\tsystemCount += page.systems.length;\n\t\t\t\tindices.push(systemCount - 1);\n\t\t\t}\n\t\t});\n\n\t\treturn indices;\n\t}\n\n\tget staffLayout(): staffLayout.StaffLayout {\n\t\treturn staffLayout.parseCode(this.staffLayoutCode);\n\t}\n\n\tget measureLayoutCode(): string {\n\t\treturn this.spartito?.measureLayoutCode;\n\t}\n\n\tget maxStavesCount(): number {\n\t\treturn Math.max(...this.systems.map((system) => system.staves.length), 0);\n\t}\n\n\tget sidBlackList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidBlackList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget sidWhiteList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidWhiteList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget semanticHash(): string {\n\t\tconst ids = [].concat(\n\t\t\t...this.systems.map((system) =>\n\t\t\t\t[].concat(...system.staves.map((staff) => (staff.semantics ? system.qualifiedSemantics(staff.semantics).map((s) => s.id) : [])))\n\t\t\t)\n\t\t);\n\t\treturn sha1(ids.join(''));\n\t}\n\n\teventSystemsToTermStaves(eventSystems: EventSystem[], logger: Logger = new DummyLogger()): TermStaff[] {\n\t\t// [staff]\n\t\tconst termStaves: TermStaff[] = Array(this.maxStavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, staffIndex): TermStaff => {\n\t\t\t\treturn {\n\t\t\t\t\t// [system, measure]\n\t\t\t\t\trows: eventSystems.map((sys, i) =>\n\t\t\t\t\t\tsys.columns.map((column, ii): TermMeasure => {\n\t\t\t\t\t\t\tconst measure = column.rows[staffIndex];\n\t\t\t\t\t\t\tconsole.assert(measure, '[eventSystemsToTermStaves] measure is null:', staffIndex, column.rows);\n\n\t\t\t\t\t\t\tconst contexts = measure.contexts;\n\n\t\t\t\t\t\t\t// prepend octave shift 0 at begin of every system\n\t\t\t\t\t\t\tif (ii === 0) {\n\t\t\t\t\t\t\t\tif (!contexts.some((term) => term.type === ContextType.OctaveShift)) {\n\t\t\t\t\t\t\t\t\tcontexts.unshift(\n\t\t\t\t\t\t\t\t\t\tnew ContextedTerm({\n\t\t\t\t\t\t\t\t\t\t\tstaff: staffIndex,\n\t\t\t\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\t\t\t\t\ttokenType: TokenType.OctaveShift0,\n\t\t\t\t\t\t\t\t\t\t\ttick: 0,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst terms = [...(measure.events || []), ...contexts].sort((t1, t2) => t1.x - t2.x);\n\n\t\t\t\t\t\t\tconst pageBreak = staffIndex === 0 && ii === sys.columns.length - 1 && this.breakSystemIndices.includes(i);\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tterms,\n\t\t\t\t\t\t\t\t//xToTick: column.xToTick,\n\t\t\t\t\t\t\t\tduration: column.duration,\n\t\t\t\t\t\t\t\tpageBreak,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t});\n\t\ttermStaves.forEach((staff) => processStaffContext(staff, logger));\n\n\t\treturn termStaves;\n\t}\n\n\tresetPageLayout(parameters: { unitSize?: number; pageSize?: Size }) {\n\t\tconst { unitSize = this.unitSize, pageSize = this.pageSize } = parameters;\n\n\t\tconst newCenter = {\n\t\t\tx: (pageSize.width * 0.5) / unitSize,\n\t\t\ty: (pageSize.height * 0.5) / unitSize,\n\t\t};\n\n\t\tthis.pages.forEach((page) => {\n\t\t\tconst offsetX = newCenter.x - page.width / 2;\n\t\t\tconst offsetY = newCenter.y - page.height / 2;\n\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tsystem.left += offsetX;\n\t\t\t\tsystem.top += offsetY;\n\t\t\t});\n\n\t\t\tif (page.semantics) {\n\t\t\t\tpage.semantics.forEach((point) => {\n\t\t\t\t\tpoint.x += offsetX;\n\t\t\t\t\tpoint.y += offsetY;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tpage.width = pageSize.width / unitSize;\n\t\t\tpage.height = pageSize.height / unitSize;\n\n\t\t\tpage.assemble({ textAnnotations: this.textAnnotations });\n\t\t});\n\n\t\tthis.unitSize = unitSize;\n\t\tthis.pageSize = pageSize;\n\t}\n\n\tgetMeasure(measureIndex: number): {\n\t\tmeasureIndex: number;\n\t\tsystem: System;\n\t\tlocalIndex: number;\n\t\tleft: number;\n\t\tright: number;\n\t\tmeasures: Measure[];\n\t} {\n\t\tlet index = measureIndex;\n\t\tfor (const system of this.systems) {\n\t\t\tif (index < system.measureCount) {\n\t\t\t\tconst staff = system.staves[0];\n\t\t\t\tconst measure = staff.measures[index];\n\t\t\t\tconsole.assert(measure, 'measure is null:', system.measureCount, index, staff.measures);\n\t\t\t\tconst measures = system.getStaffArray(this.maxStavesCount).map((staff) => staff && staff.measures[index]);\n\n\t\t\t\treturn {\n\t\t\t\t\tmeasureIndex,\n\t\t\t\t\tsystem,\n\t\t\t\t\tlocalIndex: index,\n\t\t\t\t\tleft: measure.left,\n\t\t\t\t\tright: measure.right,\n\t\t\t\t\tmeasures,\n\t\t\t\t};\n\t\t\t}\n\t\t\tindex -= system.measureCount;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetRawCluster(measureIndex: number, threshold: number, { timeSignature }: Partial = {}): SemanticCluster {\n\t\tconst position = this.getMeasure(measureIndex);\n\t\tif (!position) return null;\n\n\t\tconst { system, left, right } = position;\n\t\t//console.log(\"measure:\", system, left, right);\n\n\t\tconst elements: SemanticElement[] = [BOS_ELEMENT];\n\n\t\tif (timeSignature) elements.push(...fractionToElems(timeSignature));\n\n\t\tconst systemY0 = system.staves[0].top + system.staves[0].staffY - 2;\n\n\t\tsystem.staves.forEach((staff) => {\n\t\t\tlet points = system.qualifiedSemantics(staff.semantics, threshold).filter((point) => point.x > left && point.x < right);\n\t\t\tpoints = solveOverlapping(points);\n\n\t\t\t// exlude tempo noteheads\n\t\t\tconst tempoNhs = points.filter((point) => point.semantic === SemanticType.TempoNotehead);\n\t\t\ttempoNhs.forEach((tempoNh) => {\n\t\t\t\tconst index = points.findIndex((point) => /^Notehead/.test(point.semantic) && distance2D(tempoNh, point) < 0.3);\n\t\t\t\tif (index >= 0) points.splice(index, 1);\n\t\t\t});\n\n\t\t\tconst y0 = staff.top + staff.staffY - systemY0;\n\n\t\t\tpoints.forEach((point) => {\n\t\t\t\tconst type = SemanticElementType[point.semantic];\n\t\t\t\tif (type) {\n\t\t\t\t\tlet y1 = point.y;\n\t\t\t\t\tlet y2 = point.y;\n\t\t\t\t\tif (type === SemanticElementType.vline_Stem) {\n\t\t\t\t\t\ty1 = point.extension.y1;\n\t\t\t\t\t\ty2 = point.extension.y2;\n\t\t\t\t\t}\n\n\t\t\t\t\telements.push({\n\t\t\t\t\t\tid: point.id,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tstaff: staff.index,\n\t\t\t\t\t\tx: point.x - left,\n\t\t\t\t\t\ty1: y1 + y0,\n\t\t\t\t\t\ty2: y2 + y0,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn new SemanticCluster({\n\t\t\tindex: measureIndex,\n\t\t\telements,\n\t\t});\n\t}\n\n\tgetRawClusters(threshold: number = 1): SemanticCluster[] {\n\t\t//const times = this.getMeasuresTime();\n\n\t\treturn Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, mi) => this.getRawCluster(mi, threshold /*, times[mi]*/));\n\t}\n\n\tmakeSpartito(logger: Logger = new DummyLogger()): Spartito {\n\t\tlet eventSystems: EventSystem[] = this.systems.map((system) => system.getEvents(this.maxStavesCount));\n\n\t\t/*if (this.topology) {\n\t\t\tconst clusters = this.topology.clusters;\n\n\t\t\t// [measure, staff, event]\n\t\t\tconst eventsColumns: ChordColumn[][][] = clusters\n\t\t\t\t.filter((cluster) => cluster.index < this.measureCount)\n\t\t\t\t.reduce((columns, cluster) => {\n\t\t\t\t\tconst { system, measures } = this.getMeasure(cluster.index);\n\t\t\t\t\tconst events = cluster.getEvents();\n\n\t\t\t\t\tconst systemY0 = system.staves[0].top + system.staves[0].staffY - 2;\n\t\t\t\t\tconst x0 = measures.filter(Boolean)[0].left;\n\n\t\t\t\t\tconst staves = system.getStaffArray(this.maxStavesCount);\n\n\t\t\t\t\t// translate by staff & measure relative offset\n\t\t\t\t\tevents.forEach((event) => {\n\t\t\t\t\t\tconst staff = staves[event.staff];\n\t\t\t\t\t\tconst y0 = staff.top + staff.staffY - systemY0;\n\t\t\t\t\t\tevent.ys = event.ys.map((y) => roundNumber(y - y0, 0.5));\n\n\t\t\t\t\t\tevent.left += x0;\n\t\t\t\t\t\tevent.right += x0;\n\t\t\t\t\t});\n\n\t\t\t\t\tconst column = measures.map((measure, staffIndex) => {\n\t\t\t\t\t\tif (!measure) return [];\n\n\t\t\t\t\t\t//console.log(\"m:\", mi, \"s:\", staffIndex);\n\t\t\t\t\t\tconst localEvents = events.filter((event) => event.staff === staffIndex);\n\t\t\t\t\t\t//measure.assignModifiersOnEvents(localEvents);\n\t\t\t\t\t\tmeasure.assignAccessoriesOnEvents(localEvents);\n\n\t\t\t\t\t\treturn localEvents;\n\t\t\t\t\t});\n\n\t\t\t\t\tcolumns[cluster.index] = column;\n\n\t\t\t\t\treturn columns;\n\t\t\t\t}, []);\n\n\t\t\tconst breakSystemIndices = this.breakSystemIndices;\n\n\t\t\tconst basicEventSystems = eventSystems;\n\t\t\teventSystems = [];\n\n\t\t\tlet measures = 0;\n\t\t\tfor (const system of this.systems) {\n\t\t\t\tconst esys = system.getEventsFunctional(this.maxStavesCount, (si, mi) => eventsColumns[measures + mi] && eventsColumns[measures + mi][si], [], {\n\t\t\t\t\tuseXMap: false,\n\t\t\t\t});\n\n\t\t\t\tconst basicSys = basicEventSystems[system.index];\n\t\t\t\t//onst nullN = esys.columns.filter(c => !c).length;\n\t\t\t\t//if (nullN)\n\t\t\t\t//\tconsole.log(\"null:\", nullN, esys.columns.length);\n\t\t\t\tesys.columns = esys.columns.map((column, i) => (column ? column : basicSys.columns[i]));\n\n\t\t\t\tconst sysIndex = this.systems.indexOf(system);\n\t\t\t\tconst pageBreak = breakSystemIndices.includes(sysIndex);\n\t\t\t\tconst lastColumn = esys.columns[esys.columns.length - 1];\n\t\t\t\tif (lastColumn) {\n\t\t\t\t\tlastColumn.break = true;\n\t\t\t\t\tlastColumn.pageBreak = pageBreak;\n\t\t\t\t}\n\n\t\t\t\teventSystems.push(esys);\n\t\t\t\tmeasures += system.measureCount;\n\t\t\t}\n\t\t}*/\n\n\t\tconst staves = this.eventSystemsToTermStaves(eventSystems, logger);\n\n\t\t// assign staff basics for columns\n\t\teventSystems.forEach((sys, ri) => {\n\t\t\tsys.columns.forEach((column, mi) => {\n\t\t\t\tcolumn.basics = staves.map((staff) => {\n\t\t\t\t\tconst { timeSignature, timeSigNumeric, keySignature, doubtfulTimesig } = staff.rows[ri][mi];\n\n\t\t\t\t\treturn { timeSignature, timeSigNumeric, keySignature, doubtfulTimesig };\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tconst clusters = null; //this.topology && this.topology.clusters;\n\n\t\tconst measures = [].concat(\n\t\t\t...eventSystems.map((esys) =>\n\t\t\t\tesys.columns.map((column) => {\n\t\t\t\t\tconst measureIndex = column.measureIndex;\n\t\t\t\t\tconst { system, localIndex, left, right } = this.getMeasure(measureIndex);\n\n\t\t\t\t\tconst cluster = clusters && clusters.find((cluster) => cluster.index === measureIndex);\n\n\t\t\t\t\tconst staffYsFull = [];\n\t\t\t\t\tsystem.staves.forEach((staff) => (staffYsFull[staff.index] = staff.top + staff.staffY));\n\n\t\t\t\t\tconst patch = this.patches && this.patches.find((patch) => patch.measureIndex === measureIndex);\n\t\t\t\t\tconst events = patch ? patch.events : SpartitoMeasure.reorderEvents([].concat(...column.rows.map((row) => row.events)), staffYsFull);\n\n\t\t\t\t\tconst barTypes = Object.fromEntries(Object.entries(column.barTypes).map(([k, v]) => [k, v / system.staves.length]));\n\t\t\t\t\tconst indent = localIndex === 0 && system.indent;\n\n\t\t\t\t\treturn new SpartitoMeasure({\n\t\t\t\t\t\tmeasureIndex,\n\t\t\t\t\t\tstaffMask: esys.staffMask,\n\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\tsystemIndex: system.index,\n\t\t\t\t\t\t\tlocalIndex,\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\tright,\n\t\t\t\t\t\t\tstaffYs: system.staves.map((staff) => staff.top + staff.staffY),\n\t\t\t\t\t\t\tstaffYsFull,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t//startX: column.startX,\n\t\t\t\t\t\t//width: column.width,\n\t\t\t\t\t\tduration: patch ? patch.duration : column.duration,\n\t\t\t\t\t\tevents,\n\t\t\t\t\t\tcontexts: column.rows.map((row) => row.contexts),\n\t\t\t\t\t\tmarks: column.marks,\n\t\t\t\t\t\tbreak: column.break,\n\t\t\t\t\t\tpageBreak: column.pageBreak,\n\t\t\t\t\t\tvoltaBegin: column.voltaBegin,\n\t\t\t\t\t\tvoltaEnd: column.voltaEnd,\n\t\t\t\t\t\talternative: column.alternative,\n\t\t\t\t\t\tbarTypes,\n\t\t\t\t\t\tindent,\n\t\t\t\t\t\tbasics: patch ? patch.basics : column.basics,\n\t\t\t\t\t\tmatrixH: cluster && cluster.matrixH,\n\t\t\t\t\t\tmatrixV: cluster && cluster.matrixV,\n\t\t\t\t\t\tvoices: patch ? patch.voices : null,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\n\t\tconst staffLayout = this.staffLayout;\n\t\tconst staffGroups = staffLayout.standaloneGroups.map((ids) => ids.map((id) => staffLayout.staffIds.indexOf(id)));\n\n\t\tthis.spartito = new Spartito({\n\t\t\tstavesCount: this.maxStavesCount,\n\t\t\tstaffGroups,\n\t\t\tmeasures,\n\t\t});\n\n\t\treturn this.spartito;\n\t}\n\n\tmakeMusicSheet(): MusicSheet {\n\t\tconst spartito = this.spartito || this.makeSpartito();\n\n\t\tif (!spartito.regulated) console.warn('[makeMusicSheet]\tspartito not regulated.');\n\n\t\tconst voiceStaves = spartito.makeVoiceStaves();\n\n\t\tconst { title, pageSize, unitSize, staffLayout, paperOptions, headers, instrumentDict } = this;\n\t\tconst measureLayout = this.getMeasureLayout();\n\n\t\treturn {\n\t\t\ttitle,\n\t\t\tpageSize,\n\t\t\tunitSize,\n\t\t\tmeasureLayout,\n\t\t\tstaffLayout,\n\t\t\tpaperOptions,\n\t\t\theaders,\n\t\t\tvoiceStaves,\n\t\t\tinstrumentDict,\n\t\t};\n\t}\n\n\tfindPoint(sid: string): PointPosition {\n\t\tfor (const system of this.systems) {\n\t\t\tfor (let si = 0; si < system.staves.length; ++si) {\n\t\t\t\tconst point = system.staves[si].semantics.find((point) => point.id === sid);\n\t\t\t\tif (point) {\n\t\t\t\t\tconst pageIndex = this.pages.findIndex((page) => page.systems.includes(system));\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpoint,\n\t\t\t\t\t\tpageIndex,\n\t\t\t\t\t\tsystemIndex: system.index,\n\t\t\t\t\t\tstaffIndex: si,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetMeasureSemantics(systemIndex: number, localIndex: number): SemanticPointInMeasure[] {\n\t\tconst system = this.systems[systemIndex];\n\t\tif (!system) return null;\n\n\t\tconst left = localIndex ? system.measureBars[localIndex - 1] : 0;\n\t\tconst right = system.measureBars[localIndex] || system.width;\n\n\t\treturn system.staves\n\t\t\t.map((staff, si) => {\n\t\t\t\tconst staffY = staff.top + staff.staffY;\n\t\t\t\treturn staff.semantics\n\t\t\t\t\t.filter((point) => point.x >= left && point.x < right)\n\t\t\t\t\t.map((point) => {\n\t\t\t\t\t\tconst [y1, y2] = Number.isFinite(point.extension?.y1) ? [point.extension.y1, point.extension.y2] : [point.y, point.y];\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...point,\n\t\t\t\t\t\t\tstaff: si,\n\t\t\t\t\t\t\tsy1: y1 + staffY,\n\t\t\t\t\t\t\tsy2: y2 + staffY,\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t.flat(1);\n\t}\n\n\tmakeTimewiseGraph({ store = false }: { store?: boolean } = {}): TimewiseGraph {\n\t\tif (!this.spartito) return null;\n\n\t\tconst measures = this.spartito.measures\n\t\t\t.filter((measure) => measure.events.length > 0)\n\t\t\t.map((measure) => {\n\t\t\t\tconst points = this.getMeasureSemantics(measure.position.systemIndex, measure.position.localIndex);\n\n\t\t\t\tconst graph = {\n\t\t\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\t\t\tleft: measure.position.left,\n\t\t\t\t\tright: measure.position.right,\n\t\t\t\t\tpoints,\n\t\t\t\t};\n\n\t\t\t\tif (store) measure.graph = graph;\n\n\t\t\t\treturn graph;\n\t\t\t});\n\n\t\treturn { measures };\n\t}\n\n\tgetTokenMap(): Map {\n\t\tconst map = new Map();\n\n\t\tthis.systems.forEach((system) =>\n\t\t\tsystem.staves.forEach((staff) => staff.measures.forEach((measure) => measure.tokens.forEach((token) => map.set(token.id, token))))\n\t\t);\n\n\t\treturn map;\n\t}\n\n\tassemble(confidenceThreshold: number = 1, logger: Logger = new DummyLogger()) {\n\t\tconst ids = new Map();\n\n\t\tconst append = (systemIndex, staffIndex, point) => {\n\t\t\tconst id = hashSemanticPoint(systemIndex, staffIndex, point);\n\t\t\tlogger.assert(!ids.has(id), 'semantic point hash conflicted:', id, point, ids.get(id));\n\n\t\t\tids.set(id, point);\n\t\t};\n\n\t\tthis.pages.forEach((page, index) => (page.index = index));\n\n\t\tlet measureIndex = 0;\n\t\tthis.systems.forEach((system, systemIndex) => {\n\t\t\tsystem.index = systemIndex;\n\t\t\tsystem.headMeasureIndex = measureIndex;\n\t\t\tsystem.prev = this.systems[systemIndex - 1] || null;\n\t\t\tsystem.next = this.systems[systemIndex + 1] || null;\n\n\t\t\tif (system.semantics && system.semantics.length) system.semantics.forEach((point) => append(systemIndex, null, point));\n\n\t\t\tsystem.assemble(confidenceThreshold, logger);\n\t\t\tmeasureIndex += system.measureCount;\n\t\t});\n\n\t\tthis.pages.forEach((page, i) => {\n\t\t\tpage.systems.forEach((system) => (system.pageIndex = i));\n\t\t\tpage.assemble({ textAnnotations: this.textAnnotations }, logger);\n\t\t});\n\t}\n\n\tassembleSystem(system: System, confidenceThreshold: number = 1) {\n\t\tthis.systems.forEach((system, si) => (system.index = si));\n\t\tconst systemIndex = system.index;\n\n\t\tif (system.semantics && system.semantics.length) {\n\t\t\tsystem.semantics.forEach((point) => hashSemanticPoint(systemIndex, null, point));\n\t\t\tsystem.assemble(confidenceThreshold);\n\t\t}\n\t}\n\n\tmarkVoices(staves: VoicesStaff[]): void {\n\t\tconst tokenMap = this.getTokenMap();\n\t\tfor (const token of tokenMap.values()) token.voice = 0;\n\n\t\tconst vis = []\n\t\t\t.concat(...staves.map((staff, s) => (staff.voices || []).map((_, v) => [s, v])))\n\t\t\t.sort(([s1, v1], [s2, v2]) => v1 - v2 || s1 - s2)\n\t\t\t.map(([s, v]) => `${s}|${v}`);\n\n\t\tstaves.forEach((staff, si) =>\n\t\t\t(staff.voices || []).forEach((voice, vi) =>\n\t\t\t\tvoice.measures.forEach((measure) => {\n\t\t\t\t\tconst voiceIndex = vis.indexOf(`${si}|${vi}`);\n\n\t\t\t\t\tconst events = Object.values(measure.tickMap).filter((event) => event instanceof EventTerm) as EventTerm[];\n\t\t\t\t\tevents.forEach((event) => {\n\t\t\t\t\t\tconst notes = event.noteIds ? event.noteIds.map((id) => tokenMap.get(id)).filter(Boolean) : [];\n\t\t\t\t\t\tconst accessories = event.accessories ? event.accessories.map((acc) => tokenMap.get(acc.id)).filter(Boolean) : [];\n\t\t\t\t\t\t//console.log(\"notes:\", si, vi, mi, event.noteIds, notes, accessories);\n\n\t\t\t\t\t\t[...notes, ...accessories].forEach((token) => (token.voice |= 1 << voiceIndex));\n\n\t\t\t\t\t\tif (event.timeWarp) notes.forEach((note) => (note.timeWarped = true));\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\t}\n\n\tasync replaceImageKeys(proc: (x: string | Buffer) => Promise): Promise {\n\t\tawait Promise.all([\n\t\t\t...(this.pages.map(async (page) => {\n\t\t\t\tif (page.source) page.source.url = await proc(page.source.url);\n\t\t\t}) as Promise[]),\n\t\t\t...this.systems.map((system) =>\n\t\t\t\tPromise.all([\n\t\t\t\t\tproc(system.backgroundImage).then((key) => (system.backgroundImage = key)),\n\t\t\t\t\t...(system.staves.map(async (staff) => {\n\t\t\t\t\t\tstaff.backgroundImage = await proc(staff.backgroundImage);\n\t\t\t\t\t\tstaff.maskImage = await proc(staff.maskImage);\n\t\t\t\t\t}) as Promise[]),\n\t\t\t\t])\n\t\t\t),\n\t\t]);\n\t}\n\n\tinferenceStaffLayout(): void {\n\t\t// inference the complete layout\n\t\tconst staffTotal = Math.max(...this.systems.map((system) => system.staves.length), 0);\n\t\tthis.staffLayoutCode = Array(staffTotal).fill('').join(',');\n\n\t\tconst completeSystems = this.systems.filter((system) => system.staves.length === staffTotal && system.bracketsAppearance);\n\t\tif (!completeSystems.length) return; // no enough evidence\n\n\t\tconst candidateCodes = completeSystems\n\t\t\t.map((system) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst layout = staffLayout.parseCode(system.bracketsAppearance);\n\t\t\t\t\tif (layout.staffIds.length !== system.staves.length) return null;\n\n\t\t\t\t\treturn system.bracketsAppearance;\n\t\t\t\t} catch (_) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t\tif (!candidateCodes.length) return; // no valid layout\n\n\t\tconst codeCounting = candidateCodes.reduce((acc, code) => {\n\t\t\tconst count = acc[code] || 0;\n\t\t\tacc[code] = count + 1;\n\t\t\treturn acc;\n\t\t}, {} as { [code: string]: number });\n\t\tconst maxCount = Math.max(...Object.values(codeCounting));\n\t\tconst code = Object.entries(codeCounting).find(([_, count]) => count === maxCount)[0];\n\n\t\t// added connection lines between braces {-}\n\t\tconst connectedCode = code.replace(/\\{,*\\}/g, (match) => match.replace(/,/g, '-'));\n\t\tconst layout = staffLayout.parseCode(connectedCode);\n\n\t\tthis.staffLayoutCode = connectedCode;\n\t\t//console.log(\"complete code:\", code);\n\n\t\t// inference systems' mask\n\t\tlet lastSys: System = null;\n\t\tfor (const system of this.systems) {\n\t\t\tif (lastSys && system.staves.length === lastSys.staves.length && system.bracketsAppearance === lastSys.bracketsAppearance) {\n\t\t\t\tsystem.staffMaskChanged = null;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (system.staves.length < staffTotal && system.bracketsAppearance) {\n\t\t\t\t// validate the system brackets code\n\t\t\t\ttry {\n\t\t\t\t\tif (!staffLayout.parseCode(system.bracketsAppearance)) continue;\n\t\t\t\t} catch (_) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst search = (bits: (0 | 1)[]): number => {\n\t\t\t\t\tif (bits.length > layout.staffIds.length) return null;\n\n\t\t\t\t\tif (bits.reduce((sum, bit) => sum + bit, 0) === system.staves.length) return bitsToMask(bits);\n\n\t\t\t\t\tfor (const bit of [1, 0]) {\n\t\t\t\t\t\tconst bb = [...bits, bit] as (0 | 1)[];\n\t\t\t\t\t\tconst code1 = layout.partialMaskCode(bb);\n\t\t\t\t\t\tif (code1 === system.bracketsAppearance) return bitsToMask(bb);\n\t\t\t\t\t\telse if (system.bracketsAppearance.startsWith(code1)) {\n\t\t\t\t\t\t\tconst result = search(bb);\n\t\t\t\t\t\t\tif (result) return result;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t\tconst mask = search([]);\n\t\t\t\t//console.log(\"mask:\", system.bracketsAppearance, mask.toString(2));\n\n\t\t\t\tsystem.staffMaskChanged = !lastSys || mask !== lastSys.staffMask ? mask : null;\n\t\t\t}\n\n\t\t\tlastSys = system;\n\t\t}\n\t}\n\n\tassignBackgroundForMeasure(measure: SpartitoMeasure): void {\n\t\tmeasure.backgroundImages = [];\n\n\t\tconst system = this.systems[measure.position.systemIndex];\n\t\tif (system.backgroundImage) {\n\t\t\tmeasure.backgroundImages.push({\n\t\t\t\turl: system.backgroundImage,\n\t\t\t\tposition: system.imagePosition,\n\t\t\t\toriginal: true,\n\t\t\t});\n\t\t}\n\n\t\tsystem.staves.forEach((staff) => {\n\t\t\tif (!system.backgroundImage && staff.backgroundImage)\n\t\t\t\tmeasure.backgroundImages.push({\n\t\t\t\t\turl: staff.backgroundImage.toString(),\n\t\t\t\t\tposition: {\n\t\t\t\t\t\t...staff.imagePosition,\n\t\t\t\t\t\ty: staff.imagePosition.y + staff.top,\n\t\t\t\t\t},\n\t\t\t\t\toriginal: true,\n\t\t\t\t});\n\n\t\t\tif (staff.maskImage) {\n\t\t\t\tmeasure.backgroundImages.push({\n\t\t\t\t\turl: staff.maskImage.toString(),\n\t\t\t\t\tposition: {\n\t\t\t\t\t\t...staff.imagePosition,\n\t\t\t\t\t\ty: staff.imagePosition.y + staff.top,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tblackoutFakeNotes(scope: 'patched' | 'perfect' | 'all' = 'patched'): string[] {\n\t\tif (!this.spartito) return;\n\n\t\tlet inScope = (_) => true;\n\t\tswitch (scope) {\n\t\t\tcase 'patched':\n\t\t\t\tinScope = (measure) => measure.patched;\n\t\t\t\tbreak;\n\t\t\tcase 'perfect':\n\t\t\t\tinScope = (measure) => measure.patched || (measure.regulated && evaluateMeasure(measure).perfect);\n\t\t\t\tbreak;\n\t\t}\n\t\tconst measures = this.spartito.measures.filter(inScope);\n\n\t\tconst fakeIds = measures.reduce((ids, measure) => {\n\t\t\tif (!measure.regulated) return;\n\n\t\t\tconst voicedIds = measure.voices.flat(1);\n\t\t\tconst fakeChords = measure.events.filter((event) => !event.rest && !event.grace && !voicedIds.includes(event.id));\n\n\t\t\tfakeChords.forEach((event) => event.noteIds && ids.push(...event.noteIds));\n\n\t\t\treturn ids;\n\t\t}, [] as string[]);\n\t\tconst fakeIdSet = new Set(fakeIds);\n\n\t\tthis.systems.forEach((system) =>\n\t\t\tsystem.staves.forEach((staff) => {\n\t\t\t\tconst blackIds = staff.semantics.filter((point) => fakeIdSet.has(point.id)).map((point) => point.id);\n\t\t\t\tsystem.sidBlackList.push(...blackIds);\n\t\t\t})\n\t\t);\n\n\t\treturn fakeIds;\n\t}\n\n\tgetMeasureLayout(): measureLayout.MeasureLayout {\n\t\tconst code = this.spartito && this.spartito.measureLayoutCode;\n\t\tif (code) {\n\t\t\ttry {\n\t\t\t\treturn measureLayout.parseCode(code);\n\t\t\t} catch (err) {\n\t\t\t\tconsole.debug('invalid measure layout code:', err);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t*splitToSingleScoresGen(): Generator {\n\t\tthis.assemble();\n\t\tconst startSysIndices = this.systems.filter((system) => system.index > 0 && system.indent && system.timeSignatureOnHead).map((system) => system.index);\n\n\t\tif (!startSysIndices.length) {\n\t\t\tyield this.deepCopy();\n\t\t\treturn;\n\t\t}\n\n\t\tconst templateScore = new Score({ ...this, pages: [], topology: undefined, spartito: undefined, patches: undefined });\n\n\t\t// clear temporary objects before deep dopy\n\t\tthis.pages.forEach((page) => {\n\t\t\tdelete page.tokens;\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tdelete system.tokens;\n\t\t\t\tsystem.staves.forEach((staff) => {\n\t\t\t\t\tstaff.measures = [];\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tlet startSysIndex = 0;\n\t\tfor (const endSysIndex of [...startSysIndices, this.systems.length]) {\n\t\t\tconst sysInRange = (system) => system.index >= startSysIndex && system.index < endSysIndex;\n\t\t\tconst pages = this.pages\n\t\t\t\t.filter((page) => page.systems.some(sysInRange))\n\t\t\t\t.map((page) => {\n\t\t\t\t\tconst { systems, ...fields } = page;\n\t\t\t\t\treturn new Page({ ...fields, systems: systems.filter(sysInRange).map((system) => new System({ ...system })) });\n\t\t\t\t});\n\n\t\t\tconst newScore = templateScore.deepCopy();\n\t\t\tnewScore.headers.SubScoreSystem = `${startSysIndex}-${endSysIndex - 1}`;\n\t\t\tnewScore.headers.SubScorePage = `${pages[0].index}-${pages[pages.length - 1].index}`;\n\n\t\t\t//newScore.pages = pages.map((page) => page.deepCopy());\n\t\t\tnewScore.pages = pages;\n\t\t\tnewScore.assemble();\n\t\t\tnewScore.inferenceStaffLayout();\n\n\t\t\tstartSysIndex = endSysIndex;\n\n\t\t\tyield newScore;\n\t\t}\n\t}\n\n\tsplitToSingleScores(): Score[] {\n\t\treturn [...this.splitToSingleScoresGen()];\n\t}\n}\n\nexport { PaperOptions, Score, Page, System, Staff, Measure, MeasureValidation };\nexport type { SemanticPointInMeasure };\n","import type { MeasureLayout } from './measureLayout';\nimport * as measureLayout from './measureLayout';\nimport grammar from './grammar.jison';\nimport { recoverJSON } from '../starry/aux_/typedJSON';\n\nconst parseCode = (code: string): MeasureLayout => {\n\tconst raw = grammar.parse(code);\n\n\tif (raw?.data) return recoverJSON(raw.data, measureLayout);\n\n\treturn null;\n};\n\nexport { parseCode };\n","import { MIDI } from '@k-l-lambda/music-widgets';\n\nimport { Fraction } from './interfaces';\nimport { noteToPitch } from './utils';\nimport { EventTerm, RestType, GraceType, StemBeam, ArpeggioStyle, TermPitch, TremoloLink } from './term';\nimport { SpartitoMeasure } from './spartitoMeasure';\n\n// NOTE: 'JSONEditor.onEditable' determine whether a field is editable, here 'readonly' modifier has no effect to UI\n\ninterface EventUIAgent {\n\treadonly id: number;\n\treadonly duration: number;\n\n\t//ys: number[];\n\tpitches: TermPitch[];\n\trest: RestType;\n\tdivision: number;\n\tdots: number;\n\tstemDirection: string;\n\ttying: boolean;\n\ttied: boolean;\n\tgrace: boolean; //\n\tbeam: StemBeam;\n\ttimeWarp: string; //\n\ttremolo: number;\n\ttremoloLink: TremoloLink;\n\tglissando: boolean;\n\tarpeggioStyle: ArpeggioStyle;\n\ttick: number;\n}\n\ninterface MeasureUIAgent {\n\treadonly measureIndex: number;\n\ttimeSignature: Fraction;\n\tdoubtfulTimesig: boolean;\n\tkeySignature: number;\n\t//readonly events: EventUIAgent[];\n\tduration: number;\n\treadonly voices: number[][];\n}\n\nclass EditableEvent extends EventTerm {\n\tvoice: number;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\t}\n\n\tget agent(): EventUIAgent {\n\t\treturn new Proxy(this as any, {\n\t\t\tget(target, key): any {\n\t\t\t\tconst self = target as any as EditableEvent;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'id':\n\t\t\t\t\tcase 'tick':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\tcase 'rest':\n\t\t\t\t\tcase 'division':\n\t\t\t\t\tcase 'dots':\n\t\t\t\t\tcase 'stemDirection':\n\t\t\t\t\tcase 'beam':\n\t\t\t\t\tcase 'tremolo':\n\t\t\t\t\tcase 'tremoloLink':\n\t\t\t\t\tcase 'arpeggioStyle': {\n\t\t\t\t\t\tconst value = self[key];\n\t\t\t\t\t\treturn value === undefined ? null : value;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'tying':\n\t\t\t\t\tcase 'tied':\n\t\t\t\t\tcase 'glissando': {\n\t\t\t\t\t\tconst value = self[key];\n\t\t\t\t\t\treturn value === undefined ? false : value;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'grace':\n\t\t\t\t\t\treturn !!self.grace;\n\n\t\t\t\t\tcase 'timeWarp':\n\t\t\t\t\t\treturn self.timeWarp ? `${self.timeWarp.numerator}/${self.timeWarp.denominator}` : null;\n\n\t\t\t\t\tcase 'pitches':\n\t\t\t\t\t\treturn self.pitches;\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t},\n\n\t\t\tset: (target, key, value): boolean => {\n\t\t\t\tconst self = target as any as EditableEvent;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'tick':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\tcase 'rest':\n\t\t\t\t\tcase 'division':\n\t\t\t\t\tcase 'dots':\n\t\t\t\t\tcase 'stemDirection':\n\t\t\t\t\tcase 'tying':\n\t\t\t\t\tcase 'tied':\n\t\t\t\t\tcase 'beam':\n\t\t\t\t\tcase 'tremolo':\n\t\t\t\t\tcase 'tremoloLink':\n\t\t\t\t\tcase 'glissando':\n\t\t\t\t\tcase 'arpeggioStyle':\n\t\t\t\t\t\t(self as any)[key] = value;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'grace':\n\t\t\t\t\t\tself.grace = value ? GraceType.Grace : null;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'timeWarp':\n\t\t\t\t\t\tself.timeWarp = null;\n\t\t\t\t\t\tif (value && typeof value === 'string') {\n\t\t\t\t\t\t\tconst captures = value.match(/^(\\d+)\\/(\\d+)/);\n\t\t\t\t\t\t\tif (captures) {\n\t\t\t\t\t\t\t\tself.timeWarp = {\n\t\t\t\t\t\t\t\t\tnumerator: parseInt(captures[1]),\n\t\t\t\t\t\t\t\t\tdenominator: parseInt(captures[2]),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'id':\n\t\t\t\t\tcase 'pitches':\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\townKeys: (): string[] => [\n\t\t\t\t'id',\n\t\t\t\t'duration',\n\t\t\t\t'rest',\n\t\t\t\t'division',\n\t\t\t\t'dots',\n\t\t\t\t'stemDirection',\n\t\t\t\t'tying',\n\t\t\t\t'tied',\n\t\t\t\t'beam',\n\t\t\t\t'timeWarp',\n\t\t\t\t'tremolo',\n\t\t\t\t'tremoloLink',\n\t\t\t\t'glissando',\n\t\t\t\t'arpeggioStyle',\n\t\t\t\t'tick',\n\t\t\t\t'grace',\n\t\t\t\t'pitches',\n\t\t\t],\n\n\t\t\tgetOwnPropertyDescriptor() {\n\t\t\t\treturn { enumerable: true, configurable: true };\n\t\t\t},\n\t\t});\n\t}\n}\n\nclass EditableMeasure extends SpartitoMeasure {\n\tstatic className = 'EditableMeasure';\n\tstatic blackKeys = [];\n\n\tevents: EditableEvent[] = null;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\n\t\tthis.events = data.events;\n\t\tif (this.events?.some((event) => !(event instanceof EditableEvent))) this.events = this.events.map((event) => new EditableEvent(event));\n\n\t\tif (this.voices) this.syncVoiceToEvents();\n\t}\n\n\tsyncVoiceToEvents(): void {\n\t\tthis.events.forEach((event) => (event.voice = -1));\n\t\tthis.voices.forEach((voice, voiceIndex) => {\n\t\t\tvoice.forEach((id) => {\n\t\t\t\tconst event = this.events.find((event) => event.id === id);\n\t\t\t\tif (event) event.voice = voiceIndex;\n\t\t\t\telse console.warn('no event with id:', id, this.events.length);\n\t\t\t});\n\t\t});\n\t}\n\n\tsyncVoiceFromEvents(): void {\n\t\tconst voices: EditableEvent[][] = [];\n\t\tthis.events.forEach((event) => {\n\t\t\tif (event?.voice >= 0) {\n\t\t\t\tvoices[event.voice] = voices[event.voice] || [];\n\t\t\t\tvoices[event.voice].push(event);\n\t\t\t}\n\t\t});\n\n\t\tvoices.forEach((voice) => voice.sort((e1, e2) => e1.tick - e2.tick));\n\n\t\tthis.voices = voices.map((voice) => voice.map((event) => event.id));\n\t}\n\n\tget agent(): MeasureUIAgent {\n\t\treturn new Proxy(this as any, {\n\t\t\tget: (target, key): any => {\n\t\t\t\tconst self = target as any as EditableMeasure;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'measureIndex':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\t\treturn self[key];\n\n\t\t\t\t\tcase 'voices':\n\t\t\t\t\t\treturn self.voices?.map((voice) => voice.join(',')) || null;\n\n\t\t\t\t\tcase 'timeSignature':\n\t\t\t\t\tcase 'keySignature':\n\t\t\t\t\tcase 'doubtfulTimesig':\n\t\t\t\t\t\treturn self.basics[0][key];\n\t\t\t\t\t//case 'events':\n\t\t\t\t\t//\treturn self.events.map(eventUIAgent);\n\t\t\t\t\tcase 'toJSON':\n\t\t\t\t\t\treturn () => ({\n\t\t\t\t\t\t\tmeasureIndex: self.measureIndex,\n\t\t\t\t\t\t\tvoices: self.voices,\n\t\t\t\t\t\t\tduration: self.duration,\n\t\t\t\t\t\t\ttimeSignature: self.basics[0].timeSignature,\n\t\t\t\t\t\t\tkeySignature: self.basics[0].keySignature,\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t},\n\n\t\t\tset: (target, key, value): boolean => {\n\t\t\t\t//console.log('set:', key, value);\n\t\t\t\tconst self = target as any as EditableMeasure;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'timeSignature':\n\t\t\t\t\tcase 'keySignature':\n\t\t\t\t\tcase 'doubtfulTimesig':\n\t\t\t\t\t\t(self.basics[0][key] as any) = value;\n\t\t\t\t\t\tself.basics = self.basics.map(() => self.basics[0]);\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\t\tself.duration = value;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'measureIndex':\n\t\t\t\t\tcase 'voices':\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\townKeys: (): string[] => ['measureIndex', 'timeSignature', 'doubtfulTimesig', 'keySignature', 'duration', 'voices'],\n\n\t\t\tgetOwnPropertyDescriptor() {\n\t\t\t\treturn { enumerable: true, configurable: true };\n\t\t\t},\n\t\t});\n\t}\n\n\tmakeMIDI(bpm: number = 120): MIDI.MidiData {\n\t\tif (!this.regulated) return null;\n\n\t\tconst microsecondsPerBeat = 60e6 / bpm;\n\n\t\tconst header = { formatType: 0, ticksPerBeat: 480 };\n\t\tconst tracks = this.voices.map((ids, vi) => {\n\t\t\tconst events = ids\n\t\t\t\t.map((id) => {\n\t\t\t\t\tconst event = this.events.find((event) => event.id === id);\n\t\t\t\t\tif (event) {\n\t\t\t\t\t\tconst subEvents = event.graceIds ? event.graceIds.map((id) => this.events.find((event) => event.id === id)) : [];\n\n\t\t\t\t\t\treturn [...subEvents, event];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [];\n\t\t\t\t})\n\t\t\t\t.flat(1);\n\n\t\t\tconst startTime = 0;\n\n\t\t\ttype Event = MIDI.MidiEvent & { [key: string]: any };\n\t\t\tconst midiEvents: Event[] = events\n\t\t\t\t.filter((event) => !event.rest && Number.isFinite(event.tick) && event.tick >= 0 && Number.isFinite(event.duration))\n\t\t\t\t.map((event) =>\n\t\t\t\t\tevent.pitches.map((pitch) => [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: event.id,\n\t\t\t\t\t\t\ttime: event.tick,\n\t\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\t\tsubtype: 'noteOn',\n\t\t\t\t\t\t\tchannel: event.staff,\n\t\t\t\t\t\t\tnoteNumber: noteToPitch(pitch),\n\t\t\t\t\t\t\tvelocity: 96,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: event.id,\n\t\t\t\t\t\t\ttime: event.tick + event.duration,\n\t\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\t\tsubtype: 'noteOff',\n\t\t\t\t\t\t\tchannel: event.staff,\n\t\t\t\t\t\t\tnoteNumber: noteToPitch(pitch),\n\t\t\t\t\t\t},\n\t\t\t\t\t])\n\t\t\t\t)\n\t\t\t\t.flat(2);\n\n\t\t\tmidiEvents.sort(function (e1, e2) {\n\t\t\t\treturn e1.time - e2.time;\n\t\t\t});\n\n\t\t\tif (vi === 0) {\n\t\t\t\tmidiEvents.unshift(\n\t\t\t\t\t{\n\t\t\t\t\t\ttime: startTime,\n\t\t\t\t\t\ttype: 'meta',\n\t\t\t\t\t\tsubtype: 'timeSignature',\n\t\t\t\t\t\tnumerator: this.timeSignature.numerator,\n\t\t\t\t\t\tdenominator: this.timeSignature.denominator,\n\t\t\t\t\t\tthirtyseconds: 8,\n\t\t\t\t\t},\n\t\t\t\t\t{ time: startTime, type: 'meta', subtype: 'setTempo', microsecondsPerBeat }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tmidiEvents.forEach((event) => {\n\t\t\t\tevent.ticks = Math.round(event.time - startTime);\n\t\t\t});\n\t\t\tmidiEvents.forEach((event, i) => {\n\t\t\t\tevent.deltaTime = event.ticks - (i > 0 ? midiEvents[i - 1].ticks : 0);\n\t\t\t});\n\n\t\t\tmidiEvents.push({ deltaTime: 0, type: 'meta', subtype: 'endOfTrack' });\n\n\t\t\treturn midiEvents;\n\t\t});\n\n\t\treturn {\n\t\t\theader,\n\t\t\ttracks,\n\t\t};\n\t}\n}\n\nexport { EditableEvent, EditableMeasure };\n","import { RegulationSolution, RegulationSolutionEvent, EventPredisposition } from './interfaces';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { EventCluster, EventElement, EventElementType } from './eventTopology';\nimport { argmax, frac } from './utils';\nimport { WHOLE_DURATION, StemBeam } from './term';\nimport { Logger, DummyLogger } from './logger';\n\ninterface BeadPicker {\n\tn_seq: number;\n\tquota: number;\n\tcost: number; // duration in milliseconds\n\n\tpredictCluster(cluster: EventCluster, tip: number): Promise;\n}\n\nenum BeadType {\n\tPass = 'i',\n\tDivision = 'd',\n\tDots = 'o',\n}\n\nconst DIVISION_NAMES = ['whole', 'half', 'quarter', 'eighth', 'sixteenth', 'thirtysecond', 'sixtyfourth', '128th', '256th'];\n\ninterface BeadNodeInitData {\n\tcluster: EventCluster;\n\telemIndex: number;\n\ttype: BeadType;\n\tpossibilities: number[];\n\tpretentiousness: number;\n}\n\nconst RESIDUE_LOSS_WEIGHT = 0.2;\nconst VOICEN_LOSS_WEIGHT = 0.002;\nconst SPACE_LOSS_WEIGHT = 0.4 / WHOLE_DURATION;\nconst PRETENTIOUSNESS_LOSS_WEIGHT = 0.02;\n\nconst POSSIBILITY_LOW_BOUNDARY = 1e-12;\n\nconst PRETENTIOUSNESS_CLIP = 100;\n\ninterface ClusterEvaluation {\n\ttickErr: number;\n\ttwist: number;\n\tresidue: number;\n\tendTick: number;\n\tfatalError: boolean;\n\tvoiceN: number;\n\tspaceDuration: number;\n\tpretentiousness: number;\n\tloss: number;\n}\n\ninterface ElementState {\n\ttick: number;\n\tdivision: number;\n\tdots: number;\n\tbeam: StemBeam;\n\tstemDirection: string;\n\tgrace: boolean;\n\ttimeWarped: boolean;\n\tfullMeasure: boolean; // full measure rest\n\tfake: boolean;\n\torder: number;\n\tpredisposition: EventPredisposition;\n}\n\ninterface ClusterState {\n\telements: ElementState[];\n}\n\nconst STEM_DIRECTION_OPTIONS = [undefined, 'u', 'd'];\n\nconst BEAM_OPTIONS = [undefined, StemBeam.Open, StemBeam.Continue, StemBeam.Close];\n\nconst saveClusterState = (cluster: EventCluster): ClusterState => ({\n\telements: cluster.elements.map((elem) => ({\n\t\ttick: elem.tick!,\n\t\tdivision: elem.division!,\n\t\tdots: elem.dots!,\n\t\tbeam: elem.beam!,\n\t\tstemDirection: elem.stemDirection!,\n\t\tgrace: elem.grace!,\n\t\ttimeWarped: elem.timeWarped!,\n\t\tfullMeasure: elem.fullMeasure!,\n\t\tfake: elem.fake!,\n\t\torder: elem.order!,\n\t\tpredisposition: elem.predisposition!,\n\t})),\n});\n\nconst restoreClusterState = (cluster: EventCluster, state: ClusterState): void => cluster.elements.forEach((elem, i) => Object.assign(elem, state.elements[i]));\n\nconst measurePretentious = (p) => Math.min(PRETENTIOUSNESS_CLIP, -Math.log(p));\n\ninterface BeadDeductionContext {\n\tpicker: BeadPicker;\n\tlogger: Logger;\n\tptFactor: number; // pretentiousness tolerance factor\n}\n\nclass BeadNode {\n\tcluster: EventCluster;\n\telemIndex: number;\n\ttype: BeadType;\n\tpossibilities: number[];\n\tpretentiousness: number;\n\n\tchildren: Record;\n\taccessCount: number;\n\n\tconstructor(data: BeadNodeInitData) {\n\t\tObject.assign(this, data);\n\n\t\t//this.possibilities = this.possibilities.map((x, i) => (this.type === BeadType.Pass && !i) ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\n\t\tthis.children = {};\n\t\tthis.accessCount = 0;\n\t}\n\n\tnextBranch(): number | null {\n\t\tconst ps = this.possibilities.map((p, i) => p / (this.children[i] ? this.children[i].accessCount + 1 : 1));\n\t\t//const ps = this.possibilities.map((p, i) => p * (this.children[i] ? (2 ** -this.children[i].accessCount) : 1));\n\n\t\tif (ps.every((p) => !p)) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn null;\n\t\t}\n\n\t\treturn argmax(ps);\n\t}\n\n\tget currentElem(): EventElement {\n\t\treturn this.cluster.elements[this.elemIndex];\n\t}\n\n\tbranchID(ni: number): string {\n\t\tswitch (this.type) {\n\t\t\tcase BeadType.Pass:\n\t\t\t\treturn `i_${ni}`;\n\t\t\tcase BeadType.Division:\n\t\t\t\treturn DIVISION_NAMES[ni];\n\t\t\tcase BeadType.Dots:\n\t\t\t\treturn 'o' + '.'.repeat(ni);\n\t\t}\n\n\t\treturn '';\n\t}\n\n\tasync deduce({ picker, logger, ptFactor }: BeadDeductionContext, deep: number = 0): Promise {\n\t\t++this.accessCount;\n\n\t\tconst ni = this.nextBranch()!;\n\t\tlogger.debug(String.fromCodePoint(0x1f349) + ' '.repeat(deep), this.branchID(ni), this.accessCount > 1 ? `[${this.accessCount}]` : '');\n\n\t\tif (!Number.isInteger(ni) || ni < 0) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t}\n\n\t\tthis.pretentiousness += measurePretentious(this.possibilities[ni]);\n\t\tif (this.pretentiousness > PRETENTIOUSNESS_CLIP * ptFactor) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t}\n\n\t\tlet selfEval: null | ClusterEvaluation = null;\n\n\t\tswitch (this.type) {\n\t\t\tcase BeadType.Pass:\n\t\t\t\t{\n\t\t\t\t\tconst tip = this.currentElem.order! + 1;\n\t\t\t\t\tconst element = this.cluster.elements[ni];\n\t\t\t\t\tconsole.assert(element, 'null element:', ni, this.cluster.elements.length);\n\t\t\t\t\tif (element.type === EventElementType.EOS) {\n\t\t\t\t\t\tselfEval = evaluateCluster(this.cluster, tip, this.pretentiousness);\n\t\t\t\t\t\tif (!selfEval.residue || selfEval.fatalError) {\n\t\t\t\t\t\t\tthis.accessCount = Infinity;\n\t\t\t\t\t\t\treturn selfEval!;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.cluster.elements[0].order = tip;\n\t\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\t\tif (!picker.quota) return selfEval;\n\n\t\t\t\t\t\t\tconst possibilities = (await picker.predictCluster(this.cluster, tip + 1)).map((x, i) =>\n\t\t\t\t\t\t\t\tthis.cluster.elements[i].order! < tip + 1 || i === this.cluster.elements.length - 1 ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\t\telemIndex: 0,\n\t\t\t\t\t\t\t\ttype: BeadType.Pass,\n\t\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\telement.order = tip;\n\n\t\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\t\tconsole.assert(element.predisposition, 'no predisposition:', ni, this.possibilities);\n\t\t\t\t\t\t\tconst possibilities = element.predisposition!.divisionVector.map((x) => Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\t\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\t\telemIndex: ni,\n\t\t\t\t\t\t\t\ttype: BeadType.Division,\n\t\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase BeadType.Division:\n\t\t\t\t{\n\t\t\t\t\tthis.currentElem.division = ni;\n\n\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\tconst possibilities = this.currentElem.predisposition!.dotsVector.map((x) => Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\telemIndex: this.elemIndex,\n\t\t\t\t\t\t\ttype: BeadType.Dots,\n\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase BeadType.Dots:\n\t\t\t\t{\n\t\t\t\t\tthis.currentElem.dots = ni;\n\n\t\t\t\t\tselfEval = evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t\t\t\tif (!selfEval.residue || selfEval.fatalError) {\n\t\t\t\t\t\tthis.accessCount = Infinity;\n\t\t\t\t\t\treturn selfEval!;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\tif (!picker.quota) return selfEval;\n\n\t\t\t\t\t\tconst tip = this.currentElem.order! + 1;\n\t\t\t\t\t\tconst possibilities = (await picker.predictCluster(this.cluster, tip)).map((x, i) =>\n\t\t\t\t\t\t\tthis.cluster.elements[i].order! < tip + 1 ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\telemIndex: this.elemIndex,\n\t\t\t\t\t\t\ttype: BeadType.Pass,\n\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst evaluation = await this.children[ni].deduce({ picker, logger, ptFactor }, deep + 1);\n\t\tif (selfEval && evaluation.fatalError) {\n\t\t\tconst tip = this.currentElem.order!;\n\t\t\tthis.cluster.elements.forEach((elem) => {\n\t\t\t\tif (elem.order! > tip) elem.order = undefined;\n\t\t\t});\n\n\t\t\t// clear children data\n\t\t\tthis.cluster.elements.forEach((elem) => (elem.order = elem.order! > this.currentElem.order! ? undefined : elem.order));\n\t\t\tthis.cluster.elements[this.cluster.elements.length - 1].tick = selfEval.endTick;\n\n\t\t\treturn selfEval;\n\t\t}\n\n\t\treturn evaluation;\n\t}\n}\n\nconst estimateElementDuration = (elem: EventElement) => WHOLE_DURATION * 2 ** -elem.division! * (2 - 2 ** -elem.dots!);\n\nconst evaluateCluster = (cluster: EventCluster, tip: number, pretentiousness: number): ClusterEvaluation => {\n\tconst events = cluster.elements.filter(\n\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order) && elem.order! < tip\n\t);\n\tevents.sort((e1, e2) => e1.order! - e2.order!);\n\n\tconst eos = cluster.elements[cluster.elements.length - 1];\n\n\tlet tick = 0;\n\tlet lastOrder = 0;\n\tlet endTick = 0;\n\tlet voiceN = 1;\n\n\t// [x, tick, estimated tick]\n\tconst scales: [number, number, number][] = [[eos.x, cluster.signatureDuration, cluster.signatureDuration]];\n\n\tlet totalDuration = 0;\n\n\t// assign tick for events\n\tevents.forEach((event) => {\n\t\tif (event.order! > lastOrder + 1) {\n\t\t\ttick = 0;\n\t\t\t++voiceN;\n\t\t}\n\n\t\tconst referenceScale = scales.find((s) => s[1] >= tick);\n\t\tif (referenceScale && event.x > referenceScale[0] + 3) {\n\t\t\tconst nearScale = scales.reduce((n, s) => (Math.abs(event.predisposition!.tick - s[2]) < Math.abs(event.predisposition!.tick - n[2]) ? s : n));\n\t\t\tif (Math.abs(nearScale[0] - event.x) < 2) tick = Math.max(tick, nearScale[1]);\n\t\t}\n\n\t\tevent.tick = tick;\n\n\t\tconst si = Math.max(\n\t\t\t0,\n\t\t\tscales.findIndex((s) => s[0] > event.x)\n\t\t);\n\t\tscales.splice(si, 0, [event.x, event.tick, event.predisposition!.tick]);\n\n\t\t//let duration = WHOLE_DURATION * (2 ** -event.division!) * (2 - 2 ** -event.dots!);\n\t\tlet duration = estimateElementDuration(event);\n\t\tif (event.predisposition!.timeWarped > 0.5) duration = (duration * 2) / 3;\n\n\t\ttick += duration;\n\t\ttotalDuration += duration;\n\t\tendTick = Math.max(endTick, tick);\n\t\tlastOrder = event.order!;\n\t});\n\n\t/*const pretentiousness = events.reduce((p, event) => p +\n\t\tmeasurePretentious(event.predisposition!.divisionVector![event.division!]) +\n\t\tmeasurePretentious(event.predisposition!.dotsVector![event.dots!]), 0);*/\n\n\tif (endTick > 0) cluster.elements[cluster.elements.length - 1].tick = endTick;\n\n\tconst xSpan = cluster.elements[cluster.elements.length - 1].pivotX! - cluster.elements[1].pivotX!;\n\tconst tickSpan = Math.max(...events.map((e) => e.tick!), endTick);\n\n\t// tick twist loss\n\tconst eventsXOrder = [...events].sort((e1, e2) => e1.pivotX! - e2.pivotX!);\n\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\tconst e1 = eventsXOrder[i];\n\t\tconst dx = e2.pivotX! - e1.pivotX!;\n\t\tconst dt = e2.tick! - e1.tick!;\n\n\t\tif (!dt) return dx / xSpan;\n\n\t\tconst rate = Math.atan2(dt / tickSpan, dx / xSpan);\n\n\t\t//if (dt < 0)\n\t\t//\tconsole.log(\"minus dt:\", dt, dx, rate);\n\n\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t});\n\t//console.debug(\"tickTwists:\", tickTwists, eventsXOrder);\n\n\tconst twist = Math.max(...tickTwists, 0);\n\n\tconst tickMSE = events.map((event) => (event.tick! - event.predisposition!.tick) ** 2);\n\t//console.debug(\"tickMSE:\", tickMSE.map(Math.sqrt));\n\tconst tickErr = tickMSE.length ? Math.sqrt(tickMSE.reduce((sum, mse) => sum + mse, 0) / tickMSE.length) : 0;\n\t//console.debug(\"tick/twist:\", tickErr / WHOLE_DURATION, twist);\n\n\tconst residueElements = cluster.elements.filter(\n\t\t(elem) =>\n\t\t\t[EventElementType.CHORD, EventElementType.REST].includes(elem.type) &&\n\t\t\t!(Number.isInteger(elem.order) && elem.order! < tip) &&\n\t\t\t!(elem.predisposition && elem.predisposition.fakeP > 0.5)\n\t);\n\tconst residue = residueElements.length;\n\n\tconst fatalError = twist >= 1 || endTick > cluster.signatureDuration;\n\n\t//const spaceDuration = Math.max(0, cluster.signatureDuration - endTick);\n\tconst spaceDuration = Math.max(0, cluster.signatureDuration - totalDuration / voiceN);\n\n\tconst loss =\n\t\ttickErr / WHOLE_DURATION +\n\t\ttwist +\n\t\tresidue * RESIDUE_LOSS_WEIGHT +\n\t\tvoiceN * VOICEN_LOSS_WEIGHT +\n\t\tspaceDuration * SPACE_LOSS_WEIGHT +\n\t\tpretentiousness * PRETENTIOUSNESS_LOSS_WEIGHT;\n\n\treturn {\n\t\ttickErr,\n\t\ttwist,\n\t\tresidue,\n\t\tendTick,\n\t\tfatalError,\n\t\tvoiceN,\n\t\tspaceDuration,\n\t\tpretentiousness,\n\t\tloss,\n\t};\n};\n\nconst solveCluster = async (\n\tcluster: EventCluster,\n\tpicker: BeadPicker,\n\tlogger: Logger,\n\tquota: number = 200,\n\tstopLoss: number = 0,\n\tptFactor: number = 1\n): Promise => {\n\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\tconst suc0 = await picker.predictCluster(cluster, 1);\n\n\tconst root = new BeadNode({ cluster, elemIndex: 0, pretentiousness: 0, type: BeadType.Pass, possibilities: suc0 });\n\n\tlet bestEvaluation: ClusterEvaluation | null = null;\n\tlet bestState: ClusterState | null = null;\n\n\tpicker.quota = quota;\n\twhile (picker.quota) {\n\t\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\n\t\tconst evaluation = await root.deduce({ picker, logger, ptFactor });\n\n\t\tlogger.debug('loss:', evaluation);\n\n\t\tif (!bestEvaluation || evaluation.loss < bestEvaluation.loss) {\n\t\t\tbestEvaluation = evaluation;\n\n\t\t\tcluster.duration = bestEvaluation.endTick;\n\t\t\tbestState = saveClusterState(cluster);\n\n\t\t\tif (Number.isFinite(stopLoss) && bestEvaluation.loss <= stopLoss!) break;\n\t\t}\n\n\t\tif (!Number.isFinite(root.accessCount)) break;\n\t}\n\tlogger.debug('bestEvaluation:', bestEvaluation);\n\n\trestoreClusterState(cluster, bestState!);\n\n\t// solve residue elements\n\tconst fixedEvents = cluster.elements.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order));\n\tconst pendingEvents = cluster.elements.filter(\n\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && !Number.isInteger(elem.order)\n\t);\n\tif (fixedEvents.length) {\n\t\tpendingEvents.forEach((event) => {\n\t\t\t// exclude fake events (includes grace, fullMeasure) from voices\n\t\t\tevent.tick = undefined;\n\n\t\t\tif (event.predisposition!.fakeP < 0.5) {\n\t\t\t\t//const near = fixedEvents.reduce((n, e) => Math.abs(e.predisposition!.tick - event.predisposition!.tick) < Math.abs(n.predisposition!.tick - event.predisposition!.tick) ? e : n);\n\t\t\t\tconst duration = estimateElementDuration(event);\n\t\t\t\tconst candidates = fixedEvents.filter((e) => e.tick! + duration <= bestEvaluation!.endTick);\n\t\t\t\tif (candidates.length) {\n\t\t\t\t\tconst near = candidates.reduce((n, e) => (Math.abs(e.x - event.x) < Math.abs(n.x - event.x) ? e : n));\n\t\t\t\t\tevent.tick = near.tick;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfixedEvents.sort((e1, e2) => e1.order! - e2.order!);\n\n\t// properties\n\t[...fixedEvents, ...pendingEvents].forEach((event) => {\n\t\tevent.grace = !Number.isFinite(event.tick) && event.predisposition!.grace;\n\t\tevent.timeWarped = event.predisposition!.timeWarped > 0.5;\n\t\tevent.fullMeasure = event.predisposition!.fullMeasure > 0.5;\n\t\tevent.stemDirection = STEM_DIRECTION_OPTIONS[argmax(event.predisposition!.stemDirectionVector)];\n\t\tevent.beam = BEAM_OPTIONS[argmax(event.predisposition!.beamVector)];\n\t});\n\n\t// construct matrixH\n\tconst ids = cluster.elements.map((e) => e.index);\n\tconst idx = (id: number): number => ids.indexOf(id);\n\tcluster.matrixH = cluster.elements.map(() => Array(cluster.elements.length).fill(0));\n\tfixedEvents.forEach((event, i) => {\n\t\tconst lastEvent = fixedEvents[i - 1];\n\t\tif (!lastEvent || lastEvent.order! < event.order! - 1) {\n\t\t\tcluster.matrixH![idx(event.index!)][0] = 1;\n\t\t\tif (lastEvent) cluster.matrixH![cluster.elements.length - 1][idx(lastEvent.index!)] = 1;\n\t\t} else {\n\t\t\tconsole.assert(\n\t\t\t\tcluster.matrixH![idx(event.index!)] && Number.isFinite(cluster.matrixH![idx(event.index!)][idx(lastEvent.index!)]),\n\t\t\t\t'matrixH out of range:',\n\t\t\t\tevent.index,\n\t\t\t\tlastEvent.index,\n\t\t\t\tcluster.matrixH!.length\n\t\t\t);\n\n\t\t\tcluster.matrixH![idx(event.index!)][idx(lastEvent.index!)] = 1;\n\t\t}\n\t});\n\tif (!pendingEvents.length && fixedEvents.length) cluster.matrixH![cluster.elements.length - 1][idx(fixedEvents[fixedEvents.length - 1].index!)] = 1;\n\n\treturn bestEvaluation!;\n};\n\ninterface BeadSolverOptions {\n\tpicker: BeadPicker;\n\tstopLoss?: number;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n\tptFactor?: number;\n\tlogger?: Logger;\n}\n\nconst solveMeasure = async (measure: SpartitoMeasure, options: BeadSolverOptions): Promise => {\n\tconst { stopLoss = 0.09, quotaMax = 1000, quotaFactor = 5, ptFactor = 1, logger = new DummyLogger() } = options;\n\n\tlet worstLoss = 0;\n\n\tconst clusters = measure.createClusters();\n\tfor (const cluster of clusters) {\n\t\tconst quota = Math.min(quotaMax, Math.ceil(cluster.elements.length * quotaFactor));\n\t\tlogger.info(`[measure-${measure.measureIndex}]`, quota);\n\t\tconst { loss } = await solveCluster(cluster, options.picker, logger, quota, stopLoss, ptFactor);\n\t\tworstLoss = Math.max(worstLoss, loss);\n\t}\n\n\tconst voices = [] as number[][];\n\n\tconst durations = [] as number[];\n\n\tconst solutionEvents = [] as RegulationSolutionEvent[];\n\n\tclusters.forEach((cluster) => {\n\t\tconst events = cluster.elements.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order));\n\t\tevents.sort((e1, e2) => e1.order! - e2.order!);\n\n\t\tif (!events.length) return;\n\n\t\tlet voice = [] as number[];\n\t\tvoices.push(voice);\n\t\tlet lastOrder = 0;\n\t\tevents.forEach((event) => {\n\t\t\tif (event.fullMeasure || event.grace || event.tremoloCatcher) return;\n\n\t\t\tif (event.order! > lastOrder + 1) {\n\t\t\t\tvoice = [event.index!];\n\t\t\t\tvoices.push(voice);\n\t\t\t} else voice.push(event.index!);\n\n\t\t\tlastOrder = event.order!;\n\t\t});\n\n\t\tlet tipElem = events[events.length - 1];\n\n\t\t// complete voices from pending events\n\t\tconst pendingEvents = cluster.elements.filter(\n\t\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isFinite(elem.tick) && !Number.isInteger(elem.order)\n\t\t);\n\t\twhile (pendingEvents.length) {\n\t\t\tconst ei = pendingEvents.findIndex((e) => e.tick! >= tipElem.tick! + estimateElementDuration(tipElem));\n\t\t\tif (ei >= 0) voice.push(pendingEvents.splice(ei, 1)[0].index!);\n\t\t\telse {\n\t\t\t\ttipElem = pendingEvents.splice(0, 1)[0];\n\t\t\t\tvoice = [tipElem.index!];\n\t\t\t\tvoices.push(voice);\n\t\t\t}\n\t\t}\n\n\t\tif (events.some((elem) => !elem.fullMeasure && Number.isInteger(elem.order))) {\n\t\t\tconst eos = cluster.elements.find((elem) => elem.type === EventElementType.EOS);\n\t\t\tdurations.push(eos!.tick!);\n\t\t}\n\n\t\tconst eventMap = measure.eventMap;\n\n\t\tconst tickSet = cluster.elements.reduce((set, elem) => {\n\t\t\tif (Number.isFinite(elem.tick)) set.add(elem.tick!);\n\t\t\treturn set;\n\t\t}, new Set());\n\t\tconst ticks = Array.from(tickSet).sort((t1, t2) => t1 - t2);\n\n\t\t// fill solutionEvents\n\t\tevents.forEach((elem) => {\n\t\t\tconst event = eventMap[elem.index!];\n\t\t\tif (event) {\n\t\t\t\tsolutionEvents.push({\n\t\t\t\t\tid: event.id!,\n\t\t\t\t\ttick: elem.tick!,\n\t\t\t\t\ttickGroup: ticks.indexOf(elem.tick!),\n\t\t\t\t\tdivision: elem.division !== event.division ? elem.division : undefined,\n\t\t\t\t\tdots: elem.dots !== event.dots ? elem.dots : undefined,\n\t\t\t\t\ttimeWarp: elem.timeWarped ? frac(2, 3) : undefined, // TODO:\n\t\t\t\t\tbeam: elem.beam !== event.beam ? elem.beam : undefined,\n\t\t\t\t\tgrace: elem.grace !== !!event.grace ? elem.grace : undefined,\n\t\t\t\t\tfullMeasure: elem.fullMeasure || undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\n\tconst estimatedDuration = Math.max(...clusters.map((c) => c.estimatedDuration));\n\n\treturn {\n\t\tvoices: voices.filter((voice) => voice.length),\n\t\tduration: Math.max(...durations),\n\t\tevents: solutionEvents,\n\t\tpriority: -worstLoss,\n\t\testimatedDuration,\n\t};\n};\n\ninterface GlimpseMeasureOptions {\n\tpicker: BeadPicker;\n\tresetSignatureForDoubtfulOnly?: boolean;\n}\n\nconst glimpseMeasure = async (measure: SpartitoMeasure, { picker, resetSignatureForDoubtfulOnly }: GlimpseMeasureOptions): Promise => {\n\tconst clusters = measure.createClusters();\n\tconst eventMap = measure.eventMap;\n\n\tfor (const cluster of clusters) {\n\t\tif (!resetSignatureForDoubtfulOnly || measure.doubtfulTimesig) cluster.signatureDuration = 0; // re-estimate measure duration\n\t\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\t\tawait picker.predictCluster(cluster, 1);\n\n\t\tcluster.elements\n\t\t\t.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type))\n\t\t\t.forEach((elem) => {\n\t\t\t\tconst event = eventMap[elem.index!];\n\t\t\t\tevent.predisposition = elem.predisposition!;\n\t\t\t});\n\t}\n\n\tmeasure.estimatedDuration = Math.max(...clusters.map((c) => c.estimatedDuration));\n};\n\nconst estimateMeasure = async (measure: SpartitoMeasure, picker: BeadPicker): Promise =>\n\tglimpseMeasure(measure, { picker, resetSignatureForDoubtfulOnly: true });\n\nexport { BeadPicker, solveCluster, solveMeasure, estimateMeasure, glimpseMeasure };\n","import * as starry from '../starry';\nimport { MidiJson, ScoreJSON } from './types';\nimport { ChordColumn, Staff } from '../starry';\nimport { parseCode } from '../staffLayout';\nimport { MidiEvent } from '../performer';\n\nexport interface FindScoreResource {\n\tscoreJson: ScoreJSON;\n\tmidiJson: MidiJson;\n}\n\nconst SUPPORT_CLEF_TYPES = [starry.TokenType.ClefG, starry.TokenType.ClefF, starry.TokenType.ClefC];\n\nconst tokenToText = (token: starry.ContextedTerm) => {\n\tlet text = null;\n\tswitch (token.tokenType) {\n\t\tcase starry.TokenType.ClefG:\n\t\t\ttext = 'Treble';\n\t\t\tbreak;\n\t\tcase starry.TokenType.ClefF:\n\t\t\ttext = 'Bass';\n\t\t\tbreak;\n\t\tcase starry.TokenType.ClefC:\n\t\t\tif (token.y === -1) {\n\t\t\t\ttext = 'Tenor';\n\t\t\t} else {\n\t\t\t\ttext = 'Alto';\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\treturn text;\n};\n\nexport function encodeFindResource(score: starry.Score): FindScoreResource {\n\tconst perform = score.spartito.perform();\n\tconst maskImages = score.systems.map((sy) => sy.staves.map((st) => st?.maskImage)).flat();\n\tconst hasMaskImage = maskImages.filter(Boolean).length > maskImages.length / 2;\n\n\tconst scoreJson: ScoreJSON = {} as ScoreJSON;\n\n\tconst idsMap = new Map(); // starry内部ID到find播放器id的映射\n\tconst idsXMap = new Map(); // 内部ID和元素X坐标的映射\n\tconst idStaffIndexMap = new Map(); // 内部ID和元素所属part的内部staff索引\n\n\tscoreJson.unitSize = score.unitSize;\n\n\tscoreJson.title = {\n\t\ttitle: score.title,\n\t} as any;\n\n\tconst coverTexts: {\n\t\tconfidence: number;\n\t\tfontSize: number;\n\t\tid: string;\n\t\ttext: string;\n\t\ttextType: 'Title' | 'Author';\n\t\ttype: starry.TokenType;\n\t\twidth_: number;\n\t\tx: number;\n\t\ty: number;\n\t}[] = score.pages[0].tokens as any;\n\n\tif (Array.isArray(coverTexts) && coverTexts.length > 0) {\n\t\tconst [title, ...subtitles] = coverTexts\n\t\t\t.filter((x) => x.type === starry.TokenType.Text && x.textType === 'Title')\n\t\t\t.sort((a, b) => b.fontSize - a.fontSize);\n\n\t\tif (title) {\n\t\t\tscoreJson.title.title = title.text;\n\t\t\tscoreJson.title.t = { size: title.fontSize };\n\t\t}\n\n\t\tif (subtitles?.length > 0) {\n\t\t\tsubtitles.sort((a, b) => a.y - b.y);\n\t\t\tscoreJson.title.subtitle = subtitles.map((x) => x.text).join('\\n');\n\t\t\tscoreJson.title.s = { size: subtitles.reduce((a, n) => a + n.fontSize, 0) / subtitles.length };\n\t\t}\n\n\t\tconst authors = coverTexts.filter((x) => x.type === starry.TokenType.Text && x.textType === 'Author' && x.x > score.pages[0].width / 2);\n\n\t\tif (authors.length > 0) {\n\t\t\tscoreJson.title.composer = authors.map((x) => x.text).join('\\n');\n\t\t\tscoreJson.title.c = { size: authors.reduce((a, n) => a + n.fontSize, 0) / authors.length };\n\t\t}\n\t}\n\n\tscoreJson.page = {\n\t\tw: score.pages[0].width,\n\t\th: score.pages[0].height,\n\t};\n\n\tscoreJson.pages = score.pages.map((page) => {\n\t\tconst bgWidth = page.source.dimensions.width / page.source.interval;\n\t\tconst bgHeight = page.source.dimensions.height / page.source.interval;\n\n\t\tconst [a, b, c, d] = page.source.matrix;\n\n\t\treturn {\n\t\t\tsrc: page.source.url, // 本页本地图片URL\n\t\t\tw: bgWidth, // 背景图\n\t\t\th: bgHeight, // 背景图\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\tl1: score.systems.indexOf(page.systems[0]), // 本页起始system编号\n\t\t\tls: page.systems.length, // 本页system数量\n\t\t\tmatrix: [\n\t\t\t\ta,\n\t\t\t\tb,\n\t\t\t\tc,\n\t\t\t\td,\n\t\t\t\t(-1 / 2) * a * bgWidth + (-1 / 2) * bgHeight * c + (1 / 2) * page.width || 0,\n\t\t\t\t(-1 / 2) * b * bgWidth + (-1 / 2) * bgHeight * d + (1 / 2) * page.height || 0,\n\t\t\t],\n\t\t};\n\t});\n\n\tscoreJson.parts = [];\n\tscoreJson.lines = [];\n\n\t// 没有降噪图就不需要这些字段\n\tif (hasMaskImage) {\n\t\tconst partTemplates = score.staffLayout.partGroups.map((p) => (p.range[0] === p.range[1] ? [p.range[0]] : p.range));\n\t\tconst tokenMap = score.getTokenMap();\n\t\tconst measureXs: number[][] = [];\n\n\t\t// partIndex: part索引,template: 当前part所包含的staff的全局索引\n\t\tfor (const [partIndex, template] of partTemplates.entries()) {\n\t\t\tconst staffIndexBase = partTemplates.slice(0, partIndex).flat().length;\n\n\t\t\tconst part: ScoreJSON['parts'][0] = {\n\t\t\t\tmeasures: [],\n\t\t\t};\n\n\t\t\tscore.systems.forEach((system, systemIndex) => {\n\t\t\t\tconst staves = system.staves.slice();\n\n\t\t\t\t// 不可见staff用null填充的staff列表\n\t\t\t\tconst paddedStaves = partTemplates.flat().map((staffIndex) => (!((1 << staffIndex) & system.staffMask) ? null : staves.shift()));\n\t\t\t\tconst bars = [0, ...system.measureBars];\n\n\t\t\t\t// 便历当前system下的小节\n\t\t\t\tfor (let mi = 0; mi < system.measureCount; mi++) {\n\t\t\t\t\tconst measureIndex = score.spartito.measureIndexMapping[system.headMeasureIndex + mi];\n\n\t\t\t\t\t// 如果小节被过滤\n\t\t\t\t\tif (!Number.isFinite(measureIndex)) {\n\t\t\t\t\t\tif (bars.length > mi + 1) bars[mi + 1] = bars[mi];\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst chordColumns: { chord: ChordColumn; staffIndexInPart: number }[] = [];\n\n\t\t\t\t\tfor (const staffIndex of template) {\n\t\t\t\t\t\tconst staff = paddedStaves[staffIndex];\n\n\t\t\t\t\t\tif (staff) {\n\t\t\t\t\t\t\tchordColumns.push(...staff.measures[mi].getChords().map((chord) => ({ chord, staffIndexInPart: staffIndex - staffIndexBase })));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet noteIndex = 0;\n\n\t\t\t\t\tconst measureStartX = bars[mi]; // 小节开头相对system的x偏移\n\n\t\t\t\t\tconst measureNotes = [];\n\n\t\t\t\t\tchordColumns.forEach(({ staffIndexInPart, chord }) => {\n\t\t\t\t\t\tconst elems = [];\n\n\t\t\t\t\t\tlet firstX = chord.tip ? chord.tip.x : chord.right - chord.left / 2;\n\n\t\t\t\t\t\tchord.noteIds.forEach((noteId, key) => {\n\t\t\t\t\t\t\tconst token = tokenMap.get(noteId);\n\n\t\t\t\t\t\t\tconst innerId = `n_${partTemplates.length > 1 ? partIndex + '_' : ''}${measureIndex}_${noteIndex}`;\n\t\t\t\t\t\t\tnoteIndex++;\n\t\t\t\t\t\t\tidsMap.set(token.id, innerId);\n\t\t\t\t\t\t\tidsXMap.set(token.id, (token.left + token.right) / 2 - measureStartX);\n\t\t\t\t\t\t\tidStaffIndexMap.set(token.id, staffIndexInPart + 1);\n\n\t\t\t\t\t\t\telems.push({\n\t\t\t\t\t\t\t\tline: -chord.ys[key] * 2, // 五线中线为0,往上为正/向下为负,每半格子1个单位\n\t\t\t\t\t\t\t\tid: innerId, // n_小节号_第几个音符\n\t\t\t\t\t\t\t\t// acc: {\n\t\t\t\t\t\t\t\t// \tacc: AccType.Flat,\n\t\t\t\t\t\t\t\t// \tx: -1\n\t\t\t\t\t\t\t\t// }, // 临时升降记号及其偏移量\n\t\t\t\t\t\t\t\tstaff: staffIndexInPart + 1,\n\t\t\t\t\t\t\t\tx: (token.left + token.right) / 2 - firstX, // 当前符头相对第一个符头的偏移量\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tmeasureXs[measureIndex] = measureXs[measureIndex] || [];\n\t\t\t\t\t\tmeasureXs[measureIndex].push(firstX - measureStartX);\n\n\t\t\t\t\t\tconst events = score.spartito.measures[system.headMeasureIndex + mi].events.filter((x) =>\n\t\t\t\t\t\t\tx.noteIds.some((y) => chord.noteIds.includes(y))\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tmeasureNotes.push({\n\t\t\t\t\t\t\telems,\n\t\t\t\t\t\t\tx: firstX - measureStartX, // 本音符相对于小节开头的x偏移量\n\t\t\t\t\t\t\ttype: 2 ** chord.division, // n分音符,1为全音符\n\t\t\t\t\t\t\t...(events.some((x) => x.grace) ? { grace: {} } : {}),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tpart.measures[measureIndex] = {\n\t\t\t\t\t\tw: bars[mi + 1] - bars[mi], // 本小节宽度\n\t\t\t\t\t\tstaves: template.length, // 本part的staff个数\n\t\t\t\t\t\tnotes: measureNotes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// 提取谱号、调号\n\t\t\tlet lastFifths = null;\n\t\t\tscore.spartito.measures.forEach((measure, i) => {\n\t\t\t\tconst measureIndex = score.spartito.measureIndexMapping[i];\n\n\t\t\t\tconst clefTokens = measure.contexts.flat().filter((x) => SUPPORT_CLEF_TYPES.includes(x.tokenType) && template.includes(x.staff));\n\t\t\t\tconst clefs = clefTokens.map((token) => {\n\t\t\t\t\tconst pt = partTemplates.find((p) => p.includes(token.staff));\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\tclef: tokenToText(token),\n\t\t\t\t\t\tstaff: pt.indexOf(token.staff) + 1, // staff索引从1开始\n\t\t\t\t\t\ttick: token.tick,\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tif (clefs.length > 0) {\n\t\t\t\t\tpart.measures[measureIndex] && (part.measures[measureIndex].clefs = clefs);\n\t\t\t\t}\n\n\t\t\t\tconst fifths = measure.basics.filter((x, i) => (1 << i) & measure.staffMask)[0].keySignature;\n\n\t\t\t\tif (fifths !== lastFifths) {\n\t\t\t\t\tpart.measures[measureIndex] && (part.measures[measureIndex].fifths = { fifths });\n\t\t\t\t\tlastFifths = fifths;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (part.measures.length > 0) {\n\t\t\t\tscoreJson.parts[partIndex] = part;\n\t\t\t}\n\t\t}\n\n\t\tscore.systems.forEach((system, systemIndex) => {\n\t\t\tconst lineStaves = [];\n\n\t\t\tconst systemTopStaff = system.staves[0];\n\t\t\tconst systemBottomStaff = system.staves[system.staves.length - 1];\n\n\t\t\tconst systemTopStaffY = systemTopStaff.top + systemTopStaff.staffY - 2;\n\t\t\tconst systemBottomStaffY = systemBottomStaff.top + systemBottomStaff.staffY - 2;\n\n\t\t\tconst staves = system.staves.slice();\n\n\t\t\tconst paddedStaves = partTemplates.flat().map((staffIndex) => {\n\t\t\t\tconst isEmpty = !((1 << staffIndex) & system.staffMask);\n\t\t\t\tif (isEmpty) {\n\t\t\t\t\treturn null;\n\t\t\t\t} else {\n\t\t\t\t\treturn staves.shift();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet lastPartLastStaff = null;\n\n\t\t\tfor (const [partIndex, template] of partTemplates.entries()) {\n\t\t\t\tconst partStaves: Staff[] = template.map((staffIndex) => paddedStaves.find((s) => s?.index === staffIndex) || null);\n\n\t\t\t\tconst staffs = partStaves.map((staff, index) => [index, !staff] as [number, boolean]).filter((s) => s[1]);\n\n\t\t\t\tlet details = null;\n\t\t\t\tif (staffs.length > 0) {\n\t\t\t\t\tdetails = Object.fromEntries(staffs.map((d) => [d[0] + 1, { hide: d[1] }]));\n\t\t\t\t}\n\n\t\t\t\tlet y = 0;\n\t\t\t\tlet height = 0;\n\n\t\t\t\tconst visibleStaves = partStaves.filter((s) => !!s);\n\n\t\t\t\tif (visibleStaves.length > 0) {\n\t\t\t\t\tconst partTopStaff = visibleStaves[0];\n\t\t\t\t\tconst partBottomStaff = visibleStaves[visibleStaves.length - 1];\n\t\t\t\t\tconst partTopStaffY = partTopStaff.top + partTopStaff.staffY - 2;\n\t\t\t\t\tconst partBottomStaffY = partBottomStaff.top + partBottomStaff.staffY - 2;\n\n\t\t\t\t\ty = partTopStaffY - systemTopStaffY;\n\t\t\t\t\theight = partBottomStaffY - partTopStaffY + 4;\n\t\t\t\t}\n\n\t\t\t\tconst { list: distances, last } = partStaves.reduce(\n\t\t\t\t\t(acc, next, index) => {\n\t\t\t\t\t\tif (acc.last === null || next === null) {\n\t\t\t\t\t\t\tif (index === 0 && y > 0) {\n\t\t\t\t\t\t\t\tacc.list.push(y - 4);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tacc.list.push(0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tacc.list.push(next.top + next.staffY - (acc.last.top + acc.last.staffY) - 4);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tacc.last = next || acc.last;\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t},\n\t\t\t\t\t{ last: lastPartLastStaff, list: [] } as { last: Staff; list: number[] }\n\t\t\t\t);\n\n\t\t\t\tlastPartLastStaff = last;\n\n\t\t\t\tconst imgs = partStaves.map((staff) => {\n\t\t\t\t\tif (staff?.maskImage) {\n\t\t\t\t\t\tconst rect = staff.imagePosition;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tsrc: staff.maskImage,\n\t\t\t\t\t\t\tx: rect.x,\n\t\t\t\t\t\t\ty: system.top + staff.top + rect.y - (system.top + staff.top + staff.staffY - 2),\n\t\t\t\t\t\t\tw: rect.width,\n\t\t\t\t\t\t\th: rect.height,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t});\n\n\t\t\t\tconst spartitoMeasure = score.spartito.measures[system.headMeasureIndex];\n\t\t\t\tlineStaves.push({\n\t\t\t\t\t// parts\n\t\t\t\t\tdistances, // 两个staff间距\n\t\t\t\t\timgs,\n\t\t\t\t\ty, // 本staff相对于当前system第一线的起始y坐标\n\t\t\t\t\tstaves: template.length, // 本staff数量\n\t\t\t\t\tparti: partIndex, // 本staff所属part编号\n\t\t\t\t\theight, // 本staff高度\n\t\t\t\t\t...(details ? { details } : {}),\n\t\t\t\t\tclef: Object.fromEntries(\n\t\t\t\t\t\tscore.spartito.measures[system.headMeasureIndex]?.contexts\n\t\t\t\t\t\t\t.flat()\n\t\t\t\t\t\t\t.filter((x) => SUPPORT_CLEF_TYPES.includes(x.tokenType) && template.includes(x.staff))\n\t\t\t\t\t\t\t.map((token) => [token.staff, tokenToText(token)])\n\t\t\t\t\t),\n\t\t\t\t\tfifths: spartitoMeasure.basics.filter((x, i) => (1 << i) & spartitoMeasure.staffMask)[0].keySignature,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst mIndices = system.measureBars\n\t\t\t\t.map((_, i) => score.spartito.measureIndexMapping[system.headMeasureIndex + i])\n\t\t\t\t.filter((x) => Number.isFinite(x));\n\n\t\t\tscoreJson.lines[systemIndex] = {\n\t\t\t\tm1: mIndices[0], // 本system起始小节编号\n\t\t\t\tm2: mIndices.length > 0 ? mIndices[mIndices.length - 1] + 1 : undefined, // 本system结尾小节编号+1\n\t\t\t\tx: system.left, // 本system左侧小节线x坐标\n\t\t\t\ty: system.top + systemTopStaffY, // 本system左侧小节线y坐标\n\t\t\t\tw: system.measureBars[system.measureBars.length - 1], // 本system宽度\n\t\t\t\th: systemBottomStaffY - systemTopStaffY + 4, // 本system高度\n\t\t\t\tlineStaves,\n\t\t\t};\n\t\t});\n\n\t\tconst map = { 0: 'default', 1: 'brace', 2: 'bracket', 3: 'square' };\n\n\t\tconst staffLayout = parseCode(score.staffLayoutCode);\n\t\tconst sortedParts = staffLayout.partGroups\n\t\t\t.map((x) => {\n\t\t\t\treturn {\n\t\t\t\t\tsort: x.range[0],\n\t\t\t\t\tpart: x,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.sort((a, b) => a.sort - b.sort)\n\t\t\t.map((x) => x.part);\n\n\t\tscoreJson.groups = staffLayout.groups\n\t\t\t.filter((x) => x.group.type !== 0)\n\t\t\t.map((part, key) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: map[part.group.type] as any,\n\t\t\t\t\tp1: sortedParts.findIndex((x) => x.range.includes(part.range[0])),\n\t\t\t\t\tp2: sortedParts.findIndex((x) => x.range.includes(part.range[part.range.length - 1])),\n\t\t\t\t};\n\t\t\t})\n\t\t\t.filter((x) => x.type !== 'default');\n\t}\n\n\tif (perform) {\n\t\tscoreJson.measInfo = perform.notation.measures.map((measure, measureIndex) => {\n\t\t\tconst map = new Map();\n\t\t\tmeasure.notes.forEach((n) => {\n\t\t\t\tmap.set(n.tick, [...(map.get(n.tick) || []), idsXMap.get(n.id)]);\n\t\t\t});\n\n\t\t\t// 找出每个tick对应的第一个音符的中心点的x\n\t\t\treturn Array.from(map.entries())\n\t\t\t\t.sort((a, b) => +a[0] - b[0])\n\t\t\t\t.reduce(\n\t\t\t\t\t(acc, ent, key) => {\n\t\t\t\t\t\tconst val = ent[1].find((x) => x > acc.last) || ent[1][0];\n\t\t\t\t\t\tacc.list.push(val);\n\t\t\t\t\t\tacc.last = val;\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t},\n\t\t\t\t\t{ last: null, list: [] }\n\t\t\t\t)\n\t\t\t\t.list.filter(Number.isFinite);\n\t\t});\n\t}\n\n\t/******************************* 生成 midiJson *************************************/\n\n\tlet midiJson: MidiJson;\n\n\tif (perform) {\n\t\tmidiJson = {} as MidiJson;\n\n\t\tconst idNoteMap = new Map();\n\n\t\tlet beatsCurrent;\n\t\tlet beatsUnitCurrent;\n\t\tperform.notation.measures.forEach((measure, mIndex) => {\n\t\t\tconst { numerator: beats, denominator: beatsUnit } = measure.timeSignature;\n\n\t\t\tif (!midiJson.beats && !midiJson.beatsUnit) {\n\t\t\t\tmidiJson.beats = beats;\n\t\t\t\tmidiJson.beatsUnit = beatsUnit;\n\t\t\t\tbeatsCurrent = beats;\n\t\t\t\tbeatsUnitCurrent = beatsUnit;\n\t\t\t}\n\n\t\t\tmidiJson.beatInfos = midiJson.beatInfos || [];\n\n\t\t\tif (beatsCurrent !== beats || beatsUnitCurrent !== beatsUnit) {\n\t\t\t\tbeatsCurrent = beats;\n\t\t\t\tbeatsUnitCurrent = beatsUnit;\n\n\t\t\t\tmidiJson.beatInfos.push({\n\t\t\t\t\ttick: measure.tick,\n\t\t\t\t\tbeats,\n\t\t\t\t\tbeatsUnit,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tmidiJson.tempos = midiJson.tempos || [];\n\n\t\t\tmeasure.events.forEach((evt) => {\n\t\t\t\tif (evt.data.type === 'meta' && evt.data.subtype === 'setTempo') {\n\t\t\t\t\tmidiJson.tempos.push({\n\t\t\t\t\t\ttick: measure.tick,\n\t\t\t\t\t\ttempo: evt.data.microsecondsPerBeat,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tmidiJson.measures = perform.notation.measures.reduce((acc, measure, index) => {\n\t\t\tconst note_ticks = Array.from(new Set(measure.notes.map((x) => x.tick))).sort((a, b) => a - b);\n\n\t\t\tmeasure.notes.forEach((x) => {\n\t\t\t\tidNoteMap.set(x.id, note_ticks.indexOf(x.tick));\n\t\t\t});\n\n\t\t\tacc[measure.tick] = {\n\t\t\t\tmeasure: index, // 小节编号\n\t\t\t\tduration: measure.duration, // 小节时值\n\t\t\t\tnote_ticks, // 本小节每列的tick\n\t\t\t};\n\n\t\t\treturn acc;\n\t\t}, {});\n\n\t\tmidiJson.measureInfos = perform.notation.measures.map((measure, key) => ({\n\t\t\tnumber: String(key + 1), // 小节编号\n\t\t\tfifths: measure.keySignature, // 调号 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7\n\t\t\tbeats: measure.timeSignature.numerator, // 拍号分子\n\t\t\tbeatUnit: measure.timeSignature.denominator, // 拍号分母\n\t\t}));\n\n\t\tconst midi = perform.notation.toPerformingMIDI(perform.notation.measures.map((_, key) => key + 1));\n\n\t\tconst tracks = midi.tracks as unknown as (MidiEvent & { duration: number })[][];\n\n\t\tconst { partGroups } = score.staffLayout;\n\n\t\tlet mergedTracks = tracks.map((track, trackIndex) => {\n\t\t\tconst key = partGroups[trackIndex].key;\n\n\t\t\tlet program: number;\n\n\t\t\tswitch (key) {\n\t\t\t\tcase 'vi':\n\t\t\t\tcase 'vi1':\n\t\t\t\tcase 'vi2':\n\t\t\t\t\tprogram = 40; // 小提琴\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'viola':\n\t\t\t\t\tprogram = 42; // 中提琴\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vo':\n\t\t\t\t\tprogram = 55; // 合成人声\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'basso':\n\t\t\t\t\tprogram = 71; // 大管乐器\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: // 大钢琴\n\t\t\t\t\tprogram = 0;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tprogram, // 音色:0-127\n\t\t\t\tchannel: trackIndex, // 通道:0-15\n\t\t\t\tname: score.instrumentDict[key] ?? 'Piano', // 轨道名称\n\t\t\t\ttrack,\n\t\t\t};\n\t\t});\n\n\t\t// 找出大谱表所在track(声部),根据分手条件拆分为左右手\n\t\tif (partGroups.some((g) => g.group.grand)) {\n\t\t\tconst lhPattern = /l\\.?h\\.?|左手|left hand/i;\n\t\t\tconst rhPattern = /r\\.?h\\.?|右手|right hand/i;\n\t\t\tconst instrus = Object.entries(score.instrumentDict)\n\t\t\t\t.filter(([key, value]) => lhPattern.test(value) || rhPattern.test(value))\n\t\t\t\t.map(([key, value]) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\thand: lhPattern.test(value) ? 'left' : 'right',\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\tlet handStaves: number[] = null;\n\t\t\tlet partIndex;\n\n\t\t\t// 标记了左右手\n\t\t\tif (instrus.length === 2 && instrus[0].hand !== instrus[1].hand) {\n\t\t\t\tconst left = instrus.find((x) => x.hand === 'left');\n\t\t\t\tconst right = instrus.find((x) => x.hand === 'right');\n\t\t\t\thandStaves = [score.staffLayout.staffIds.findIndex((x) => x === right?.key), score.staffLayout.staffIds.findIndex((x) => x === left?.key)];\n\n\t\t\t\tpartIndex = partGroups.findIndex((g) => g.range[0] <= Math.min(...handStaves) && g.range[1] >= Math.max(...handStaves));\n\t\t\t}\n\n\t\t\tif (Number.isFinite(partIndex) && partIndex > -1) {\n\t\t\t\tconst trackToSplit = mergedTracks[partIndex];\n\t\t\t\tconst newTracks: any[][] = []; // Array.from(new Set(firstTrack.track.map(x => x.channel))).sort((a, b) => a - b)\n\n\t\t\t\ttrackToSplit.track.forEach((evt) => {\n\t\t\t\t\tif (Number.isFinite(evt.staff)) {\n\t\t\t\t\t\tif (!newTracks[evt.staff]) {\n\t\t\t\t\t\t\tnewTracks[evt.staff] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnewTracks[evt.staff].push(evt);\n\t\t\t\t\t}\n\t\t\t\t\tif (evt.type === 'meta') {\n\t\t\t\t\t\tnewTracks.forEach((stave) => {\n\t\t\t\t\t\t\tstave.push(evt);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tmergedTracks.splice(partIndex, 1, newTracks.filter(Boolean).map((track) => ({ ...trackToSplit, track })) as any);\n\n\t\t\t\tmergedTracks = mergedTracks.flat();\n\n\t\t\t\t// 指定左右手track\n\t\t\t\tmidiJson.rightHandTrack = handStaves[0];\n\t\t\t\tmidiJson.leftHandTrack = handStaves[1];\n\t\t\t} else {\n\t\t\t\tmergedTracks.sort((a, b) => (a === mergedTracks[partIndex] ? -1 : 0));\n\t\t\t}\n\t\t}\n\n\t\tmidiJson.tracks = mergedTracks.map(({ program, channel, name }) => ({ program, channel, name }));\n\n\t\tconst transformedTracks = mergedTracks.map(({ track }) => {\n\t\t\tconst pitchMap: Map = new Map();\n\n\t\t\treturn track.map((evt) => {\n\t\t\t\tif (evt.subtype === 'noteOn') {\n\t\t\t\t\tpitchMap.set(evt.noteNumber, evt);\n\t\t\t\t}\n\n\t\t\t\tif (evt.subtype === 'noteOff') {\n\t\t\t\t\tconst onEvent = pitchMap.get(evt.noteNumber);\n\t\t\t\t\tif (onEvent?.noteNumber === evt.noteNumber) {\n\t\t\t\t\t\tonEvent.duration = evt.ticks - onEvent.ticks;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn evt;\n\t\t\t});\n\t\t});\n\n\t\tconst measureTickMap = new Map(Object.entries(midiJson.measures).map(([tick, m]) => [m.measure, +tick]));\n\n\t\tmidiJson.events = (transformedTracks as (MidiEvent & { duration: number; numId?: string; ticks: number })[][])\n\t\t\t.map((track, trackIndex) => {\n\t\t\t\treturn track\n\t\t\t\t\t.filter((x) => x.type === 'channel')\n\t\t\t\t\t.map((evt) => {\n\t\t\t\t\t\tif (evt?.ids?.[0]) {\n\t\t\t\t\t\t\tevt.numId = idsMap.get(evt.ids[0]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet newEvent: [number, number, number] = [0, 0, 0];\n\n\t\t\t\t\t\tswitch (evt.subtype) {\n\t\t\t\t\t\t\tcase 'noteOn':\n\t\t\t\t\t\t\t\tnewEvent = [0x90 | evt.channel, evt.noteNumber, evt.velocity];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'noteOff':\n\t\t\t\t\t\t\t\tnewEvent = [0x80 | evt.channel, evt.noteNumber, evt.velocity ? evt.velocity : 0];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'noteAftertouch':\n\t\t\t\t\t\t\t\tnewEvent = [0xa0 | evt.channel, evt.noteNumber, evt.amount];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'controller':\n\t\t\t\t\t\t\t\tnewEvent = [0xb0 | evt.channel, evt.controllerType, evt.value];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'programChange':\n\t\t\t\t\t\t\t\tnewEvent = [0xc0 | evt.channel, evt.programNumber, 0];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'channelAftertouch':\n\t\t\t\t\t\t\t\tnewEvent = [0xd0 | evt.channel, evt.amount, 0];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'pitchBend':\n\t\t\t\t\t\t\t\tnewEvent = [0xe0 | evt.channel, evt.value & 0xff, (evt.value >> 7) & 0xff];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tthrow new Error('unhandled event subtype:' + evt.subtype);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...(evt.subtype === 'noteOn' ? { id: idsMap.get(evt?.ids?.[0]) } : {}), // 对应符头的id\n\t\t\t\t\t\t\ttick: evt.ticks,\n\t\t\t\t\t\t\tchannel: evt.channel,\n\t\t\t\t\t\t\tduration: evt.duration, // 只有note on事件有时值\n\t\t\t\t\t\t\ttrack: trackIndex, // evt.staffTrack, // 所属track\n\t\t\t\t\t\t\tevent: newEvent, // [event, note, velocity]\n\t\t\t\t\t\t\telem_ids: evt?.ids.map((id) => idsMap.get(id)),\n\t\t\t\t\t\t\tmeasure: evt.measure - 1, // 所属小节编号\n\t\t\t\t\t\t\tmeas_start_tick: measureTickMap.get(evt.measure - 1), // 所属小节起始tick\n\t\t\t\t\t\t\tstaff: idStaffIndexMap.get(evt.ids[0]),\n\t\t\t\t\t\t\tnote: idNoteMap.get(evt.ids[0]),\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t.flat(1)\n\t\t\t.sort((a, b) => {\n\t\t\t\tfor (const field of ['tick', 'measure', 'track']) {\n\t\t\t\t\tif (a[field] !== b[field]) {\n\t\t\t\t\t\treturn a[field] - b[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t});\n\t}\n\n\treturn {\n\t\tscoreJson,\n\t\tmidiJson,\n\t};\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","import { EventEmitter } from 'events';\n\ninterface DSPromiseOption {\n\ttimeout?: number;\n}\n\nexport function destructPromise(\n\toptions: DSPromiseOption = {}\n): [promise: Promise, resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void] {\n\tconst { timeout } = options;\n\tlet rs: (value: T | PromiseLike) => void;\n\tlet rj: (reason: any) => void;\n\n\treturn [\n\t\tnew Promise((resolve, reject) => {\n\t\t\trs = resolve;\n\t\t\trj = reject;\n\n\t\t\tif (timeout >= 0) setTimeout(rj, timeout, 'timeout');\n\t\t}),\n\t\trs,\n\t\trj,\n\t];\n}\n\ntype AsyncTask = [fn: (data: any) => Promise, payload: any, resolve: (data: any) => void, reject: (reason: any) => void];\n\nexport class AsyncQueue extends EventEmitter {\n\tprivate working = false;\n\n\ttasks: AsyncTask[];\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.working = false;\n\t\tthis.tasks = [];\n\t\tprocess.nextTick(() => {\n\t\t\tthis.emit('idle');\n\t\t});\n\t}\n\n\tprivate async _digest(item: AsyncTask) {\n\t\tthis.working = true;\n\n\t\tconst [taskFn, payload, resolve, reject] = item;\n\t\tawait taskFn(payload).then(resolve, reject);\n\n\t\tif (this.tasks.length > 0) {\n\t\t\tawait this._digest(this.tasks.shift());\n\t\t} else {\n\t\t\tthis.working = false;\n\t\t\tthis.emit('idle');\n\t\t}\n\t}\n\n\t/**\n\t * 添加队列任务\n\t * @param task\n\t * @param options\n\t */\n\taddTask(task: [AsyncTask[0], AsyncTask[1]], { timeout = 600000 }: { timeout?: number } = {}): Promise {\n\t\tconst [promise, resolve, reject] = destructPromise({ timeout });\n\n\t\tif (this.working) {\n\t\t\tthis.tasks.push([...task, resolve, reject]);\n\t\t} else {\n\t\t\tthis._digest([...task, resolve, reject]);\n\t\t}\n\n\t\treturn promise;\n\t}\n}\n","import { pack, unpack } from 'msgpackr';\nimport { Request } from 'zeromq';\nimport { AsyncQueue } from './async-queue';\n\ninterface Response {\n\tcode: number;\n\tmsg: string;\n\tdata?: any;\n}\n\nexport interface Logger {\n\tinfo: (...data: any[]) => void;\n\terror: (...data: any[]) => void;\n}\n\ntype PyArgs = any[];\ntype PyKwargs = Record;\n\nexport default class ZeroClient {\n\tlogger: Logger;\n\tprivate socket: Request;\n\tprivate queue: AsyncQueue = new AsyncQueue();\n\n\tprivate url: string;\n\n\tconstructor(logger: Logger = console) {\n\t\tthis.logger = logger;\n\t}\n\n\tbind(url?: string) {\n\t\turl && (this.url = url);\n\t\tthis.socket = new Request({\n\t\t\tsendTimeout: 15e3,\n\t\t\treceiveTimeout: 300e3,\n\t\t});\n\n\t\tthis.socket.connect(this.url);\n\t}\n\n\tprivate __request(payload) {\n\t\tlet retryTimes = 0;\n\n\t\tconst req = async (data) => {\n\t\t\ttry {\n\t\t\t\tif (this.socket.closed) this.bind();\n\t\t\t\treturn await this.socket.send(pack(data)).then(() => this.socket.receive());\n\t\t\t} catch (err) {\n\t\t\t\tif (retryTimes < 2) {\n\t\t\t\t\tretryTimes++;\n\t\t\t\t\tconsole.log(`请求失败,${err.stack}`);\n\t\t\t\t\tconsole.error(`3s后重试第${retryTimes}次`);\n\t\t\t\t\tthis.socket.close();\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 3000));\n\t\t\t\t\treturn req(data);\n\t\t\t\t} else {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treturn req(payload);\n\t}\n\n\tasync request(method: string, args: PyArgs | PyKwargs = null, kwargs: PyKwargs = null): Promise {\n\t\tconst [args_, kwargs_] = Array.isArray(args) ? [args, kwargs] : [undefined, args];\n\t\tconst msg: any = { method };\n\t\tif (args_) msg.args = args_;\n\t\tif (kwargs_) msg.kwargs = kwargs_;\n\n\t\treturn this.queue.addTask([\n\t\t\tasync (opt) => {\n\t\t\t\tconst [result] = await this.__request(opt);\n\n\t\t\t\tconst obj = unpack(result) as Response;\n\n\t\t\t\tif (obj.code === 0) {\n\t\t\t\t\treturn obj.data;\n\t\t\t\t} else {\n\t\t\t\t\treturn Promise.reject(obj.msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\tmsg,\n\t\t]);\n\t}\n}\n","import { getPortPromise } from 'portfinder';\nimport { Options, PythonShell } from 'python-shell';\nimport { defaultsDeep } from 'lodash';\nimport ZeroClient, { Logger } from './ZeroClient';\n\nexport default class PyProcessor extends ZeroClient {\n\tprivate readonly scriptPath: string;\n\tprivate readonly options: Options;\n\tprivate pyShell: PythonShell;\n\n\tprivate retryCount: number = 0;\n\tprivate retryDelay: number = 3000;\n\n\tconstructor(scriptPath: string, options: Options = {}, logger: Logger = console) {\n\t\tsuper(logger);\n\t\tthis.scriptPath = scriptPath;\n\t\tthis.options = options;\n\t}\n\n\tasync bind(port?: string | number) {\n\t\tconst freePort =\n\t\t\tport ||\n\t\t\t(await getPortPromise({\n\t\t\t\tport: 12022,\n\t\t\t\tstopPort: 12122,\n\t\t\t}));\n\n\t\t// \"./streamPredictor.py\", \"--inspect\"\n\t\tconst options = defaultsDeep(\n\t\t\t{\n\t\t\t\targs: [...(this.options.args || []), '-p', `${freePort}`],\n\t\t\t},\n\t\t\tthis.options\n\t\t);\n\n\t\tthis.logger.info(`[python-shell]: starting python shell. path: ${this.scriptPath}`);\n\n\t\tthis.pyShell = new PythonShell(this.scriptPath, options);\n\n\t\tthis.pyShell.stdout.on('data', (data) => this.logger.info(data));\n\n\t\tthis.pyShell.on('pythonError', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} pythonError:`, err));\n\t\tthis.pyShell.on('stderr', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} stderr:`, err));\n\t\tthis.pyShell.on('error', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} error:`, err));\n\t\tthis.pyShell.on('close', () => {\n\t\t\t// python子进程关闭事件\n\t\t\tif (this.retryCount < 5) {\n\t\t\t\tthis.retryCount++;\n\t\t\t\tthis.logger.info(`[python-shell]: ${this.scriptPath} will retry ${this.retryCount}th time after 3 seconds`);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.bind();\n\t\t\t\t}, this.retryDelay);\n\t\t\t}\n\t\t});\n\n\t\tsuper.bind(`tcp://127.0.0.1:${freePort}`);\n\t}\n}\n","module.exports = function isBuffer(arg) {\n return arg instanceof Buffer;\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","try {\n var util = require('util');\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n module.exports = require('./inherits_browser.js');\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","import ZeroClient, { Logger } from './ZeroClient';\nimport * as starry from '../../src/starry';\nimport PyProcessor from './PyProcessor';\nimport { destructPromise } from './async-queue';\nimport { getPort } from 'portfinder';\nimport util from 'util';\nimport { Options } from 'python-shell';\n\nconst getPortPromise = util.promisify(getPort);\n\nexport interface LayoutResult {\n\tdetection: starry.PageLayout;\n\ttheta: number;\n\tinterval: number;\n\tsourceSize?: {\n\t\twidth: number;\n\t\theight: number;\n\t};\n}\n\nexport interface PredictorInterface {\n\tlayout: (streams: Buffer[]) => LayoutResult[];\n\tlayout$reinforce: (streams: Buffer[], baseLayouts: LayoutResult[]) => LayoutResult[];\n\tgauge: (streams: Buffer[]) => {\n\t\timage: Buffer;\n\t}[];\n\tmask: (streams: Buffer[]) => {\n\t\timage: Buffer;\n\t}[];\n\tsemantic: (streams: Buffer[]) => any[];\n\ttextLoc: (streams: Buffer[]) => any[];\n\ttextOcr: (params: { buffers: Buffer[]; location: any[] }) => any[];\n\tbrackets: (params: { buffers: Buffer[] }) => any[];\n\ttopo: (params: { clusters: starry.EventCluster[] }) => any[];\n\tgaugeRenderer: (params: [Buffer, Buffer, number]) => { buffer: Buffer; size: { width: number; height: number } };\n\tjianpu: (params: { buffers: Buffer[] }) => any[];\n\t// [source: Buffer, gauge: Buffer, baseY: number]\n}\n\ntype PredictorType = keyof PredictorInterface;\n\nexport type PyClientsConstructOptions = Partial>;\n\nexport class PyClients {\n\tclients = new Map>();\n\n\tconstructor(public readonly options: PyClientsConstructOptions, public readonly logger: Logger = console) {}\n\n\tasync getClient(type: PredictorType) {\n\t\tif (this.clients.has(type)) {\n\t\t\treturn this.clients.get(type);\n\t\t}\n\n\t\tconst [promise, resolve, reject] = destructPromise();\n\n\t\tconst opt = this.options[type];\n\n\t\tif (!opt) {\n\t\t\tthrow new Error(`no config for client \\`${type}\\` found`);\n\t\t}\n\n\t\ttry {\n\t\t\tif (typeof opt === 'string') {\n\t\t\t\tconst client = new ZeroClient();\n\t\t\t\tclient.bind(opt);\n\t\t\t\tresolve(client);\n\t\t\t} else {\n\t\t\t\tconst { scriptPath, ...option } = opt;\n\t\t\t\tconst client = new PyProcessor(scriptPath, option, this.logger);\n\t\t\t\tawait client.bind(`${await getPortPromise()}`);\n\t\t\t\tresolve(client);\n\t\t\t}\n\n\t\t\tthis.logger.info(`PyClients: ${type} started`);\n\t\t} catch (err) {\n\t\t\tthis.logger.error(`PyClients: ${type} start fail: ${JSON.stringify(err)}`);\n\t\t\treject(err);\n\t\t}\n\n\t\tthis.clients.set(type, promise);\n\n\t\treturn promise;\n\t}\n\n\tasync checkHost(type: PredictorType): Promise {\n\t\tconst client = await this.getClient(type);\n\n\t\treturn client.request('checkHost');\n\t}\n\n\tasync warmup() {\n\t\tconst opts = Object.keys(this.options) as PredictorType[];\n\t\tawait Promise.all(opts.map((type) => this.getClient(type)));\n\t}\n\n\t/**\n\t * 模型预测\n\t * @param type layout | mask | gauge | semantic\n\t * @param args\n\t */\n\tasync predictScoreImages(type: T, ...args: Parameters): Promise> {\n\t\tconst clientType = type.split('$')[0] as PredictorType;\n\t\tconst client = await this.getClient(clientType);\n\t\tlet res = null;\n\n\t\tthis.logger.info(`[predictor]: ${type} py start..`);\n\t\tconst start = Date.now();\n\n\t\tswitch (type) {\n\t\t\tcase 'layout':\n\t\t\t\tres = await client.request('predictDetection', args);\n\t\t\t\tbreak;\n\t\t\tcase 'layout$reinforce':\n\t\t\t\tres = await client.request('predictReinforce', args);\n\t\t\t\tbreak;\n\t\t\tcase 'gauge':\n\t\t\tcase 'mask':\n\t\t\t\tres = await client.request('predict', args, { by_buffer: true });\n\t\t\t\tbreak;\n\t\t\tcase 'semantic':\n\t\t\tcase 'textLoc':\n\t\t\t\tres = await client.request('predict', args);\n\t\t\t\tbreak;\n\t\t\tcase 'textOcr':\n\t\t\tcase 'brackets':\n\t\t\tcase 'topo':\n\t\t\tcase 'gaugeRenderer':\n\t\t\tcase 'jianpu':\n\t\t\t\tres = await client.request('predict', ...args);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.logger.error(`[predictor]: no predictor ${type}`);\n\t\t}\n\n\t\tthis.logger.info(`[predictor]: ${type} py duration: ${Date.now() - start}ms`);\n\n\t\treturn res;\n\t}\n}\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var crypt = require('crypt'),\n utf8 = require('charenc').utf8,\n bin = require('charenc').bin,\n\n // The core\n sha1 = function (message) {\n // Convert to byte array\n if (message.constructor == String)\n message = utf8.stringToBytes(message);\n else if (typeof Buffer !== 'undefined' && typeof Buffer.isBuffer == 'function' && Buffer.isBuffer(message))\n message = Array.prototype.slice.call(message, 0);\n else if (!Array.isArray(message))\n message = message.toString();\n\n // otherwise assume byte array\n\n var m = crypt.bytesToWords(message),\n l = message.length * 8,\n w = [],\n H0 = 1732584193,\n H1 = -271733879,\n H2 = -1732584194,\n H3 = 271733878,\n H4 = -1009589776;\n\n // Padding\n m[l >> 5] |= 0x80 << (24 - l % 32);\n m[((l + 64 >>> 9) << 4) + 15] = l;\n\n for (var i = 0; i < m.length; i += 16) {\n var a = H0,\n b = H1,\n c = H2,\n d = H3,\n e = H4;\n\n for (var j = 0; j < 80; j++) {\n\n if (j < 16)\n w[j] = m[i + j];\n else {\n var n = w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16];\n w[j] = (n << 1) | (n >>> 31);\n }\n\n var t = ((H0 << 5) | (H0 >>> 27)) + H4 + (w[j] >>> 0) + (\n j < 20 ? (H1 & H2 | ~H1 & H3) + 1518500249 :\n j < 40 ? (H1 ^ H2 ^ H3) + 1859775393 :\n j < 60 ? (H1 & H2 | H1 & H3 | H2 & H3) - 1894007588 :\n (H1 ^ H2 ^ H3) - 899497514);\n\n H4 = H3;\n H3 = H2;\n H2 = (H1 << 30) | (H1 >>> 2);\n H1 = H0;\n H0 = t;\n }\n\n H0 += a;\n H1 += b;\n H2 += c;\n H3 += d;\n H4 += e;\n }\n\n return [H0, H1, H2, H3, H4];\n },\n\n // Public API\n api = function (message, options) {\n var digestbytes = crypt.wordsToBytes(sha1(message));\n return options && options.asBytes ? digestbytes :\n options && options.asString ? bin.bytesToString(digestbytes) :\n crypt.bytesToHex(digestbytes);\n };\n\n api._blocksize = 16;\n api._digestsize = 20;\n\n module.exports = api;\n})();\n","import SparkMD5 from 'spark-md5';\n//import JSZip from 'jszip';\nimport * as starry from '../../src/starry';\n//import { encodeFindResource } from '../../src/isomorphic/converter';\nimport sharp, { FormatEnum } from 'sharp';\nimport got from 'got';\n//import { Logger } from './ZeroClient';\nimport type { SolutionStore, SaveIssueMeasure } from './store';\nimport { ScoreJSON } from '../../src/isomorphic/types';\n\nconst SYSTEM_MARGIN = 4;\n\nexport const constructSystem = ({ page, backgroundImage, detection, imageSize, position }) => {\n\tconst systemWidth = (detection.phi2 - detection.phi1) / detection.interval;\n\tconst systemHeight = imageSize.height / detection.interval;\n\n\tconst lastSystem = page.systems[page.systems.length - 1];\n\tconst top = position ? position.y : (lastSystem ? lastSystem.top + lastSystem.height : 0) + SYSTEM_MARGIN;\n\tconst left = position ? position.x : SYSTEM_MARGIN;\n\n\tconst stavesTops = [\n\t\t0,\n\t\t...Array(detection.middleRhos.length - 1)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => (detection.middleRhos[i] + detection.middleRhos[i + 1]) / 2 / detection.interval),\n\t];\n\n\tconst measureBars = [systemWidth];\n\n\tconst staves = stavesTops.map(\n\t\t(top, i) =>\n\t\t\tnew starry.Staff({\n\t\t\t\ttop,\n\t\t\t\theight: (stavesTops[i + 1] || systemHeight) - top,\n\t\t\t\tstaffY: detection.middleRhos[i] / detection.interval - top,\n\t\t\t\tmeasureBars,\n\t\t\t})\n\t);\n\n\t//console.log(\"detection:\", detection, options, stavesTops);\n\n\tconst imagePosition = {\n\t\tx: -detection.phi1 / detection.interval,\n\t\ty: 0,\n\t\twidth: imageSize.width / detection.interval,\n\t\theight: imageSize.height / detection.interval,\n\t};\n\n\treturn new starry.System({\n\t\tstaves,\n\t\tleft,\n\t\ttop,\n\t\twidth: systemWidth,\n\t\tbackgroundImage,\n\t\timagePosition,\n\t\tmeasureBars,\n\t});\n};\n\nexport interface ConvertOption {\n\tformat?: keyof FormatEnum;\n\tquality?: number;\n\tmaxHeight?: number;\n}\n\nconst toBuffer = async (url: string | Buffer): Promise => {\n\tif (typeof url === 'string') {\n\t\tif (/^https?:\\/\\//.test(url)) {\n\t\t\treturn (await got(url, { responseType: 'buffer', decompress: true, https: { rejectUnauthorized: false } })).body;\n\t\t}\n\n\t\tif (/^data:image\\//.test(url)) {\n\t\t\treturn Buffer.from(url.split(',')[1], 'base64');\n\t\t}\n\n\t\treturn Buffer.from(url);\n\t}\n\n\treturn url;\n};\n\n/**\n * 转换图片格式,默认webp、最大高度1080,高度小于1080自动不做尺寸变换\n * @param url\n * @param format\n * @param maxHeight\n * @param quality\n */\nexport async function convertImage(url: string | Buffer, { format = 'webp', maxHeight = 1080, quality = 80 }: ConvertOption = {}) {\n\tlet buf = await toBuffer(url);\n\n\tconst webpBuffer = await new Promise((resolve) => {\n\t\tsharp(buf)\n\t\t\t.resize({\n\t\t\t\twidth: maxHeight,\n\t\t\t\theight: maxHeight,\n\t\t\t\tfit: 'inside',\n\t\t\t\twithoutEnlargement: true,\n\t\t\t})\n\t\t\t.toFormat(format, { quality })\n\t\t\t.toBuffer((err, buf) => {\n\t\t\t\tresolve(buf);\n\t\t\t});\n\t});\n\n\tconst md5 = SparkMD5.ArrayBuffer.hash(webpBuffer);\n\n\treturn {\n\t\tbuffer: webpBuffer,\n\t\tfilename: `${md5}.${format}`,\n\t};\n}\n\n/**\n * 替换scoreJson图片地址\n * @param scoreJson\n * @param onReplaceImage\n */\nexport const replaceScoreJsonImages = (scoreJson: ScoreJSON, onReplaceImage: (src: string) => string = (src) => src) => {\n\tconst json = JSON.parse(JSON.stringify(scoreJson));\n\n\tjson.pages.forEach((page) => {\n\t\tpage?.src && (page.src = onReplaceImage(page?.src));\n\t});\n\n\tjson.lines.forEach((system) => {\n\t\tsystem.lineStaves.forEach((line) => {\n\t\t\tline.imgs.forEach((staff) => {\n\t\t\t\tstaff?.src && (staff.src = onReplaceImage(staff.src));\n\t\t\t});\n\t\t});\n\t});\n\n\treturn json;\n};\n\n/**\n * 获取scoreJson图片资源列表\n * @param scoreJson\n */\nexport const getScoreJsonImages = (scoreJson: ScoreJSON) => {\n\treturn [\n\t\t...scoreJson.pages.map((page) => page?.src),\n\t\t...scoreJson.lines\n\t\t\t.map((system) => system.lineStaves.map((staff) => staff.imgs))\n\t\t\t.flat(2)\n\t\t\t.map((staff) => staff?.src)\n\t\t\t.filter(Boolean),\n\t];\n};\n\ninterface ScorePatchesUpdateOptions {\n\tsolutionStore?: SolutionStore;\n}\n\nexport const updateScorePatches = (score: starry.Score, measures: starry.SpartitoMeasure[], options: ScorePatchesUpdateOptions = {}): void => {\n\tconsole.assert(\n\t\tmeasures.every((measure) => measure.validRegulated),\n\t\t'[updateScorePatches] some measures not valid regulated:',\n\t\tmeasures.filter((measure) => !measure.validRegulated)\n\t);\n\n\tscore.patches = measures.map((measure) => measure.createPatch());\n\n\tif (options?.solutionStore) {\n\t\tscore.assemble();\n\t\tconst spartito = score.makeSpartito();\n\n\t\tmeasures.forEach((measure) => {\n\t\t\toptions.solutionStore!.set(measure.regulationHash, { ...measure.asSolution(), priority: 1 });\n\t\t\tif (measure.regulationHash0 !== measure.regulationHash) {\n\t\t\t\tconst originMeasure = spartito.measures.find((m) => m.measureIndex === measure.measureIndex);\n\t\t\t\toptions.solutionStore!.set(measure.regulationHash0, { ...measure.asSolution(originMeasure), priority: 1 });\n\t\t\t}\n\t\t});\n\t}\n};\n\ninterface EditableMeasuresSaveOptions {\n\tstatus?: number;\n\tsolutionStore?: SolutionStore;\n}\n\nexport const saveEditableMeasures = async (\n\tscore: starry.Score,\n\tmeasureIndices: number[],\n\tsaveMeasure: SaveIssueMeasure,\n\t{ status = 2, solutionStore }: EditableMeasuresSaveOptions = {}\n): Promise => {\n\tscore.assemble();\n\tconst spartito = score.spartito || score.makeSpartito();\n\n\tconst measures = measureIndices\n\t\t.map((index) => spartito.measures.find((measure) => measure.measureIndex === index))\n\t\t.filter(Boolean) as starry.SpartitoMeasure[];\n\n\tif (solutionStore) {\n\t\tconst solutions = await solutionStore.batchGet(measures.map((measure) => measure.regulationHash0));\n\t\tmeasures.forEach((measure, i) => {\n\t\t\tconst solution = solutions[i];\n\t\t\tif (solution) measure.applySolution(solution);\n\t\t});\n\t}\n\n\tmeasures.forEach((measure) => {\n\t\tsaveMeasure({\n\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\tmeasure: new starry.EditableMeasure(measure),\n\t\t\tstatus,\n\t\t});\n\t});\n};\n","import sha1 from 'sha1';\nimport { Canvas, Image, loadImage } from 'skia-canvas';\nimport { WeakLRUCache } from 'weak-lru-cache';\nimport * as starry from '../../src/starry';\nimport { SemanticGraph } from '../../src/starry';\nimport { LayoutResult, PyClients } from './predictors';\nimport { constructSystem, convertImage } from './util';\n\nglobalThis.OffscreenCanvas = (globalThis as any).OffscreenCanvas || Canvas;\n(globalThis as any).Image = (globalThis as any).Image || Image;\nglobalThis.btoa = globalThis.btoa || ((str: string) => Buffer.from(str, 'binary').toString('base64'));\n\nconst STAFF_PADDING_LEFT = 32;\n\nconst MAX_PAGE_WIDTH = 1200;\n\nconst GAUGE_VISION_SPEC = {\n\tviewportHeight: 256,\n\tviewportUnit: 8,\n};\n\nconst MASK_VISION_SPEC = {\n\tviewportHeight: 192,\n\tviewportUnit: 8,\n};\n\nconst SEMANTIC_VISION_SPEC = {\n\tviewportHeight: 192,\n\tviewportUnit: 8,\n};\n\ninterface OMRStat {\n\tcost: number; // in milliseconds\n\tpagesCost: number; // in milliseconds\n\tpages: number;\n}\n\ninterface OMRSummary {\n\tcostTotal: number; // in milliseconds\n\tcostPerPage: number; // in milliseconds\n\tpagesTotal: number;\n\tscoreN: number;\n}\n\n/**\n * 为布局识别的图片标准化处理\n * @param image\n * @param width\n */\nfunction scaleForLayout(image: Image, width: number): Canvas {\n\tlet height = (image.height / image.width) * width;\n\n\tconst canvas = new Canvas(width, height);\n\tconst ctx = canvas.getContext('2d');\n\n\tctx.drawImage(image, 0, 0, width, (width * image.height) / image.width);\n\n\treturn canvas;\n}\n\n/**\n * 根据所有图像的检测结果设置合适的全局页面尺寸\n * @param score\n * @param detections\n * @param outputWidth\n */\nfunction setGlobalPageSize(score: starry.Score, detections: LayoutResult[], outputWidth: number) {\n\tconst sizeRatios = detections\n\t\t.filter((s) => s && s.detection && s.detection.areas?.length)\n\t\t.map((v, k) => {\n\t\t\tconst staffInterval = Math.min(...v.detection.areas.filter((area) => area.staves?.middleRhos?.length).map((x) => x.staves.interval));\n\n\t\t\tconst sourceSize = v.sourceSize;\n\t\t\treturn {\n\t\t\t\t...v,\n\t\t\t\tindex: k,\n\t\t\t\tvw: sourceSize.width / staffInterval, // 页面宽度(逻辑单位)\n\t\t\t\thwr: sourceSize.height / sourceSize.width, // 页面高宽比\n\t\t\t};\n\t\t});\n\n\tif (!sizeRatios.length) {\n\t\tthrow new Error('empty result');\n\t}\n\n\tconst maxVW = sizeRatios.sort((a, b) => b.vw - a.vw)[0];\n\tconst maxAspect = Math.max(...sizeRatios.map((r) => r.hwr));\n\n\tscore.unitSize = outputWidth / maxVW.vw;\n\n\t// 页面显示尺寸\n\tscore.pageSize = {\n\t\twidth: outputWidth,\n\t\theight: outputWidth * maxAspect,\n\t};\n}\n\nconst batchTask = (fn: () => Promise) => fn();\nconst concurrencyTask = (fns: (() => Promise)[]) => Promise.all(fns.map((fn) => fn()));\n\nconst shootStaffImage = async (\n\tsystem: starry.System,\n\tstaffIndex: number,\n\t{ paddingLeft = 0, scaling = 1, spec }: { paddingLeft?: number; scaling?: number; spec: { viewportHeight: number; viewportUnit: number } }\n): Promise => {\n\tif (!system || !system.backgroundImage) return null;\n\n\tconst staff = system.staves[staffIndex];\n\tif (!staff) return null;\n\n\tconst middleUnits = spec.viewportHeight / spec.viewportUnit / 2;\n\n\tconst width = system.imagePosition.width * spec.viewportUnit;\n\tconst height = system.imagePosition.height * spec.viewportUnit;\n\tconst x = system.imagePosition.x * spec.viewportUnit + paddingLeft;\n\tconst y = (system.imagePosition.y - (staff.top + staff.staffY - middleUnits)) * spec.viewportUnit;\n\n\tconst canvas = new Canvas(Math.round(width + x) * scaling, spec.viewportHeight * scaling);\n\tconst context = canvas.getContext('2d');\n\tcontext.fillStyle = 'white';\n\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\tcontext.drawImage(await loadImage(system.backgroundImage), x * scaling, y * scaling, width * scaling, height * scaling);\n\n\treturn canvas;\n\t// .substr(22);\t// remove the prefix of 'data:image/png;base64,'\n};\n\n/**\n * 根据布局检测结果进行截图\n * @param score\n * @param pageCanvas\n * @param page\n * @param detection\n */\nasync function shootImageByDetection({\n\tpage,\n\tscore,\n\tpageCanvas,\n}: {\n\tscore: starry.Score;\n\tpage: starry.Page;\n\tpageCanvas: Canvas; // 原始图片绘制好的canvas\n}) {\n\tif (!page?.layout?.areas?.length) {\n\t\treturn null;\n\t}\n\n\tpage.width = score.pageSize.width / score.unitSize;\n\tpage.height = score.pageSize.height / score.unitSize;\n\n\tconst correctCanvas = new Canvas(pageCanvas.width, pageCanvas.height);\n\tconst ctx = correctCanvas.getContext('2d');\n\n\tctx.save();\n\n\tconst { width, height } = correctCanvas;\n\tconst [a, b, c, d] = page.source.matrix;\n\n\tctx.setTransform(a, b, c, d, (-1 / 2) * width + (1 / 2) * a * width + (1 / 2) * b * height, (-1 / 2) * height + (1 / 2) * c * width + (1 / 2) * d * height);\n\n\tctx.drawImage(pageCanvas, 0, 0);\n\n\tctx.restore();\n\n\tconst interval = page.source.interval;\n\n\tpage.layout.areas.map((area, systemIndex) => {\n\t\tconsole.assert(area.staves?.middleRhos?.length, '[shootImageByDetection] empty area:', area);\n\n\t\tconst data = ctx.getImageData(area.x, area.y, area.width, area.height);\n\n\t\tconst canvas = new Canvas(area.width, area.height);\n\n\t\tconst context = canvas.getContext('2d');\n\t\t// context.rotate(-area.staves.theta);\n\t\tcontext.putImageData(data, 0, 0);\n\n\t\tconst detection = area.staves;\n\t\tconst size = { width: area.width, height: area.height };\n\n\t\tconst sourceCenter = {\n\t\t\tx: pageCanvas.width / 2 / interval,\n\t\t\ty: pageCanvas.height / 2 / interval,\n\t\t};\n\n\t\tconst position = {\n\t\t\tx: (area.x + area.staves.phi1) / interval - sourceCenter.x + page.width / 2,\n\t\t\ty: area.y / interval - sourceCenter.y + page.height / 2,\n\t\t};\n\n\t\tpage.systems[systemIndex] = constructSystem({\n\t\t\tpage,\n\t\t\tbackgroundImage: canvas.toBufferSync('png'),\n\t\t\tdetection,\n\t\t\timageSize: size,\n\t\t\tposition,\n\t\t});\n\t});\n\n\treturn correctCanvas;\n}\n\nasync function shootStaffBackgroundImage({ system, staff, staffIndex }: { system: starry.System; staff: starry.Staff; staffIndex: number }) {\n\tconst sourceCanvas = await shootStaffImage(system, staffIndex, {\n\t\tpaddingLeft: STAFF_PADDING_LEFT,\n\t\tspec: SEMANTIC_VISION_SPEC,\n\t});\n\n\tstaff.backgroundImage = sourceCanvas.toBufferSync('png');\n\n\tstaff.imagePosition = {\n\t\tx: -STAFF_PADDING_LEFT / SEMANTIC_VISION_SPEC.viewportUnit,\n\t\ty: staff.staffY - SEMANTIC_VISION_SPEC.viewportHeight / 2 / SEMANTIC_VISION_SPEC.viewportUnit,\n\t\twidth: sourceCanvas.width / SEMANTIC_VISION_SPEC.viewportUnit,\n\t\theight: sourceCanvas.height / SEMANTIC_VISION_SPEC.viewportUnit,\n\t};\n}\n\n/**\n * 单个staff的变形矫正\n * @param system\n * @param staff\n * @param staffIndex\n * @param gaugeImage\n * @param pyClients\n */\nasync function gaugeStaff({\n\tsystem,\n\tstaff,\n\tstaffIndex,\n\tgaugeImage,\n\tpyClients,\n}: {\n\tsystem: starry.System;\n\tstaff: starry.Staff;\n\tstaffIndex: number;\n\tgaugeImage: Buffer;\n\tpyClients: PyClients;\n}) {\n\tconst sourceCanvas = await shootStaffImage(system, staffIndex, {\n\t\tpaddingLeft: STAFF_PADDING_LEFT,\n\t\tspec: GAUGE_VISION_SPEC,\n\t\tscaling: 2,\n\t});\n\n\tconst sourceBuffer = sourceCanvas.toBufferSync('png');\n\n\tconst baseY = (system.middleY - (staff.top + staff.staffY)) * GAUGE_VISION_SPEC.viewportUnit + GAUGE_VISION_SPEC.viewportHeight / 2;\n\n\tconst { buffer, size } = await pyClients.predictScoreImages('gaugeRenderer', [sourceBuffer, gaugeImage, baseY]);\n\n\tstaff.backgroundImage = buffer;\n\n\tstaff.imagePosition = {\n\t\tx: -STAFF_PADDING_LEFT / GAUGE_VISION_SPEC.viewportUnit,\n\t\ty: staff.staffY - size.height / 2 / GAUGE_VISION_SPEC.viewportUnit,\n\t\twidth: size.width / GAUGE_VISION_SPEC.viewportUnit,\n\t\theight: size.height / GAUGE_VISION_SPEC.viewportUnit,\n\t};\n\n\tstaff.maskImage = null;\n}\n\n/**\n * 单个staff的降噪\n * @param staff\n * @param staffIndex\n * @param maskImage\n */\nasync function maskStaff({ staff, staffIndex, maskImage }: { staff: starry.Staff; staffIndex: number; maskImage: Buffer }) {\n\tconst img = await loadImage(maskImage);\n\n\tstaff.maskImage = maskImage;\n\tstaff.imagePosition = {\n\t\tx: -STAFF_PADDING_LEFT / MASK_VISION_SPEC.viewportUnit,\n\t\ty: staff.staffY - MASK_VISION_SPEC.viewportHeight / 2 / MASK_VISION_SPEC.viewportUnit,\n\t\twidth: img.width / MASK_VISION_SPEC.viewportUnit,\n\t\theight: img.height / MASK_VISION_SPEC.viewportUnit,\n\t};\n}\n\n/**\n * 单个staff的语义识别\n * @param score\n * @param staffIndex\n * @param system\n * @param staff\n * @param graph\n */\nasync function semanticStaff({\n\tscore,\n\tstaffIndex,\n\tsystem,\n\tstaff,\n\tgraph,\n}: {\n\tscore: starry.Score;\n\tstaffIndex: number;\n\tsystem: starry.System;\n\tstaff: starry.Staff;\n\tgraph: SemanticGraph;\n}) {\n\tgraph.offset(-STAFF_PADDING_LEFT / SEMANTIC_VISION_SPEC.viewportUnit, 0);\n\n\tsystem.assignSemantics(staffIndex, graph);\n\n\tstaff.assignSemantics(graph);\n\tstaff.clearPredictedTokens();\n\n\tscore.assembleSystem(system, score.settings?.semanticConfidenceThreshold || 1);\n}\n\nfunction replacePageImages(page: starry.Page, onReplaceImageKey: (src: string) => any) {\n\tconst tasks = [\n\t\t[page.source, 'url'],\n\t\t...page.systems\n\t\t\t.map((system) => {\n\t\t\t\treturn [\n\t\t\t\t\t[system, 'backgroundImage'],\n\t\t\t\t\t...system.staves\n\t\t\t\t\t\t.map((staff) => [\n\t\t\t\t\t\t\t[staff, 'backgroundImage'],\n\t\t\t\t\t\t\t[staff, 'maskImage'],\n\t\t\t\t\t\t])\n\t\t\t\t\t\t.flat(),\n\t\t\t\t];\n\t\t\t})\n\t\t\t.flat(),\n\t];\n\n\ttasks.map(([target, key]: [any, string]) => {\n\t\ttarget[key] = onReplaceImageKey(target[key]);\n\t});\n}\n\nexport type TaskProgress = { total?: number; finished?: number };\n\nexport interface OMRPage {\n\turl: string | Buffer;\n\tkey?: string;\n\tlayout?: LayoutResult;\n\trenew?: boolean;\n\tenableGauge?: boolean;\n}\n\nexport interface ProgressState {\n\tlayout?: TaskProgress;\n\ttext?: TaskProgress;\n\tgauge?: TaskProgress;\n\tmask?: TaskProgress;\n\tsemantic?: TaskProgress;\n\tregulate?: TaskProgress;\n\tbrackets?: TaskProgress;\n}\n\nclass OMRProgress {\n\tstate: ProgressState = {};\n\n\tonChange: (evt: ProgressState) => void;\n\n\tconstructor(onChange: (evt: ProgressState) => void) {\n\t\tthis.onChange = onChange;\n\t}\n\n\tsetTotal(stage: keyof ProgressState, total: number) {\n\t\tthis.state[stage] = this.state[stage] || {\n\t\t\ttotal,\n\t\t\tfinished: 0,\n\t\t};\n\t}\n\n\tincrease(stage: keyof ProgressState, step = 1) {\n\t\tconst info: TaskProgress = this.state[stage] || {\n\t\t\tfinished: 0,\n\t\t};\n\t\tinfo.finished += step;\n\n\t\tthis.onChange(this.state);\n\t}\n}\n\ntype SourceImage = string | Buffer;\n\nexport interface OMROption {\n\toutputWidth?: number;\n\ttitle?: string; // 曲谱标题\n\tpageStore?: {\n\t\thas?: (key: string) => Promise;\n\t\tget: (key: string) => Promise;\n\t\tset: (key: string, val: string) => Promise;\n\t};\n\trenew?: boolean;\n\tprocesses?: (keyof ProgressState)[]; // 选择流程\n\tonProgress?: (progress: ProgressState) => void;\n\tonReplaceImage?: (src: SourceImage) => Promise; // 替换所有图片地址,用于上传或者格式转换\n}\n\nconst lruCache = new WeakLRUCache();\n\n// 默认store\nconst pageStore = {\n\tasync get(key: string) {\n\t\treturn lruCache.getValue(key) as string;\n\t},\n\tasync set(key: string, val: string) {\n\t\tlruCache.setValue(key, val);\n\t},\n};\n\n/**\n * 默认将图片转换为webp格式的base64字符串\n * @param src\n */\nconst onReplaceImage = async (src: SourceImage) => {\n\tif (src instanceof Buffer || (typeof src === 'string' && (/^https?:\\/\\//.test(src) || /^data:image\\//.test(src)))) {\n\t\tconst webpBuffer = (await convertImage(src)).buffer;\n\t\treturn `data:image/webp;base64,${webpBuffer.toString('base64')}`;\n\t}\n\n\treturn src;\n};\n\n/**\n * 识别所有图片\n * @param pyClients\n * @param images\n * @param option\n */\nexport const predictPages = async (\n\tpyClients: PyClients,\n\timages: OMRPage[],\n\toption: OMROption = { outputWidth: 1200, pageStore, onReplaceImage }\n): Promise<{ score: starry.Score; omitPages: number[]; stat: OMRStat }> => {\n\tconst logger = pyClients.logger;\n\n\toption.outputWidth = option.outputWidth || 1200;\n\toption.pageStore = option.pageStore || pageStore;\n\toption.onReplaceImage = option.onReplaceImage || onReplaceImage;\n\n\toption.processes =\n\t\tArray.isArray(option.processes) && option.processes.length > 0 ? option.processes : ['layout', 'text', 'gauge', 'mask', 'semantic', 'brackets'];\n\tconst progress: OMRProgress = new OMRProgress(option.onProgress);\n\n\tconst t0 = Date.now();\n\n\t// 预处理删除不合法区域\n\timages.forEach((image) => {\n\t\tif (image.layout?.detection) {\n\t\t\timage.layout.detection.areas = image.layout.detection?.areas?.filter((a) => a?.staves?.middleRhos?.length > 0);\n\t\t} else {\n\t\t\tdelete image.layout;\n\t\t}\n\t});\n\n\tconst score = new starry.Score({\n\t\ttitle: option?.title,\n\t\tstavesCount: 2,\n\t\tpaperOptions: {\n\t\t\traggedLast: true,\n\t\t\traggedLastBottom: true,\n\t\t},\n\t\theaders: {},\n\t\tinstrumentDict: {},\n\t\tsettings: {\n\t\t\tenabledGauge: option.processes.includes('gauge'),\n\t\t\tsemanticConfidenceThreshold: 1,\n\t\t},\n\t});\n\n\tlogger.info(`[predictor]: download_source_images-${images.length}`);\n\n\t// 原始拍摄图\n\tconst originalImages: Image[] = await Promise.all(images.map((img) => loadImage(img.url as any)));\n\n\tlogger.info(`[predictor]: source_images_downloaded-${images.length}`);\n\n\t//const INPUT_IMAGE_WIDTH = images.filter((x) => x?.layout?.interval)?.[0]?.layout?.sourceSize?.width;\n\n\t/******************************* 布局识别 start *************************/\n\t// 输入给布局检测的图\n\tconst pageCanvasList: Canvas[] = originalImages.map((img, index) => scaleForLayout(img, images[index]!.layout?.sourceSize?.width ?? img.width));\n\n\tprogress.setTotal('layout', originalImages.length);\n\tprogress.setTotal('text', originalImages.length);\n\n\tconst detections = await Promise.all(\n\t\tpageCanvasList.map(async (cvs, key) => {\n\t\t\tif (!images[key].layout) return (await pyClients.predictScoreImages('layout', [cvs.toBufferSync('png')]))?.[0];\n\n\t\t\t// reinforce layout from front-end if no gauge\n\t\t\tif (!images[key].enableGauge && images[key]?.layout?.detection?.areas?.length)\n\t\t\t\treturn (await pyClients.predictScoreImages('layout$reinforce', [cvs.toBufferSync('png')], [images[key].layout]))?.[0];\n\n\t\t\treturn images[key].layout;\n\t\t})\n\t);\n\n\tdetections.forEach((page) => {\n\t\tpage.detection.areas = page.detection?.areas?.filter((a) => a?.staves?.middleRhos?.length > 0);\n\t});\n\n\tconst imageURLMap = new Map();\n\tconst collectImage = async (source: SourceImage): Promise => {\n\t\tconst url = await option.onReplaceImage(source);\n\t\timageURLMap.set(source, url);\n\t};\n\n\t// 根据所有页面的宽高比决定全局显示尺寸\n\tsetGlobalPageSize(score, detections, option.outputWidth);\n\n\tasync function createPage(detect, pageIndex) {\n\t\tconst { url, key, layout, enableGauge } = images[pageIndex];\n\n\t\tconst pageKey = sha1(JSON.stringify({ key: key || url, layout, enableGauge }));\n\n\t\tconst cachedPageJson = await option.pageStore.get(pageKey);\n\n\t\tconst omit = !option.renew && ((cachedPageJson && !images[pageIndex].renew) || !detect.detection.areas?.length);\n\n\t\tconst page = (score.pages[pageIndex] =\n\t\t\tomit && cachedPageJson\n\t\t\t\t? starry.recoverJSON(cachedPageJson, starry)\n\t\t\t\t: new starry.Page({\n\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\tname: key || (typeof url === 'string' && /https?:\\/\\//.test(url) ? url : null),\n\t\t\t\t\t\t\tsize: 0,\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\tcrop: {\n\t\t\t\t\t\t\t\tunit: '%',\n\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\t\twidth: 100,\n\t\t\t\t\t\t\t\theight: 100,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdimensions: detect.sourceSize,\n\t\t\t\t\t\t\tmatrix: [Math.cos(detect.theta), -Math.sin(detect.theta), Math.sin(detect.theta), Math.cos(detect.theta), 0, 0],\n\t\t\t\t\t\t\tinterval: detect.interval,\n\t\t\t\t\t\t\tneedGauge: images[pageIndex].enableGauge,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlayout: detect.detection,\n\t\t\t\t }));\n\n\t\tconst correctCanvas = omit\n\t\t\t? null\n\t\t\t: await shootImageByDetection({\n\t\t\t\t\tscore,\n\t\t\t\t\tpage,\n\t\t\t\t\tpageCanvas: pageCanvasList[pageIndex],\n\t\t\t });\n\n\t\tprogress.increase('layout');\n\n\t\treturn {\n\t\t\tpage,\n\t\t\tomit,\n\t\t\thash: pageKey,\n\t\t\tcorrectCanvas,\n\t\t};\n\t}\n\n\tconst systemsCount = detections.reduce((acc, x) => acc + (x.detection.areas?.length ?? 0), 0);\n\tconst stavesCount = detections.reduce((acc, x) => acc + (x.detection.areas?.reduce?.((a, y) => a + (y.staves?.middleRhos?.length ?? 0), 0) ?? 0), 0);\n\n\tprogress.setTotal('gauge', stavesCount);\n\tprogress.setTotal('mask', stavesCount);\n\tprogress.setTotal('semantic', stavesCount);\n\tprogress.setTotal('brackets', systemsCount);\n\n\tconst allTasks = [];\n\n\tconst omitPages = [];\n\n\tconst t1 = Date.now();\n\n\tlet n_page = 0;\n\n\tfor (const pageIndex of detections.keys()) {\n\t\tconst pageTasks = [];\n\n\t\tconst { page, correctCanvas, omit, hash } = await createPage(detections[pageIndex], pageIndex);\n\n\t\tpageTasks.push(collectImage(page.source.url));\n\t\tpageTasks.push(...page.systems.map((system) => collectImage(system.backgroundImage)));\n\n\t\tlogger.info(`[predictor]: check_cache_pageIndex-${pageIndex} omit: ${omit}`);\n\t\tif (omit) {\n\t\t\tomitPages.push(pageIndex);\n\t\t} else {\n\t\t\tconst staves = page.systems\n\t\t\t\t.map((system, systemIndex) => system.staves.map((staff, staffIndex) => ({ pageIndex, systemIndex, staffIndex, page, system, staff })))\n\t\t\t\t.flat(1);\n\n\t\t\tawait concurrencyTask([\n\t\t\t\t/******************************* 括号检测 start *************************/\n\t\t\t\tasync () => {\n\t\t\t\t\tif (!option.processes.includes('brackets')) return;\n\n\t\t\t\t\tconst detection = page.layout;\n\t\t\t\t\tconst interval = page.source.interval;\n\n\t\t\t\t\tconst startTime = Date.now();\n\n\t\t\t\t\tconst bracketImages = page.systems.map((system, systemIndex) => {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\tstaves: { middleRhos, phi1 },\n\t\t\t\t\t\t} = detection.areas[systemIndex];\n\n\t\t\t\t\t\tconst topMid = middleRhos[0];\n\t\t\t\t\t\tconst bottomMid = middleRhos[middleRhos.length - 1];\n\n\t\t\t\t\t\tconst sourceRect = {\n\t\t\t\t\t\t\tx: x + phi1 - 4 * interval,\n\t\t\t\t\t\t\ty: y + topMid - 4 * interval,\n\t\t\t\t\t\t\twidth: 8 * interval,\n\t\t\t\t\t\t\theight: bottomMid - topMid + 8 * interval,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst OUTPUT_INTERVAL = 8;\n\n\t\t\t\t\t\tconst canvas = new Canvas(OUTPUT_INTERVAL * 8, (sourceRect.height / interval) * OUTPUT_INTERVAL);\n\n\t\t\t\t\t\tconst context = canvas.getContext('2d');\n\t\t\t\t\t\tcontext.drawImage(correctCanvas, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height, 0, 0, canvas.width, canvas.height);\n\n\t\t\t\t\t\t// console.log(pageIndex, systemIndex, JSON.stringify(sourceRect), correctCanvas.width, correctCanvas.height)\n\t\t\t\t\t\t// const pctx = canvas.getContext('2d')\n\t\t\t\t\t\t// pctx.strokeStyle = 'red'\n\t\t\t\t\t\t// pctx.fillStyle = 'rgba(255, 0, 0, 0.2)'\n\t\t\t\t\t\t// pctx.fillRect(sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height)\n\t\t\t\t\t\t// const area = detections[pageIndex].detection.areas[systemIndex]\n\t\t\t\t\t\t// pctx.strokeStyle = 'green'\n\t\t\t\t\t\t// pctx.fillStyle = 'rgba(0, 255, 0, 0.1)'\n\t\t\t\t\t\t// pctx.fillRect(area.x, area.y, area.width, area.height)\n\t\t\t\t\t\t// pctx.fillRect(area.x, area.y, area.width, area.height)\n\t\t\t\t\t\t// require('fs').writeFile(`test--system-${systemIndex}.png`, canvas.toBufferSync('png'), () => {})\n\t\t\t\t\t\t// require('fs-extra').writeFile(`test--brackets-${pageIndex}-${systemIndex}.png`, canvas.toBufferSync('png'))\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\tbuffer: canvas.toBufferSync('png'),\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\n\t\t\t\t\tlogger.info(`[predictor]: brackets js [pageIndex-${pageIndex}] duration: ${Date.now() - startTime}`);\n\n\t\t\t\t\tconst bracketsRes = await pyClients.predictScoreImages('brackets', { buffers: bracketImages.map((x) => x.buffer) });\n\t\t\t\t\tprogress.increase('brackets', bracketImages.length);\n\n\t\t\t\t\tbracketImages.forEach(({ system }, index) => {\n\t\t\t\t\t\tif (bracketsRes[index]) {\n\t\t\t\t\t\t\tsystem.bracketsAppearance = bracketsRes[index];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t/******************************* 括号检测 end *************************/\n\n\t\t\t\t/******************************* 文本识别 start *************************/\n\t\t\t\tasync () => {\n\t\t\t\t\tif (!option.processes.includes('text')) return;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst startTime = Date.now();\n\n\t\t\t\t\t\t// await require('fs-extra').writeFile(`test--text-location-${pageIndex}.png`, correctCanvas.toBufferSync('png'))\n\t\t\t\t\t\tconst bufferForText = correctCanvas.toBufferSync('png');\n\n\t\t\t\t\t\tconst resultLoc = await pyClients.predictScoreImages('textLoc', [bufferForText]);\n\n\t\t\t\t\t\tconst location = resultLoc[0].filter((box) => box.score > 0);\n\n\t\t\t\t\t\tif (location.length > 0) {\n\t\t\t\t\t\t\tconst [resultOCR] = await pyClients.predictScoreImages('textOcr', {\n\t\t\t\t\t\t\t\tbuffers: [bufferForText],\n\t\t\t\t\t\t\t\tlocation,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tpage.assignTexts(resultOCR.areas, resultOCR.imageSize);\n\t\t\t\t\t\t\tpage.assemble();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlogger.info(`[predictor]: text js [pageIndex-${pageIndex}] duration: ${Date.now() - startTime}`);\n\n\t\t\t\t\t\tprogress.increase('text');\n\n\t\t\t\t\t\tif (!option.title) {\n\t\t\t\t\t\t\tconst coverTexts: {\n\t\t\t\t\t\t\t\tconfidence: number;\n\t\t\t\t\t\t\t\tfontSize: number;\n\t\t\t\t\t\t\t\tid: string;\n\t\t\t\t\t\t\t\ttext: string;\n\t\t\t\t\t\t\t\ttextType: 'Title' | 'Author';\n\t\t\t\t\t\t\t\ttype: starry.TokenType;\n\t\t\t\t\t\t\t\twidth_: number;\n\t\t\t\t\t\t\t\tx: number;\n\t\t\t\t\t\t\t\ty: number;\n\t\t\t\t\t\t\t}[] = score.pages[0].tokens as any;\n\n\t\t\t\t\t\t\tif (Array.isArray(coverTexts) && coverTexts.length > 0) {\n\t\t\t\t\t\t\t\tconst [titleToken] = coverTexts\n\t\t\t\t\t\t\t\t\t.filter((x) => x.type === starry.TokenType.Text && x.textType === 'Title')\n\t\t\t\t\t\t\t\t\t.sort((a, b) => b.fontSize - a.fontSize);\n\n\t\t\t\t\t\t\t\tif (titleToken) {\n\t\t\t\t\t\t\t\t\tscore.title = titleToken.text;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tlogger.error(`[predictor]: text js [pageIndex-${pageIndex}] ${JSON.stringify(err)}`);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t/******************************* 文本识别 end *************************/\n\t\t\t\tasync () => {\n\t\t\t\t\t/******************************* 变形矫正 start *************************/\n\t\t\t\t\tawait batchTask(async () => {\n\t\t\t\t\t\tconst disableGauge = !option.processes.includes('gauge') || images[pageIndex].enableGauge === false;\n\n\t\t\t\t\t\tif (!disableGauge) {\n\t\t\t\t\t\t\tconst gaugeRes = await pyClients.predictScoreImages(\n\t\t\t\t\t\t\t\t'gauge',\n\t\t\t\t\t\t\t\tawait Promise.all(\n\t\t\t\t\t\t\t\t\tstaves.map(async ({ staffIndex, system }) => {\n\t\t\t\t\t\t\t\t\t\tconst startTime = Date.now();\n\t\t\t\t\t\t\t\t\t\tconst sourceCanvas = await shootStaffImage(system, staffIndex, {\n\t\t\t\t\t\t\t\t\t\t\tpaddingLeft: STAFF_PADDING_LEFT,\n\t\t\t\t\t\t\t\t\t\t\tspec: GAUGE_VISION_SPEC,\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\tlogger.info(`[predictor]: gauge js shoot [page-${pageIndex}, staff-${staffIndex}] duration: ${Date.now() - startTime}`);\n\n\t\t\t\t\t\t\t\t\t\treturn sourceCanvas.toBufferSync('png');\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tfor (const [index, { system, staff, pageIndex, staffIndex }] of staves.entries()) {\n\t\t\t\t\t\t\t\tconst startTime = Date.now();\n\n\t\t\t\t\t\t\t\tlogger.info(`[predictor]: gauge js [page-${pageIndex}, staff-${staffIndex}] start..`);\n\t\t\t\t\t\t\t\tawait gaugeStaff({\n\t\t\t\t\t\t\t\t\tpyClients,\n\t\t\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\t\t\tstaff,\n\t\t\t\t\t\t\t\t\tstaffIndex,\n\t\t\t\t\t\t\t\t\tgaugeImage: gaugeRes[index].image,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tlogger.info(`[predictor]: gauge js [page-${pageIndex}, staff-${staffIndex}] duration: ${Date.now() - startTime}`);\n\n\t\t\t\t\t\t\t\tprogress.increase('gauge');\n\n\t\t\t\t\t\t\t\tpageTasks.push(collectImage(staff.backgroundImage));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (const [_, { system, staff, staffIndex }] of staves.entries()) {\n\t\t\t\t\t\t\t\tawait shootStaffBackgroundImage({\n\t\t\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\t\t\tstaff,\n\t\t\t\t\t\t\t\t\tstaffIndex,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tpageTasks.push(collectImage(staff.backgroundImage));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t/******************************* 变形矫正 end *************************/\n\n\t\t\t\t\tawait concurrencyTask([\n\t\t\t\t\t\t/******************************* 降噪 start *************************/\n\t\t\t\t\t\tasync () => {\n\t\t\t\t\t\t\tif (!option.processes.includes('mask')) return;\n\n\t\t\t\t\t\t\tconst maskRes = await pyClients.predictScoreImages(\n\t\t\t\t\t\t\t\t'mask',\n\t\t\t\t\t\t\t\tstaves.map(({ staff }) => staff.backgroundImage as Buffer)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tfor (const [index, { staff, staffIndex }] of staves.entries()) {\n\t\t\t\t\t\t\t\tconst startTime = Date.now();\n\n\t\t\t\t\t\t\t\tawait maskStaff({\n\t\t\t\t\t\t\t\t\tstaff,\n\t\t\t\t\t\t\t\t\tstaffIndex,\n\t\t\t\t\t\t\t\t\tmaskImage: maskRes[index].image,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tlogger.info(`[predictor]: mask js [page-${pageIndex}, ${index}, staff-${staffIndex}] duration: ${Date.now() - startTime}`);\n\t\t\t\t\t\t\t\tprogress.increase('mask');\n\n\t\t\t\t\t\t\t\tpageTasks.push(collectImage(staff.maskImage));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/******************************* 降噪 end *************************/\n\n\t\t\t\t\t\t/******************************* 语义识别 start *************************/\n\t\t\t\t\t\tasync () => {\n\t\t\t\t\t\t\tif (!option.processes.includes('semantic')) return;\n\n\t\t\t\t\t\t\tconst semanticRes = starry.recoverJSON(\n\t\t\t\t\t\t\t\tawait pyClients.predictScoreImages(\n\t\t\t\t\t\t\t\t\t'semantic',\n\t\t\t\t\t\t\t\t\tstaves.map(({ staff }) => staff.backgroundImage as Buffer)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tstarry\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tstaves.forEach(({ system }) => system.clearTokens());\n\n\t\t\t\t\t\t\tfor (const [index, { staffIndex, system, staff }] of staves.entries()) {\n\t\t\t\t\t\t\t\tconst startTime = Date.now();\n\n\t\t\t\t\t\t\t\tawait semanticStaff({\n\t\t\t\t\t\t\t\t\tscore,\n\t\t\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\t\t\tstaff,\n\t\t\t\t\t\t\t\t\tstaffIndex,\n\t\t\t\t\t\t\t\t\tgraph: semanticRes[index],\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t\t\t\t`[predictor]: semantic js [page-${pageIndex}, system-${system.index}, staff-${staff.index}] duration: ${\n\t\t\t\t\t\t\t\t\t\tDate.now() - startTime\n\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tprogress.increase('semantic');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/******************************* 语义识别 end *************************/\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t]);\n\n\t\t\t++n_page;\n\t\t}\n\n\t\tallTasks.push(\n\t\t\tPromise.all(pageTasks).then(() => {\n\t\t\t\treplacePageImages(page, (src) => imageURLMap.get(src));\n\t\t\t\tlogger.info(`[predictor]: pageStore set: [${pageIndex}]`);\n\t\t\t\treturn option.pageStore.set(hash, JSON.stringify(page));\n\t\t\t})\n\t\t);\n\t}\n\n\tconst t2 = Date.now();\n\n\tawait Promise.all(allTasks);\n\n\tlogger.info(`[predictor]: inferenceStaffLayout: ${score.title}, [${score.systems.length}]`);\n\n\tscore.inferenceStaffLayout();\n\n\tlogger.info(`[predictor]: done: ${score.title}`);\n\n\t// correct semantic ids\n\tscore.assemble();\n\n\tconst t3 = Date.now();\n\n\treturn {\n\t\tscore,\n\t\tomitPages,\n\t\tstat: {\n\t\t\tcost: t3 - t0,\n\t\t\tpagesCost: t2 - t1,\n\t\t\tpages: n_page,\n\t\t},\n\t};\n};\n\nexport const abstractOMRStats = (stats: OMRStat[]): OMRSummary => {\n\tconst { costTotal, pagesCostTotal, pagesTotal } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tcostTotal: sum.costTotal + stat.cost,\n\t\t\tpagesCostTotal: sum.pagesCostTotal + stat.pagesCost,\n\t\t\tpagesTotal: sum.pagesTotal + stat.pages,\n\t\t}),\n\t\t{ costTotal: 0, pagesCostTotal: 0, pagesTotal: 0 }\n\t);\n\n\treturn {\n\t\tcostTotal,\n\t\tcostPerPage: pagesTotal ? costTotal / pagesTotal : null,\n\t\tpagesTotal,\n\t\tscoreN: stats.length,\n\t};\n};\n","import { EventTerm } from './term';\nimport type { SpartitoMeasure } from './spartitoMeasure';\n\ninterface EventRectification {\n\tid: number;\n\tdivision?: number;\n\tdots?: number;\n}\n\n// Here suppose sum of pvals equal to 1.\nconst multinomial_1 = (pvals: number[]): number => {\n\tconst n = Math.random();\n\n\tlet s = 0;\n\tfor (let i = 0; i < pvals.length; ++i) {\n\t\ts += pvals[i];\n\t\tif (s > n) return i;\n\t}\n\n\treturn pvals.length - 1;\n};\n\nconst looseVector = (ns: number[], factor = 0.9): number[] => {\n\tconst logits = ns.map((n) => Math.log(n) * factor);\n\tconst n2 = logits.map(Math.exp);\n\n\tconst sum = n2.reduce((sum, x) => sum + x, 0);\n\n\treturn n2.map((x) => x / sum);\n};\n\nconst looseEvent = (event: EventTerm): EventTerm => {\n\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return event;\n\n\tconst divisionVector = event.predisposition?.divisionVector ? looseVector(event.predisposition.divisionVector) : null;\n\tconst dotsVector = event.predisposition?.dotsVector ? looseVector(event.predisposition.dotsVector) : null;\n\n\treturn new EventTerm({\n\t\t...event,\n\t\tpredisposition: {\n\t\t\t...event.predisposition,\n\t\t\tdivisionVector,\n\t\t\tdotsVector,\n\t\t},\n\t});\n};\n\nclass MeasureRectification {\n\tevents: EventRectification[];\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\ttoString(): string {\n\t\treturn this.events\n\t\t\t.map((event) => {\n\t\t\t\tif (!event) return '';\n\n\t\t\t\tconst { division = '', dots = '' } = event;\n\t\t\t\treturn `${division}|${dots}`;\n\t\t\t})\n\t\t\t.join(',');\n\t}\n\n\tstatic default(events: EventTerm[]): MeasureRectification {\n\t\treturn new MeasureRectification({\n\t\t\tevents: events.map((event) => {\n\t\t\t\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return null;\n\n\t\t\t\tconst division = event.predisposition.divisionVector ? event.division : undefined;\n\t\t\t\tconst dots = event.predisposition.dotsVector ? event.dots : undefined;\n\n\t\t\t\treturn { id: event.id, division, dots };\n\t\t\t}),\n\t\t});\n\t}\n\n\tstatic roll(events: EventTerm[]): MeasureRectification {\n\t\treturn new MeasureRectification({\n\t\t\tevents: events.map((event) => {\n\t\t\t\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return null;\n\n\t\t\t\tlet division = undefined;\n\t\t\t\tlet dots = undefined;\n\n\t\t\t\tif (event.predisposition.divisionVector) division = multinomial_1(event.predisposition.divisionVector);\n\n\t\t\t\tif (event.predisposition.dotsVector) dots = multinomial_1(event.predisposition.dotsVector);\n\n\t\t\t\treturn { id: event.id, division, dots };\n\t\t\t}),\n\t\t});\n\t}\n}\n\nconst genMeasureRectifications = function* (measure: SpartitoMeasure): Generator {\n\tconst keys = new Set();\n\n\tconst origin = MeasureRectification.default(measure.events);\n\tkeys.add(origin.toString());\n\n\tyield origin;\n\n\tlet stale = 0;\n\tlet events = measure.events;\n\n\twhile (stale < 100) {\n\t\tif (stale && stale % 10 === 0) events = events.map(looseEvent);\n\n\t\tconst rectification = MeasureRectification.roll(events);\n\t\tconst key = rectification.toString();\n\n\t\tif (keys.has(key)) {\n\t\t\t++stale;\n\t\t\tcontinue;\n\t\t}\n\n\t\tstale = 0;\n\n\t\tkeys.add(key);\n\t\tyield rectification;\n\t}\n};\n\nexport { MeasureRectification, genMeasureRectifications };\n","import { WeakLRUCache } from 'weak-lru-cache';\n\nimport { RegulationSolution, SpartitoMeasure } from '../../src/starry';\n\nconst lruCache = new WeakLRUCache();\n\ninterface SolutionStore {\n\tget: (key: string) => Promise;\n\tset: (key: string, val: RegulationSolution) => Promise;\n\tbatchGet: (keys: string[]) => Promise;\n}\n\n// 默认store\nconst DefaultSolutionStore: SolutionStore = {\n\tasync get(key: string) {\n\t\treturn lruCache.getValue(key) as RegulationSolution;\n\t},\n\tasync set(key: string, val: RegulationSolution) {\n\t\tlruCache.setValue(key, val);\n\t},\n\tasync batchGet(keys: string[]) {\n\t\treturn keys.map((key) => lruCache.getValue(key) as RegulationSolution);\n\t},\n};\n\nconst enum MeasureStatus {\n\tDiscard = -1,\n\tSolved = 0,\n\tIssue = 1,\n\tFatal = 2,\n}\n\ninterface IssueMeasure {\n\tscoreId: string;\n\tmeasureIndex: number;\n\tmeasure: SpartitoMeasure;\n\tstatus: MeasureStatus;\n}\n\ntype SaveIssueMeasure = (data: Omit) => void;\n\nexport { SolutionStore, DefaultSolutionStore, MeasureStatus, IssueMeasure, SaveIssueMeasure };\n","import * as starry from '../../src/starry';\nimport { Logger } from './ZeroClient';\nimport { SolutionStore, DefaultSolutionStore, SaveIssueMeasure, MeasureStatus } from './store';\n\ninterface BeadRegulationCounting {\n\tcached: number;\n\tsimple: number;\n\tcomputed: number;\n\ttryTimes: number;\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\ninterface RegulationBeadStat {\n\ttotalCost: number; // in milliseconds\n\tpickerCost: number; // in milliseconds\n\tmeasures: BeadRegulationCounting;\n\tqualityScore: number;\n}\n\ninterface RegulationBeadSummary {\n\tscoreN: number;\n\n\ttotalCost: number; // in milliseconds\n\tpickerCost: number; // in milliseconds\n\tcostPerMeasure: number | null; // in milliseconds\n\tcostPerTime: number | null; // in milliseconds\n\n\tcached: number;\n\tsimple: number;\n\tcomputed: number;\n\ttryTimes: number;\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\ninterface ProgressInfo {\n\tpass: number;\n\tremaining: number;\n\ttotal: number;\n}\n\ninterface RegulateBeadOption {\n\tlogger?: Logger;\n\tpickers: starry.BeadPicker[];\n\tsolutionStore?: SolutionStore;\n\tignoreCache?: boolean;\n\tfreshOnly?: boolean;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n\tonProgress?: (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean, progress: ProgressInfo) => void;\n\tonPassStart?: (pass: number, conditionName: string, pendingCount: number) => void;\n}\n\ninterface MeasureReord {\n\torigin: starry.SpartitoMeasure;\n\tcurrent: starry.SpartitoMeasure;\n\tevaluation?: starry.MeasureEvaluation;\n\tbaseQuality: number;\n\tpicker: starry.BeadPicker;\n}\n\ninterface BeadSolverOptions {\n\tstopLoss: number;\n\tquotaMax: number;\n\tquotaFactor: number;\n\tptFactor: number;\n}\n\nenum PendingCondition {\n\tErrorOnly,\n\tNotFine,\n\tImperfect,\n}\n\nconst isPending = (evaluation: starry.MeasureEvaluation, condition: PendingCondition) => {\n\tswitch (condition) {\n\t\tcase PendingCondition.ErrorOnly:\n\t\t\treturn evaluation.error;\n\n\t\tcase PendingCondition.Imperfect:\n\t\t\treturn !evaluation.perfect;\n\t}\n\n\treturn !evaluation.fine;\n};\n\ntype OnUpdate = (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean) => void;\n\nconst solveMeasureRecords = async (\n\trecords: MeasureReord[],\n\tonUpdate: OnUpdate,\n\tstdout: NodeJS.WritableStream | null,\n\toptions: Partial,\n\tpendingCondition: PendingCondition = PendingCondition.NotFine,\n\tpass: number = 0,\n\tonProgress?: RegulateBeadOption['onProgress']\n): Promise => {\n\tconst pendingRecords = records.filter(({ evaluation }) => !evaluation || isPending(evaluation, pendingCondition));\n\tstdout?.write('.'.repeat(pendingRecords.length));\n\tstdout?.write('\\b'.repeat(pendingRecords.length));\n\n\tconst total = pendingRecords.length;\n\tlet done = 0;\n\n\tfor (const record of pendingRecords) {\n\t\tconst measure = record.current.deepCopy();\n\t\tmeasure.staffGroups = record.current.staffGroups;\n\n\t\tconst solution = await starry.beadSolver.solveMeasure(measure, { picker: record.picker, ...options });\n\t\tmeasure.applySolution(solution);\n\n\t\tconst evaluation = starry.evaluateMeasure(measure);\n\t\tconst better =\n\t\t\t!record.evaluation ||\n\t\t\tevaluation.fine > record.evaluation.fine ||\n\t\t\t(evaluation.qualityScore > record.evaluation.qualityScore && evaluation.fine === record.evaluation.fine);\n\t\tif (better) {\n\t\t\trecord.evaluation = evaluation;\n\t\t\tObject.assign(record.current, measure);\n\t\t}\n\n\t\tonUpdate(record.current, evaluation, better);\n\n\t\tdone++;\n\t\tonProgress?.(record.current, evaluation, better, { pass, remaining: total - done, total });\n\t}\n\n\tif (pendingRecords.length) stdout?.write('\\n');\n\n\treturn pendingRecords.length;\n};\n\nconst regulateWithBeadSolver = async (\n\tscore: starry.Score,\n\t{ logger, pickers, solutionStore = DefaultSolutionStore, ignoreCache, freshOnly, onSaveIssueMeasure, onProgress, onPassStart }: RegulateBeadOption\n): Promise => {\n\tscore.spartito = undefined;\n\tscore.assemble();\n\tconst spartito = score.makeSpartito();\n\n\tspartito.measures.forEach((measure) => score.assignBackgroundForMeasure(measure));\n\n\tconst t0 = Date.now();\n\tlogger?.info(`[regulateWithBeadSolver] begin, measure total: ${spartito.measures.length}.`, ignoreCache ? 'ignoreCache' : '', freshOnly ? 'freshOnly' : '');\n\n\tconst records = spartito.measures\n\t\t.filter((measure) => measure.events?.length && !measure.patched)\n\t\t.map(\n\t\t\t(measure) =>\n\t\t\t\t({\n\t\t\t\t\torigin: measure.deepCopy(),\n\t\t\t\t\tcurrent: measure,\n\t\t\t\t\tevaluation: undefined,\n\t\t\t\t\tbaseQuality: 0,\n\t\t\t\t} as MeasureReord)\n\t\t);\n\n\t// rectify time signature\n\tfor (const measure of spartito.measures.filter((measure) => measure.events?.length)) {\n\t\tconst picker = pickers.find((picker) => picker.n_seq > measure.events.length + 1);\n\t\tif (picker) await starry.beadSolver.estimateMeasure(measure, picker);\n\t}\n\tspartito.rectifyTimeSignatures(logger as any);\n\n\t// zero pickers' cost\n\tpickers.forEach((picker) => (picker.cost = 0));\n\n\tconst counting = {\n\t\tcached: 0,\n\t\tsimple: 0,\n\t\tcomputed: 0,\n\t\ttryTimes: 0,\n\t\tsolved: 0,\n\t\tissue: 0,\n\t\tfatal: 0,\n\t};\n\n\tlogger?.info(`[regulateWithBeadSolver] measures estimation finished.`);\n\n\t// apply solutions\n\tif (solutionStore && !ignoreCache)\n\t\tfor (const record of records) {\n\t\t\tconst solution = await solutionStore.get(record.origin.regulationHash0);\n\t\t\tif (solution) {\n\t\t\t\trecord.current.applySolution(solution);\n\t\t\t\t++counting.cached;\n\n\t\t\t\trecord.evaluation = starry.evaluateMeasure(record.current);\n\t\t\t\trecord.baseQuality = record.evaluation.qualityScore;\n\t\t\t}\n\t\t}\n\n\tlogger?.info('[regulateWithBeadSolver]', `${counting.cached}/${records.length}`, 'solutions loaded.');\n\n\tconst stdout = logger ? null : process.stdout;\n\tif (counting.cached) stdout?.write(`${counting.cached}c`);\n\n\trecords.forEach((record) => {\n\t\tconst picker = pickers.find((picker) => picker.n_seq > record.current.events.length + 1);\n\t\tif (!picker) {\n\t\t\tlogger?.info(`[regulateWithBeadSolver] measure[${record.current.measureIndex}] size out of range:`, record.current.events.length);\n\t\t} else record.picker = picker;\n\t});\n\n\tconst pendingRecords = records.filter((record) => record.picker && (!record.evaluation || (!record.evaluation.fine && !freshOnly))) as (MeasureReord & {\n\t\tevaluation: starry.MeasureEvaluation;\n\t})[];\n\n\t// solve by simple policy\n\tpendingRecords.forEach((record) => {\n\t\tconst measure = record.current.deepCopy();\n\t\tmeasure.staffGroups = record.current.staffGroups;\n\n\t\tmeasure.regulate({ policy: 'simple' });\n\n\t\tconst evaluation = starry.evaluateMeasure(measure);\n\t\tconst better = !record.evaluation || evaluation.qualityScore > record.evaluation.qualityScore;\n\t\tif (better) {\n\t\t\trecord.evaluation = evaluation;\n\t\t\tObject.assign(record.current, measure);\n\n\t\t\tif (evaluation.perfect) {\n\t\t\t\tlogger?.info(`[regulateWithBeadSolver] measure[${record.current.measureIndex}] regulated by simple policy.`);\n\t\t\t\t++counting.simple;\n\t\t\t}\n\t\t}\n\t});\n\tcounting.computed = pendingRecords.length - counting.simple;\n\n\tif (counting.simple) stdout?.write(`${counting.simple}s`);\n\n\tconst onUpdate = (measure, evaluation, better) => {\n\t\tlogger?.info(\n\t\t\t`[regulateWithBeadSolver] measure[${measure.measureIndex}/${spartito.measures.length}] regulated${\n\t\t\t\tbetter ? '+' : '-'\n\t\t\t}: ${evaluation.qualityScore.toFixed(3)}, ${evaluation.fine ? 'solved' : evaluation.error ? 'error' : 'issue'}, ${measure.regulationHash}`\n\t\t);\n\n\t\tstdout?.write(`\\x1b[${evaluation.fine ? '32' : evaluation.error ? '31' : '33'}m${better ? '+' : '-'}\\x1b[0m`);\n\t};\n\n\t// Global progress: total = all measures, remaining = non-fine measures across all passes\n\tconst totalMeasures = spartito.measures.length;\n\tconst computeRemaining = () => pendingRecords.filter((r) => !r.evaluation?.fine).length;\n\tconst wrappedOnProgress = onProgress\n\t\t? (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean, progress: ProgressInfo) => {\n\t\t\t\tonProgress(measure, evaluation, better, { pass: progress.pass, remaining: computeRemaining(), total: totalMeasures });\n\t\t }\n\t\t: undefined;\n\n\tonPassStart?.(1, 'Imperfect', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.05, quotaMax: 200, quotaFactor: 3, ptFactor: 1 },\n\t\tPendingCondition.Imperfect,\n\t\t1,\n\t\twrappedOnProgress\n\t);\n\tonPassStart?.(2, 'NotFine', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.08, quotaMax: 1000, quotaFactor: 20, ptFactor: 1.6 },\n\t\tPendingCondition.NotFine,\n\t\t2,\n\t\twrappedOnProgress\n\t);\n\tonPassStart?.(3, 'ErrorOnly', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.08, quotaMax: 1000, quotaFactor: 40, ptFactor: 3 },\n\t\tPendingCondition.ErrorOnly,\n\t\t3,\n\t\twrappedOnProgress\n\t);\n\n\tpendingRecords.forEach(({ evaluation, baseQuality, current, origin }) => {\n\t\tif (evaluation.fine) ++counting.solved;\n\t\telse if (evaluation.error) ++counting.fatal;\n\t\telse ++counting.issue;\n\n\t\tif (evaluation.qualityScore > baseQuality || !baseQuality) {\n\t\t\tsolutionStore.set(origin.regulationHash0, { ...current.asSolution(origin), priority: -current?.solutionStat?.loss! });\n\t\t\tif (current.regulationHash !== origin.regulationHash0)\n\t\t\t\tsolutionStore.set(current.regulationHash, { ...current.asSolution(), priority: -current?.solutionStat?.loss! });\n\t\t\t//console.log('better:', current.measureIndex, evaluation.qualityScore, baseQuality);\n\t\t}\n\n\t\tif (!evaluation.fine) {\n\t\t\tonSaveIssueMeasure?.({\n\t\t\t\tmeasureIndex: current.measureIndex,\n\t\t\t\tmeasure: new starry.EditableMeasure(current),\n\t\t\t\tstatus: evaluation.error ? MeasureStatus.Fatal : MeasureStatus.Issue,\n\t\t\t});\n\t\t}\n\t});\n\n\tconst t1 = Date.now();\n\tconst pickerCost = pickers.reduce((cost, picker) => cost + picker.cost, 0);\n\n\tconst qualityScore = spartito.qualityScore;\n\tconst totalCost = t1 - t0;\n\n\tlogger?.info('[regulateWithBeadSolver] done in ', totalCost, 'ms, qualityScore:', qualityScore);\n\n\t// zero 'cached' statistics for freshOnly mode\n\tif (freshOnly) counting.cached = 0;\n\n\treturn {\n\t\ttotalCost: t1 - t0,\n\t\tpickerCost,\n\t\tmeasures: counting,\n\t\tqualityScore,\n\t};\n};\n\nconst abstractRegulationBeadStats = (stats: RegulationBeadStat[]): RegulationBeadSummary => {\n\tconst { totalCost, pickerCost, measureN, timeN } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\ttotalCost: sum.totalCost + stat.totalCost,\n\t\t\tpickerCost: sum.pickerCost + stat.pickerCost,\n\t\t\tmeasureN: sum.measureN + stat.measures.computed,\n\t\t\ttimeN: sum.timeN + stat.measures.tryTimes,\n\t\t}),\n\t\t{\n\t\t\ttotalCost: 0,\n\t\t\tpickerCost: 0,\n\t\t\tmeasureN: 0,\n\t\t\ttimeN: 0,\n\t\t}\n\t);\n\n\tconst costPerMeasure = measureN > 0 ? totalCost / measureN : null;\n\tconst costPerTime = timeN > 0 ? totalCost / timeN : null;\n\n\tconst { cached, simple, computed, tryTimes, solved, issue, fatal } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tcached: sum.cached + stat.measures.cached,\n\t\t\tsimple: sum.simple + stat.measures.simple,\n\t\t\tcomputed: sum.computed + stat.measures.computed,\n\t\t\ttryTimes: sum.tryTimes + stat.measures.tryTimes,\n\t\t\tsolved: sum.solved + stat.measures.solved,\n\t\t\tissue: sum.issue + stat.measures.issue,\n\t\t\tfatal: sum.fatal + stat.measures.fatal,\n\t\t}),\n\t\t{ cached: 0, simple: 0, computed: 0, tryTimes: 0, solved: 0, issue: 0, fatal: 0 }\n\t);\n\n\treturn {\n\t\tscoreN: stats.length,\n\t\ttotalCost,\n\t\tpickerCost,\n\t\tcostPerMeasure,\n\t\tcostPerTime,\n\t\tcached,\n\t\tsimple,\n\t\tcomputed,\n\t\ttryTimes,\n\t\tsolved,\n\t\tissue,\n\t\tfatal,\n\t};\n};\n\nexport { regulateWithBeadSolver, abstractRegulationBeadStats, RegulationBeadStat, ProgressInfo };\n","import * as starry from '../../src/starry';\nimport { PyClients } from './predictors';\nimport { Logger } from './ZeroClient';\nimport { SpartitoMeasure, EditableMeasure, evaluateMeasure } from '../../src/starry';\nimport { EquationPolicy } from '../../src/starry/spartitoMeasure';\nimport { genMeasureRectifications } from '../../src/starry/measureRectification';\nimport { SolutionStore, DefaultSolutionStore, SaveIssueMeasure } from './store';\nexport * from './regulationBead';\n\nglobalThis.btoa = globalThis.btoa || ((str) => Buffer.from(str, 'binary').toString('base64'));\n\nconst RECTIFICATION_SEARCH_ITERATIONS = parseInt(process.env.RECTIFICATION_SEARCH_ITERATIONS || '30');\nconst BASE_QUOTA_FACTOR = parseInt(process.env.BASE_QUOTA_FACTOR || '40');\nconst RECTIFICATION_QUOTA_FACTOR = parseInt(process.env.RECTIFICATION_QUOTA_FACTOR || '80');\n\nconst MATRIXH_INTERPOLATION_K = 0.9;\n\ninterface SolveMeasureOptions {\n\tsolver?: (...args: any[]) => any;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n\tsolutionStore?: SolutionStore;\n\tignoreCache?: boolean;\n\tlogger?: Logger;\n}\n\nconst computeQuota = (n: number, factor: number, limit: number) =>\n\tMath.min(Math.ceil((n + 1) * factor * Math.log(n + 2)), Math.ceil(limit * Math.min(1, (24 / (n + 1)) ** 2)));\n\ninterface BaseRegulationStat {\n\tcached: number;\n\tcomputed: number;\n\tsolved: number;\n}\n\nasync function solveMeasures(\n\tmeasures: SpartitoMeasure[],\n\t{ solver, quotaMax = 1000, quotaFactor = BASE_QUOTA_FACTOR, solutionStore = DefaultSolutionStore, ignoreCache = false, logger }: SolveMeasureOptions = {}\n): Promise {\n\tlet cached = 0;\n\tlet solved = 0;\n\n\tlogger?.info(`[solveMeasures] begin, measure total: ${measures.length}.`);\n\n\tawait Promise.all(\n\t\tmeasures.map(async (measure) => {\n\t\t\tif (!ignoreCache) {\n\t\t\t\tconst solution = await solutionStore.get(measure.regulationHash);\n\t\t\t\tif (solution) {\n\t\t\t\t\tmeasure.applySolution(solution);\n\t\t\t\t\t++cached;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst quota = computeQuota(measure.events.length, quotaFactor, quotaMax);\n\n\t\t\tawait measure.regulate({\n\t\t\t\tpolicy: 'equations',\n\t\t\t\tquota,\n\t\t\t\tsolver,\n\t\t\t});\n\n\t\t\tconst stat = evaluateMeasure(measure);\n\t\t\tif (!stat.error) solutionStore.set(measure.regulationHash0, { ...measure.asSolution(), priority: -measure?.solutionStat?.loss! });\n\t\t\tif (stat.perfect) ++solved;\n\n\t\t\tlogger?.info(\n\t\t\t\t`[solveMeasures] measure[${measure.measureIndex}/${measures.length}] regulated: ${stat.perfect ? 'solved' : stat.error ? 'error' : 'issue'}, ${\n\t\t\t\t\tmeasure.regulationHash\n\t\t\t\t}`\n\t\t\t);\n\t\t})\n\t);\n\n\tlogger?.info(`[solveMeasures] ${cached}/${measures.length} cache hit, ${solved} solved.`);\n\n\treturn {\n\t\tcached,\n\t\tcomputed: measures.length - cached,\n\t\tsolved,\n\t};\n}\n\nconst solveMeasuresWithRectifications = async (\n\tmeasure: SpartitoMeasure,\n\t{ solver, quotaMax = 4000 }: SolveMeasureOptions\n): Promise => {\n\tlet best = evaluateMeasure(measure);\n\tlet bestSolution: starry.RegulationSolution = measure.asSolution();\n\tconst quota = computeQuota(measure.events.length, RECTIFICATION_QUOTA_FACTOR, quotaMax);\n\tlet n_rec = 0;\n\n\t// @ts-ignore\n\tfor (const rec of genMeasureRectifications(measure)) {\n\t\tconst solution = await EquationPolicy.regulateMeasureWithRectification(measure, rec, { solver, quota });\n\n\t\tconst testMeasure = measure.deepCopy() as SpartitoMeasure;\n\t\ttestMeasure.applySolution(solution);\n\t\tconst result = evaluateMeasure(testMeasure);\n\n\t\tif (\n\t\t\tresult.perfect > best.perfect ||\n\t\t\tresult.error < best.error ||\n\t\t\t(!result.error && result.perfect >= best.perfect && solution.priority! > bestSolution.priority!)\n\t\t) {\n\t\t\tbest = result;\n\t\t\tbestSolution = solution;\n\t\t}\n\n\t\tif (result.perfect) break;\n\n\t\t++n_rec;\n\t\tif (n_rec > RECTIFICATION_SEARCH_ITERATIONS) break;\n\t}\n\n\treturn bestSolution;\n};\n\ninterface RegulateWithTopoOption {\n\tsolutionStore: SolutionStore;\n\tpyClients: PyClients;\n\tsolver: (...args: any[]) => any;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n}\n\ninterface RegulateMaybeWithTopoOption {\n\tsolutionStore: SolutionStore;\n\tpyClients?: PyClients;\n\tsolver: (...args: any[]) => any;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n}\n\ninterface RegulateSimpleOption {\n\tsolutionStore: SolutionStore;\n\tsolver: (...args: any[]) => any;\n\tlogger?: Logger;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n}\n\ninterface TopoRegulationStat {\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\nasync function doRegulateWithTopo(\n\tscore: starry.Score,\n\t{ pyClients, solver, solutionStore = DefaultSolutionStore, onSaveIssueMeasure }: RegulateWithTopoOption\n): Promise {\n\tpyClients.logger.info(`[RegulateWithTopo] regulate score: ${score.title}, measures: ${score.spartito!.measures.length}`);\n\n\tconst issueMeasures = score.spartito!.measures.filter((measure) => {\n\t\tconst stat = evaluateMeasure(measure);\n\t\treturn !stat.perfect;\n\t});\n\tpyClients.logger.info(`[RegulateWithTopo] basic issues: ${issueMeasures.length}`);\n\n\tif (issueMeasures.length === 0) {\n\t\treturn {\n\t\t\tsolved: 0,\n\t\t\tissue: 0,\n\t\t\tfatal: 0,\n\t\t};\n\t}\n\n\tconst clusters = ([] as starry.EventCluster[]).concat(...issueMeasures.map((measure) => measure.createClusters()));\n\tconst results = await pyClients.predictScoreImages('topo', { clusters });\n\tconsole.assert(results.length === clusters.length, 'prediction number mismatch:', clusters.length, results.length);\n\n\tclusters.forEach((cluster, index) => {\n\t\tconst result = results[index];\n\t\tconsole.assert(result, 'no result for cluster:', cluster.index);\n\n\t\tcluster.assignPrediction(result);\n\t});\n\n\tissueMeasures.forEach((measure) => {\n\t\tconst cs = clusters.filter((c) => c.index === measure.measureIndex);\n\t\tmeasure.applyClusters(cs);\n\n\t\t// intepolate matrixH\n\t\tconst { matrixH } = EquationPolicy.estiamteMeasure(measure);\n\t\tmatrixH.forEach((row, i) =>\n\t\t\trow.forEach((v, j) => {\n\t\t\t\tmeasure.matrixH[i][j] = measure.matrixH[i][j] * MATRIXH_INTERPOLATION_K + v * (1 - MATRIXH_INTERPOLATION_K);\n\t\t\t})\n\t\t);\n\t});\n\n\tconst solvedIndices: number[] = [];\n\tconst errorIndices: number[] = [];\n\n\t// rectification search\n\tawait Promise.all(\n\t\tissueMeasures.map(async (measure) => {\n\t\t\tconst hash = measure.regulationHash0;\n\t\t\tconst solution = await solveMeasuresWithRectifications(measure, { solver });\n\t\t\tif (solution) {\n\t\t\t\tmeasure.applySolution(solution);\n\t\t\t\tsolutionStore.set(hash, solution);\n\t\t\t\tsolutionStore.set(measure.regulationHash, measure.asSolution());\n\t\t\t\tpyClients.logger.info(`[RegulateWithTopo] solutionStore set: ${measure.measureIndex}, ${hash}, ${measure.regulationHash}`);\n\t\t\t}\n\n\t\t\tconst stat = evaluateMeasure(measure);\n\t\t\tonSaveIssueMeasure?.({\n\t\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\t\tmeasure: new EditableMeasure(measure),\n\t\t\t\tstatus: stat.error ? 2 : 1,\n\t\t\t});\n\t\t\tif (stat.perfect) solvedIndices.push(measure.measureIndex);\n\t\t\telse if (stat.error) errorIndices.push(measure.measureIndex);\n\t\t})\n\t);\n\n\tconst n_issues = issueMeasures.length - solvedIndices.length - errorIndices.length;\n\tpyClients.logger.info(`[RegulateWithTopo] score: ${score.title}, solved/issue/fatal: ${solvedIndices.length}/${n_issues}/${errorIndices.length}`);\n\tif (solvedIndices.length) pyClients.logger.info(`[RegulateWithTopo] solved measures: ${solvedIndices.join(', ')}`);\n\tif (errorIndices.length) pyClients.logger.info(`[RegulateWithTopo] error measures: ${errorIndices.join(', ')}`);\n\n\treturn {\n\t\tsolved: solvedIndices.length,\n\t\tissue: n_issues,\n\t\tfatal: errorIndices.length,\n\t};\n}\n\ninterface RegulationStat {\n\tbaseCost: number; // in milliseconds\n\ttopoCost: number; // in milliseconds\n\tbaseMeasures: BaseRegulationStat;\n\ttopoMeasures?: TopoRegulationStat;\n\tqualityScore: number;\n}\n\nconst doRegulate = async (\n\tscore: starry.Score,\n\t{ pyClients, solver, solutionStore = DefaultSolutionStore, onSaveIssueMeasure }: RegulateMaybeWithTopoOption\n): Promise => {\n\tpyClients?.logger?.info(`[doRegulate] score: ${score.title}`);\n\n\tscore.spartito = undefined;\n\tscore.assemble();\n\tconst spartito = score.makeSpartito();\n\n\tspartito.measures.forEach((measure) => score.assignBackgroundForMeasure(measure));\n\n\tconst t0 = Date.now();\n\n\tconst baseMeasures = await solveMeasures(spartito.measures, { solver, quotaMax: 1000, solutionStore, logger: pyClients?.logger });\n\n\tconst t1 = Date.now();\n\n\tconst topoMeasures = pyClients ? await doRegulateWithTopo(score, { pyClients, solver, solutionStore, onSaveIssueMeasure }) : undefined;\n\n\tconst t2 = Date.now();\n\n\treturn {\n\t\tbaseCost: t1 - t0,\n\t\ttopoCost: t2 - t1,\n\t\tbaseMeasures,\n\t\ttopoMeasures,\n\t\tqualityScore: spartito.qualityScore,\n\t};\n};\n\nconst doSimpleRegulate = async (\n\tscore: starry.Score,\n\t{ solver, solutionStore = DefaultSolutionStore, logger, quotaMax = 240, quotaFactor = 16 }: RegulateSimpleOption\n): Promise => {\n\tscore.assemble();\n\tconst spartito = score.spartito || score.makeSpartito();\n\tconst measures = spartito.measures.filter((measure) => !measure.regulated);\n\n\tawait solveMeasures(measures, { solver, quotaMax, quotaFactor, solutionStore, logger });\n\n\tconsole.assert(score.spartito?.regulated, 'doSimpleRegulate: regulation incomplete:', spartito.measures.filter((measure) => !measure.regulated).length);\n};\n\nconst evaluateScoreQuality = async (score: starry.Score, options: RegulateSimpleOption): Promise => {\n\tif (!score.spartito?.regulated) await doSimpleRegulate(score, options);\n\n\treturn score.spartito!.regulated ? score.spartito!.qualityScore : null;\n};\n\ninterface RegulationSummary {\n\tscoreN: number;\n\n\tbaseCostTotal: number; // in milliseconds\n\ttopoCostTotal: number; // in milliseconds\n\tbaseCostPerMeasure: number | null; // in milliseconds\n\ttopoCostPerMeasure: number | null; // in milliseconds\n\n\tcached: number;\n\tbaseComputed: number;\n\tbaseSolved: number;\n\ttopoSolved: number;\n\ttopoIssue: number;\n\ttopoFatal: number;\n}\n\nconst abstractRegulationStats = (stats: RegulationStat[]): RegulationSummary => {\n\tconst { baseCostTotal, topoCostTotal, baseMeasures, topoMeasures } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tbaseCostTotal: sum.baseCostTotal + stat.baseCost,\n\t\t\ttopoCostTotal: sum.topoCostTotal + stat.topoCost,\n\t\t\tbaseMeasures: sum.baseMeasures + stat.baseMeasures.computed,\n\t\t\ttopoMeasures: sum.topoMeasures + (stat.topoMeasures!.solved + stat.topoMeasures!.issue + stat.topoMeasures!.fatal),\n\t\t}),\n\t\t{\n\t\t\tbaseCostTotal: 0,\n\t\t\ttopoCostTotal: 0,\n\t\t\tbaseMeasures: 0,\n\t\t\ttopoMeasures: 0,\n\t\t}\n\t);\n\n\tconst baseCostPerMeasure = baseMeasures > 0 ? baseCostTotal / baseMeasures : null;\n\tconst topoCostPerMeasure = topoMeasures > 0 ? topoCostTotal / topoMeasures : null;\n\n\tconst { cached, baseComputed, baseSolved, topoSolved, topoIssue, topoFatal } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tcached: sum.cached + stat.baseMeasures.cached,\n\t\t\tbaseComputed: sum.baseComputed + stat.baseMeasures.computed,\n\t\t\tbaseSolved: sum.baseSolved + stat.baseMeasures.solved,\n\t\t\ttopoSolved: sum.topoSolved + stat.topoMeasures!.solved,\n\t\t\ttopoIssue: sum.topoIssue + stat.topoMeasures!.issue,\n\t\t\ttopoFatal: sum.topoFatal + stat.topoMeasures!.fatal,\n\t\t}),\n\t\t{ cached: 0, baseComputed: 0, baseSolved: 0, topoSolved: 0, topoIssue: 0, topoFatal: 0 }\n\t);\n\n\treturn {\n\t\tscoreN: stats.length,\n\t\tbaseCostTotal,\n\t\ttopoCostTotal,\n\t\tbaseCostPerMeasure,\n\t\ttopoCostPerMeasure,\n\t\tcached,\n\t\tbaseComputed,\n\t\tbaseSolved,\n\t\ttopoSolved,\n\t\ttopoIssue,\n\t\ttopoFatal,\n\t};\n};\n\nexport { doRegulate, doSimpleRegulate, evaluateScoreQuality, abstractRegulationStats };\n","console.info(`%cstarry-omr%c v1.0.0 2026-02-20T12:53:44.892Z`, 'color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;', 'color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;');\nimport '../../libs/browserComponents';\n\nexport * from '../../../src/isomorphic/converter';\nexport * as starry from '../../../src/starry';\nexport * from '../../libs/predictors';\nexport * from '../../libs/predictPages';\nexport * from '../../libs/regulation';\nexport * from '../../libs/store';\nexport * from '../../libs/util';\n"],"names":["PageLayoutMethod","TextType","SemanticType","globalThis","btoa","str","Buffer","from","toString","atob","NOTEHEAD_WIDTHS","NoteheadS0","NoteheadS1","NoteheadS2","glyphCenters","x","zero","y","one","two","three","four","five","six","seven","eight","nine","f","m","p","r","s","z","SYSTEM_SEMANTIC_TYPES","BarMeasure","vline_BarMeasure","vline_BarTerminal","vline_BarSegment","vline_VoltaLeft","vline_VoltaRight","VoltaAlternativeBegin","st","CONFLICTION_GROUPS","Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","ScriptStaccatissimo","TimesigZero","TimesigOne","TimesigTwo","TimesigThree","TimesigFour","TimesigFive","TimesigSix","TimesigSeven","TimesigEight","TimesigNine","Rest0","Rest1","Rest2","Rest3","Rest4","Rest5","Rest6","Rest0W","RestM1","SignInterval","SignLined","BeamLeft","BeamContinue","BeamRight","STAMP_SEMANTICS","ClefG","ClefF","ClefC","Dot","AccNatural","AccSharp","AccDoublesharp","AccFlat","AccFlatflat","TimesigC44","TimesigC22","OctaveShift8","OctaveShift0","n","ScriptFermata","ScriptShortFermata","ScriptSforzato","ScriptStaccato","ScriptTurn","ScriptTrill","ScriptSegno","ScriptCoda","ScriptArpeggio","ScriptPrall","ScriptMordent","ScriptMarcato","ScriptTenuto","ScriptPortato","PedalStar","PedalPed","hashSemanticPoint","systemIndex","staffIndex","point","Math","round","source","semantic","hash","sha1","array","slice","id","String","fromCharCode","substring","hashPageSemanticPoint","pageName","TokenType","tt","TokenTypes","Object","values","TokenClefs","filter","t","test","TokenTimesigs","TokenTimesigsC","TokenTimesigsN","TokenOctshifts","TokenNumbers","TokenAccidentals","TokenNoteheads","TokenBareNoteheads","TokenDirectionalNoteheads","TokenRests","TokenFlags","TokenVolta","TokenDynamics","TokenScripts","TokenPedals","TokenDots","DotDot","TokenArcs","SlurBegin","SlurEnd","TieBegin","TieEnd","TokenBeams","TokenWedges","TokenAccessories","TokenDirectionless","TokenGlyphs","TOKEN_Y_ROUND","forEach","TOKEN_Y_FIXED","Token","constructor","data","assign","this","typeId","type","split","reverse","isPredicted","Number","isFinite","confidence","isNotehead","includes","isContexted","isAccessory","division","NoteheadS1stemU","NoteheadS1stemD","NoteheadS2stemU","NoteheadS2stemD","Flag3","Flag4","Flag5","Flag6","Flag7","Flag8","dots","direction","width","left","right","voiceIndices","voice","Array","floor","log2","fill","reduce","indices","_","i","className","TextToken","super","width_","value","recoverJSON","json","classDict","JSON","stringify","parse","__prototype","Class","fields","deepCopy","o","dict","Map","get","isArray","result","set","e","push","entries","key","setPrototypeOf","__proto__","SimpleClass","toJSON","cls","serializedKeys","blackKeys","keys","pick","LayoutType","spreadMeasureSeq","seq","Ordinary","concat","map","layout","serialize","seqToCode","withBrackets","code","inRange","length","SingleMLayout","measure","undefined","BlockMLayout","trimSeq","seq2","sub","seq3","fromSeq","VoltaMLayout","bodySeq","body","alternates","alternateSeqs","lastAlternateSeq","Conservative","Full","times","Once","console","warn","join","ABAMLayout","seqA","main","seqA_","seqB","rest","parser","k","v","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","trace","yy","symbols_","error","start_symbol","measure_layout","EOF","index_wise_measure_layout","segment_wise_measure_layout","iw_sequence","iw_item","range","UNSIGNED","single","iw_block_item","iw_volta","iw_aba","iw_block","iw_optional_alternates","iw_alternates","sw_sequence","sw_item","segment","sw_block_item","sw_volta","sw_aba","sw_block","sw_optional_alternates","sw_alternates","$accept","$end","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","root","blockLayout","singleLayout","voltaBlock","abaBlock","table","defaultActions","parseError","recoverable","Error","input","self","stack","vstack","lstack","args","call","arguments","lexer","create","sharedState","prototype","hasOwnProperty","setInput","yylloc","yyloc","ranges","options","getPrototypeOf","symbol","state","action","len","newState","expected","lex","token","yyval","errStr","showPosition","text","match","line","loc","first_line","last_line","first_column","last_column","apply","items","item","start","end","index","speard","it","serializeSeq","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","unput","lines","substr","oldLines","more","reject","backtrack_lexer","less","pastInput","past","replace","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","Parser","grammar$1","StaffGroupType","StaffConjunctionType","singleGroup","Default","staff","BOUNDS_TO_GROUPTYPE","Brace","Bracket","Square","CONJUNCTIONS_MAP","Blank","Solid","Dashed","randomB64","random","makeGroupsFromRaw","parent","remains","word","shift","bound","group","level","subs","grand","every","groupHead","groupTail","groupDict","groupKey","StaffLayout","raw","ids","Set","prefix","name","has","makeUniqueName","add","staffIds","conjunctions","conjunction","leftBounds","rightBounds","groups","indexOf","maskCache","stavesCount","partGroups","grands","g","some","standaloneGroups","collect","conjunctionBetween","upStaff","downStaff","con","min","makeMaskLayout","mask","nextId","partialMaskCode","bits","withIds","staffStatus","status","joinGroup","subStr","pair","Boolean","partial","inner","bracketCode","$Vb","$Vc","staff_layout","seq_id","seq_br","seq_con","bound_left","bound_right","bound_lefts","bound_rights","ID","seq_bl","Seq","tip","bl","br","Item","grammar","parseCode","DummyLogger","debug","groupCollapsed","groupEnd","info","assert","roundNumber","precision","Infinity","max","distance2D","p1","p2","dx","dy","sqrt","gcd","a","b","isInteger","frac","numerator","denominator","reducedFraction","d","printFraction","fractionMul","fraction","segmentPoints","points","axis","sorted","sort","seg","lastP","segments","filterWeekPoints","rests","find","weeks","solveOverlapping","pset","xClusters","clusters","ps","delete","GROUP_N_TO_PITCH","noteToPitch","note","alter","gn","mod7","argmax","WHOLE_DURATION","AccessoryDirection","GraceType","StemBeam","TremoloLink","GlissandoStyle","ArpeggioStyle","Term","EventTerm","space","tick","duration","term","accessories","pivotX","alignedTick","grace","mainDuration","multiplier","timeWarp","divider","prior","fullMeasureRest","tipX","tipY","ys","tremoloCatcher","tremoloLink","Catcher","scaleChord","pitches","pitch","zeroHolder","ContextType","ContextedTerm","Token.TokenClefs","tokenType","Clef","KeyAcc","Acc","Token.TokenOctshifts","OctaveShift","Token.TokenTimesigsC","TimeSignatureC","Token.TokenTimesigsN","TimeSignatureN","staffLevel","clef","KeyNatural","KeySharp","KeyFlat","octaveShift","OctaveShift8va","OctaveShift8vb","number","MarkTerm","MUSIC_NOTES","fromCodePoint","TempoTerm","fromNumeralText","findIndex","beats","durationMagnitude","den","dot","bpm","isValid","GlyphTerm","TextTerm","LyricTerm","CommandTerm","ChordmodeTerm","BEAM_STATUS","Open","Continue","Close","evaluateMeasure","regulated","eventMap","events","validEvents","voices","flat","warpedEvents","warps","irregularWarps","fractionalWarp","tickSum","eventN","event","tickOverlapped","complicatedTimewarp","size","literalDuration","timeSignature","sigDuration","doubtfulTimesig","inVoiceEvents","corruptedVoiceEvent","overranged","over","overDuration","graceInVoice","graceN","graceDominant","irregularTick","beamBroken","broken","ei","beam","spaceTime","surplusTime","eventDuration","sum","nullEvents","predisposition","fakeP","fakeEvents","voiceRugged","es","tickTwist","tickRatesInStaves","rate","perfect","estimatedDuration","fine","expectDuration","durationRate","qualityScore","patched","spaceLoss","tanh","irregularWarpsN","SemanticGraph","fromPoints","graph","getLayer","getConfidentLayer","threshold","getSystemPoints","getStaffPoints","scale","factor","transform","matrix","extension","y1","y2","scaling","height","MEASURE_SEMANTICS","GraceNotehead","CrescendoBegin","CrescendoEnd","DecrescendoBegin","DecrescendoEnd","TremoloLeft","TremoloRight","TremoloMiddle","STAFF_LINED_SEMANTICS","LINED_INTERVAL_SEMANTICS","NOTEHEAD_FOR_STEM_SEMANTICS","KEYACC_CANDIDATE_SEMANTICS","NOTEHEAD_TABLE","up","down","REST_SEMANTICS","TOKEN_TO_STEMBEAM","TEXT_TYPE_ALIAS","Alter1","Alternation1","Alter2","Alternation2","noteheadsXPivot","xs","mean","x1","x2","Measure","tokens","antiTokens","barTypes","noteheads","n1","n2","chordRects","nh","nulN","nhmap","hh","nhs","top","bottom","nh0","stemX","stemDirection","timeWarped","additionalLines","chords","getChords","chord","ceil","flags","beams","chordRcs","rect","noteIds","c1","c2","accs","flagRange","nearbyFlags","flag","beamToken","nearbyDots","getRests","dotValue","getEvents","e1","e2","getContexts","assignAccessoriesOnEvents","accessory","relatedEvents","owner","d1","d2","Down","Up","sortEvents","arpeggio","Grace","tremolsLs","tremolsRs","tremolsMs","tevents","stemL","stemR","tm","te","tremolo","tl","Pitcher","tr","assignFeaturesOnEvents","semantics","dotPs","beamLs","beamMs","beamRs","gracePs","tremoloRs","stems","vline_Stem","s0","s1","s2","cx","divisions","ss","i_flags","f1","f2","i_dots","dots2","bs","u_stems","stem","d_stems","stemDirections","graces","tremolos","feature","Staff","measureCount","measureBars","staffY","measures","endX","noteRange","rearrangeMeasures","reassignTokens","assignSemantics","assemble","system","logger","qualifiedSemantics","TempoNotehead","tempoNh","splice","antiP","displacementSemantics","appendPoint","semanticTop","semanticBottom","rootNhs","nhOffsetX","attachedHeads","topDist","bottomDist","antiPoint","nearStems","appendFlags","dotLines","sy","keyaccs","acc","oct","voltaDots","VoltaLeft","VoltaRight","voltaGroups","lined","interval","signs","fixedY","roundY","holder","mainFlag","downward","tailY","count","clearTokens","clearPredictedTokens","System","HEAD_WIDTH","segmentLength","staves","arrangePosition","sidBlackList","sidWhiteList","staffTop","staffBottom","staffPositions","radius","staffMask","staffMaskChanged","prev","positions","tidyMeasureBars","b1","b2","restWidth","connectionLine","staffHead","staffTail","middleY","timeSignatureOnHead","getStaffArray","si","on","getMarksInMeasure","measureIndex","textType","TempoNumeral","headMeasureIndex","columns","rows","contexts","voltaBegin","voltaEnd","alternative","mi","timeSigs","row","marks","ts","column","lastColumn","break","getEventsFunctional","ev","processors","useXMap","localRows","xMap","groupMap","tickGroup","proc","oy","bars","lastX","barColumns","bar","intensity","barXs","prevStaff","nextStaff","newPoint","appendToken","fontSize","overlap","Page","systems","assignTexts","areas","imageHeight","imageWidth","dimensions","area","cy","rp","score","rect_Text","theta","textFeature","feature_dict","textAnnotations","sysXs","middleX","indent","Text","textFeasure","Title","Author","PageMargin","Other","Chord","MeasureNumber","Instrument","TextualMark","Times","sx","SemanticElementType","TIME_SIG_DENOMINATORS","fromEntries","TIME_SIG_NUMERATORS","et","ELEMENT_TOKEN_NAMES","BOS","NoteheadGrace","NOTEHEAD_BASE_DIVISION","NOTEHEAD_ELEMENT_TYPES","REST_ELEMENT_TYPES","BEAM_ELEMENT_TYPES","NOTE_ELEMENT_TYPES","SOURCE_ELEMENT_TYPES","TARGET_ELEMENT_TYPES","ROOT_NOTE_ELEMENT_TYPES","ELEMENT_TO_STEMBEAM","metaElem","BOS_ELEMENT","fractionToElems","SemanticCluster","elementToJSON","elem","sourceMask","elements","targetMask","vMask","compactMatrixH","matrixH","j","expandMatrixByMasks","compactMatrixV","_matrixV","matrixV","expandMatrixByMaskTriu","groupsV","matrixFromGroups","found","mapMatrix","x2i","i2x","xi","mergeOverlapping","overlaps","overlappedNoteheads","ij","ii","nh1","nh2","masks","stemMasks","stemNotes","s0s","subS0Masks","stemMap","stemId","i1","i2","prevId","linkings","roots","parentMasks","parentId","rootId","subNotes","dotGroups","tipRange","beamElem","iter","gen","maskSrc","maskTar","src","tar","groupIds","id1","id2","ImplicitType","Stream","buffer","Uint8Array","position","eof","read","readString","readInt32","readInt16","readInt8","signed","readVarInt","OStream","write","writeInt32","writeInt16","writeInt8","writeVarInt","getBuffer","getArrayBuffer","charCodeAt","MIDI","parseMidiData","readChunk","stream","lastEventTypeByte","readEvent","deltaTime","eventTypeByte","param1","eventType","channel","subtype","noteNumber","velocity","amount","controllerType","programNumber","subtypeByte","microsecondsPerBeat","hourByte","frameRate","hour","sec","frame","subframe","pow","metronome","thirtyseconds","headerChunk","headerStream","formatType","trackCount","timeDivision","ticksPerBeat","header","tracks","trackChunk","trackStream","encodeMidiFile","writeChunk","writeEvent","frameByte","MidiSequence","midiToSequence","midiFile","trackStates","beatsPerMinute","nextEventIndex","ticksToNextEvent","getNextEvent","nextEventTrack","nextEvent","ticksToEvent","track","midiEvent","processNext","secondsToGenerate","time","processEvents","trimSequence","clear","fixOverlapNotes","noteMap","overlapMap","swaps","leapIndex","swap","front","back","offEvent","leapEvent","tempo","require$$0","PedalControllerTypes","Notation","parseMidi","fixOverlap","channelStatus","pedalStatus","pedals","channels","millisecondsPerBeat","barIndex","keyRange","correspondences","rawTicks","ticks","tempos","rawEvents","deltaTicks","deltaBeats","startTick","low","statusIndex","endTick","finger","high","pedalType","captures","fingers","isNaN","log","endTime","meta","notes","pitchMap","beatInfos","lastInfo","beatIndex","entry","findChordBySoftindex","softIndex","averageTempo","tickRange","to","endtick","span","ticksToTime","next_tempo_index","tempo_index","timeToTicks","tickRangeToTimeRange","scaleTempo","headTempo","MusicNotation","animationDelay","Promise","resolve","requestAnimationFrame","MidiPlayer_1","MidiPlayer","midiData","cacheSpan","onMidi","onPlayFinish","onTurnCursor","notation","isPlaying","progressTime","startTime","performance","now","cursorTurnDelta","dispose","progressTicks","play","nextFrame","currentEventIndex","backturn","eventTime","pause","turnCursor","config","CostStepAttenuation","SkipDeep","PriorDistanceSigmoidFactor","PriorValueSigmoidFactor","SkipCost","LagOffsetCost","LeadOffsetCost","ZeroOffsetCost","RelocationThreshold","Config","require$$1","Node","s_note","c_note","_prev","_totalCost","_value","cacheDirty","ci","rootSi","cost","skip","updateCache","totalCost","selfCost","deep","path","node","dump","evaluatePrev","evaluatePrevCost","bias","priorByOffset","distance","navigator","Navigator","criterion","sample","getCursorOffset","outOfPage","bestNode","fineCursor","breakingSI","zeroNode","relocationThreshold","step","prevNote","prevNode","cursors","nullLength","nullSteps","cursor","resetCursor","breaking","deltaSi","fromIndex","toIndex","backPrior","cursorOffset","relocationTendency","normalizeInterval","HEART_BEAT","makeNoteSoftIndex","softIndexFactor","lastNote","Matcher","makeMatchNodes","targetList","targetNote","genNotationContext","runNavigation","async","onStep","Symbol","for","EXCLUDE_MIDI_EVENT_SUBTYPES","encodeToMIDIData","unclosedNoteDuration","msToTicks","Date","process","env","VUE_APP_BUILD_TIME","toDateString","MidiUtils","sliceMidi","midi","trackDeltaToAbs","lastTick","trackAbsToDelta","sliceTrack","encodeToMIDI","musicWidgets","require$$2","require$$3","require$$4","COMMON_NOTE_FIELDS","MetaNotation","fromAbsoluteNotes","measureHeads","__","mnotes","mn","field","idTrackMap","performAbsoluteNotes","abNotes","withRestTied","tied","overlapped","staffTrack","contextIndex","implicitType","chordPosition","priorNote","ripe","trackTickBias","headMeasure","trackNames","idSet","toAbsoluteNotes","measureIndices","measureTick","measureNotes","mnote","toPerformingNotation","WHOLE_DURATION_MAGNITUDE","toPerformingMIDI","trackList","zeroTick","measureEvents","mevent","eventPriority","subnote","finalTick","toPerformingNotationWithEvents","assignNotationNoteDataFromEvents","setTempo","midiNotation","noteId","CryptoJS","exports","crypto","window","msCrypto","global","require","err","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","F","obj","C","C_lib","lib","Base","extend","overrides","mixIn","init","$super","instance","properties","propertyName","clone","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","nBytes","C_enc","enc","hexChars","bite","hexStr","hexStrLength","parseInt","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","decodeURIComponent","escape","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","doFlush","processedWords","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","_doProcessBlock","Hasher","cfg","_doReset","update","messageUpdate","finalize","_doFinalize","_createHelper","hasher","message","_createHmacHelper","C_algo","HMAC","algo","H","K","isPrime","sqrtN","getFractionalBits","nPrime","W","SHA256","_hash","M","h","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","nBitsTotal","nBitsLeft","HmacSHA256","factory","HashVector","fromHash","byte","fromString","_SHA256","uwords","word_len","fromWords","vectors","toHash","bit","vec","crop","ODDS","odds","odd","cosHashes","hash1","hash2","xor","xorHashes","i2hex","Sylvester","Matrix","setElements","I","els","dup","isSquare","cols","toRightTriangular","np","determinant","det","isSingular","augment","T","nj","inverse","divisor","new_element","inverse_elements","DURATION_MULTIPLIER","floatToTimeWarp","floatToFrac","ActionType","EventElementType","SimplePolicy","Action","P","PLACE","V","order","VERTICAL","HORIZONTAL","StageMatrix","fromNode","stages","actions","stage1","stage","stage2","stagedEvents","endHs","endHP","hActions","pendingHeads","eid","pathOf","target","findDoublePath","paths","reducePath","toEquations","eventCount","equations","path1","path2","equation","PathNode","last","like","constructStages","unshift","newStage","constructConstraints","factors","constraints","inbalancesConstraints","ones","fixed","inbalances","constraint","solveEquations","xis","equationMap","conflicted","squareLines","restLines","candidateLines","sl","invert","mat","matrixInverse","solution","optimallySolve","shrinkMap","shrinkness","released","releasedIds","lowWarp","isConflicted","eventTendencies","timeWarps","getSolution","actionKey","hacts","a1","a2","hmap","act","startEs","se","estages","solveStages","changed","measureDuration","outEI","deduce","quota","access","actionAccessing","closed","credits","children","expand","possibility","child","branches","appendBranch","branch","Solver","event0","measureShrinkness","expectedDuration","xSpan","solve","pathRoot","bestSolution","evaluateSolution","loss","sevents","partialFrac","weight","staffAlters","eventsXOrder","tickTwists","dt","atan2","PI","PatchMeasure","staffN","basics","basic","EventCluster","regular","CHORD","REST","fake","fullMeasure","grant","annotation","endElem","EOS","assignPrediction","prediction","pe","EventClusterSet","trimIrregular","ir","cluster","computeMeasureTicks","roundX","constructXMap","eventGroups","divisionVector","dotsVector","computeMeasureVoices","eventSet","pushEvent","e0","EquationPolicy","INVERT_SQRT2","FINE_BEAMS","bb","solveStaffGroup","staffGroup","EquationSolver.Solver","estiamteMeasure","allEvents","tickEstimated","pR","eventStartX","staffGroupMap","staffGroups","ievents","startX","hp","erf","staffDecay","exp","yDecay","dtx","nR","regulateMeasure","solver","mp","resultEvents","solutionStat","solverCredits","solverTimes","regulateMeasureWithRectification","rectification","re","priority","tickN","SpartitoMeasure","reorderEvents","staffYsFull","rx","ry","yi","yis","intX","intY","originalRegulationHash","regulationHash","postRegulate","keySignature","timeSignatureChanged","validRegulated","tickMap","endEvent","tickToX","tickRates","rates","tickRatesInGroups","gevents","groupIndex","twists","empty","hasIllEvent","brief","regulationHash0","regulationHashes","featureWords","invalid","uys","melodies","rhythm","barType","typeEntris","partialDuration","signatureDuration","updateRoundX","graceEvents","staffMap","smap","oldEvent","emap","preTick","graceIds","totalDuration","warp","solveGraceEvents","catchers","pitchers","catcher","candidates","pitcher","catcherId","pi","solveTremoloPairs","updateContextTick","terms","t2","asSolution","ref","refEvent","applySolution","cleanupRegulation","regulateTest","regulateSimple","regulateEquations","regulate","policy","createPatch","createClusters","trueEventIds","idx","staffIndices","staffY0","staffYs","staffYn","headY","backgroundImages","url","applyClusters","id_max","is","srcId","tarId","emptyVoiceFromStaffMeasure","chiefVoice","timeSigNumeric","contextedTerms","markingTiesInVoice","event1","p0","tying","si0","si1","Spartito","solidMeasureCount","measureIndexMapping","headBPM","tempoMark","mark","measureLayoutCode","ms","vb","ve","leftSign","rightSign","nextI","mm","nextVBI","pms","lastVEI","lastMI","dumpEvaluations","rectifyTimeSignatures","mis","newTimeSignature","measuresToFix","originTimeSignature","regularD","numerators","countings","peakCount","bestCounting","best","reducedN","makeVoiceStaves","voiceCount","leftStaves","lastEvent","tailEvent","tailStaff","pageBreak","headStaff","sd","trait","staffToGroup","voiceTraits","vector","v1","v2","leftVoices","voiceTrait","vs","consistencies","voiceIndex","m1","m2","staffVoiceIndices","vi","mode","removeEmptyMeasuresInVoicesStaves","perform","tokenMap","staffToChannel","voiceChannels","hasTempo","nextTick","events0","voice0","part","pitchValue","performByEstimation","noteTick","featureHash","measureWords","levels","meaures","vecY","vecMelody","vecRhythm","featureHashHex","featureHashBigInt","BigInt","assignMeasureNumbers","discard","measureNumber","mod12","ALTER_NAMES","StaffContext","keyAlters","alters","timeSigNumSet","timeSigDenSet","doubtingTimesig","change","yToNote","partialTimeSignature","resetMeasure","resetSystem","noteToY","pitchToNote","preferredAlter","gp","alteredGp","naturalNote","alterValue","keyAlterValue","pitchToY","alterOnNote","yToPitch","yToPitchName","bitsToMask","Score","version","layoutTemplate","staffLayoutCode","pages","page","spartito","upgradeScoreData","headers","instrumentDict","pageSize","unitSize","maxStavesCount","imageKeys","backgroundImage","maskImage","breakSystemIndices","systemCount","staffLayout","staffLayout.parseCode","semanticHash","eventSystemsToTermStaves","eventSystems","termStaves","sys","context","startEvent","processStaffContext","resetPageLayout","parameters","newCenter","offsetX","offsetY","getMeasure","localIndex","getRawCluster","systemY0","y0","getRawClusters","makeSpartito","ri","esys","patch","patches","makeMusicSheet","voiceStaves","title","paperOptions","measureLayout","getMeasureLayout","findPoint","sid","pageIndex","getMeasureSemantics","sy1","sy2","makeTimewiseGraph","store","getTokenMap","confidenceThreshold","append","assembleSystem","markVoices","vis","replaceImageKeys","all","then","inferenceStaffLayout","staffTotal","completeSystems","bracketsAppearance","candidateCodes","codeCounting","maxCount","connectedCode","lastSys","search","code1","startsWith","assignBackgroundForMeasure","imagePosition","original","blackoutFakeNotes","scope","inScope","fakeIds","voicedIds","fakeIdSet","blackIds","measureLayout.parseCode","splitToSingleScoresGen","startSysIndices","templateScore","topology","startSysIndex","endSysIndex","sysInRange","newScore","SubScoreSystem","SubScorePage","splitToSingleScores","EditableEvent","agent","Proxy","ownKeys","getOwnPropertyDescriptor","enumerable","configurable","EditableMeasure","syncVoiceToEvents","syncVoiceFromEvents","makeMIDI","subEvents","midiEvents","BeadType","DIVISION_NAMES","SPACE_LOSS_WEIGHT","POSSIBILITY_LOW_BOUNDARY","STEM_DIRECTION_OPTIONS","BEAM_OPTIONS","saveClusterState","BeadNode","accessCount","nextBranch","possibilities","currentElem","elemIndex","branchID","ni","Pass","Division","Dots","repeat","picker","ptFactor","evaluateCluster","pretentiousness","selfEval","element","residue","fatalError","predictCluster","evaluation","estimateElementDuration","eos","lastOrder","voiceN","scales","referenceScale","nearScale","tickSpan","twist","tickMSE","tickErr","mse","spaceDuration","solveCluster","stopLoss","suc0","bestEvaluation","bestState","restoreClusterState","fixedEvents","pendingEvents","near","stemDirectionVector","beamVector","solveMeasure","quotaMax","quotaFactor","worstLoss","durations","solutionEvents","tipElem","tickSet","glimpseMeasure","resetSignatureForDoubtfulOnly","estimateMeasure","StemTip","StemHead","rect_Lyric","SemanticClusterSet","vocab","converts","connection","SUPPORT_CLEF_TYPES","starry.TokenType","tokenToText","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","Function","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","eventsModule","once","emitter","errorListener","removeListener","resolver","eventTargetAgnosticAddListener","handler","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","prepend","existing","warning","newListener","emit","warned","w","onceWrapper","fired","wrapFn","_onceWrap","wrapped","bind","_listeners","unwrap","evlistener","arr","ret","unwrapListeners","arrayClone","listenerCount","copy","addEventListener","wrapListener","arg","removeEventListener","destructPromise","timeout","rs","rj","setTimeout","defineProperty","RangeError","setMaxListeners","getMaxListeners","doError","er","listeners","addListener","prependListener","prependOnceListener","list","originalListener","spliceOne","off","removeAllListeners","rawListeners","eventNames","AsyncQueue","working","tasks","_digest","taskFn","payload","addTask","task","promise","ZeroClient","queue","socket","Request","sendTimeout","receiveTimeout","connect","__request","retryTimes","req","send","pack","receive","close","request","method","kwargs","args_","kwargs_","msg","opt","unpack","PyProcessor","scriptPath","retryCount","retryDelay","port","freePort","getPortPromise","stopPort","defaultsDeep","pyShell","PythonShell","stdout","isBuffer","inherits_browserModule","ctor","superCtor","super_","writable","TempCtor","util","inherits","inheritsModule","getOwnPropertyDescriptors","descriptors","formatRegExp","format","isString","objects","inspect","isNull","isObject","deprecate","fn","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","opts","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","isFunction","primitive","simple","isNumber","formatPrimitive","visibleKeys","val","arrayToHash","isError","formatError","isRegExp","RegExp","isDate","output","base","braces","toUTCString","formatProperty","formatArray","cur","reduceToSingleString","desc","ar","objectToString","pad","debuglog","NODE_DEBUG","toUpperCase","pid","bold","italic","underline","white","grey","black","blue","cyan","green","magenta","red","yellow","special","boolean","null","string","date","regexp","isNullOrUndefined","isSymbol","isPrimitive","months","prop","getHours","getMinutes","getSeconds","getDate","getMonth","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","cb","newReason","promisify","promiseResolve","promiseReject","defineProperties","custom","callbackify","callbackified","maybeCb","rej","getPort","base64map","crypt","rotl","rotr","endian","bytes","bytesToWords","wordsToBytes","bytesToHex","hex","hexToBytes","bytesToBase64","base64","triplet","charAt","base64ToBytes","imod4","cryptModule","charenc","utf8","stringToBytes","bin","bytesToString","charenc_1","api","digestbytes","H0","H1","H2","H3","H4","asBytes","asString","_blocksize","_digestsize","sha1Module","constructSystem","detection","imageSize","systemWidth","phi2","phi1","systemHeight","lastSystem","stavesTops","middleRhos","starry.Staff","starry.System","convertImage","maxHeight","quality","buf","got","responseType","decompress","https","rejectUnauthorized","toBuffer","webpBuffer","sharp","resize","fit","withoutEnlargement","toFormat","filename","SparkMD5","ArrayBuffer","OffscreenCanvas","Canvas","Image","STAFF_PADDING_LEFT","GAUGE_VISION_SPEC","viewportHeight","viewportUnit","MASK_VISION_SPEC","SEMANTIC_VISION_SPEC","concurrencyTask","fns","shootStaffImage","paddingLeft","spec","middleUnits","canvas","getContext","fillStyle","fillRect","drawImage","loadImage","shootStaffBackgroundImage","sourceCanvas","toBufferSync","gaugeStaff","gaugeImage","pyClients","sourceBuffer","baseY","predictScoreImages","maskStaff","img","semanticStaff","settings","semanticConfidenceThreshold","replacePageImages","onReplaceImageKey","OMRProgress","onChange","setTotal","total","finished","increase","lruCache","WeakLRUCache","pageStore","getValue","setValue","onReplaceImage","multinomial_1","pvals","looseVector","ns","looseEvent","MeasureRectification","roll","DefaultSolutionStore","PendingCondition","solveMeasureRecords","records","onUpdate","pendingCondition","NotFine","pass","onProgress","pendingRecords","ErrorOnly","Imperfect","isPending","record","current","starry.beadSolver.solveMeasure","starry.evaluateMeasure","better","remaining","RECTIFICATION_SEARCH_ITERATIONS","BASE_QUOTA_FACTOR","RECTIFICATION_QUOTA_FACTOR","computeQuota","limit","solveMeasures","solutionStore","ignoreCache","cached","solved","stat","computed","solveMeasuresWithRectifications","n_rec","rec","default","stale","genMeasureRectifications","testMeasure","doSimpleRegulate","PyClients","clients","getClient","client","option","checkHost","warmup","clientType","res","by_buffer","stats","costTotal","pagesCostTotal","pagesTotal","pagesCost","costPerPage","scoreN","pickerCost","measureN","timeN","tryTimes","costPerMeasure","costPerTime","issue","fatal","baseCostTotal","topoCostTotal","baseMeasures","topoMeasures","baseCost","topoCost","baseCostPerMeasure","topoCostPerMeasure","baseComputed","baseSolved","topoSolved","topoIssue","topoFatal","onSaveIssueMeasure","t0","issueMeasures","results","cs","solvedIndices","errorIndices","n_issues","doRegulateWithTopo","maskImages","hasMaskImage","scoreJson","idsMap","idsXMap","idStaffIndexMap","coverTexts","subtitles","subtitle","authors","composer","bgWidth","bgHeight","l1","ls","parts","partTemplates","measureXs","partIndex","template","staffIndexBase","paddedStaves","chordColumns","staffIndexInPart","noteIndex","measureStartX","elems","firstX","innerId","lastFifths","clefs","pt","fifths","lineStaves","systemTopStaff","systemBottomStaff","systemTopStaffY","systemBottomStaffY","lastPartLastStaff","partStaves","staffs","details","hide","visibleStaves","partTopStaff","partBottomStaff","partTopStaffY","partBottomStaffY","distances","imgs","spartitoMeasure","parti","mIndices","sortedParts","midiJson","measInfo","ent","idNoteMap","beatsCurrent","beatsUnitCurrent","mIndex","beatsUnit","evt","note_ticks","measureInfos","beatUnit","mergedTracks","trackIndex","program","lhPattern","rhPattern","instrus","hand","handStaves","trackToSplit","newTracks","stave","rightHandTrack","leftHandTrack","transformedTracks","onEvent","measureTickMap","numId","newEvent","elem_ids","meas_start_tick","images","outputWidth","processes","progress","image","starry.Score","raggedLast","raggedLastBottom","enabledGauge","originalImages","pageCanvasList","scaleForLayout","sourceSize","detections","cvs","enableGauge","imageURLMap","collectImage","createPage","detect","pageKey","cachedPageJson","omit","renew","starry.recoverJSON","starry","starry.Page","unit","cos","sin","needGauge","correctCanvas","pageCanvas","save","setTransform","restore","getImageData","putImageData","sourceCenter","shootImageByDetection","sizeRatios","staffInterval","vw","hwr","maxVW","maxAspect","setGlobalPageSize","systemsCount","allTasks","omitPages","n_page","pageTasks","bracketImages","topMid","bottomMid","sourceRect","OUTPUT_INTERVAL","bracketsRes","buffers","bufferForText","location","box","resultOCR","titleToken","gaugeRes","maskRes","semanticRes","t3","pickers","freshOnly","onPassStart","baseQuality","n_seq","starry.beadSolver.estimateMeasure","counting","toFixed","totalMeasures","computeRemaining","wrappedOnProgress","starry.EditableMeasure","saveMeasure","solutions","batchGet","originMeasure"],"mappings":"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ACb5C,EAAa6C,KACb7C,EAAa8C,KACb9C,EAAa+C,IACb/C,EAAagD,MACbhD,EAAaiD,MACbjD,EAAakD,KACblD,EAAaiF,WACbjF,EAAakF,SACblF,EAAamF,eACbnF,EAAaoF,QACbpF,EAAaqF,YACbrF,EAAaS,WACbT,EAAaU,WACbV,EAAaW,WACbX,EAAasL,gBACbtL,EAAauL,gBACbvL,EAAawL,gBACbxL,EAAayL,gBACbzL,EAAa8D,MACb9D,EAAa+D,MACb/D,EAAagE,MACbhE,EAAaiE,MACbjE,EAAakE,MACblE,EAAamE,MACbnE,EAAaoE,MACbpE,EAAaqE,OACbrE,EAAasE,OACbtE,EAAawJ,UACbxJ,EAAayJ,QACbzJ,EAAagF,IACbhF,EAAayB,EACbzB,EAAa2B,EACb3B,EAAa0B,EACb1B,EAAa0F,EACb1F,EAAa4B,EACb5B,EAAa6B,EACb7B,EAAa8B,EACb9B,EAAa2F,cACb3F,EAAa4F,mBACb5F,EAAa6F,eACb7F,EAAa8F,eACb9F,EAAamD,oBACbnD,EAAa+F,WACb/F,EAAagG,YACbhG,EAAaiG,YACbjG,EAAakG,WACblG,EAAamG,eACbnG,EAAaoG,YACbpG,EAAaqG,cACbrG,EAAasG,cACbtG,EAAauG,aACbvG,EAAawG,cACbxG,EAAayG,UACbzG,EAAa0G,SACb1G,EAAaquB,cACbruB,EAAayE,SACbzE,EAAa2E,UACb3E,EAAa0E,aACb1E,EAAasuB,eACbtuB,EAAauuB,aACbvuB,EAAawuB,iBACbxuB,EAAayuB,eACbzuB,EAAa0uB,YACb1uB,EAAa2uB,aACb3uB,EAAa4uB,eAGRC,GAAwB,CAC7B7uB,EAAaiF,WACbjF,EAAakF,SACblF,EAAamF,eACbnF,EAAaoF,QACbpF,EAAaqF,YACbrF,EAAaS,WACbT,EAAaU,WACbV,EAAaW,WACbX,EAAasL,gBACbtL,EAAauL,gBACbvL,EAAawL,gBACbxL,EAAayL,iBAGRqjB,GAA2B,CAAC9uB,EAAawE,UAAWxE,EAAauE,cAEjEwqB,GAA8B,CAAC/uB,EAAaU,WAAYV,EAAaW,YAErEquB,GA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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../../../src/starry/interfaces.ts","../../../src/starry/semanticPoint.ts","../../libs/browserComponents.ts","../../../src/starry/token.ts","../../../src/starry/aux_/typedJSON.ts","../../../src/measureLayout/measureLayout.ts","../../../src/measureLayout/grammar.jison.js","../../../src/staffLayout/staffLayout.ts","../../../src/staffLayout/grammar.jison.js","../../../src/staffLayout/parser.ts","../../../src/starry/logger.ts","../../../src/starry/utils.ts","../../../src/starry/term.ts","../../../src/starry/measureEvaluator.ts","../../../src/starry/semanticGraph.ts","../../../src/starry/scoreComponents.ts","../../../src/starry/semanticTopology.ts","../../../src/performer/types.ts","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/midifile.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/stream.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/midifileEx.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/streamEx.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/index.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiSequence.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MusicNotation.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiPlayer.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/config.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/node.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/navigator.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/index.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiUtils.js","../../../node_modules/@k-l-lambda/music-widgets/index.js","../../../src/performer/notation.ts","../../../node_modules/crypto-js/core.js","../../../node_modules/crypto-js/sha256.js","../../../src/starry/hashVector.ts","../../../node_modules/matrix-inverse/matrix-inverse.js","../../../src/starry/equationSolver.ts","../../../src/starry/eventTopology.ts","../../../src/starry/spartitoMeasure.ts","../../../src/starry/patch.ts","../../../src/starry/spartito.ts","../../../src/starry/staffContext.ts","../../../src/starry/score.ts","../../../src/measureLayout/parser.ts","../../../src/starry/editableMeasure.ts","../../../src/starry/beadSolver.ts","../../../src/isomorphic/converter.ts","../../../node_modules/events/events.js","../../libs/async-queue.ts","../../libs/ZeroClient.ts","../../libs/PyProcessor.ts","../../../node_modules/util/support/isBuffer.js","../../../node_modules/util/node_modules/inherits/inherits_browser.js","../../../node_modules/util/node_modules/inherits/inherits.js","../../../node_modules/util/util.js","../../libs/predictors.ts","../../../node_modules/crypt/crypt.js","../../../node_modules/charenc/charenc.js","../../../node_modules/sha1/sha1.js","../../libs/util.ts","../../libs/predictPages.ts","../../../src/starry/measureRectification.ts","../../libs/store.ts","../../libs/regulationBead.ts","../../libs/regulation.ts","../src/index.ts"],"sourcesContent":["import { MetaNotation, TokenPosition } from '../performer';\nimport { Term, EventTerm, ContextedTerm, ChordmodeTerm, MarkTerm, Accessory, GraceType, TremoloLink } from './term';\nimport { HashVector } from './hashVector';\nimport { StaffLayout } from '../staffLayout';\nimport * as measureLayout from '../measureLayout';\n\ninterface Rect {\n\tx: number;\n\ty: number;\n\twidth: number;\n\theight: number;\n}\n\ninterface ChordRect {\n\tx: number;\n\tstemX: number;\n\twidth: number;\n\ttop: number;\n\tbottom: number;\n\tstemDirection: string;\n\ttip?: { x: number; y: number };\n}\n\ninterface VLine {\n\tx: number;\n\ty1: number;\n\ty2: number;\n}\n\ninterface Fraction {\n\tnumerator: number;\n\tdenominator: number;\n}\n\ntype DivisionVecotor = [number, number, number, number, number, number, number, number, number]; // [0, 1, 2, 3, 4, 5, 6, 7, 8]\n\ntype MeasureBarType = null | 'Terminal' | 'Segment' | 'VoltaRight';\n\ninterface EventFeature {\n\tdivisions: DivisionVecotor;\n\tdots: [number, number]; // [1, 2]\n\tbeams: [number, number, number]; // ['Open', 'Continue', 'Close']\n\tstemDirections: [number, number]; // ['u', 'd']\n\tgrace: number;\n\ttremoloCatcher: number;\n}\n\ninterface EventPredisposition {\n\tgrace: boolean;\n\ttimeWarped: number;\n\tfullMeasure: number;\n\tfake: number;\n\tfakeP: number;\n\ttick: number;\n\tdivision: number;\n\tdots: number;\n\tdivisionVector: DivisionVecotor;\n\tdotsVector: [number, number, number]; // [0, 1, 2]\n\tbeamVector: [number, number, number, number]; // [null, open, continue, close]\n\tstemDirectionVector: [number, number, number]; // [null, up, down]\n}\n\ninterface ChordColumn {\n\tleft: number;\n\tright: number;\n\tpivotX: number;\n\tys: number[];\n\tnoteIds: string[]; // order by upwards\n\tdivision: number;\n\tdots: number;\n\trest: boolean;\n\tstemDirection: string;\n\taccessories?: Accessory[];\n\tgrace?: GraceType;\n\ttremolo?: number;\n\ttremoloLink?: TremoloLink;\n\tbeam?: string;\n\ttip?: { x: number; y: number };\n\n\t//stemTipY?: number;\n\n\t// for topology\n\tstaff?: number;\n\tid?: number;\n\tprevId?: number;\n\ttickGroup?: number;\n\n\tfeature?: EventFeature;\n}\n\ninterface EventMeasure {\n\tevents: EventTerm[];\n\tcontexts: ContextedTerm[];\n}\n\ninterface StaffBasic {\n\ttimeSignature: Fraction;\n\ttimeSigNumeric: boolean;\n\tkeySignature: number;\n\tdoubtfulTimesig: boolean;\n}\n\ninterface EventMeasureColumn {\n\tmeasureIndex: number;\n\t//startX: number;\n\t//width: number;\n\n\trows: EventMeasure[]; // [staff]\n\tmarks: MarkTerm[];\n\tduration: number;\n\n\tvoices?: number[][]; // [voice, id]\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbasics?: StaffBasic[]; // [staff]\n\txMap?: Map;\n\tregularLoss?: number;\n\tvoltaBegin: boolean;\n\tvoltaEnd: boolean;\n\talternative: boolean;\n\tbarTypes: Record;\n}\n\ninterface EventSystem {\n\tstaffMask: number;\n\tcolumns: EventMeasureColumn[]; // [measure]\n}\n\ninterface TermMeasure extends Partial {\n\tterms: Term[];\n\tduration: number;\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n}\n\ntype TermRow = TermMeasure[];\n\ninterface TermStaff {\n\trows: TermRow[]; // [system]\n}\n\ninterface Pitch {\n\tnote: number;\n\talter: number;\n}\n\nenum PageLayoutMethod {\n\tByLines = 'ByLines',\n\tByBlocks = 'ByBlocks',\n}\n\ninterface RecognitionSettings {\n\tenabledGauge: boolean; // staves straighten\n\tpageLayoutMethod: PageLayoutMethod;\n\tsemanticConfidenceThreshold: number;\n}\n\ninterface Crop {\n\taspect?: number | undefined;\n\tx?: number | undefined;\n\ty?: number | undefined;\n\twidth?: number | undefined;\n\theight?: number | undefined;\n\tunit?: 'px' | '%' | undefined;\n}\n\n//\t0 2 4\t\t\tr r tx\n//\t1 3 5\t\t\tr r ty\ntype Matrix2x3 = [number, number, number, number, number, number];\n\ninterface SourceImageFile {\n\tname: string;\n\tsize: number;\n\turl: string;\n\tcrop?: Crop;\n\tmatrix: Matrix2x3;\n\tdimensions: {\n\t\twidth: number;\n\t\theight: number;\n\t};\n\tinterval: number;\n\tneedGauge?: boolean;\n}\n\ninterface Area extends Rect {\n\tstaves: {\n\t\tinterval: number;\n\t\tmiddleRhos: number[];\n\t\tphi1: number;\n\t\tphi2: number;\n\t};\n}\n\ninterface PageLayout {\n\tareas: Area[];\n}\n\ninterface MeasureBrief {\n\ttimeSignature: Fraction;\n}\n\ninterface VoiceMeasure {\n\ttickMap: { [key: number]: EventTerm | ChordmodeTerm };\n\tduration: number;\n\n\ttimeSignature?: Fraction;\n\ttimeSigNumeric?: boolean;\n\tkeySignature?: number;\n\n\tcontextedTerms: ContextedTerm[];\n\tmarks: MarkTerm[];\n\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbar?: string;\n\n\tempty?: boolean;\n\n\theadStaff?: number;\n\ttailStaff?: number;\n\n\ttrait?: HashVector;\n\tvoiceIndex?: number;\n}\n\ninterface TermVoice {\n\tmode: string;\n\tmeasures: VoiceMeasure[];\n}\n\ninterface VoicesStaff {\n\tcontext?: string;\n\tname?: string;\n\tvoices: TermVoice[];\n}\n\ninterface PaperOptions {\n\traggedLast: boolean;\n\traggedBottom: boolean;\n\traggedLastBottom: boolean;\n\tslashSystemSeparator: boolean;\n}\n\ninterface MusicHeaders {\n\ttitle: string;\n\tsubtitle: string;\n\tsubsubtitle: string;\n\tcomposer: string;\n\tpoet: string;\n\tarranger: string;\n\topus: string;\n\tcopyright: string;\n\tinstrument: string;\n\tdedication: string;\n\ttagline: string;\n}\n\ninterface MusicSheet {\n\ttitle: string;\n\tpageSize: {\n\t\t// in pixels\n\t\twidth: number;\n\t\theight: number;\n\t};\n\tunitSize: number;\n\tmeasureLayout?: measureLayout.MeasureLayout;\n\tstaffLayout: StaffLayout;\n\tpaperOptions?: Partial;\n\theaders: Partial;\n\n\tvoiceStaves: VoicesStaff[];\n\tinstrumentDict: { [key: string]: string };\n}\n\ninterface Performing {\n\tnotation: MetaNotation;\n\ttokenMap: Map;\n}\n\ntype RegulationPolicy = 'test' | 'simple' | 'equations' | 'advanced';\n\ninterface RegulationOptions {\n\tpolicy?: RegulationPolicy;\n\tquota?: number;\n\t[key: string]: any;\n}\n\ninterface ScoreData {\n\tversion?: number;\n\t[key: string]: any;\n}\n\ninterface AdditionalLineStack {\n\tleft: number;\n\tright: number;\n\tn: number;\n}\n\ninterface RegulationSolutionEvent {\n\tid: number;\n\ttick: number;\n\ttickGroup: number;\n\ttimeWarp: Fraction;\n\tdivision?: number;\n\tdots?: number;\n\tbeam?: string;\n\tgrace?: boolean;\n\tfullMeasure?: boolean;\n}\n\ninterface RegulationSolution {\n\tevents: RegulationSolutionEvent[];\n\tvoices: number[][];\n\tduration: number;\n\tpriority?: number;\n\testimatedDuration?: number;\n\ttimeSignature?: Fraction;\n}\n\ninterface BackgroundImage {\n\turl: string;\n\tposition: Rect;\n\toriginal?: boolean;\n}\n\nenum TextType { //\tLEVEL\t\t\tCHARSET\n\tTitle = 'Title', // page\t\t\t\tgeneral\n\tAuthor = 'Author', // page\t\t\t\tgeneral\n\tTempoText = 'TempoText', // measure\t\t\tspecific vocabulary\n\tTempoNumeral = 'TempoNumeral', // measure\t\t\tsymbolic and numeric\n\tTextualMark = 'TextualMark', // term\t\t\t\tspecific vocabulary\n\tLyric = 'Lyric', // term\t\t\t\tgeneral\n\tInstrument = 'Instrument', // system\t\t\tspecific vocabulary\n\tMeasureNumber = 'MeasureNumber', // system\t\t\tnumeric\n\tTimes = 'Times', // staff\t\t\tnumeric\n\tAlternation1 = 'Alternation1', // measure\t\t\tnumeric\n\tAlternation2 = 'Alternation2', // measure\t\t\tnumeric\n\tChord = 'Chord', // measure\t\t\tspecific domian\n\tPageMargin = 'PageMargin', // page\t\t\t\tgeneral\n\tOther = 'Other', // page\t\t\t\tgeneral\n}\n\nexport {\n\tRect,\n\tChordRect,\n\tVLine,\n\tFraction,\n\tMeasureBarType,\n\tEventFeature,\n\tEventPredisposition,\n\tChordColumn,\n\tEventMeasure,\n\tEventMeasureColumn,\n\tEventSystem,\n\tTermMeasure,\n\tTermRow,\n\tTermStaff,\n\tPitch,\n\tPageLayoutMethod,\n\tRecognitionSettings,\n\tSourceImageFile,\n\tPageLayout,\n\tStaffBasic,\n\tVoiceMeasure,\n\tVoicesStaff,\n\tTermVoice,\n\tMeasureBrief,\n\tAdditionalLineStack,\n\tTextType,\n\tMusicSheet,\n\tPerforming,\n\tRegulationOptions,\n\tScoreData,\n\tMusicHeaders,\n\tMatrix2x3,\n\tRegulationSolutionEvent,\n\tRegulationSolution,\n\tBackgroundImage,\n};\n","import sha1 from 'js-sha1';\n\nenum SemanticType {\n\t// clefs\n\tClefG = 'ClefG',\n\tClefF = 'ClefF',\n\tClefC = 'ClefC',\n\n\t// noteheads\n\tNoteheadS0 = 'NoteheadS0',\n\tNoteheadS1 = 'NoteheadS1',\n\tNoteheadS2 = 'NoteheadS2',\n\tNoteheadS1stemU = 'NoteheadS1stemU',\n\tNoteheadS1stemD = 'NoteheadS1stemD',\n\tNoteheadS2stemU = 'NoteheadS2stemU',\n\tNoteheadS2stemD = 'NoteheadS2stemD',\n\n\tvline_Stem = 'vline_Stem',\n\n\t// flags\n\tFlag3 = 'Flag3',\n\n\t// beams\n\tBeamLeft = 'BeamLeft',\n\tBeamContinue = 'BeamContinue',\n\tBeamRight = 'BeamRight',\n\n\t// tremolos\n\tTremoloLeft = 'TremoloLeft',\n\tTremoloRight = 'TremoloRight',\n\tTremoloMiddle = 'TremoloMiddle',\n\n\t// dots (duration)\n\tDot = 'Dot',\n\n\t// rests\n\tRest0 = 'Rest0',\n\tRest1 = 'Rest1',\n\tRest2 = 'Rest2',\n\tRest3 = 'Rest3',\n\tRest4 = 'Rest4',\n\tRest5 = 'Rest5',\n\tRest6 = 'Rest6',\n\tRest0W = 'Rest0W', // capital 'R' in lilypond\n\tRestM1 = 'RestM1',\n\n\t// accidentals\n\tAccNatural = 'AccNatural',\n\tAccSharp = 'AccSharp',\n\tAccDoublesharp = 'AccDoublesharp',\n\tAccFlat = 'AccFlat',\n\tAccFlatflat = 'AccFlatflat',\n\n\t// volta\n\tvline_VoltaLeft = 'vline_VoltaLeft',\n\tvline_VoltaRight = 'vline_VoltaRight',\n\tVoltaLeft = 'VoltaLeft',\n\tVoltaRight = 'VoltaRight',\n\n\tVoltaAlternativeBegin = 'VoltaAlternativeBegin',\n\t//VoltaAlternativeEnd\t= \"VoltaAlternativeEnd\",\n\n\t// vertical bars\n\tBarMeasure = 'BarMeasure',\n\tvline_BarMeasure = 'vline_BarMeasure',\n\tvline_BarTerminal = 'vline_BarTerminal',\n\tvline_BarSegment = 'vline_BarSegment',\n\n\t// slur & tie\n\tSlurBegin = 'SlurBegin',\n\tSlurEnd = 'SlurEnd',\n\n\t// time signature\n\tTimesigC44 = 'TimesigC44',\n\tTimesigC22 = 'TimesigC22',\n\tTimesigZero = 'TimesigZero',\n\tTimesigOne = 'TimesigOne',\n\tTimesigTwo = 'TimesigTwo',\n\tTimesigThree = 'TimesigThree',\n\tTimesigFour = 'TimesigFour',\n\tTimesigFive = 'TimesigFive',\n\tTimesigSix = 'TimesigSix',\n\tTimesigSeven = 'TimesigSeven',\n\tTimesigEight = 'TimesigEight',\n\tTimesigNine = 'TimesigNine',\n\n\t// octave shifts\n\tOctaveShift8va = 'OctaveShift8va',\n\tOctaveShift8vb = 'OctaveShift8vb',\n\tOctaveShift8 = 'OctaveShift8',\n\tOctaveShift0 = 'OctaveShift0',\n\n\t// numbers\n\tZero = 'Zero',\n\tOne = 'One',\n\tTwo = 'Two',\n\tThree = 'Three',\n\tFour = 'Four',\n\tFive = 'Five',\n\tSix = 'Six',\n\tSeven = 'Seven',\n\tEight = 'Eight',\n\tNine = 'Nine',\n\n\t// dynamics\n\tf = 'f',\n\tp = 'p',\n\tm = 'm',\n\tn = 'n',\n\tr = 'r',\n\ts = 's',\n\tz = 'z',\n\n\tCrescendoBegin = 'CrescendoBegin',\n\tCrescendoEnd = 'CrescendoEnd',\n\tDecrescendoBegin = 'DecrescendoBegin',\n\tDecrescendoEnd = 'DecrescendoEnd',\n\n\t// scripts\n\tScriptFermata = 'ScriptFermata',\n\tScriptShortFermata = 'ScriptShortFermata',\n\tScriptSforzato = 'ScriptSforzato',\n\tScriptStaccato = 'ScriptStaccato',\n\tScriptStaccatissimo = 'ScriptStaccatissimo',\n\tScriptTurn = 'ScriptTurn',\n\tScriptTrill = 'ScriptTrill',\n\tScriptSegno = 'ScriptSegno',\n\tScriptCoda = 'ScriptCoda',\n\tScriptArpeggio = 'ScriptArpeggio',\n\tScriptPrall = 'ScriptPrall',\n\tScriptMordent = 'ScriptMordent',\n\tScriptMarcato = 'ScriptMarcato',\n\tScriptTenuto = 'ScriptTenuto',\n\tScriptPortato = 'ScriptPortato',\n\n\t// pedal\n\tPedalStar = 'PedalStar',\n\tPedalPed = 'PedalPed',\n\n\t// additional annotation\n\tKeyAcc = 'KeyAcc',\n\tTempoNotehead = 'TempoNotehead',\n\tGraceNotehead = 'GraceNotehead',\n\tSignLined = 'SignLined',\n\tSignInterval = 'SignInterval',\n\n\trect_Text = 'rect_Text',\n\trect_Lyric = 'rect_Lyric',\n}\n\nconst glyphSemanticMapping: { [key: string]: string } = {\n\t'rests.1': 'Rest1',\n\t'rests.0o': 'Rest0',\n\t'rests.1o': 'Rest1',\n\t'rests.M1': 'RestM1',\n\t'rests.2': 'Rest2',\n\t'rests.3': 'Rest3',\n\t'rests.4': 'Rest4',\n\t'rests.5': 'Rest5',\n\t'rests.6': 'Rest6',\n\t'accidentals.sharp': 'AccSharp',\n\t'accidentals.doublesharp': 'AccDoublesharp',\n\t'accidentals.natural': 'AccNatural',\n\t'accidentals.flat': 'AccFlat',\n\t'accidentals.flatflat': 'AccFlatflat',\n\t'dots.dot': 'Dot',\n\t'scripts.ufermata': 'ScriptFermata',\n\t'scripts.dfermata': 'ScriptFermata',\n\t'scripts.ushortfermata': 'ScriptShortFermata',\n\t'scripts.dshortfermata': 'ScriptShortFermata',\n\t'scripts.staccato': 'ScriptStaccato',\n\t'scripts.ustaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.dstaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.turn': 'ScriptTurn',\n\t'scripts.trill': 'ScriptTrill',\n\t'scripts.segno': 'ScriptSegno',\n\t'scripts.coda': 'ScriptCoda',\n\t'scripts.arpeggio': 'ScriptArpeggio',\n\t'scripts.prall': 'ScriptPrall',\n\t'scripts.mordent': 'ScriptMordent',\n\t'scripts.umarcato': 'ScriptMarcato',\n\t'scripts.dmarcato': 'ScriptMarcato',\n\t'scripts.uportato': 'ScriptPortato',\n\t'scripts.dportato': 'ScriptPortato',\n\t'scripts.tenuto': 'ScriptTenuto',\n\t'scripts.sforzato': 'ScriptSforzato',\n\t'clefs.C': 'ClefC',\n\t'clefs.F': 'ClefF',\n\t'clefs.G': 'ClefG',\n\t'clefs.F_change': 'ClefF',\n\t'clefs.G_change': 'ClefG',\n\t'timesig.C44': 'TimesigC44',\n\t'timesig.C22': 'TimesigC22',\n\t'pedal.*': 'PedalStar',\n\t'pedal.Ped': 'PedalPed',\n\t'noteheads.s0': 'NoteheadS0',\n\t'noteheads.s1': 'NoteheadS1',\n\t'noteheads.s2': 'NoteheadS2',\n\tf: 'f',\n\tm: 'm',\n\tp: 'p',\n\tr: 'r',\n\ts: 's',\n\tz: 'z',\n};\n\nconst semanticPriorities: { [key: string]: number } = {\n\tClefG: 0,\n\tClefF: 0,\n\tTimesigFour: 0,\n\tTimesigThree: 0,\n\tTimesigTwo: 0,\n\tNoteheadS0: 0,\n\tNoteheadS1: 0,\n\tNoteheadS2: 0,\n\tDot: 0,\n\tvline_BarMeasure: 0,\n\tvline_Stem: 0,\n\tFlag3: 0,\n\n\tTimesigC44: 1,\n\tTimesigC22: 1,\n\tTimesigEight: 1,\n\tTimesigSix: 1,\n\tAccNatural: 1,\n\tAccSharp: 1,\n\tAccFlat: 1,\n\tKeyAcc: 1,\n\tRest0: 1,\n\tRest1: 1,\n\tRest2: 1,\n\tRest3: 1,\n\tRest4: 1,\n\tOctaveShift8: 1,\n\tOctaveShift0: 1,\n\n\tAccDoublesharp: 2,\n\tAccFlatflat: 2,\n\tTimesigOne: 2,\n\tTimesigNine: 2,\n\tRest5: 2,\n\tRest6: 2,\n\tSlurBegin: 2,\n\tSlurEnd: 2,\n\tVoltaLeft: 2,\n\tVoltaRight: 2,\n\t//VoltaAlternativeBegin: 2,\n\tvline_BarTerminal: 2,\n\tvline_BarSegment: 2,\n\tTempoNotehead: 2,\n\tGraceNotehead: 2,\n\tSignLined: 2,\n\tSignInterval: 2,\n\tBeamLeft: 2,\n\tBeamRight: 2,\n\tBeamContinue: 2,\n\tTremoloLeft: 2,\n\tTremoloRight: 2,\n\tTremoloMiddle: 2,\n\tStemTip: 2,\n\tStemHead: 2,\n\n\t//Rest0W: 3,\n\tf: 3,\n\tp: 3,\n\tm: 3,\n\tScriptFermata: 3,\n\tScriptSforzato: 3,\n\tScriptStaccato: 3,\n\tScriptStaccatissimo: 3,\n\tScriptTurn: 3,\n\tScriptTrill: 3,\n\tScriptSegno: 3,\n\tScriptCoda: 3,\n\tScriptArpeggio: 3,\n\tScriptPrall: 3,\n\tScriptMordent: 3,\n\tScriptTenuto: 3,\n\tPedalStar: 3,\n\tPedalPed: 3,\n\tTimesigFive: 3,\n\tTimesigSeven: 3,\n\tTimesigZero: 3,\n\tOne: 3,\n\tTwo: 3,\n\tThree: 3,\n\tFour: 3,\n\tFive: 3,\n\trect_Text: 3,\n\trect_Lyric: 3,\n\tCrescendoBegin: 3,\n\tCrescendoEnd: 3,\n\tDecrescendoBegin: 3,\n\tDecrescendoEnd: 3,\n\n\tRestM1: 4,\n\tClefC: 4,\n\tScriptShortFermata: 4,\n\tScriptMarcato: 4,\n\tScriptPortato: 4,\n\ts: 4,\n\tr: 4,\n\tz: 4,\n\tZero: 4,\n\tSix: 4,\n\tSeven: 4,\n\tEight: 4,\n\tNine: 4,\n};\n\ninterface Position {\n\tx?: number;\n\ty?: number;\n}\n\nconst NOTEHEAD_WIDTHS = {\n\tNoteheadS0: 0.913 * 2,\n\tNoteheadS1: 0.632 * 2,\n\tNoteheadS2: 0.599 * 2,\n};\n\nconst glyphCenters: { [key: string]: Position } = {\n\t//\"clefs.C\": { x: 1.3 },\n\t'clefs.F': { x: 1.06 },\n\t'clefs.G': { x: 1.3 },\n\t'clefs.F_change': { x: 0.87 },\n\t'clefs.G_change': { x: 1.07 },\n\t'timesig.C44': { x: 0.9 },\n\t'timesig.C22': { x: 0.9 },\n\tzero: { x: 0.7, y: -1 },\n\tone: { x: 0.7, y: -1 },\n\ttwo: { x: 0.7, y: -1 },\n\tthree: { x: 0.7, y: -1 },\n\tfour: { x: 0.7, y: -1 },\n\tfive: { x: 0.7, y: -1 },\n\tsix: { x: 0.7, y: -1 },\n\tseven: { x: 0.7, y: -1 },\n\teight: { x: 0.7, y: -1 },\n\tnine: { x: 0.7, y: -1 },\n\t'accidentals.sharp': { x: 0.55 },\n\t'accidentals.doublesharp': { x: 0.5 },\n\t'accidentals.natural': { x: 0.3 },\n\t'accidentals.flat': { x: 0.3 },\n\t'accidentals.flatflat': { x: 0.5 },\n\t'noteheads.s0': { x: NOTEHEAD_WIDTHS.NoteheadS0 / 2 },\n\t'noteheads.s1': { x: NOTEHEAD_WIDTHS.NoteheadS1 / 2 },\n\t'noteheads.s2': { x: NOTEHEAD_WIDTHS.NoteheadS2 / 2 },\n\t'rests.0': { x: 0.75, y: 1 },\n\t'rests.1': { x: 0.75 },\n\t'rests.0o': { x: 0.75, y: 1 },\n\t'rests.1o': { x: 0.75 },\n\t'rests.M1': { x: 0.75, y: 1 },\n\t'rests.2': { x: 0.5 },\n\t'rests.3': { x: 0.5 },\n\t'rests.4': { x: 0.5 },\n\t'rests.5': { x: 0.5 },\n\t'rests.6': { x: 0.5 },\n\tf: { x: 0.6, y: -0.5 },\n\tm: { x: 0.9, y: -0.5 },\n\tp: { x: 0.5, y: -0.5 },\n\tr: { x: 0.5, y: -0.5 },\n\ts: { x: 0.5, y: -0.5 },\n\tz: { x: 0.5, y: -0.5 },\n\t'scripts.trill': { y: -0.5 },\n\t'scripts.segno': { x: 0, y: 0 },\n\t'scripts.coda': { x: 0, y: 0 },\n\t'scripts.arpeggio': { x: 0.5, y: -0.5 },\n\t'pedal.*': { x: 0.78, y: -0.78 },\n\t'pedal.Ped': { x: 1.6, y: -0.7 },\n};\n\ninterface Point {\n\t// in staff unit coordinates\n\tx: number;\n\ty: number;\n\n\tpivotX?: number;\n\n\t// for prediction\n\tconfidence?: number;\n\n\t// sheet token index in page\n\tindex?: number;\n\ttag?: string;\n\n\textension?: {\n\t\ty1?: number;\n\t\ty2?: number;\n\n\t\thref?: string;\n\t\twidth?: number;\n\t\theight?: number;\n\n\t\ttext?: string;\n\t\ttheta?: number;\n\t\ttype?: string;\n\t\ttextFeature?: Record;\n\t};\n}\n\ninterface SemanticPoint extends Point {\n\tid?: string;\n\tsemantic: SemanticType;\n}\n\nconst ONE_D_SEMANTICS = [\n\t'OctaveShift8va',\n\t'OctaveShift8vb',\n\t'OctaveShift8',\n\t'OctaveShift0',\n\t'vline_VoltaLeft',\n\t'vline_VoltaRight',\n\t'VoltaAlternativeBegin',\n\t'vline_BarMeasure',\n\t'vline_BarTerminal',\n\t'vline_BarSegment',\n];\n\nconst SYSTEM_SEMANTIC_TYPES = [\n\tSemanticType.BarMeasure,\n\tSemanticType.vline_BarMeasure,\n\tSemanticType.vline_BarTerminal,\n\tSemanticType.vline_BarSegment,\n\tSemanticType.vline_VoltaLeft,\n\tSemanticType.vline_VoltaRight,\n\tSemanticType.VoltaAlternativeBegin,\n];\n\nconst st = SemanticType;\nconst CONFLICTION_GROUPS = [\n\t[st.NoteheadS0, st.NoteheadS1, st.NoteheadS2],\n\t[st.Zero, st.One, st.Two, st.Three, st.Four, st.Five, st.Six, st.Seven, st.Eight, st.Nine, st.ScriptStaccatissimo],\n\t[\n\t\tst.TimesigZero,\n\t\tst.TimesigOne,\n\t\tst.TimesigTwo,\n\t\tst.TimesigThree,\n\t\tst.TimesigFour,\n\t\tst.TimesigFive,\n\t\tst.TimesigSix,\n\t\tst.TimesigSeven,\n\t\tst.TimesigEight,\n\t\tst.TimesigNine,\n\t],\n\t[st.Rest0, st.Rest1, st.Rest2, st.Rest3, st.Rest4, st.Rest5, st.Rest6, st.Rest0W, st.RestM1],\n\t[st.SignInterval, st.SignLined],\n\t[st.BeamLeft, st.BeamContinue, st.BeamRight],\n];\n\nconst STAMP_SEMANTICS = [\n\tst.ClefG,\n\tst.ClefF,\n\tst.ClefC,\n\tst.NoteheadS0,\n\tst.NoteheadS1,\n\tst.NoteheadS2,\n\tst.Dot,\n\tst.Rest0,\n\tst.Rest1,\n\tst.Rest2,\n\tst.Rest3,\n\tst.Rest4,\n\tst.Rest5,\n\tst.Rest6,\n\tst.RestM1,\n\tst.AccNatural,\n\tst.AccSharp,\n\tst.AccDoublesharp,\n\tst.AccFlat,\n\tst.AccFlatflat,\n\tst.TimesigC44,\n\tst.TimesigC22,\n\tst.TimesigZero,\n\tst.TimesigOne,\n\tst.TimesigTwo,\n\tst.TimesigThree,\n\tst.TimesigFour,\n\tst.TimesigFive,\n\tst.TimesigSix,\n\tst.TimesigSeven,\n\tst.TimesigEight,\n\tst.TimesigNine,\n\tst.One,\n\tst.Two,\n\tst.Three,\n\tst.Four,\n\tst.Five,\n\tst.OctaveShift8,\n\t//st.OctaveShift15,\n\tst.OctaveShift0,\n\tst.f,\n\tst.p,\n\tst.m,\n\tst.n,\n\tst.r,\n\tst.s,\n\tst.z,\n\tst.ScriptFermata,\n\tst.ScriptShortFermata,\n\tst.ScriptSforzato,\n\tst.ScriptStaccato,\n\tst.ScriptStaccatissimo,\n\tst.ScriptTurn,\n\tst.ScriptTrill,\n\tst.ScriptSegno,\n\tst.ScriptCoda,\n\tst.ScriptArpeggio,\n\tst.ScriptPrall,\n\tst.ScriptMordent,\n\tst.ScriptMarcato,\n\tst.ScriptTenuto,\n\tst.ScriptPortato,\n\tst.PedalStar,\n\tst.PedalPed,\n];\n\n// [cx, cy, width, height]\nconst STAMP_RECTS = {\n\tClefG: [-0.0625, -1.125, 3.6, 8.6],\n\tClefF: [0.25, 0.5625, 3.6, 3.8],\n\tClefC: [0.25, 0, 3.25, 4.5],\n\tNoteheadS0: [0.0625, 0, 2.55, 1.4],\n\tNoteheadS1: [0.0625, 0, 1.8, 1.4],\n\tNoteheadS2: [0.0625, -0.0625, 1.65, 1.35],\n\tDot: [0.25, 0, 0.6, 0.6],\n\tRest0: [0, -0.75, 3.25, 0.9],\n\tRest1: [0, -0.25, 3.25, 0.9],\n\tRest2: [-0.0625, -0.1875, 1.6, 3.375],\n\tRest3: [0, 0.0625, 1.2, 2.25],\n\tRest4: [0.0625, 0.5625, 1.65, 3.375],\n\tRest5: [0.0625, 0.0625, 1.95, 4.375],\n\tRest6: [0.0625, 0.5625, 1.95, 5.375],\n\tRestM1: [-0.4375, -1.5, 0.75, 1.2],\n\tAccNatural: [0, 0, 0.9, 3.5],\n\tAccSharp: [0, 0, 1.5, 3.5],\n\tAccDoublesharp: [0, 0, 1.5, 1.5],\n\tAccFlat: [0, -0.5625, 1.2, 3.125],\n\tAccFlatflat: [0.1875, -0.5625, 1.95, 3.125],\n\tTimesigC44: [-0.0625, 0, 2.25, 2.3],\n\tTimesigC22: [-0.0625, 0, 2.25, 3.2],\n\tTimesigZero: [0, 0, 1.8, 2.2],\n\tTimesigOne: [-0.125, 0, 1.5, 2.2],\n\tTimesigTwo: [0, 0, 2.2, 2.2],\n\tTimesigThree: [-0.0625, 0, 1.9, 2.4],\n\tTimesigFour: [0.0625, 0, 1.95, 2.2],\n\tTimesigFive: [0, 0, 1.8, 2.3],\n\tTimesigSix: [0, 0, 2.0, 2.4],\n\tTimesigSeven: [0, 0, 1.8, 2.2],\n\tTimesigEight: [0, 0, 1.9, 2.2],\n\tTimesigNine: [0, 0, 1.9, 2.2],\n\tOne: [-0.0625, 0, 0.75, 1.6],\n\tTwo: [0, 0, 1.2, 1.6],\n\tThree: [0, 0, 1.2, 1.6],\n\tFour: [0, 0, 1.2, 1.6],\n\tFive: [0, 0, 1.2, 1.6],\n\tOctaveShift8: [2.125, -0.1875, 4.75, 3.6],\n\tOctaveShift0: [-0.4, 0, 1.8, 4.2],\n\tf: [0.0625, -0.125, 2.55, 3],\n\tp: [-0.0625, 0.25, 2.55, 2.1],\n\tm: [-0.125, -0.0625, 2.4, 1.35],\n\tn: [-0.3125, -0.0625, 1.95, 1.35],\n\tr: [0, -0.125, 1.5, 1.5],\n\ts: [0, -0.0625, 1.2, 1.35],\n\tz: [0.0625, 0, 1.35, 1.5],\n\tScriptFermata: [0, 0, 3.25, 3.9],\n\tScriptShortFermata: [0, 0, 2.4, 4.95],\n\tScriptSforzato: [-0.0625, 0, 2.5, 1.2],\n\tScriptStaccato: [0, -0.0625, 0.6, 0.45],\n\tScriptStaccatissimo: [0, 0, 1.2, 2.6],\n\tScriptTurn: [0, 0, 2.7, 1.5],\n\tScriptTrill: [-0.125, -0.5, 3, 2.7],\n\tScriptSegno: [0, 0, 2.4, 3.5],\n\tScriptCoda: [0, 0, 2.7, 3.25],\n\tScriptArpeggio: [-0.0625, 0, 1.05, 1.8],\n\tScriptPrall: [0, 0, 2.4, 1.2],\n\tScriptMordent: [0, 0, 2.4, 1.5],\n\tScriptMarcato: [0, 0, 1.2, 2.475],\n\tScriptTenuto: [0, -0.0625, 1.5, 0.15],\n\tScriptPortato: [0, 0, 1.5, 1.65],\n\tPedalStar: [0, 0, 3.2, 3.2],\n\tPedalPed: [0, -0.25, 4.7, 2.4],\n};\n\nconst hashSemanticPoint = (systemIndex: number, staffIndex: number, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x * 10);\n\tconst y = Math.round(point.y * 10);\n\tconst source = `${systemIndex}|${staffIndex}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nconst hashPageSemanticPoint = (pageName: string, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x);\n\tconst y = Math.round(point.y);\n\tconst source = `p-${pageName}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nexport {\n\tSemanticType,\n\tglyphSemanticMapping,\n\tsemanticPriorities,\n\tPoint,\n\tSemanticPoint,\n\tNOTEHEAD_WIDTHS,\n\tglyphCenters,\n\tONE_D_SEMANTICS,\n\tSYSTEM_SEMANTIC_TYPES,\n\tCONFLICTION_GROUPS,\n\tSTAMP_SEMANTICS,\n\tSTAMP_RECTS,\n\thashSemanticPoint,\n\thashPageSemanticPoint,\n};\n","globalThis.btoa = (str) => Buffer.from(str, 'binary').toString('base64');\nglobalThis.atob = (str) => Buffer.from(str, 'base64').toString('binary');\n","import { TextType } from './interfaces';\nimport { NOTEHEAD_WIDTHS } from './semanticPoint';\n\nenum TokenType {\n\t// clefs\n\tClefG = 'clefs-G', // clefs.G_change\n\tClefF = 'clefs-F', // clefs.F_change\n\tClefC = 'clefs-C', // clefs.C_change\n\n\t// time signature\n\tTimesigC44 = 'timesig-C44',\n\tTimesigC22 = 'timesig-C22',\n\tTimesigZero = 'zero|timesig0',\n\tTimesigOne = 'one|timesig1',\n\tTimesigTwo = 'two|timesig2',\n\tTimesigThree = 'three|timesig3',\n\tTimesigFour = 'four|timesig4',\n\tTimesigFive = 'five|timesig5',\n\tTimesigSix = 'six|timesig6',\n\tTimesigSeven = 'seven|timesig7',\n\tTimesigEight = 'eight|timesig8',\n\tTimesigNine = 'nine|timesig9',\n\n\t// octave shifts\n\tOctaveShift8va = 'octave-a',\n\tOctaveShift8vb = 'octave-b',\n\tOctaveShift0 = 'octave-0',\n\n\t// numbers\n\tZero = 'zero|n0',\n\tOne = 'one|n1',\n\tTwo = 'two|n2',\n\tThree = 'three|n3',\n\tFour = 'four|n4',\n\tFive = 'five|n5',\n\tSix = 'six|n6',\n\tSeven = 'seven|n7',\n\tEight = 'eight|n8',\n\tNine = 'nine|n9',\n\n\t// accidentals\n\tAccNatural = 'accidentals-natural',\n\tAccSharp = 'accidentals-sharp',\n\tAccDoublesharp = 'accidentals-doublesharp',\n\tAccFlat = 'accidentals-flat',\n\tAccFlatflat = 'accidentals-flatflat',\n\tKeyNatural = 'accidentals-natural|key-natural',\n\tKeySharp = 'accidentals-sharp|key-sharp',\n\tKeyFlat = 'accidentals-flat|key-flat',\n\n\t// noteheads\n\tNoteheadS0 = 'noteheads-s0',\n\tNoteheadS1 = 'noteheads-s1',\n\tNoteheadS2 = 'noteheads-s2',\n\tNoteheadS1stemU = 'noteheads-s1|noteheads-s1-u',\n\tNoteheadS1stemD = 'noteheads-s1|noteheads-s1-d',\n\tNoteheadS2stemU = 'noteheads-s2|noteheads-s2-u',\n\tNoteheadS2stemD = 'noteheads-s2|noteheads-s2-d',\n\n\t// rests\n\tRest0 = 'rests-0o',\n\tRest1 = 'rests-1o',\n\tRest2 = 'rests-2',\n\tRest3 = 'rests-3',\n\tRest4 = 'rests-4',\n\tRest5 = 'rests-5',\n\tRest6 = 'rests-6',\n\tRest0W = 'rests-0',\n\tRestM1 = 'rests-M1',\n\n\t// flags\n\tFlag3 = 'flags-u3', // flags.d3\n\tFlag4 = 'flags-u4', // flags.d4\n\tFlag5 = 'flags-u5', // flags.d5\n\tFlag6 = 'flags-u6', // flags.d6\n\tFlag7 = 'flags-u7', // flags.d7\n\tFlag8 = 'flags-u8', // flags.d8\n\n\t// beams\n\tBeamLeft = '|beam-left',\n\tBeamRight = '|beam-right',\n\tBeamContinue = '|beam-continue',\n\n\t// tremolos\n\tTremoloLeft = '|tremolo-left',\n\tTremoloRight = '|tremolo-right',\n\tTremoloMiddle = '|tremolo-middle',\n\n\t// slur & tie\n\tSlurBegin = '|slur-begin',\n\tSlurEnd = '|slur-end',\n\tTieBegin = '|tie-begin',\n\tTieEnd = '|tie-end',\n\n\t// volta\n\tVoltaLeft = '|volta-left',\n\tVoltaRight = '|volta-right',\n\n\tVoltaAlternativeBegin = '|volta-alter-begin',\n\t//VoltaAlternativeEnd = \"|volta-alter-end\",\n\n\t// vertical bars\n\t//BarMeasure = \"|bar-measure\",\n\tBarTerminal = '|bar-terminal',\n\tBarSegment = '|bar-segment',\n\n\t// dots (duration)\n\tDot = '|dot',\n\tDotDot = '|dotdot',\n\n\t// dynamics\n\tf = 'f',\n\tp = 'p',\n\tm = 'm',\n\tr = 'r',\n\ts = 's',\n\tz = 'z',\n\n\t//\n\tWedgeCrescendo = '|wedge-crescendo',\n\tWedgeDiminuendo = '|wedge-diminuendo',\n\tWedgeClose = '|wedge-close',\n\n\tCrescendoBegin = '|wedge-crescendo',\n\tDecrescendoBegin = '|wedge-diminuendo',\n\tCrescendoEnd = '|wedge-close',\n\tDecrescendoEnd = '|wedge-close',\n\n\t// scripts\n\tScriptFermata = 'scripts-ufermata', // scripts.dfermata\n\tScriptShortFermata = 'scripts-ushortfermata', // scripts.dshortfermata\n\tScriptSforzato = 'scripts-sforzato',\n\tScriptStaccato = 'scripts-staccato',\n\tScriptStaccatissimo = 'scripts-ustaccatissimo', // scripts.dstaccatissimo\n\tScriptTurn = 'scripts-turn',\n\tScriptTrill = 'scripts-trill',\n\tScriptSegno = 'scripts-segno',\n\tScriptCoda = 'scripts-coda',\n\tScriptArpeggio = 'scripts-arpeggio',\n\tScriptPrall = 'scripts-prall',\n\tScriptMordent = 'scripts-mordent',\n\tScriptMarcato = 'scripts-umarcato', // scripts.dmarcato\n\tScriptTenuto = 'scripts-tenuto',\n\tScriptPortato = 'scripts-uportato', // scripts.dportato\n\n\t// pedal\n\tPedalStar = 'pedal-star',\n\tPedalPed = 'pedal-Ped',\n\n\tText = '|text',\n\tGraceNotehead = '|grace-notehead',\n}\n\n// alias\nconst tt = TokenType;\n\nexport const TokenTypes = Object.values(TokenType);\nexport const TokenClefs = TokenTypes.filter((t) => /clefs-/.test(t));\nexport const TokenTimesigs = TokenTypes.filter((t) => /timesig/.test(t));\nexport const TokenTimesigsC = TokenTypes.filter((t) => /timesig-/.test(t));\nexport const TokenTimesigsN = TokenTypes.filter((t) => /timesig\\d/.test(t));\nexport const TokenOctshifts = TokenTypes.filter((t) => /octave-/.test(t));\nexport const TokenNumbers = TokenTypes.filter((t) => /n\\d/.test(t));\nexport const TokenAccidentals = TokenTypes.filter((t) => /accidentals-/.test(t));\nexport const TokenNoteheads = TokenTypes.filter((t) => /noteheads-/.test(t));\nexport const TokenBareNoteheads = [tt.NoteheadS0, tt.NoteheadS1, tt.NoteheadS2];\nexport const TokenDirectionalNoteheads = TokenTypes.filter((t) => /noteheads-.+-[ud]/.test(t));\nexport const TokenRests = TokenTypes.filter((t) => /rests-/.test(t));\nexport const TokenFlags = TokenTypes.filter((t) => /flags-/.test(t));\nexport const TokenVolta = TokenTypes.filter((t) => /volta-/.test(t));\nexport const TokenDynamics = TokenTypes.filter((t) => /^[a-z]$/.test(t));\nexport const TokenScripts = TokenTypes.filter((t) => /scripts-/.test(t));\nexport const TokenPedals = TokenTypes.filter((t) => /pedal-/.test(t));\nexport const TokenDots = [tt.Dot, tt.DotDot];\nexport const TokenArcs = [tt.SlurBegin, tt.SlurEnd, tt.TieBegin, tt.TieEnd];\nexport const TokenBeams = TokenTypes.filter((t) => /beam-/.test(t));\nexport const TokenWedges = TokenTypes.filter((t) => /wedge-/.test(t));\n\nexport const TokenAccessories = [\n\t...TokenNumbers,\n\t...TokenDynamics,\n\t...TokenWedges,\n\t...TokenPedals,\n\t...TokenArcs,\n\n\ttt.ScriptFermata,\n\ttt.ScriptShortFermata,\n\ttt.ScriptSforzato,\n\ttt.ScriptStaccato,\n\ttt.ScriptStaccatissimo,\n\ttt.ScriptTurn,\n\ttt.ScriptTrill,\n\ttt.ScriptPrall,\n\ttt.ScriptMordent,\n\ttt.ScriptMarcato,\n\ttt.ScriptTenuto,\n\ttt.ScriptPortato,\n];\n\nexport const TokenDirectionless = [...TokenPedals];\n\nexport const TokenGlyphs = [\n\t...TokenClefs,\n\t...TokenTimesigs,\n\t...TokenNumbers,\n\t...TokenAccidentals,\n\ttt.NoteheadS0,\n\ttt.NoteheadS1,\n\ttt.NoteheadS2,\n\t...TokenRests,\n\t...TokenDynamics,\n\t...TokenScripts,\n\t...TokenPedals,\n\t...TokenDots,\n];\n\nconst TOKEN_Y_ROUND = {} as Record;\nTokenClefs.forEach((t) => (TOKEN_Y_ROUND[t] = 1));\nTokenTimesigsN.forEach((t) => (TOKEN_Y_ROUND[t] = 1));\nTokenAccidentals.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenNoteheads.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenRests.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenDots.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\n\nconst TOKEN_Y_FIXED = {} as Record;\nTokenTimesigsC.forEach((t) => (TOKEN_Y_FIXED[t] = 0));\nTokenVolta.forEach((t) => (TOKEN_Y_FIXED[t] = 0));\n\nclass Token {\n\tstatic className = 'Token';\n\n\tid: string;\n\ttype: TokenType;\n\tx: number;\n\ty: number;\n\tpivotX?: number;\n\n\tconfidence: number;\n\n\ttip?: { x: number; y: number };\n\n\tvoice?: number; // integer, every bit stand for a voice\n\ttimeWarped?: boolean;\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tget typeId(): string {\n\t\treturn this.type.split('|').reverse()[0];\n\t}\n\n\tget isPredicted(): boolean {\n\t\treturn Number.isFinite(this.confidence);\n\t}\n\n\tget isNotehead(): boolean {\n\t\treturn TokenDirectionalNoteheads.includes(this.type) || this.type === TokenType.NoteheadS0;\n\t}\n\n\tget isContexted(): boolean {\n\t\treturn (\n\t\t\tTokenClefs.includes(this.type) || TokenTimesigs.includes(this.type) || TokenOctshifts.includes(this.type) || TokenAccidentals.includes(this.type)\n\t\t);\n\t}\n\n\tget isAccessory(): boolean {\n\t\treturn TokenNumbers.includes(this.type) || TokenDynamics.includes(this.type) || TokenScripts.includes(this.type) || TokenPedals.includes(this.type);\n\t}\n\n\tget division(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn 0;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn 2;\n\n\t\t\tcase tt.Flag3:\n\t\t\t\treturn 3;\n\n\t\t\tcase tt.Flag4:\n\t\t\t\treturn 4;\n\n\t\t\tcase tt.Flag5:\n\t\t\t\treturn 5;\n\n\t\t\tcase tt.Flag6:\n\t\t\t\treturn 6;\n\n\t\t\tcase tt.Flag7:\n\t\t\t\treturn 7;\n\n\t\t\tcase tt.Flag8:\n\t\t\t\treturn 8;\n\n\t\t\tcase tt.RestM1:\n\t\t\t\treturn -1;\n\n\t\t\tcase tt.Rest0:\n\t\t\t\treturn 0;\n\n\t\t\tcase tt.Rest1:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.Rest2:\n\t\t\t\treturn 2;\n\n\t\t\tcase tt.Rest3:\n\t\t\t\treturn 3;\n\n\t\t\tcase tt.Rest4:\n\t\t\t\treturn 4;\n\n\t\t\tcase tt.Rest5:\n\t\t\t\treturn 5;\n\n\t\t\tcase tt.Rest6:\n\t\t\t\treturn 6;\n\n\t\t\t// TODO:\n\t\t\t//case tt.Rest0W:\n\t\t\t//\treturn 0;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget dots(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.Dot:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.DotDot:\n\t\t\t\treturn 2;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget direction(): 'u' | 'd' | null {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn 'u';\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn 'd';\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget width(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS0;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS2;\n\t\t}\n\t}\n\n\tget left(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn this.x - this.width / 2;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn this.x - this.width;\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn this.x;\n\t\t}\n\n\t\treturn this.x;\n\t}\n\n\tget right(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn this.x + this.width / 2;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn this.x;\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn this.x + this.width;\n\t\t}\n\n\t\treturn this.x;\n\t}\n\n\tget voiceIndices(): number[] {\n\t\tif (!this.voice || this.voice < 0) return [];\n\n\t\treturn Array(Math.floor(Math.log2(this.voice)) + 1)\n\t\t\t.fill(null)\n\t\t\t.reduce((indices, _, i) => (this.voice & (1 << i) ? [i + 1, ...indices] : indices), []);\n\t}\n}\n\nclass TextToken extends Token {\n\ttextType: TextType;\n\ttext: string;\n\ttextFeature?: Record;\n\twidth_: number;\n\tfontSize: number;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\t\tObject.assign(this, data);\n\t}\n\n\tget width(): number {\n\t\treturn this.width_;\n\t}\n\n\tset width(value: number) {\n\t\tthis.width_ = value;\n\t}\n}\n\nexport { TokenType, Token, TextToken, TOKEN_Y_ROUND, TOKEN_Y_FIXED };\n","import pick from 'lodash/pick';\n\nconst recoverJSON = (json: string | object, classDict): T => {\n\tif (typeof json === 'object') json = JSON.stringify(json);\n\n\treturn JSON.parse(json, (_, value) => {\n\t\tif (value && typeof value === 'object' && value.__prototype) {\n\t\t\tconst Class = classDict[value.__prototype];\n\t\t\tif (Class) {\n\t\t\t\tconst { __prototype, ...fields } = value;\n\t\t\t\treturn new Class(fields);\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t});\n};\n\nconst deepCopy = (o: any, dict: Map = null): any => {\n\tdict = dict || new Map();\n\tif (dict.get(o)) return dict.get(o);\n\n\tif (Array.isArray(o)) {\n\t\tconst result = [];\n\t\tdict.set(o, result);\n\n\t\to.forEach((e) => result.push(deepCopy(e, dict)));\n\n\t\treturn result;\n\t} else if (o && typeof o === 'object') {\n\t\tconst result = {};\n\t\tdict.set(o, result);\n\n\t\tObject.entries(o).forEach(([key, value]) => (result[key] = deepCopy(value, dict)));\n\t\tObject.setPrototypeOf(result, o.__proto__);\n\n\t\treturn result;\n\t}\n\n\treturn o;\n};\n\nclass SimpleClass {\n\tassign(data?: object) {\n\t\tif (data) Object.assign(this, data);\n\t}\n\n\ttoJSON() {\n\t\tconst cls = this.constructor as any;\n\n\t\tconst serializedKeys = cls.serializedKeys || (cls.blackKeys && Object.keys(this).filter((key) => !cls.blackKeys.includes(key)));\n\t\tconst fields = serializedKeys ? pick(this, serializedKeys) : this;\n\n\t\treturn {\n\t\t\t__prototype: cls.className,\n\t\t\t...fields,\n\t\t};\n\t}\n\n\tdeepCopy(): this {\n\t\treturn deepCopy(this);\n\t}\n}\n\nexport { recoverJSON, SimpleClass };\n","import { SimpleClass } from '../starry/aux_/typedJSON';\n\nenum LayoutType {\n\tOrdinary = 'ordinary',\n\tFull = 'full',\n\tConservative = 'conservative',\n\tOnce = 'once',\n}\n\ninterface MeasureLayout {\n\tserialize(type: LayoutType): number[];\n\n\tseq: MeasureSeq;\n\tcode: string;\n}\n\nexport type MeasureSeq = MeasureLayout[];\n\nconst spreadMeasureSeq = (seq: MeasureSeq, type: LayoutType = LayoutType.Ordinary): number[] => [].concat(...seq.map((layout) => layout.serialize(type)));\n\nconst seqToCode = (seq: MeasureSeq, { withBrackets = false }: { withBrackets?: boolean } = {}): string => {\n\t//const code = seq.map(layout => layout.code).join(\", \");\n\tlet code = '';\n\tlet inRange = false;\n\n\tfor (let i = 0; i < seq.length; ++i) {\n\t\tconst middle = seq[i - 1] instanceof SingleMLayout && seq[i] instanceof SingleMLayout && seq[i + 1] instanceof SingleMLayout;\n\t\tif (middle) {\n\t\t\tif (!inRange) {\n\t\t\t\tcode += '..';\n\t\t\t\tinRange = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (i > 0 && !inRange) code += ', ';\n\n\t\t\tinRange = false;\n\n\t\t\tcode += seq[i].code;\n\t\t}\n\t}\n\n\treturn withBrackets ? `[${code}]` : code;\n};\n\nclass SingleMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'SingleMLayout';\n\n\tmeasure: number;\n\n\tstatic from(measure: number) {\n\t\tconst layout = new SingleMLayout();\n\t\tlayout.measure = measure;\n\n\t\treturn layout;\n\t}\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(): number[] {\n\t\treturn [this.measure];\n\t}\n\n\tget seq(): MeasureSeq {\n\t\treturn [this];\n\t}\n\n\tget code(): string {\n\t\treturn this.measure.toString();\n\t}\n}\n\nclass BlockMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'BlockMLayout';\n\n\tseq: MeasureSeq;\n\n\tstatic trimSeq(seq: MeasureSeq): MeasureSeq {\n\t\tconst seq2 = [];\n\t\tfor (const layout of seq) {\n\t\t\tif (layout instanceof BlockMLayout) {\n\t\t\t\tfor (const sub of layout.seq) seq2.push(sub);\n\t\t\t} else seq2.push(layout);\n\t\t}\n\n\t\t// reduce duplicated or backwards single measures\n\t\tconst seq3 = [];\n\t\tlet measure = null;\n\t\tfor (const layout of seq2) {\n\t\t\tif (layout instanceof SingleMLayout) {\n\t\t\t\tif (layout.measure > measure) {\n\t\t\t\t\tseq3.push(layout);\n\t\t\t\t\tmeasure = layout.measure;\n\t\t\t\t}\n\t\t\t} else seq3.push(layout);\n\t\t}\n\n\t\treturn seq3;\n\t}\n\n\tstatic fromSeq(seq: MeasureSeq): BlockMLayout {\n\t\tconst layout = new BlockMLayout();\n\t\tlayout.seq = BlockMLayout.trimSeq(seq);\n\n\t\treturn layout;\n\t}\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\treturn spreadMeasureSeq(this.seq, type);\n\t}\n\n\tget code(): string {\n\t\treturn seqToCode(this.seq, { withBrackets: true });\n\t}\n}\n\nclass VoltaMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'VoltaMLayout';\n\n\ttimes: number;\n\tbody: MeasureSeq;\n\talternates: MeasureSeq[];\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\tconst bodySeq = spreadMeasureSeq(this.body);\n\n\t\tif (this.alternates) {\n\t\t\tconst alternateSeqs = this.alternates.map((seq) => spreadMeasureSeq(seq));\n\t\t\tconst lastAlternateSeq = alternateSeqs[alternateSeqs.length - 1];\n\n\t\t\tswitch (type) {\n\t\t\t\tcase LayoutType.Ordinary:\n\t\t\t\t\treturn bodySeq.concat(...alternateSeqs);\n\n\t\t\t\tcase LayoutType.Conservative:\n\t\t\t\tcase LayoutType.Full: {\n\t\t\t\t\tconst priorSeq = [].concat(\n\t\t\t\t\t\t...Array(this.times - 1)\n\t\t\t\t\t\t\t.fill(null)\n\t\t\t\t\t\t\t.map((_, i) => [...bodySeq, ...alternateSeqs[i % (this.times - 1)]])\n\t\t\t\t\t);\n\n\t\t\t\t\treturn [...priorSeq, ...bodySeq, ...lastAlternateSeq];\n\t\t\t\t}\n\n\t\t\t\tcase LayoutType.Once:\n\t\t\t\t\treturn [...bodySeq, ...lastAlternateSeq];\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (type) {\n\t\t\t\tcase LayoutType.Ordinary:\n\t\t\t\tcase LayoutType.Conservative:\n\t\t\t\tcase LayoutType.Once:\n\t\t\t\t\treturn bodySeq;\n\n\t\t\t\tcase LayoutType.Full:\n\t\t\t\t\treturn [].concat(\n\t\t\t\t\t\t...Array(this.times)\n\t\t\t\t\t\t\t.fill(null)\n\t\t\t\t\t\t\t.map(() => bodySeq)\n\t\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconsole.warn('the current case not handled:', type, this);\n\t}\n\n\tget seq(): MeasureSeq {\n\t\tconst alternates = this.alternates ? this.alternates[this.alternates.length - 1] : [];\n\n\t\treturn [...this.body, ...alternates];\n\t}\n\n\tget code(): string {\n\t\tconst body = seqToCode(this.body, { withBrackets: true });\n\n\t\tlet code = `${this.times}*${body}`;\n\t\tif (this.alternates) code += '{' + this.alternates.map((seq) => seqToCode(seq, { withBrackets: seq.length > 1 })).join(', ') + '}';\n\n\t\treturn code;\n\t}\n}\n\nclass ABAMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'ABAMLayout';\n\n\tmain: MeasureLayout;\n\trest: MeasureSeq;\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\tconst seqA = this.main.serialize(type);\n\t\tconst seqA_ = spreadMeasureSeq(this.main.seq, LayoutType.Once);\n\t\tconst seqB = spreadMeasureSeq(this.rest, type);\n\n\t\tswitch (type) {\n\t\t\tcase LayoutType.Ordinary: // A B\n\t\t\t\treturn [...seqA, ...seqB];\n\n\t\t\tcase LayoutType.Once: // B A'\n\t\t\t\treturn [...seqB, ...seqA_];\n\n\t\t\tcase LayoutType.Conservative: // A B A'\n\t\t\tcase LayoutType.Full: // A B A'\n\t\t\t\treturn [...seqA, ...seqB, ...seqA_];\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn('the current case not handled:', type, this);\n\t\t}\n\t}\n\n\tget seq(): MeasureSeq {\n\t\treturn [this.main, ...this.rest];\n\t}\n\n\tget code(): string {\n\t\treturn '<' + this.main.code + ', ' + seqToCode(this.rest) + '>';\n\t}\n}\n\nexport { LayoutType, MeasureLayout, SingleMLayout, BlockMLayout, VoltaMLayout, ABAMLayout };\n","// @ts-nocheck\n/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function () {\n\tvar o = function (k, v, o, l) {\n\t\t\tfor (o = o || {}, l = k.length; l--; o[k[l]] = v);\n\t\t\treturn o;\n\t\t},\n\t\t$V0 = [1, 13],\n\t\t$V1 = [1, 16],\n\t\t$V2 = [1, 15],\n\t\t$V3 = [1, 26],\n\t\t$V4 = [1, 29],\n\t\t$V5 = [1, 28],\n\t\t$V6 = [1, 30],\n\t\t$V7 = [5, 13, 22, 27, 29],\n\t\t$V8 = [2, 15],\n\t\t$V9 = [1, 32],\n\t\t$Va = [5, 14, 21, 22, 27, 28, 29];\n\tvar parser = {\n\t\ttrace: function trace() {},\n\t\tyy: {},\n\t\tsymbols_: {\n\t\t\terror: 2,\n\t\t\tstart_symbol: 3,\n\t\t\tmeasure_layout: 4,\n\t\t\tEOF: 5,\n\t\t\tindex_wise_measure_layout: 6,\n\t\t\t'i:': 7,\n\t\t\t's:': 8,\n\t\t\tsegment_wise_measure_layout: 9,\n\t\t\tiw_sequence: 10,\n\t\t\tiw_item: 11,\n\t\t\trange: 12,\n\t\t\t',': 13,\n\t\t\tUNSIGNED: 14,\n\t\t\t'..': 15,\n\t\t\tsingle: 16,\n\t\t\tiw_block_item: 17,\n\t\t\tiw_volta: 18,\n\t\t\tiw_aba: 19,\n\t\t\tiw_block: 20,\n\t\t\t'[': 21,\n\t\t\t']': 22,\n\t\t\t'*': 23,\n\t\t\tiw_optional_alternates: 24,\n\t\t\tiw_alternates: 25,\n\t\t\t'{': 26,\n\t\t\t'}': 27,\n\t\t\t'<': 28,\n\t\t\t'>': 29,\n\t\t\tsw_sequence: 30,\n\t\t\tsw_item: 31,\n\t\t\tsegment: 32,\n\t\t\tsw_block_item: 33,\n\t\t\tsw_volta: 34,\n\t\t\tsw_aba: 35,\n\t\t\tsw_block: 36,\n\t\t\tsw_optional_alternates: 37,\n\t\t\tsw_alternates: 38,\n\t\t\t$accept: 0,\n\t\t\t$end: 1,\n\t\t},\n\t\tterminals_: {\n\t\t\t2: 'error',\n\t\t\t5: 'EOF',\n\t\t\t7: 'i:',\n\t\t\t8: 's:',\n\t\t\t13: ',',\n\t\t\t14: 'UNSIGNED',\n\t\t\t15: '..',\n\t\t\t21: '[',\n\t\t\t22: ']',\n\t\t\t23: '*',\n\t\t\t26: '{',\n\t\t\t27: '}',\n\t\t\t28: '<',\n\t\t\t29: '>',\n\t\t},\n\t\tproductions_: [\n\t\t\t0,\n\t\t\t[3, 2],\n\t\t\t[4, 1],\n\t\t\t[4, 2],\n\t\t\t[4, 2],\n\t\t\t[6, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 3],\n\t\t\t[10, 3],\n\t\t\t[12, 3],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[16, 1],\n\t\t\t[17, 1],\n\t\t\t[20, 3],\n\t\t\t[18, 4],\n\t\t\t[24, 0],\n\t\t\t[24, 1],\n\t\t\t[25, 3],\n\t\t\t[19, 5],\n\t\t\t[9, 1],\n\t\t\t[30, 1],\n\t\t\t[30, 2],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[32, 1],\n\t\t\t[33, 1],\n\t\t\t[36, 3],\n\t\t\t[34, 4],\n\t\t\t[37, 0],\n\t\t\t[37, 1],\n\t\t\t[38, 3],\n\t\t\t[35, 4],\n\t\t],\n\t\tperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n\t\t\t/* this == yyval */\n\n\t\t\tvar $0 = $$.length - 1;\n\t\t\tswitch (yystate) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tthis.$ = root(null, $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.$ = root('index-wise', $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tthis.$ = root('segment-wise', serialize($$[$0]));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\tcase 23:\n\t\t\t\t\tif ($$[$0].length === 1 && $$[$0][0].__prototype === 'BlockMLayout') this.$ = $$[$0][0];\n\t\t\t\t\telse this.$ = blockLayout($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 6:\n\t\t\t\tcase 24:\n\t\t\t\t\tthis.$ = [$$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 7:\n\t\t\t\tcase 11:\n\t\t\t\tcase 12:\n\t\t\t\tcase 13:\n\t\t\t\tcase 14:\n\t\t\t\tcase 20:\n\t\t\t\tcase 27:\n\t\t\t\tcase 28:\n\t\t\t\tcase 29:\n\t\t\t\tcase 35:\n\t\t\t\t\tthis.$ = $$[$0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\tthis.$ = [...$$[$0 - 2], $$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9:\n\t\t\t\t\tthis.$ = [...$$[$0 - 2], ...$$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 10:\n\t\t\t\t\tthis.$ = range($$[$0 - 2], $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 15:\n\t\t\t\t\tthis.$ = singleLayout($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 16:\n\t\t\t\tcase 31:\n\t\t\t\t\tthis.$ = blockLayout($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 17:\n\t\t\t\tcase 32:\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 18:\n\t\t\t\tcase 33:\n\t\t\t\t\tthis.$ = voltaBlock($$[$0 - 3], $$[$0 - 1], $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 19:\n\t\t\t\tcase 34:\n\t\t\t\t\tthis.$ = null;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 21:\n\t\t\t\tcase 36:\n\t\t\t\t\tthis.$ = alternates($$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 22:\n\t\t\t\t\tthis.$ = abaBlock($$[$0 - 3], $$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 25:\n\t\t\t\t\tthis.$ = [...$$[$0 - 1], $$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 26:\n\t\t\t\t\tthis.$ = blockLayout([$$[$0]]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 30:\n\t\t\t\t\tthis.$ = segment($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37:\n\t\t\t\t\tthis.$ = abaBlock($$[$0 - 2], $$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\ttable: [\n\t\t\t{ 3: 1, 4: 2, 6: 3, 7: [1, 4], 8: [1, 5], 10: 6, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 1: [3] },\n\t\t\t{ 5: [1, 17] },\n\t\t\t{ 5: [2, 2] },\n\t\t\t{ 6: 18, 10: 6, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 9: 19, 14: $V3, 21: $V4, 28: $V5, 30: 20, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 5: [2, 5], 13: $V6 },\n\t\t\to($V7, [2, 6]),\n\t\t\to($V7, [2, 7]),\n\t\t\to($V7, [2, 11]),\n\t\t\to($V7, [2, 12]),\n\t\t\to($V7, [2, 13]),\n\t\t\to($V7, [2, 14]),\n\t\t\to($V7, $V8, { 15: [1, 31], 23: $V9 }),\n\t\t\to($V7, [2, 16]),\n\t\t\t{ 11: 33, 14: [1, 34], 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 10: 35, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 1: [2, 1] },\n\t\t\t{ 5: [2, 3] },\n\t\t\t{ 5: [2, 4] },\n\t\t\t{ 5: [2, 23], 14: $V3, 21: $V4, 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($Va, [2, 24]),\n\t\t\to($Va, [2, 26]),\n\t\t\to($Va, [2, 27]),\n\t\t\to($Va, [2, 28]),\n\t\t\to($Va, [2, 29]),\n\t\t\to($Va, [2, 30], { 23: [1, 37] }),\n\t\t\to($Va, [2, 31]),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 31: 38, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 39, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 11: 40, 12: 41, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 14: [1, 42] },\n\t\t\t{ 20: 43, 21: $V1 },\n\t\t\t{ 13: [1, 44] },\n\t\t\t{ 13: $V8, 23: $V9 },\n\t\t\t{ 13: $V6, 22: [1, 45] },\n\t\t\to($Va, [2, 25]),\n\t\t\t{ 21: $V4, 36: 46 },\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 47, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 14: $V3, 21: $V4, 22: [1, 48], 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($V7, [2, 8]),\n\t\t\to($V7, [2, 9]),\n\t\t\to($V7, [2, 10]),\n\t\t\to($V7, [2, 19], { 24: 49, 25: 50, 26: [1, 51] }),\n\t\t\t{ 10: 52, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\to([5, 13, 22, 26, 27, 29], [2, 17]),\n\t\t\to($Va, [2, 34], { 37: 53, 38: 54, 26: [1, 55] }),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 29: [1, 56], 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to([5, 14, 21, 22, 26, 27, 28, 29], [2, 32]),\n\t\t\to($V7, [2, 18]),\n\t\t\to($V7, [2, 20]),\n\t\t\t{ 10: 57, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 13: $V6, 29: [1, 58] },\n\t\t\to($Va, [2, 33]),\n\t\t\to($Va, [2, 35]),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 59, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($Va, [2, 37]),\n\t\t\t{ 13: $V6, 27: [1, 60] },\n\t\t\to($V7, [2, 22]),\n\t\t\t{ 14: $V3, 21: $V4, 27: [1, 61], 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($V7, [2, 21]),\n\t\t\to($Va, [2, 36]),\n\t\t],\n\t\tdefaultActions: { 3: [2, 2], 17: [2, 1], 18: [2, 3], 19: [2, 4] },\n\t\tparseError: function parseError(str, hash) {\n\t\t\tif (hash.recoverable) {\n\t\t\t\tthis.trace(str);\n\t\t\t} else {\n\t\t\t\tvar error = new Error(str);\n\t\t\t\terror.hash = hash;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tparse: function parse(input) {\n\t\t\tvar self = this,\n\t\t\t\tstack = [0],\n\t\t\t\ttstack = [],\n\t\t\t\tvstack = [null],\n\t\t\t\tlstack = [],\n\t\t\t\ttable = this.table,\n\t\t\t\tyytext = '',\n\t\t\t\tyylineno = 0,\n\t\t\t\tyyleng = 0,\n\t\t\t\trecovering = 0,\n\t\t\t\tTERROR = 2,\n\t\t\t\tEOF = 1;\n\t\t\tvar args = lstack.slice.call(arguments, 1);\n\t\t\tvar lexer = Object.create(this.lexer);\n\t\t\tvar sharedState = { yy: {} };\n\t\t\tfor (var k in this.yy) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n\t\t\t\t\tsharedState.yy[k] = this.yy[k];\n\t\t\t\t}\n\t\t\t}\n\t\t\tlexer.setInput(input, sharedState.yy);\n\t\t\tsharedState.yy.lexer = lexer;\n\t\t\tsharedState.yy.parser = this;\n\t\t\tif (typeof lexer.yylloc == 'undefined') {\n\t\t\t\tlexer.yylloc = {};\n\t\t\t}\n\t\t\tvar yyloc = lexer.yylloc;\n\t\t\tlstack.push(yyloc);\n\t\t\tvar ranges = lexer.options && lexer.options.ranges;\n\t\t\tif (typeof sharedState.yy.parseError === 'function') {\n\t\t\t\tthis.parseError = sharedState.yy.parseError;\n\t\t\t} else {\n\t\t\t\tthis.parseError = Object.getPrototypeOf(this).parseError;\n\t\t\t}\n\t\t\tfunction popStack(n) {\n\t\t\t\tstack.length = stack.length - 2 * n;\n\t\t\t\tvstack.length = vstack.length - n;\n\t\t\t\tlstack.length = lstack.length - n;\n\t\t\t}\n\t\t\t_token_stack: var lex = function () {\n\t\t\t\tvar token;\n\t\t\t\ttoken = lexer.lex() || EOF;\n\t\t\t\tif (typeof token !== 'number') {\n\t\t\t\t\ttoken = self.symbols_[token] || token;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t};\n\t\t\tvar symbol,\n\t\t\t\tpreErrorSymbol,\n\t\t\t\tstate,\n\t\t\t\taction,\n\t\t\t\ta,\n\t\t\t\tr,\n\t\t\t\tyyval = {},\n\t\t\t\tp,\n\t\t\t\tlen,\n\t\t\t\tnewState,\n\t\t\t\texpected;\n\t\t\twhile (true) {\n\t\t\t\tstate = stack[stack.length - 1];\n\t\t\t\tif (this.defaultActions[state]) {\n\t\t\t\t\taction = this.defaultActions[state];\n\t\t\t\t} else {\n\t\t\t\t\tif (symbol === null || typeof symbol == 'undefined') {\n\t\t\t\t\t\tsymbol = lex();\n\t\t\t\t\t}\n\t\t\t\t\taction = table[state] && table[state][symbol];\n\t\t\t\t}\n\t\t\t\tif (typeof action === 'undefined' || !action.length || !action[0]) {\n\t\t\t\t\tvar errStr = '';\n\t\t\t\t\texpected = [];\n\t\t\t\t\tfor (p in table[state]) {\n\t\t\t\t\t\tif (this.terminals_[p] && p > TERROR) {\n\t\t\t\t\t\t\texpected.push(\"'\" + this.terminals_[p] + \"'\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (lexer.showPosition) {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t':\\n' +\n\t\t\t\t\t\t\tlexer.showPosition() +\n\t\t\t\t\t\t\t'\\nExpecting ' +\n\t\t\t\t\t\t\texpected.join(', ') +\n\t\t\t\t\t\t\t\", got '\" +\n\t\t\t\t\t\t\t(this.terminals_[symbol] || symbol) +\n\t\t\t\t\t\t\t\"'\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t': Unexpected ' +\n\t\t\t\t\t\t\t(symbol == EOF ? 'end of input' : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.parseError(errStr, {\n\t\t\t\t\t\ttext: lexer.match,\n\t\t\t\t\t\ttoken: this.terminals_[symbol] || symbol,\n\t\t\t\t\t\tline: lexer.yylineno,\n\t\t\t\t\t\tloc: yyloc,\n\t\t\t\t\t\texpected: expected,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (action[0] instanceof Array && action.length > 1) {\n\t\t\t\t\tthrow new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n\t\t\t\t}\n\t\t\t\tswitch (action[0]) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tstack.push(symbol);\n\t\t\t\t\t\tvstack.push(lexer.yytext);\n\t\t\t\t\t\tlstack.push(lexer.yylloc);\n\t\t\t\t\t\tstack.push(action[1]);\n\t\t\t\t\t\tsymbol = null;\n\t\t\t\t\t\tif (!preErrorSymbol) {\n\t\t\t\t\t\t\tyyleng = lexer.yyleng;\n\t\t\t\t\t\t\tyytext = lexer.yytext;\n\t\t\t\t\t\t\tyylineno = lexer.yylineno;\n\t\t\t\t\t\t\tyyloc = lexer.yylloc;\n\t\t\t\t\t\t\tif (recovering > 0) {\n\t\t\t\t\t\t\t\trecovering--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsymbol = preErrorSymbol;\n\t\t\t\t\t\t\tpreErrorSymbol = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tlen = this.productions_[action[1]][1];\n\t\t\t\t\t\tyyval.$ = vstack[vstack.length - len];\n\t\t\t\t\t\tyyval._$ = {\n\t\t\t\t\t\t\tfirst_line: lstack[lstack.length - (len || 1)].first_line,\n\t\t\t\t\t\t\tlast_line: lstack[lstack.length - 1].last_line,\n\t\t\t\t\t\t\tfirst_column: lstack[lstack.length - (len || 1)].first_column,\n\t\t\t\t\t\t\tlast_column: lstack[lstack.length - 1].last_column,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (ranges) {\n\t\t\t\t\t\t\tyyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tr = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n\t\t\t\t\t\tif (typeof r !== 'undefined') {\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (len) {\n\t\t\t\t\t\t\tstack = stack.slice(0, -1 * len * 2);\n\t\t\t\t\t\t\tvstack = vstack.slice(0, -1 * len);\n\t\t\t\t\t\t\tlstack = lstack.slice(0, -1 * len);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstack.push(this.productions_[action[1]][0]);\n\t\t\t\t\t\tvstack.push(yyval.$);\n\t\t\t\t\t\tlstack.push(yyval._$);\n\t\t\t\t\t\tnewState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n\t\t\t\t\t\tstack.push(newState);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tconst root = (type, data) => ({ __prototype: 'MesaureLayout', type, data });\n\n\tconst singleLayout = (n) => ({ __prototype: 'SingleMLayout', measure: Number(n) });\n\tconst blockLayout = (seq) => ({ __prototype: 'BlockMLayout', seq });\n\tconst voltaBlock = (times, body, alternates) => ({ __prototype: 'VoltaMLayout', times: Number(times), body, alternates });\n\tconst abaBlock = (main, rest) => ({ __prototype: 'ABAMLayout', main, rest });\n\n\tconst segment = (n) => ({ segment: true, length: Number(n) });\n\n\tconst alternates = (items) =>\n\t\titems.map((item) => {\n\t\t\tif (item.__prototype === 'BlockMLayout') return item.seq;\n\n\t\t\treturn [item];\n\t\t});\n\n\tconst range = (start, end) => {\n\t\tstart = Number(start);\n\t\tend = Number(end);\n\n\t\tif (!(end >= start)) throw new Error(`invalid measure range: ${start}..${end}`);\n\n\t\treturn Array(end + 1 - start)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => singleLayout(start + i));\n\t};\n\n\tconst serializeSeq = (item, options) => {\n\t\tif (item.segment) {\n\t\t\tconst index = options.index;\n\t\t\toptions.index += item.length;\n\n\t\t\treturn Array(item.length)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => singleLayout(index + i));\n\t\t}\n\n\t\treturn [serialize(item, options)];\n\t};\n\n\tconst serialize = (item, options = { index: 1 }) => {\n\t\tconst speard = (seq) => [].concat(...seq.map((it) => serializeSeq(it, options)));\n\n\t\tswitch (item.__prototype) {\n\t\t\tcase 'BlockMLayout':\n\t\t\t\titem.seq = speard(item.seq);\n\n\t\t\t\tbreak;\n\t\t\tcase 'VoltaMLayout':\n\t\t\t\titem.body = speard(item.body);\n\t\t\t\titem.alternates = item.alternates && item.alternates.map(speard);\n\n\t\t\t\tbreak;\n\t\t\tcase 'ABAMLayout':\n\t\t\t\titem.main = serialize(item.main, options);\n\t\t\t\titem.rest = speard(item.rest);\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn item;\n\t};\n\t/* generated by jison-lex 0.3.4 */\n\tvar lexer = (function () {\n\t\tvar lexer = {\n\t\t\tEOF: 1,\n\n\t\t\tparseError: function parseError(str, hash) {\n\t\t\t\tif (this.yy.parser) {\n\t\t\t\t\tthis.yy.parser.parseError(str, hash);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(str);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// resets the lexer, sets new input\n\t\t\tsetInput: function (input, yy) {\n\t\t\t\tthis.yy = yy || this.yy || {};\n\t\t\t\tthis._input = input;\n\t\t\t\tthis._more = this._backtrack = this.done = false;\n\t\t\t\tthis.yylineno = this.yyleng = 0;\n\t\t\t\tthis.yytext = this.matched = this.match = '';\n\t\t\t\tthis.conditionStack = ['INITIAL'];\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: 1,\n\t\t\t\t\tfirst_column: 0,\n\t\t\t\t\tlast_line: 1,\n\t\t\t\t\tlast_column: 0,\n\t\t\t\t};\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [0, 0];\n\t\t\t\t}\n\t\t\t\tthis.offset = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// consumes and returns one char from the input\n\t\t\tinput: function () {\n\t\t\t\tvar ch = this._input[0];\n\t\t\t\tthis.yytext += ch;\n\t\t\t\tthis.yyleng++;\n\t\t\t\tthis.offset++;\n\t\t\t\tthis.match += ch;\n\t\t\t\tthis.matched += ch;\n\t\t\t\tvar lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno++;\n\t\t\t\t\tthis.yylloc.last_line++;\n\t\t\t\t} else {\n\t\t\t\t\tthis.yylloc.last_column++;\n\t\t\t\t}\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range[1]++;\n\t\t\t\t}\n\n\t\t\t\tthis._input = this._input.slice(1);\n\t\t\t\treturn ch;\n\t\t\t},\n\n\t\t\t// unshifts one char (or a string) into the input\n\t\t\tunput: function (ch) {\n\t\t\t\tvar len = ch.length;\n\t\t\t\tvar lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n\t\t\t\tthis._input = ch + this._input;\n\t\t\t\tthis.yytext = this.yytext.substr(0, this.yytext.length - len);\n\t\t\t\t//this.yyleng -= len;\n\t\t\t\tthis.offset -= len;\n\t\t\t\tvar oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n\t\t\t\tthis.match = this.match.substr(0, this.match.length - 1);\n\t\t\t\tthis.matched = this.matched.substr(0, this.matched.length - 1);\n\n\t\t\t\tif (lines.length - 1) {\n\t\t\t\t\tthis.yylineno -= lines.length - 1;\n\t\t\t\t}\n\t\t\t\tvar r = this.yylloc.range;\n\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length\n\t\t\t\t\t\t: this.yylloc.first_column - len,\n\t\t\t\t};\n\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [r[0], r[0] + this.yyleng - len];\n\t\t\t\t}\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, caches matched text and appends it on next action\n\t\t\tmore: function () {\n\t\t\t\tthis._more = true;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n\t\t\treject: function () {\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\tthis._backtrack = true;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError(\n\t\t\t\t\t\t'Lexical error on line ' +\n\t\t\t\t\t\t\t(this.yylineno + 1) +\n\t\t\t\t\t\t\t'. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' +\n\t\t\t\t\t\t\tthis.showPosition(),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// retain first n characters of the match\n\t\t\tless: function (n) {\n\t\t\t\tthis.unput(this.match.slice(n));\n\t\t\t},\n\n\t\t\t// displays already matched input, i.e. for error messages\n\t\t\tpastInput: function () {\n\t\t\t\tvar past = this.matched.substr(0, this.matched.length - this.match.length);\n\t\t\t\treturn (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays upcoming input, i.e. for error messages\n\t\t\tupcomingInput: function () {\n\t\t\t\tvar next = this.match;\n\t\t\t\tif (next.length < 20) {\n\t\t\t\t\tnext += this._input.substr(0, 20 - next.length);\n\t\t\t\t}\n\t\t\t\treturn (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays the character position where the lexing error occurred, i.e. for error messages\n\t\t\tshowPosition: function () {\n\t\t\t\tvar pre = this.pastInput();\n\t\t\t\tvar c = new Array(pre.length + 1).join('-');\n\t\t\t\treturn pre + this.upcomingInput() + '\\n' + c + '^';\n\t\t\t},\n\n\t\t\t// test the lexed token: return FALSE when not a match, otherwise return token\n\t\t\ttest_match: function (match, indexed_rule) {\n\t\t\t\tvar token, lines, backup;\n\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t// save context\n\t\t\t\t\tbackup = {\n\t\t\t\t\t\tyylineno: this.yylineno,\n\t\t\t\t\t\tyylloc: {\n\t\t\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\t\t\tlast_line: this.last_line,\n\t\t\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\t\t\tlast_column: this.yylloc.last_column,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tyytext: this.yytext,\n\t\t\t\t\t\tmatch: this.match,\n\t\t\t\t\t\tmatches: this.matches,\n\t\t\t\t\t\tmatched: this.matched,\n\t\t\t\t\t\tyyleng: this.yyleng,\n\t\t\t\t\t\toffset: this.offset,\n\t\t\t\t\t\t_more: this._more,\n\t\t\t\t\t\t_input: this._input,\n\t\t\t\t\t\tyy: this.yy,\n\t\t\t\t\t\tconditionStack: this.conditionStack.slice(0),\n\t\t\t\t\t\tdone: this.done,\n\t\t\t\t\t};\n\t\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\t\tbackup.yylloc.range = this.yylloc.range.slice(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno += lines.length;\n\t\t\t\t}\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.last_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.last_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length\n\t\t\t\t\t\t: this.yylloc.last_column + match[0].length,\n\t\t\t\t};\n\t\t\t\tthis.yytext += match[0];\n\t\t\t\tthis.match += match[0];\n\t\t\t\tthis.matches = match;\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [this.offset, (this.offset += this.yyleng)];\n\t\t\t\t}\n\t\t\t\tthis._more = false;\n\t\t\t\tthis._backtrack = false;\n\t\t\t\tthis._input = this._input.slice(match[0].length);\n\t\t\t\tthis.matched += match[0];\n\t\t\t\ttoken = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\t\t\t\tif (this.done && this._input) {\n\t\t\t\t\tthis.done = false;\n\t\t\t\t}\n\t\t\t\tif (token) {\n\t\t\t\t\treturn token;\n\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t// recover context\n\t\t\t\t\tfor (var k in backup) {\n\t\t\t\t\t\tthis[k] = backup[k];\n\t\t\t\t\t}\n\t\t\t\t\treturn false; // rule action called reject() implying the next rule should be tested instead.\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\t// return next match in input\n\t\t\tnext: function () {\n\t\t\t\tif (this.done) {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t}\n\t\t\t\tif (!this._input) {\n\t\t\t\t\tthis.done = true;\n\t\t\t\t}\n\n\t\t\t\tvar token, match, tempMatch, index;\n\t\t\t\tif (!this._more) {\n\t\t\t\t\tthis.yytext = '';\n\t\t\t\t\tthis.match = '';\n\t\t\t\t}\n\t\t\t\tvar rules = this._currentRules();\n\t\t\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\t\t\ttempMatch = this._input.match(this.rules[rules[i]]);\n\t\t\t\t\tif (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n\t\t\t\t\t\tmatch = tempMatch;\n\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t\t\ttoken = this.test_match(tempMatch, rules[i]);\n\t\t\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\t\t\treturn token;\n\t\t\t\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\t\t\tcontinue; // rule action called reject() implying a rule MISmatch.\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!this.options.flex) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (match) {\n\t\t\t\t\ttoken = this.test_match(match, rules[index]);\n\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\treturn token;\n\t\t\t\t\t}\n\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this._input === '') {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return next match that has a token\n\t\t\tlex: function lex() {\n\t\t\t\tvar r = this.next();\n\t\t\t\tif (r) {\n\t\t\t\t\treturn r;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.lex();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n\t\t\tbegin: function begin(condition) {\n\t\t\t\tthis.conditionStack.push(condition);\n\t\t\t},\n\n\t\t\t// pop the previously active lexer condition state off the condition stack\n\t\t\tpopState: function popState() {\n\t\t\t\tvar n = this.conditionStack.length - 1;\n\t\t\t\tif (n > 0) {\n\t\t\t\t\treturn this.conditionStack.pop();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditionStack[0];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// produce the lexer rule set which is active for the currently active lexer condition state\n\t\t\t_currentRules: function _currentRules() {\n\t\t\t\tif (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n\t\t\t\t\treturn this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditions['INITIAL'].rules;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n\t\t\ttopState: function topState(n) {\n\t\t\t\tn = this.conditionStack.length - 1 - Math.abs(n || 0);\n\t\t\t\tif (n >= 0) {\n\t\t\t\t\treturn this.conditionStack[n];\n\t\t\t\t} else {\n\t\t\t\t\treturn 'INITIAL';\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// alias for begin(condition)\n\t\t\tpushState: function pushState(condition) {\n\t\t\t\tthis.begin(condition);\n\t\t\t},\n\n\t\t\t// return the number of states currently on the stack\n\t\t\tstateStackSize: function stateStackSize() {\n\t\t\t\treturn this.conditionStack.length;\n\t\t\t},\n\t\t\toptions: {},\n\t\t\tperformAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n\t\t\t\tvar YYSTATE = YY_START;\n\t\t\t\tswitch ($avoiding_name_collisions) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn 14;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\treturn 5;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\trules: [/^(?:\\s+)/, /^(?:([*,\\[\\]<>{}]))/, /^(?:(([1-9])([0-9])*))/, /^(?:(([a-z])+):)/, /^(?:\\.\\.)/, /^(?:$)/],\n\t\t\tconditions: { INITIAL: { rules: [0, 1, 2, 3, 4, 5], inclusive: true } },\n\t\t};\n\t\treturn lexer;\n\t})();\n\tparser.lexer = lexer;\n\tfunction Parser() {\n\t\tthis.yy = {};\n\t}\n\tParser.prototype = parser;\n\tparser.Parser = Parser;\n\treturn new Parser();\n})();\n\nexport { parser };\nexport var Parser = parser.Parser;\nexport var parse = function () {\n\treturn parser.parse.apply(parser, arguments);\n};\nexport default { parser: parser, Parser: parser.Parser, parse: parse };\n","export interface RawItem {\n\tid: string;\n\tleftBounds: string[];\n\trightBounds: string[];\n\tconjunction: string;\n}\n\nexport enum StaffGroupType {\n\tDefault,\n\tBrace, // {}\n\tBracket, // <>\n\tSquare, // []\n}\n\nexport enum StaffConjunctionType {\n\tBlank,\n\tDashed,\n\tSolid,\n}\n\ntype StaffID = string;\n\nexport interface StaffGroup {\n\ttype: StaffGroupType;\n\tsubs?: StaffGroup[];\n\tstaff?: StaffID;\n\tlevel?: number;\n\tgrand?: boolean;\n}\n\ninterface StaffGroupTrait {\n\tgroup: StaffGroup;\n\trange: [number, number];\n\tkey: string;\n}\n\nconst singleGroup = (id: string) => ({ type: StaffGroupType.Default, staff: id });\n\nconst BOUNDS_TO_GROUPTYPE: { [bound: string]: StaffGroupType } = {\n\t'{': StaffGroupType.Brace,\n\t'}': StaffGroupType.Brace,\n\t'<': StaffGroupType.Bracket,\n\t'>': StaffGroupType.Bracket,\n\t'[': StaffGroupType.Square,\n\t']': StaffGroupType.Square,\n};\n\nconst OPEN_BOUNDS = '{<[';\nconst CLOSE_BOUNDS = '}>]';\n\nconst CONJUNCTIONS_MAP: { [conj: string]: StaffConjunctionType } = {\n\t',': StaffConjunctionType.Blank,\n\t'-': StaffConjunctionType.Solid,\n\t'.': StaffConjunctionType.Dashed,\n};\n\nconst bracketCode = (type: StaffGroupType, partial: boolean = false): ((inner: string) => string) => {\n\tif (type === StaffGroupType.Default) return (inner) => inner;\n\n\tif (partial) {\n\t\tswitch (type) {\n\t\t\tcase StaffGroupType.Brace:\n\t\t\t\treturn (inner) => `{${inner}`;\n\t\t\tcase StaffGroupType.Bracket:\n\t\t\t\treturn (inner) => `<${inner}`;\n\t\t\tcase StaffGroupType.Square:\n\t\t\t\treturn (inner) => `[${inner}`;\n\t\t\tdefault:\n\t\t\t\treturn (inner) => inner;\n\t\t}\n\t}\n\n\tswitch (type) {\n\t\tcase StaffGroupType.Brace:\n\t\t\treturn (inner) => `{${inner}}`;\n\t\tcase StaffGroupType.Bracket:\n\t\t\treturn (inner) => `<${inner}>`;\n\t\tcase StaffGroupType.Square:\n\t\t\treturn (inner) => `[${inner}]`;\n\t\tdefault:\n\t\t\treturn (inner) => inner;\n\t}\n};\n\nconst randomB64 = (): string => {\n\tconst code = btoa(Math.random().toString().substr(2)).replace(/=/g, '');\n\n\treturn code.split('').reverse().slice(0, 6).join('');\n};\n\nconst makeUniqueName = (set: Set, index: number, prefix?: string): string => {\n\tlet name = prefix;\n\tif (!name) name = index.toString();\n\telse if (set.has(name)) name += '_' + index.toString();\n\n\twhile (set.has(name)) name += '_' + randomB64();\n\n\treturn name;\n};\n\nconst makeGroupsFromRaw = (parent: StaffGroup, seq: string[]): string[] => {\n\tlet remains = seq;\n\twhile (remains.length) {\n\t\tconst word = remains.shift();\n\t\tconst bound = BOUNDS_TO_GROUPTYPE[word];\n\t\tif (bound) {\n\t\t\tif (CLOSE_BOUNDS.includes(word) && bound === parent.type) break;\n\n\t\t\tif (OPEN_BOUNDS.includes(word)) {\n\t\t\t\tconst group = { type: bound, level: Number.isFinite(parent.level) ? parent.level + 1 : 0 };\n\t\t\t\tremains = makeGroupsFromRaw(group, remains);\n\n\t\t\t\tparent.subs = parent.subs || [];\n\t\t\t\tparent.subs.push(group);\n\t\t\t}\n\t\t} else {\n\t\t\tparent.subs = parent.subs || [];\n\t\t\tparent.subs.push(singleGroup(word));\n\t\t}\n\t}\n\n\twhile (parent.type === StaffGroupType.Default && parent.subs && parent.subs.length === 1) {\n\t\tconst sub = parent.subs[0];\n\t\tparent.type = sub.type;\n\t\tparent.subs = sub.subs;\n\t\tparent.staff = sub.staff;\n\t\tparent.level = sub.level;\n\t}\n\n\twhile (parent.subs && parent.subs.length === 1 && parent.subs[0].type === StaffGroupType.Default) {\n\t\tconst sub = parent.subs[0];\n\t\tparent.subs = sub.subs;\n\t\tparent.staff = sub.staff;\n\t}\n\n\tparent.grand = parent.type === StaffGroupType.Brace && parent.subs && parent.subs.every((sub) => sub.staff);\n\n\treturn remains;\n};\n\nconst groupHead = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return groupHead(group.subs[0]);\n};\n\nconst groupTail = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return groupTail(group.subs[group.subs.length - 1]);\n};\n\nexport const groupKey = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return `${groupHead(group)}-${groupTail(group)}`;\n};\n\nconst groupDict = (group: StaffGroup, dict: { [key: string]: StaffGroup }): void => {\n\tdict[groupKey(group)] = group;\n\n\tif (group.subs) group.subs.forEach((sub) => groupDict(sub, dict));\n};\n\nexport interface MaskedStaffLayout {\n\tstaffIds: string[];\n\tconjunctions: StaffConjunctionType[];\n\tgroups: StaffGroupTrait[];\n}\n\nclass StaffLayout {\n\tstaffIds: string[];\n\tconjunctions: StaffConjunctionType[];\n\tgroup: StaffGroup;\n\tgroups: StaffGroupTrait[];\n\n\tmaskCache: Map;\n\n\tconstructor(raw: RawItem[]) {\n\t\t// make unique ids\n\t\tconst ids = new Set();\n\t\traw.forEach((item, i) => {\n\t\t\titem.id = makeUniqueName(ids, i + 1, item.id);\n\t\t\tids.add(item.id);\n\t\t});\n\t\tthis.staffIds = raw.map((item) => item.id);\n\t\tthis.conjunctions = raw.slice(0, raw.length - 1).map((item) => (item.conjunction ? CONJUNCTIONS_MAP[item.conjunction] : StaffConjunctionType.Blank));\n\n\t\t// make groups\n\t\tconst seq = [].concat(...raw.map((item) => [...item.leftBounds, item.id, ...item.rightBounds]));\n\t\tthis.group = { type: StaffGroupType.Default };\n\t\tmakeGroupsFromRaw(this.group, seq);\n\n\t\tconst dict = {};\n\t\tgroupDict(this.group, dict);\n\t\tthis.groups = Object.entries(dict).map(([key, group]) => {\n\t\t\tlet ids = key.split('-');\n\t\t\tif (ids.length === 1) ids = [ids[0], ids[0]];\n\t\t\tconst range = ids.map((id) => this.staffIds.indexOf(id));\n\n\t\t\treturn {\n\t\t\t\tgroup,\n\t\t\t\trange,\n\t\t\t\tkey,\n\t\t\t} as StaffGroupTrait;\n\t\t});\n\n\t\tthis.maskCache = new Map();\n\t}\n\n\tget stavesCount(): number {\n\t\tif (!this.staffIds) return null;\n\n\t\treturn this.staffIds.length;\n\t}\n\n\tget partGroups(): StaffGroupTrait[] {\n\t\tconst grands = this.groups.filter((g) => g.group.grand);\n\t\tconst parts = this.groups.filter((g) => {\n\t\t\tif (g.group.grand) return true;\n\n\t\t\tif (g.range[0] === g.range[1]) {\n\t\t\t\tconst index = g.range[0];\n\t\t\t\treturn !grands.some((g) => g.range[0] <= index && g.range[1] >= index);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t\treturn parts;\n\t}\n\n\tget standaloneGroups(): string[][] {\n\t\tconst groups: string[][] = [];\n\t\tconst collect = (group: StaffGroup): void => {\n\t\t\tif (group.grand) groups.push(group.subs.map((sub) => sub.staff));\n\t\t\telse if (group.staff) groups.push([group.staff]);\n\t\t\telse if (group.subs) group.subs.forEach((sub) => collect(sub));\n\t\t};\n\t\tcollect(this.group);\n\n\t\treturn groups;\n\t}\n\n\tconjunctionBetween(upStaff: number, downStaff: number): StaffConjunctionType {\n\t\tif (downStaff <= upStaff) return null;\n\n\t\tlet con = StaffConjunctionType.Solid;\n\t\tfor (let i = upStaff; i < downStaff; i++) con = Math.min(con, this.conjunctions[i]);\n\n\t\treturn con;\n\t}\n\n\tstatic makeMaskLayout(layout: StaffLayout, mask: number): MaskedStaffLayout {\n\t\tconst staffIds = layout.staffIds.filter((_, i) => mask & (1 << i));\n\t\tif (staffIds.length === layout.staffIds.length) {\n\t\t\treturn {\n\t\t\t\tstaffIds: layout.staffIds,\n\t\t\t\tconjunctions: layout.conjunctions,\n\t\t\t\tgroups: layout.groups,\n\t\t\t};\n\t\t}\n\n\t\tconst groups = layout.groups\n\t\t\t.map((g) => ({ ids: layout.staffIds.slice(g.range[0], g.range[1] + 1).filter((id) => staffIds.includes(id)), ...g }))\n\t\t\t.filter(({ ids }) => ids.length)\n\t\t\t.map(\n\t\t\t\t({ ids, ...g }) =>\n\t\t\t\t\t({\n\t\t\t\t\t\tkey: g.key,\n\t\t\t\t\t\tgroup: g.group,\n\t\t\t\t\t\trange: [staffIds.indexOf(ids[0]), staffIds.indexOf(ids[ids.length - 1])],\n\t\t\t\t\t} as StaffGroupTrait)\n\t\t\t);\n\n\t\tconst conjunctions = staffIds.slice(0, staffIds.length - 1).map((id, i) => {\n\t\t\tconst nextId = staffIds[i + 1];\n\t\t\treturn layout.conjunctionBetween(layout.staffIds.indexOf(id), layout.staffIds.indexOf(nextId));\n\t\t});\n\n\t\treturn {\n\t\t\tstaffIds,\n\t\t\tconjunctions,\n\t\t\tgroups,\n\t\t};\n\t}\n\n\tmask(mask: number): MaskedStaffLayout {\n\t\tif (!this.maskCache.get(mask)) this.maskCache.set(mask, StaffLayout.makeMaskLayout(this, mask));\n\n\t\treturn this.maskCache.get(mask);\n\t}\n\n\t// {,}\t*\t1,1\t\t=> {,}\n\t// {,}\t*\t1,x\t\t=> {\n\t// {,}\t*\t0,x\t\t=>\n\t// {,}\t*\t0,1\t\t=> {}\n\tpartialMaskCode(bits: (1 | 0)[], withIds = false): string {\n\t\ttype Attendance = 0 | 1 | null;\n\t\tconst staffStatus = this.staffIds\n\t\t\t.map((_, i) => (i < bits.length ? bits[i] : null))\n\t\t\t.reduce((status, x, i) => {\n\t\t\t\tstatus[this.staffIds[i]] = x;\n\t\t\t\treturn status;\n\t\t\t}, {} as { [id: string]: Attendance });\n\n\t\tconst joinGroup = (group: StaffGroup): [string, boolean] => {\n\t\t\tif (group.staff) return [staffStatus[group.staff] ? group.staff : null, staffStatus[group.staff] === null];\n\n\t\t\tconst subs = group.subs.map((sub) => joinGroup(sub));\n\t\t\tconst subStr = subs\n\t\t\t\t.map((pair) => pair[0])\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(',');\n\t\t\tconst partial = subs.some(([_, partial]) => partial);\n\n\t\t\tconst code = subStr ? bracketCode(group.type, partial)(subStr) : null;\n\n\t\t\treturn [code, partial];\n\t\t};\n\n\t\tlet [code] = joinGroup(this.group);\n\t\tcode = code || '';\n\t\tif (!withIds) code = code.replace(/[_\\w]+/g, '');\n\n\t\treturn code;\n\t}\n}\n\nexport default StaffLayout;\n","// @ts-nocheck\n/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function () {\n\tvar o = function (k, v, o, l) {\n\t\t\tfor (o = o || {}, l = k.length; l--; o[k[l]] = v);\n\t\t\treturn o;\n\t\t},\n\t\t$V0 = [1, 15],\n\t\t$V1 = [1, 16],\n\t\t$V2 = [1, 17],\n\t\t$V3 = [1, 11],\n\t\t$V4 = [1, 12],\n\t\t$V5 = [1, 13],\n\t\t$V6 = [1, 24],\n\t\t$V7 = [1, 25],\n\t\t$V8 = [1, 26],\n\t\t$V9 = [5, 11, 12, 13, 15, 16, 17, 21, 22, 23, 24],\n\t\t$Va = [15, 16, 17, 21, 22, 23, 24],\n\t\t$Vb = [11, 12, 13, 15, 16, 17, 21, 22, 23, 24],\n\t\t$Vc = [5, 11, 12, 13, 21, 22, 23, 24];\n\tvar parser = {\n\t\ttrace: function trace() {},\n\t\tyy: {},\n\t\tsymbols_: {\n\t\t\terror: 2,\n\t\t\tstart_symbol: 3,\n\t\t\tstaff_layout: 4,\n\t\t\tEOF: 5,\n\t\t\tseq: 6,\n\t\t\tseq_id: 7,\n\t\t\tseq_br: 8,\n\t\t\tseq_con: 9,\n\t\t\tbound_left: 10,\n\t\t\t'<': 11,\n\t\t\t'[': 12,\n\t\t\t'{': 13,\n\t\t\tbound_right: 14,\n\t\t\t'>': 15,\n\t\t\t']': 16,\n\t\t\t'}': 17,\n\t\t\tbound_lefts: 18,\n\t\t\tbound_rights: 19,\n\t\t\tconjunction: 20,\n\t\t\t'-': 21,\n\t\t\t',': 22,\n\t\t\t'.': 23,\n\t\t\tID: 24,\n\t\t\tseq_bl: 25,\n\t\t\t$accept: 0,\n\t\t\t$end: 1,\n\t\t},\n\t\tterminals_: { 2: 'error', 5: 'EOF', 11: '<', 12: '[', 13: '{', 15: '>', 16: ']', 17: '}', 21: '-', 22: ',', 23: '.', 24: 'ID' },\n\t\tproductions_: [\n\t\t\t0,\n\t\t\t[3, 2],\n\t\t\t[4, 1],\n\t\t\t[6, 0],\n\t\t\t[6, 1],\n\t\t\t[6, 1],\n\t\t\t[6, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[14, 1],\n\t\t\t[14, 1],\n\t\t\t[14, 1],\n\t\t\t[18, 1],\n\t\t\t[18, 2],\n\t\t\t[19, 1],\n\t\t\t[19, 2],\n\t\t\t[20, 1],\n\t\t\t[20, 1],\n\t\t\t[20, 1],\n\t\t\t[7, 1],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[25, 1],\n\t\t\t[25, 2],\n\t\t\t[25, 2],\n\t\t\t[25, 2],\n\t\t\t[8, 2],\n\t\t\t[8, 2],\n\t\t\t[8, 2],\n\t\t\t[9, 1],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t],\n\t\tperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n\t\t\t/* this == yyval */\n\n\t\t\tvar $0 = $$.length - 1;\n\t\t\tswitch (yystate) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\t$$[$0].next();\n\n\t\t\t\t\tthis.$ = $$[$0].toJSON();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.$ = new Seq();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13:\n\t\t\t\tcase 15:\n\t\t\t\t\tthis.$ = [$$[$0]];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 14:\n\t\t\t\tcase 16:\n\t\t\t\t\tthis.$ = [...$$[$0 - 1], $$[$0]];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 20:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.i($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 21:\n\t\t\t\tcase 23:\n\t\t\t\t\t$$[$0 - 1].next();\n\t\t\t\t\t$$[$0 - 1].tip.i($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 22:\n\t\t\t\tcase 24:\n\t\t\t\t\t$$[$0 - 1].tip.i($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 25:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.bl($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 26:\n\t\t\t\tcase 27:\n\t\t\t\t\t$$[$0 - 1].next();\n\t\t\t\t\t$$[$0 - 1].tip.bl($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 28:\n\t\t\t\t\t$$[$0 - 1].tip.bl($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 29:\n\t\t\t\tcase 30:\n\t\t\t\tcase 31:\n\t\t\t\t\t$$[$0 - 1].tip.br($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 32:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.con($$[$0]);\n\t\t\t\t\tthis.$.next();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 33:\n\t\t\t\tcase 34:\n\t\t\t\tcase 35:\n\t\t\t\tcase 36:\n\t\t\t\t\t$$[$0 - 1].tip.con($$[$0]);\n\t\t\t\t\t$$[$0 - 1].next();\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\ttable: [\n\t\t\t{ 3: 1, 4: 2, 5: [2, 3], 6: 3, 7: 4, 8: 5, 9: 6, 10: 14, 11: $V0, 12: $V1, 13: $V2, 18: 10, 20: 9, 21: $V3, 22: $V4, 23: $V5, 24: [1, 7], 25: 8 },\n\t\t\t{ 1: [3] },\n\t\t\t{ 5: [1, 18] },\n\t\t\t{ 5: [2, 2] },\n\t\t\t{ 5: [2, 4], 10: 14, 11: $V0, 12: $V1, 13: $V2, 14: 23, 15: $V6, 16: $V7, 17: $V8, 18: 22, 19: 20, 20: 21, 21: $V3, 22: $V4, 23: $V5, 24: [1, 19] },\n\t\t\t{ 5: [2, 5], 10: 14, 11: $V0, 12: $V1, 13: $V2, 18: 29, 20: 28, 21: $V3, 22: $V4, 23: $V5, 24: [1, 27] },\n\t\t\t{ 5: [2, 6], 10: 14, 11: $V0, 12: $V1, 13: $V2, 14: 23, 15: $V6, 16: $V7, 17: $V8, 18: 33, 19: 31, 20: 32, 21: $V3, 22: $V4, 23: $V5, 24: [1, 30] },\n\t\t\to($V9, [2, 20]),\n\t\t\t{ 14: 23, 15: $V6, 16: $V7, 17: $V8, 19: 35, 20: 36, 21: $V3, 22: $V4, 23: $V5, 24: [1, 34] },\n\t\t\to($V9, [2, 32]),\n\t\t\to($Va, [2, 25], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 17]),\n\t\t\to($V9, [2, 18]),\n\t\t\to($V9, [2, 19]),\n\t\t\to($Vb, [2, 13]),\n\t\t\to($Vb, [2, 7]),\n\t\t\to($Vb, [2, 8]),\n\t\t\to($Vb, [2, 9]),\n\t\t\t{ 1: [2, 1] },\n\t\t\to($V9, [2, 21]),\n\t\t\to($Vc, [2, 29], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 33]),\n\t\t\to($Va, [2, 26], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 15]),\n\t\t\to($V9, [2, 10]),\n\t\t\to($V9, [2, 11]),\n\t\t\to($V9, [2, 12]),\n\t\t\to($V9, [2, 23]),\n\t\t\to($V9, [2, 35]),\n\t\t\to($Va, [2, 27], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 24]),\n\t\t\to($Vc, [2, 31], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 36]),\n\t\t\to($Va, [2, 28], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 22]),\n\t\t\to($Vc, [2, 30], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 34]),\n\t\t\to($Vb, [2, 14]),\n\t\t\to($V9, [2, 16]),\n\t\t],\n\t\tdefaultActions: { 3: [2, 2], 18: [2, 1] },\n\t\tparseError: function parseError(str, hash) {\n\t\t\tif (hash.recoverable) {\n\t\t\t\tthis.trace(str);\n\t\t\t} else {\n\t\t\t\tvar error = new Error(str);\n\t\t\t\terror.hash = hash;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tparse: function parse(input) {\n\t\t\tvar self = this,\n\t\t\t\tstack = [0],\n\t\t\t\ttstack = [],\n\t\t\t\tvstack = [null],\n\t\t\t\tlstack = [],\n\t\t\t\ttable = this.table,\n\t\t\t\tyytext = '',\n\t\t\t\tyylineno = 0,\n\t\t\t\tyyleng = 0,\n\t\t\t\trecovering = 0,\n\t\t\t\tTERROR = 2,\n\t\t\t\tEOF = 1;\n\t\t\tvar args = lstack.slice.call(arguments, 1);\n\t\t\tvar lexer = Object.create(this.lexer);\n\t\t\tvar sharedState = { yy: {} };\n\t\t\tfor (var k in this.yy) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n\t\t\t\t\tsharedState.yy[k] = this.yy[k];\n\t\t\t\t}\n\t\t\t}\n\t\t\tlexer.setInput(input, sharedState.yy);\n\t\t\tsharedState.yy.lexer = lexer;\n\t\t\tsharedState.yy.parser = this;\n\t\t\tif (typeof lexer.yylloc == 'undefined') {\n\t\t\t\tlexer.yylloc = {};\n\t\t\t}\n\t\t\tvar yyloc = lexer.yylloc;\n\t\t\tlstack.push(yyloc);\n\t\t\tvar ranges = lexer.options && lexer.options.ranges;\n\t\t\tif (typeof sharedState.yy.parseError === 'function') {\n\t\t\t\tthis.parseError = sharedState.yy.parseError;\n\t\t\t} else {\n\t\t\t\tthis.parseError = Object.getPrototypeOf(this).parseError;\n\t\t\t}\n\t\t\tfunction popStack(n) {\n\t\t\t\tstack.length = stack.length - 2 * n;\n\t\t\t\tvstack.length = vstack.length - n;\n\t\t\t\tlstack.length = lstack.length - n;\n\t\t\t}\n\t\t\t_token_stack: var lex = function () {\n\t\t\t\tvar token;\n\t\t\t\ttoken = lexer.lex() || EOF;\n\t\t\t\tif (typeof token !== 'number') {\n\t\t\t\t\ttoken = self.symbols_[token] || token;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t};\n\t\t\tvar symbol,\n\t\t\t\tpreErrorSymbol,\n\t\t\t\tstate,\n\t\t\t\taction,\n\t\t\t\ta,\n\t\t\t\tr,\n\t\t\t\tyyval = {},\n\t\t\t\tp,\n\t\t\t\tlen,\n\t\t\t\tnewState,\n\t\t\t\texpected;\n\t\t\twhile (true) {\n\t\t\t\tstate = stack[stack.length - 1];\n\t\t\t\tif (this.defaultActions[state]) {\n\t\t\t\t\taction = this.defaultActions[state];\n\t\t\t\t} else {\n\t\t\t\t\tif (symbol === null || typeof symbol == 'undefined') {\n\t\t\t\t\t\tsymbol = lex();\n\t\t\t\t\t}\n\t\t\t\t\taction = table[state] && table[state][symbol];\n\t\t\t\t}\n\t\t\t\tif (typeof action === 'undefined' || !action.length || !action[0]) {\n\t\t\t\t\tvar errStr = '';\n\t\t\t\t\texpected = [];\n\t\t\t\t\tfor (p in table[state]) {\n\t\t\t\t\t\tif (this.terminals_[p] && p > TERROR) {\n\t\t\t\t\t\t\texpected.push(\"'\" + this.terminals_[p] + \"'\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (lexer.showPosition) {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t':\\n' +\n\t\t\t\t\t\t\tlexer.showPosition() +\n\t\t\t\t\t\t\t'\\nExpecting ' +\n\t\t\t\t\t\t\texpected.join(', ') +\n\t\t\t\t\t\t\t\", got '\" +\n\t\t\t\t\t\t\t(this.terminals_[symbol] || symbol) +\n\t\t\t\t\t\t\t\"'\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t': Unexpected ' +\n\t\t\t\t\t\t\t(symbol == EOF ? 'end of input' : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.parseError(errStr, {\n\t\t\t\t\t\ttext: lexer.match,\n\t\t\t\t\t\ttoken: this.terminals_[symbol] || symbol,\n\t\t\t\t\t\tline: lexer.yylineno,\n\t\t\t\t\t\tloc: yyloc,\n\t\t\t\t\t\texpected: expected,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (action[0] instanceof Array && action.length > 1) {\n\t\t\t\t\tthrow new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n\t\t\t\t}\n\t\t\t\tswitch (action[0]) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tstack.push(symbol);\n\t\t\t\t\t\tvstack.push(lexer.yytext);\n\t\t\t\t\t\tlstack.push(lexer.yylloc);\n\t\t\t\t\t\tstack.push(action[1]);\n\t\t\t\t\t\tsymbol = null;\n\t\t\t\t\t\tif (!preErrorSymbol) {\n\t\t\t\t\t\t\tyyleng = lexer.yyleng;\n\t\t\t\t\t\t\tyytext = lexer.yytext;\n\t\t\t\t\t\t\tyylineno = lexer.yylineno;\n\t\t\t\t\t\t\tyyloc = lexer.yylloc;\n\t\t\t\t\t\t\tif (recovering > 0) {\n\t\t\t\t\t\t\t\trecovering--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsymbol = preErrorSymbol;\n\t\t\t\t\t\t\tpreErrorSymbol = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tlen = this.productions_[action[1]][1];\n\t\t\t\t\t\tyyval.$ = vstack[vstack.length - len];\n\t\t\t\t\t\tyyval._$ = {\n\t\t\t\t\t\t\tfirst_line: lstack[lstack.length - (len || 1)].first_line,\n\t\t\t\t\t\t\tlast_line: lstack[lstack.length - 1].last_line,\n\t\t\t\t\t\t\tfirst_column: lstack[lstack.length - (len || 1)].first_column,\n\t\t\t\t\t\t\tlast_column: lstack[lstack.length - 1].last_column,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (ranges) {\n\t\t\t\t\t\t\tyyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tr = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n\t\t\t\t\t\tif (typeof r !== 'undefined') {\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (len) {\n\t\t\t\t\t\t\tstack = stack.slice(0, -1 * len * 2);\n\t\t\t\t\t\t\tvstack = vstack.slice(0, -1 * len);\n\t\t\t\t\t\t\tlstack = lstack.slice(0, -1 * len);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstack.push(this.productions_[action[1]][0]);\n\t\t\t\t\t\tvstack.push(yyval.$);\n\t\t\t\t\t\tlstack.push(yyval._$);\n\t\t\t\t\t\tnewState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n\t\t\t\t\t\tstack.push(newState);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tclass Item {\n\t\tconstructor() {\n\t\t\tthis.id = null;\n\t\t\tthis.leftBounds = [];\n\t\t\tthis.rightBounds = [];\n\t\t\tthis.conjunction = null;\n\t\t}\n\n\t\ti(id) {\n\t\t\tthis.id = id;\n\t\t\treturn this;\n\t\t}\n\n\t\tbl(leftBounds) {\n\t\t\tthis.leftBounds = leftBounds;\n\t\t\treturn this;\n\t\t}\n\n\t\tbr(rightBounds) {\n\t\t\tthis.rightBounds = rightBounds;\n\t\t\treturn this;\n\t\t}\n\n\t\tcon(conjunction) {\n\t\t\tthis.conjunction = conjunction;\n\t\t\treturn this;\n\t\t}\n\t}\n\n\tclass Seq {\n\t\tconstructor() {\n\t\t\tthis.body = [];\n\t\t\tthis.tip = new Item();\n\t\t}\n\n\t\tnext() {\n\t\t\tthis.body.push(this.tip);\n\t\t\tthis.tip = new Item();\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\treturn this.body;\n\t\t}\n\t}\n\t/* generated by jison-lex 0.3.4 */\n\tvar lexer = (function () {\n\t\tvar lexer = {\n\t\t\tEOF: 1,\n\n\t\t\tparseError: function parseError(str, hash) {\n\t\t\t\tif (this.yy.parser) {\n\t\t\t\t\tthis.yy.parser.parseError(str, hash);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(str);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// resets the lexer, sets new input\n\t\t\tsetInput: function (input, yy) {\n\t\t\t\tthis.yy = yy || this.yy || {};\n\t\t\t\tthis._input = input;\n\t\t\t\tthis._more = this._backtrack = this.done = false;\n\t\t\t\tthis.yylineno = this.yyleng = 0;\n\t\t\t\tthis.yytext = this.matched = this.match = '';\n\t\t\t\tthis.conditionStack = ['INITIAL'];\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: 1,\n\t\t\t\t\tfirst_column: 0,\n\t\t\t\t\tlast_line: 1,\n\t\t\t\t\tlast_column: 0,\n\t\t\t\t};\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [0, 0];\n\t\t\t\t}\n\t\t\t\tthis.offset = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// consumes and returns one char from the input\n\t\t\tinput: function () {\n\t\t\t\tvar ch = this._input[0];\n\t\t\t\tthis.yytext += ch;\n\t\t\t\tthis.yyleng++;\n\t\t\t\tthis.offset++;\n\t\t\t\tthis.match += ch;\n\t\t\t\tthis.matched += ch;\n\t\t\t\tvar lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno++;\n\t\t\t\t\tthis.yylloc.last_line++;\n\t\t\t\t} else {\n\t\t\t\t\tthis.yylloc.last_column++;\n\t\t\t\t}\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range[1]++;\n\t\t\t\t}\n\n\t\t\t\tthis._input = this._input.slice(1);\n\t\t\t\treturn ch;\n\t\t\t},\n\n\t\t\t// unshifts one char (or a string) into the input\n\t\t\tunput: function (ch) {\n\t\t\t\tvar len = ch.length;\n\t\t\t\tvar lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n\t\t\t\tthis._input = ch + this._input;\n\t\t\t\tthis.yytext = this.yytext.substr(0, this.yytext.length - len);\n\t\t\t\t//this.yyleng -= len;\n\t\t\t\tthis.offset -= len;\n\t\t\t\tvar oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n\t\t\t\tthis.match = this.match.substr(0, this.match.length - 1);\n\t\t\t\tthis.matched = this.matched.substr(0, this.matched.length - 1);\n\n\t\t\t\tif (lines.length - 1) {\n\t\t\t\t\tthis.yylineno -= lines.length - 1;\n\t\t\t\t}\n\t\t\t\tvar r = this.yylloc.range;\n\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length\n\t\t\t\t\t\t: this.yylloc.first_column - len,\n\t\t\t\t};\n\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [r[0], r[0] + this.yyleng - len];\n\t\t\t\t}\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, caches matched text and appends it on next action\n\t\t\tmore: function () {\n\t\t\t\tthis._more = true;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n\t\t\treject: function () {\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\tthis._backtrack = true;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError(\n\t\t\t\t\t\t'Lexical error on line ' +\n\t\t\t\t\t\t\t(this.yylineno + 1) +\n\t\t\t\t\t\t\t'. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' +\n\t\t\t\t\t\t\tthis.showPosition(),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// retain first n characters of the match\n\t\t\tless: function (n) {\n\t\t\t\tthis.unput(this.match.slice(n));\n\t\t\t},\n\n\t\t\t// displays already matched input, i.e. for error messages\n\t\t\tpastInput: function () {\n\t\t\t\tvar past = this.matched.substr(0, this.matched.length - this.match.length);\n\t\t\t\treturn (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays upcoming input, i.e. for error messages\n\t\t\tupcomingInput: function () {\n\t\t\t\tvar next = this.match;\n\t\t\t\tif (next.length < 20) {\n\t\t\t\t\tnext += this._input.substr(0, 20 - next.length);\n\t\t\t\t}\n\t\t\t\treturn (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays the character position where the lexing error occurred, i.e. for error messages\n\t\t\tshowPosition: function () {\n\t\t\t\tvar pre = this.pastInput();\n\t\t\t\tvar c = new Array(pre.length + 1).join('-');\n\t\t\t\treturn pre + this.upcomingInput() + '\\n' + c + '^';\n\t\t\t},\n\n\t\t\t// test the lexed token: return FALSE when not a match, otherwise return token\n\t\t\ttest_match: function (match, indexed_rule) {\n\t\t\t\tvar token, lines, backup;\n\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t// save context\n\t\t\t\t\tbackup = {\n\t\t\t\t\t\tyylineno: this.yylineno,\n\t\t\t\t\t\tyylloc: {\n\t\t\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\t\t\tlast_line: this.last_line,\n\t\t\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\t\t\tlast_column: this.yylloc.last_column,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tyytext: this.yytext,\n\t\t\t\t\t\tmatch: this.match,\n\t\t\t\t\t\tmatches: this.matches,\n\t\t\t\t\t\tmatched: this.matched,\n\t\t\t\t\t\tyyleng: this.yyleng,\n\t\t\t\t\t\toffset: this.offset,\n\t\t\t\t\t\t_more: this._more,\n\t\t\t\t\t\t_input: this._input,\n\t\t\t\t\t\tyy: this.yy,\n\t\t\t\t\t\tconditionStack: this.conditionStack.slice(0),\n\t\t\t\t\t\tdone: this.done,\n\t\t\t\t\t};\n\t\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\t\tbackup.yylloc.range = this.yylloc.range.slice(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno += lines.length;\n\t\t\t\t}\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.last_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.last_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length\n\t\t\t\t\t\t: this.yylloc.last_column + match[0].length,\n\t\t\t\t};\n\t\t\t\tthis.yytext += match[0];\n\t\t\t\tthis.match += match[0];\n\t\t\t\tthis.matches = match;\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [this.offset, (this.offset += this.yyleng)];\n\t\t\t\t}\n\t\t\t\tthis._more = false;\n\t\t\t\tthis._backtrack = false;\n\t\t\t\tthis._input = this._input.slice(match[0].length);\n\t\t\t\tthis.matched += match[0];\n\t\t\t\ttoken = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\t\t\t\tif (this.done && this._input) {\n\t\t\t\t\tthis.done = false;\n\t\t\t\t}\n\t\t\t\tif (token) {\n\t\t\t\t\treturn token;\n\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t// recover context\n\t\t\t\t\tfor (var k in backup) {\n\t\t\t\t\t\tthis[k] = backup[k];\n\t\t\t\t\t}\n\t\t\t\t\treturn false; // rule action called reject() implying the next rule should be tested instead.\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\t// return next match in input\n\t\t\tnext: function () {\n\t\t\t\tif (this.done) {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t}\n\t\t\t\tif (!this._input) {\n\t\t\t\t\tthis.done = true;\n\t\t\t\t}\n\n\t\t\t\tvar token, match, tempMatch, index;\n\t\t\t\tif (!this._more) {\n\t\t\t\t\tthis.yytext = '';\n\t\t\t\t\tthis.match = '';\n\t\t\t\t}\n\t\t\t\tvar rules = this._currentRules();\n\t\t\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\t\t\ttempMatch = this._input.match(this.rules[rules[i]]);\n\t\t\t\t\tif (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n\t\t\t\t\t\tmatch = tempMatch;\n\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t\t\ttoken = this.test_match(tempMatch, rules[i]);\n\t\t\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\t\t\treturn token;\n\t\t\t\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\t\t\tcontinue; // rule action called reject() implying a rule MISmatch.\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!this.options.flex) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (match) {\n\t\t\t\t\ttoken = this.test_match(match, rules[index]);\n\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\treturn token;\n\t\t\t\t\t}\n\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this._input === '') {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return next match that has a token\n\t\t\tlex: function lex() {\n\t\t\t\tvar r = this.next();\n\t\t\t\tif (r) {\n\t\t\t\t\treturn r;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.lex();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n\t\t\tbegin: function begin(condition) {\n\t\t\t\tthis.conditionStack.push(condition);\n\t\t\t},\n\n\t\t\t// pop the previously active lexer condition state off the condition stack\n\t\t\tpopState: function popState() {\n\t\t\t\tvar n = this.conditionStack.length - 1;\n\t\t\t\tif (n > 0) {\n\t\t\t\t\treturn this.conditionStack.pop();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditionStack[0];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// produce the lexer rule set which is active for the currently active lexer condition state\n\t\t\t_currentRules: function _currentRules() {\n\t\t\t\tif (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n\t\t\t\t\treturn this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditions['INITIAL'].rules;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n\t\t\ttopState: function topState(n) {\n\t\t\t\tn = this.conditionStack.length - 1 - Math.abs(n || 0);\n\t\t\t\tif (n >= 0) {\n\t\t\t\t\treturn this.conditionStack[n];\n\t\t\t\t} else {\n\t\t\t\t\treturn 'INITIAL';\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// alias for begin(condition)\n\t\t\tpushState: function pushState(condition) {\n\t\t\t\tthis.begin(condition);\n\t\t\t},\n\n\t\t\t// return the number of states currently on the stack\n\t\t\tstateStackSize: function stateStackSize() {\n\t\t\t\treturn this.conditionStack.length;\n\t\t\t},\n\t\t\toptions: {},\n\t\t\tperformAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n\t\t\t\tvar YYSTATE = YY_START;\n\t\t\t\tswitch ($avoiding_name_collisions) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn 24;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn 5;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\trules: [/^(?:\\s+)/, /^(?:([-,.\\[\\]<>{}]))/, /^(?:([a-zA-Z_0-9]+))/, /^(?:$)/],\n\t\t\tconditions: { INITIAL: { rules: [0, 1, 2, 3], inclusive: true } },\n\t\t};\n\t\treturn lexer;\n\t})();\n\tparser.lexer = lexer;\n\tfunction Parser() {\n\t\tthis.yy = {};\n\t}\n\tParser.prototype = parser;\n\tparser.Parser = Parser;\n\treturn new Parser();\n})();\n\n// if (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexport { parser };\nexport var Parser = parser.Parser;\nexport var parse = function () {\n\treturn parser.parse.apply(parser, arguments);\n};\nexport default { parser: parser, Parser: parser.Parser, parse: parse };\n","import StaffLayout from './staffLayout';\nimport grammar from './grammar.jison';\n\nconst parseCode = (code: string): StaffLayout => {\n\tconst raw = grammar.parse(code);\n\n\treturn new StaffLayout(raw);\n};\n\nexport { parseCode };\n","interface Logger {\n\tdebug(message?: any, ...optionalParams: any[]): void;\n\tinfo(message?: any, ...optionalParams: any[]): void;\n\twarn(message?: any, ...optionalParams: any[]): void;\n\tgroup(...label: any[]): void;\n\tgroupCollapsed(...label: any[]): void;\n\tgroupEnd(): void;\n\tassert(expr: boolean, ...optionalParams: any[]): void;\n}\n\nclass DummyLogger implements Logger {\n\tdebug(..._: any[]): void {}\n\tgroup(..._: any[]): void {}\n\tgroupCollapsed(..._: any[]): void {}\n\tgroupEnd(): void {}\n\tinfo(..._: any[]): void {}\n\twarn(..._: any[]): void {}\n\tassert(..._: any[]): void {}\n}\n\nexport { Logger, DummyLogger };\n","import { Fraction, Pitch, Matrix2x3 } from './interfaces';\nimport { SemanticPoint, CONFLICTION_GROUPS } from './semanticPoint';\n\ntype Point2D = { x: number; y: number };\ntype PointSegment = Point2D[];\n\nconst POINT_CONFLICTION_DISTANCE = 0.4;\n\nconst roundNumber = (x: number, precision: number, min = -Infinity): number => Math.max(Math.round(x / precision) * precision, min);\n\nconst distance2D = (p1: Point2D, p2: Point2D): number => {\n\tconst dx = p1.x - p2.x;\n\tconst dy = p1.y - p2.y;\n\n\treturn Math.sqrt(dx * dx + dy * dy);\n};\n\nconst trans23 = (point: Point2D, matrix: Matrix2x3): Point2D => ({\n\tx: matrix[0] * point.x + matrix[2] * point.y + matrix[4],\n\ty: matrix[1] * point.x + matrix[3] * point.y + matrix[5],\n});\n\nconst gcd = (a: number, b: number): number => {\n\tif (!(Number.isInteger(a) && Number.isInteger(b))) {\n\t\tconsole.error('non-integer gcd:', a, b);\n\t\treturn 1;\n\t}\n\n\treturn b === 0 ? a : gcd(b, a % b);\n};\n\nconst frac = (numerator: number, denominator: number): Fraction => ({ numerator, denominator });\n\nconst reducedFraction = (n: number, d: number): Fraction => {\n\tn = Math.round(n);\n\td = Math.round(d);\n\n\tconst g = n !== 0 ? gcd(n, d) : d;\n\n\treturn frac(n / g, d / g);\n};\n\nconst printFraction = (f: Fraction): string => `${f.numerator}/${f.denominator}`;\n\nconst fractionMul = (value: number, fraction: Fraction): number => (fraction ? (value * fraction.numerator) / fraction.denominator : value);\n\nconst segmentPoints = (points: Point2D[], axis: 'x' | 'y'): PointSegment[] => {\n\tconst sorted = [...points].sort((p1, p2) => p1[axis] - p2[axis]);\n\n\tlet seg: Point2D[] = null;\n\tlet lastP = null;\n\n\treturn sorted.reduce((segments, p, i) => {\n\t\tif (!lastP) {\n\t\t\tlastP = p;\n\t\t\tseg = [p];\n\t\t} else {\n\t\t\tif (p[axis] - lastP[axis] < POINT_CONFLICTION_DISTANCE) seg.push(p);\n\t\t\telse {\n\t\t\t\tif (seg.length > 1) segments.push(seg);\n\t\t\t\tlastP = p;\n\t\t\t\tseg = [p];\n\t\t\t}\n\t\t}\n\n\t\tif (seg.length > 1 && i === sorted.length - 1) segments.push(seg);\n\n\t\treturn segments;\n\t}, []);\n};\n\nconst filterWeekPoints = (points: SemanticPoint[]): SemanticPoint[] => {\n\t//console.log(\"filterWeekPoints:\", points.map(p => `${p.semantic}, ${p.x}, ${p.y}`));\n\t//console.table(points.map(p => ({ ...p })));\n\n\tif (points.length <= 1) return [];\n\n\tlet rests = points.slice(1);\n\tconst group = CONFLICTION_GROUPS.find((group) => group.includes(points[0].semantic));\n\tif (!group) return filterWeekPoints(rests);\n\n\tconst weeks = rests.filter((p) => group.includes(p.semantic));\n\trests = rests.filter((p) => !group.includes(p.semantic));\n\n\treturn [...weeks, ...filterWeekPoints(rests)];\n};\n\nconst solveOverlapping = (points: SemanticPoint[]): SemanticPoint[] => {\n\tconst pset = new Set(points);\n\n\tconst xClusters = segmentPoints(points, 'x');\n\tconst clusters: SemanticPoint[][] = [].concat(...xClusters.map((c) => segmentPoints(c, 'y')));\n\tclusters.forEach((ps) => ps.sort((p1, p2) => p2.confidence - p1.confidence));\n\n\tclusters.forEach((ps) => {\n\t\tfilterWeekPoints(ps).forEach((p) => pset.delete(p));\n\t});\n\n\treturn Array.from(pset);\n};\n\nconst GROUP_N_TO_PITCH = [0, 2, 4, 5, 7, 9, 11];\nconst MIDDLE_C = 60;\n\nconst mod7 = (x) => {\n\tlet y = x % 7;\n\twhile (y < 0) y += 7;\n\n\treturn y;\n};\n\nconst mod12 = (x) => {\n\tlet y = x % 12;\n\twhile (y < 0) y += 12;\n\n\treturn y;\n};\n\nconst noteToPitch = ({ note, alter }: Pitch): number => {\n\tconst group = Math.floor(note / 7);\n\tconst gn = mod7(note);\n\n\treturn MIDDLE_C + group * 12 + GROUP_N_TO_PITCH[gn] + alter;\n};\n\nconst argmax = (data: number[]): number => {\n\tconst max = Math.max(...data);\n\n\treturn data.indexOf(max);\n};\n\nexport {\n\tPoint2D,\n\troundNumber,\n\tdistance2D,\n\ttrans23,\n\tsolveOverlapping,\n\tgcd,\n\tfrac,\n\treducedFraction,\n\tprintFraction,\n\tfractionMul,\n\tGROUP_N_TO_PITCH,\n\tMIDDLE_C,\n\tmod7,\n\tmod12,\n\tnoteToPitch,\n\targmax,\n};\n","import { Fraction, Pitch, EventFeature, EventPredisposition } from './interfaces';\nimport { gcd, reducedFraction } from './utils';\nimport { TokenType } from './token';\nimport * as Token from './token';\nimport { SimpleClass } from './aux_/typedJSON';\n\nconst WHOLE_DURATION = 128 * 3 * 5;\nconst WHOLE_EXP2 = WHOLE_DURATION / 15;\n\nenum AccessoryDirection {\n\tUp = '^',\n\tDown = '_',\n\tMiddle = '-',\n}\n\nenum GraceType {\n\tGrace = 'grace',\n\tAfterGrace = 'afterGrace',\n\tAcciaccatura = 'acciaccatura',\n\tAppoggiatura = 'appoggiatura',\n\tSlashedGrace = 'slashedGrace',\n}\n\nenum StemBeam {\n\tOpen = 'Open',\n\tClose = 'Close',\n\tContinue = 'Continue',\n}\n\nenum TremoloLink {\n\tPitcher = 'Pitcher',\n\tCatcher = 'Catcher',\n\tPierced = 'Pierced',\n}\n\nenum GlissandoStyle {\n\tNormal = 'normal',\n\tDashedLine = 'dashed-line',\n\tDottedLine = 'dotted-line',\n\tZigzag = 'zigzag',\n\tTrill = 'trill',\n}\n\nenum ArpeggioStyle {\n\tNormal = 'Normal',\n\tBracket = 'Bracket',\n\tParenthesis = 'Parenthesis',\n\tParenthesisDashed = 'ParenthesisDashed',\n\tArrowDown = 'ArrowDown',\n}\n\ninterface Accessory {\n\tdirection?: AccessoryDirection;\n\tparenthesized?: boolean;\n\ttype: TokenType;\n\tid?: string;\n\tx: number;\n}\n\ninterface TermPitch extends Pitch {\n\ttying?: boolean;\n\ttied?: boolean;\n\tparenthesized?: boolean;\n\toctaveShift?: number;\n}\n\nclass Term extends SimpleClass {\n\tx: number;\n\tstaff?: number;\n}\n\ntype RestType = 'r' | 'R' | 's' | null;\n\ninterface DurationalTerm {\n\tdivision: number;\n\tdots: number;\n\tmultiplier?: Fraction;\n}\n\nconst SCALE_NAMES = 'CDEFGAB';\n\nclass EventTerm extends Term implements DurationalTerm {\n\tstatic className = 'EventTerm';\n\n\tleft: number;\n\tright: number;\n\tpivotX: number;\n\n\tsystem: number;\n\troundX: number; // for tick map, scheduler\n\tintX: number; // for measure hash\n\tintY: number;\n\tys: number[]; // order by ascending pitch, low (greater Y) to high (less Y)\n\tpitches?: TermPitch[];\n\trest: RestType;\n\tdivision: number;\n\tdots: number;\n\taccessories: Accessory[];\n\tmultiplier: Fraction;\n\tstemDirection: string;\n\ttying: boolean;\n\ttied: boolean;\n\trepetitionChord: boolean;\n\tgrace?: GraceType;\n\tbeam?: StemBeam;\n\ttimeWarp?: Fraction;\n\tparenthesized?: boolean;\n\ttremolo?: number; // like division, 'number of beams' + 2\n\ttremoloLink?: TremoloLink;\n\tglissando?: boolean;\n\tglissandoStyle?: GlissandoStyle;\n\tarpeggioStyle?: ArpeggioStyle;\n\ttip?: { x: number; y: number };\n\n\ttick: number;\n\n\t// for topology\n\tid?: number;\n\tprevId?: number;\n\ttickGroup?: number;\n\n\tfeature: EventFeature;\n\tpredisposition: EventPredisposition;\n\n\tgraceIds?: number[];\n\tcatcherId?: number; // tremolo catcher event ID for tremolo pitcher event\n\n\tnoteIds?: string[]; // order by upwards\n\n\tstatic space({ tick, duration }: { tick: number; duration: number }): EventTerm {\n\t\tconst term = new EventTerm({\n\t\t\trest: 's',\n\t\t\ttick,\n\t\t\taccessories: [],\n\t\t});\n\t\tterm.duration = Math.round(duration);\n\n\t\treturn term;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tObject.assign(this, data);\n\n\t\tif (Number.isFinite(data.left) && Number.isFinite(data.right)) this.x = (this.left + this.right) / 2;\n\t\tif (!Number.isFinite(this.pivotX)) this.pivotX = this.x;\n\t\t//console.assert(Number.isFinite(this.x), \"EventTerm: invalid x,\", data);\n\t}\n\n\tget alignedTick(): number {\n\t\treturn this.grace ? this.tick + this.duration : this.tick;\n\t}\n\n\tget mainDuration(): number {\n\t\treturn WHOLE_DURATION * 2 ** -this.division * (2 - 2 ** -this.dots);\n\t}\n\n\tget duration(): number {\n\t\tlet value = this.mainDuration;\n\t\tif (this.multiplier) value *= this.multiplier.numerator / this.multiplier.denominator;\n\t\tif (this.timeWarp) value *= this.timeWarp.numerator / this.timeWarp.denominator;\n\n\t\treturn this.grace ? value / 8 : value;\n\t}\n\n\tset duration(value: number) {\n\t\tconsole.assert(Number.isFinite(value), 'invalid duration value:', value);\n\n\t\tconst divider = gcd(value, WHOLE_EXP2);\n\t\tconst division = Math.log2(WHOLE_EXP2 / divider);\n\t\tconst multiplier = reducedFraction(value * 2 ** division, WHOLE_DURATION);\n\n\t\tthis.division = division;\n\t\tthis.dots = 0;\n\n\t\tif (multiplier.numerator !== multiplier.denominator) this.multiplier = multiplier;\n\t\telse this.multiplier = undefined;\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick;\n\t}\n\n\tget times(): string {\n\t\tif (!this.timeWarp) return null;\n\n\t\treturn `${this.timeWarp.numerator}/${this.timeWarp.denominator}`;\n\t}\n\n\tget fullMeasureRest(): boolean {\n\t\treturn this.rest === 'R';\n\t}\n\n\tget tipX(): number {\n\t\treturn this.tip ? this.tip.x : this.x;\n\t}\n\n\tget tipY(): number {\n\t\treturn this.tip ? this.tip.y : this.ys ? this.ys[0] : 0;\n\t}\n\n\tget tremoloCatcher(): boolean {\n\t\treturn this.tremoloLink === TremoloLink.Catcher;\n\t}\n\n\tget scaleChord(): string {\n\t\treturn this.pitches.map((pitch) => SCALE_NAMES[(pitch.note + 700) % 7]).join('');\n\t}\n\n\tget zeroHolder(): boolean {\n\t\treturn !!this.grace || this.tremoloCatcher;\n\t}\n}\n\nenum ContextType {\n\tClef,\n\tKeyAcc,\n\tAcc,\n\tOctaveShift,\n\tTimeSignatureC,\n\tTimeSignatureN,\n}\n\nclass ContextedTerm extends Term {\n\tstatic className = 'ContextedTerm';\n\n\ty: number;\n\ttokenType: TokenType;\n\n\ttick: number;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget type(): ContextType {\n\t\tif (Token.TokenClefs.includes(this.tokenType)) return ContextType.Clef;\n\t\tif (/\\|key-/.test(this.tokenType)) return ContextType.KeyAcc;\n\t\tif (/accidentals-/.test(this.tokenType)) return ContextType.Acc;\n\t\tif (Token.TokenOctshifts.includes(this.tokenType)) return ContextType.OctaveShift;\n\t\tif (Token.TokenTimesigsC.includes(this.tokenType)) return ContextType.TimeSignatureC;\n\t\tif (Token.TokenTimesigsN.includes(this.tokenType)) return ContextType.TimeSignatureN;\n\n\t\treturn null;\n\t}\n\n\tget staffLevel(): boolean {\n\t\treturn [ContextType.OctaveShift, ContextType.Clef, ContextType.KeyAcc].includes(this.type);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick - 0.1;\n\t}\n\n\tget clef(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.ClefG:\n\t\t\t\treturn -this.y - 2;\n\n\t\t\tcase TokenType.ClefF:\n\t\t\t\treturn -this.y + 2;\n\n\t\t\tcase TokenType.ClefC:\n\t\t\t\treturn -this.y;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget alter() {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.AccNatural:\n\t\t\tcase TokenType.KeyNatural:\n\t\t\t\treturn 0;\n\n\t\t\tcase TokenType.AccSharp:\n\t\t\tcase TokenType.KeySharp:\n\t\t\t\treturn 1;\n\n\t\t\tcase TokenType.AccFlat:\n\t\t\tcase TokenType.KeyFlat:\n\t\t\t\treturn -1;\n\n\t\t\tcase TokenType.AccDoublesharp:\n\t\t\t\treturn 2;\n\n\t\t\tcase TokenType.AccFlatflat:\n\t\t\t\treturn -2;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget octaveShift(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.OctaveShift8va:\n\t\t\t\treturn -1;\n\n\t\t\tcase TokenType.OctaveShift0:\n\t\t\t\treturn 0;\n\n\t\t\tcase TokenType.OctaveShift8vb:\n\t\t\t\treturn 1;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget number(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.TimesigZero:\n\t\t\t\treturn 0;\n\t\t\tcase TokenType.TimesigOne:\n\t\t\t\treturn 1;\n\t\t\tcase TokenType.TimesigTwo:\n\t\t\t\treturn 2;\n\t\t\tcase TokenType.TimesigThree:\n\t\t\t\treturn 3;\n\t\t\tcase TokenType.TimesigFour:\n\t\t\t\treturn 4;\n\t\t\tcase TokenType.TimesigFive:\n\t\t\t\treturn 5;\n\t\t\tcase TokenType.TimesigSix:\n\t\t\t\treturn 6;\n\t\t\tcase TokenType.TimesigSeven:\n\t\t\t\treturn 7;\n\t\t\tcase TokenType.TimesigEight:\n\t\t\t\treturn 8;\n\t\t\tcase TokenType.TimesigNine:\n\t\t\t\treturn 9;\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n//class BreakTerm extends Term {\n//};\n\nclass MarkTerm extends Term {\n\tstatic className = 'MarkTerm';\n\n\ttick: number;\n\n\tget prior(): number {\n\t\treturn this.tick + 0.01;\n\t}\n}\n\nconst MUSIC_NOTES = Array(7)\n\t.fill(0)\n\t.map((_, i) => String.fromCodePoint(0x1d15d + i));\n\nclass TempoTerm extends MarkTerm {\n\tstatic className = 'TempoTerm';\n\n\tduration: string;\n\tbeats: string;\n\n\tstatic fromNumeralText(text: string): TempoTerm {\n\t\tif (/.+=.*\\d+/.test(text)) {\n\t\t\tconst [symbol, value] = text.split('=');\n\t\t\tlet division = MUSIC_NOTES.findIndex((n) => symbol.includes(n));\n\t\t\tdivision = division >= 0 ? division : 2;\n\t\t\tlet duration = (2 ** division).toString();\n\t\t\tif (symbol.includes('.')) duration += '.';\n\n\t\t\treturn new TempoTerm({ tick: 0, duration, beats: value });\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick - 0.01;\n\t}\n\n\t// a whole note equal to 1920\n\tget durationMagnitude(): number {\n\t\tconst [_, den, dot] = this.duration.match(/^(\\d+)(\\.)?$/);\n\t\tconst magnitude = (WHOLE_DURATION / Number(den)) * (dot ? 1.5 : 1);\n\n\t\treturn magnitude;\n\t}\n\n\t// beats per minute, suppose 1 beat = 480 ticks\n\tget bpm(): number {\n\t\tconst [number] = this.beats.match(/\\d+/) || [90];\n\t\tconst beats = Number(number);\n\n\t\treturn (beats * this.durationMagnitude * 4) / WHOLE_DURATION;\n\t}\n\n\tisValid(range = [10, 400]): boolean {\n\t\tconst bpm = this.bpm;\n\n\t\treturn Number.isFinite(this.bpm) && bpm >= range[0] && bpm < range[1];\n\t}\n}\n\nclass GlyphTerm extends MarkTerm {\n\tstatic className = 'GlyphTerm';\n\n\tglyph: string;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass TextTerm extends MarkTerm {\n\tstatic className = 'TextTerm';\n\n\tdirection?: AccessoryDirection;\n\ttext: string;\n\tbold: boolean;\n\titalic: boolean;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass LyricTerm extends MarkTerm {\n\tstatic className = 'LyricTerm';\n\n\ttext: string;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass CommandTerm extends MarkTerm {\n\tstatic className = 'CommandTerm';\n\n\tcommand: string;\n\tparameters: string[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass ChordmodeTerm extends Term implements DurationalTerm {\n\tstatic className = 'ChordmodeTerm';\n\n\tpitch: Pitch;\n\tbasePitch?: Pitch;\n\tmodifier?: string;\n\n\tdivision: number;\n\tdots: number;\n\tmultiplier: Fraction;\n\n\ttick: number;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick;\n\t}\n\n\tget duration(): number {\n\t\tconst value = WHOLE_DURATION * 2 ** -this.division * (2 - 2 ** -this.dots);\n\t\tif (this.multiplier) return (value * this.multiplier.numerator) / this.multiplier.denominator;\n\n\t\treturn value;\n\t}\n}\n\nexport {\n\tTerm,\n\tEventTerm,\n\tContextedTerm,\n\t//BreakTerm,\n\tMarkTerm,\n\tTempoTerm,\n\tGlyphTerm,\n\tTextTerm,\n\tLyricTerm,\n\tCommandTerm,\n\tChordmodeTerm,\n\tDurationalTerm,\n\tContextType,\n\tGraceType,\n\tTermPitch,\n\tRestType,\n\tGlissandoStyle,\n\tArpeggioStyle,\n\tAccessory,\n\tAccessoryDirection,\n\tWHOLE_DURATION,\n\tStemBeam,\n\tTremoloLink,\n};\n","import { SpartitoMeasure } from './spartitoMeasure';\nimport { StemBeam, WHOLE_DURATION } from './term';\nimport { fractionMul, gcd } from './utils';\n\nexport interface MeasureEvaluation {\n\tevents: number;\n\tvalidEvents: number;\n\tvoiceRugged: boolean;\n\tnullEvents: number;\n\tfakeEvents: number;\n\twarpedEvents: number;\n\tcomplicatedTimewarp: boolean;\n\tspaceTime: number;\n\tsurplusTime: number;\n\tdurationRate: number;\n\tbeamBroken: boolean;\n\tfractionalWarp: boolean;\n\tirregularWarpsN: number;\n\tirregularTick: boolean;\n\ttickTwist: number;\n\ttickOverlapped: boolean;\n\tgraceInVoice: boolean;\n\tgraceN: number;\n\tgraceDominant: boolean;\n\tperfect: boolean;\n\tfine: boolean;\n\terror: boolean;\n\tqualityScore: number;\n}\n\nconst BEAM_STATUS = {\n\t[StemBeam.Open]: 1,\n\t[StemBeam.Continue]: 0,\n\t[StemBeam.Close]: -1,\n};\n\nexport const evaluateMeasure = (measure: SpartitoMeasure): MeasureEvaluation => {\n\tif (!measure.regulated) return undefined;\n\n\tconst eventMap = measure.eventMap;\n\n\tconst events = measure.events.length;\n\tconst validEvents = measure.voices.flat(1).length;\n\tconst warpedEvents = measure.events.filter((e) => e.timeWarp).length;\n\tconst warps = new Set(\n\t\tmeasure.events.filter((e) => e.timeWarp && !(e.rest && e.division === 0)).map((e) => `${e.timeWarp!.numerator}/${e.timeWarp!.denominator}`)\n\t);\n\tconst irregularWarps = new Set(warps);\n\tirregularWarps.delete('2/3');\n\n\tconst fractionalWarp = measure.voices.some((voice) => {\n\t\tconst events = voice.map((id) => eventMap[id]);\n\t\tif (!events.some((e) => e.timeWarp)) return false;\n\n\t\tlet denominator = 0;\n\t\tlet tickSum = 0;\n\t\tlet eventN = 0;\n\t\treturn events.some((event, i) => {\n\t\t\tconst d = event.timeWarp ? event.timeWarp.denominator : 0;\n\t\t\tif (d !== denominator) {\n\t\t\t\tif (denominator > 0 && (tickSum % denominator || eventN < 2)) return true;\n\n\t\t\t\ttickSum = 0;\n\t\t\t\teventN = 0;\n\t\t\t}\n\n\t\t\tdenominator = d;\n\t\t\ttickSum += event.duration;\n\t\t\t++eventN;\n\n\t\t\tif (i === events.length - 1) {\n\t\t\t\tif (denominator > 0 && (tickSum % denominator || eventN < 2)) return true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\t});\n\n\tconst tickOverlapped = measure.voices.some((voice) => {\n\t\tconst events = voice.map((id) => eventMap[id]);\n\t\tlet tick = 0;\n\t\treturn events.some((event) => {\n\t\t\tif (event.grace) return false;\n\n\t\t\tif (event.tick < tick) return true;\n\t\t\ttick = event.tick + event.duration;\n\n\t\t\treturn false;\n\t\t});\n\t});\n\n\tconst fractionalTimes = new Set(measure.events.filter((e) => e.timeWarp && e.timeWarp.denominator > 3).map((e) => e.duration));\n\tconst complicatedTimewarp = fractionalTimes.size > 1;\n\n\tconst literalDuration = fractionMul(WHOLE_DURATION, measure.timeSignature);\n\tconst sigDuration = measure.doubtfulTimesig ? measure.duration : literalDuration;\n\n\tconst inVoiceEvents = measure.voices.flat(1).map((id) => eventMap[id]);\n\n\t// Guard: detect corrupted event data in voices (e.g. missing division, NaN tick)\n\tconst corruptedVoiceEvent = inVoiceEvents.some(\n\t\t(event) =>\n\t\t\t!event ||\n\t\t\t!Number.isFinite(event.tick) ||\n\t\t\t!Number.isFinite(event.division) ||\n\t\t\tevent.division < 0 ||\n\t\t\t!Number.isFinite(event.duration) ||\n\t\t\tevent.duration <= 0\n\t);\n\n\tconst overranged = inVoiceEvents.reduce((over, event) => over || event.tick < 0 || event.tick + event.duration > sigDuration, false);\n\tconst overDuration = measure.duration > literalDuration;\n\tconst graceInVoice = inVoiceEvents.some((event) => event.grace);\n\tconst graceN = measure.events.filter((e) => e.grace).length;\n\tconst graceDominant = graceN >= inVoiceEvents.length;\n\n\tconst irregularTick = inVoiceEvents.some((event) => {\n\t\tlet t = event.tick * 2 ** (event.division + 2);\n\t\tif (event.timeWarp) t *= event.timeWarp.denominator;\n\n\t\tif (!Number.isFinite(t)) return true;\n\n\t\tconst fragment = gcd(Math.round(t), WHOLE_DURATION);\n\t\t//if (fragment < WHOLE_DURATION)\n\t\t//\tconsole.log(\"irregularTick:\", event.tick, fragment);\n\t\treturn fragment < WHOLE_DURATION;\n\t});\n\n\tconst beamStatus = measure.voices!.map((voice) =>\n\t\tvoice.reduce(\n\t\t\t({ status, broken }, ei, evi) => {\n\t\t\t\tconst event = eventMap[ei];\n\t\t\t\tif (event.beam) {\n\t\t\t\t\t// allow an open beam at beginning of a voice\n\t\t\t\t\tif (evi === 0 && [StemBeam.Continue, StemBeam.Close].includes(event.beam)) status = 1;\n\n\t\t\t\t\tstatus += BEAM_STATUS[event.beam];\n\t\t\t\t\tbroken = broken || !(status >= 0 && status <= 1);\n\t\t\t\t} else if (!event.rest) broken = broken || status !== 0;\n\n\t\t\t\treturn { status, broken };\n\t\t\t},\n\t\t\t{ status: 0, broken: false }\n\t\t)\n\t);\n\tconst beamBroken = beamStatus.some(({ broken }) => broken); // allow an open beam at the end of a voice (status == 1)\n\tlet spaceTime = 0;\n\tlet surplusTime = 0;\n\tmeasure.voices!.forEach((voice) => {\n\t\tconst eventDuration = voice.reduce((sum, ei) => sum + eventMap[ei].duration, 0);\n\t\tspaceTime += Math.max(0, measure.duration - eventDuration);\n\t\tsurplusTime += Math.max(0, eventDuration - measure.duration);\n\t});\n\tspaceTime /= WHOLE_DURATION;\n\tconst nullEvents = measure.events.filter(\n\t\t(e) => !e.grace && !e.fullMeasureRest && !e.tremoloCatcher && (!e.predisposition || e.predisposition.fakeP < 0.1) && !Number.isFinite(e.tick)\n\t).length;\n\n\tconst fakeEvents = measure.events.filter(\n\t\t(event) => !event.fullMeasureRest && !event.grace && !event.tremoloCatcher && !inVoiceEvents.includes(event)\n\t).length;\n\n\tconst { voiceRugged } = measure.voices!.flat(1).reduce(\n\t\t(result, ei) => {\n\t\t\tif (!result.voiceRugged) {\n\t\t\t\tif (result.es.has(ei)) return { voiceRugged: true, es: result.es };\n\t\t\t}\n\n\t\t\tresult.es.add(ei);\n\n\t\t\treturn result;\n\t\t},\n\t\t{ voiceRugged: false, es: new Set() }\n\t);\n\n\tconst tickTwist = measure.tickTwist || 0;\n\n\tconst error =\n\t\tcorruptedVoiceEvent ||\n\t\ttickTwist >= 1 ||\n\t\ttickOverlapped ||\n\t\tvoiceRugged ||\n\t\tmeasure.tickRatesInStaves.some((rate) => rate < 0) ||\n\t\tnullEvents > 2 ||\n\t\t!measure.timeSignature ||\n\t\toverranged ||\n\t\tmeasure.duration > sigDuration ||\n\t\tmeasure.events.some((event) => event.timeWarp && event.timeWarp.numerator / event.timeWarp.denominator <= 0.5);\n\tconst perfect =\n\t\t!error &&\n\t\t!overDuration &&\n\t\ttickTwist < 0.2 &&\n\t\t!fractionalWarp &&\n\t\t!irregularWarps.size &&\n\t\t!irregularTick &&\n\t\t!spaceTime &&\n\t\t!surplusTime &&\n\t\t!!measure.voices!.length &&\n\t\t!beamBroken &&\n\t\t!graceInVoice &&\n\t\t!graceDominant &&\n\t\t(measure.duration === sigDuration || (Number.isFinite(measure.estimatedDuration) && measure.estimatedDuration <= sigDuration * 0.75));\n\tconst fine = !error && !overDuration && tickTwist < 0.3 && !fractionalWarp && !irregularTick && !surplusTime && !beamBroken && !graceInVoice;\n\n\tlet expectDuration = Math.min(sigDuration, WHOLE_DURATION * 2);\n\tif (Number.isFinite(measure.estimatedDuration)) expectDuration = Math.max(0, Math.min(expectDuration, measure.estimatedDuration));\n\tconst durationRate = measure.duration / expectDuration;\n\n\tlet qualityScore = 0;\n\tif (measure.patched && !corruptedVoiceEvent) qualityScore = 1;\n\telse if (!error) {\n\t\tconst spaceLoss = Math.tanh(Math.abs(spaceTime / Math.max(1, measure.voices.length)) * 1);\n\n\t\tlet expectDuration = Math.min(sigDuration, WHOLE_DURATION * 2);\n\t\tif (Number.isFinite(measure.estimatedDuration)) expectDuration = Math.max(0, Math.min(expectDuration, measure.estimatedDuration));\n\t\tconst durationLoss = expectDuration ? Math.max(0, 1 - durationRate) ** 2 : 0;\n\t\tconst warpsLoss = Math.tanh(irregularWarps.size);\n\n\t\tqualityScore = (1 - spaceLoss) * (1 - durationLoss) * (1 - warpsLoss) * (1 - tickTwist ** 2);\n\t}\n\n\treturn {\n\t\tevents,\n\t\tvalidEvents,\n\t\tvoiceRugged,\n\t\tnullEvents,\n\t\tfakeEvents,\n\t\twarpedEvents,\n\t\tcomplicatedTimewarp,\n\t\tspaceTime,\n\t\tsurplusTime,\n\t\tdurationRate,\n\t\tbeamBroken,\n\t\tfractionalWarp,\n\t\tirregularWarpsN: irregularWarps.size,\n\t\tirregularTick,\n\t\ttickTwist,\n\t\ttickOverlapped,\n\t\tgraceInVoice,\n\t\tgraceN,\n\t\tgraceDominant,\n\t\tperfect,\n\t\tfine,\n\t\terror,\n\t\tqualityScore,\n\t};\n};\n","//import { staffSvg } from \"@kelvinnxu/lotus\";\n\nimport { SemanticType, SemanticPoint, /*glyphSemanticMapping, glyphCenters,*/ SYSTEM_SEMANTIC_TYPES, Point } from './semanticPoint';\nimport { SimpleClass } from './aux_/typedJSON';\n\nclass SemanticGraph extends SimpleClass {\n\tstatic className = 'SemanticGraph';\n\n\tpoints: SemanticPoint[];\n\n\tconstructor(data?: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\t/*static fromSheetStaff(staff: staffSvg.SheetStaff, hashTable: {[key: string]: any}): SemanticGraph {\n\t\tconst tokens = [].concat(...staff.measures.map(measure => measure.tokens));\n\n\t\tconst voltaRightXs = [];\n\n\t\tconst points = [];\n\t\ttokens.forEach(token => {\n\t\t\tconst def = hashTable[token.hash];\n\n\t\t\tif (token.glyph) {\n\t\t\t\tconst glyph = token.glyph as string;\n\t\t\t\tlet semantic = null;\n\n\t\t\t\tconst isKey = /^\\\\key/.test(token.source) || token.is(\"KEY\");\n\t\t\t\tlet { x: cx = 0, y: cy = 0 } = glyphCenters[glyph] || { x: 0, y: 0 };\n\t\t\t\tif (token.scale2) {\n\t\t\t\t\tcx *= token.scale2.x;\n\t\t\t\t\tcy *= token.scale2.y;\n\t\t\t\t}\n\n\t\t\t\tlet x = token.x + cx;\n\t\t\t\tconst y = token.y + cy;\n\n\t\t\t\tswitch (glyph) {\n\t\t\t\tcase \"rests.0\":\n\t\t\t\t\tif (/^R/.test(token.source))\n\t\t\t\t\t\tsemantic = \"Rest0W\";\n\t\t\t\t\telse\n\t\t\t\t\t\tsemantic = \"Rest0\";\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.flat\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.natural\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.sharp\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dots.dot\":\n\t\t\t\t\tif (token.is(\"VOLTA\")) {\n\t\t\t\t\t\tx += 0.24;\t// dot glyph center X offset\n\t\t\t\t\t\tif (token.is(\"LEFT\"))\n\t\t\t\t\t\t\tsemantic = SemanticType.VoltaLeft;\n\t\t\t\t\t\telse if (token.is(\"RIGHT\")) {\n\t\t\t\t\t\t\tvoltaRightXs.push(x);\n\t\t\t\t\t\t\tsemantic = SemanticType.VoltaRight;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tsemantic = \"Dot\";\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"zero\":\n\t\t\t\tcase \"one\":\n\t\t\t\tcase \"two\":\n\t\t\t\tcase \"three\":\n\t\t\t\tcase \"four\":\n\t\t\t\tcase \"five\":\n\t\t\t\tcase \"six\":\n\t\t\t\tcase \"seven\":\n\t\t\t\tcase \"eight\":\n\t\t\t\tcase \"nine\": {\n\t\t\t\t\tconst upper = glyph[0].toUpperCase() + glyph.substr(1);\n\t\t\t\t\tsemantic = token.is(\"TIME_SIG\") ? \"Timesig\" + upper : upper;\n\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t}\n\n\t\t\t\tif (semantic) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (token.is(\"TEMPO_NOTEHEAD\")) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.TempoNotehead,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// grace noteheads\n\t\t\t\tif (token.is(\"NOTEHEAD\") && Number.isFinite(token.scale) && token.scale < 0.75) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.GraceNotehead,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// semantic from token symbol\n\t\t\tlet semantic = null;\n\t\t\tconst cx = 0;\n\t\t\tlet cy = 0;\n\t\t\tif (token.is(\"OCTAVE\")) {\n\t\t\t\tif (token.is(\"_8\")) {\n\t\t\t\t\tsemantic = SemanticType.OctaveShift8;\n\t\t\t\t\tcy = token.is(\"B\") ? -0.7512 : -0.7256;\n\t\t\t\t}\n\t\t\t\telse if (token.is(\"CLOSE\")) {\n\t\t\t\t\tsemantic = SemanticType.OctaveShift0;\n\t\t\t\t\tcy = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (/^flags/.test(token.glyph)) {\n\t\t\t\tlet direction = 0;\n\t\t\t\tif (/\\.u\\d/.test(token.glyph))\n\t\t\t\t\tdirection = 1;\n\t\t\t\tif (/\\.d\\d/.test(token.glyph))\n\t\t\t\t\tdirection = -1;\n\t\t\t\tif (direction) {\n\t\t\t\t\tconst [n] = token.glyph.match(/\\d+/);\n\t\t\t\t\tconst flagCount = Number(n) - 2;\n\t\t\t\t\t//console.log(\"flags:\", token.glyph, flagCount);\n\t\t\t\t\tfor (let i = 0; i < flagCount; ++i) {\n\t\t\t\t\t\tconst y = token.y + (i + 0.5) * direction;\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.Flag3,\n\t\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t\t//console.log(\"flags.1:\", token.x, y);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (token.is(\"SLUR\")) {\n\t\t\t\tconst d = def && def.d;\n\t\t\t\tif (d) {\n\t\t\t\t\tconst numbers = d.match(/-?[\\d.]+/g).map(Number);\n\t\t\t\t\t//console.log(\"slur:\", numbers);\n\t\t\t\t\tconst x1 = token.x + numbers[0];\n\t\t\t\t\tconst y1 = token.y + numbers[1];\n\t\t\t\t\tconst x2 = token.x + numbers[6];\n\t\t\t\t\tconst y2 = token.y + numbers[7];\n\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.SlurBegin,\n\t\t\t\t\t\tx: x1,\n\t\t\t\t\t\ty: y1,\n\t\t\t\t\t});\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.SlurEnd,\n\t\t\t\t\t\tx: x2,\n\t\t\t\t\t\ty: y2,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (token.is(\"NOTE_STEM\")) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.vline_Stem,\n\t\t\t\t\tx: token.x + def.width / 2,\n\t\t\t\t\ty: token.y,\n\t\t\t\t\textension: {\n\t\t\t\t\t\ty1: token.y,\n\t\t\t\t\t\ty2: token.y + token.height,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (token.is(\"TEXT\") || token.is(\"CHORD_TEXT\")) {\n\t\t\t\tif (/\\S/.test(token.text)) {\n\t\t\t\t\t// NOTE: text rect computation is delayed to sheet rendering\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.rect_Text,\n\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\ty: token.y,\n\t\t\t\t\t\textension: {\n\t\t\t\t\t\t\tindex: token.index,\n\t\t\t\t\t\t\ttext: token.text,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (semantic) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic,\n\t\t\t\t\tx: token.x + cx,\n\t\t\t\t\ty: token.y + cy,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// beams\n\t\tconst stems = tokens.filter(token => token.is(\"NOTE_STEM\")).map(stem => ({\n\t\t\tx: stem.x + stem.width / 2,\n\t\t\ty1: stem.y,\n\t\t\ty2: stem.y + stem.height,\n\t\t}));\n\t\tconst beams = tokens.filter(token => token.is(\"NOTETAIL\") && token.is(\"JOINT\"))\n\t\t\t.map(beam => {\n\t\t\t\tconst def = hashTable[beam.hash];\n\t\t\t\tconst points = def && def.points;\n\t\t\t\tif (points) {\n\t\t\t\t\tconst floats = points.split(\" \").map(Number);\n\t\t\t\t\tconst x1 = beam.x + floats[4];\n\t\t\t\t\tconst x2 = beam.x + floats[0];\n\t\t\t\t\tconst y1 = beam.y + (floats[5] + floats[7]) / 2;\n\t\t\t\t\tconst y2 = beam.y + (floats[1] + floats[3]) / 2;\n\t\t\t\t\tconst k = (y2 - y1) / (x2 - x1);\n\n\t\t\t\t\treturn { x1, x2, y1, y2, k, capital: beam.is(\"CAPITAL_BEAM\") };\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}).filter(Boolean);\n\t\t//console.log(\"beams:\", beams);\n\t\tbeams.forEach(beam => {\n\t\t\tconst innerStems = stems.filter(stem => stem.x > beam.x1 - 0.2 && stem.x < beam.x2 + 0.2);\n\t\t\t//console.log(\"innerStems:\", beam, innerStems);\n\n\t\t\tlet lines = 0;\n\t\t\tinnerStems.forEach(stem => {\n\t\t\t\tconst beamY = beam.y1 + (stem.x - beam.x1) * beam.k;\n\t\t\t\t//console.log(\"beamY:\", beamY, Math.min(Math.abs(beamY - beam.y1), Math.abs(beamY - beam.y2)));\n\t\t\t\tif (beamY >= stem.y1 - 0.1 && beamY <= stem.y2 + 0.1) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.Flag3,\n\t\t\t\t\t\tx: stem.x,\n\t\t\t\t\t\ty: beamY,\n\t\t\t\t\t});\n\n\t\t\t\t\t++lines;\n\n\t\t\t\t\t// beam semantics\n\t\t\t\t\tif (beam.capital) {\n\t\t\t\t\t\tlet semantic = SemanticType.BeamContinue;\n\t\t\t\t\t\tif (Math.abs(stem.x - beam.x1) < 0.2)\n\t\t\t\t\t\t\tsemantic = SemanticType.BeamLeft;\n\t\t\t\t\t\telse if (Math.abs(stem.x - beam.x2) < 0.2)\n\t\t\t\t\t\t\tsemantic = SemanticType.BeamRight;\n\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\t\tx: stem.x,\n\t\t\t\t\t\t\ty: beamY,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!lines)\n\t\t\t\tconsole.warn(\"empty beam:\", beam, innerStems, stems);\n\t\t\t//else if (lines < 2)\n\t\t\t//\tconsole.debug(\"single beam:\", beam, innerStems, stems);\n\t\t});\n\n\t\t// wedges (crescendo & decrescendo)\n\t\tconst crescendos = tokens.filter(token => token.is(\"WEDGE CRESCENDO TOP\"));\n\t\tconst crescendoBottoms = tokens.filter(token => token.is(\"WEDGE CRESCENDO BOTTOM\"));\n\t\tconst decrescendos = tokens.filter(token => token.is(\"WEDGE DECRESCENDO TOP\"));\n\t\tconst decrescendoBottoms = tokens.filter(token => token.is(\"WEDGE DECRESCENDO BOTTOM\"));\n\t\tcrescendos.forEach(line => {\n\t\t\tconst partner = crescendoBottoms.find(b => b.x === line.x && Math.abs(b.y - line.y) < 0.06);\n\n\t\t\tif (partner) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.CrescendoBegin,\n\t\t\t\t\tx: line.x,\n\t\t\t\t\ty: line.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.log(\"unpaired crescendo:\", line, crescendoBottoms);\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.CrescendoEnd,\n\t\t\t\tx: line.x + line.target.x,\n\t\t\t\ty: line.y + line.target.y,\n\t\t\t});\n\t\t});\n\t\tdecrescendos.forEach(line => {\n\t\t\tconst partner = decrescendoBottoms.find(b => b.x + b.target.x === line.x + line.target.x && Math.abs(b.y + b.target.y - (line.y + line.target.y)) < 0.06);\n\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.DecrescendoBegin,\n\t\t\t\tx: line.x,\n\t\t\t\ty: line.y,\n\t\t\t});\n\t\t\tif (partner) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.DecrescendoEnd,\n\t\t\t\t\tx: line.x + line.target.x,\n\t\t\t\t\ty: line.y + line.target.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.log(\"unpaired decrescendo:\", line, decrescendoBottoms);\n\t\t});\n\n\t\t// TODO: volta alternative\n\n\t\t// measure bars\n\t\tconst measureSeparators = staff.tokens.filter(token => token.is(\"MEASURE_SEPARATOR\"));\n\t\tconst singleBars = [];\n\t\tconst groupBars = [];\n\n\t\tfor (let i = 0; i < measureSeparators.length; ++i) {\n\t\t\tconst bar = measureSeparators[i];\n\t\t\tconst nextBar = measureSeparators[i + 1];\n\t\t\tconst inteval = nextBar ? nextBar.x - bar.x : Infinity;\n\n\t\t\tif (inteval < 1) {\n\t\t\t\tgroupBars.push([bar, nextBar]);\n\t\t\t\t++i;\n\t\t\t}\n\t\t\telse\n\t\t\t\tsingleBars.push(bar);\n\t\t};\n\t\t//console.log(\"bars:\", singleBars, groupBars);\n\n\t\tsingleBars.forEach(bar => {\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.vline_BarMeasure,\n\t\t\t\tx: bar.x + bar.sw / 2,\n\t\t\t\ty: 0,\n\t\t\t\textension: {\n\t\t\t\t\ty1: -2,\n\t\t\t\t\ty2: 2,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tgroupBars.forEach(group => {\n\t\t\tlet x = (group[0].x + group[1].x) / 2;\n\t\t\tconst bold0 = group[0].is(\"BOLD\");\n\t\t\tconst bold1 = group[1].is(\"BOLD\");\n\n\t\t\tlet semantic = null;\n\t\t\tif (!bold0 && bold1) {\n\t\t\t\tx = group[0].x;\n\n\t\t\t\tif (!voltaRightXs.some(vx => x - vx < 2))\n\t\t\t\t\tsemantic = SemanticType.vline_BarTerminal;\n\t\t\t}\n\t\t\telse if (bold0 && !bold1)\n\t\t\t\tx = group[1].x;\n\t\t\telse if (!bold0 && !bold1)\n\t\t\t\tsemantic = SemanticType.vline_BarSegment;\n\n\t\t\t//console.log(\"group:\", group[0].x, group[1].x, x);\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.vline_BarMeasure,\n\t\t\t\tx,\n\t\t\t\ty: 0,\n\t\t\t\textension: {\n\t\t\t\t\ty1: -2,\n\t\t\t\t\ty2: 2,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tif (semantic) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic,\n\t\t\t\t\tx,\n\t\t\t\t\ty: 0,\n\t\t\t\t\textension: {\n\t\t\t\t\t\ty1: -2,\n\t\t\t\t\t\ty2: 2,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst graph = new SemanticGraph();\n\t\tgraph.points = points;\n\n\t\treturn graph;\n\t}*/\n\n\tstatic fromPoints(points: SemanticPoint[] = []): SemanticGraph {\n\t\tconst graph = new SemanticGraph();\n\t\tgraph.points = points;\n\n\t\treturn graph;\n\t}\n\n\tgetLayer(semantic: SemanticType): Point[] {\n\t\treturn this.points.filter((p) => p.semantic === semantic);\n\t}\n\n\tgetConfidentLayer(semantic: SemanticType, threshold: number): Point[] {\n\t\treturn this.points.filter((p) => p.semantic === semantic && (!Number.isFinite(p.confidence) || p.confidence >= threshold));\n\t}\n\n\tgetSystemPoints(): SemanticPoint[] {\n\t\treturn this.points.filter((point) => SYSTEM_SEMANTIC_TYPES.includes(point.semantic));\n\t}\n\n\tgetStaffPoints(): SemanticPoint[] {\n\t\treturn this.points.filter((point) => !SYSTEM_SEMANTIC_TYPES.includes(point.semantic));\n\t}\n\n\toffset(x: number, y: number): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tpoint.x += x;\n\t\t\tpoint.y += y;\n\t\t});\n\t}\n\n\tscale(factor: number): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tpoint.x *= factor;\n\t\t\tpoint.y *= factor;\n\t\t});\n\t}\n\n\t// multipy 3x2 matrix\n\ttransform(matrix: [number, number][]): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tlet x = point.x * matrix[0][0] + point.y * matrix[1][0] + matrix[2][0];\n\t\t\tconst y = point.x * matrix[0][1] + point.y * matrix[1][1] + matrix[2][1];\n\n\t\t\tif (point.extension) {\n\t\t\t\tif (Number.isFinite(point.extension.y1)) {\n\t\t\t\t\tconst y1 = point.x * matrix[0][1] + point.extension.y1 * matrix[1][1] + matrix[2][1];\n\t\t\t\t\tconst y2 = point.x * matrix[0][1] + point.extension.y2 * matrix[1][1] + matrix[2][1];\n\t\t\t\t\tx = point.x * matrix[0][0] + (point.extension.y1 + point.extension.y2) * 0.5 * matrix[1][0] + matrix[2][0];\n\n\t\t\t\t\tpoint.extension.y1 = y1;\n\t\t\t\t\tpoint.extension.y2 = y2;\n\t\t\t\t}\n\n\t\t\t\tif (Number.isFinite(point.extension.width)) {\n\t\t\t\t\tconst scaling = Math.sqrt(matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]);\n\t\t\t\t\tpoint.extension.width *= scaling;\n\t\t\t\t\tpoint.extension.height *= scaling;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpoint.x = x;\n\t\t\tpoint.y = y;\n\t\t});\n\t}\n}\n\nexport { SemanticGraph };\n","import { SimpleClass } from './aux_/typedJSON';\nimport {\n\tAdditionalLineStack,\n\tChordColumn,\n\tChordRect,\n\tEventFeature,\n\tEventMeasureColumn,\n\tEventSystem,\n\tPageLayout,\n\tRect,\n\tSourceImageFile,\n\tTextType,\n\tVLine,\n} from './interfaces';\nimport { DummyLogger, Logger } from './logger';\nimport { SemanticGraph } from './semanticGraph';\nimport { hashPageSemanticPoint, hashSemanticPoint, NOTEHEAD_WIDTHS, SemanticPoint, SemanticType } from './semanticPoint';\nimport { AccessoryDirection, ContextedTerm, ContextType, EventTerm, GraceType, MarkTerm, TempoTerm, TremoloLink } from './term';\nimport {\n\tTextToken,\n\tToken,\n\tTokenAccessories,\n\tTokenBeams,\n\tTokenClefs,\n\tTokenDirectionless,\n\tTokenDots,\n\tTokenFlags,\n\tTokenNoteheads,\n\tTokenRests,\n\tTokenTimesigs,\n\tTokenType,\n\tTOKEN_Y_FIXED,\n\tTOKEN_Y_ROUND,\n} from './token';\nimport { distance2D, roundNumber, solveOverlapping, trans23 } from './utils';\n\ntype ChordsFeeder = (si: number, mi: number) => ChordColumn[];\ntype ColumnProcessor = (column: EventMeasureColumn) => EventMeasureColumn;\n\nconst CHORD_X_TOLERANCE = 0.2;\n//const EVENT_X_TOLERANCE = 0.8;\n\nconst STEM_LENGTH_MAX = 6;\n\nconst INDENT_THRESHOLD = 2;\n\nconst MEASURE_SEMANTICS = [\n\tSemanticType.ClefG,\n\tSemanticType.ClefF,\n\tSemanticType.ClefC,\n\tSemanticType.TimesigC44,\n\tSemanticType.TimesigC22,\n\tSemanticType.TimesigZero,\n\tSemanticType.TimesigOne,\n\tSemanticType.TimesigTwo,\n\tSemanticType.TimesigThree,\n\tSemanticType.TimesigFour,\n\tSemanticType.TimesigFive,\n\tSemanticType.TimesigSix,\n\tSemanticType.TimesigSeven,\n\tSemanticType.TimesigEight,\n\tSemanticType.TimesigNine,\n\tSemanticType.OctaveShift8va,\n\tSemanticType.OctaveShift8vb,\n\tSemanticType.OctaveShift0,\n\tSemanticType.Zero,\n\tSemanticType.One,\n\tSemanticType.Two,\n\tSemanticType.Three,\n\tSemanticType.Four,\n\tSemanticType.Five,\n\tSemanticType.Six,\n\tSemanticType.Seven,\n\tSemanticType.Eight,\n\tSemanticType.Nine,\n\tSemanticType.AccNatural,\n\tSemanticType.AccSharp,\n\tSemanticType.AccDoublesharp,\n\tSemanticType.AccFlat,\n\tSemanticType.AccFlatflat,\n\tSemanticType.NoteheadS0,\n\tSemanticType.NoteheadS1,\n\tSemanticType.NoteheadS2,\n\tSemanticType.NoteheadS1stemU,\n\tSemanticType.NoteheadS1stemD,\n\tSemanticType.NoteheadS2stemU,\n\tSemanticType.NoteheadS2stemD,\n\tSemanticType.Rest0,\n\tSemanticType.Rest1,\n\tSemanticType.Rest2,\n\tSemanticType.Rest3,\n\tSemanticType.Rest4,\n\tSemanticType.Rest5,\n\tSemanticType.Rest6,\n\tSemanticType.Rest0W,\n\tSemanticType.RestM1,\n\tSemanticType.SlurBegin,\n\tSemanticType.SlurEnd,\n\tSemanticType.Dot,\n\tSemanticType.f,\n\tSemanticType.p,\n\tSemanticType.m,\n\tSemanticType.n,\n\tSemanticType.r,\n\tSemanticType.s,\n\tSemanticType.z,\n\tSemanticType.ScriptFermata,\n\tSemanticType.ScriptShortFermata,\n\tSemanticType.ScriptSforzato,\n\tSemanticType.ScriptStaccato,\n\tSemanticType.ScriptStaccatissimo,\n\tSemanticType.ScriptTurn,\n\tSemanticType.ScriptTrill,\n\tSemanticType.ScriptSegno,\n\tSemanticType.ScriptCoda,\n\tSemanticType.ScriptArpeggio,\n\tSemanticType.ScriptPrall,\n\tSemanticType.ScriptMordent,\n\tSemanticType.ScriptMarcato,\n\tSemanticType.ScriptTenuto,\n\tSemanticType.ScriptPortato,\n\tSemanticType.PedalStar,\n\tSemanticType.PedalPed,\n\tSemanticType.GraceNotehead,\n\tSemanticType.BeamLeft,\n\tSemanticType.BeamRight,\n\tSemanticType.BeamContinue,\n\tSemanticType.CrescendoBegin,\n\tSemanticType.CrescendoEnd,\n\tSemanticType.DecrescendoBegin,\n\tSemanticType.DecrescendoEnd,\n\tSemanticType.TremoloLeft,\n\tSemanticType.TremoloRight,\n\tSemanticType.TremoloMiddle,\n];\n\nconst STAFF_LINED_SEMANTICS = [\n\tSemanticType.AccNatural,\n\tSemanticType.AccSharp,\n\tSemanticType.AccDoublesharp,\n\tSemanticType.AccFlat,\n\tSemanticType.AccFlatflat,\n\tSemanticType.NoteheadS0,\n\tSemanticType.NoteheadS1,\n\tSemanticType.NoteheadS2,\n\tSemanticType.NoteheadS1stemU,\n\tSemanticType.NoteheadS1stemD,\n\tSemanticType.NoteheadS2stemU,\n\tSemanticType.NoteheadS2stemD,\n];\n\nconst LINED_INTERVAL_SEMANTICS = [SemanticType.SignLined, SemanticType.SignInterval];\n\nconst NOTEHEAD_FOR_STEM_SEMANTICS = [SemanticType.NoteheadS1, SemanticType.NoteheadS2];\n\nconst KEYACC_CANDIDATE_SEMANTICS = {\n\tAccSharp: TokenType.KeySharp,\n\tAccNatural: TokenType.KeyNatural,\n\tAccFlat: TokenType.KeyFlat,\n};\n\nconst NOTEHEAD_TABLE: { [key: string]: { [key: string]: SemanticType } } = {\n\t[SemanticType.NoteheadS1]: {\n\t\tup: SemanticType.NoteheadS1stemU,\n\t\tdown: SemanticType.NoteheadS1stemD,\n\t},\n\t[SemanticType.NoteheadS2]: {\n\t\tup: SemanticType.NoteheadS2stemU,\n\t\tdown: SemanticType.NoteheadS2stemD,\n\t},\n};\n\nconst REST_SEMANTICS = [\n\tSemanticType.Rest0,\n\tSemanticType.Rest1,\n\tSemanticType.Rest2,\n\tSemanticType.Rest3,\n\tSemanticType.Rest4,\n\tSemanticType.Rest5,\n\tSemanticType.Rest6,\n];\n\nconst TOKEN_TO_STEMBEAM = {\n\t[TokenType.BeamLeft]: 'Open',\n\t[TokenType.BeamRight]: 'Close',\n\t[TokenType.BeamContinue]: 'Continue',\n};\n\nconst TEXT_TYPE_ALIAS = {\n\tAlter1: TextType.Alternation1,\n\tAlter2: TextType.Alternation2,\n};\n\ninterface StaffPosition {\n\ty: number;\n\tradius: number;\n}\n\ninterface TextArea {\n\tscore: number;\n\tcx: number;\n\tcy: number;\n\twidth: number;\n\theight: number;\n\ttext: string;\n\ttype: string;\n\ttheta: number;\n\tfeature_dict: Record;\n}\n\ntype Stem = VLine & { direction: 'u' | 'd' };\n\nconst noteheadsXPivot = (xs: number[], direction: 'u' | 'd' | null): number => {\n\tswitch (xs.length) {\n\t\tcase 0:\n\t\t\treturn undefined;\n\n\t\tcase 1:\n\t\t\treturn xs[0];\n\n\t\tcase 2:\n\t\t\treturn direction === 'u' ? Math.min(...xs) : Math.max(...xs);\n\n\t\tdefault: {\n\t\t\tconst mean = xs.reduce((sum, x) => sum + x, 0) / xs.length;\n\t\t\txs.sort((x1, x2) => Math.abs(x1 - mean) - Math.abs(x2 - mean));\n\n\t\t\treturn noteheadsXPivot(xs.slice(0, xs.length - 1), direction);\n\t\t}\n\t}\n};\n\nconst noteheadsPivot = (nhs: Token[]): number =>\n\tnoteheadsXPivot(\n\t\tnhs.map((nh) => (Number.isFinite(nh.pivotX) ? nh.pivotX : nh.x)),\n\t\tnhs[0].direction\n\t);\n\nclass Measure extends SimpleClass {\n\tstatic className = 'Measure';\n\tstatic blackKeys = ['tokens', 'antiTokens'];\n\n\tleft: number;\n\twidth: number;\n\theight: number;\n\n\talternative: boolean;\n\n\ttokens: Token[];\n\tantiTokens: Token[];\n\n\tbarTypes: Record;\n\n\tconstructor(data?: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.tokens = this.tokens || [];\n\t\tthis.antiTokens = this.antiTokens || [];\n\t\tthis.barTypes = this.barTypes || {};\n\t}\n\n\tget right(): number {\n\t\treturn this.left + this.width;\n\t}\n\n\tget noteheads(): Token[] {\n\t\treturn this.tokens.filter((t) => t.isNotehead).sort((n1, n2) => n1.x - n2.x);\n\t}\n\n\tget chordRects(): ChordRect[] {\n\t\tconst noteheads = this.noteheads.filter((nh) =>\n\t\t\t[TokenType.NoteheadS0, TokenType.NoteheadS1stemU, TokenType.NoteheadS2stemU, TokenType.NoteheadS1stemD, TokenType.NoteheadS2stemD].includes(nh.type)\n\t\t);\n\n\t\tlet nulN = 0;\n\n\t\tconst nhmap: Record = noteheads.reduce((map, nh) => {\n\t\t\tconst tip = nh.tip ? `${nh.tip.x}|${nh.tip.y}` : `nul${nulN}`;\n\t\t\tlet key = `${nh.type}|${tip}`;\n\n\t\t\tif (!nh.tip && map[key]) {\n\t\t\t\tif (!map[key].some((hh) => Math.abs(hh.x - nh.x) < NOTEHEAD_WIDTHS.NoteheadS0)) {\n\t\t\t\t\t++nulN;\n\t\t\t\t\tkey = `${nh.type}|nul${nulN}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmap[key] = map[key] || [];\n\t\t\tmap[key].push(nh);\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn Object.values(nhmap).map((nhs) => {\n\t\t\tconst left = Math.min(...nhs.map((nh) => nh.x));\n\t\t\tconst right = Math.max(...nhs.map((nh) => nh.x));\n\t\t\tconst top = Math.min(...nhs.map((nh) => nh.y));\n\t\t\tconst bottom = Math.max(...nhs.map((nh) => nh.y));\n\n\t\t\tconst nh0 = nhs[0];\n\n\t\t\tconst stemX = nh0 && nh0.tip ? nh0.tip.x : left;\n\n\t\t\tlet x = left;\n\t\t\tlet width = right - left;\n\t\t\tlet stemDirection = null;\n\n\t\t\tswitch (nh0.type) {\n\t\t\t\tcase TokenType.NoteheadS0:\n\t\t\t\t\tx -= NOTEHEAD_WIDTHS.NoteheadS0 / 2;\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS0;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase TokenType.NoteheadS1stemU:\n\t\t\t\tcase TokenType.NoteheadS2stemU:\n\t\t\t\t\tstemDirection = 'u';\n\t\t\t\t\tx -= NOTEHEAD_WIDTHS.NoteheadS1;\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase TokenType.NoteheadS1stemD:\n\t\t\t\tcase TokenType.NoteheadS2stemD:\n\t\t\t\t\tstemDirection = 'd';\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tx,\n\t\t\t\twidth,\n\t\t\t\tstemX,\n\t\t\t\tstemDirection,\n\t\t\t\ttop,\n\t\t\t\tbottom,\n\t\t\t\ttip: nh0.tip,\n\t\t\t};\n\t\t});\n\t}\n\n\tget timeWarped(): boolean {\n\t\treturn this.tokens && this.tokens.some((token) => token.timeWarped);\n\t}\n\n\tget additionalLines(): AdditionalLineStack[] {\n\t\tconst chords = this.getChords();\n\t\tconst up = chords\n\t\t\t.filter((chord) => chord.ys.some((y) => y <= -3))\n\t\t\t.map((chord) => ({\n\t\t\t\tleft: chord.left,\n\t\t\t\tright: chord.right,\n\t\t\t\tn: Math.ceil(Math.min(...chord.ys)) + 2,\n\t\t\t}));\n\t\tconst down = chords\n\t\t\t.filter((chord) => chord.ys.some((y) => y >= 3))\n\t\t\t.map((chord) => ({\n\t\t\t\tleft: chord.left,\n\t\t\t\tright: chord.right,\n\t\t\t\tn: Math.floor(Math.max(...chord.ys)) - 2,\n\t\t\t}));\n\n\t\treturn [...up, ...down].map((stack) => ({\n\t\t\tleft: stack.left - 0.28,\n\t\t\tright: stack.right + 0.28,\n\t\t\tn: stack.n,\n\t\t}));\n\t}\n\n\tgetChords(): ChordColumn[] {\n\t\tconst flags = this.tokens.filter((t) => TokenFlags.includes(t.type));\n\t\tconst dots = this.tokens.filter((t) => TokenDots.includes(t.type));\n\t\tconst beams = this.tokens.filter((t) => TokenBeams.includes(t.type));\n\n\t\tconst chordRcs = this.chordRects\n\t\t\t.map((rect) => {\n\t\t\t\tconst noteheads = this.noteheads.filter(\n\t\t\t\t\t(nh) =>\n\t\t\t\t\t\tnh.direction === rect.stemDirection &&\n\t\t\t\t\t\tnh.left >= rect.x &&\n\t\t\t\t\t\tnh.right <= rect.x + rect.width + CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tnh.y >= rect.top &&\n\t\t\t\t\t\tnh.y <= rect.bottom\n\t\t\t\t);\n\t\t\t\tnoteheads.sort((n1, n2) => n2.y - n1.y);\n\t\t\t\tconst ys = noteheads.map((nh) => nh.y);\n\t\t\t\tconst noteIds = noteheads.map((nh) => nh.id);\n\n\t\t\t\tconst division = noteheads.reduce((d, nh) => Math.max(d, nh.division), 0);\n\n\t\t\t\treturn {\n\t\t\t\t\trect,\n\t\t\t\t\tleft: rect.x,\n\t\t\t\t\tright: rect.x + rect.width,\n\t\t\t\t\tpivotX: noteheadsPivot(noteheads),\n\t\t\t\t\tys,\n\t\t\t\t\ttip: rect.tip,\n\t\t\t\t\tnoteIds,\n\t\t\t\t\tdivision,\n\t\t\t\t\tdots: null,\n\t\t\t\t\trest: false,\n\t\t\t\t\tstemDirection: rect.stemDirection,\n\t\t\t\t\tbeam: null,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.sort((c1, c2) => c2.left - c1.left);\n\n\t\tconst accs = new Set();\n\n\t\tconst chords = chordRcs.map(({ rect, ...chord }) => {\n\t\t\tif (chord.division >= 1) {\n\t\t\t\t// NOTE: notehead-s1 may have flags too\n\t\t\t\tconst flagRange = [rect.bottom, rect.top];\n\t\t\t\tswitch (rect.stemDirection) {\n\t\t\t\t\tcase 'u':\n\t\t\t\t\t\tflagRange[0] = rect.tip ? rect.tip.y - 0.2 : rect.top - STEM_LENGTH_MAX - 0.5;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tflagRange[1] = rect.tip ? rect.tip.y + 0.2 : rect.bottom + STEM_LENGTH_MAX + 0.5;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst nearbyFlags = flags.filter(\n\t\t\t\t\t(flag) =>\n\t\t\t\t\t\t!accs.has(flag.id) &&\n\t\t\t\t\t\tflag.x > rect.stemX - CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tflag.x < rect.stemX + CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tflag.y > flagRange[0] &&\n\t\t\t\t\t\tflag.y < flagRange[1]\n\t\t\t\t);\n\t\t\t\tchord.division = nearbyFlags.reduce((d, flag) => Math.max(d, flag.division), chord.division);\n\n\t\t\t\tnearbyFlags.forEach((flag) => accs.add(flag.id));\n\n\t\t\t\tif (chord.division >= 3) {\n\t\t\t\t\tconst beamToken = rect.tip && beams.find((t) => Math.abs(rect.tip.x - t.x) < 0.3 && Math.abs(rect.tip.y - t.y) < 0.7);\n\t\t\t\t\tif (beamToken) chord.beam = TOKEN_TO_STEMBEAM[beamToken.type];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst nearbyDots = dots.filter(\n\t\t\t\t(dot) =>\n\t\t\t\t\t!accs.has(dot.id) &&\n\t\t\t\t\tdot.x > rect.x + rect.width - 0.2 &&\n\t\t\t\t\tdot.x < rect.x + rect.width + 1.2 &&\n\t\t\t\t\tdot.y > rect.top - 1 &&\n\t\t\t\t\tdot.y <= rect.bottom + 0.5\n\t\t\t);\n\t\t\tchord.dots = nearbyDots.reduce((v, dot) => Math.max(v, dot.dots), 0);\n\n\t\t\tnearbyDots.forEach((dot) => accs.add(dot.id));\n\n\t\t\treturn chord;\n\t\t});\n\n\t\tchords.reverse();\n\n\t\treturn chords;\n\t}\n\n\tgetRests(): ChordColumn[] {\n\t\tconst rests = this.tokens.filter((t) => TokenRests.includes(t.type));\n\t\tconst dots = this.tokens.filter((t) => TokenDots.includes(t.type));\n\n\t\treturn rests.map((rest) => {\n\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > rest.x + 0.5 && dot.x < rest.x + 2 && dot.y > rest.y - 1 && dot.y < rest.y + 0.5);\n\t\t\tconst dotValue = nearbyDots.reduce((v, dot) => Math.max(v, dot.dots), 0);\n\n\t\t\treturn {\n\t\t\t\tleft: rest.x - 0.75,\n\t\t\t\tright: rest.x + 0.75,\n\t\t\t\tpivotX: rest.x,\n\t\t\t\trest: true,\n\t\t\t\tys: [rest.y],\n\t\t\t\tnoteIds: [rest.id],\n\t\t\t\tdots: dotValue,\n\t\t\t\tdivision: rest.division,\n\t\t\t\tstemDirection: null,\n\t\t\t};\n\t\t});\n\t}\n\n\tgetEvents(): ChordColumn[] {\n\t\treturn [...this.getChords(), ...this.getRests()].sort((e1, e2) => e1.left - e2.left);\n\t}\n\n\tgetContexts(fields = {}): ContextedTerm[] {\n\t\treturn this.tokens\n\t\t\t.filter((t) => t.isContexted)\n\t\t\t.sort((n1, n2) => n1.x - n2.x)\n\t\t\t.map(\n\t\t\t\t(token) =>\n\t\t\t\t\tnew ContextedTerm({\n\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\ty: token.y,\n\t\t\t\t\t\ttokenType: token.type,\n\t\t\t\t\t\t...fields,\n\t\t\t\t\t})\n\t\t\t);\n\t}\n\n\tassignAccessoriesOnEvents(events: ChordColumn[]): void {\n\t\tevents.forEach((event) => (event.accessories = event.accessories || []));\n\n\t\tconst accessories = this.tokens.filter((token) => TokenAccessories.includes(token.type));\n\t\t//console.log(\"accessories:\", accessories);\n\t\taccessories.forEach((accessory) => {\n\t\t\tconst relatedEvents = events.filter((event) => accessory.x > event.left - 1 && accessory.x < event.right + 1);\n\n\t\t\tif (relatedEvents.length > 0) {\n\t\t\t\tlet owner = relatedEvents[0];\n\t\t\t\tif (relatedEvents.length > 1) {\n\t\t\t\t\towner = relatedEvents\n\t\t\t\t\t\t.map((event) => ({ event, d: Math.min(...event.ys.map((y) => Math.abs(y - accessory.y))) }))\n\t\t\t\t\t\t.sort(({ d: d1 }, { d: d2 }) => d1 - d2)\n\t\t\t\t\t\t.map(({ event }) => event)[0];\n\t\t\t\t}\n\t\t\t\t//console.log(\"relatedEvents:\", accessory, owner);\n\n\t\t\t\tlet direction = accessory.y > Math.max(...owner.ys) ? AccessoryDirection.Down : AccessoryDirection.Up;\n\t\t\t\tif (TokenDirectionless.includes(accessory.type)) direction = null;\n\n\t\t\t\towner.accessories.push({\n\t\t\t\t\ttype: accessory.type,\n\t\t\t\t\tid: accessory.id,\n\t\t\t\t\tdirection,\n\t\t\t\t\tx: accessory.x - owner.left,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"alone accessory:\", accessory.type);\n\t\t});\n\n\t\t// arpeggio\n\t\tconst sortEvents = [...events];\n\t\tsortEvents.sort((e1, e2) => e1.left - e2.left);\n\n\t\tconst arpeggios = this.tokens.filter((token) => token.type === TokenType.ScriptArpeggio);\n\t\tarpeggios.forEach((arpeggio) => {\n\t\t\tconst owner = sortEvents.find(\n\t\t\t\t(event) => arpeggio.x < event.left && event.ys.some((y) => y < arpeggio.y + 0.25) && event.ys.some((y) => y > arpeggio.y)\n\t\t\t);\n\t\t\t//const owner = sortEvents.find(event => event.left - leftMost.left < 2 && event.ys.some(y => Math.abs(y - arpeggio.y + 0.25) < 0.5));\n\t\t\tif (owner) {\n\t\t\t\towner.accessories.push({\n\t\t\t\t\ttype: TokenType.ScriptArpeggio,\n\t\t\t\t\tid: arpeggio.id,\n\t\t\t\t\tx: arpeggio.x - owner.left,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"alone arpeggio:\", arpeggio);\n\t\t});\n\n\t\t// grace noteheads\n\t\tconst graceNhs = this.tokens.filter((token) => token.type === TokenType.GraceNotehead);\n\t\tgraceNhs.forEach((grace) => {\n\t\t\tconst event = events.find((event) => grace.x > event.left && grace.x < event.right && event.ys.some((y) => Math.abs(grace.y - y) < 0.4));\n\t\t\tif (event) event.grace = GraceType.Grace;\n\t\t});\n\n\t\t// tremolos\n\t\tconst tremolsLs = this.tokens.filter((token) => token.type === TokenType.TremoloLeft);\n\t\tconst tremolsRs = this.tokens.filter((token) => token.type === TokenType.TremoloRight);\n\t\tconst tremolsMs = this.tokens.filter((token) => token.type === TokenType.TremoloMiddle);\n\n\t\tconst tevents = events\n\t\t\t.filter((event) => !event.rest)\n\t\t\t.map((event) => {\n\t\t\t\tconst ys = [...event.ys];\n\t\t\t\tif (event.tip) ys.push(event.tip.y);\n\t\t\t\telse {\n\t\t\t\t\tys.push(event.ys[0] + 2);\n\t\t\t\t\tys.push(event.ys[event.ys.length - 1] - 2);\n\t\t\t\t}\n\n\t\t\t\tconst stemL = event.tip ? event.tip.x : event.left;\n\t\t\t\tconst stemR = event.tip ? event.tip.x : event.right;\n\n\t\t\t\treturn {\n\t\t\t\t\tevent,\n\t\t\t\t\ttop: Math.min(...ys),\n\t\t\t\t\tbottom: Math.max(...ys),\n\t\t\t\t\tstemL,\n\t\t\t\t\tstemR,\n\t\t\t\t};\n\t\t\t});\n\n\t\ttremolsMs.forEach((tm) => {\n\t\t\tconst te = tevents.find((te) => {\n\t\t\t\tif (te.event.tip) return tm.y > te.top && tm.y < te.bottom && Math.abs(tm.x - te.event.tip.x) < 0.3;\n\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t}\n\t\t});\n\t\ttremolsLs.forEach((tl) => {\n\t\t\tconst te = tevents.find((te) => tl.y > te.top && tl.y < te.bottom && tl.x > te.stemR && tl.x < te.stemR + 1.6);\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t\tte.event.tremoloLink = TremoloLink.Pitcher;\n\t\t\t}\n\t\t});\n\t\ttremolsRs.forEach((tr) => {\n\t\t\tconst te = tevents.find((te) => tr.y > te.top && tr.y < te.bottom && tr.x < te.stemL && tr.x > te.stemL - 1.6);\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t\tte.event.tremoloLink = TremoloLink.Catcher;\n\t\t\t}\n\t\t});\n\t}\n\n\tassignFeaturesOnEvents(events: ChordColumn[], semantics: SemanticPoint[]): void {\n\t\tconst points = semantics.filter((point) => point.x > this.left && point.x < this.right);\n\t\tconst rests = points.filter((point) => REST_SEMANTICS.includes(point.semantic));\n\t\tconst flags = points.filter((point) => point.semantic === SemanticType.Flag3);\n\t\tconst dotPs = points.filter((point) => point.semantic === SemanticType.Dot);\n\t\tconst beamLs = points.filter((points) => points.semantic === SemanticType.BeamLeft);\n\t\tconst beamMs = points.filter((points) => points.semantic === SemanticType.BeamContinue);\n\t\tconst beamRs = points.filter((points) => points.semantic === SemanticType.BeamRight);\n\t\tconst gracePs = points.filter((point) => point.semantic === SemanticType.GraceNotehead);\n\t\tconst tremoloRs = points.filter((point) => point.semantic === SemanticType.TremoloRight);\n\t\tconst stems = points.filter((point) => point.semantic === SemanticType.vline_Stem);\n\t\tconst s0 = points.filter((point) => point.semantic === SemanticType.NoteheadS0);\n\t\tconst s1 = points.filter((point) => point.semantic === SemanticType.NoteheadS1);\n\t\tconst s2 = points.filter((point) => point.semantic === SemanticType.NoteheadS2);\n\n\t\tevents.forEach((event) => {\n\t\t\tconst cx = event.tip ? event.tip.x : (event.left + event.right) / 2;\n\t\t\tconst top = event.tip ? Math.min(event.tip.y, event.ys[event.ys.length - 1]) : event.ys[event.ys.length - 1];\n\t\t\tconst bottom = event.tip ? Math.max(event.tip.y, event.ys[0]) : event.ys[0];\n\t\t\tconst stemL = event.tip ? event.tip.x : event.left;\n\n\t\t\tconst divisions = [0, 0, 0, 0, 0, 0, 0];\n\t\t\tif (event.rest) {\n\t\t\t\tconst i_rests = rests.filter((point) => distance2D(point, { x: cx, y: event.ys[0] }) < 0.5);\n\t\t\t\ti_rests.forEach((r) => {\n\t\t\t\t\tconst d = REST_SEMANTICS.indexOf(r.semantic);\n\t\t\t\t\tdivisions[d] = Math.max(divisions[d], r.confidence);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst nhs = [s0, s1, s2]\n\t\t\t\t\t.map((ss) => ss.filter((nh) => nh.x > event.left && nh.x < event.right && nh.y > top - 0.25 && nh.y < bottom + 0.25))\n\t\t\t\t\t.map((ss) => Math.max(0, ...ss.map((nh) => nh.confidence)));\n\n\t\t\t\tconst i_flags = flags.filter((flag) => flag.y > top - 0.2 && flag.y < bottom + 0.2 && Math.abs(flag.x - cx) < 0.2);\n\t\t\t\ti_flags.sort((f1, f2) => f2.confidence - f1.confidence);\n\n\t\t\t\tdivisions[0] = nhs[0];\n\t\t\t\tdivisions[1] = nhs[1];\n\t\t\t\tdivisions[2] = nhs[2];\n\t\t\t\tArray(divisions.length - 3)\n\t\t\t\t\t.fill(0)\n\t\t\t\t\t.forEach((_, i) => (divisions[3 + i] = i_flags[i] ? i_flags[i].confidence : 0));\n\t\t\t}\n\n\t\t\tconst i_dots = dotPs.filter((dot) => dot.x > cx && dot.x < event.right + 2.6);\n\t\t\tconst dots2 = i_dots.filter((dot) => i_dots.some((d) => dot.x > d.x && Math.abs(dot.y - d.y) < 0.2));\n\t\t\tconst dots = [Math.max(0, ...i_dots.map((dot) => dot.confidence)), Math.max(0, ...dots2.map((dot) => dot.confidence))];\n\n\t\t\tconst beams = [beamLs, beamMs, beamRs]\n\t\t\t\t.map((bs) => bs.filter((b) => Math.abs(b.x - cx) < 0.2 && b.y > top - 0.2 && b.y < bottom + 0.2))\n\t\t\t\t.map((bs) => Math.max(0, ...bs.map((b) => b.confidence)));\n\n\t\t\tconst u_stems = stems.filter((stem) => distance2D({ x: cx, y: event.ys[0] }, { x: stem.x, y: stem.extension.y2 }) < 0.5);\n\t\t\tconst d_stems = stems.filter((stem) => distance2D({ x: cx, y: event.ys[event.ys.length - 1] }, { x: stem.x, y: stem.extension.y1 }) < 0.5);\n\t\t\tconst stemDirections = [Math.max(0, ...u_stems.map((stem) => stem.confidence)), Math.max(0, ...d_stems.map((stem) => stem.confidence))];\n\n\t\t\tconst graces = gracePs.filter((grace) => Math.abs(grace.x - cx) < 0.6 && event.ys.some((y) => Math.abs(grace.y - y) < 0.4));\n\t\t\tconst grace = Math.max(0, ...graces.map((grace) => grace.confidence));\n\n\t\t\tconst tremolos =\n\t\t\t\tevent.division === 0\n\t\t\t\t\t? tremoloRs.filter((tremolo) => tremolo.x > event.left - 2 && tremolo.x < event.right)\n\t\t\t\t\t: tremoloRs.filter((tremolo) => tremolo.y > top - 0.04 && tremolo.y < bottom + 0.04 && tremolo.x > stemL - 2 && tremolo.x < stemL);\n\t\t\tconst tremoloCatcher = Math.max(0, ...tremolos.map((tremolo) => tremolo.confidence));\n\n\t\t\tevent.feature = {\n\t\t\t\tdivisions,\n\t\t\t\tdots,\n\t\t\t\tbeams,\n\t\t\t\tstemDirections,\n\t\t\t\tgrace,\n\t\t\t\ttremoloCatcher,\n\t\t\t} as EventFeature;\n\t\t});\n\t}\n}\n\nclass Staff extends SimpleClass {\n\tstatic className = 'Staff';\n\tstatic blackKeys = ['index', 'semanticTop', 'semanticBttom'];\n\n\tindex?: number; // staff index in full staff layout\n\n\t// in units\n\ttop: number;\n\theight: number;\n\tstaffY: number;\n\n\tsemanticTop: number;\n\tsemanticBottom: number;\n\n\tbackgroundImage: string | Buffer;\n\tmaskImage: string | Buffer;\n\timagePosition: Rect;\n\n\tmeasures: Measure[];\n\n\tsemantics: SemanticPoint[];\n\n\tconstructor({ measureCount = null, measureBars = null, ...data }: Record = {}) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.height = this.height || 10;\n\t\tthis.staffY = this.staffY || 5;\n\n\t\tif (measureBars) {\n\t\t\tlet left = 0;\n\t\t\tthis.measures = measureBars.map((endX) => {\n\t\t\t\tconst measure = new Measure({ left, width: endX - left, height: this.height });\n\t\t\t\tleft = endX;\n\n\t\t\t\treturn measure;\n\t\t\t});\n\t\t} else if (measureCount)\n\t\t\tthis.measures = Array(measureCount)\n\t\t\t\t.fill(null)\n\t\t\t\t.map(() => new Measure());\n\t\telse this.measures = [];\n\t}\n\n\t// relative to staffY\n\tget noteRange(): { top: number; bottom: number } {\n\t\tconst noteheads: Token[] = [].concat(...this.measures.map((measure) => measure.noteheads));\n\t\tconst ys = noteheads.map((note) => note.y);\n\t\tconst top = Math.min(-2, ...ys);\n\t\tconst bottom = Math.max(2, ...ys);\n\n\t\treturn { top, bottom };\n\t}\n\n\tget additionalLines(): AdditionalLineStack[] {\n\t\treturn [].concat(...this.measures.map((measure) => measure.additionalLines));\n\t}\n\n\trearrangeMeasures(measureBars: number[]): void {\n\t\tif (!measureBars.length) {\n\t\t\tconsole.warn('rearrangeMeasures error, measureBars are empty.');\n\t\t\treturn;\n\t\t}\n\n\t\tconst tokens = this.measures?.map((measure) => measure.tokens).flat(1) || [];\n\n\t\tlet left = 0;\n\t\tthis.measures = measureBars.map((endX) => {\n\t\t\tconst measure = new Measure({ left, width: endX - left, height: this.height });\n\t\t\tleft = endX;\n\n\t\t\treturn measure;\n\t\t});\n\n\t\tthis.reassignTokens(tokens);\n\t}\n\n\treassignTokens(tokens: Token[] = null): void {\n\t\tif (!tokens) tokens = [].concat(...this.measures.map((measure) => measure.tokens));\n\n\t\tthis.measures.forEach((measure) => (measure.tokens = []));\n\n\t\ttokens.forEach((token) => {\n\t\t\tfor (const measure of this.measures) {\n\t\t\t\tif (token.x < measure.right) {\n\t\t\t\t\tmeasure.tokens.push(token);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tassignSemantics(graph: SemanticGraph): void {\n\t\tthis.semantics = graph.getStaffPoints();\n\t}\n\n\t// generate tokens from semantics\n\tassemble(threshold: number, system: System, logger: Logger = new DummyLogger()): void {\n\t\tif (!this.semantics) return;\n\n\t\tlet points = system.qualifiedSemantics(this.semantics, threshold);\n\t\tpoints = solveOverlapping(points);\n\n\t\t// tempo noteheads\n\t\tconst tempoNhs = points.filter((point) => point.semantic === SemanticType.TempoNotehead);\n\t\ttempoNhs.forEach((tempoNh) => {\n\t\t\tconst index = points.findIndex((point) => /^Notehead/.test(point.semantic) && distance2D(tempoNh, point) < 0.3);\n\t\t\t//console.log(\"temponh:\", tempoNh, index, points[index]);\n\t\t\tif (index >= 0) points.splice(index, 1);\n\t\t\t// TODO: construct tempo term\n\t\t});\n\n\t\tconst antiP = (id: string): SemanticPoint | null => {\n\t\t\tif (system.displacementSemantics?.[id]) return this.semantics.find((p) => p.id === id);\n\n\t\t\treturn null;\n\t\t};\n\n\t\tpoints.filter((point) => MEASURE_SEMANTICS.includes(point.semantic)).forEach((point) => this.appendPoint(point, { points }));\n\n\t\t// noteheads with stem from noteheads & stems\n\t\tconst stems: Stem[] = points\n\t\t\t.filter((point) => point.semantic === SemanticType.vline_Stem)\n\t\t\t.filter((stem) => stem.extension.y2 - stem.extension.y1 > 1.5) // exclude too short stems\n\t\t\t.map((p) => ({\n\t\t\t\tx: p.x,\n\t\t\t\ty1: p.extension.y1,\n\t\t\t\ty2: p.extension.y2,\n\t\t\t\tdirection: null,\n\t\t\t}));\n\t\tconst noteheads = points.filter(\n\t\t\t(point) => NOTEHEAD_FOR_STEM_SEMANTICS.includes(point.semantic) && point.y > this.semanticTop && point.y < this.semanticBottom\n\t\t);\n\t\tconst rootNhs = new Set();\n\n\t\t// for 2nd degree chord notes\n\t\tconst nhOffsetX = (nh: SemanticPoint, stem: Stem, down: boolean): number => {\n\t\t\tif ((down ? 1 : 0) ^ (nh.x < stem.x ? 1 : 0)) return 0;\n\n\t\t\tconst offset = NOTEHEAD_WIDTHS[nh.semantic];\n\n\t\t\treturn down ? -offset : offset;\n\t\t};\n\n\t\t// find root noteheads on stem\n\t\tstems.forEach((stem) => {\n\t\t\tconst attachedHeads = noteheads.filter(\n\t\t\t\t(nh) =>\n\t\t\t\t\tMath.abs(nh.x - stem.x) - NOTEHEAD_WIDTHS[nh.semantic] / 2 < 0.32 &&\n\t\t\t\t\tMath.abs(nh.x - stem.x) - NOTEHEAD_WIDTHS[nh.semantic] / 2 > -0.44 && // for grace noteheads, more close to their stem\n\t\t\t\t\tnh.y > stem.y1 - 0.5 &&\n\t\t\t\t\tnh.y < stem.y2 + 0.5 &&\n\t\t\t\t\t!(nh.x > stem.x && nh.y > stem.y2) &&\n\t\t\t\t\t!(nh.x < stem.x && nh.y < stem.y1)\n\t\t\t);\n\t\t\t//if (stem.x===102.0625 && stem.y2===1.875)\n\t\t\t//\tdebugger;\n\t\t\tif (attachedHeads.length) {\n\t\t\t\tattachedHeads.sort((n1, n2) => n1.y - n2.y);\n\n\t\t\t\tconst topDist = Math.min(...attachedHeads.map((nh) => nh.y - stem.y1));\n\t\t\t\tconst bottomDist = Math.min(...attachedHeads.map((nh) => stem.y2 - nh.y));\n\t\t\t\tif (Math.min(topDist, bottomDist) > 0.5) return; // no root notehead on this stem\n\n\t\t\t\tconst down = topDist < bottomDist;\n\t\t\t\tstem.direction = down ? 'd' : 'u';\n\n\t\t\t\tif (!down) attachedHeads.reverse();\n\t\t\t\tconst root = attachedHeads[0];\n\n\t\t\t\tconst semantic = down ? NOTEHEAD_TABLE[root.semantic].down : NOTEHEAD_TABLE[root.semantic].up;\n\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: root.id,\n\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\tx: stem.x + nhOffsetX(root, stem, down),\n\t\t\t\t\t\ty: root.y,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\tconfidence: root.confidence,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttip: { x: stem.x, y: down ? stem.y2 : stem.y1 },\n\t\t\t\t\t\tantiPoint: antiP(root.id),\n\t\t\t\t\t\tpoints,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\trootNhs.add(root.id);\n\t\t\t}\n\t\t});\n\n\t\t// non-root noteheads\n\t\tnoteheads\n\t\t\t.filter((nh) => !rootNhs.has(nh.id))\n\t\t\t.forEach((nh) => {\n\t\t\t\tconst nearStems = stems\n\t\t\t\t\t.filter((stem) => Math.abs(stem.x - nh.x) < 2 && nh.y > stem.y1 && nh.y < stem.y2)\n\t\t\t\t\t.sort((s1, s2) => Math.abs(s1.x - nh.x) - Math.abs(s2.x - nh.x));\n\t\t\t\tconst stem = nearStems[0];\n\t\t\t\tif (stem) {\n\t\t\t\t\tconst down = stem.direction === 'd';\n\t\t\t\t\tconst semantic = down ? NOTEHEAD_TABLE[nh.semantic].down : NOTEHEAD_TABLE[nh.semantic].up;\n\n\t\t\t\t\tthis.appendPoint(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: nh.id,\n\t\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\t\tx: stem.x + nhOffsetX(nh, stem, down),\n\t\t\t\t\t\t\ty: nh.y,\n\t\t\t\t\t\t\tpivotX: nh.x,\n\t\t\t\t\t\t\tconfidence: nh.confidence,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttip: { x: stem.x, y: down ? stem.y2 : stem.y1 },\n\t\t\t\t\t\t\tantiPoint: antiP(nh.id),\n\t\t\t\t\t\t\tpoints,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else logger.debug('isolated notehead:', system.index, this.index, nh);\n\t\t\t});\n\n\t\t// group flags\n\t\tconst flags = points.filter((point) => point.semantic === SemanticType.Flag3);\n\t\tflags.sort((f1, f2) => f1.x - f2.x);\n\t\tthis.appendFlags(flags, stems);\n\n\t\t// group dots\n\t\tconst dots = points\n\t\t\t.filter((point) => point.semantic === SemanticType.Dot)\n\t\t\t.map((dot) => {\n\t\t\t\tconst y = roundNumber(dot.y, 0.5);\n\t\t\t\treturn { x: dot.x, y };\n\t\t\t});\n\t\tconst dotLines: { [key: number]: SemanticPoint[] } = dots.reduce((table, dot) => {\n\t\t\ttable[dot.y] = table[dot.y] || [];\n\t\t\ttable[dot.y].push(dot);\n\t\t\treturn table;\n\t\t}, {});\n\t\tObject.entries(dotLines).forEach(([sy, line]) => {\n\t\t\tconst y = Number(sy);\n\t\t\tif (line.length > 1) {\n\t\t\t\tline.sort((d1, d2) => d1.x - d2.x);\n\t\t\t\tfor (let i = 0; i < line.length - 1; i++) {\n\t\t\t\t\tconst dot = line[i];\n\t\t\t\t\tif (line.find((d) => d.x > dot.x && d.x - dot.x < 1.2)) {\n\t\t\t\t\t\tthis.appendPoint(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: dot.id,\n\t\t\t\t\t\t\t\tx: dot.x,\n\t\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\t\tconfidence: dot.confidence,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: TokenType.DotDot, antiPoint: antiP(dot.id), points }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// pair key accidentals\n\t\tconst keyaccs = points.filter((point) => point.semantic === SemanticType.KeyAcc);\n\t\tconst accs = points.filter((point) => KEYACC_CANDIDATE_SEMANTICS[point.semantic]);\n\t\taccs.forEach((acc) => {\n\t\t\tif (keyaccs.some((key) => Math.abs(acc.x - key.x) < 0.5 && Math.abs(acc.y - key.y) < 1)) {\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: acc.id,\n\t\t\t\t\t\tx: acc.x,\n\t\t\t\t\t\ty: acc.y,\n\t\t\t\t\t\tconfidence: acc.confidence,\n\t\t\t\t\t},\n\t\t\t\t\t{ type: KEYACC_CANDIDATE_SEMANTICS[acc.semantic], points }\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\t// octave shift heads\n\t\tconst octs = points.filter((point) => point.semantic === SemanticType.OctaveShift8);\n\t\tocts.forEach((oct) => {\n\t\t\tconst type = oct.y < 0 ? TokenType.OctaveShift8va : TokenType.OctaveShift8vb;\n\t\t\tthis.appendPoint(\n\t\t\t\t{\n\t\t\t\t\tid: oct.id,\n\t\t\t\t\tx: oct.x,\n\t\t\t\t\ty: oct.y,\n\t\t\t\t\tconfidence: oct.confidence,\n\t\t\t\t},\n\t\t\t\t{ type, points }\n\t\t\t);\n\t\t});\n\n\t\t// group volta dots\n\t\tconst voltaDots = this.semantics.filter((point) => [SemanticType.VoltaLeft, SemanticType.VoltaRight].includes(point.semantic));\n\t\tvoltaDots.sort((d1, d2) => d1.x - d2.x);\n\t\tconst voltaGroups: Record> = voltaDots.reduce(\n\t\t\t(groups, dot) => {\n\t\t\t\tconst group = groups[dot.semantic];\n\t\t\t\tconst xs = Array.from(Object.keys(group)).map(Number);\n\t\t\t\tconst x = xs.find((x) => dot.x < x + 0.2) || dot.x;\n\n\t\t\t\tgroup[x] = groups[dot.semantic][x] || [];\n\t\t\t\tgroup[x].push(dot);\n\n\t\t\t\treturn groups;\n\t\t\t},\n\t\t\t{ [SemanticType.VoltaLeft]: {}, [SemanticType.VoltaRight]: {} }\n\t\t);\n\t\tfor (const [type, group] of Object.entries(voltaGroups)) {\n\t\t\tObject.values(group).forEach((dots) => {\n\t\t\t\tif (dots.length > 1) {\n\t\t\t\t\tconst confidence = dots.reduce((sum, dot) => sum + dot.confidence, 0);\n\t\t\t\t\tif (dots[0].y * dots[1].y < 0 && confidence >= threshold * 2) this.appendPoint(dots[0], { type: TokenType[type] });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tappendPoint(\n\t\tpoint: Partial,\n\t\t{ type, points = null, antiPoint, ...fields }: { type?: TokenType; antiPoint?: SemanticPoint; [key: string]: any } = {}\n\t): void {\n\t\t//console.log(\"appendPoint.0:\", point, point.x, point.y);\n\t\tconst x = point.x;\n\t\tconst measure = this.measures.find((measure) => x < measure.left + measure.width);\n\t\tif (!measure)\n\t\t\t// drop tokens out of measures range\n\t\t\treturn;\n\n\t\t// lined or interval\n\t\tlet lined = false;\n\t\tlet interval = false;\n\t\tif (STAFF_LINED_SEMANTICS.includes(point.semantic)) {\n\t\t\tconsole.assert(points, 'argument of points for this semantic is required:', point.semantic);\n\t\t\tconst signs = points.filter((p) => LINED_INTERVAL_SEMANTICS.includes(p.semantic) && Math.abs(p.y - point.y) < 0.2 && Math.abs(p.x - point.x) < 1.2);\n\t\t\tif (signs.some((s) => s.semantic === SemanticType.SignLined)) lined = true;\n\t\t\telse if (signs.some((s) => s.semantic === SemanticType.SignInterval)) interval = true;\n\t\t}\n\n\t\ttype = type || TokenType[point.semantic];\n\t\tconst fixedY = TOKEN_Y_FIXED[type];\n\t\tlet roundY = TOKEN_Y_ROUND[type];\n\n\t\tif (lined || interval) roundY = Math.max(roundY, 1);\n\n\t\tlet y = point.y;\n\t\tif (Number.isFinite(fixedY)) y = fixedY;\n\t\telse if (roundY) {\n\t\t\tif (interval) y = roundNumber(y + 0.5, roundY) - 0.5;\n\t\t\telse y = roundNumber(y, roundY);\n\t\t}\n\t\t//if (lined || interval)\n\t\t//\tconsole.log(\"round sign:\", point.semantic, y, lined, interval);\n\n\t\tconst holder = measure.tokens.find((token) => token.type === type && Math.abs(token.x - x) < 0.1 && Math.abs(token.y - y) < 0.1);\n\t\tif (holder) {\n\t\t\tif (Number.isFinite(holder.confidence) && holder.confidence < point.confidence) {\n\t\t\t\tholder.x = x;\n\t\t\t\tholder.y = y;\n\t\t\t\tholder.confidence = point.confidence;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// exlude clef out of pitch range\n\t\tif (TokenClefs.includes(type)) {\n\t\t\tif (Math.abs(y) > 3) return;\n\t\t}\n\n\t\t// TODO: exclude overlapped pair by a token prior table\n\n\t\tmeasure.tokens.push(\n\t\t\tnew Token({\n\t\t\t\tid: point.id,\n\t\t\t\ttype,\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\tpivotX: point.pivotX,\n\t\t\t\tconfidence: point.confidence,\n\t\t\t\t...fields,\n\t\t\t})\n\t\t);\n\n\t\tif (antiPoint) {\n\t\t\tmeasure.antiTokens.push(\n\t\t\t\tnew Token({\n\t\t\t\t\tid: antiPoint.id,\n\t\t\t\t\ttype,\n\t\t\t\t\tx,\n\t\t\t\t\ty: antiPoint.y,\n\t\t\t\t\tconfidence: antiPoint.confidence,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\n\tappendFlags(flags: SemanticPoint[], stems: Stem[]): void {\n\t\t//console.log(\"flags:\", flags);\n\t\tconst stemGroups = stems\n\t\t\t.map((stem) => ({\n\t\t\t\t...stem,\n\t\t\t\tflags: flags.filter((flag) => Math.abs(flag.x - stem.x) < 0.3 && flag.y > stem.y1 - 0.5 && flag.y < stem.y2 + 0.5),\n\t\t\t}))\n\t\t\t.filter((group) => group.flags.length);\n\n\t\tstemGroups.forEach((group) => {\n\t\t\tconst mainFlag = group.flags.reduce((main, flag) => (main && main.confidence > flag.confidence ? main : flag), null);\n\n\t\t\t//const upDistance = mainFlag.y - group.y1;\n\t\t\t//const downDistance = group.y2 - mainFlag.y;\n\t\t\t//const downward = downDistance < upDistance;\n\t\t\tconst downward = group.direction === 'd';\n\n\t\t\tconst tailY = downward ? Math.min(group.y2, group.y1 + STEM_LENGTH_MAX) : Math.max(group.y1, group.y2 - STEM_LENGTH_MAX);\n\n\t\t\tconst flagTips = group.flags.map((flag) => ({\n\t\t\t\ttip: (tailY - flag.y) * (downward ? 1 : -1),\n\t\t\t\tconfidence: flag.confidence,\n\t\t\t}));\n\t\t\tconst count = flagTips.filter((f) => f.tip < 2 || f.confidence > mainFlag.confidence * 0.7).length;\n\n\t\t\tconst type = TokenFlags[count - 1];\n\t\t\tif (type) {\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: group.flags[0].id,\n\t\t\t\t\t\tx: group.x,\n\t\t\t\t\t\ty: tailY,\n\t\t\t\t\t\tconfidence: Math.min(...group.flags.map((flag) => flag.confidence)),\n\t\t\t\t\t},\n\t\t\t\t\t{ type }\n\t\t\t\t);\n\t\t\t\t//console.log(\"flag:\", type);\n\t\t\t}\n\t\t});\n\t}\n\n\tclearTokens(): void {\n\t\tthis.measures.forEach((measure) => (measure.tokens = []));\n\t\tthis.semantics = [];\n\t}\n\n\tclearPredictedTokens(): void {\n\t\tthis.measures.forEach((measure) => (measure.tokens = measure.tokens.filter((token) => !token.isPredicted)));\n\t}\n}\n\nclass System extends SimpleClass {\n\tstatic className = 'System';\n\tstatic blackKeys = ['index', 'pageIndex', 'prev', 'next', 'headMeasureIndex', 'tokens', 'indent'];\n\n\tindex?: number;\n\tpageIndex?: number;\n\tprev?: System;\n\tnext?: System;\n\theadMeasureIndex?: number; // zero based\n\n\t// in units\n\tleft: number;\n\ttop: number;\n\twidth: number;\n\tindent: boolean;\n\n\tmeasureCount: number;\n\tstaves: Staff[];\n\n\tmeasureBars: number[];\n\n\tbackgroundImage: string;\n\timagePosition: Rect;\n\n\tsemantics: SemanticPoint[];\n\ttokens?: Token[];\n\n\tsidBlackList: string[];\n\tsidWhiteList: string[];\n\n\tdisplacementSemantics?: { [id: string]: Partial };\n\n\tstaffMaskChanged: number;\n\tbracketsAppearance: string; // the staff layout code by prediction\n\n\tconstructor({ stavesCount, ...fields }: any) {\n\t\tsuper();\n\t\tsuper.assign(fields);\n\n\t\tif (!this.measureBars) {\n\t\t\tconst HEAD_WIDTH = 5;\n\t\t\tconst segmentLength = (this.width - HEAD_WIDTH) / this.measureCount;\n\t\t\tthis.measureBars = Array(this.measureCount)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => HEAD_WIDTH + segmentLength * (i + 1));\n\t\t}\n\n\t\tif (!fields.staves && stavesCount)\n\t\t\tthis.staves = Array(stavesCount)\n\t\t\t\t.fill(null)\n\t\t\t\t.map(() => new Staff({ measureBars: this.measureBars }));\n\n\t\tthis.arrangePosition();\n\n\t\tthis.measureCount = this.measureCount || this.measureBars.length;\n\n\t\tthis.sidBlackList = this.sidBlackList || [];\n\t\tthis.sidWhiteList = this.sidWhiteList || [];\n\t}\n\n\tget noteRange(): { top: number; bottom: number } {\n\t\tif (!this.staves.length) return null;\n\n\t\tconst staffTop = this.staves[0];\n\t\tconst staffBottom = this.staves[this.staves.length - 1];\n\n\t\treturn {\n\t\t\ttop: staffTop.top + staffTop.staffY + staffTop.noteRange.top,\n\t\t\tbottom: staffBottom.top + staffBottom.staffY + staffBottom.noteRange.bottom,\n\t\t};\n\t}\n\n\tget staffPositions(): StaffPosition[] {\n\t\treturn this.staves.map((staff) => ({\n\t\t\ty: staff.top + staff.staffY,\n\t\t\tradius: 2,\n\t\t}));\n\t}\n\n\tget staffMask(): number {\n\t\tif (this.staffMaskChanged) return this.staffMaskChanged;\n\n\t\tif (this.prev && this.staves.length === this.prev.staves.length) return this.prev.staffMask;\n\n\t\treturn 2 ** this.staves.length - 1;\n\t}\n\n\tget staffTop(): number {\n\t\tconst positions = this.staffPositions;\n\t\treturn positions.length ? positions[0].y - positions[0].radius : 0;\n\t}\n\n\tget staffBottom(): number {\n\t\tconst positions = this.staffPositions;\n\t\treturn positions.length ? positions[positions.length - 1].y + positions[positions.length - 1].radius : 0;\n\t}\n\n\tarrangePosition(): void {\n\t\tlet y = 0;\n\t\tfor (const staff of this.staves) {\n\t\t\tif (Number.isFinite(staff.top)) break;\n\n\t\t\tstaff.top = y;\n\t\t\ty += staff.height;\n\t\t}\n\t}\n\n\ttidyMeasureBars(): void {\n\t\tthis.measureBars = this.measureBars.filter((x) => x > 1);\n\t\tthis.measureBars.sort((b1, b2) => b1 - b2);\n\n\t\tconst restWidth = this.width - this.measureBars[this.measureBars.length - 1];\n\t\tif (restWidth > 12) this.measureBars.push(this.width);\n\t\telse if (restWidth < 2) this.measureBars[this.measureBars.length - 1] = this.width;\n\n\t\tthis.measureBars = this.measureBars.filter((x, i) => i < 1 || x - this.measureBars[i - 1] > 4);\n\t}\n\n\trearrangeMeasures(): void {\n\t\tthis.measureCount = this.measureBars.length;\n\t\tthis.staves.forEach((staff) => staff.rearrangeMeasures(this.measureBars));\n\t}\n\n\tget height(): number {\n\t\treturn this.staves.reduce((height, staff) => height + staff.height, 0);\n\t}\n\n\tget connectionLine(): { top: number; bottom: number } {\n\t\tconst staffHead = this.staves[0];\n\t\tconst staffTail = this.staves[this.staves.length - 1];\n\n\t\treturn (\n\t\t\tstaffHead && {\n\t\t\t\ttop: staffHead.top + staffHead.staffY - 2,\n\t\t\t\tbottom: staffTail.top + staffTail.staffY + 2,\n\t\t\t}\n\t\t);\n\t}\n\n\tget middleY(): number {\n\t\tif (!this.staves.length) return 0;\n\n\t\tconst sum = this.staves.reduce((sum, staff) => sum + staff.top + staff.staffY, 0);\n\n\t\treturn sum / this.staves.length;\n\t}\n\n\tget timeSignatureOnHead(): boolean {\n\t\treturn this.staves.some((staff) => staff.measures[0]?.tokens.some((token) => TokenTimesigs.includes(token.type)));\n\t}\n\n\t// an array staff or null on every position of full staff layout\n\tgetStaffArray(stavesCount: number): Staff[] {\n\t\tlet si = 0;\n\n\t\treturn Array(stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, i) => {\n\t\t\t\tconst on = this.staffMask & (1 << i);\n\t\t\t\tconst staff = on ? this.staves[si++] : null;\n\t\t\t\tconsole.assert(!on || staff, 'system staves count is less than staff mask declared:', this.staves.length, this.staffMask.toString(2));\n\n\t\t\t\treturn staff;\n\t\t\t});\n\t}\n\n\t// measureIndex: the local measure index\n\tgetMarksInMeasure(measureIndex: number): MarkTerm[] {\n\t\tconsole.assert(measureIndex < this.measureBars.length, 'measure index out of range:', measureIndex, this.measureBars.length);\n\n\t\tconst left = measureIndex > 0 ? this.measureBars[measureIndex - 1] : 0;\n\t\tconst right = this.measureBars[measureIndex];\n\n\t\tconst tempoTokens = (this.tokens ?? []).filter(\n\t\t\t(token) => token.x >= left && token.x < right && token instanceof TextToken && token.textType === TextType.TempoNumeral\n\t\t) as TextToken[];\n\n\t\treturn [...tempoTokens.map((token) => TempoTerm.fromNumeralText(token.text)).filter(Boolean)];\n\t}\n\n\tgetEvents(stavesCount: number): EventSystem {\n\t\tconsole.assert(Number.isInteger(this.headMeasureIndex), 'invalid headMeasureIndex:', this.headMeasureIndex);\n\n\t\t// Empty system (no measureBars / no staves with measures): return empty result\n\t\tif (!this.measureBars?.length && this.staves.every((s) => !s.measures?.length)) {\n\t\t\treturn { staffMask: this.staffMask, columns: [] };\n\t\t}\n\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: [] as EventTerm[],\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure) => {\n\t\t\t\tconst events = measure.getEvents();\n\t\t\t\tmeasure.assignAccessoriesOnEvents(events);\n\t\t\t\tmeasure.assignFeaturesOnEvents(events, staff.semantics);\n\n\t\t\t\treturn {\n\t\t\t\t\tevents: events.map(\n\t\t\t\t\t\t(event) =>\n\t\t\t\t\t\t\tnew EventTerm({\n\t\t\t\t\t\t\t\tstaff: staff.index,\n\t\t\t\t\t\t\t\tsystem: this.index,\n\t\t\t\t\t\t\t\t...event,\n\t\t\t\t\t\t\t\trest: event.rest ? 'r' : null,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t\tcontexts: measure.getContexts({ staff: staff.index }),\n\t\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\t\talternative: measure.alternative,\n\t\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\n\t\t// supplement time signatures for empty staves\n\t\tfor (let mi = 0; mi < this.measureCount; ++mi) {\n\t\t\tconst tsRows = rows.map((row) => row[mi]?.contexts?.filter((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type)));\n\t\t\tconst timeSigs = tsRows.find((row) => row?.length);\n\t\t\tif (timeSigs) {\n\t\t\t\trows.forEach((row) => {\n\t\t\t\t\tif (row[mi] && !row[mi].contexts.length && !row[mi].events.length) row[mi].contexts.push(...timeSigs);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//onst measureStartXs = [0, ...this.measureBars];\n\n\t\tconst columns = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map(\n\t\t\t\t(_, i): EventMeasureColumn => ({\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + i,\n\t\t\t\t\t//startX: measureStartXs[i],\n\t\t\t\t\t//width: measureWidths[i],\n\t\t\t\t\trows: rows.map((row) => row[i]),\n\t\t\t\t\tmarks: this.getMarksInMeasure(i),\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\tvoltaBegin: rows.some((row) => row[i]?.voltaBegin),\n\t\t\t\t\tvoltaEnd: rows.some((row) => row[i]?.voltaEnd),\n\t\t\t\t\talternative: rows.some((row) => row[i]?.alternative),\n\t\t\t\t\tbarTypes: rows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row[i]?.barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t);\n\t\t//columns.forEach(computeMeasureTicks);\n\n\t\t// assign id on column events\n\t\tcolumns.forEach((column) => {\n\t\t\tconst events = [].concat(...column.rows.filter(Boolean).map((row) => row.events));\n\t\t\tevents.forEach((event, i) => (event.id = i + 1));\n\t\t});\n\n\t\tconst lastColumn = columns[columns.length - 1];\n\t\tif (lastColumn) lastColumn.break = true;\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\tgetEventsFunctional(stavesCount: number, ev: ChordsFeeder, processors: ColumnProcessor[] = [], { useXMap = false } = {}): EventSystem {\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff, si) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: [] as EventTerm[],\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure, mi) => {\n\t\t\t\tconst events = ev(si, mi);\n\n\t\t\t\treturn (\n\t\t\t\t\tevents && {\n\t\t\t\t\t\tevents: events.map(\n\t\t\t\t\t\t\t(event) =>\n\t\t\t\t\t\t\t\tnew EventTerm({\n\t\t\t\t\t\t\t\t\tsystem: this.index,\n\t\t\t\t\t\t\t\t\t...event,\n\t\t\t\t\t\t\t\t\trest: event.rest ? 'r' : null,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcontexts: measure.getContexts({ staff: si }),\n\t\t\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\t\t\talternative: measure.alternative,\n\t\t\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//const measureStartXs = [0, ...this.measureBars];\n\n\t\t// [measure, staff]\n\t\tconst columns: EventMeasureColumn[] = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, mi) => {\n\t\t\t\tconst localRows = rows.map((row) => row[mi]);\n\t\t\t\tif (localRows.some((row) => !row)) return null;\n\n\t\t\t\tlet xMap: Map = null;\n\t\t\t\tif (useXMap) {\n\t\t\t\t\tconst events: EventTerm[] = [].concat(...localRows.map((row) => row.events));\n\t\t\t\t\tconst groupMap: { [group: number]: EventTerm[] } = events.reduce((map, event) => {\n\t\t\t\t\t\tif (Number.isFinite(event.tickGroup)) map[event.tickGroup] = map[event.tickGroup] || [];\n\t\t\t\t\t\tmap[event.tickGroup].push(event);\n\n\t\t\t\t\t\treturn map;\n\t\t\t\t\t}, {});\n\n\t\t\t\t\txMap = Object.values(groupMap).reduce((map, events) => {\n\t\t\t\t\t\tconst x = Math.min(...events.map((event) => (event.left + event.right) / 2));\n\t\t\t\t\t\tmap.set(x, events);\n\n\t\t\t\t\t\treturn map;\n\t\t\t\t\t}, new Map());\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + mi,\n\t\t\t\t\t//startX: measureStartXs[mi],\n\t\t\t\t\t//width: measureWidths[mi],\n\t\t\t\t\trows: localRows, // [staff]\n\t\t\t\t\tmarks: this.getMarksInMeasure(mi),\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\txMap,\n\t\t\t\t\tvoltaBegin: localRows.some((row) => row.voltaBegin),\n\t\t\t\t\tvoltaEnd: localRows.some((row) => row.voltaEnd),\n\t\t\t\t\talternative: localRows.some((row) => row.alternative),\n\t\t\t\t\tbarTypes: localRows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row.barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t});\n\t\tprocessors.forEach((proc) => columns.forEach(proc));\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\t// get EventSystem contains only contexted terms\n\tgetContexts(stavesCount: number): EventSystem {\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: null,\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure) => ({\n\t\t\t\tevents: null,\n\t\t\t\tcontexts: measure.getContexts(),\n\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\talternative: rows.some((row) => row.alternative),\n\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t}));\n\t\t});\n\n\t\t// supplement time signatures for empty staves\n\t\tfor (let mi = 0; mi < this.measureCount; ++mi) {\n\t\t\tconst tsRows = rows.map((row) => row[mi]?.contexts.filter((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type)));\n\t\t\tconst timeSigs = tsRows.find((row) => row?.length);\n\t\t\tif (timeSigs) {\n\t\t\t\trows.forEach((row) => {\n\t\t\t\t\tif (!row[mi].contexts.length) row[mi].contexts.push(...timeSigs);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//const measureStartXs = [0, ...this.measureBars];\n\n\t\tconst columns = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map(\n\t\t\t\t(_, i): EventMeasureColumn => ({\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + i,\n\t\t\t\t\t//startX: measureStartXs[i],\n\t\t\t\t\t//width: measureWidths[i],\n\t\t\t\t\trows: rows.map((row) => row[i]),\n\t\t\t\t\tmarks: [],\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\tvoltaBegin: rows.some((row) => row[i].voltaBegin),\n\t\t\t\t\tvoltaEnd: rows.some((row) => row[i].voltaEnd),\n\t\t\t\t\talternative: rows.some((row) => row.alternative),\n\t\t\t\t\tbarTypes: rows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row[i].barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t);\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\tassignSemantics(staffIndex: number, graph: SemanticGraph): void {\n\t\tconst staff = this.staves[staffIndex];\n\t\tconsole.assert(staff, 'staff is null:', staffIndex, this.staves);\n\t\tconst oy = staff.top + staff.staffY;\n\n\t\tgraph.getSystemPoints().forEach((point) => {\n\t\t\tconst p = { ...point };\n\t\t\tp.y += oy;\n\n\t\t\tif (p.extension) {\n\t\t\t\tp.extension = { ...p.extension };\n\t\t\t\tif (Number.isFinite(p.extension.y1)) {\n\t\t\t\t\tp.extension.y1 += oy;\n\t\t\t\t\tp.extension.y2 += oy;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.semantics.push(p);\n\t\t});\n\t}\n\n\t// generate tokens from semantics\n\tassemble(threshold: number, logger: Logger = new DummyLogger()): void {\n\t\t//console.log(\"System.assignSemantics:\", graph);\n\t\tthis.measureBars = [];\n\n\t\tif (!this.semantics) return;\n\n\t\tconst graph = SemanticGraph.fromPoints(this.semantics);\n\n\t\tconst bars = graph.getConfidentLayer(SemanticType.vline_BarMeasure, threshold);\n\t\tbars.sort((b1, b2) => b1.x - b2.x);\n\n\t\tconst staffTop = this.staffTop;\n\t\tconst staffBottom = this.staffBottom;\n\n\t\tconst MERGE_WINDOW = 0.4;\n\t\tlet lastX = 0;\n\t\tconst barColumns: { [key: number]: number } = bars.reduce((columns, bar) => {\n\t\t\tconst confidence = Number.isFinite(bar.confidence) ? Math.tanh(bar.confidence) : 1;\n\n\t\t\tconst x = bar.x - lastX > MERGE_WINDOW ? bar.x : lastX;\n\t\t\tlastX = bar.x;\n\t\t\tlet intensity = columns[x] || 0;\n\t\t\tintensity += (Math.min(bar.extension.y2, staffBottom) - Math.max(bar.extension.y1, staffTop)) * confidence;\n\n\t\t\tif (bar.x !== x) delete columns[x];\n\t\t\tcolumns[bar.x] = intensity;\n\n\t\t\treturn columns;\n\t\t}, {});\n\t\tconst barXs: number[] = Object.entries(barColumns)\n\t\t\t.filter(([x, intensity]) => (void x, intensity > 3 * this.staves.length))\n\t\t\t.map(([x]) => Number(x));\n\t\t// Include bar positions from whitelisted semantic points\n\t\tif (this.sidWhiteList.length) {\n\t\t\tfor (const bar of bars) {\n\t\t\t\tif (this.sidWhiteList.includes((bar as SemanticPoint).id) && !barXs.some((x) => Math.abs(x - bar.x) <= 2)) {\n\t\t\t\t\tbarXs.push(bar.x);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbarXs.sort((x1, x2) => x1 - x2);\n\t\tbarXs.forEach((x, i) => {\n\t\t\tif (i <= 0 || x - barXs[i - 1] > 2) this.measureBars.push(x);\n\t\t});\n\n\t\tif (!this.measureBars.length) this.measureBars.push(this.width);\n\n\t\tthis.tidyMeasureBars();\n\t\tthis.rearrangeMeasures();\n\n\t\t// measure bar type\n\t\tconst typeBars = this.semantics.filter((point) => [SemanticType.vline_BarTerminal, SemanticType.vline_BarSegment].includes(point.semantic));\n\t\ttypeBars.forEach((bar) => {\n\t\t\tconst measure = this.staves[0].measures.find((measure) => bar.x > measure.right - 2 && bar.x < measure.right + 1);\n\t\t\tif (measure) {\n\t\t\t\tconst type = bar.semantic.replace(/^vline_Bar/, '');\n\t\t\t\tmeasure.barTypes[type] = measure.barTypes[type] || 0;\n\t\t\t\tmeasure.barTypes[type] += bar.confidence;\n\t\t\t}\n\t\t});\n\n\t\tlet staffIndex = 0;\n\t\tconst staffMask = this.staffMask;\n\t\tthis.staves.forEach((staff, si) => {\n\t\t\t// staff index\n\t\t\twhile (!(staffMask & (1 << staffIndex))) ++staffIndex;\n\t\t\tstaff.index = staffIndex++;\n\n\t\t\t// assign semantic boundaries\n\t\t\tif (si === 0) staff.semanticTop = -staff.staffY;\n\t\t\telse {\n\t\t\t\tconst prevStaff = this.staves[si - 1];\n\t\t\t\tstaff.semanticTop = prevStaff.top + prevStaff.staffY + 3 - (staff.top + staff.staffY);\n\t\t\t}\n\n\t\t\tif (si < this.staves.length - 1) {\n\t\t\t\tconst nextStaff = this.staves[si + 1];\n\t\t\t\tstaff.semanticBottom = nextStaff.top + nextStaff.staffY - 3 - (staff.top + staff.staffY);\n\t\t\t} else staff.semanticBottom = this.height - (staff.top + staff.staffY);\n\n\t\t\tif (staff.semantics && staff.semantics.length) {\n\t\t\t\tstaff.semantics.forEach((point) => hashSemanticPoint(this.index, si, point));\n\n\t\t\t\tstaff.clearPredictedTokens();\n\t\t\t\tstaff.assemble(threshold, this, logger);\n\t\t\t}\n\t\t});\n\t}\n\n\tqualifiedSemantics(semantics: SemanticPoint[], threshold: number = 1): SemanticPoint[] {\n\t\treturn semantics\n\t\t\t.filter(\n\t\t\t\t(p) => this.sidWhiteList.includes(p.id) || (!this.sidBlackList.includes(p.id) && (p.confidence >= threshold || !Number.isFinite(p.confidence)))\n\t\t\t)\n\t\t\t.map((point) => {\n\t\t\t\t// displace semantic point\n\t\t\t\tif (this.displacementSemantics && this.displacementSemantics[point.id]) return { ...point, ...this.displacementSemantics[point.id] };\n\n\t\t\t\treturn point;\n\t\t\t});\n\t}\n\n\tclearTokens(): void {\n\t\tthis.staves.forEach((staff) => staff.clearTokens());\n\t\tthis.semantics = [];\n\t}\n\n\tnewPoint(staffIndex: number, data: SemanticPoint, threshold: number = 1): SemanticPoint {\n\t\tconst staff = this.staves[staffIndex];\n\t\tconsole.assert(staff, 'staff index out of bound:', staffIndex, this.staves.length);\n\n\t\tconst { semantic, x, y, confidence = 0, extension = null } = data;\n\t\tconst point = { semantic, x, y, confidence, extension };\n\t\tif (!point.extension) delete point.extension;\n\n\t\thashSemanticPoint(this.index, staffIndex, point);\n\t\tstaff.semantics.push(point);\n\t\tstaff.clearPredictedTokens();\n\t\tstaff.assemble(threshold, this);\n\n\t\treturn point;\n\t}\n\n\tappendToken(token: TextToken): void {\n\t\tthis.tokens.push(token);\n\n\t\tswitch (token.textType) {\n\t\t\tcase TextType.TempoNumeral:\n\t\t\t\t{\n\t\t\t\t\t// remove noteheads in text area\n\t\t\t\t\tconst staff = this.staves[0];\n\t\t\t\t\tif (staff) {\n\t\t\t\t\t\tconst oy = staff.top + staff.staffY;\n\t\t\t\t\t\tstaff.measures.forEach((measure) => {\n\t\t\t\t\t\t\tmeasure.tokens = measure.tokens.filter(\n\t\t\t\t\t\t\t\t(t) =>\n\t\t\t\t\t\t\t\t\t!TokenNoteheads.includes(t.type) ||\n\t\t\t\t\t\t\t\t\tMath.abs(t.x - token.x) > token.width / 2 ||\n\t\t\t\t\t\t\t\t\tMath.abs(oy + t.y - token.y) > token.fontSize / 2\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase TextType.Alternation1:\n\t\t\tcase TextType.Alternation2:\n\t\t\t\t//console.log(\"appendToken:\", token, this.staves[0].measures);\n\t\t\t\tthis.staves[0].measures.forEach((measure) => {\n\t\t\t\t\tconst overlap = Math.min(measure.left + measure.width, token.x + token.width / 2) - Math.max(measure.left, token.x - token.width / 2);\n\t\t\t\t\tmeasure.alternative = measure.alternative || overlap / measure.width > 0.5;\n\t\t\t\t});\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nclass Page extends SimpleClass {\n\tstatic className = 'Page';\n\tstatic blackKeys = ['index', 'tokens'];\n\n\tindex?: number;\n\n\t// in units\n\twidth: number;\n\theight: number;\n\n\tsystems: System[];\n\n\tsource: SourceImageFile;\n\tlayout?: PageLayout;\n\n\tsemantics: SemanticPoint[];\n\ttokens?: Token[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.systems = this.systems || [];\n\n\t\tif (this.source) {\n\t\t\tthis.source.matrix = this.source.matrix || [1, 0, 0, 1, 0, 0];\n\t\t}\n\t}\n\n\tget sidBlackList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidBlackList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget sidWhiteList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidWhiteList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tclearTokens(): void {\n\t\tthis.semantics = null;\n\t\tthis.tokens = null;\n\n\t\tthis.systems.forEach((system) => (system.tokens = null));\n\t}\n\n\tassignTexts(areas: TextArea[], [imageHeight, imageWidth]: [number, number]): void {\n\t\tconst interval = this.source && this.source.interval ? this.source.interval * (imageHeight / this.source.dimensions.height) : imageHeight / this.height;\n\n\t\tthis.semantics = areas.map((area) => {\n\t\t\tconst p = {\n\t\t\t\tx: (area.cx - imageWidth / 2) / interval,\n\t\t\t\ty: (area.cy - imageHeight / 2) / interval,\n\t\t\t};\n\t\t\tconst rp = this.source && this.source.matrix ? trans23(p, this.source.matrix) : p;\n\n\t\t\treturn {\n\t\t\t\tconfidence: area.score,\n\t\t\t\tx: rp.x + this.width / 2,\n\t\t\t\ty: rp.y + this.height / 2,\n\t\t\t\tsemantic: SemanticType.rect_Text,\n\t\t\t\textension: {\n\t\t\t\t\ttext: area.text,\n\t\t\t\t\ttype: area.type,\n\t\t\t\t\twidth: area.width / interval,\n\t\t\t\t\theight: area.height / interval,\n\t\t\t\t\ttheta: area.theta,\n\t\t\t\t\ttextFeature: area.feature_dict,\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tassemble({ textAnnotations = null }: { textAnnotations?: { [id: string]: string } } = {}, logger: Logger = new DummyLogger()): void {\n\t\tthis.tokens = [];\n\t\tthis.systems.forEach((system) => (system.tokens = []));\n\n\t\t// compute system indent\n\t\tif (this.systems.length) {\n\t\t\tconst sysXs = this.systems.map((system) => system.left);\n\t\t\tconst middleX = sysXs[Math.floor((sysXs.length - 1) / 2)];\n\t\t\tthis.systems.forEach((system) => (system.indent = system.left > middleX + INDENT_THRESHOLD));\n\t\t}\n\n\t\tif (this.semantics) {\n\t\t\tconst pageName = this.source ? this.source.name : this.index.toString();\n\n\t\t\tthis.semantics.forEach((point) => {\n\t\t\t\thashPageSemanticPoint(pageName, point);\n\n\t\t\t\tconst fields = {\n\t\t\t\t\tid: point.id,\n\t\t\t\t\ttype: TokenType.Text,\n\t\t\t\t\tconfidence: point.confidence,\n\t\t\t\t\ttextType: TEXT_TYPE_ALIAS[point.extension.type] || point.extension.type,\n\t\t\t\t\ttext: (textAnnotations && textAnnotations[point.id]) || point.extension.text,\n\t\t\t\t\ttextFeasure: point.extension.textFeature,\n\t\t\t\t\twidth: point.extension.width,\n\t\t\t\t\tfontSize: point.extension.height,\n\t\t\t\t};\n\n\t\t\t\tswitch (point.semantic) {\n\t\t\t\t\tcase SemanticType.rect_Text:\n\t\t\t\t\t\tswitch (fields.textType) {\n\t\t\t\t\t\t\t// page tokens\n\t\t\t\t\t\t\tcase TextType.Title:\n\t\t\t\t\t\t\tcase TextType.Author:\n\t\t\t\t\t\t\tcase TextType.PageMargin:\n\t\t\t\t\t\t\tcase TextType.Other:\n\t\t\t\t\t\t\t\tthis.tokens.push(\n\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\tx: point.x,\n\t\t\t\t\t\t\t\t\t\ty: point.y,\n\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// tokens on the top of system\n\t\t\t\t\t\t\tcase TextType.TempoNumeral:\n\t\t\t\t\t\t\tcase TextType.Chord:\n\t\t\t\t\t\t\tcase TextType.MeasureNumber:\n\t\t\t\t\t\t\tcase TextType.Instrument:\n\t\t\t\t\t\t\tcase TextType.Alternation1:\n\t\t\t\t\t\t\tcase TextType.Alternation2:\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconst system = this.systems.find((system) => system.top + system.staffTop > point.y);\n\t\t\t\t\t\t\t\t\tif (system) {\n\t\t\t\t\t\t\t\t\t\tsystem.appendToken(\n\t\t\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\t\t\tx: point.x - system.left,\n\t\t\t\t\t\t\t\t\t\t\t\ty: point.y - system.top,\n\t\t\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// tokens in staff\n\t\t\t\t\t\t\tcase TextType.TextualMark:\n\t\t\t\t\t\t\tcase TextType.Times:\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconst system = [...this.systems].reverse().find((system) => system.top < point.y);\n\t\t\t\t\t\t\t\t\tif (system) {\n\t\t\t\t\t\t\t\t\t\tconst sy = point.y - (system.top + system.staffTop);\n\t\t\t\t\t\t\t\t\t\tconst sx = point.x - system.left;\n\t\t\t\t\t\t\t\t\t\tconst staff = system.staves.find((staff) => sy >= staff.top && sy < staff.top + staff.height);\n\t\t\t\t\t\t\t\t\t\tif (staff) {\n\t\t\t\t\t\t\t\t\t\t\tconst measure = staff.measures.find((measure) => sx >= measure.left && sx < measure.left + measure.width);\n\t\t\t\t\t\t\t\t\t\t\tif (measure) {\n\t\t\t\t\t\t\t\t\t\t\t\tmeasure.tokens.push(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tx: sx,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ty: sy,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\nexport { Measure, Staff, System, Page };\n","import { ChordColumn, Fraction } from './interfaces';\nimport { GraceType } from './term';\nimport { roundNumber } from './utils';\nimport { SimpleClass } from './aux_/typedJSON';\n\nenum SemanticElementType {\n\tBOS,\n\tPAD,\n\n\tNoteheadS0,\n\tNoteheadS1,\n\tNoteheadS2,\n\tNoteheadGrace,\n\tvline_Stem,\n\tFlag3,\n\tBeamLeft,\n\tBeamContinue,\n\tBeamRight,\n\tDot,\n\tRest0,\n\tRest1,\n\tRest2,\n\tRest3,\n\tRest4,\n\tRest5,\n\tRest6,\n\n\t// measure time signature denominators & numerators\n\tTimeD2,\n\tTimeD4,\n\tTimeD8,\n\tTimeN1,\n\tTimeN2,\n\tTimeN3,\n\tTimeN4,\n\tTimeN5,\n\tTimeN6,\n\tTimeN7,\n\tTimeN8,\n\tTimeN9,\n\tTimeN10,\n\tTimeN11,\n\tTimeN12,\n}\n\nconst TIME_SIG_DENOMINATORS = Object.fromEntries([2, 4, 8].map((n) => [n, SemanticElementType[`TimeD${n}`]]));\nconst TIME_SIG_NUMERATORS = Object.fromEntries(\n\tArray(12)\n\t\t.fill(null)\n\t\t.map((_, i) => i + 1)\n\t\t.map((n) => [n, SemanticElementType[`TimeN${n}`]])\n);\n\nconst et = SemanticElementType;\n\nconst ELEMENT_TOKEN_NAMES = {\n\t[et.BOS]: 'BOS',\n\t[et.NoteheadS0]: 'noteheads-s0',\n\t[et.NoteheadS1]: 'noteheads-s1',\n\t[et.NoteheadS2]: 'noteheads-s2',\n\t[et.NoteheadGrace]: 'GraceNotehead',\n\t[et.Flag3]: 'flags-u3',\n\t[et.BeamLeft]: 'BeamLeft',\n\t[et.BeamContinue]: 'BeamContinue',\n\t[et.BeamRight]: 'BeamRight',\n\t[et.Dot]: 'dot',\n\t[et.Rest0]: 'rests-0o',\n\t[et.Rest1]: 'rests-1o',\n\t[et.Rest2]: 'rests-2',\n\t[et.Rest3]: 'rests-3',\n\t[et.Rest4]: 'rests-4',\n\t[et.Rest5]: 'rests-5',\n\t[et.Rest6]: 'rests-6',\n};\n\nconst NOTEHEAD_BASE_DIVISION = {\n\t[et.NoteheadS0]: 0,\n\t[et.NoteheadS1]: 1,\n\t[et.NoteheadS2]: 2,\n\t[et.NoteheadGrace]: 2,\n};\n\nconst NOTEHEAD_ELEMENT_TYPES = [et.NoteheadS0, et.NoteheadS1, et.NoteheadS2, et.NoteheadGrace];\n\nconst REST_ELEMENT_TYPES = [et.Rest0, et.Rest1, et.Rest2, et.Rest3, et.Rest4, et.Rest5, et.Rest6];\n\nconst BEAM_ELEMENT_TYPES = [et.BeamLeft, et.BeamContinue, et.BeamRight];\n\nconst NOTE_ELEMENT_TYPES = [...NOTEHEAD_ELEMENT_TYPES, ...REST_ELEMENT_TYPES];\n\nconst SOURCE_ELEMENT_TYPES = [...NOTEHEAD_ELEMENT_TYPES, ...REST_ELEMENT_TYPES, et.vline_Stem];\n\nconst TARGET_ELEMENT_TYPES = [et.BOS, et.NoteheadS0, et.vline_Stem, ...REST_ELEMENT_TYPES];\n\nconst ROOT_NOTE_ELEMENT_TYPES = [...NOTE_ELEMENT_TYPES, et.vline_Stem];\n\nconst ELEMENT_TO_STEMBEAM = {\n\t[et.BeamLeft]: 'Open',\n\t[et.BeamRight]: 'Close',\n};\n\ninterface SemanticElement {\n\ttype: SemanticElementType;\n\tstaff: number;\n\tx: number;\n\ty1: number;\n\ty2: number;\n\n\tindex?: number;\n\ttick?: number;\n\tid?: string;\n}\n\ntype Matrix = number[][];\n\nconst metaElem = (type: SemanticElementType): SemanticElement => ({\n\ttype,\n\tstaff: -1,\n\tx: 0,\n\ty1: 0,\n\ty2: 0,\n});\n\nconst BOS_ELEMENT = metaElem(SemanticElementType.BOS);\n\nconst fractionToElems = (fraction: Fraction): SemanticElement[] => [\n\tmetaElem(TIME_SIG_NUMERATORS[fraction.numerator]),\n\tmetaElem(TIME_SIG_DENOMINATORS[fraction.denominator]),\n];\n\nconst argmax = (data: number[], mask: boolean[]): number => {\n\tconst values = data.filter((_, i) => mask[i]);\n\tconst max = Math.max(...values);\n\n\treturn data.findIndex((x) => x === max);\n};\n\nclass SemanticCluster extends SimpleClass {\n\tindex?: number;\n\n\telements: SemanticElement[];\n\tmatrixH?: Matrix; // matrix N x N\n\t_matrixV?: Matrix; // matrix N x N\n\tgroupsV?: number[][]; // ids array\n\tmasks?: [boolean[], boolean[], boolean[]]; // the masks for: [jointer source, jointer target, V]\n\n\tstatic elementToJSON(elem: SemanticElement): object {\n\t\tconst result: any = {\n\t\t\ttype: elem.type,\n\t\t\tstaff: elem.staff,\n\t\t\tx: elem.x,\n\t\t\ty1: elem.y1,\n\t\t\ty2: elem.y2,\n\t\t};\n\n\t\tif (elem.id) result.id = elem.id;\n\n\t\treturn result;\n\t}\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\tget sourceMask(): boolean[] {\n\t\treturn this.elements.map((elem) => SOURCE_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget targetMask(): boolean[] {\n\t\treturn this.elements.map((elem) => TARGET_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget vMask(): boolean[] {\n\t\treturn this.elements.map((elem) => ROOT_NOTE_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget compactMatrixH(): Matrix {\n\t\tif (!this.matrixH) return null;\n\n\t\tconst sourceMask = this.sourceMask;\n\t\tconst targetMask = this.targetMask;\n\n\t\treturn this.matrixH.filter((_, i) => sourceMask[i]).map((row) => row.filter((_, j) => targetMask[j]));\n\t}\n\n\tset compactMatrixH(value: Matrix) {\n\t\tthis.matrixH = expandMatrixByMasks([].concat(...value), [this.sourceMask, this.targetMask]);\n\t}\n\n\tget compactMatrixV(): number[] {\n\t\tif (!this._matrixV) return null;\n\n\t\tconst vMask = this.vMask;\n\n\t\tconst matrix = this._matrixV.filter((_, i) => vMask[i]).map((row) => row.filter((_, j) => vMask[j]));\n\n\t\treturn [].concat(...matrix.map((row, i) => row.slice(0, i)));\n\t}\n\n\tset compactMatrixV(value: number[]) {\n\t\tthis.matrixV = value && expandMatrixByMaskTriu(value, this.vMask);\n\t}\n\n\tget matrixV(): Matrix {\n\t\treturn this.groupsV && matrixFromGroups(this.elements.length, this.groupsV);\n\t}\n\n\tset matrixV(value: Matrix) {\n\t\tif (!value) {\n\t\t\tthis.groupsV = null;\n\t\t\tthis._matrixV = value;\n\t\t\treturn;\n\t\t}\n\n\t\tconst THRESHOLD = 0.5;\n\n\t\tconst groups: number[][] = [];\n\t\tconst vMask = value.map((row, i) => row.some(Number.isFinite) || value.some((row) => Number.isFinite(row[i])));\n\n\t\tvalue.forEach((row, i) => {\n\t\t\tif (vMask[i]) {\n\t\t\t\tlet found = false;\n\n\t\t\t\tfor (let j = 0; j < i; ++j) {\n\t\t\t\t\tconst cell = row[j];\n\t\t\t\t\tif (cell >= THRESHOLD) {\n\t\t\t\t\t\tconst g = groups.findIndex((group) => group.includes(j));\n\t\t\t\t\t\tgroups[g].push(i);\n\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!found) groups.push([i]);\n\t\t\t}\n\t\t});\n\n\t\tthis.groupsV = groups;\n\t\tthis._matrixV = value;\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\t__prototype: 'SemanticCluster',\n\t\t\tindex: this.index,\n\t\t\telements: this.elements.map(SemanticCluster.elementToJSON),\n\t\t\tcompactMatrixH: this.compactMatrixH,\n\t\t\tcompactMatrixV: this.compactMatrixV,\n\t\t\t//groupsV: this.groupsV,\n\t\t};\n\t}\n\n\tstatic mapMatrix(matrix: number[][], x2i: number[], i2x: number[]): number[][] {\n\t\tconst rows = x2i.reduce((rows, i, x) => {\n\t\t\tif (rows[i]) rows[i] = rows[i].map((v, xi) => (v + matrix[x][xi] ? 1 : 0));\n\t\t\telse rows[i] = matrix[x];\n\n\t\t\treturn rows;\n\t\t}, [] as number[][]);\n\n\t\treturn rows.map((row) => i2x.map((x) => row[x]));\n\t}\n\n\tmergeOverlapping() {\n\t\tconst overlaps = this.overlappedNoteheads();\n\t\tif (overlaps.length) {\n\t\t\tconst x2i = this.elements.map((_, index) => {\n\t\t\t\tconst pair = overlaps.find((ij) => index === ij[1]);\n\t\t\t\tconst i = pair ? pair[0] : index;\n\n\t\t\t\treturn i - overlaps.filter((ij) => ij[1] < i).length;\n\t\t\t});\n\t\t\tconst i2x = Array(this.elements.length - overlaps.length)\n\t\t\t\t.fill(null)\n\t\t\t\t.map((_, i) => x2i.findIndex((ii) => ii === i));\n\n\t\t\tthis.elements = i2x.map((x) => this.elements[x]);\n\t\t\tconsole.assert(this.elements.every(Boolean), 'null element found:', this, x2i, i2x);\n\n\t\t\tthis.matrixH = SemanticCluster.mapMatrix(this.matrixH, x2i, i2x);\n\t\t\tthis.groupsV = this.groupsV.map((group) => Array.from(new Set(group.map((x) => x2i[x]))));\n\t\t}\n\t}\n\n\toverlappedNoteheads(): [number, number][] {\n\t\tconst indices = [];\n\n\t\tconst noteheads = this.elements.filter((elem) => NOTEHEAD_ELEMENT_TYPES.includes(elem.type));\n\t\tfor (let i = 0; i < noteheads.length; ++i) {\n\t\t\tconst nh1 = noteheads[i];\n\t\t\tfor (let j = i + 1; j < noteheads.length; ++j) {\n\t\t\t\tconst nh2 = noteheads[j];\n\t\t\t\tif ((nh1.x - nh2.x) * (nh1.x - nh2.x) + (nh1.y1 - nh2.y1) * (nh1.y1 - nh2.y1) < 0.2 ** 2) indices.push([nh1.index, nh2.index]);\n\t\t\t}\n\t\t}\n\n\t\treturn indices;\n\t}\n\n\tgetEvents(): ChordColumn[] {\n\t\tconsole.assert(this.matrixH, '[SemanticCluster.getEvents]\tmatrixH is null.');\n\n\t\tconst NOTE_STEM_CONFIDENCE = 0.5;\n\n\t\tconst ids = Array(this.elements.length)\n\t\t\t.fill(null)\n\t\t\t.map((_, index) => index);\n\n\t\tconst targetMask = this.masks ? this.masks[1] : ids.map((id) => TARGET_ELEMENT_TYPES.includes(this.elements[id].type));\n\n\t\t//const stems = ids.filter(i => this.elements[i].type === et.vline_Stem);\n\t\tconst stemMasks = ids.map((id) => this.elements[id].type === et.vline_Stem && this.elements[id].y2 - this.elements[id].y1 > 2); // TODO: sift out too short stems by rectification model\n\t\tconst stemNotes = ids.filter((i) => [et.NoteheadS1, et.NoteheadS2, et.NoteheadGrace].includes(this.elements[i].type));\n\t\tconst s0s = ids.filter((i) => this.elements[i].type === et.NoteheadS0);\n\t\tconst subS0Masks = ids.map(() => false);\n\n\t\t// root elements: top NoteheadS0, Rests, stem with noteheads\n\t\tconst stemMap: { [stem: number]: number[] } = {};\n\t\tstemNotes.forEach((id) => {\n\t\t\tconst note = this.elements[id];\n\t\t\tconst stems = ids\n\t\t\t\t.filter((i) => stemMasks[i])\n\t\t\t\t.filter((stemId) => this.elements[stemId].y1 - 0.5 < note.y1 && this.elements[stemId].y2 + 0.5 > note.y1) // filter by stem Y range\n\t\t\t\t.sort((i1, i2) => this.matrixH[id][i2] - this.matrixH[id][i1]) // sort by confidence\n\t\t\t\t.slice(0, 2)\n\t\t\t\t.filter((i, ii) => ii === 0 || this.matrixH[id][i] >= NOTE_STEM_CONFIDENCE);\n\t\t\tstems.forEach((stem) => {\n\t\t\t\tstemMap[stem] = stemMap[stem] || [];\n\t\t\t\tstemMap[stem].push(id);\n\t\t\t});\n\t\t});\n\n\t\ts0s.forEach((id) => {\n\t\t\tconst s0 = this.elements[id];\n\t\t\tconst prevId = argmax(this.matrixH[id], targetMask);\n\t\t\tconst prev = this.elements[prevId];\n\t\t\tif (prev.type === et.NoteheadS0 && Math.abs(s0.x - prev.x) < 2.6) {\n\t\t\t\tsubS0Masks[id] = true;\n\t\t\t\tstemMap[prevId] = stemMap[prevId] || [prevId];\n\t\t\t\tstemMap[prevId].push(id);\n\t\t\t} else stemMap[id] = stemMap[id] || [id];\n\t\t});\n\n\t\t// setup linkings\n\t\tconst linkings: { [key: number]: number } = {};\n\n\t\tconst roots = ids.filter((id) => stemMap[id] || REST_ELEMENT_TYPES.includes(this.elements[id].type));\n\t\troots.sort((i1, i2) => this.elements[i1].x - this.elements[i2].x); // traverse roots from left to right later\n\n\t\tconst parentMasks = ids.map((id) => id === et.BOS);\n\t\troots.forEach((id) => {\n\t\t\tconst parentId = argmax(this.matrixH[id], parentMasks);\n\t\t\tlinkings[id] = parentId;\n\n\t\t\tif (parentId && !REST_ELEMENT_TYPES.includes(this.elements[parentId].type)) parentMasks[parentId] = false;\n\n\t\t\tparentMasks[id] = true;\n\t\t});\n\t\t//console.log(\"topology:\", stemMap, linkings);\n\n\t\tconst dots = this.elements.filter((elem) => elem.type === et.Dot);\n\t\tconst flags = this.elements.filter((elem) => elem.type === et.Flag3);\n\t\tconst beams = this.elements.filter((elem) => BEAM_ELEMENT_TYPES.includes(elem.type));\n\n\t\tconst groupsV = this.groupsV;\n\n\t\treturn roots\n\t\t\t.map((rootId): ChordColumn => {\n\t\t\t\tconst root = this.elements[rootId];\n\n\t\t\t\tconst tickGroup = groupsV ? groupsV.findIndex((group) => group.includes(rootId)) : null;\n\n\t\t\t\tif (REST_ELEMENT_TYPES.includes(root.type)) {\n\t\t\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > root.x + 0.5 && dot.x < root.x + 0.75 + 1.2 && dot.y1 > root.y1 - 1 && dot.y1 < root.y1);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tleft: root.x - 0.75,\n\t\t\t\t\t\tright: root.x + 0.75,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\trest: true,\n\t\t\t\t\t\tys: [root.y1],\n\t\t\t\t\t\tnoteIds: [root.id],\n\t\t\t\t\t\tdots: nearbyDots.length,\n\t\t\t\t\t\tdivision: root.type - et.Rest0,\n\t\t\t\t\t\tstemDirection: null,\n\t\t\t\t\t\tid: rootId,\n\t\t\t\t\t\tprevId: linkings[rootId],\n\t\t\t\t\t\tstaff: root.staff,\n\t\t\t\t\t\ttickGroup,\n\t\t\t\t\t};\n\t\t\t\t} else if (stemMap[rootId]) {\n\t\t\t\t\tconst subNotes = stemMap[rootId].map((id) => this.elements[id]);\n\t\t\t\t\tconst left = Math.min(...subNotes.map((n) => n.x - 0.7));\n\t\t\t\t\tconst right = Math.max(...subNotes.map((n) => n.x + 0.7));\n\t\t\t\t\tsubNotes.sort((n1, n2) => n2.y1 - n1.y1);\n\n\t\t\t\t\tconst ys = subNotes.map((note) => note.y1);\n\n\t\t\t\t\tconst noteIds = subNotes.map((note) => note.id);\n\n\t\t\t\t\tconst top = ys[0];\n\t\t\t\t\tconst bottom = ys[ys.length - 1];\n\n\t\t\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > right && dot.x < right + 1.2 && dot.y1 > top - 1 && dot.y1 < bottom + 0.5);\n\t\t\t\t\tconst dotGroups: { [key: number]: SemanticElement[] } = nearbyDots.reduce((groups, dot) => {\n\t\t\t\t\t\tconst y = roundNumber(dot.y1, 0.5);\n\t\t\t\t\t\tgroups[y] = groups[y] || [];\n\t\t\t\t\t\tgroups[y].push(dot);\n\n\t\t\t\t\t\treturn groups;\n\t\t\t\t\t}, {});\n\t\t\t\t\tconst dotValue = Math.max(...Object.values(dotGroups).map((group) => group.length), 0);\n\n\t\t\t\t\tlet division = NOTEHEAD_BASE_DIVISION[subNotes[0].type];\n\n\t\t\t\t\tlet stemDirection = null;\n\t\t\t\t\tlet beam: string = null;\n\t\t\t\t\tlet tip = null;\n\t\t\t\t\tif (root.type === et.vline_Stem) {\n\t\t\t\t\t\tconst topTip = top - root.y1;\n\t\t\t\t\t\tconst bottomTip = root.y2 - bottom;\n\t\t\t\t\t\tstemDirection = topTip > bottomTip ? 'u' : 'd';\n\n\t\t\t\t\t\ttip = { x: root.x, y: stemDirection === 'u' ? root.y1 : root.y2 };\n\n\t\t\t\t\t\tif (division === 2) {\n\t\t\t\t\t\t\tconst flagRange = stemDirection === 'u' ? [root.y1 - 0.4, root.y2 - 1] : [root.y1 + 1, root.y2 + 0.4];\n\t\t\t\t\t\t\tconst nearbyFlags = flags.filter((flag) => Math.abs(flag.x - root.x) < 0.2 && flag.y1 > flagRange[0] && flag.y1 < flagRange[1]);\n\t\t\t\t\t\t\tdivision += nearbyFlags.length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//const tipY = stemDirection === \"u\" ? root.y1 : root.y2;\n\t\t\t\t\t\tconst tipRange = stemDirection === 'u' ? [root.y1 - 0.2, root.y1 + 0.9] : [root.y2 - 0.9, root.y2 + 0.2];\n\t\t\t\t\t\tconst beamElem = beams.find((beam) => Math.abs(beam.x - root.x) < 0.2 && beam.y1 > tipRange[0] && beam.y1 < tipRange[1]);\n\t\t\t\t\t\tbeam = beamElem ? ELEMENT_TO_STEMBEAM[beamElem.type] : null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst grace = subNotes[0].type === SemanticElementType.NoteheadGrace ? GraceType.Grace : null;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\tright,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\tys,\n\t\t\t\t\t\ttip,\n\t\t\t\t\t\tnoteIds,\n\t\t\t\t\t\tdivision,\n\t\t\t\t\t\tdots: dotValue,\n\t\t\t\t\t\trest: false,\n\t\t\t\t\t\tstemDirection,\n\t\t\t\t\t\tbeam,\n\t\t\t\t\t\tid: rootId,\n\t\t\t\t\t\tprevId: linkings[rootId],\n\t\t\t\t\t\tstaff: subNotes[0].staff,\n\t\t\t\t\t\tgrace,\n\t\t\t\t\t\ttickGroup,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t}\n}\n\ninterface SemanticClusterSetData {\n\tvocab?: string[];\n\tclusters: SemanticCluster[];\n}\n\nclass SemanticClusterSet {\n\tclusters: SemanticCluster[];\n\n\tconstructor(data?: SemanticClusterSetData) {\n\t\tif (data) {\n\t\t\tthis.clusters = data.clusters;\n\n\t\t\t// upgrade vocab\n\t\t\tif (data.vocab) {\n\t\t\t\tconst converts = data.vocab\n\t\t\t\t\t.map((name, i) => [i, SemanticElementType[name]])\n\t\t\t\t\t.filter(([x, y]) => x !== y)\n\t\t\t\t\t.reduce((table, [x, y]) => ((table[x] = y), table), {});\n\t\t\t\tthis.clusters.forEach((connection) =>\n\t\t\t\t\tconnection.elements.forEach((elem) => {\n\t\t\t\t\t\tif (Number.isFinite(converts[elem.type])) elem.type = converts[elem.type];\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\ttoJSON() {\n\t\tconst vocab = Object.entries(SemanticElementType)\n\t\t\t.filter((entry) => Number.isFinite(entry[1]))\n\t\t\t.map((entry) => entry[0]);\n\n\t\treturn {\n\t\t\t__prototype: 'SemanticClusterSet',\n\t\t\tvocab,\n\t\t\tclusters: this.clusters.map((c) => c.toJSON()),\n\t\t};\n\t}\n}\n\nconst expandMatrixByMasks = (matrix: number[], masks: [boolean[], boolean[]]): Matrix => {\n\tconst gen = function* (): Generator {\n\t\tfor (const x of matrix) yield x;\n\t};\n\tconst iter = gen();\n\n\tconst [maskSrc, maskTar] = masks;\n\n\treturn maskSrc.map((src) => maskTar.map((tar) => (src && tar ? iter.next().value : null)));\n};\n\nconst expandMatrixByMaskTriu = (matrix: number[], mask: boolean[]): Matrix => {\n\tconst gen = function* (): Generator {\n\t\tfor (const x of matrix) yield x;\n\t};\n\tconst iter = gen();\n\n\treturn mask.map((row, i) => mask.map((column, j) => (row && column && j < i ? iter.next().value : null)));\n};\n\nconst matrixFromGroups = (len: number, groups: number[][]): Matrix => {\n\tconst groupIds = Array(len)\n\t\t.fill(null)\n\t\t.map((_, i) => groups.findIndex((group) => group.includes(i)));\n\n\treturn Array(len)\n\t\t.fill(null)\n\t\t.map((_, i) =>\n\t\t\tArray(len)\n\t\t\t\t.fill(null)\n\t\t\t\t.map((_, j) => {\n\t\t\t\t\tif (j >= i) return null;\n\n\t\t\t\t\tconst id1 = groupIds[i];\n\t\t\t\t\tconst id2 = groupIds[j];\n\n\t\t\t\t\tif (id1 < 0 || id2 < 0) return null;\n\n\t\t\t\t\treturn id1 === id2 ? 1 : 0;\n\t\t\t\t})\n\t\t);\n};\n\nexport {\n\tSemanticElementType,\n\tSemanticElement,\n\tSemanticCluster,\n\tSemanticClusterSet,\n\tELEMENT_TOKEN_NAMES,\n\tNOTEHEAD_ELEMENT_TYPES,\n\tNOTE_ELEMENT_TYPES,\n\tBOS_ELEMENT,\n\tfractionToElems,\n\texpandMatrixByMasks,\n\texpandMatrixByMaskTriu,\n\tmatrixFromGroups,\n};\n","import { MusicNotation } from '@k-l-lambda/music-widgets';\n\n// implicit note (from expressive marks) types\nenum ImplicitType {\n\tNone = 0,\n\n\tMordent = 'mordent',\n\tPrall = 'prall',\n\tTurn = 'turn',\n\tTrill = 'trill',\n\tTremolo = 'tremolo',\n\tArpeggio = 'arpeggio',\n}\n\ninterface ChordPosition {\n\tindex: number;\n\tcount: number;\n}\n\nclass TokenPosition {\n\tsystem?: number;\n\tmeasure?: number;\n\tx: number;\n\tendX?: number;\n}\n\ninterface Note extends MusicNotation.Note {\n\tchordPosition?: ChordPosition;\n\tmeasure?: number;\n}\n\ninterface Notation {\n\tnotes: Note[];\n\tendTick: number;\n}\n\ninterface SheetPosition {\n\tsystem: number;\n\tx: number;\n}\n\nexport { ChordPosition, ImplicitType, TokenPosition, Note, Notation, SheetPosition };\n","/*\nclass to parse the .mid file format\n(depends on stream.js)\n*/\n\nconst Stream = require(\"./stream.js\");\n\n\n\nmodule.exports = function MidiFile (data) {\n\tfunction readChunk (stream) {\n\t\tconst id = stream.readString(4);\n\t\tconst length = stream.readInt32();\n\n\t\treturn {\n\t\t\tid,\n\t\t\tlength,\n\t\t\tdata: stream.read(length),\n\t\t};\n\t}\n\n\tlet lastEventTypeByte;\n\n\tfunction readEvent (stream) {\n\t\tconst event = {};\n\t\tevent.deltaTime = stream.readVarInt();\n\t\tlet eventTypeByte = stream.readInt8();\n\t\tif ((eventTypeByte & 0xf0) === 0xf0) {\n\t\t\t// system / meta event\n\t\t\tif (eventTypeByte === 0xff) {\n\t\t\t\t// meta event\n\t\t\t\tevent.type = \"meta\";\n\t\t\t\tconst subtypeByte = stream.readInt8();\n\t\t\t\tconst length = stream.readVarInt();\n\n\t\t\t\tswitch (subtypeByte) {\n\t\t\t\tcase 0x00:\n\t\t\t\t\tevent.subtype = \"sequenceNumber\";\n\t\t\t\t\tif (length !== 2)\n\t\t\t\t\t\tthrow new Error(\"Expected length for sequenceNumber event is 2, got \" + length);\n\t\t\t\t\tevent.number = stream.readInt16();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x01:\n\t\t\t\t\tevent.subtype = \"text\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x02:\n\t\t\t\t\tevent.subtype = \"copyrightNotice\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tevent.subtype = \"trackName\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x04:\n\t\t\t\t\tevent.subtype = \"instrumentName\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x05:\n\t\t\t\t\tevent.subtype = \"lyrics\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x06:\n\t\t\t\t\tevent.subtype = \"marker\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x07:\n\t\t\t\t\tevent.subtype = \"cuePoint\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x20:\n\t\t\t\t\tevent.subtype = \"midiChannelPrefix\";\n\t\t\t\t\tif (length !== 1)\n\t\t\t\t\t\tthrow new Error(\"Expected length for midiChannelPrefix event is 1, got \" + length);\n\t\t\t\t\tevent.channel = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x2f:\n\t\t\t\t\tevent.subtype = \"endOfTrack\";\n\t\t\t\t\tif (length !== 0)\n\t\t\t\t\t\tthrow new Error(\"Expected length for endOfTrack event is 0, got \" + length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x51:\n\t\t\t\t\tevent.subtype = \"setTempo\";\n\t\t\t\t\tif (length !== 3)\n\t\t\t\t\t\tthrow new Error(\"Expected length for setTempo event is 3, got \" + length);\n\t\t\t\t\tevent.microsecondsPerBeat = (\n\t\t\t\t\t\t(stream.readInt8() << 16) +\n\t\t\t\t\t\t\t(stream.readInt8() << 8) +\n\t\t\t\t\t\t\tstream.readInt8()\n\t\t\t\t\t);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x54:\n\t\t\t\t\tevent.subtype = \"smpteOffset\";\n\t\t\t\t\tif (length !== 5)\n\t\t\t\t\t\tthrow new Error(\"Expected length for smpteOffset event is 5, got \" + length);\n\t\t\t\t\tconst hourByte = stream.readInt8();\n\t\t\t\t\tevent.frameRate = {\n\t\t\t\t\t\t0x00: 24, 0x20: 25, 0x40: 29, 0x60: 30,\n\t\t\t\t\t}[hourByte & 0x60];\n\t\t\t\t\tevent.hour = hourByte & 0x1f;\n\t\t\t\t\tevent.min = stream.readInt8();\n\t\t\t\t\tevent.sec = stream.readInt8();\n\t\t\t\t\tevent.frame = stream.readInt8();\n\t\t\t\t\tevent.subframe = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x58:\n\t\t\t\t\tevent.subtype = \"timeSignature\";\n\t\t\t\t\tif (length !== 4)\n\t\t\t\t\t\tthrow new Error(\"Expected length for timeSignature event is 4, got \" + length);\n\t\t\t\t\tevent.numerator = stream.readInt8();\n\t\t\t\t\tevent.denominator = Math.pow(2, stream.readInt8());\n\t\t\t\t\tevent.metronome = stream.readInt8();\n\t\t\t\t\tevent.thirtyseconds = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x59:\n\t\t\t\t\tevent.subtype = \"keySignature\";\n\t\t\t\t\tif (length !== 2)\n\t\t\t\t\t\tthrow new Error(\"Expected length for keySignature event is 2, got \" + length);\n\t\t\t\t\tevent.key = stream.readInt8(true);\n\t\t\t\t\tevent.scale = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x7f:\n\t\t\t\t\tevent.subtype = \"sequencerSpecific\";\n\t\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tdefault:\n\t\t\t\t\t// console.log(\"Unrecognised meta event subtype: \" + subtypeByte);\n\t\t\t\t\tevent.subtype = \"unknown\";\n\t\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\t}\n\n\t\t\t\t//event.data = stream.readString(length);\n\t\t\t\t//return event;\n\t\t\t}\n\t\t\telse if (eventTypeByte === 0xf0) {\n\t\t\t\tevent.type = \"sysEx\";\n\t\t\t\tconst length = stream.readVarInt();\n\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\treturn event;\n\t\t\t}\n\t\t\telse if (eventTypeByte === 0xf7) {\n\t\t\t\tevent.type = \"dividedSysEx\";\n\t\t\t\tconst length = stream.readVarInt();\n\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\treturn event;\n\t\t\t}\n\t\t\telse\n\t\t\t\tthrow new Error(\"Unrecognised MIDI event type byte: \" + eventTypeByte);\n\t\t}\n\t\telse {\n\t\t\t/* channel event */\n\t\t\tlet param1;\n\t\t\tif ((eventTypeByte & 0x80) === 0) {\n\t\t\t\t/* running status - reuse lastEventTypeByte as the event type.\n\t\t\t\t\teventTypeByte is actually the first parameter\n\t\t\t\t*/\n\t\t\t\tparam1 = eventTypeByte;\n\t\t\t\teventTypeByte = lastEventTypeByte;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparam1 = stream.readInt8();\n\t\t\t\tlastEventTypeByte = eventTypeByte;\n\t\t\t}\n\n\t\t\tconst eventType = eventTypeByte >> 4;\n\t\t\tevent.channel = eventTypeByte & 0x0f;\n\t\t\tevent.type = \"channel\";\n\n\t\t\tswitch (eventType) {\n\t\t\tcase 0x08:\n\t\t\t\tevent.subtype = \"noteOff\";\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.velocity = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x09:\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.velocity = stream.readInt8();\n\t\t\t\tif (event.velocity === 0)\n\t\t\t\t\tevent.subtype = \"noteOff\";\n\t\t\t\telse\n\t\t\t\t\tevent.subtype = \"noteOn\";\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0a:\n\t\t\t\tevent.subtype = \"noteAftertouch\";\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.amount = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0b:\n\t\t\t\tevent.subtype = \"controller\";\n\t\t\t\tevent.controllerType = param1;\n\t\t\t\tevent.value = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0c:\n\t\t\t\tevent.subtype = \"programChange\";\n\t\t\t\tevent.programNumber = param1;\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0d:\n\t\t\t\tevent.subtype = \"channelAftertouch\";\n\t\t\t\tevent.amount = param1;\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0e:\n\t\t\t\tevent.subtype = \"pitchBend\";\n\t\t\t\tevent.value = param1 + (stream.readInt8() << 7);\n\n\t\t\t\treturn event;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Unrecognised MIDI event type: \" + eventType);\n\n\t\t\t\t/*\n\t\t\t\tconsole.log(\"Unrecognised MIDI event type: \" + eventType);\n\t\t\t\tstream.readInt8();\n\t\t\t\tevent.subtype = 'unknown';\n\t\t\t\treturn event;\n\t\t\t\t*/\n\t\t\t}\n\t\t}\n\t}\n\n\n\tlet source = data;\n\tif (typeof data === \"string\")\n\t\tsource = data.split(\"\").map(c => c.charCodeAt(0));\n\n\tconst stream = new Stream(source);\n\tconst headerChunk = readChunk(stream);\n\tif (headerChunk.id !== \"MThd\" || headerChunk.length !== 6)\n\t\tthrow new Error(\"Bad .mid file - header not found\");\n\n\tconst headerStream = new Stream(headerChunk.data);\n\tconst formatType = headerStream.readInt16();\n\tconst trackCount = headerStream.readInt16();\n\tconst timeDivision = headerStream.readInt16();\n\n\tlet ticksPerBeat;\n\tif (timeDivision & 0x8000)\n\t\tthrow new Error(\"Expressing time division in SMTPE frames is not supported yet\");\n\telse\n\t\tticksPerBeat = timeDivision;\n\n\n\tconst header = {\n\t\tformatType,\n\t\ttrackCount,\n\t\tticksPerBeat,\n\t};\n\tconst tracks = [];\n\tfor (let i = 0; i < header.trackCount; i++) {\n\t\ttracks[i] = [];\n\t\tconst trackChunk = readChunk(stream);\n\t\tif (trackChunk.id !== \"MTrk\")\n\t\t\tthrow new Error(\"Unexpected chunk - expected MTrk, got \" + trackChunk.id);\n\n\t\tconst trackStream = new Stream(trackChunk.data);\n\t\twhile (!trackStream.eof()) {\n\t\t\tconst event = readEvent(trackStream);\n\t\t\ttracks[i].push(event);\n\t\t}\n\t}\n\n\treturn {\n\t\theader,\n\t\ttracks,\n\t};\n};\n","\n/* Wrapper for accessing buffer through sequential reads */\n\n\n\nmodule.exports = class Stream {\n\tconstructor (buffer) {\n\t\tthis.array = new Uint8Array(buffer);\n\t\tthis.position = 0;\n\t}\n\n\n\teof () {\n\t\treturn this.position >= this.array.length;\n\t}\n\n\n\tread (length) {\n\t\tconst result = this.array.slice(this.position, this.position + length);\n\t\tthis.position += length;\n\n\t\treturn result;\n\t}\n\n\n\treadString (length) {\n\t\tconst data = Array.from(this.read(length));\n\n\t\treturn data.map(c => String.fromCharCode(c)).join(\"\");\n\t}\n\n\n\t// read a big-endian 32-bit integer\n\treadInt32 () {\n\t\tconst result = (\n\t\t\t(this.array[this.position] << 24) +\n\t\t\t(this.array[this.position + 1] << 16) +\n\t\t\t(this.array[this.position + 2] << 8) +\n\t\t\tthis.array[this.position + 3]);\n\t\tthis.position += 4;\n\n\t\treturn result;\n\t}\n\n\n\t// read a big-endian 16-bit integer\n\treadInt16 () {\n\t\tconst result = (\n\t\t\t(this.array[this.position] << 8) +\n\t\t\tthis.array[this.position + 1]);\n\t\tthis.position += 2;\n\n\t\treturn result;\n\t}\n\n\n\t// read an 8-bit integer\n\treadInt8 (signed) {\n\t\tlet result = this.array[this.position];\n\t\tif (signed && result > 127)\n\t\t\tresult -= 256;\n\t\tthis.position += 1;\n\n\t\treturn result;\n\t}\n\n\n\t/* read a MIDI-style variable-length integer\n\t\t(big-endian value in groups of 7 bits,\n\t\twith top bit set to signify that another byte follows)\n\t*/\n\treadVarInt () {\n\t\tlet result = 0;\n\t\twhile (true) {\n\t\t\tconst b = this.readInt8();\n\t\t\tif (b & 0x80) {\n\t\t\t\tresult += (b & 0x7f);\n\t\t\t\tresult <<= 7;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// b is the last byte\n\t\t\t\treturn result + b;\n\t\t\t}\n\t\t}\n\t}\n};\n","/*\r\nclass to encode the .mid file format\r\n(depends on streamEx.js)\r\n*/\r\n\r\nconst OStream = require(\"./streamEx.js\");\r\n\r\n\r\n\r\nmodule.exports = function OMidiFile ({ header, tracks }) {\r\n\tfunction writeChunk (stream, id, data) {\r\n\t\tconsole.assert(id.length === 4, \"chunk id must be 4 byte\");\r\n\r\n\t\tstream.write(id);\r\n\t\tstream.writeInt32(data.length);\r\n\t\tstream.write(data);\r\n\t}\r\n\r\n\tfunction writeEvent (stream, event) {\r\n\t\tif (event.subtype === \"unknown\")\r\n\t\t\treturn;\r\n\r\n\t\tstream.writeVarInt(event.deltaTime);\r\n\r\n\t\tswitch (event.type) {\r\n\t\tcase \"meta\":\r\n\t\t\tstream.writeInt8(0xff);\r\n\r\n\t\t\tswitch (event.subtype) {\r\n\t\t\tcase \"sequenceNumber\":\r\n\t\t\t\tstream.writeInt8(0x00);\r\n\t\t\t\tstream.writeVarInt(2);\r\n\r\n\t\t\t\tstream.writeInt16(event.number);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"text\":\r\n\t\t\t\tstream.writeInt8(0x01);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"copyrightNotice\":\r\n\t\t\t\tstream.writeInt8(0x02);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"trackName\":\r\n\t\t\t\tstream.writeInt8(0x03);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"instrumentName\":\r\n\t\t\t\tstream.writeInt8(0x04);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"lyrics\":\r\n\t\t\t\tstream.writeInt8(0x05);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"marker\":\r\n\t\t\t\tstream.writeInt8(0x06);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"cuePoint\":\r\n\t\t\t\tstream.writeInt8(0x07);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"midiChannelPrefix\":\r\n\t\t\t\tstream.writeInt8(0x20);\r\n\t\t\t\tstream.writeVarInt(1);\r\n\r\n\t\t\t\tstream.writeInt8(event.channel);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"endOfTrack\":\r\n\t\t\t\tstream.writeInt8(0x2f);\r\n\t\t\t\tstream.writeVarInt(0);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"setTempo\":\r\n\t\t\t\tstream.writeInt8(0x51);\r\n\t\t\t\tstream.writeVarInt(3);\r\n\r\n\t\t\t\tstream.writeInt8((event.microsecondsPerBeat >> 16) & 0xff);\r\n\t\t\t\tstream.writeInt8((event.microsecondsPerBeat >> 8) & 0xff);\r\n\t\t\t\tstream.writeInt8(event.microsecondsPerBeat & 0xff);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"smpteOffset\":\r\n\t\t\t\tstream.writeInt8(0x54);\r\n\t\t\t\tstream.writeVarInt(5);\r\n\r\n\t\t\t\tvar frameByte = { 24: 0x00, 25: 0x20, 29: 0x40, 30: 0x60 }[event.frameRate];\r\n\t\t\t\tstream.writeInt8(event.hour | frameByte);\r\n\t\t\t\tstream.writeInt8(event.min);\r\n\t\t\t\tstream.writeInt8(event.sec);\r\n\t\t\t\tstream.writeInt8(event.frame);\r\n\t\t\t\tstream.writeInt8(event.subframe);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"timeSignature\":\r\n\t\t\t\tstream.writeInt8(0x58);\r\n\t\t\t\tstream.writeVarInt(4);\r\n\r\n\t\t\t\tstream.writeInt8(event.numerator);\r\n\t\t\t\tstream.writeInt8(Math.log2(event.denominator));\r\n\t\t\t\tstream.writeInt8(event.metronome);\r\n\t\t\t\tstream.writeInt8(event.thirtyseconds);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"keySignature\":\r\n\t\t\t\tstream.writeInt8(0x59);\r\n\t\t\t\tstream.writeVarInt(2);\r\n\r\n\t\t\t\tstream.writeInt8(event.key);\r\n\t\t\t\tstream.writeInt8(event.scale);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"sequencerSpecific\":\r\n\t\t\t\tstream.writeInt8(0x7f);\r\n\t\t\t\tstream.writeVarInt(event.data.length);\r\n\r\n\t\t\t\tstream.write(event.data);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"unhandled event subtype:\" + event.subtype);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"sysEx\":\r\n\t\t\tstream.writeInt8(0xf0);\r\n\t\t\tstream.writeVarInt(event.data.length);\r\n\t\t\tstream.write(event.data);\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"dividedSysEx\":\r\n\t\t\tstream.writeInt8(0xf7);\r\n\t\t\tstream.writeVarInt(event.data.length);\r\n\t\t\tstream.write(event.data);\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"channel\":\r\n\t\t\tswitch (event.subtype) {\r\n\t\t\tcase \"noteOn\":\r\n\t\t\t\tstream.writeInt8(0x90 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.velocity);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"noteOff\":\r\n\t\t\t\tstream.writeInt8(0x80 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.velocity ? event.velocity : 0);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"noteAftertouch\":\r\n\t\t\t\tstream.writeInt8(0xa0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.amount);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"controller\":\r\n\t\t\t\tstream.writeInt8(0xb0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.controllerType);\r\n\t\t\t\tstream.writeInt8(event.value);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"programChange\":\r\n\t\t\t\tstream.writeInt8(0xc0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.programNumber);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"channelAftertouch\":\r\n\t\t\t\tstream.writeInt8(0xd0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.amount);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pitchBend\":\r\n\t\t\t\tstream.writeInt8(0xe0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.value & 0xff);\r\n\t\t\t\tstream.writeInt8((event.value >> 7) & 0xff);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"unhandled event subtype:\" + event.subtype);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"unhandled event type:\" + event.type);\r\n\t\t}\r\n\t}\r\n\r\n\tconst stream = new OStream();\r\n\r\n\tconst headerChunk = new OStream();\r\n\theaderChunk.writeInt16(header.formatType);\r\n\theaderChunk.writeInt16(tracks.length);\r\n\theaderChunk.writeInt16(header.ticksPerBeat);\r\n\r\n\twriteChunk(stream, \"MThd\", headerChunk.getBuffer());\r\n\r\n\tfor (let i = 0; i < tracks.length; ++i) {\r\n\t\tconst trackChunk = new OStream();\r\n\r\n\t\tfor (let ei = 0; ei < tracks[i].length; ++ei)\r\n\t\t\twriteEvent(trackChunk, tracks[i][ei]);\r\n\r\n\t\twriteChunk(stream, \"MTrk\", trackChunk.getBuffer());\r\n\t}\r\n\r\n\treturn stream.getArrayBuffer();\r\n};\r\n","\r\n/* Wrapper for accessing strings through sequential writes */\r\n\r\n\r\n\r\nmodule.exports = class OStream {\r\n\tconstructor () {\r\n\t\tthis.buffer = \"\";\r\n\t}\r\n\r\n\twrite (str) {\r\n\t\tthis.buffer += str;\r\n\t}\r\n\r\n\t/* write a big-endian 32-bit integer */\r\n\twriteInt32 (i) {\r\n\t\tthis.buffer += String.fromCharCode((i >> 24) & 0xff) + String.fromCharCode((i >> 16) & 0xff) +\r\n\t\t\tString.fromCharCode((i >> 8) & 0xff) + String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write a big-endian 16-bit integer */\r\n\twriteInt16 (i) {\r\n\t\tthis.buffer += String.fromCharCode((i >> 8) & 0xff) + String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write an 8-bit integer */\r\n\twriteInt8 (i) {\r\n\t\tthis.buffer += String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write a MIDI-style variable-length integer\r\n\t\t(big-endian value in groups of 7 bits,\r\n\t\twith top bit set to signify that another byte follows)\r\n\t*/\r\n\twriteVarInt (i) {\r\n\t\tif (i < 0)\r\n\t\t\tthrow new Error(\"OStream.writeVarInt minus number: \" + i);\r\n\r\n\t\tconst b = i & 0x7f;\r\n\t\ti >>= 7;\r\n\t\tlet str = String.fromCharCode(b);\r\n\r\n\t\twhile (i) {\r\n\t\t\tconst b = i & 0x7f;\r\n\t\t\ti >>= 7;\r\n\t\t\tstr = String.fromCharCode(b | 0x80) + str;\r\n\t\t}\r\n\r\n\t\tthis.buffer += str;\r\n\t}\r\n\r\n\tgetBuffer () {\r\n\t\treturn this.buffer;\r\n\t}\r\n\r\n\tgetArrayBuffer () {\r\n\t\treturn Uint8Array.from(this.buffer.split(\"\").map(c => c.charCodeAt(0))).buffer;\r\n\t}\r\n};\r\n","\nmodule.exports = {\n\tparseMidiData: require(\"./midifile.js\"),\n\tencodeMidiFile: require(\"./midifileEx.js\"),\n};\n","\nconst midiToSequence = (midiFile, {timeWarp = 1} = {}) => {\n\tconst trackStates = [];\n\tlet beatsPerMinute = 120;\n\tconst ticksPerBeat = midiFile.header.ticksPerBeat;\n\n\tfor (let i = 0; i < midiFile.tracks.length; i++) {\n\t\ttrackStates[i] = {\n\t\t\tnextEventIndex: 0,\n\t\t\tticksToNextEvent: (\n\t\t\t\tmidiFile.tracks[i].length ?\n\t\t\t\t\tmidiFile.tracks[i][0].deltaTime :\n\t\t\t\t\tnull\n\t\t\t),\n\t\t};\n\t}\n\n\tfunction getNextEvent () {\n\t\tlet ticksToNextEvent = null;\n\t\tlet nextEventTrack = null;\n\t\tlet nextEventIndex = null;\n\n\t\tfor (let i = 0; i < trackStates.length; i++) {\n\t\t\tif (\n\t\t\t\ttrackStates[i].ticksToNextEvent != null\n\t\t\t\t&& (ticksToNextEvent == null || trackStates[i].ticksToNextEvent < ticksToNextEvent)\n\t\t\t) {\n\t\t\t\tticksToNextEvent = trackStates[i].ticksToNextEvent;\n\t\t\t\tnextEventTrack = i;\n\t\t\t\tnextEventIndex = trackStates[i].nextEventIndex;\n\t\t\t}\n\t\t}\n\t\tif (nextEventTrack != null) {\n\t\t\t/* consume event from that track */\n\t\t\tconst nextEvent = midiFile.tracks[nextEventTrack][nextEventIndex];\n\t\t\tif (midiFile.tracks[nextEventTrack][nextEventIndex + 1]) \n\t\t\t\ttrackStates[nextEventTrack].ticksToNextEvent += midiFile.tracks[nextEventTrack][nextEventIndex + 1].deltaTime;\n\t\t\telse \n\t\t\t\ttrackStates[nextEventTrack].ticksToNextEvent = null;\n\n\t\t\ttrackStates[nextEventTrack].nextEventIndex += 1;\n\t\t\t/* advance timings on all tracks by ticksToNextEvent */\n\t\t\tfor (let i = 0; i < trackStates.length; i++) {\n\t\t\t\tif (trackStates[i].ticksToNextEvent != null) \n\t\t\t\t\ttrackStates[i].ticksToNextEvent -= ticksToNextEvent;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tticksToEvent: ticksToNextEvent,\n\t\t\t\tevent: nextEvent,\n\t\t\t\ttrack: nextEventTrack,\n\t\t\t};\n\t\t}\n\t\telse \n\t\t\treturn null;\n\t\t\n\t};\n\t//\n\tlet midiEvent;\n\tconst events = [];\n\t//\n\tfunction processEvents () {\n\t\tfunction processNext () {\n\t\t\tlet secondsToGenerate = 0;\n\t\t\tif (midiEvent.ticksToEvent > 0) {\n\t\t\t\tconst beatsToGenerate = midiEvent.ticksToEvent / ticksPerBeat;\n\t\t\t\tsecondsToGenerate = beatsToGenerate / (beatsPerMinute / 60);\n\t\t\t}\n\n\t\t\t// beatsPerMinute must be changed after secondsToGenerate calculation\n\t\t\tif ( midiEvent.event.type == \"meta\" && midiEvent.event.subtype == \"setTempo\" ) {\n\t\t\t\t// tempo change events can occur anywhere in the middle and affect events that follow\n\t\t\t\tbeatsPerMinute = 60e+6 / midiEvent.event.microsecondsPerBeat;\n\t\t\t}\n\n\t\t\tconst time = (secondsToGenerate * 1000 * timeWarp) || 0;\n\t\t\tevents.push([ midiEvent, time ]);\n\t\t\tmidiEvent = getNextEvent();\n\t\t};\n\t\t//\n\t\tif (midiEvent = getNextEvent()) {\n\t\t\twhile (midiEvent)\n\t\t\t\tprocessNext();\n\t\t}\n\t};\n\n\tprocessEvents();\n\n\treturn events;\n};\n\n\nconst trimSequence = seq => {\n\tconst status = new Map();\n\n\treturn seq.filter(([{event, ticksToEvent}]) => {\n\t\tif (ticksToEvent > 0)\n\t\t\tstatus.clear();\n\n\t\tif (event.type !== \"channel\")\n\t\t\treturn true;\n\n\t\tconst key = `${event.subtype}|${event.channel}|${event.noteNumber}`;\n\n\t\tif (status.get(key)) {\n\t\t\t//console.debug(\"event trimmed:\", event, ticksToEvent);\n\t\t\treturn false;\n\t\t}\n\n\t\tstatus.set(key, event);\n\n\t\treturn true;\n\t});\n};\n\n\nconst fixOverlapNotes = seq => {\n\tconst noteMap = new Map();\n\tconst overlapMap = new Map();\n\tconst swaps = [];\n\n\tlet leapIndex = -1;\n\n\tseq.forEach(([{event, ticksToEvent}], index) => {\n\t\tif (ticksToEvent > 0)\n\t\t\tleapIndex = index;\n\n\t\tif (event.type !== \"channel\")\n\t\t\treturn;\n\n\t\tconst key = `${event.channel}|${event.noteNumber}`;\n\n\t\tswitch (event.subtype) {\n\t\tcase \"noteOn\":\n\t\t\tif (noteMap.get(key))\n\t\t\t\toverlapMap.set(key, leapIndex);\n\t\t\telse\n\t\t\t\tnoteMap.set(key, leapIndex);\n\n\t\t\tbreak;\n\t\tcase \"noteOff\":\n\t\t\tif (overlapMap.get(key)) {\n\t\t\t\tswaps.push([overlapMap.get(key), index]);\n\t\t\t\toverlapMap.delete(key);\n\t\t\t}\n\t\t\telse\n\t\t\t\tnoteMap.delete(key);\n\n\t\t\tbreak;\n\t\t}\n\t});\n\n\t// shift overlapped swaps\n\tswaps.forEach((swap, i) => {\n\t\tfor (let ii = i - 1; ii >= 0; --ii) {\n\t\t\tconst pre = swaps[ii];\n\t\t\tif (pre[1] < swap[0])\n\t\t\t\tbreak;\n\n\t\t\tif (swap[0] > pre[0])\n\t\t\t\t++swap[0];\n\t\t}\n\t});\n\n\t//console.debug(\"swaps:\", swaps);\n\tswaps.forEach(([front, back]) => {\n\t\tif (back >= seq.length - 1 || front < 0)\n\t\t\treturn;\n\n\t\tconst offEvent = seq[back];\n\t\tconst nextEvent = seq[back + 1];\n\t\tconst leapEvent = seq[front];\n\n\t\tif (!leapEvent[0].ticksToEvent) {\n\t\t\tconsole.warn(\"invalid front index:\", front, back, leapEvent);\n\t\t\treturn;\n\t\t}\n\n\t\t// ms per tick\n\t\tconst tempo = leapEvent[1] / leapEvent[0].ticksToEvent;\n\n\t\tnextEvent[1] += offEvent[1];\n\t\tnextEvent[0].ticksToEvent += offEvent[0].ticksToEvent;\n\n\t\toffEvent[0].ticksToEvent = leapEvent[0].ticksToEvent - 1;\n\t\tleapEvent[0].ticksToEvent = 1;\n\n\t\toffEvent[1] = offEvent[0].ticksToEvent * tempo;\n\t\tleapEvent[1] = leapEvent[0].ticksToEvent * tempo;\n\t\t//console.debug(\"swap:\", [front, back], offEvent, nextEvent, leapEvent);\n\n\t\tseq.splice(back, 1);\n\t\tseq.splice(front, 0, offEvent);\n\t});\n\n\treturn seq;\n};\n\n\n\nmodule.exports = {\n\tmidiToSequence,\n\ttrimSequence,\n\tfixOverlapNotes,\n};\n","\nconst MidiSequence = require(\"./MidiSequence.js\");\n\n\n\nconst PedalControllerTypes = {\n\t64: \"Sustain\",\n\t65: \"Portamento\",\n\t66: \"Sostenuto\",\n\t67: \"Soft\",\n};\n\n\n\nclass Notation {\n\tstatic parseMidi (data, {fixOverlap = true} = {}) {\n\t\tconst channelStatus = [];\n\t\tconst pedalStatus = {};\n\t\tconst pedals = {};\n\t\tconst channels = [];\n\t\tconst bars = [];\n\t\tlet time = 0;\n\t\tlet millisecondsPerBeat = 600000 / 120;\n\t\tlet beats = 0;\n\t\tlet numerator = 4;\n\t\tlet barIndex = 0;\n\t\tconst keyRange = {};\n\t\tlet rawTicks = 0;\n\t\tlet ticks = 0;\n\t\tlet correspondences;\n\t\tconst tempos = [];\n\n\t\tconst ticksPerBeat = data.header.ticksPerBeat;\n\n\t\tlet rawEvents = MidiSequence.midiToSequence(data);\n\n\t\tif (fixOverlap)\n\t\t\trawEvents = MidiSequence.trimSequence(MidiSequence.fixOverlapNotes(rawEvents));\n\n\t\tconst events = rawEvents.map(d => ({\n\t\t\tdata: d[0].event,\n\t\t\ttrack: d[0].track,\n\t\t\tdeltaTime: d[1],\n\t\t\tdeltaTicks: d[0].ticksToEvent,\n\t\t}));\n\n\t\tlet index = 0;\n\n\t\tconst ticksNormal = 1;\n\n\t\tfor (const ev of events) {\n\t\t\trawTicks += ev.deltaTicks;\n\t\t\tticks = Math.round(rawTicks * ticksNormal);\n\n\t\t\tif (ev.deltaTicks > 0) {\n\t\t\t\t// append bars\n\t\t\t\tconst deltaBeats = ev.deltaTicks / ticksPerBeat;\n\t\t\t\tfor (let b = Math.ceil(beats); b < beats + deltaBeats; ++b) {\n\t\t\t\t\tconst t = time + (b - beats) * millisecondsPerBeat;\n\t\t\t\t\tbars.push({time: t, index: barIndex % numerator});\n\n\t\t\t\t\t++barIndex;\n\t\t\t\t}\n\n\t\t\t\tbeats += deltaBeats;\n\t\t\t}\n\n\t\t\ttime += ev.deltaTime;\n\n\t\t\t//const ticksTime = beats * millisecondsPerBeat;\n\t\t\t//console.log(\"time:\", time, ticksTime, ticksTime - time);\n\n\t\t\tev.time = time;\n\t\t\tev.ticks = ticks;\n\n\t\t\tconst event = ev.data;\n\t\t\tswitch (event.type) {\n\t\t\tcase \"channel\":\n\t\t\t\t//channelStatus[event.channel] = channelStatus[event.channel] || [];\n\n\t\t\t\tswitch (event.subtype) {\n\t\t\t\tcase \"noteOn\":\n\t\t\t\t\t{\n\t\t\t\t\t\tconst pitch = event.noteNumber;\n\t\t\t\t\t\t//channelStatus[event.channel][pitch] = {\n\t\t\t\t\t\tchannelStatus.push({\n\t\t\t\t\t\t\tchannel: event.channel,\n\t\t\t\t\t\t\tpitch,\n\t\t\t\t\t\t\tstartTick: ticks,\n\t\t\t\t\t\t\tstart: time,\n\t\t\t\t\t\t\tvelocity: event.velocity,\n\t\t\t\t\t\t\tbeats: beats,\n\t\t\t\t\t\t\ttrack: ev.track,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tkeyRange.low = Math.min(keyRange.low || pitch, pitch);\n\n\t\t\t\t\t\tev.index = index;\n\t\t\t\t\t\t++index;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"noteOff\":\n\t\t\t\t\t{\n\t\t\t\t\t\tconst pitch = event.noteNumber;\n\n\t\t\t\t\t\tchannels[event.channel] = channels[event.channel] || [];\n\n\t\t\t\t\t\tconst statusIndex = channelStatus.findIndex(status => status.channel == event.channel && status.pitch == pitch);\n\t\t\t\t\t\tif (statusIndex >= 0) {\n\t\t\t\t\t\t\tconst status = channelStatus.splice(statusIndex, 1)[0];\n\n\t\t\t\t\t\t\tchannels[event.channel].push({\n\t\t\t\t\t\t\t\tchannel: event.channel,\n\t\t\t\t\t\t\t\tstartTick: status.startTick,\n\t\t\t\t\t\t\t\tendTick: ticks,\n\t\t\t\t\t\t\t\tpitch,\n\t\t\t\t\t\t\t\tstart: status.start,\n\t\t\t\t\t\t\t\tduration: time - status.start,\n\t\t\t\t\t\t\t\tvelocity: status.velocity,\n\t\t\t\t\t\t\t\tbeats: status.beats,\n\t\t\t\t\t\t\t\ttrack: status.track,\n\t\t\t\t\t\t\t\tfinger: status.finger,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tconsole.debug(\"unexpected noteOff: \", time, event);\n\n\t\t\t\t\t\tkeyRange.high = Math.max(keyRange.high || pitch, pitch);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"controller\":\n\t\t\t\t\tswitch (event.controllerType) {\n\t\t\t\t\t// pedal controllers\n\t\t\t\t\tcase 64:\n\t\t\t\t\tcase 65:\n\t\t\t\t\tcase 66:\n\t\t\t\t\tcase 67:\n\t\t\t\t\t\tconst pedalType = PedalControllerTypes[event.controllerType];\n\n\t\t\t\t\t\tpedalStatus[event.channel] = pedalStatus[event.channel] || {};\n\t\t\t\t\t\tpedals[event.channel] = pedals[event.channel] || [];\n\n\t\t\t\t\t\tconst status = pedalStatus[event.channel][pedalType];\n\n\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\tpedals[event.channel].push({type: pedalType, start: status.start, duration: time - status.start, value: status.value});\n\t\t\t\t\t\tpedalStatus[event.channel][pedalType] = {start: time, value: event.value};\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase \"meta\":\n\t\t\t\tswitch (event.subtype) {\n\t\t\t\tcase \"setTempo\":\n\t\t\t\t\tmillisecondsPerBeat = event.microsecondsPerBeat / 1000;\n\t\t\t\t\t//beats = Math.round(beats);\n\t\t\t\t\t//console.assert(Number.isFinite(time), \"invalid time:\", time);\n\t\t\t\t\ttempos.push({tempo: event.microsecondsPerBeat, tick: ticks, time});\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"timeSignature\":\n\t\t\t\t\tnumerator = event.numerator;\n\t\t\t\t\tbarIndex = 0;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tif (!correspondences && /^find-corres:/.test(event.text)) {\n\t\t\t\t\t\tconst captures = event.text.match(/:([\\d\\,-]+)/);\n\t\t\t\t\t\tconst str = captures && captures[1] || \"\";\n\t\t\t\t\t\tcorrespondences = str.split(\",\").map(s => Number(s));\n\t\t\t\t\t}\n\t\t\t\t\telse if (/fingering\\(.*\\)/.test(event.text)) {\n\t\t\t\t\t\tconst [_, fingers] = event.text.match(/\\((.+)\\)/);\n\t\t\t\t\t\tconst finger = Number(fingers);\n\t\t\t\t\t\tif (!Number.isNaN(finger)) {\n\t\t\t\t\t\t\tconst status = channelStatus[channelStatus.length - 1];\n\t\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\t\tstatus.finger = finger;\n\n\t\t\t\t\t\t\tconst event = events.find(e => e.index == index - 1);\n\t\t\t\t\t\t\tif (event)\n\t\t\t\t\t\t\t\tevent.data.finger = finger;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"copyrightNotice\":\n\t\t\t\t\tconsole.log(\"MIDI copyright:\", event.text);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tchannelStatus.forEach(status => {\n\t\t\tconsole.debug(\"unclosed noteOn event at\", status.startTick, status);\n\n\t\t\tchannels[status.channel].push({\n\t\t\t\tstartTick: status.startTick,\n\t\t\t\tendTick: ticks,\n\t\t\t\tpitch: status.pitch,\n\t\t\t\tstart: status.start,\n\t\t\t\tduration: time - status.start,\n\t\t\t\tvelocity: status.velocity,\n\t\t\t\tbeats: status.beats,\n\t\t\t\ttrack: status.track,\n\t\t\t\tfinger: status.finger,\n\t\t\t});\n\t\t});\n\n\t\treturn new Notation({\n\t\t\tchannels,\n\t\t\tkeyRange,\n\t\t\tpedals,\n\t\t\tbars,\n\t\t\tendTime: time,\n\t\t\tendTick: ticks,\n\t\t\tcorrespondences,\n\t\t\tevents,\n\t\t\ttempos,\n\t\t\tticksPerBeat,\n\t\t\tmeta: {},\n\t\t});\n\t}\n\n\n\tconstructor (fields) {\n\t\tObject.assign(this, fields);\n\n\t\t// channels to notes\n\t\tthis.notes = [];\n\t\tfor (const channel of this.channels) {\n\t\t\tif (channel) {\n\t\t\t\tfor (const note of channel)\n\t\t\t\t\tthis.notes.push(note);\n\t\t\t}\n\t\t}\n\t\tthis.notes.sort(function (n1, n2) {\n\t\t\treturn n1.start - n2.start;\n\t\t});\n\n\t\tfor (const i in this.notes)\n\t\t\tthis.notes[i].index = Number(i);\n\n\n\t\t// duration\n\t\tthis.duration = this.notes.length > 0 ? (this.endTime - this.notes[0].start) : 0,\n\n\t\t//this.endSoftIndex = this.notes.length ? this.notes[this.notes.length - 1].softIndex : 0;\n\n\n\t\t// pitch map\n\t\tthis.pitchMap = [];\n\t\tfor (const c in this.channels) {\n\t\t\tfor (const n in this.channels[c]) {\n\t\t\t\tconst pitch = this.channels[c][n].pitch;\n\t\t\t\tthis.pitchMap[pitch] = this.pitchMap[pitch] || [];\n\n\t\t\t\tthis.pitchMap[pitch].push(this.channels[c][n]);\n\t\t\t}\n\t\t}\n\n\t\tthis.pitchMap.forEach(notes => notes.sort((n1, n2) => n1.start - n2.start));\n\n\n\t\t/*// setup measure notes index\n\t\tif (this.measures) {\n\t\t\tconst measure_list = [];\n\n\t\t\tlet last_measure = null;\n\t\t\tconst measure_entries = Object.entries(this.measures).sort((e1, e2) => Number(e1[0]) - Number(e2[0]));\n\t\t\tfor (const [t, measure] of measure_entries) {\n\t\t\t\t//console.log(\"measure time:\", Number(t));\n\t\t\t\tmeasure.startTick = Number(t);\n\t\t\t\tmeasure.notes = [];\n\n\t\t\t\tif (last_measure)\n\t\t\t\t\tlast_measure.endTick = measure.startTick;\n\n\t\t\t\tconst m = measure.measure;\n\t\t\t\tmeasure_list[m] = measure_list[m] || [];\n\t\t\t\tmeasure_list[m].push(measure);\n\n\t\t\t\tlast_measure = measure;\n\t\t\t}\n\t\t\tif (last_measure)\n\t\t\t\tlast_measure.endTick = this.notes[this.notes.length - 1].endTick;\n\t\t\tfor (const i in this.notes) {\n\t\t\t\tconst note = this.notes[i];\n\t\t\t\tfor (const t in this.measures) {\n\t\t\t\t\tconst measure = this.measures[t];\n\t\t\t\t\tif (note.startTick >= measure.startTick && note.startTick < measure.endTick || note.endTick > measure.startTick && note.endTick <= measure.endTick)\n\t\t\t\t\t\tmeasure.notes.push(note);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.measure_list = measure_list;\n\t\t}*/\n\n\n\t\t// prepare beats info\n\t\tif (this.meta.beatInfos) {\n\t\t\tfor (let i = 0; i < this.meta.beatInfos.length; ++i) {\n\t\t\t\tconst info = this.meta.beatInfos[i];\n\t\t\t\tif (i > 0) {\n\t\t\t\t\tconst lastInfo = this.meta.beatInfos[i - 1];\n\t\t\t\t\tinfo.beatIndex = lastInfo.beatIndex + Math.ceil((info.tick - lastInfo.tick) / this.ticksPerBeat);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tinfo.beatIndex = 0;\n\t\t\t}\n\t\t}\n\n\n\t\t// compute tempos tick -> time\n\t\t{\n\t\t\tlet time = 0;\n\t\t\tlet ticks = 0;\n\t\t\tlet tempo = 500000;\n\t\t\tfor (const entry of this.tempos) {\n\t\t\t\tconst deltaTicks = entry.tick - ticks;\n\t\t\t\ttime += (tempo / 1000) * deltaTicks / this.ticksPerBeat;\n\n\t\t\t\tticks = entry.tick;\n\t\t\t\ttempo = entry.tempo;\n\n\t\t\t\tentry.time = time;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfindChordBySoftindex (softIndex, radius = 0.8) {\n\t\treturn this.notes.filter(note => Math.abs(note.softIndex - softIndex) < radius);\n\t}\n\n\n\taverageTempo (tickRange) {\n\t\ttickRange = tickRange || {from: 0, to: this.endtick};\n\n\t\tconsole.assert(this.tempos, \"no tempos.\");\n\t\tconsole.assert(tickRange.to > tickRange.from, \"range is invalid:\", tickRange);\n\n\t\tconst span = index => {\n\t\t\tconst from = Math.max(tickRange.from, this.tempos[index].tick);\n\t\t\tconst to = (index < this.tempos.length - 1) ? Math.min(this.tempos[index + 1].tick, tickRange.to) : tickRange.to;\n\n\t\t\treturn Math.max(0, to - from);\n\t\t};\n\n\t\tconst tempo_sum = this.tempos.reduce((sum, tempo, index) => sum + tempo.tempo * span(index), 0);\n\n\t\tconst average = tempo_sum / (tickRange.to - tickRange.from);\n\n\t\t// convert microseconds per beat to beats per minute\n\t\treturn 60e+6 / average;\n\t}\n\n\n\tticksToTime (tick) {\n\t\tconsole.assert(Number.isFinite(tick), \"invalid tick value:\", tick);\n\t\tconsole.assert(this.tempos && this.tempos.length, \"no tempos.\");\n\n\t\tconst next_tempo_index = this.tempos.findIndex(tempo => tempo.tick > tick);\n\t\tconst tempo_index = next_tempo_index < 0 ? this.tempos.length - 1 : Math.max(next_tempo_index - 1, 0);\n\n\t\tconst tempo = this.tempos[tempo_index];\n\n\t\treturn tempo.time + (tick - tempo.tick) * tempo.tempo * 1e-3 / this.ticksPerBeat;\n\t}\n\n\n\ttimeToTicks (time) {\n\t\tconsole.assert(Number.isFinite(time), \"invalid time value:\", time);\n\t\tconsole.assert(this.tempos && this.tempos.length, \"no tempos.\");\n\n\t\tconst next_tempo_index = this.tempos.findIndex(tempo => tempo.time > time);\n\t\tconst tempo_index = next_tempo_index < 0 ? this.tempos.length - 1 : Math.max(next_tempo_index - 1, 0);\n\n\t\tconst tempo = this.tempos[tempo_index];\n\n\t\treturn tempo.tick + (time - tempo.time) * this.ticksPerBeat / (tempo.tempo * 1e-3);\n\t}\n\n\n\ttickRangeToTimeRange (tickRange) {\n\t\tconsole.assert(tickRange.to >= tickRange.from, \"invalid tick range:\", tickRange);\n\n\t\treturn {\n\t\t\tfrom: this.ticksToTime(tickRange.from),\n\t\t\tto: this.ticksToTime(tickRange.to),\n\t\t};\n\t}\n\n\n\t/*getMeasureRange (measureRange) {\n\t\tconsole.assert(Number.isInteger(measureRange.start) && Number.isInteger(measureRange.end), \"invalid measure range:\", measureRange);\n\t\tconsole.assert(this.measure_list && this.measure_list[measureRange.start] && this.measure_list[measureRange.end], \"no measure data for specific index:\", this.measure_list, measureRange);\n\n\t\tconst startMeasure = this.measure_list[measureRange.start][0];\n\t\tlet endMeasure = null;\n\t\tfor (const measure of this.measure_list[measureRange.end]) {\n\t\t\tif (measure.endTick > startMeasure.startTick) {\n\t\t\t\tendMeasure = measure;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// there no path between start measure and end measure.\n\t\tif (!endMeasure)\n\t\t\treturn null;\n\n\t\tconst tickRange = {from: startMeasure.startTick, to: endMeasure.endTick, duration: endMeasure.endTick - startMeasure.startTick};\n\t\tconst timeRange = this.tickRangeToTimeRange(tickRange);\n\t\ttimeRange.duration = timeRange.to - timeRange.from;\n\n\t\treturn {\n\t\t\ttickRange,\n\t\t\ttimeRange,\n\t\t};\n\t}*/\n\n\n\tscaleTempo ({factor, headTempo}) {\n\t\tconsole.assert(this.tempos && this.tempos.length, \"[Notation.scaleTempo] tempos is empty.\");\n\n\t\tif (headTempo)\n\t\t\tfactor = headTempo / this.tempos[0].tempo;\n\n\t\tconsole.assert(Number.isFinite(factor) && factor > 0, \"[Notation.scaleTempo] invalid factor:\", factor);\n\n\t\tthis.tempos.forEach(tempo => {\n\t\t\ttempo.tempo *= factor;\n\t\t\ttempo.time *= factor;\n\t\t});\n\t\tthis.events.forEach(event => {\n\t\t\tevent.deltaTime *= factor;\n\t\t\tevent.time *= factor;\n\t\t});\n\t\tthis.notes.forEach(note => {\n\t\t\tnote.start *= factor;\n\t\t\tnote.duration *= factor;\n\t\t});\n\n\t\tthis.endTime *= factor;\n\t}\n};\n\n\n\nmodule.exports = {\n\tNotation,\n};\n","\nconst { Notation } = require(\"./MusicNotation.js\");\n\n\n\n//const msDelay = ms => new Promise(resolve => setTimeout(resolve, ms));\nconst animationDelay = () => new Promise(resolve => requestAnimationFrame(resolve));\n\n\nclass MidiPlayer {\n\tconstructor (midiData, {cacheSpan = 600, onMidi, onPlayFinish, onTurnCursor} = {}) {\n\t\tthis.cacheSpan = cacheSpan;\n\t\tthis.onMidi = onMidi;\n\t\tthis.onPlayFinish = onPlayFinish;\n\t\tthis.onTurnCursor = onTurnCursor;\n\n\t\tlet notation;\n\t\tif (midiData.notes && Number.isFinite(midiData.endTime))\n\t\t\tnotation = midiData;\n\t\telse\n\t\t\tnotation = Notation.parseMidi(midiData);\n\n\t\tthis.notation = notation;\n\t\tthis.events = notation.events;\n\t\t//console.log(\"events:\", this.events);\n\n\t\tthis.isPlaying = false;\n\t\tthis.progressTime = 0;\n\t\tthis.startTime = performance.now();\n\t\tthis.duration = notation.endTime;\n\t\tthis.cursorTurnDelta = 0;\n\n\t\tconsole.assert(notation.tempos && notation.tempos.length, \"[MidiPlayer] invalid notation, tempos is empty.\");\n\t}\n\n\n\tdispose () {\n\t\tthis.isPlaying = false;\n\t\tthis.progressTime = 0;\n\t}\n\n\n\tget progressTicks () {\n\t\treturn this.notation.timeToTicks(this.progressTime);\n\t}\n\n\n\tset progressTicks (value) {\n\t\tthis.progressTime = this.notation.ticksToTime(value);\n\n\t\tif (this.onTurnCursor)\n\t\t\tthis.onTurnCursor(this.progressTime);\n\t}\n\n\n\tasync play ({nextFrame = animationDelay} = {}) {\n\t\tif (this.progressTime >= this.duration)\n\t\t\tthis.progressTime = 0;\n\n\t\tlet now = performance.now();\n\t\tthis.startTime = now - this.progressTime;\n\n\t\tthis.isPlaying = true;\n\n\t\tlet currentEventIndex = this.events.findIndex(event => event.time >= now - this.startTime);\n\n\t\twhile (this.isPlaying) {\n\t\t\tfor (; currentEventIndex < this.events.length; ++currentEventIndex) {\n\t\t\t\tconst event = this.events[currentEventIndex];\n\t\t\t\t//console.log(\"play event:\", currentEventIndex, event.time, this.progressTime + this.cacheSpan);\n\t\t\t\tif (!event || event.time > this.progressTime + this.cacheSpan)\n\t\t\t\t\tbreak;\n\n\t\t\t\tif (event.data.type === \"channel\" && this.startTime + event.time >= now)\n\t\t\t\t\tif (this.onMidi)\n\t\t\t\t\t\tthis.onMidi(event.data, this.startTime + event.time);\n\t\t\t}\n\n\t\t\tawait nextFrame();\n\n\t\t\tif (!this.isPlaying)\n\t\t\t\tbreak;\n\n\t\t\tif (this.cursorTurnDelta !== 0) {\n\t\t\t\tconst backturn = this.cursorTurnDelta < 0;\n\n\t\t\t\tthis.startTime -= this.cursorTurnDelta;\n\t\t\t\tthis.cursorTurnDelta = 0;\n\n\t\t\t\tif (backturn) {\n\t\t\t\t\tfor (; currentEventIndex > 0; --currentEventIndex) {\n\t\t\t\t\t\tconst eventTime = this.events[currentEventIndex].time;\n\t\t\t\t\t\tif (this.startTime + eventTime < now)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnow = performance.now();\n\n\t\t\tthis.progressTime = now - this.startTime;\n\n\t\t\tif (this.progressTime > this.duration) {\n\t\t\t\tthis.isPlaying = false;\n\n\t\t\t\tif (this.onPlayFinish)\n\t\t\t\t\tthis.onPlayFinish();\n\t\t\t}\n\t\t}\n\t}\n\n\n\tpause () {\n\t\tthis.isPlaying = false;\n\t}\n\n\n\tturnCursor (time) {\n\t\t//console.log(\"onTurnCursor:\", time, oldTime);\n\t\tif (this.isPlaying)\n\t\t\tthis.cursorTurnDelta += time - this.progressTime;\n\t\telse\n\t\t\tthis.progressTime = time;\n\n\t\tif (this.onTurnCursor)\n\t\t\tthis.onTurnCursor(time);\n\t}\n};\n\n\n\nmodule.exports = MidiPlayer;\n","\nmodule.exports = {\n\tCostStepAttenuation: 0.6,\n\tSkipDeep: 3,\n\tPriorDistanceSigmoidFactor: 0.1,\n\tPriorValueSigmoidFactor: 0.12,\n\n\tSkipCost: 0.5,\n\tLagOffsetCost: 1,\n\tLeadOffsetCost: 1.6,\n\tZeroOffsetCost: 0.58,\n\n\tRelocationThreshold: 6,\n};\n","\nconst {pick} = require(\"lodash\");\n\nconst Config = require(\"./config.js\");\n\n\n\nclass Node {\n\tconstructor (s_note, c_note) {\n\t\tthis.s_note = s_note;\n\t\tthis.c_note = c_note;\n\n\t\tconsole.assert(this.s_note.softIndex != null, \"s_note softIndex is null\");\n\t\tthis.offset = this.s_note.softIndex - this.c_note.softIndex;\n\n\t\tthis._prev = null;\n\t\tthis._totalCost = 0;\n\t\tthis._value = 0;\n\t\tthis.cacheDirty = true;\n\n\t\t//this.evaluatePrev(Node.Zero);\n\t}\n\n\n\tget prev () {\n\t\treturn this._prev;\n\t}\n\n\n\tset prev (value) {\n\t\tif (value != this._prev) {\n\t\t\tthis._prev = value;\n\t\t\tthis.cacheDirty = true;\n\t\t}\n\t}\n\n\n\tget si () {\n\t\treturn this.s_note.index;\n\t}\n\n\n\tget ci () {\n\t\treturn this.c_note.index;\n\t}\n\n\n\tget root () {\n\t\treturn this.prev.root || this;\n\t}\n\n\n\tget rootSi () {\n\t\treturn !this.prev.zero ? this.prev.rootSi : this.si;\n\t}\n\n\n\tget id () {\n\t\treturn `${this.s_note.index},${this.c_note.index}`;\n\t}\n\n\n\tstatic cost (prev, skip, self) {\n\t\treturn prev * Config.CostStepAttenuation + Math.tanh(skip * Config.SkipCost) + Math.tanh(self * 0.5);\n\t}\n\n\n\tupdateCache () {\n\t\tif (this.cacheDirty) {\n\t\t\tthis._totalCost = Node.cost(this.prev.totalCost, this.si - this.prev.si - 1, this.selfCost);\n\t\t\tthis._value = this.prev.value + 1 - Math.tanh(this.selfCost * 0.5);\n\n\t\t\tthis.cacheDirty = false;\n\t\t}\n\t}\n\n\n\tget totalCost () {\n\t\tthis.updateCache();\n\n\t\treturn this._totalCost;\n\t}\n\n\n\tget value () {\n\t\tthis.updateCache();\n\n\t\treturn this._value;\n\t}\n\n\n\tget deep () {\n\t\treturn this.prev.deep + 1;\n\t}\n\n\n\tget path () {\n\t\tconst path = [];\n\t\tfor (let node = this; !node.zero; node = node.prev) {\n\t\t\tpath[node.si] = node.ci;\n\t\t}\n\n\t\tfor (let i = 0; i < path.length; ++i)\n\t\t\tif (typeof path[i] != \"number\")\n\t\t\t\tpath[i] = -1;\n\n\t\treturn path;\n\t}\n\n\n\tdump () {\n\t\treturn pick(this, [\"id\", \"si\", \"ci\", \"rootSi\", \"value\", \"deep\", \"rootSi\", \"offset\", \"prior\", \"selfCost\", \"totalCost\"]);\n\t}\n\n\n\tevaluatePrev (node) {\n\t\tconst cost = this.evaluatePrevCost(node);\n\n\t\tconsole.assert(this.si - node.si >= 1, \"node index error:\", this, node/*, {get [Symbol.toStringTag]() {debugger}}*/);\n\t\t//if (this.si - node.si < 1)\n\t\t//\tdebugger;\n\n\t\tconst totalCost = Node.cost(node.totalCost, this.si - node.si - 1, cost);\n\n\t\tif (!this.prev || totalCost < this.totalCost) {\n\t\t\tthis.prev = node;\n\t\t\tthis.selfCost = cost;\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\tevaluatePrevCost (node) {\n\t\tlet cost = 0;\n\n\t\tif (node.offset != null) {\n\t\t\tconst bias = this.offset - node.offset;\n\t\t\tconst costCoeff = node.zero ? Config.ZeroOffsetCost : (bias > 0 ? Config.LagOffsetCost : Config.LeadOffsetCost);\n\t\t\tcost += (bias * costCoeff) ** 2;\n\t\t}\n\n\t\treturn cost;\n\t}\n\n\n\tpriorByOffset (offset) {\n\t\tconst distance = Math.abs(this.offset - offset) / 1;//(this.s_note.deltaSi + 0.04);\n\n\t\treturn Math.tanh(this.value * Config.PriorValueSigmoidFactor) - Math.tanh(distance * Config.PriorDistanceSigmoidFactor);\n\t\t//return Math.log(this.value) * Math.tanh(4 / distance);\n\t\t//return this.value - distance;\n\t}\n\n\n\tstatic zero () {\n\t\treturn {\n\t\t\tzero: true,\n\t\t\ttotalCost: 0,\n\t\t\tvalue: 0,\n\t\t\tsi: -1,\n\t\t\tci: -1,\n\t\t\tdeep: 0,\n\t\t\toffset: 0,\n\t\t};\n\t}\n};\n\n\n\nmodule.exports = Node;\n","\nconst Config = require(\"./config.js\");\nconst Node = require(\"./node.js\");\n\n\n\nclass Navigator {\n\tconstructor (criterion, sample, options = {}) {\n\t\tthis.criterion = criterion;\n\t\tthis.sample = sample;\n\n\t\tthis.getCursorOffset = options.getCursorOffset || (() => null);\n\t\tthis.outOfPage = options.outOfPage;\n\n\t\tthis.bestNode = null;\n\t\tthis.fineCursor = null;\n\n\t\tthis.breakingSI = sample.notes.length - 1;\n\n\t\tthis.zeroNode = Node.zero();\n\t\tthis.zeroNode.offset = this.getCursorOffset() || 0;\n\n\t\tthis.relocationThreshold = options.relocationThreshold || Config.RelocationThreshold;\n\t}\n\n\n\tstep (index) {\n\t\t//console.log(\"step:\", this.zeroNode.offset);\n\t\tconst note = this.sample.notes[index];\n\n\t\tif (note.matches.length > 0) {\n\t\t\t//console.log(\"zeroNode.offset:\", index, this.zeroNode.offset);\n\t\t\tnote.matches.forEach(node => {\n\t\t\t\tnode.evaluatePrev(this.zeroNode);\n\t\t\t\t//console.log(\"node:\", node, node.evaluatePrevCost(this.zeroNode), node.offset, this.zeroNode.offset);\n\n\t\t\t\tfor (let si = index - 1; si >= Math.max(this.breakingSI + 1, index - Config.SkipDeep); --si) {\n\t\t\t\t\t//const skipCost = Config.SkipCost * (index - 1 - si);\n\n\t\t\t\t\tconst prevNote = this.sample.notes[si];\n\t\t\t\t\tconsole.assert(prevNote, \"prevNote is null:\", si, index, this.sample.notes);\n\t\t\t\t\tprevNote.matches.forEach(prevNode => {\n\t\t\t\t\t\tconst bias = node.offset - prevNode.offset;\n\t\t\t\t\t\tif (/*prevNode.totalCost + skipCost < node.totalCost\n\t\t\t\t\t\t\t&&*/ (bias < 2 / Config.LagOffsetCost && bias > -2 / Config.LeadOffsetCost))\n\t\t\t\t\t\t\tnode.evaluatePrev(prevNode);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tnode.prior = node.totalCost > 1.99 ? -1 : node.priorByOffset(this.zeroNode.offset);\n\n\t\t\t\tif (node.prior > 0 && this.outOfPage) {\n\t\t\t\t\tconst tick = this.criterion.notes[node.ci].startTick;\n\t\t\t\t\tif (this.outOfPage(tick))\n\t\t\t\t\t\tnode.prior -= 0.7;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tnote.matches.sort((c1, c2) => c2.prior - c1.prior);\n\t\t\tthis.cursors = note.matches;\n\t\t\t//console.log(\"navigator cursors:\", this.cursors);\n\n\t\t\tlet fineCursor = null;\n\t\t\tconst nullLength = this.nullSteps(index);\n\n\t\t\tconst cursor = this.cursors[0];\n\t\t\tif (cursor && cursor.totalCost < 1) {\n\t\t\t\t//console.log(\"nullLength:\", nullLength, nullLength * Math.log(cursor.value / 4));\n\t\t\t\tif (cursor.prior > 0 || (cursor.totalCost < 0.4 && Math.log(Math.max(nullLength * cursor.value, 1e-3)) > this.relocationThreshold)) {\n\t\t\t\t\tthis.zeroNode.offset = cursor.offset;\n\n\t\t\t\t\tfineCursor = cursor;\n\n\t\t\t\t\tif (!this.bestNode || cursor.value > this.bestNode.value)\n\t\t\t\t\t\tthis.bestNode = cursor;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (fineCursor)\n\t\t\t\tthis.fineCursor = fineCursor;\n\t\t\telse {\n\t\t\t\tif (!this.resetCursor(index, {breaking: false/*nullLength > Config.SkipDeep*/})) {\n\t\t\t\t\tthis.zeroNode.offset += note.deltaSi * Math.tanh(nullLength);\n\t\t\t\t\tconsole.assert(!Number.isNaN(this.zeroNode.offset), \"zeroNode.offset is NaN.\", note.deltaSi, nullLength);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t\tthis.cursors = [];\n\t}\n\n\n\tpath ({fromIndex = 0, toIndex = this.sample.notes.length - 1} = {}) {\n\t\tconst path = [];\n\n\t\tlet offset = null;\n\n\t\tfor (let si = toIndex; si >= fromIndex;) {\n\t\t\tconst note = this.sample.notes[si];\n\n\t\t\tif (!note.matches.length || note.matches[0].prior < -0.01 || note.matches[0].totalCost >= 1) {\n\t\t\t\t//if (note.matches.length)\n\t\t\t\t//\tconsole.log(\"path -1:\", si, note.matches[0].prior, note.matches[0].totalCost);\n\t\t\t\tpath[si] = -1;\n\t\t\t\t--si;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// sort nodes by backwards heuristic offset\n\t\t\tif (offset != null) {\n\t\t\t\tnote.matches.forEach(node => node.backPrior = (node.totalCost < 1.99 ? node.priorByOffset(offset) : -1));\n\t\t\t\tnote.matches.sort((n1, n2) => n2.backPrior - n1.backPrior);\n\t\t\t}\n\n\t\t\tconst node = note.matches[0];\n\t\t\tnode.path.forEach((ci, si) => path[si] = ci);\n\t\t\t//console.log(\"node path:\", si, node.path);\n\n\t\t\toffset = node.root.offset;\n\n\t\t\tsi = node.rootSi - 1;\n\t\t}\n\n\t\tconsole.assert(path.length == toIndex + 1, \"path length error:\", path, fromIndex, toIndex + 1,\n\t\t\tthis.sample.notes.length, this.sample.notes.length ? this.sample.notes[this.sample.notes.length - 1].index : null);\n\n\t\treturn path;\n\t}\n\n\n\tnullSteps (index) {\n\t\treturn index - (this.fineCursor ? this.fineCursor.si : -1) - 1;\n\t}\n\n\n\tresetCursor (index, {breaking = true} = {}) {\n\t\tif (breaking)\n\t\t\tthis.breakingSI = index;\n\n\t\tconst cursorOffset = this.getCursorOffset();\n\t\tif (cursorOffset != null) {\n\t\t\t//console.log(\"cursorOffset:\", cursorOffset);\n\n\t\t\tthis.zeroNode.offset = cursorOffset;\n\t\t\t//this.breaking = this.nullSteps(index) > Config.SkipDeep;\n\t\t\t//if (this.breaking)\t// trivial zero node si resets result in focus path interruption\n\t\t\tthis.zeroNode.si = index;\n\t\t\tthis.fineCursor = null;\n\n\t\t\tconsole.assert(!Number.isNaN(this.zeroNode.offset), \"zeroNode.offset is NaN.\", cursorOffset);\n\t\t\t//console.log(\"cursor offset reset:\", cursorOffset);\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\tget relocationTendency () {\n\t\tconst cursor = this.cursors && this.cursors[0];\n\t\tif (!cursor)\n\t\t\treturn null;\n\n\t\tconst nullLength = this.nullSteps(cursor.si);\n\t\tif (nullLength <= 0)\n\t\t\treturn 0;\n\n\t\treturn Math.log(Math.max(nullLength * cursor.value, 1e-3)) / this.relocationThreshold;\n\t}\n};\n\n\n\nmodule.exports = Navigator;\n","\nconst Node = require(\"./node.js\");\nconst Navigator = require(\"./navigator.js\");\n\n\n\nconst HEART_BEAT = 800;\t// in ms\nconst SIMULTANEOUS_INTERVAL = HEART_BEAT * 0.24;\n\n\nconst normalizeInterval = interval => Math.tanh(interval / SIMULTANEOUS_INTERVAL);\n\n\n// greater softIndexFactor make 'harder' soft index\nconst makeNoteSoftIndex = function (notes, index, {softIndexFactor = 1} = {}) {\n\tindex = Number(index);\n\n\tconst note = notes[index];\n\n\t// make soft index\n\tif (index > 0) {\n\t\tconst lastNote = notes[index - 1];\n\n\t\tconsole.assert(note.start != null, \"note.start is null\", note);\n\t\tconsole.assert(lastNote.start != null, \"lastNote.start is null\", lastNote);\n\n\t\tnote.deltaSi = normalizeInterval((note.start - lastNote.start) * softIndexFactor);\n\t\tnote.softIndex = lastNote.softIndex + note.deltaSi;\n\n\t\tconsole.assert(!Number.isNaN(note.deltaSi), \"note.deltaSi is NaN.\", note.start, lastNote.start);\n\t}\n\telse {\n\t\tnote.softIndex = 0;\n\t\tnote.deltaSi = 0;\n\t}\n};\n\n\nconst makeMatchNodes = function (note, criterion, zeroNode = Node.zero()) {\n\tnote.matches = [];\n\n\tconst targetList = criterion.pitchMap[note.pitch];\n\tif (targetList) {\n\t\tfor (const targetNote of targetList) {\n\t\t\tconst node = new Node(note, targetNote);\n\t\t\tif (zeroNode)\n\t\t\t\tnode.evaluatePrev(zeroNode);\n\n\t\t\tnote.matches.push(node);\n\t\t}\n\t}\n};\n\n\nconst genNotationContext = function (notation, {softIndexFactor = 1} = {}) {\n\tfor (let i = 0; i < notation.notes.length; ++i)\n\t\tmakeNoteSoftIndex(notation.notes, i, {softIndexFactor});\n};\n\n\nconst runNavigation = async function(criterion, sample, onStep) {\n\tconst navigator = new Navigator(criterion, sample);\n\tnavigator.resetCursor(-1);\n\n\tfor (let i = 0; i < sample.notes.length; ++i) {\n\t\tnavigator.step(i);\n\n\t\tconst next = await (onStep && onStep(i, navigator));\n\t\tif (next === Symbol.for(\"end\")) {\n\t\t\tconsole.log(\"Navigation interrupted.\");\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t//console.log(\"Navigation accomplished.\");\n\n\treturn navigator;\n};\n\n\n\nmodule.exports = {\n\tnormalizeInterval,\n\tmakeNoteSoftIndex,\n\tmakeMatchNodes,\n\tgenNotationContext,\n\trunNavigation,\n\tNavigator,\n\tNode,\n};\n","\nconst MIDI = require(\"./MIDI\");\n\n\n\nconst trackDeltaToAbs = events => {\n\tlet tick = 0;\n\n\tevents.forEach(event => {\n\t\ttick += event.deltaTime;\n\t\tevent.tick = tick;\n\t});\n};\n\n\nconst trackAbsToDelta = events => {\n\tlet lastTick = 0;\n\n\tevents.sort((e1, e2) => e1.tick - e2.tick).forEach(event => {\n\t\tevent.deltaTime = event.tick - lastTick;\n\t\tlastTick = event.tick;\n\t});\n};\n\n\nconst sliceTrack = (track, startTick, endTick) => {\n\ttrackDeltaToAbs(track);\n\n\tconst events = [];\n\tconst status = {};\n\n\ttrack.forEach(event => {\n\t\tif (event.tick >= startTick && event.tick <= endTick && event.subtype !== \"endOfTrack\")\n\t\t\tevents.push({\n\t\t\t\t...event,\n\t\t\t\ttick: event.tick - startTick,\n\t\t\t});\n\t\telse if (event.tick < startTick) {\n\t\t\tswitch (event.type) {\n\t\t\tcase \"meta\":\n\t\t\t\tstatus[event.subtype] = event;\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\n\tObject.values(status).forEach(event => events.push({\n\t\t...event,\n\t\ttick: 0,\n\t}));\n\n\tevents.push({\n\t\ttick: endTick - startTick,\n\t\ttype: \"meta\",\n\t\tsubtype: \"endOfTrack\",\n\t});\n\n\ttrackAbsToDelta(events);\n\n\treturn events;\n};\n\n\nconst sliceMidi = (midi, startTick, endTick) => ({\n\theader: midi.header,\n\ttracks: midi.tracks.map(track => sliceTrack(track, startTick, endTick)),\n});\n\n\nconst TICKS_PER_BEATS = 480;\n\nconst EXCLUDE_MIDI_EVENT_SUBTYPES = [\n\t\"endOfTrack\", \"trackName\",\n\t\"noteOn\", \"noteOff\",\n];\n\n\nfunction encodeToMIDIData(notation, {startTime, unclosedNoteDuration = 30e+3} = {}) {\n\tnotation.microsecondsPerBeat = notation.microsecondsPerBeat || 500000;\n\n\tconst ticksPerBeat = TICKS_PER_BEATS;\n\tconst msToTicks = ticksPerBeat * 1000 / notation.microsecondsPerBeat;\n\n\tconst header = { formatType: 0, ticksPerBeat };\n\tconst track = [];\n\n\tif (!Number.isFinite(startTime)) {\n\t\tif (!notation.notes || !notation.notes[0])\n\t\t\tthrow new Error(\"encodeToMidiData: no start time specificed\");\n\n\t\tstartTime = notation.notes[0].start;\n\t}\n\n\ttrack.push({ time: startTime, type: \"meta\", subtype: \"copyrightNotice\", text: `Composed by MusicWdigets. BUILT on ${new Date(Number(process.env.VUE_APP_BUILD_TIME)).toDateString()}` });\n\n\tconst containsTempo = notation.events && notation.events.find(event => event.subtype == \"setTempo\");\n\tif (!containsTempo) {\n\t\ttrack.push({ time: startTime, type: \"meta\", subtype: \"timeSignature\", numerator: 4, denominator: 4, thirtyseconds: 8 });\n\t\ttrack.push({ time: startTime, type: \"meta\", subtype: \"setTempo\", microsecondsPerBeat: notation.microsecondsPerBeat });\n\t}\n\n\t//if (notation.correspondences)\n\t//\ttrack.push({ time: startTime, type: \"meta\", subtype: \"text\", text: \"find-corres:\" + notation.correspondences.join(\",\") });\n\n\tlet endTime = startTime || 0;\n\n\tif (notation.notes) {\n\t\tfor (const note of notation.notes) {\n\t\t\ttrack.push({\n\t\t\t\ttime: note.start,\n\t\t\t\ttype: \"channel\",\n\t\t\t\tsubtype: \"noteOn\",\n\t\t\t\tchannel: note.channel || 0,\n\t\t\t\tnoteNumber: note.pitch,\n\t\t\t\tvelocity: note.velocity,\n\t\t\t\tfinger: note.finger,\n\t\t\t});\n\n\t\t\tendTime = Math.max(endTime, note.start);\n\n\t\t\tif (Number.isFinite(unclosedNoteDuration))\n\t\t\t\tnote.duration = note.duration || unclosedNoteDuration;\n\t\t\tif (note.duration) {\n\t\t\t\ttrack.push({\n\t\t\t\t\ttime: note.start + note.duration,\n\t\t\t\t\ttype: \"channel\",\n\t\t\t\t\tsubtype: \"noteOff\",\n\t\t\t\t\tchannel: note.channel || 0,\n\t\t\t\t\tnoteNumber: note.pitch,\n\t\t\t\t\tvelocity: 0,\n\t\t\t\t});\n\n\t\t\t\tendTime = Math.max(endTime, note.start + note.duration);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (notation.events) {\n\t\tconst events = notation.events.filter(event => !EXCLUDE_MIDI_EVENT_SUBTYPES.includes(event.data.subtype));\n\t\tfor (const event of events) {\n\t\t\ttrack.push({\n\t\t\t\ttime: event.time,\n\t\t\t\t...event.data,\n\t\t\t});\n\n\t\t\tendTime = Math.max(endTime, event.time);\n\t\t}\n\t}\n\n\ttrack.push({ time: endTime + 100, type: \"meta\", subtype: \"endOfTrack\" });\n\n\ttrack.sort(function (e1, e2) { return e1.time - e2.time; });\n\n\t// append finger event after every noteOn event\n\ttrack.map((event, index) => ({event, index}))\n\t\t.filter(({event}) => event.subtype == \"noteOn\" && event.finger != null)\n\t\t.reverse()\n\t\t.forEach(({event, index}) => track.splice(index + 1, 0, {\n\t\t\ttime: event.time,\n\t\t\ttype: \"meta\",\n\t\t\tsubtype: \"text\",\n\t\t\ttext: `fingering(${event.finger})`,\n\t\t}));\n\n\ttrack.forEach(event => event.ticks = Math.round((event.time - startTime) * msToTicks));\n\ttrack.forEach((event, i) => event.deltaTime = (event.ticks - (i > 0 ? track[i - 1].ticks : 0)));\n\n\treturn {header, tracks: [track]};\n};\n\n\nfunction encodeToMIDI(notation, options) {\n\tconst data = encodeToMIDIData(notation, options);\n\treturn MIDI.encodeMidiFile(data);\n};\n\n\n\nmodule.exports = {\n\tsliceMidi,\n\tencodeToMIDIData,\n\tencodeToMIDI,\n};\n","\nconst MIDI = require(\"./source/inc/MIDI\");\nconst MusicNotation = require(\"./source/inc/MusicNotation\");\nconst MidiPlayer = require(\"./source/inc/MidiPlayer.js\");\nconst Matcher = require(\"./source/inc/Matcher\");\nconst MidiUtils = require(\"./source/inc/MidiUtils.js\");\n\n\n\nmodule.exports = {\n\tMIDI,\n\tMusicNotation,\n\tMidiPlayer,\n\tMatcher,\n\tMidiUtils,\n};\n","import pick from 'lodash/pick';\n\nimport { MusicNotation, MIDI } from '@k-l-lambda/music-widgets';\n\n//import {MeasureLayout, LayoutType} from\nimport { ImplicitType, ChordPosition } from './types';\n\nconst WHOLE_DURATION_MAGNITUDE = 1920;\nconst TICKS_PER_BEAT = WHOLE_DURATION_MAGNITUDE / 4;\n\ninterface Fraction {\n\tnumerator: number;\n\tdenominator: number;\n}\n\ninterface StaffNoteProperties {\n\trest: boolean;\n\ttied: boolean;\n\toverlapped: boolean;\n\timplicitType: ImplicitType;\n\tafterGrace: boolean;\n\tchordPosition: ChordPosition;\n\tdivision: number;\n\n\tcontextIndex: number;\n\tstaffTrack: number;\n}\n\ninterface MetaNote extends MusicNotation.Note, Partial {\n\tid: string;\n\tmeasure: number;\n\tendTick: number;\n}\n\ninterface SubNote {\n\tstartTick: number;\n\tendTick: number;\n\tpitch: number;\n\tvelocity?: number;\n}\n\ninterface MeasureNote extends Partial {\n\ttick: number;\n\tpitch: number;\n\tduration: number;\n\tchordPosition: ChordPosition;\n\tstaff: number;\n\n\ttrack: number;\n\tchannel: number;\n\tid: string;\n\tids: string[];\n\n\tsubNotes: SubNote[];\n}\n\ninterface MeasureEvent {\n\tdata: any;\n\ttrack: number;\n\tticks?: number;\n}\n\ninterface Measure {\n\ttick: number;\n\tduration: number;\n\n\tnotes: MeasureNote[];\n\tevents?: MeasureEvent[];\n\ttimeSignature?: Fraction;\n\tkeySignature?: number;\n}\n\ninterface PerformOptions {\n\twithRestTied?: boolean;\n}\n\ninterface MidiEvent extends MIDI.MidiEvent {\n\tticks?: number;\n\tmeasure?: number;\n\tids?: string[];\n\tstaffTrack?: number;\n\tstaff?: number;\n}\ntype MidiTrack = MidiEvent[];\n\nconst EXTRA_NOTE_FIELDS = ['rest', 'tied', 'overlapped', 'implicitType', 'afterGrace', 'contextIndex', 'staffTrack', 'chordPosition', 'division'];\nconst COMMON_NOTE_FIELDS = ['id', 'ids', 'pitch', 'velocity', 'track', 'channel', ...EXTRA_NOTE_FIELDS];\n\nclass MetaNotation {\n\t//pitchContextGroup: PitchContextTable[];\n\t//measureLayout: MeasureLayout;\n\tmeasures: Measure[];\n\n\ttrackNames: string[];\n\tidTrackMap: { [key: string]: number };\n\n\tripe: boolean = false;\n\n\tstatic fromAbsoluteNotes(notes: MetaNote[], measureHeads: number[], data?: Partial): MetaNotation {\n\t\tconst notation = new MetaNotation(data);\n\n\t\tnotation.measures = Array(measureHeads.length)\n\t\t\t.fill(null)\n\t\t\t.map((__, i) => {\n\t\t\t\tconst tick = measureHeads[i];\n\t\t\t\tconst duration = measureHeads[i + 1] ? measureHeads[i + 1] - tick : 0;\n\n\t\t\t\tconst mnotes = notes\n\t\t\t\t\t.filter((note) => note.measure === i + 1)\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(note) =>\n\t\t\t\t\t\t\t({\n\t\t\t\t\t\t\t\ttick: note.startTick - tick,\n\t\t\t\t\t\t\t\tduration: note.endTick - note.startTick,\n\t\t\t\t\t\t\t\t...pick(note, COMMON_NOTE_FIELDS),\n\t\t\t\t\t\t\t\tsubNotes: [],\n\t\t\t\t\t\t\t} as MeasureNote)\n\t\t\t\t\t);\n\n\t\t\t\t// reduce note data size\n\t\t\t\tmnotes.forEach((mn) =>\n\t\t\t\t\t['rest', 'tied', 'implicitType', 'afterGrace'].forEach((field) => {\n\t\t\t\t\t\tif (!mn[field]) delete mn[field];\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration,\n\t\t\t\t\tnotes: mnotes,\n\t\t\t\t};\n\t\t\t});\n\n\t\tnotation.idTrackMap = notes.reduce((map, note) => {\n\t\t\tif (note.id) map[note.id] = note.track;\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn notation;\n\t}\n\n\tstatic performAbsoluteNotes(abNotes: MetaNote[], { withRestTied = false }: PerformOptions = {}): MusicNotation.Note[] {\n\t\tconst notes = abNotes\n\t\t\t.filter((note) => (withRestTied || (!note.rest && !note.tied)) && !note.overlapped)\n\t\t\t.map((note) => ({\n\t\t\t\tmeasure: note.measure,\n\t\t\t\tchannel: note.channel,\n\t\t\t\ttrack: note.track,\n\t\t\t\tstart: note.start,\n\t\t\t\tstartTick: note.startTick,\n\t\t\t\tendTick: note.endTick,\n\t\t\t\tpitch: note.pitch,\n\t\t\t\tduration: note.duration,\n\t\t\t\tvelocity: note.velocity || 127,\n\t\t\t\tid: note.id,\n\t\t\t\tids: note.ids,\n\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\tcontextIndex: note.contextIndex,\n\t\t\t\timplicitType: note.implicitType,\n\t\t\t\tchordPosition: note.chordPosition,\n\t\t\t}));\n\n\t\tconst noteMap = notes.reduce((map, note) => {\n\t\t\tconst key = `${note.channel}|${note.start}|${note.pitch}`;\n\t\t\tconst priorNote = map[key];\n\t\t\tif (priorNote) priorNote.ids.push(...note.ids);\n\t\t\telse map[key] = note;\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn Object.values(noteMap);\n\t}\n\n\tconstructor(data?: Partial) {\n\t\tif (data) Object.assign(this, data);\n\t}\n\n\t/*get ordinaryMeasureIndices (): number[] {\n\t\tif (this.measureLayout)\n\t\t\treturn this.measureLayout.serialize(LayoutType.Ordinary);\n\n\t\treturn Array(this.measures.length).fill(null).map((_, i) => i + 1);\n\t}*/\n\n\t// In Lilypond 2.20.0, minus tick value at the head of a track result in MIDI event time bias,\n\t//\tSo store the bias values to correct MIDI time from lilyond.\n\tget trackTickBias(): { [key: string]: number } {\n\t\tconst headMeasure = this.measures[0];\n\t\treturn this.trackNames.reduce((map, name, track) => {\n\t\t\tmap[name] = 0;\n\t\t\tif (headMeasure) {\n\t\t\t\tconst note = headMeasure.notes.find((note) => note.track === track);\n\t\t\t\tif (note) map[name] = Math.min(note.tick, 0);\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget idSet(): Set {\n\t\treturn this.measures.reduce(\n\t\t\t(set, measure) => (measure.notes.filter((note) => !note.rest).forEach((note) => note.ids.forEach((id) => set.add(id))), set),\n\t\t\tnew Set()\n\t\t);\n\t}\n\n\ttoJSON() {\n\t\treturn {\n\t\t\t__prototype: 'LilyNotation',\n\t\t\t//pitchContextGroup: this.pitchContextGroup,\n\t\t\t//measureLayout: this.measureLayout,\n\t\t\tmeasures: this.measures,\n\t\t\tidTrackMap: this.idTrackMap,\n\t\t\ttrackNames: this.trackNames,\n\t\t\tripe: this.ripe,\n\t\t};\n\t}\n\n\ttoAbsoluteNotes(measureIndices: number[] /*= this.ordinaryMeasureIndices*/): MetaNote[] {\n\t\tlet measureTick = 0;\n\t\tconst measureNotes: MetaNote[][] = measureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\n\t\t\tconst notes = measure.notes.map((mnote) => {\n\t\t\t\treturn {\n\t\t\t\t\tstartTick: measureTick + mnote.tick,\n\t\t\t\t\tendTick: measureTick + mnote.tick + mnote.duration,\n\t\t\t\t\tstart: measureTick + mnote.tick,\n\t\t\t\t\tduration: mnote.duration,\n\t\t\t\t\tmeasure: index,\n\t\t\t\t\t...pick(mnote, COMMON_NOTE_FIELDS),\n\t\t\t\t} as MetaNote;\n\t\t\t});\n\n\t\t\tmeasureTick += measure.duration;\n\n\t\t\treturn notes;\n\t\t});\n\n\t\treturn [].concat(...measureNotes);\n\t}\n\n\t/*getMeasureIndices (type: LayoutType) {\n\t\treturn this.measureLayout.serialize(type);\n\t}*/\n\n\ttoPerformingNotation(measureIndices: number[] /*= this.ordinaryMeasureIndices*/, options: PerformOptions = {}): MusicNotation.Notation {\n\t\t//console.debug(\"toPerformingNotation:\", this, measureIndices);\n\t\tconst abNotes = this.toAbsoluteNotes(measureIndices);\n\t\tconst notes = MetaNotation.performAbsoluteNotes(abNotes, options);\n\n\t\t//const lastNote = notes[notes.length - 1];\n\t\tconst endTime = Math.max(...notes.map((note) => note.start + note.duration));\n\n\t\tconst endTick = measureIndices.reduce((tick, index) => tick + this.measures[index - 1].duration, 0);\n\n\t\tconst notation = new MusicNotation.Notation({\n\t\t\tticksPerBeat: TICKS_PER_BEAT,\n\t\t\tmeta: {},\n\t\t\ttempos: [], // TODO\n\t\t\tchannels: [notes],\n\t\t\tendTime,\n\t\t\tendTick,\n\t\t});\n\n\t\treturn notation;\n\t}\n\n\ttoPerformingMIDI(measureIndices: number[], { trackList }: { trackList?: boolean[] } = {}): MIDI.MidiData & { zeroTick: number } {\n\t\tif (!measureIndices.length) return null;\n\n\t\t// to avoid begin minus tick\n\t\tconst zeroTick = -Math.min(0, ...(this.measures[0]?.events.map((e) => e.ticks) || []), ...(this.measures[0]?.notes.map((note) => note.tick) || []));\n\n\t\tlet measureTick = zeroTick;\n\t\tconst measureEvents: MeasureEvent[][] = measureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\n\t\t\tconst events = measure.events.map((mevent) => ({\n\t\t\t\tticks: measureTick + mevent.ticks,\n\t\t\t\ttrack: mevent.track,\n\t\t\t\tdata: {\n\t\t\t\t\t...mevent.data,\n\t\t\t\t\tmeasure: index,\n\t\t\t\t},\n\t\t\t}));\n\n\t\t\tmeasureTick += measure.duration;\n\n\t\t\treturn events;\n\t\t});\n\n\t\tconst eventPriority = (event: MidiEvent): number => event.ticks + (event.subtype === 'noteOff' ? -1e-8 : 0);\n\n\t\tconst tracks: MidiTrack[] = [].concat(...measureEvents).reduce((tracks, mevent) => {\n\t\t\ttracks[mevent.track] = tracks[mevent.track] || [];\n\t\t\ttracks[mevent.track].push({\n\t\t\t\tticks: mevent.ticks,\n\t\t\t\t...mevent.data,\n\t\t\t});\n\n\t\t\treturn tracks;\n\t\t}, []);\n\n\t\ttracks[0] = tracks[0] || [];\n\t\t/*tracks[0].push({\n\t\t\tticks: 0,\n\t\t\ttype: \"meta\",\n\t\t\tsubtype: \"text\",\n\t\t\ttext: `${npmPackage.name} ${npmPackage.version}`,\n\t\t});*/\n\n\t\t// append note events\n\t\tmeasureTick = zeroTick;\n\t\tmeasureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\t\t\tif (!Number.isFinite(measure.duration)) return;\n\n\t\t\tmeasure.notes.forEach((note) => {\n\t\t\t\tif (trackList && !trackList[note.track]) return;\n\n\t\t\t\tif (note.rest) return;\n\n\t\t\t\tconst tick = measureTick + note.tick;\n\n\t\t\t\tconst track = (tracks[note.track] = tracks[note.track] || []);\n\n\t\t\t\tnote.subNotes.forEach((subnote) => {\n\t\t\t\t\ttrack.push({\n\t\t\t\t\t\tticks: tick + subnote.startTick,\n\t\t\t\t\t\tmeasure: index,\n\t\t\t\t\t\tids: note.ids,\n\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\tsubtype: 'noteOn',\n\t\t\t\t\t\tchannel: note.channel,\n\t\t\t\t\t\tnoteNumber: subnote.pitch,\n\t\t\t\t\t\tvelocity: subnote.velocity,\n\t\t\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\t\t\tstaff: note.staff,\n\t\t\t\t\t});\n\n\t\t\t\t\ttrack.push({\n\t\t\t\t\t\tticks: tick + subnote.endTick,\n\t\t\t\t\t\tmeasure: index,\n\t\t\t\t\t\tids: note.ids,\n\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\tsubtype: 'noteOff',\n\t\t\t\t\t\tchannel: note.channel,\n\t\t\t\t\t\tnoteNumber: subnote.pitch,\n\t\t\t\t\t\tvelocity: 0,\n\t\t\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\t\t\tstaff: note.staff,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tmeasureTick += measure.duration;\n\t\t});\n\n\t\tconst finalTick = measureTick;\n\n\t\t// ensure no empty track\n\t\tfor (let t = 0; t < tracks.length; ++t) tracks[t] = tracks[t] || [];\n\n\t\t// sort & make deltaTime\n\t\ttracks.forEach((events) => {\n\t\t\tevents.sort((e1, e2) => eventPriority(e1) - eventPriority(e2));\n\n\t\t\tlet ticks = 0;\n\t\t\tevents.forEach((event) => {\n\t\t\t\tevent.deltaTime = event.ticks - ticks;\n\t\t\t\tif (!Number.isFinite(event.deltaTime)) event.deltaTime = 0;\n\t\t\t\telse ticks = event.ticks;\n\t\t\t});\n\n\t\t\tevents.push({ deltaTime: Math.max(finalTick - ticks, 0), type: 'meta', subtype: 'endOfTrack' });\n\t\t});\n\n\t\treturn {\n\t\t\theader: {\n\t\t\t\tformatType: 0,\n\t\t\t\tticksPerBeat: TICKS_PER_BEAT,\n\t\t\t},\n\t\t\ttracks,\n\t\t\tzeroTick,\n\t\t};\n\t}\n\n\ttoPerformingNotationWithEvents(measureIndices: number[], options: { trackList?: boolean[] } = {}): MusicNotation.Notation {\n\t\tif (!measureIndices.length) return null;\n\n\t\tconst { zeroTick, ...midi } = this.toPerformingMIDI(measureIndices, options);\n\t\tconst notation = MusicNotation.Notation.parseMidi(midi);\n\n\t\tassignNotationNoteDataFromEvents(notation);\n\n\t\tlet tick = zeroTick;\n\n\t\tnotation.measures = measureIndices.map((index) => {\n\t\t\tconst startTick = tick;\n\t\t\ttick += this.measures[index - 1].duration;\n\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tstartTick,\n\t\t\t\tendTick: tick,\n\t\t\t};\n\t\t});\n\n\t\treturn notation;\n\t}\n\n\t// find the MIDI event of setTempo in measures data, and change the value of microsecondsPerBeat\n\tsetTempo(bpm: number): boolean {\n\t\tlet found = false;\n\t\tfor (const measure of this.measures) {\n\t\t\tfor (const event of measure.events) {\n\t\t\t\tif (event.data.subtype === 'setTempo') {\n\t\t\t\t\tevent.data.microsecondsPerBeat = 60e6 / bpm;\n\t\t\t\t\tfound = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn found;\n\t}\n}\n\nconst assignNotationNoteDataFromEvents = (midiNotation: MusicNotation.NotationData, fields = ['ids', 'measure', 'staffTrack']) => {\n\tconst noteId = (channel: number, pitch: number, tick: number): string => `${channel}|${pitch}|${tick}`;\n\n\tconst noteMap = midiNotation.notes.reduce((map, note) => {\n\t\tmap[noteId(note.channel, note.pitch, note.startTick)] = note;\n\n\t\treturn map;\n\t}, {});\n\n\tmidiNotation.events.forEach((event) => {\n\t\tif (event.data.subtype === 'noteOn') {\n\t\t\tconst id = noteId(event.data.channel, event.data.noteNumber, event.ticks);\n\t\t\tconst note = noteMap[id];\n\t\t\tconsole.assert(!!note, 'cannot find note of', id);\n\n\t\t\tif (note) Object.assign(note, pick(event.data, fields));\n\t\t}\n\t});\n};\n\nexport { MetaNote, MetaNotation, MidiEvent };\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","import _SHA256 from 'crypto-js/sha256';\n\nconst SHA256 = (source: string): Uint8Array => {\n\tconst { words, sigBytes } = _SHA256(source);\n\tconst uwords = words.map((x) => (x < 0 ? x + 0x100000000 : x));\n\tconst word_len = sigBytes / words.length;\n\n\treturn new Uint8Array(sigBytes).map((_, i) => (uwords[Math.floor(i / word_len)] >> ((3 - (i % word_len)) * 8)) & 0xff);\n};\n\ntype Hash = Uint8Array;\nconst HASH_LEN = 256;\n\nclass HashVector {\n\tfields: number[];\n\n\tstatic fromHash(hash: Hash): HashVector {\n\t\tconst fields = [];\n\t\tfor (const byte of hash) {\n\t\t\tfor (let b = 0; b < 8; ++b) fields.push((byte >> b) & 1 ? 1 : -1);\n\t\t}\n\n\t\treturn new HashVector(fields);\n\t}\n\n\tstatic fromString(source: string): HashVector {\n\t\tconst hash = SHA256(source);\n\t\treturn HashVector.fromHash(hash);\n\t}\n\n\tstatic fromWords(words: string[]): HashVector {\n\t\tconst vs = words.map((word) => HashVector.fromString(word));\n\t\treturn vs.reduce((sum, v) => sum.add(v), HashVector.zero);\n\t}\n\n\tstatic concat(...vectors: HashVector[]): HashVector {\n\t\tconst fields = vectors.map((v) => v.fields).flat(1);\n\n\t\treturn new HashVector(fields);\n\t}\n\n\tconstructor(fields: number[] | null = null) {\n\t\tthis.fields = fields || Array(HASH_LEN).fill(0);\n\t}\n\n\tget length(): number {\n\t\treturn this.fields.length;\n\t}\n\n\ttoHash(): Hash {\n\t\treturn Uint8Array.from(\n\t\t\tArray(this.length / 8)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => {\n\t\t\t\t\tconst bits = this.fields.slice(i * 8, (i + 1) * 8);\n\n\t\t\t\t\treturn bits.reduce((byte, bit, b) => byte | ((bit > 0 ? 1 : 0) << b), 0);\n\t\t\t\t})\n\t\t) as Hash;\n\t}\n\n\tadd(vec: HashVector): this {\n\t\tthis.fields.forEach((value, i) => (this.fields[i] = value + vec.fields[i]));\n\n\t\treturn this;\n\t}\n\n\tscale(factor: number): this {\n\t\tthis.fields = this.fields.map((value) => value * factor);\n\n\t\treturn this;\n\t}\n\n\tsub(crop: number): HashVector {\n\t\tconst fields = crop > 0 ? this.fields.slice(0, crop) : this.fields.slice(crop);\n\t\treturn new HashVector(fields);\n\t}\n\n\tstatic get zero(): HashVector {\n\t\treturn new HashVector();\n\t}\n}\n\nconst odds = (byte: number): number => {\n\tlet result = 0;\n\tfor (let b = byte; b > 0; b >>= 1) {\n\t\tif (b % 2) ++result;\n\t}\n\n\treturn result;\n};\nconst ODDS = Array(2 ** 8)\n\t.fill(0)\n\t.map((_, i) => odds(i));\nconst ODDS_HEX = ODDS.reduce((table, odd, i) => ({ ...table, [('0' + i.toString(16)).slice(-2)]: odd }), {});\n\nconst countOnes = (hash: Hash): number => hash.reduce((sum, byte) => sum + ODDS[byte], 0);\n\nconst xorHashes = (hash1: Hash, hash2: Hash): Hash => hash1.map((byte, i) => byte ^ hash2[i]) as Hash;\n\nconst cosHashes = (hash1: Hash, hash2: Hash): number => {\n\tconst len = hash1.length * 8;\n\n\tconst xor = xorHashes(hash1, hash2);\n\tconst ones = countOnes(xor);\n\n\treturn (len - ones * 2) / len;\n};\n\nconst cosBigInts = (hash1: bigint, hash2: bigint, len: number = HASH_LEN): number => {\n\tconst xor = hash1 ^ hash2;\n\tconst xor_hex = '0'.repeat(len / 4) + xor.toString(16);\n\n\tconst ones = Array(len / 8)\n\t\t.fill(0)\n\t\t.reduce((ones, _, i) => ones + ODDS_HEX[xor_hex.slice((i + 1) * -2, i ? i * -2 : undefined)], 0);\n\n\treturn (len - ones * 2) / len;\n};\n\nconst i2hex = (i) => ('0' + i.toString(16)).slice(-2);\nconst hashToHex = (hash: Hash): string => Array.from(hash).map(i2hex).join('');\n\nconst hexToHash = (hex: string): Hash =>\n\tUint8Array.from(\n\t\tArray(hex.length / 2)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => hex.substring(i * 2, (i + 1) * 2))\n\t\t\t.map((x) => parseInt(x, 16))\n\t);\n\nconst hashToBigInt = (hash: Hash): bigint => {\n\t// __NOT_FOR_BROWSER_\n\treturn Array.from(hash).reduce((r, x) => r * 0x100n + BigInt(x), 0n);\n\t/*\n\t// _NOT_FOR_BROWSER__\n\tthrow new Error('BigInt not supported');\n\t//*/\n};\n\nconst hashFromWords = (words: string[]): Hash => HashVector.fromWords(words).toHash();\n\nexport { Hash, HashVector, cosHashes, cosBigInts, hashToHex, hexToHash, hashToBigInt, hashFromWords };\n","var Sylvester = {}\n\nSylvester.Matrix = function () {}\n\nSylvester.Matrix.create = function (elements) {\n var M = new Sylvester.Matrix()\n return M.setElements(elements)\n}\n\nSylvester.Matrix.I = function (n) {\n var els = [],\n i = n,\n j\n while (i--) {\n j = n\n els[i] = []\n while (j--) {\n els[i][j] = i === j ? 1 : 0\n }\n }\n return Sylvester.Matrix.create(els)\n}\n\nSylvester.Matrix.prototype = {\n dup: function () {\n return Sylvester.Matrix.create(this.elements)\n },\n\n isSquare: function () {\n var cols = this.elements.length === 0 ? 0 : this.elements[0].length\n return this.elements.length === cols\n },\n\n toRightTriangular: function () {\n if (this.elements.length === 0) return Sylvester.Matrix.create([])\n var M = this.dup(),\n els\n var n = this.elements.length,\n i,\n j,\n np = this.elements[0].length,\n p\n for (i = 0; i < n; i++) {\n if (M.elements[i][i] === 0) {\n for (j = i + 1; j < n; j++) {\n if (M.elements[j][i] !== 0) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[i][p] + M.elements[j][p])\n }\n M.elements[i] = els\n break\n }\n }\n }\n if (M.elements[i][i] !== 0) {\n for (j = i + 1; j < n; j++) {\n var multiplier = M.elements[j][i] / M.elements[i][i]\n els = []\n for (p = 0; p < np; p++) {\n // Elements with column numbers up to an including the number of the\n // row that we're subtracting can safely be set straight to zero,\n // since that's the point of this routine and it avoids having to\n // loop over and correct rounding errors later\n els.push(\n p <= i ? 0 : M.elements[j][p] - M.elements[i][p] * multiplier\n )\n }\n M.elements[j] = els\n }\n }\n }\n return M\n },\n\n determinant: function () {\n if (this.elements.length === 0) {\n return 1\n }\n if (!this.isSquare()) {\n return null\n }\n var M = this.toRightTriangular()\n var det = M.elements[0][0],\n n = M.elements.length\n for (var i = 1; i < n; i++) {\n det = det * M.elements[i][i]\n }\n return det\n },\n\n isSingular: function () {\n return this.isSquare() && this.determinant() === 0\n },\n\n augment: function (matrix) {\n if (this.elements.length === 0) {\n return this.dup()\n }\n var M = matrix.elements || matrix\n if (typeof M[0][0] === 'undefined') {\n M = Sylvester.Matrix.create(M).elements\n }\n var T = this.dup(),\n cols = T.elements[0].length\n var i = T.elements.length,\n nj = M[0].length,\n j\n if (i !== M.length) {\n return null\n }\n while (i--) {\n j = nj\n while (j--) {\n T.elements[i][cols + j] = M[i][j]\n }\n }\n return T\n },\n\n inverse: function () {\n if (this.elements.length === 0) {\n return null\n }\n if (!this.isSquare() || this.isSingular()) {\n return null\n }\n var n = this.elements.length,\n i = n,\n j\n var M = this.augment(Sylvester.Matrix.I(n)).toRightTriangular()\n var np = M.elements[0].length,\n p,\n els,\n divisor\n var inverse_elements = [],\n new_element\n // Sylvester.Matrix is non-singular so there will be no zeros on the\n // diagonal. Cycle through rows from last to first.\n while (i--) {\n // First, normalise diagonal elements to 1\n els = []\n inverse_elements[i] = []\n divisor = M.elements[i][i]\n for (p = 0; p < np; p++) {\n new_element = M.elements[i][p] / divisor\n els.push(new_element)\n // Shuffle off the current row of the right hand side into the results\n // array as it will not be modified by later runs through this loop\n if (p >= n) {\n inverse_elements[i].push(new_element)\n }\n }\n M.elements[i] = els\n // Then, subtract this row from those above it to give the identity matrix\n // on the left hand side\n j = i\n while (j--) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[j][p] - M.elements[i][p] * M.elements[j][i])\n }\n M.elements[j] = els\n }\n }\n return Sylvester.Matrix.create(inverse_elements)\n },\n\n setElements: function (els) {\n var i,\n j,\n elements = els.elements || els\n if (elements[0] && typeof elements[0][0] !== 'undefined') {\n i = elements.length\n this.elements = []\n while (i--) {\n j = elements[i].length\n this.elements[i] = []\n while (j--) {\n this.elements[i][j] = elements[i][j]\n }\n }\n return this\n }\n var n = elements.length\n this.elements = []\n for (i = 0; i < n; i++) {\n this.elements.push([elements[i]])\n }\n return this\n },\n}\n\nmodule.exports = function (elements) {\n const mat = Sylvester.Matrix.create(elements).inverse()\n if (mat !== null) {\n return mat.elements\n } else {\n return null\n }\n}\n","import matrixInverse from 'matrix-inverse';\n\nimport { Fraction } from './interfaces';\nimport { fractionMul, reducedFraction, roundNumber } from './utils';\nimport { Logger, DummyLogger } from './logger';\n\ntype Matrix = number[][];\ntype EventID = number;\ntype Time = number;\ntype EventSet = Set;\ntype Equation = number[];\n\nconst EOM = -1; // end event id of measure\n\n//const GREAT_NUMBER = 16 * 9 * 5 * 7 * 11 * 13 * 17 * 19 * 23;\nconst GREAT_NUMBER = 1920;\n\nconst DURATION_MULTIPLIER = 128 * 3 * 5 * 7 * 11 * 13;\n\nconst floatToFrac = (x: number): Fraction => {\n\tconst n = Math.round(x * GREAT_NUMBER);\n\n\treturn reducedFraction(n, GREAT_NUMBER);\n};\n\nconst floatToTimeWarp = (x: number): Fraction => {\n\tif (x === 1) return null;\n\n\treturn floatToFrac(x);\n};\n\ninterface Stage {\n\tevents: EventID[];\n\tindex?: number;\n\ttick?: Time;\n}\n\nenum ActionType {\n\tPLACE,\n\tVERTICAL,\n\tHORIZONTAL,\n}\n\nclass Action {\n\ttype: ActionType;\n\te1: EventID;\n\te2?: EventID;\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tstatic P(e: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.PLACE,\n\t\t\te1: e,\n\t\t});\n\t}\n\n\tstatic V(e1: EventID, e2: EventID, order: number = 1): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.VERTICAL,\n\t\t\te1: order > 0 ? e1 : e2,\n\t\t\te2: order > 0 ? e2 : e1,\n\t\t});\n\t}\n\n\tstatic H(e1: EventID, e2: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.HORIZONTAL,\n\t\t\te1,\n\t\t\te2,\n\t\t});\n\t}\n\n\tget id(): string {\n\t\tswitch (this.type) {\n\t\t\tcase ActionType.PLACE:\n\t\t\t\treturn this.e1.toString();\n\n\t\t\tcase ActionType.VERTICAL:\n\t\t\t\treturn `${this.e1}|${this.e2}`;\n\n\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\treturn `${this.e1}-${this.e2 >= 0 ? this.e2 : '.'}`;\n\t\t}\n\t}\n\n\tget events(): EventID[] {\n\t\treturn [this.e1, this.e2].filter(Number.isFinite);\n\t}\n}\n\ninterface Quota {\n\tcredits: number;\n}\n\ninterface BasicEvent {\n\tid: EventID;\n\tconfidence: number;\n\tshrinkness: number; // the possibility of time warp\n\tx: number;\n\tstaff?: number;\n\tduration: Time;\n}\n\ninterface Event extends BasicEvent {\n\tlowWarp: number;\n}\n\ninterface EventResult {\n\tid: EventID;\n\ttick: Time;\n\tendTick: Time;\n\ttickGroup: number;\n\ttimeWarp?: Fraction;\n}\n\ninterface Environment {\n\tevents: BasicEvent[];\n\texpectedDuration: Time;\n\tmeasureShrinkness: number;\n\tendX: number;\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n}\n\ninterface Solution {\n\tevents: EventResult[];\n\tvoices: EventID[][];\n\tduration: number;\n\n\tloss?: number;\n\tactions?: string;\n\tcredits?: number;\n\ttimes?: number;\n}\n\ninterface Status {\n\tactionAccessing: Map;\n\teventMap: { [id: number]: Event };\n\teventTendencies: number[];\n\tmatrixH: Matrix; // matrix N+1 x N\t\t[right][left]\n\tmatrixV: Matrix; // matrix N x N\n}\n\ninterface NodeBranch {\n\taction: Action;\n\tpossibility: number;\n}\n\ntype Path = EventID[];\n\ninterface InbalanceEquations {\n\tones: boolean[];\n\tinbalances: Equation[];\n}\n\ninterface SolverOptions {\n\tquota?: number;\n\tlogger?: Logger;\n}\n\nclass StageMatrix {\n\tmatrix: EventSet[][];\n\n\tstatic fromNode(node: PathNode, status: Status): StageMatrix {\n\t\tconst matrix = Array(node.stages.length)\n\t\t\t.fill(null)\n\t\t\t.map(() =>\n\t\t\t\tArray(node.stages.length)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => new Set())\n\t\t\t);\n\n\t\tnode.actions\n\t\t\t.filter((action) => action.type === ActionType.HORIZONTAL)\n\t\t\t.forEach((action) => {\n\t\t\t\tconst stage1 = node.stages.findIndex((stage) => stage.events.includes(action.e1));\n\t\t\t\tconst stage2 = node.stages.findIndex((stage) => stage.events.includes(action.e2));\n\t\t\t\tconsole.assert(stage1 >= 0 && stage2 >= 0, 'invalid stages for H action:', node.id, node.stages, action);\n\n\t\t\t\tmatrix[stage1][stage2].add(action.e1);\n\t\t\t});\n\t\tmatrix[0][node.stages.length - 1].add(0); // the entire measure edge\n\n\t\tconst stagedEvents = node.stagedEvents;\n\t\tconst endHs = status.matrixH[status.matrixH.length - 1].filter((_, i) => !stagedEvents.has(i));\n\t\tconst endHP = Math.max(0, Math.max(...endHs) - 0.01);\n\n\t\tconst hActions = node.actions.filter((action) => action.type === ActionType.HORIZONTAL);\n\n\t\tconst pendingHeads = Object.keys(status.eventMap)\n\t\t\t.map(Number)\n\t\t\t.filter((eid) => !hActions.find((action) => action.e2 === eid));\n\n\t\t// edges to end stage\n\t\tnode.stages.forEach((stage) => {\n\t\t\tstage.events.forEach((eid) => {\n\t\t\t\tif (eid > 0) {\n\t\t\t\t\tconst act = hActions.find((action) => action.e1 === eid);\n\t\t\t\t\tif (!act && status.matrixH[status.matrixH.length - 1][eid] >= endHP) {\n\t\t\t\t\t\tif (!pendingHeads.some((id) => status.matrixH[id][eid] > 0)) matrix[stage.index][node.stages.length - 1].add(eid);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn new StageMatrix({ matrix });\n\t}\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tpathOf(x: number, y: number, target: number, ei: number = 0): Path {\n\t\tif (this.matrix[x][y].size) {\n\t\t\tconst eid = [...this.matrix[x][y]][ei];\n\t\t\tif (y === target) return [eid];\n\n\t\t\tfor (let yy = y + 1; yy <= target; ++yy) {\n\t\t\t\tconst sub = this.pathOf(y, yy, target);\n\t\t\t\tif (sub) return [eid, ...sub];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfindDoublePath(s1: number, s2: number): [Path, Path] {\n\t\tconst paths = [];\n\t\tfor (let t = s2; t >= s1 + 1; --t) {\n\t\t\tfor (let ei = 0; ei < this.matrix[s1][t].size; ++ei) {\n\t\t\t\tconst path = this.pathOf(s1, t, s2, ei);\n\t\t\t\tif (path) {\n\t\t\t\t\tpaths.push(path);\n\t\t\t\t\tif (paths.length === 2) return [paths[0], paths[1]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\treducePath(path: Path): void {\n\t\tthis.matrix.forEach((column) => column.forEach((set) => path.forEach((id) => set.delete(id))));\n\t}\n\n\ttoEquations(eventCount: number): Equation[] {\n\t\tconst equations: Equation[] = [];\n\n\t\tfor (let d = 1; d < this.matrix.length; d++) {\n\t\t\tfor (let s1 = 0; s1 < this.matrix.length - d; s1++) {\n\t\t\t\tconst s2 = s1 + d;\n\n\t\t\t\twhile (true) {\n\t\t\t\t\t// find closed loop from s1 to s2\n\t\t\t\t\tconst paths = this.findDoublePath(s1, s2);\n\t\t\t\t\tif (paths) {\n\t\t\t\t\t\tconst [path1, path2] = paths;\n\t\t\t\t\t\tconst equation = Array(eventCount).fill(0);\n\t\t\t\t\t\tpath1.forEach((eid) => (equation[eid] = 1));\n\t\t\t\t\t\tpath2.forEach((eid) => (equation[eid] = -1));\n\t\t\t\t\t\tequations.push(equation);\n\n\t\t\t\t\t\tthis.reducePath(path1.length > path2.length ? path1 : path2);\n\t\t\t\t\t} else break;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn equations;\n\t}\n}\n\nclass PathNode {\n\tlogger: Logger;\n\n\tparent: PathNode;\n\taction: Action;\n\tpossibility: number;\n\tchildren: PathNode[];\n\n\tstages: Stage[];\n\t//stageMatrix: StageMatrix;\n\tconstraints: Equation[];\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\n\t\tconsole.assert(this.logger, 'logger is null:', data);\n\t}\n\n\tget actions(): Action[] {\n\t\tconst last = this.parent ? this.parent.actions : [];\n\t\treturn this.action ? [...last, this.action] : last;\n\t}\n\n\tget id(): string {\n\t\tconst actionIds = this.actions.map((action) => action.id).sort();\n\t\treturn actionIds.join(' ');\n\t}\n\n\tget stagedEvents(): Set {\n\t\tconst set = new Set();\n\t\tif (this.stages) this.stages.forEach((stage) => stage.events.forEach((eid) => eid >= 0 && set.add(eid)));\n\n\t\treturn set;\n\t}\n\n\tlike(ids: string): boolean {\n\t\tconst actionIds = ids.split(' ').sort();\n\t\treturn actionIds.join(' ') === this.id;\n\t}\n\n\tconstructStages(status: Status): void {\n\t\tthis.stages = [{ events: [EOM] }];\n\n\t\tfor (const action of this.actions) {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase ActionType.PLACE:\n\t\t\t\t\tthis.stages.unshift({ events: [action.e1] });\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.VERTICAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid V action:', this.stages, action);\n\n\t\t\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\t\t\tstage1.events.push(...stage2.events);\n\t\t\t\t\t\t\tstage2.events = null;\n\t\t\t\t\t\t\tthis.stages = this.stages.filter((stage) => stage.events);\n\t\t\t\t\t\t} else if (!stage1) stage2.events.unshift(action.e1);\n\t\t\t\t\t\telse if (!stage2) stage1.events.push(action.e2);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid H action:', this.stages, action);\n\n\t\t\t\t\t\tconst newStage = (eid) => {\n\t\t\t\t\t\t\tconsole.assert(status.eventMap[eid], 'invalid event id:', action.id, eid, status.eventMap);\n\t\t\t\t\t\t\tconst x = status.eventMap[eid].x;\n\n\t\t\t\t\t\t\tconst stage = this.stages.find(\n\t\t\t\t\t\t\t\t(s) => s.events.some((e) => e > 0 && status.eventMap[e].x <= x) && s.events.some((e) => e > 0 && status.eventMap[e].x >= x)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (stage) stage.events.push(eid);\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconst newStage = { events: [eid] };\n\t\t\t\t\t\t\t\tconst si = this.stages.findIndex((s) => s.events[0] === EOM || status.eventMap[s.events[0]].x >= x);\n\t\t\t\t\t\t\t\tthis.stages.splice(si, 0, newStage);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (!stage1) newStage(action.e1);\n\t\t\t\t\t\tif (!stage2) newStage(action.e2);\n\n\t\t\t\t\t\t/*if (this.stages.some((s, si) => si < this.stages.length - 2\n\t\t\t\t\t&& s.events.some(e1 => this.stages[si + 1].events.some(e2 => status.eventMap[e2].x <= status.eventMap[e1].x))))\n\t\t\t\t\tdebugger;*/\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.stages.forEach((stage, i) => (stage.index = i));\n\t}\n\n\tconstructConstraints(status: Status): void {\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst stageMatrix = StageMatrix.fromNode(this, status);\n\t\tconst equations = stageMatrix.toEquations(eventCount);\n\n\t\tconst factors = Array(eventCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, id) => status.eventMap[id].duration);\n\t\tthis.constraints = equations.map((equation) => equation.map((it, i) => it * factors[i]));\n\t}\n\n\tinbalancesConstraints(status: Status): InbalanceEquations {\n\t\tconsole.assert(this.constraints, 'constraints not constructed.');\n\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst ones = Array(eventCount).fill(true);\n\t\tconst fixed = Array(eventCount).fill(false);\n\n\t\tconst inbalances: Equation[] = [];\n\n\t\tfor (const constraint of this.constraints) {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum !== 0) {\n\t\t\t\tconst c = sum < 0 ? constraint.map((it) => -it) : constraint;\n\t\t\t\tif (c[0] > 0) continue; // entire measure edge usually is larger than others, no effect\n\n\t\t\t\tinbalances.push(c);\n\n\t\t\t\t// set ones for tight items\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tfixed[i] = fixed[i] || it < 0;\n\t\t\t\t\tif (it) ones[i] = it < 0 || fixed[i];\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// pick out influenced equations\n\t\tthis.constraints.forEach((constraint) => {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum === 0 && !constraint[0]) {\n\t\t\t\tif (constraint.some((it, i) => it && !ones[i])) {\n\t\t\t\t\tconstraint.forEach((it, i) => it && (ones[i] = false));\n\t\t\t\t\tinbalances.push(constraint);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn { ones, inbalances };\n\t}\n\n\tsolveEquations({ ones, inbalances }: InbalanceEquations): number[] {\n\t\tif (!inbalances.length) return ones.map(() => 1);\n\n\t\tconst xis = ones\n\t\t\t.map((fixed, i) => ({ fixed, i }))\n\t\t\t.filter(({ fixed }) => !fixed)\n\t\t\t.map(({ i }) => i)\n\t\t\t.filter((i) => inbalances.some((items) => items[i] !== 0));\n\t\tif (!xis.length) return ones.map(() => 1);\n\n\t\tconst factors = xis.map((i) => Math.abs(inbalances.find((items) => items[i] !== 0)[i]));\n\n\t\ttype Line = { line: number[]; bias: number };\n\n\t\tconst equationMap = new Map();\n\t\tlet conflicted = false;\n\n\t\tconst lines: Line[] = inbalances\n\t\t\t.map((items) => {\n\t\t\t\tconst line = items.filter((_, i) => xis.includes(i));\n\t\t\t\tconst bias = -items.reduce((sum, it, i) => sum + (xis.includes(i) ? 0 : it), 0);\n\n\t\t\t\treturn { line, bias };\n\t\t\t\t// remove duplicated equations\n\t\t\t})\n\t\t\t.filter(({ line, bias }) => {\n\t\t\t\tif (line.every((it) => it === 0)) return false;\n\n\t\t\t\tconst id = line.join(',');\n\t\t\t\tif (equationMap.has(id)) {\n\t\t\t\t\tconflicted = equationMap.get(id) !== bias;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tequationMap.set(id, bias);\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tif (conflicted) return null;\n\n\t\tconst squareLines = lines.slice(0, xis.length);\n\t\tconst restLines = lines.slice(xis.length);\n\t\tif (squareLines.length < xis.length) {\n\t\t\tconst candidateLines = [];\n\t\t\tfor (let i1 = 0; i1 < xis.length - 1; ++i1) {\n\t\t\t\tconst i2 = i1 + 1;\n\t\t\t\tconst line = {\n\t\t\t\t\tline: xis.map((_, i) => (i === i1 ? 1 : i === i2 ? -1 : 0)),\n\t\t\t\t\tbias: 0,\n\t\t\t\t\tprior: (factors[i1] + factors[i2]) / DURATION_MULTIPLIER,\n\t\t\t\t};\n\t\t\t\tif (squareLines.some((sl) => sl.line[i1] && sl.line[i2])) line.prior -= 10;\n\t\t\t\tif (squareLines.some((sl) => sl.line.filter(Number).length === 1 && (sl.line[i1] || sl.line[i2]))) line.prior += 1;\n\t\t\t\tcandidateLines.push(line);\n\t\t\t}\n\t\t\tcandidateLines.sort((c1, c2) => c1.prior - c2.prior);\n\n\t\t\tsquareLines.push(...candidateLines.slice(0, xis.length - squareLines.length));\n\t\t}\n\t\t//console.assert(squareLines.length, \"squareLines is empty.\", lines, xis, equationMap, inbalances);\n\n\t\tconst matrix = squareLines.map(({ line }) => line);\n\t\tconst bias = squareLines.map(({ bias }) => bias);\n\n\t\tconst invert = matrixInverse(matrix);\n\t\tif (!invert) {\n\t\t\tthis.logger.warn('null invert:', matrix);\n\t\t\t//debugger;\n\t\t\treturn null;\n\t\t}\n\t\tconst solution = invert.map((row) => row.reduce((sum, it, i) => sum + it * bias[i], 0));\n\t\t//console.log(\"solution:\", matrix, invert, solution);\n\n\t\tif (restLines.length) {\n\t\t\tif (restLines.some((line) => Math.abs(line.line.reduce((sum, it, i) => sum + it * solution[i], 0)) > 1e-3)) {\n\t\t\t\t//console.debug(\"rest lines not satisfied:\", restLines, solution);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tconst result = ones.map(() => 1);\n\t\txis.forEach((xi, i) => (result[xi] = solution[i]));\n\n\t\treturn result;\n\t}\n\n\toptimallySolve(status: Status): number[] {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 1-2 9|1 2-3 3-4 9-10 4-5 5-6 6-7 7-8 8-. 12|6 11-12 10-11\"))\n\t\t//\tdebugger;\n\n\t\tconst shrinknesses = ones.map((fixed, id) => (fixed ? -1 : roundNumber(status.eventMap[id].shrinkness, 0.01)));\n\t\tconst shrinkMap = shrinknesses.reduce((map, shrinkness, id) => {\n\t\t\tif (shrinkness >= 0) {\n\t\t\t\tmap[shrinkness] = map[shrinkness] || [];\n\t\t\t\tmap[shrinkness].push(id);\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t\tconst groups = Object.entries(shrinkMap)\n\t\t\t.sort((p1, p2) => Number(p2[0]) - Number(p1[0]))\n\t\t\t.map((pair) => pair[1]);\n\t\t//console.log(\"groups:\", groups, shrinknesses);\n\n\t\tfor (let released = 1; released < groups.length; ++released) {\n\t\t\tconst releasedIds = [].concat(...groups.slice(0, released));\n\t\t\tconst fixed = ones.map((_, id) => !releasedIds.includes(id));\n\t\t\tconst warps = this.solveEquations({ ones: fixed, inbalances });\n\n\t\t\tif (warps && warps.every((it, i) => it <= 1 && it > status.eventMap[i].lowWarp)) return warps;\n\t\t}\n\n\t\treturn this.solveEquations({ ones, inbalances });\n\t}\n\n\tisConflicted(status: Status): boolean {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 8|2 8-9 3|9 2-3 3-4 10|4 4-5 5|11 11-12 6|12 5-6 10-11 9-10 6-7\"))\n\t\t//\tdebugger;\n\n\t\tfor (const c of inbalances) {\n\t\t\t// sum with low warps\n\t\t\tconst lowSum = c.reduce((sum, it, i) => sum + it * (ones[i] || it <= 0 ? 1 : status.eventMap[i].lowWarp), 0);\n\n\t\t\tif (lowSum >= 0) {\n\t\t\t\t// mark events' broken tendency\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tif (it) status.eventTendencies[i] += it > 0 ? 1 : -1;\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (!inbalances.length) return false;\n\n\t\tconst timeWarps = this.solveEquations({ ones, inbalances });\n\t\tif (!timeWarps) return true;\n\n\t\treturn !timeWarps.every((it, i) => it > status.eventMap[i].lowWarp && it <= 1);\n\t}\n\n\tgetSolution(status: Status): Solution {\n\t\tconst actionKey = (action) =>\n\t\t\tstatus.eventMap[action.e2]\n\t\t\t\t? status.eventMap[action.e2].x + Math.abs(status.eventMap[action.e2].x - status.eventMap[action.e1].x) * 0.06\n\t\t\t\t: status.eventMap[action.e1].x + 1e4;\n\t\tconst hacts = this.actions.filter((action) => action.type === ActionType.HORIZONTAL).sort((a1, a2) => actionKey(a1) - actionKey(a2));\n\t\tconst hmap = hacts.reduce((map, act) => ({ ...map, [act.e1]: act.e2 }), {});\n\t\tconst startEs = new Set([...Object.keys(hmap)].map(Number));\n\t\thacts.forEach((act) => startEs.delete(act.e2));\n\t\tthis.stages[0].events.forEach((eid) => eid > 0 && startEs.add(eid));\n\n\t\tlet voices = [...startEs].map((se) => {\n\t\t\tconst voice = [se];\n\n\t\t\tlet x = se;\n\t\t\twhile (hmap[x]) {\n\t\t\t\tx = hmap[x];\n\t\t\t\tif (x < 0 || voice.includes(x)) break;\n\n\t\t\t\tvoice.push(x);\n\t\t\t}\n\n\t\t\treturn voice;\n\t\t});\n\n\t\tconst events: EventResult[] = Object.values(status.eventMap)\n\t\t\t.filter((e) => e.id > 0)\n\t\t\t.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\ttick: null,\n\t\t\t\tendTick: null,\n\t\t\t\ttickGroup: null,\n\t\t\t\ttimeWarp: null,\n\t\t\t}));\n\t\tconst eventMap: { [id: number]: EventResult } = events\n\t\t\t.filter((e) => voices.some((voice) => voice.includes(e.id)) || hacts.some((act) => [act.e1, act.e2].includes(e.id)))\n\t\t\t.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.stages.forEach((stage, si) => stage.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tickGroup = si)));\n\n\t\tthis.stages[0].tick = 0;\n\t\tthis.stages[0].events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = 0));\n\n\t\t// solve time warps\n\t\tconst timeWarps = this.optimallySolve(status);\n\t\tevents.forEach((e) => (e.timeWarp = floatToTimeWarp(timeWarps[e.id])));\n\n\t\t//if (this.like(\"1 12|1 1-2 9|2 2-3 13|3 3-4 4-5 10|5 14|10 10-11 8-9 14-15 15|6 6-7 7-. 13-14 5-6 12-13 9-10\"))\n\t\t//\tdebugger;\n\n\t\t// solve stage ticks\n\t\tconst estages = this.stages.slice(0, this.stages.length - 1);\n\t\tconst solveStages = (): boolean => {\n\t\t\tif (estages.every((stage) => Number.isFinite(stage.tick))) return false;\n\n\t\t\tlet changed = false;\n\n\t\t\t// forward\n\t\t\thacts.forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (Number.isFinite(stage1.tick) && !Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage2.tick = stage1.tick + fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage2.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage2.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// backward\n\t\t\t[...hacts].reverse().forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (!Number.isFinite(stage1.tick) && Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage1.tick = stage2.tick - fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage1.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage1.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn changed;\n\t\t};\n\t\twhile (solveStages());\n\n\t\tconsole.assert(\n\t\t\testages.every((stage) => Number.isFinite(stage.tick)),\n\t\t\t'stage ticks not all solved:',\n\t\t\tthis.stages,\n\t\t\tthis.id\n\t\t);\n\t\tevents\n\t\t\t.filter((event) => Number.isFinite(event.tick))\n\t\t\t.forEach((event) => (event.endTick = event.tick + fractionMul(status.eventMap[event.id].duration, event.timeWarp)));\n\n\t\t// clip out of bound events\n\t\tconst measureDuration = status.eventMap[0].duration;\n\t\tvoices.forEach((voice) => {\n\t\t\tconst outEI = voice.findIndex((eid) => eventMap[eid].endTick > measureDuration);\n\t\t\tif (outEI >= 0) {\n\t\t\t\tconst es = voice.splice(outEI, voice.length - outEI);\n\t\t\t\tes.forEach((eid) => {\n\t\t\t\t\teventMap[eid].tick = null;\n\t\t\t\t\teventMap[eid].endTick = null;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tvoices = voices.filter((voice) => voice.length);\n\n\t\tconst duration = Math.max(0, ...events.map((e) => e.endTick).filter(Number.isFinite));\n\t\t//console.log(\"getSolution:\", this);\n\t\tthis.logger.debug(String.fromCodePoint(0x1f34e), this.id, timeWarps);\n\n\t\treturn {\n\t\t\tvoices,\n\t\t\tevents,\n\t\t\tduration,\n\t\t\tactions: this.actions.map((action) => action.id).join(' '),\n\t\t};\n\t}\n\n\tdeduce(status: Status, quota: Quota): Solution {\n\t\tif (!this.stages) this.constructStages(status);\n\t\t//console.log(\"deduce:\", status);\n\n\t\t// increase access counting\n\t\tconst access = status.actionAccessing.get(this.id) || { times: 0 };\n\t\t++access.times;\n\t\tstatus.actionAccessing.set(this.id, access);\n\n\t\tthis.constructConstraints(status);\n\t\t//console.log(\"constraints:\", this.id, this.stages, this.constraints);\n\n\t\tif (this.isConflicted(status)) {\n\t\t\taccess.closed = true;\n\t\t\tthis.logger.info(this.action.id, '\\u274c');\n\t\t\treturn null;\n\t\t}\n\n\t\t//const newStatus = status;\n\t\tthis.logger.group(this.action && this.action.id);\n\n\t\tif (quota.credits > 0) {\n\t\t\t--quota.credits;\n\n\t\t\tif (!this.children) this.expand(status);\n\n\t\t\tthis.children = this.children.filter((node) => !status.actionAccessing.get(node.id) || !status.actionAccessing.get(node.id).closed);\n\t\t\tif (this.children.length) {\n\t\t\t\tconst p = (node: PathNode): number => node.possibility / ((status.actionAccessing.get(node.id) || { times: 0 }).times + 1);\n\t\t\t\tthis.children.sort((n1, n2) => p(n2) - p(n1));\n\n\t\t\t\tfor (const child of this.children) {\n\t\t\t\t\tconst solution = child.deduce(status, quota);\n\t\t\t\t\tif (solution) {\n\t\t\t\t\t\tthis.logger.groupEnd();\n\t\t\t\t\t\treturn solution;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (quota.credits <= 0) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"got the leaf:\", this, status);\n\t\t} else this.logger.debug('quota exhausted.');\n\n\t\tthis.logger.groupEnd();\n\n\t\taccess.closed = true;\n\n\t\treturn this.getSolution(status);\n\t}\n\n\texpand(status: Status): void {\n\t\t//this.action.events.forEach(eid => status.pendingEvents.delete(eid));\n\t\tthis.constructStages(status);\n\n\t\tconst { eventMap, matrixV, matrixH } = status;\n\t\tconst stagedEvents = this.stagedEvents;\n\n\t\tconst branches: NodeBranch[] = [];\n\t\tconst appendBranch = (branch: NodeBranch): void => {\n\t\t\tif (!this.actions.some((a) => a.id === branch.action.id) && !branches.some((b) => b.action.id === branch.action.id)) {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(branch.action.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(branch.action.e2));\n\t\t\t\tif (stage1 === stage2 || (stage1 && stage2 && stage1.index >= stage2.index)) return;\n\n\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\t\tif (stage2.index - stage1.index > 1) return;\n\t\t\t\t\t\tif (this.actions.some((a) => stage1.events.includes(a.e1) && stage2.events.includes(a.e2))) return;\n\t\t\t\t\t} else if (branch.action.type === ActionType.HORIZONTAL) {\n\t\t\t\t\t\tif (stage1.index > stage2.index) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tbranch.action.type === ActionType.HORIZONTAL &&\n\t\t\t\t\tthis.actions.some(\n\t\t\t\t\t\t(a) =>\n\t\t\t\t\t\t\ta.type === ActionType.HORIZONTAL &&\n\t\t\t\t\t\t\t(a.e1 === branch.action.e1 || a.e2 === branch.action.e2 || (a.e1 === branch.action.e2 && a.e2 === branch.action.e1))\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\treturn;\n\n\t\t\t\t// exclude 2 too far away events by vertical\n\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\tif (stage1) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage1.events.map((e) => matrixV[branch.action.e2][e]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (stage2) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage2.events.map((e) => matrixV[e][branch.action.e1]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbranches.push(branch);\n\t\t\t}\n\t\t};\n\n\t\tfor (const eid of stagedEvents) {\n\t\t\tif (eid < 0) continue;\n\n\t\t\tmatrixV[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0 && eid !== id) appendBranch({ action: Action.V(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixV.forEach((ps, id) => {\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.V(eid, id), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH.forEach((ps, id) => {\n\t\t\t\tid = id >= Object.keys(eventMap).length ? -1 : id;\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(eid, id), possibility: p });\n\t\t\t});\n\t\t}\n\n\t\t// If branches not contains extending actions, clear it.\n\t\t//\tBecause pure inner vertical action may be harmful\n\t\tif (\n\t\t\t!branches.some(\n\t\t\t\t(branch) =>\n\t\t\t\t\t[ActionType.HORIZONTAL, ActionType.PLACE].includes(branch.action.type) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e1) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e2)\n\t\t\t)\n\t\t) {\n\t\t\tthis.children = [];\n\t\t\treturn;\n\t\t}\n\n\t\t//console.table(branches.map(b => [b.action.id, b.possibility]));\n\t\t//console.log(\"branches:\", branches.map(b => b.action.id).join(\", \"), \"\\n\", this.actions.map(a => a.id).join(\", \"));\n\t\tthis.children = branches.map((branch) => new PathNode({ logger: this.logger, parent: this, ...branch }));\n\t}\n}\n\nclass Solver {\n\tquota: number;\n\tlogger: Logger;\n\n\tevents: Event[];\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n\txSpan: number;\n\n\teventMap: { [id: number]: Event };\n\tactionAccessing: Map;\n\n\tpathRoot: PathNode;\n\n\tconstructor(env: Environment, { quota = 1000, logger = new DummyLogger() }: SolverOptions = {}) {\n\t\tthis.quota = quota;\n\t\tthis.logger = logger;\n\n\t\tconst event0 = {\n\t\t\tid: 0,\n\t\t\tx: 0,\n\t\t\tconfidence: 1,\n\t\t\tshrinkness: env.measureShrinkness,\n\t\t\tduration: env.expectedDuration,\n\t\t\tlowWarp: 0,\n\t\t};\n\n\t\tthis.events = [\n\t\t\tevent0,\n\t\t\t...env.events.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\tx: e.x,\n\t\t\t\tconfidence: e.confidence,\n\t\t\t\tshrinkness: e.shrinkness,\n\t\t\t\tstaff: e.staff,\n\t\t\t\tduration: e.duration,\n\t\t\t\tlowWarp: 0.5,\n\t\t\t})),\n\t\t];\n\t\tthis.eventMap = this.events.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.matrixH = env.matrixH;\n\t\tthis.matrixV = env.matrixV;\n\n\t\tthis.xSpan = env.endX - Math.min(env.endX - 1, ...env.events.map((e) => e.x));\n\n\t\tthis.actionAccessing = new Map();\n\t}\n\n\tsolve(): Solution {\n\t\t// construct path root\n\t\tthis.pathRoot = new PathNode({\n\t\t\tlogger: this.logger,\n\t\t\taction: null,\n\t\t});\n\t\tthis.pathRoot.children = this.events.slice(1).map(\n\t\t\t(event) =>\n\t\t\t\tnew PathNode({\n\t\t\t\t\tlogger: this.logger,\n\t\t\t\t\tparent: this.pathRoot,\n\t\t\t\t\taction: Action.P(event.id),\n\t\t\t\t\tpossibility: this.matrixV[event.id].reduce((sum, p) => sum + p, 0),\n\t\t\t\t})\n\t\t);\n\n\t\tlet bestSolution: Solution = null;\n\n\t\tthis.logger.groupCollapsed('solve');\n\n\t\tconst eventTendencies = Array(this.events.length).fill(0);\n\n\t\tconst quota = { credits: this.quota, times: 0 };\n\t\twhile (quota.credits > 0) {\n\t\t\t++quota.times;\n\n\t\t\tconst status = {\n\t\t\t\teventMap: this.eventMap,\n\t\t\t\tmatrixH: this.matrixH,\n\t\t\t\tmatrixV: this.matrixV,\n\t\t\t\tactionAccessing: this.actionAccessing,\n\t\t\t\teventTendencies,\n\t\t\t};\n\n\t\t\tconst solution = this.pathRoot.deduce(status, quota);\n\t\t\tsolution.credits = this.quota - quota.credits;\n\t\t\tsolution.times = quota.times;\n\t\t\tthis.evaluateSolution(solution);\n\t\t\tthis.logger.debug('loss:', solution.loss);\n\n\t\t\tbestSolution = !bestSolution || solution.loss < bestSolution.loss ? solution : bestSolution;\n\t\t\tif (!bestSolution.loss) break;\n\n\t\t\t// check if searching tree traversed\n\t\t\tif (this.actionAccessing.get('').closed) break;\n\t\t}\n\n\t\tthis.logger.groupEnd();\n\t\tthis.logger.debug('solution', bestSolution && bestSolution.loss, bestSolution);\n\t\tthis.logger.debug('cost:', this.quota - quota.credits);\n\n\t\tthis.logger.debug(\n\t\t\t'eventTendencies:',\n\t\t\teventTendencies.map((t) => t / quota.times)\n\t\t);\n\n\t\treturn bestSolution;\n\t}\n\n\tevaluateSolution(solution: Solution): void {\n\t\tsolution.loss = 0;\n\n\t\ttype EventR = Event & EventResult;\n\t\tconst eventMap: Record = solution.events.reduce((map, e) => ({ ...map, [e.id]: { ...e, ...this.eventMap[e.id] } }), {});\n\n\t\t/*// minus tick\n\t\tconst minuses = solution.events.filter((e) => e.tick < 0).length;\n\t\tsolution.loss += minuses * 1000;*/\n\n\t\t// minus tick rates penalty\n\t\tconst events = solution.events.filter((event) => Number.isFinite(event.tick)).map((event) => eventMap[event.id]);\n\t\tconst sevents: Record = events.reduce((map, event) => {\n\t\t\tmap[event.staff] = map[event.staff] || [];\n\t\t\tmap[event.staff].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\t\tObject.values(sevents).forEach((es) => {\n\t\t\tconst ses = es.sort((e1, e2) => e1.x - e2.x).slice(0, es.length - 1);\n\t\t\tses.forEach((e1, i) => {\n\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\tif (e2.tick < e1.tick) solution.loss += 1000;\n\t\t\t});\n\t\t});\n\n\t\tconst times = new Map();\n\t\tsolution.events.forEach((event) => {\n\t\t\tif (!Number.isFinite(event.tick) || solution.voices.every((voice) => !voice.includes(event.id)))\n\t\t\t\tsolution.loss += 100 * eventMap[event.id].confidence;\n\n\t\t\tif (event.timeWarp) {\n\t\t\t\tconst { numerator, denominator } = event.timeWarp;\n\t\t\t\tconst shrinkness = eventMap[event.id].shrinkness;\n\t\t\t\ttimes.set(numerator, Math.max(times.get(numerator) || 0, 1 - shrinkness));\n\t\t\t\ttimes.set(denominator, Math.max(times.get(denominator) || 0, 1 - shrinkness));\n\t\t\t}\n\t\t});\n\n\t\t// partial measure penalty\n\t\tconst partialFrac = reducedFraction(solution.duration, this.eventMap[0].duration);\n\t\ttimes.set(partialFrac.numerator, Math.max(times.get(partialFrac.numerator) || 0, 1 - this.eventMap[0].shrinkness));\n\t\ttimes.set(partialFrac.denominator, Math.max(times.get(partialFrac.denominator) || 0, 1 - this.eventMap[0].shrinkness));\n\n\t\tfor (const [n, weight] of times.entries()) {\n\t\t\tif (n > 1) solution.loss += Math.log(n) * weight;\n\t\t}\n\n\t\tlet spaceTime = 0;\n\t\tlet staffAlters = 0;\n\t\tsolution.voices.forEach((voice) => {\n\t\t\tconsole.assert(eventMap[voice[0]], 'invalid voice:', voice, Object.keys(eventMap));\n\n\t\t\tconst start = Math.abs(eventMap[voice[0]].tick); // abs: penalty for minus start\n\t\t\tconst end = eventMap[voice[voice.length - 1]].endTick;\n\n\t\t\tspaceTime += Math.max(0, start + solution.duration - end);\n\n\t\t\t// staff alternation penalty\n\t\t\tlet staff = null;\n\t\t\tvoice.forEach((id) => {\n\t\t\t\tconst event = eventMap[id];\n\t\t\t\tif (event.staff !== staff) {\n\t\t\t\t\tif (staff !== null) ++staffAlters;\n\t\t\t\t\tstaff = event.staff;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tsolution.loss += (spaceTime * 10) / DURATION_MULTIPLIER;\n\t\tsolution.loss += 5 ** staffAlters - 1;\n\n\t\t// tick twist\n\t\tconst eventsXOrder = [...events].sort((e1, e2) => e1.x - e2.x);\n\t\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\t\tconst e1 = eventsXOrder[i];\n\t\t\tconst dx = e2.x - e1.x;\n\t\t\tconst dt = e2.tick - e1.tick;\n\n\t\t\tif (!dt) return dx / this.xSpan;\n\n\t\t\tconst rate = Math.atan2(dt / solution.duration, dx / this.xSpan);\n\n\t\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t\t});\n\t\tconst tickTwist = Math.max(...tickTwists, 0);\n\t\tsolution.loss += tickTwist ** 2;\n\n\t\tconsole.assert(solution.loss >= 0, 'Invalid solution loss!!!', solution.loss, times, spaceTime, staffAlters);\n\t\tif (solution.loss < 0) solution.loss = Infinity;\n\t}\n}\n\nexport { SolverOptions, Solver };\n","import { EventFeature, BackgroundImage, EventPredisposition } from './interfaces';\nimport { StemBeam } from './term';\nimport { SimpleClass } from './aux_/typedJSON';\n\nenum EventElementType {\n\tPAD,\n\tBOS,\n\tEOS,\n\n\tCHORD,\n\tREST,\n}\n\ninterface EventElement {\n\thref?: string;\n\tdisposed?: boolean;\n\tindex?: number;\n\tvoice?: number;\n\n\ttype: EventElementType;\n\tstaff: number;\n\tx: number;\n\ty1: number;\n\ty2: number;\n\tfeature: EventFeature;\n\tpivotX?: number;\n\theadY?: number;\n\n\t// targets\n\ttick?: number;\n\tdivision?: number;\n\tdots?: number;\n\tbeam?: StemBeam;\n\tstemDirection?: string;\n\tgrace?: boolean;\n\ttremoloCatcher?: boolean;\n\ttimeWarped?: boolean;\n\tfullMeasure?: boolean; // full measure rest\n\tfake?: boolean;\n\n\torder?: number;\n\n\tpredisposition?: EventPredisposition;\n}\n\ntype Matrix = number[][];\n\ninterface Annotation {\n\tloss: number;\n\tgrant: boolean;\n\tpatched: boolean; // from manually solved measure\n}\n\nclass EventCluster extends SimpleClass {\n\tstatic className = 'EventCluster';\n\tstatic blackKeys = ['id'];\n\n\tid?: string; // for db access\n\tindex?: number;\n\tduration?: number;\n\tstaffY0?: number; // the first staff top + staffY\n\n\tsignatureDuration: number;\n\telements: EventElement[];\n\tmatrixH?: Matrix; // matrix N x N, [next][prev]\n\n\tbackgroundImages?: BackgroundImage[];\n\n\tannotation?: Annotation;\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\tget regular(): boolean {\n\t\treturn (\n\t\t\tthis.elements.some((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && !elem.fake) &&\n\t\t\tthis.elements.every((elem) => [elem.x, elem.y1, elem.y2, elem.tick].every(Number.isFinite)) &&\n\t\t\tthis.elements\n\t\t\t\t.slice(1)\n\t\t\t\t.every(\n\t\t\t\t\t(elem, ei) =>\n\t\t\t\t\t\telem.fake ||\n\t\t\t\t\t\tthis.elements[ei].fake ||\n\t\t\t\t\t\telem.grace ||\n\t\t\t\t\t\tthis.elements[ei].grace ||\n\t\t\t\t\t\telem.fullMeasure ||\n\t\t\t\t\t\tthis.elements[ei].fullMeasure ||\n\t\t\t\t\t\telem.tick <= this.elements[ei].tick ||\n\t\t\t\t\t\telem.x > this.elements[ei].x\n\t\t\t\t)\n\t\t);\n\t}\n\n\tget grant(): boolean {\n\t\treturn this.annotation && this.annotation.grant;\n\t}\n\n\tget feature(): Partial {\n\t\treturn {\n\t\t\tindex: this.index,\n\t\t\telements: this.elements,\n\t\t};\n\t}\n\n\tget estimatedDuration(): number {\n\t\tconst endElem = this.elements.find((elem) => elem.type === EventElementType.EOS);\n\n\t\tconst tick = endElem?.predisposition ? endElem.predisposition?.tick : endElem?.tick;\n\n\t\treturn Number.isFinite(tick) ? tick : this.duration;\n\t}\n\n\tassignPrediction(prediction: any): void {\n\t\tconsole.assert(prediction.index === this.index, 'index mismatch:', prediction.index, this.index);\n\n\t\tthis.matrixH = prediction.matrixH;\n\t\tprediction.elements.forEach((pe) => {\n\t\t\tconst { index, ...predisposition } = pe;\n\t\t\tconst elem = this.elements.find((elem) => elem.index === index);\n\t\t\tconsole.assert(elem, 'element not found:', index);\n\n\t\t\tif (elem) elem.predisposition = predisposition;\n\t\t});\n\t}\n}\n\nclass EventClusterSet extends SimpleClass {\n\tstatic className = 'EventClusterSet';\n\n\tname?: string;\n\n\tclusters: EventCluster[];\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\ttrimIrregular(): number {\n\t\tlet ir = 0;\n\n\t\tthis.clusters = this.clusters.filter((cluster) => {\n\t\t\tconst regular = cluster.regular;\n\t\t\tif (!regular) {\n\t\t\t\tconsole.debug('irregular cluster:', cluster);\n\t\t\t\t++ir;\n\t\t\t}\n\n\t\t\treturn regular;\n\t\t});\n\n\t\tif (ir) console.debug('Irregular clusters trimmed:', `${ir}/${this.clusters.length + ir}`);\n\t\telse console.debug(`The EventClusterSet (${this.clusters.length}) is fine.`);\n\n\t\treturn ir;\n\t}\n}\n\nexport { EventElementType, EventElement, EventCluster, EventClusterSet };\n","import sha1 from 'js-sha1';\nimport erf from 'math-erf';\n\nimport { SimpleClass } from './aux_/typedJSON';\nimport * as EquationSolver from './equationSolver';\nimport { EventCluster, EventElement, EventElementType } from './eventTopology';\nimport {\n\tBackgroundImage,\n\tEventMeasure,\n\tFraction,\n\tMeasureBarType,\n\tRegulationOptions,\n\tRegulationSolution,\n\tRegulationSolutionEvent,\n\tStaffBasic,\n} from './interfaces';\nimport type { MeasureRectification } from './measureRectification';\nimport { PatchMeasure } from './patch';\nimport { NOTEHEAD_WIDTHS } from './semanticPoint';\nimport { ContextedTerm, ContextType, EventTerm, GraceType, MarkTerm, StemBeam, TremoloLink, WHOLE_DURATION } from './term';\nimport type { GraphMeasure } from './timewiseGraph';\nimport { argmax, frac, fractionMul, roundNumber } from './utils';\n\nnamespace SimplePolicy {\n\tconst constructXMap = (measure: SpartitoMeasure): Map => {\n\t\tconst xMap = new Map();\n\n\t\t// mark full measure rests\n\t\tmeasure.rows.forEach((row) => {\n\t\t\tif (row.events.length === 1) {\n\t\t\t\tconst event = row.events[0];\n\t\t\t\tif (event.rest && event.division === 0) event.rest = 'R';\n\t\t\t}\n\t\t});\n\n\t\tmeasure.events.forEach((event) => {\n\t\t\tconst x = Math.round(event.pivotX * 10) / 10;\n\t\t\tlet key = 0;\n\t\t\tif (event.fullMeasureRest) key = Math.min(x, ...xMap.keys());\n\t\t\telse {\n\t\t\t\tkey =\n\t\t\t\t\t[...xMap.keys()].find((k) => {\n\t\t\t\t\t\t// check if the event is aligned with the current chord\n\t\t\t\t\t\tconst es = xMap.get(k);\n\t\t\t\t\t\tconst left = Math.min(...es.map((e) => e.left));\n\t\t\t\t\t\tconst right = Math.max(...es.map((e) => e.right));\n\n\t\t\t\t\t\tconst overlaySize = Math.min(right, event.right) - Math.max(left, event.left);\n\n\t\t\t\t\t\treturn overlaySize > NOTEHEAD_WIDTHS.NoteheadS1 * 0.62;\n\t\t\t\t\t}) || x;\n\t\t\t}\n\t\t\tevent.roundX = key;\n\n\t\t\tconst es = xMap.get(key) || [];\n\t\t\txMap.set(key, es);\n\n\t\t\tes.push(event);\n\t\t});\n\n\t\treturn xMap;\n\t};\n\n\texport const computeMeasureTicks = (measure: SpartitoMeasure): void => {\n\t\tconst xMap = constructXMap(measure);\n\n\t\tlet tick = 0;\n\t\tconst ts = new Set([tick]);\n\t\tconst eventGroups = [...xMap.entries()].sort(([x1], [x2]) => x1 - x2); //.map(entry => entry[1]);\n\t\tfor (const [x, events] of eventGroups) {\n\t\t\tvoid x;\n\n\t\t\tevents.forEach((event: EventTerm) => {\n\t\t\t\tif (event.predisposition) {\n\t\t\t\t\tevent.rest = event.rest && event.predisposition.fullMeasure > 0.5 ? 'R' : event.rest;\n\t\t\t\t\tevent.grace = event.predisposition.grace ? GraceType.Grace : null;\n\t\t\t\t\tevent.division = argmax(event.predisposition.divisionVector);\n\t\t\t\t\tevent.dots = argmax(event.predisposition.dotsVector);\n\t\t\t\t\tif (event.predisposition.timeWarped > 0.5) event.timeWarp = frac(2, 3);\n\t\t\t\t}\n\n\t\t\t\tif (event.fullMeasureRest) event.tick = 0;\n\t\t\t\telse {\n\t\t\t\t\tif (event.zeroHolder) tick -= event.duration;\n\n\t\t\t\t\tif (!event.zeroHolder && event.predisposition && Number.isInteger(event.predisposition.tick)) event.tick = event.predisposition.tick;\n\t\t\t\t\telse event.tick = tick;\n\t\t\t\t\tts.add(event.tick + event.duration);\n\t\t\t\t}\n\t\t\t\t//console.log(\"append tick:\", event.tick + event.duration, event);\n\t\t\t});\n\t\t\tts.delete(tick);\n\n\t\t\t//column.xToTick[x] = tick;\n\n\t\t\tif (ts.size) tick = Math.min(...ts);\n\t\t}\n\n\t\tif (Number.isInteger(measure.estimatedDuration)) measure.duration = measure.estimatedDuration;\n\t\telse measure.duration = Math.max(...ts, 0);\n\t};\n\n\texport const computeMeasureVoices = (measure: SpartitoMeasure): void => {\n\t\tmeasure.voices = [];\n\t\tfor (const row of measure.rows) {\n\t\t\tconst events = row.events.filter(\n\t\t\t\t(event) => !event.grace && !event.tremoloCatcher && !event.fullMeasureRest && !(event.predisposition && event.predisposition.fake > 0.5)\n\t\t\t);\n\t\t\tconst eventSet = new Set(events);\n\n\t\t\twhile (eventSet.size) {\n\t\t\t\tlet tick = 0;\n\n\t\t\t\tconst voice = [];\n\t\t\t\tconst pushEvent = (e: EventTerm) => {\n\t\t\t\t\tvoice.push(e.id);\n\t\t\t\t\tif (!e.zeroHolder) tick += e.duration;\n\t\t\t\t\teventSet.delete(e);\n\t\t\t\t};\n\n\t\t\t\tconst e0 = events.find((e) => eventSet.has(e));\n\t\t\t\tif (e0.alignedTick > 0) {\n\t\t\t\t\t//voice.tickMap[tick] = EventTerm.space({ tick, duration: e0.alignedTick });\n\t\t\t\t\ttick = e0.alignedTick;\n\t\t\t\t}\n\t\t\t\tpushEvent(e0);\n\n\t\t\t\twhile (true) {\n\t\t\t\t\t// TODO: consider slur pair\n\t\t\t\t\tconst e = events.find((e) => eventSet.has(e) && e.alignedTick === tick);\n\t\t\t\t\tif (!e) break;\n\n\t\t\t\t\tpushEvent(e);\n\t\t\t\t}\n\n\t\t\t\t//if (tick < measure.duration)\n\t\t\t\t//\tvoice.tickMap[tick] = EventTerm.space({ tick, duration: staff.duration - tick });\n\n\t\t\t\tmeasure.voices.push(voice);\n\t\t\t}\n\t\t}\n\t};\n}\n\nconst solveGraceEvents = (measure: SpartitoMeasure): void => {\n\tconst graceEvents = measure.events.filter((event) => event.grace /*&& !Number.isFinite(event.tick)*/);\n\tif (!graceEvents.length) return;\n\n\tconst tickMap = measure.tickMap;\n\tconst staffMap = [...tickMap.entries()].reduce((smap, [tick, events]) => {\n\t\tevents.forEach((event) => {\n\t\t\tif (!event.grace) {\n\t\t\t\tsmap[event.staff] = smap[event.staff] || {};\n\n\t\t\t\tconst oldEvent = smap[event.staff][tick];\n\t\t\t\tsmap[event.staff][tick] = !oldEvent || oldEvent.x > event.x ? event : oldEvent;\n\t\t\t}\n\t\t});\n\n\t\treturn smap;\n\t}, {} as { [staff: number]: { [tick: number]: EventTerm } });\n\n\ttype Position = { tick: number; preTick: number; graces: EventTerm[]; event: EventTerm };\n\tconst staffPositions = Object.entries(staffMap).reduce((map, [staff, emap]) => {\n\t\tmap[staff] = Object.entries(emap)\n\t\t\t.map(([t, event]) => ({ event, tick: Number(t), preTick: -240, graces: [] }))\n\t\t\t.sort((p1, p2) => p1.event.x - p2.event.x);\n\t\tmap[staff].push({ tick: measure.duration, event: measure.endEvent, preTick: 0, graces: [] }); // terminal bar\n\n\t\tlet tick = 0;\n\t\tmap[staff].forEach((position) => {\n\t\t\tif (position.tick > tick) {\n\t\t\t\tposition.preTick = tick;\n\t\t\t\ttick = position.tick;\n\t\t\t}\n\t\t});\n\n\t\treturn map;\n\t}, {} as { [staff: number]: Position[] });\n\n\t// append grace events into positions\n\tgraceEvents.forEach((event) => {\n\t\tconst staff = staffPositions[event.staff];\n\t\tif (staff) {\n\t\t\tconst position = staff.find((p) => p.event.x > event.x);\n\t\t\tif (position) position.graces.push(event);\n\t\t\tevent.roundX = event.x;\n\t\t\t//if (position.tick >= measure.duration)\n\t\t\t//\tevent.grace = GraceType.AfterGrace;\n\t\t}\n\t});\n\n\tObject.values(staffPositions).forEach((staff) =>\n\t\tstaff.forEach((position) => {\n\t\t\tif (position.graces.length) {\n\t\t\t\tposition.event.graceIds = position.graces.map((e) => e.id);\n\n\t\t\t\tconst totalDuration = position.graces.reduce((t, e) => t + e.duration, 0);\n\t\t\t\tconst duration = Math.min(totalDuration, position.tick - position.preTick);\n\t\t\t\tconst warp = duration / totalDuration;\n\n\t\t\t\tlet tick = position.tick;\n\t\t\t\t[...position.graces].reverse().forEach((event) => {\n\t\t\t\t\tevent.tick = Math.round(tick - event.duration * warp);\n\t\t\t\t\ttick = event.tick;\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t);\n};\n\nconst solveTremoloPairs = (measure: SpartitoMeasure): void => {\n\tconst catchers = measure.events.filter((event) => event.tremoloCatcher && !event.grace);\n\tconst pitchers = measure.events.filter((event) => event.tremoloLink === TremoloLink.Pitcher && !event.grace);\n\n\tcatchers.forEach((catcher) => {\n\t\tlet candidates = pitchers.filter((event) => event.division === catcher.division && event.x < catcher.x);\n\t\tif (!candidates.length)\n\t\t\tcandidates = measure.events.filter(\n\t\t\t\t(event) =>\n\t\t\t\t\tNumber.isFinite(event.tick) &&\n\t\t\t\t\t!event.grace &&\n\t\t\t\t\t!event.rest &&\n\t\t\t\t\tevent.division === catcher.division &&\n\t\t\t\t\tevent.dots === catcher.dots &&\n\t\t\t\t\tevent.x < catcher.x\n\t\t\t);\n\t\tcandidates.sort((c1, c2) => c2.x - c1.x);\n\t\tif (candidates.length) {\n\t\t\tconst pitcher = candidates[0];\n\t\t\tpitcher.catcherId = catcher.id;\n\t\t\tconst tremolo = Math.max(pitcher.tremolo || 3, catcher.tremolo || 3);\n\t\t\tpitcher.tremolo = tremolo;\n\t\t\tcatcher.tremolo = tremolo;\n\n\t\t\tif (!catcher.tick) catcher.tick = pitcher.tick + pitcher.duration / 2;\n\n\t\t\tconst pi = pitchers.indexOf(pitcher);\n\t\t\tif (pi >= 0) pitchers.splice(pi, 1);\n\t\t}\n\t});\n};\n\nnamespace EquationPolicy {\n\ttype EventID = number;\n\ttype Time = number;\n\n\tconst DURATION_MULTIPLIER = 128 * 3 * 5 * 7 * 11 * 13;\n\n\tconst CHORDS_SEAM_SIGMA = 0.6;\n\tconst NEIGHBOR_CHORDS_SIGMA = 1.6;\n\tconst Y_DECAY_SIGMA = 16;\n\tconst STAFF_DECAY_FACTOR = 2;\n\tconst STEM_DIRECTION_DECAY = 0.9;\n\tconst ILL_BEAMS_PENALTY = 0.2;\n\n\tconst INVERT_SQRT2 = 0.7071067811865475;\n\n\tconst MATRIX_H_WEIGHT = 3;\n\n\tconst FINE_BEAMS = [\n\t\t[null, null],\n\t\t[null, StemBeam.Open],\n\t\t[StemBeam.Open, StemBeam.Continue],\n\t\t[StemBeam.Open, StemBeam.Close],\n\t\t[StemBeam.Continue, StemBeam.Continue],\n\t\t[StemBeam.Continue, StemBeam.Close],\n\t\t[StemBeam.Close, null],\n\t\t[StemBeam.Close, StemBeam.Open],\n\t].map((bb) => bb.join('-'));\n\n\tinterface Event {\n\t\tid: EventID;\n\t\tstaff: number;\n\t\tx: number;\n\t\ty: number;\n\t\tduration: Time;\n\t\tconfidence: number;\n\t\tshrinkness: number;\n\t}\n\n\texport interface StaffGroup {\n\t\tevents: Event[];\n\t\texpectedDuration: Time;\n\t\tmeasureShrinkness: number;\n\t\tendX: number;\n\t\tmatrixH: Matrix;\n\t\tmatrixV: Matrix;\n\n\t\tids?: EventID[];\n\t}\n\n\tinterface EventResult {\n\t\tid: EventID;\n\t\ttick: Time;\n\t\tendTick: Time;\n\t\ttickGroup: number;\n\t\ttimeWarp?: Fraction;\n\t}\n\n\texport interface StaffGroupSolution {\n\t\tevents: EventResult[];\n\t\tvoices: EventID[][];\n\t\tduration: number;\n\n\t\tloss?: number;\n\t\tcredits?: number;\n\t\ttimes?: number;\n\t}\n\n\texport interface RegulatorOptions extends EquationSolver.SolverOptions {\n\t\tsolver?: (staffGroup: StaffGroup, options: EquationSolver.SolverOptions) => Promise;\n\t}\n\n\tconst solveStaffGroup = (staffGroup: StaffGroup, options: EquationSolver.SolverOptions): StaffGroupSolution => {\n\t\tif (!staffGroup.events.length) {\n\t\t\treturn {\n\t\t\t\tevents: [],\n\t\t\t\tvoices: [],\n\t\t\t\tduration: 0,\n\t\t\t};\n\t\t}\n\n\t\tconst solver = new EquationSolver.Solver(staffGroup, options);\n\n\t\treturn solver.solve();\n\t};\n\n\texport const estiamteMeasure = (measure: SpartitoMeasure): StaffGroup => {\n\t\tconst allEvents = measure.events\n\t\t\t.filter((event) => !event.zeroHolder)\n\t\t\t.map((event) => ({\n\t\t\t\tid: event.id,\n\t\t\t\tstaff: event.staff,\n\t\t\t\tx: event.x,\n\t\t\t\ttickEstimated: event.predisposition && Number.isFinite(event.predisposition.tick) ? event.predisposition.tick : event.x,\n\t\t\t\ttipX: event.tipX,\n\t\t\t\ty: event.tipY + event.staff * 100, // TODO: refine y by event term tipY\n\t\t\t\tduration: (event.mainDuration * DURATION_MULTIPLIER) / WHOLE_DURATION,\n\t\t\t\tdivision: event.division,\n\t\t\t\tdots: event.dots,\n\t\t\t\tstemDirection: event.stemDirection,\n\t\t\t\tbeam: event.beam,\n\t\t\t\trest: event.rest,\n\t\t\t\t// the possibility of full measure rest\n\t\t\t\tpR: event.rest === 'R' ? 1 : event.rest === 'r' && event.division === 0 ? Math.tanh(event.x - measure.eventStartX) : 0,\n\t\t\t\tfakeP: event.predisposition ? event.predisposition.fakeP || 0 : 0,\n\t\t\t\tshrinkness: event.predisposition ? event.predisposition.timeWarped : null,\n\t\t\t}));\n\t\tlet expectedDuration = (DURATION_MULTIPLIER * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\texpectedDuration = Math.max(expectedDuration, roundNumber(measure.estimatedDuration, DURATION_MULTIPLIER / 4));\n\n\t\tconst staffGroupMap = measure.staffGroups.reduce((map, staves, group) => {\n\t\t\tstaves.forEach((staff) => (map[staff] = group));\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst ids = [0, ...allEvents.map((e) => e.id)]; // compact ids\n\t\tconst ievents = allEvents.map((e) => ({\n\t\t\t...e,\n\t\t\tid: ids.indexOf(e.id),\n\t\t\tx: e.x - measure.startX,\n\t\t\tconfidence: (1 - e.pR) * (1 - e.fakeP),\n\t\t\tshrinkness: Number.isFinite(e.shrinkness) ? e.shrinkness : Math.tanh((e.division - e.dots * 0.1) / 4),\n\t\t\tstaffGroup: staffGroupMap[e.staff],\n\t\t}));\n\n\t\t// estimate topology matrices\n\t\tconst matrixH = Array(ids.length + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\t\tconst matrixV = Array(ids.length)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\n\t\t//const hp = (dx: number): number => 1 - erf(((dx / NEIGHBOR_CHORDS_SIGMA) ** 0.6) * INVERT_SQRT2);\n\t\tconst hp = (dx: number): number => erf(dx / NEIGHBOR_CHORDS_SIGMA) * erf(NEIGHBOR_CHORDS_SIGMA / dx);\n\n\t\tfor (const e1 of ievents) {\n\t\t\tfor (const e2 of ievents) {\n\t\t\t\tmatrixV[e1.id][e2.id] =\n\t\t\t\t\te1 !== e2 && e1.tickEstimated >= e2.tickEstimated ? 1 - erf(((e1.tickEstimated - e2.tickEstimated) * INVERT_SQRT2) / CHORDS_SEAM_SIGMA) : 0;\n\n\t\t\t\tif (e1.staffGroup !== e2.staffGroup) matrixH[e1.id][e2.id] = 0;\n\t\t\t\t// prohibit voice crossing staff groups\n\t\t\t\telse if (e1.x <= e2.x) matrixH[e1.id][e2.id] = 0;\n\t\t\t\telse {\n\t\t\t\t\tconst staffDecay = Math.exp(-Math.abs(e1.staff - e2.staff) * STAFF_DECAY_FACTOR);\n\t\t\t\t\tconst yDecay = e1.staff === e2.staff ? Math.exp(-Math.abs(e1.y - e2.y) / Y_DECAY_SIGMA) : 1;\n\t\t\t\t\tconst dx = e1.x - e2.x;\n\t\t\t\t\tconst dtx = e1.tipX - e2.tipX;\n\t\t\t\t\tmatrixH[e1.id][e2.id] = (staffDecay * yDecay * Math.min(hp(dx), hp(dtx))) ** (1 / MATRIX_H_WEIGHT);\n\t\t\t\t}\n\n\t\t\t\t// weaken full measure rest connections\n\t\t\t\tconst nR = (1 - e1.pR) * (1 - e2.pR);\n\t\t\t\tmatrixV[e1.id][e2.id] *= nR;\n\t\t\t\tmatrixH[e1.id][e2.id] *= nR;\n\n\t\t\t\tif (matrixV[e1.id][e2.id] < 1e-2) matrixV[e1.id][e2.id] = 0;\n\n\t\t\t\t// weaken inconsistent stem directions\n\t\t\t\tif (e1.stemDirection && e2.stemDirection && e1.stemDirection !== e2.stemDirection) matrixH[e1.id][e2.id] *= STEM_DIRECTION_DECAY;\n\n\t\t\t\t// ill beams penalty\n\t\t\t\tif (!e1.rest && !e2.rest && !FINE_BEAMS.includes([e2.beam, e1.beam].join('-'))) matrixH[e1.id][e2.id] *= ILL_BEAMS_PENALTY;\n\t\t\t}\n\n\t\t\t// H possibility of e1 and end of measure\n\t\t\tmatrixH[ids.length][e1.id] = hp(measure.width - e1.x) ** (1 / MATRIX_H_WEIGHT);\n\t\t}\n\n\t\treturn {\n\t\t\tids,\n\t\t\tevents: ievents,\n\t\t\texpectedDuration,\n\t\t\tmeasureShrinkness: 0,\n\t\t\tendX: measure.position.right,\n\t\t\tmatrixH,\n\t\t\tmatrixV,\n\t\t};\n\t};\n\n\texport const regulateMeasure = async (measure: SpartitoMeasure, { solver = null, ...options }: RegulatorOptions): Promise => {\n\t\tconst env = estiamteMeasure(measure);\n\t\tconst { ids, matrixH, matrixV } = env;\n\n\t\t// copy matrices values from measure topology data\n\t\tif (measure.matrixH) {\n\t\t\tconsole.assert(\n\t\t\t\tmeasure.matrixH.length > ids[ids.length - 1] && measure.matrixH[0].length > ids[ids.length - 1],\n\t\t\t\t'matrix shape mismatch:',\n\t\t\t\tids.length,\n\t\t\t\t`${measure.matrixH.length}x${measure.matrixH[0].length}`,\n\t\t\t\t`${matrixH.length}x${matrixH[0].length}`\n\t\t\t);\n\t\t\tfor (let i = 0; i < ids.length + 1; i++) {\n\t\t\t\tconst ii = i < ids.length ? ids[i] : measure.matrixH.length - 1;\n\t\t\t\tfor (let j = 1; j < ids.length; j++) matrixH[i][j] = measure.matrixH[ii][ids[j]];\n\t\t\t}\n\t\t}\n\t\tif (measure.matrixV) {\n\t\t\tmatrixV.forEach((row, i) =>\n\t\t\t\trow.forEach((_, j) => {\n\t\t\t\t\tconst mp = measure.matrixV[ids[i]][ids[j]];\n\t\t\t\t\tif (Number.isFinite(mp)) matrixV[i][j] = mp;\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\tenv.measureShrinkness = Math.tanh(Math.log(Math.min(1, measure.estimatedDuration / measure.duration)) * -3);\n\n\t\tif (options.logger) options.logger.info('--- MEASURE', measure.measureIndex, '---', env);\n\n\t\tconst solution = solver ? await solver(env, options) : solveStaffGroup(env, options);\n\t\tconst resultEvents = solution.events.map((e) => ({\n\t\t\t...e,\n\t\t\tid: env.ids[e.id], // decode compact ids\n\t\t}));\n\t\tresultEvents.forEach((e) => {\n\t\t\tconst event = measure.events.find((e0) => e0.id === e.id);\n\t\t\tevent.tick = Number.isFinite(e.tick) ? Math.round((e.tick * WHOLE_DURATION) / DURATION_MULTIPLIER) : null;\n\t\t\tevent.tickGroup = e.tickGroup;\n\t\t\tevent.timeWarp = e.timeWarp;\n\t\t});\n\n\t\tmeasure.duration = Math.round((solution.duration * WHOLE_DURATION) / DURATION_MULTIPLIER);\n\t\tmeasure.voices = solution.voices.map((voice) => voice.map((id) => env.ids[id]));\n\n\t\tmeasure.solutionStat = {\n\t\t\tloss: solution.loss,\n\t\t\tsolverCredits: solution.credits,\n\t\t\tsolverTimes: solution.times,\n\t\t};\n\n\t\t// full measure rests\n\t\tmeasure.events.forEach((event) => {\n\t\t\tconst result = resultEvents.find((e) => e.id === event.id);\n\t\t\tif (!result) return;\n\t\t\telse if (!Number.isFinite(result.tick) && event.rest === 'r' && event.division === 0) {\n\t\t\t\tevent.tick = 0;\n\t\t\t\tevent.tickGroup = 0;\n\t\t\t\tevent.rest = 'R';\n\t\t\t\tevent.duration = measure.duration;\n\t\t\t\tmeasure.voices.push([event.id]);\n\t\t\t} else if (event.rest === 'R') {\n\t\t\t\tevent.tick = 0;\n\t\t\t\tevent.tickGroup = 0;\n\t\t\t\tevent.duration = measure.duration;\n\t\t\t\tmeasure.voices.push([event.id]);\n\t\t\t}\n\t\t});\n\t};\n\n\texport const regulateMeasureWithRectification = async (\n\t\tmeasure: SpartitoMeasure,\n\t\trectification: MeasureRectification,\n\t\t{ solver = null, ...options }: RegulatorOptions\n\t): Promise => {\n\t\tconst allEvents = measure.events\n\t\t\t.filter((event) => !event.zeroHolder)\n\t\t\t.map((event) => {\n\t\t\t\tconst re = rectification.events.find((e) => e && e.id === event.id);\n\t\t\t\tconst division = Number.isFinite(re?.division) ? re.division : event.division;\n\t\t\t\tconst dots = Number.isFinite(re?.dots) ? re.dots : event.dots;\n\t\t\t\tconst duration = DURATION_MULTIPLIER * 2 ** -division * (2 - 2 ** -dots);\n\n\t\t\t\treturn {\n\t\t\t\t\tid: event.id,\n\t\t\t\t\tstaff: event.staff,\n\t\t\t\t\tx: event.x,\n\t\t\t\t\ttickEstimated: event.predisposition?.tick,\n\t\t\t\t\ty: event.tipY + event.staff * 100, // TODO: refine y by event term tipY\n\t\t\t\t\tduration,\n\t\t\t\t\t// the possibility of full measure rest\n\t\t\t\t\tpR: event.rest === 'R' ? 1 : event.rest === 'r' && event.division === 0 ? Math.tanh(event.x - measure.eventStartX) : 0,\n\t\t\t\t\tfakeP: event.predisposition ? event.predisposition.fakeP || 0 : 0,\n\t\t\t\t\tshrinkness: event.predisposition?.timeWarped || 0,\n\t\t\t\t};\n\t\t\t});\n\t\tlet expectedDuration = (DURATION_MULTIPLIER * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\texpectedDuration = Math.max(expectedDuration, roundNumber(measure.estimatedDuration, DURATION_MULTIPLIER / 4));\n\n\t\tconst staffGroupMap = measure.staffGroups.reduce((map, staves, group) => {\n\t\t\tstaves.forEach((staff) => (map[staff] = group));\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst ids = [0, ...allEvents.map((e) => e.id)]; // compact ids\n\t\tconst ievents = allEvents.map((e) => ({\n\t\t\t...e,\n\t\t\tid: ids.indexOf(e.id),\n\t\t\tx: e.x - measure.startX,\n\t\t\tconfidence: (1 - e.pR) * (1 - e.fakeP),\n\t\t\tshrinkness: e.shrinkness,\n\t\t\tstaffGroup: staffGroupMap[e.staff],\n\t\t}));\n\n\t\t// estimate topology matrices\n\t\tconst matrixH = Array(ids.length + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\t\tconst matrixV = Array(ids.length)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\n\t\tfor (const e1 of ievents) {\n\t\t\tfor (const e2 of ievents) {\n\t\t\t\tmatrixV[e1.id][e2.id] =\n\t\t\t\t\te1 !== e2 && e1.tickEstimated >= e2.tickEstimated ? 1 - erf(((e1.tickEstimated - e2.tickEstimated) * INVERT_SQRT2) / CHORDS_SEAM_SIGMA) : 0;\n\n\t\t\t\t// weaken full measure rest connections\n\t\t\t\tconst nR = (1 - e1.pR) * (1 - e2.pR);\n\t\t\t\tmatrixV[e1.id][e2.id] *= nR;\n\n\t\t\t\tif (matrixV[e1.id][e2.id] < 1e-2) matrixV[e1.id][e2.id] = 0;\n\t\t\t}\n\t\t}\n\n\t\t// copy matrices values from measure topology data\n\t\tconsole.assert(\n\t\t\tmeasure.matrixH && measure.matrixH.length > ids[ids.length - 1] && measure.matrixH[0].length > ids[ids.length - 1],\n\t\t\t'matrix shape mismatch:',\n\t\t\tids.length,\n\t\t\t`${measure.matrixH.length}x${measure.matrixH[0].length}`,\n\t\t\t`${matrixH.length}x${matrixH[0].length}`\n\t\t);\n\t\tfor (let i = 0; i < ids.length + 1; i++) {\n\t\t\tconst ii = i < ids.length ? ids[i] : measure.matrixH.length - 1;\n\t\t\tfor (let j = 1; j < ids.length; j++) matrixH[i][j] = measure.matrixH[ii][ids[j]];\n\t\t}\n\n\t\tlet measureShrinkness = 0;\n\t\tif (Number.isFinite(measure.estimatedDuration)) measureShrinkness = Math.tanh(Math.log(Math.min(1, measure.estimatedDuration / measure.duration)) * -3);\n\n\t\tconst env = {\n\t\t\tids,\n\t\t\tevents: ievents,\n\t\t\texpectedDuration,\n\t\t\tmeasureShrinkness,\n\t\t\tendX: measure.position.right,\n\t\t\tmatrixH,\n\t\t\tmatrixV,\n\t\t};\n\t\tconst solution = solver ? await solver(env, options) : solveStaffGroup(env, options);\n\n\t\tconst priority = -solution.loss;\n\n\t\tconst events = solution.events.map(({ id, tick, tickGroup, timeWarp }) => {\n\t\t\tconst re = rectification.events.find((e) => e && e.id === id);\n\t\t\tconst tickN = Number.isFinite(tick) ? Math.round((tick * WHOLE_DURATION) / DURATION_MULTIPLIER) : tick;\n\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\ttick: tickN,\n\t\t\t\ttickGroup,\n\t\t\t\ttimeWarp,\n\t\t\t\tdivision: re?.division,\n\t\t\t\tdots: re?.dots,\n\t\t\t};\n\t\t});\n\n\t\tconst duration = Math.round((solution.duration * WHOLE_DURATION) / DURATION_MULTIPLIER);\n\n\t\treturn {\n\t\t\tevents,\n\t\t\tvoices: solution.voices,\n\t\t\tduration,\n\t\t\tpriority,\n\t\t};\n\t};\n}\n\ntype Matrix = number[][];\n\ntype TickMap = Map;\n\ninterface SolutionStatistics {\n\tloss?: number;\n\tsolverCredits?: number;\n\tsolverTimes?: number;\n}\n\nclass SpartitoMeasure extends SimpleClass {\n\tstatic className = 'SpartitoMeasure';\n\tstatic blackKeys = ['staffGroups', 'solutionStat', 'measureNumber', 'deposit'];\n\n\tmeasureIndex: number;\n\tstaffMask: number;\n\tstaffGroups: number[][];\n\toriginalRegulationHash?: string;\n\tmeasureNumber?: number; // count from the last indent measure, head partial measure is zero, skip empty measures\n\n\tpatched: boolean;\n\tdiscard: boolean;\n\n\tposition: {\n\t\tsystemIndex: number;\n\t\tlocalIndex: number; // the measure local index in its system\n\t\tleft: number;\n\t\tright: number;\n\t\tstaffYs?: number[];\n\t\tstaffYsFull?: number[];\n\t};\n\n\tbackgroundImages: BackgroundImage[];\n\n\tevents: EventTerm[];\n\tendEvent: Partial; // the placeholder for end tick\n\tcontexts: ContextedTerm[][]; // [staff]\n\tmarks: MarkTerm[];\n\tduration: number;\n\n\tvoices?: number[][]; // [voice, id]\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbasics?: StaffBasic[]; // [staff]\n\tvoltaBegin: boolean;\n\tvoltaEnd: boolean;\n\talternative: boolean;\n\tbarTypes: Record;\n\tindent: boolean;\n\n\tsolutionStat?: SolutionStatistics;\n\n\tmatrixH: Matrix; // matrix N x N\t\t[right][left]\n\tmatrixV: Matrix; // matrix N x N\n\testimatedDuration: number;\n\n\tgraph: GraphMeasure;\n\n\tdeposit: Record;\n\n\tstatic reorderEvents(events: EventTerm[], staffYsFull: number[]): EventTerm[] {\n\t\tconst HALF_NOTEHEAD = 0.7;\n\n\t\tconst ys = [];\n\n\t\tconst es = events.map((e) => ({\n\t\t\tid: e.id,\n\t\t\tstaff: e.staff,\n\t\t\tx: e.x / HALF_NOTEHEAD,\n\t\t\trx: 0,\n\t\t\try: staffYsFull[e.staff] + e.tipY,\n\t\t\ttipY: e.tipY,\n\t\t\tprior: 0,\n\t\t}));\n\t\tes.sort((e1, e2) => e1.x - e2.x);\n\t\tes.slice(1).forEach((e, i) => {\n\t\t\tconst dx = Math.min(Math.round(e.x - es[i].x), 2);\n\t\t\te.rx = es[i].rx + dx;\n\t\t});\n\t\tes.forEach((e) => {\n\t\t\te.prior = e.staff * 1e4 + e.rx + e.tipY * 0.01;\n\n\t\t\tif (!ys.includes(e.ry)) ys.push(e.ry);\n\t\t});\n\t\tes.sort((e1, e2) => e1.prior - e2.prior);\n\t\tys.sort((y1, y2) => y1 - y2);\n\n\t\tlet yi = 0;\n\t\tconst yis = ys.map((y, i) => {\n\t\t\tif (!i || ys[i] - ys[i - 1] < 0.5) return yi;\n\n\t\t\t++yi;\n\t\t\treturn yi;\n\t\t});\n\n\t\tconst result = es.map((e) => new EventTerm({ ...events.find((ev) => ev.id === e.id), intX: e.rx, intY: yis[ys.indexOf(e.ry)] }));\n\t\tresult.forEach((e, i) => (e.id = i + 1));\n\n\t\treturn result;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tif (!this.originalRegulationHash && !this.regulated) this.originalRegulationHash = this.regulationHash;\n\n\t\tthis.barTypes = this.barTypes || {};\n\n\t\t// Ensure postRegulate runs for measures deserialized with voices (e.g. from patches/JSON)\n\t\t// to set endEvent and roundX needed for playback cursor positioning.\n\t\tif (this.regulated && this.position) this.postRegulate();\n\t}\n\n\tget timeSignature(): Fraction {\n\t\treturn this.basics && this.basics[0].timeSignature;\n\t}\n\n\tget keySignature(): number {\n\t\treturn this.basics && this.basics[0].keySignature;\n\t}\n\n\tget timeSignatureChanged(): boolean {\n\t\treturn this.contexts.filter(Boolean)[0].some((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type));\n\t}\n\n\tget doubtfulTimesig(): boolean {\n\t\treturn this.basics && this.basics[0].doubtfulTimesig;\n\t}\n\n\tget regulated(): boolean {\n\t\treturn !!this.voices;\n\t}\n\n\tget validRegulated(): boolean {\n\t\tif (!this.voices) return false;\n\n\t\treturn this.voices.flat(1).every((id) => Number.isFinite(this.events.find((e) => e.id === id)?.tick));\n\t}\n\n\tget rows(): EventMeasure[] {\n\t\treturn this.contexts.map((contexts, si) => {\n\t\t\tconst events = this.events.filter((e) => e.staff === si);\n\n\t\t\treturn {\n\t\t\t\tevents,\n\t\t\t\tcontexts,\n\t\t\t};\n\t\t});\n\t}\n\n\tget eventStartX(): number {\n\t\treturn this.events.length ? Math.min(...this.events.map((e) => e.x)) : this.startX;\n\t}\n\n\tget startX(): number {\n\t\treturn this.position.left;\n\t}\n\n\tget width(): number {\n\t\treturn this.position.right - this.position.left;\n\t}\n\n\tget tickMap(): TickMap {\n\t\treturn this.events\n\t\t\t.concat([this.endEvent as EventTerm])\n\t\t\t.filter(Boolean)\n\t\t\t.reduce((map, event) => {\n\t\t\t\tif (Number.isFinite(event.tick)) {\n\t\t\t\t\tif (!map.has(event.tick)) map.set(event.tick, []);\n\n\t\t\t\t\tmap.get(event.tick).push(event);\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}, new Map());\n\t}\n\n\tget tickToX(): { [tick: number]: number } {\n\t\treturn [...this.tickMap.entries()].reduce((map, [tick, events]) => {\n\t\t\tevents = events.filter((e) => !e.fullMeasureRest && !e.grace);\n\t\t\tif (events.length) {\n\t\t\t\tconst x = Math.min(...events.map((e) => e.x));\n\t\t\t\tmap[tick] = x;\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget tickRates(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest);\n\t\tevents.sort((e1, e2) => e1.x - e2.x);\n\n\t\treturn events.slice(0, events.length - 1).map((e1, i) => {\n\t\t\tconst e2 = events[i + 1];\n\n\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t});\n\t}\n\n\tget tickRatesInStaves(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest && !event.grace);\n\t\tconst sevents: Record = events.reduce((map, event) => {\n\t\t\tmap[event.staff] = map[event.staff] || [];\n\t\t\tmap[event.staff].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst rates = Object.values(sevents).map((es) =>\n\t\t\tes\n\t\t\t\t.sort((e1, e2) => e1.x - e2.x)\n\t\t\t\t.slice(0, es.length - 1)\n\t\t\t\t.map((e1, i) => {\n\t\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t\t\t})\n\t\t);\n\n\t\treturn [].concat(...rates);\n\t}\n\n\tget tickRatesInGroups(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest);\n\t\tconst gevents: Record = events.reduce((map, event) => {\n\t\t\tconst groupIndex = this.staffGroups.findIndex((group) => group.includes(event.staff));\n\t\t\tmap[groupIndex] = map[groupIndex] || [];\n\t\t\tmap[groupIndex].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst rates = Object.values(gevents).map((es) =>\n\t\t\tes\n\t\t\t\t.sort((e1, e2) => e1.x - e2.x)\n\t\t\t\t.slice(0, es.length - 1)\n\t\t\t\t.map((e1, i) => {\n\t\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t\t\t})\n\t\t);\n\n\t\treturn [].concat(...rates);\n\t}\n\n\tget tickTwist(): number {\n\t\tif (!this.duration || !this.staffGroups) return undefined;\n\n\t\tconst events = this.events.filter(\n\t\t\t(event) => Number.isFinite(event.tick) && !event.fullMeasureRest && !event.grace && !event.tremoloCatcher && !(event.rest && event.division === 0)\n\t\t); // ignore rest0\n\t\tconst gevents: Record = events.reduce((map, event) => {\n\t\t\tconst groupIndex = this.staffGroups.findIndex((group) => group.includes(event.staff));\n\t\t\tmap[groupIndex] = map[groupIndex] || [];\n\t\t\tmap[groupIndex].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst twists = Object.values(gevents).map((es) => {\n\t\t\tconst eventsXOrder = [...es].sort((e1, e2) => e1.pivotX - e2.pivotX);\n\t\t\tconst xSpan = this.position.right - eventsXOrder[0].x;\n\t\t\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\t\t\tconst e1 = eventsXOrder[i];\n\t\t\t\tconst dx = e2.pivotX - e1.pivotX;\n\t\t\t\tconst dt = e2.tick! - e1.tick!;\n\n\t\t\t\tif (!dt) return dx / xSpan;\n\n\t\t\t\tconst rate = Math.atan2(dt / this.duration, dx / xSpan);\n\n\t\t\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t\t\t});\n\n\t\t\treturn Math.max(0, ...tickTwists);\n\t\t});\n\n\t\treturn Math.max(0, ...twists);\n\t}\n\n\tget eventMap(): Record {\n\t\treturn this.events.reduce((map, event) => {\n\t\t\tmap[event.id] = event;\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget empty(): boolean {\n\t\treturn !this.events?.length || !this.voices?.length;\n\t}\n\n\tget hasIllEvent(): boolean {\n\t\tconst voicedEventIds = this.voices.flat(1);\n\t\tconst eventMap = this.eventMap;\n\t\treturn (\n\t\t\tthis.regulated &&\n\t\t\tvoicedEventIds.some((id) => {\n\t\t\t\tconst event = eventMap[id];\n\t\t\t\treturn !event.zeroHolder && !Number.isFinite(event.tick) && !event.fullMeasureRest;\n\t\t\t})\n\t\t);\n\t}\n\n\tget brief(): string {\n\t\tconst timesig = `${this.timeSignature.numerator}/${this.timeSignature.denominator}`;\n\t\tconst eventBrieves = this.events.map((e) =>\n\t\t\t[\n\t\t\t\te.staff,\n\t\t\t\te.intX,\n\t\t\t\tMath.round(e.tip ? e.tip.y : e.ys?.[0] ?? 0),\n\t\t\t\te.fullMeasureRest ? 0 : e.division,\n\t\t\t\te.fullMeasureRest ? 0 : e.dots,\n\t\t\t\te.rest ? 'r' : '',\n\t\t\t\te.grace || '',\n\t\t\t\te.stemDirection,\n\t\t\t\te.beam || '',\n\t\t\t].join('|')\n\t\t);\n\n\t\treturn [timesig, ...eventBrieves].join('\\n');\n\t}\n\n\tget regulationHash(): string {\n\t\treturn sha1(this.brief);\n\t}\n\n\t// prefer use originalRegulationHash\n\tget regulationHash0(): string {\n\t\treturn this.originalRegulationHash || this.regulationHash;\n\t}\n\n\tget regulationHashes(): string[] {\n\t\treturn Array.from(new Set([this.originalRegulationHash, this.regulationHash].filter(Boolean)));\n\t}\n\n\tget featureWords(): string[][] | null {\n\t\tif (!this.regulated || !this.voices || !this.voices.length) return null;\n\n\t\tconst invalid = this.tickRatesInStaves.some((rate) => rate < 0);\n\n\t\tconst mainEvents = this.events.filter((event) => !event.zeroHolder && !event.rest);\n\n\t\tconst ys = mainEvents\n\t\t\t.map((event) => event.ys)\n\t\t\t.flat(1)\n\t\t\t.map((y) => `Y${-y * 2}`);\n\t\tconst uys = Array.from(new Set(ys));\n\t\tif (this.keySignature) uys.push(`K${this.keySignature}`);\n\n\t\tconst voices = this.voices\n\t\t\t.map((ids) => ids.map((id) => this.events.find((e) => e.id === id)).filter((event) => !event.zeroHolder && !event.rest))\n\t\t\t.filter((voice) => voice.length);\n\n\t\tconst melodies = invalid ? [] : voices.map((es) => es.map((e) => e.scaleChord).join('-'));\n\n\t\tconst rhythm = invalid ? [] : voices.map((es) => es.map((e) => e.division).join(''));\n\t\tif (this.timeSignature) rhythm.push(`T${this.timeSignature.numerator}/${this.timeSignature.denominator}`);\n\n\t\treturn [uys, melodies, rhythm];\n\t}\n\n\tget barType(): MeasureBarType {\n\t\tif (this.voltaEnd) return 'VoltaRight';\n\n\t\tconst typeEntris = Object.entries(this.barTypes).sort((e1, e2) => e2[1] - e1[1]);\n\t\tif (typeEntris[0] && typeEntris[0][1] >= 1) return typeEntris[0][0] as MeasureBarType;\n\n\t\treturn null;\n\t}\n\n\tget partialDuration(): boolean {\n\t\tif (!Number.isFinite(this.duration)) return false;\n\n\t\tconst signatureDuration = fractionMul(WHOLE_DURATION, this.timeSignature);\n\n\t\treturn this.duration < signatureDuration;\n\t}\n\n\tpostRegulate(): void {\n\t\tthis.endEvent = new EventTerm({ tick: this.duration, x: this.position.right });\n\n\t\tthis.updateRoundX();\n\t\tsolveGraceEvents(this);\n\t\tsolveTremoloPairs(this);\n\t\tthis.updateContextTick();\n\t}\n\n\tupdateRoundX(): void {\n\t\tconst tickToX = this.tickToX;\n\t\tif (tickToX)\n\t\t\tthis.events.forEach((event) => {\n\t\t\t\tconst x = tickToX[event.tick];\n\t\t\t\tif (Number.isFinite(x)) event.roundX = x;\n\t\t\t});\n\t}\n\n\tupdateContextTick(): void {\n\t\tif (!this.staffGroups) return;\n\t\tconst contexts = this.contexts.flat(1);\n\t\tthis.staffGroups.flat(1).forEach((staffIndex) => {\n\t\t\tconst terms = [...this.events.filter((e) => e.staff === staffIndex), ...contexts.filter((c) => c.staff === staffIndex)];\n\t\t\tterms.sort((t1, t2) => t2.x - t1.x); // order by x from right to left\n\n\t\t\tlet tick = this.duration;\n\t\t\tterms.forEach((term) => {\n\t\t\t\tif (term instanceof EventTerm) {\n\t\t\t\t\tif (!term.fullMeasureRest && !term.zeroHolder) tick = term.tick;\n\t\t\t\t} else if (term instanceof ContextedTerm) term.tick = tick;\n\t\t\t});\n\t\t});\n\t}\n\n\tasSolution(ref: SpartitoMeasure = undefined): RegulationSolution {\n\t\tif (!this.regulated) return null;\n\n\t\t//let timeSignature = undefined;\n\t\t//if (ref && printFraction(ref.timeSignature) !== printFraction(this.timeSignature)) timeSignature = this.timeSignature;\n\n\t\treturn {\n\t\t\t//timeSignature,\n\t\t\tevents: this.events.map((e) => {\n\t\t\t\tconst se = {\n\t\t\t\t\tid: e.id,\n\t\t\t\t\ttick: e.tick,\n\t\t\t\t\ttickGroup: e.tickGroup,\n\t\t\t\t\ttimeWarp: e.timeWarp,\n\t\t\t\t} as RegulationSolutionEvent;\n\n\t\t\t\tif (ref) {\n\t\t\t\t\tconst refEvent = ref.events.find((re) => re.id === e.id);\n\t\t\t\t\tif (refEvent) {\n\t\t\t\t\t\tif (e.division !== refEvent.division) se.division = e.division;\n\t\t\t\t\t\tif (e.dots !== refEvent.dots) se.dots = e.dots;\n\t\t\t\t\t\tif (e.grace !== refEvent.grace) se.grace = !!e.grace;\n\t\t\t\t\t\tif (e.beam !== refEvent.beam) se.beam = e.beam;\n\t\t\t\t\t\tif (e.fullMeasureRest !== refEvent.fullMeasureRest) se.fullMeasure = e.fullMeasureRest;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn se;\n\t\t\t}),\n\t\t\tvoices: this.voices,\n\t\t\tduration: this.duration,\n\t\t\tpriority: -this.solutionStat?.loss,\n\t\t};\n\t}\n\n\tapplySolution(solution: RegulationSolution): void {\n\t\tif (solution.timeSignature) {\n\t\t\tthis.basics.forEach((basic) => {\n\t\t\t\tbasic.timeSignature = solution.timeSignature;\n\t\t\t\tbasic.doubtfulTimesig = false;\n\t\t\t});\n\t\t}\n\n\t\tthis.voices = solution.voices;\n\t\tthis.duration = solution.duration;\n\t\tthis.events.forEach((event) => {\n\t\t\tevent.timeWarp = null;\n\t\t\tevent.tick = null;\n\t\t\tevent.tickGroup = null;\n\n\t\t\tconst se = solution.events?.find((e) => e.id === event.id);\n\t\t\tif (se) {\n\t\t\t\tevent.tick = se.tick;\n\t\t\t\tevent.timeWarp = se.timeWarp;\n\t\t\t\tevent.tickGroup = se.tickGroup;\n\n\t\t\t\tif (Number.isFinite(se.division)) event.division = se.division;\n\t\t\t\tif (Number.isFinite(se.dots)) event.dots = se.dots;\n\t\t\t\tif (se.beam !== undefined) event.beam = se.beam as StemBeam;\n\t\t\t\tif (se.grace !== undefined) event.grace = se.grace ? GraceType.Grace : undefined;\n\t\t\t\tif (se.fullMeasure) event.rest = 'R';\n\t\t\t}\n\t\t});\n\n\t\tif (Number.isFinite(solution.priority)) this.solutionStat = { loss: -solution.priority };\n\n\t\tthis.postRegulate();\n\t}\n\n\tcleanupRegulation(): void {\n\t\tthis.voices = null;\n\t\tthis.duration = null;\n\t\tthis.events.forEach((event) => {\n\t\t\tevent.tick = null;\n\t\t\tevent.tickGroup = null;\n\t\t\tevent.timeWarp = null;\n\t\t});\n\t}\n\n\tregulateTest(): void {\n\t\tthis.duration = 0;\n\t\tthis.voices = this.rows.map((row) => row.events.map((e) => e.id));\n\t\tthis.voices.forEach((ids) => {\n\t\t\tlet tick = 0;\n\t\t\tconst events = ids.map((id) => this.events.find((e) => e.id === id));\n\t\t\tevents.forEach((e, index) => {\n\t\t\t\te.tickGroup = index;\n\t\t\t\te.tick = tick;\n\n\t\t\t\ttick += e.duration;\n\t\t\t});\n\n\t\t\tthis.duration = Math.max(this.duration, tick);\n\t\t});\n\t}\n\n\tregulateSimple(): void {\n\t\tSimplePolicy.computeMeasureTicks(this);\n\t\tSimplePolicy.computeMeasureVoices(this);\n\t}\n\n\tasync regulateEquations(options: EquationPolicy.RegulatorOptions): Promise {\n\t\tawait EquationPolicy.regulateMeasure(this, options);\n\t}\n\n\t// compute event.tick, event.tickGroup, event.timeWarp, voices, duration\n\tasync regulate({ policy = 'advanced', ...options }: RegulationOptions = {}): Promise {\n\t\tswitch (policy) {\n\t\t\tcase 'test':\n\t\t\t\tthis.regulateTest();\n\n\t\t\t\tbreak;\n\t\t\tcase 'equations':\n\t\t\tcase 'advanced':\n\t\t\t\tawait this.regulateEquations(options);\n\n\t\t\t\tbreak;\n\t\t\tcase 'simple':\n\t\t\tdefault:\n\t\t\t\tthis.regulateSimple();\n\t\t}\n\n\t\tthis.postRegulate();\n\t}\n\n\tcreatePatch(): PatchMeasure {\n\t\treturn new PatchMeasure({\n\t\t\tmeasureIndex: this.measureIndex,\n\t\t\tstaffMask: this.staffMask,\n\t\t\tbasic: this.basics[0],\n\t\t\t//points: [],\n\t\t\tevents: this.events,\n\t\t\tcontexts: this.contexts,\n\t\t\tmarks: this.marks,\n\t\t\tvoices: this.voices,\n\t\t});\n\t}\n\n\tcreateClusters(): EventCluster[] {\n\t\tconst trueEventIds = this.voices && new Set(this.voices.flat(1));\n\n\t\treturn this.staffGroups\n\t\t\t.filter((idx) => idx.length)\n\t\t\t.map((staffIndices) => {\n\t\t\t\tconst staffY0 = this.position.staffYs[0];\n\t\t\t\tconst staffYn = (n) => this.position.staffYs[staffIndices.indexOf(n)] - staffY0;\n\n\t\t\t\tconst events = this.events.filter((event) => staffIndices.includes(event.staff));\n\t\t\t\tif (!events.length) return null;\n\n\t\t\t\tconst elements: EventElement[] = events.map((event) => ({\n\t\t\t\t\tindex: event.id,\n\t\t\t\t\tvoice: (this.voices || []).findIndex((voice) => voice.includes(event.id)),\n\t\t\t\t\ttype: event.rest ? EventElementType.REST : EventElementType.CHORD,\n\t\t\t\t\tstaff: staffIndices.indexOf(event.staff),\n\t\t\t\t\tx: event.tipX,\n\t\t\t\t\tpivotX: event.pivotX,\n\t\t\t\t\ty1: staffYn(event.staff) + (event.stemDirection === 'u' ? event.tipY : event.ys[event.ys.length - 1]),\n\t\t\t\t\ty2: staffYn(event.staff) + (event.stemDirection === 'u' ? event.ys[0] : event.tipY),\n\t\t\t\t\theadY: event.stemDirection === 'u' ? event.ys[0] : event.ys[event.ys.length - 1],\n\t\t\t\t\tfeature: event.feature,\n\t\t\t\t\tdivision: event.division,\n\t\t\t\t\tdots: event.dots,\n\t\t\t\t\tbeam: event.beam || null,\n\t\t\t\t\tstemDirection: event.stemDirection,\n\t\t\t\t\tgrace: !!event.grace,\n\t\t\t\t\ttremoloCatcher: event.tremoloCatcher,\n\t\t\t\t\ttimeWarped: !!event.timeWarp,\n\t\t\t\t\tfullMeasure: event.fullMeasureRest,\n\t\t\t\t\ttick: event.tick || 0,\n\t\t\t\t\tfake: !event.fullMeasureRest && !event.grace && this.voices && !trueEventIds.has(event.id), // tremoloCatcher deemed as fake\n\t\t\t\t}));\n\t\t\t\tif (!elements.some((elem) => !elem.fake)) return null;\n\n\t\t\t\tconst signatureDuration = fractionMul(WHOLE_DURATION, this.timeSignature);\n\n\t\t\t\t// BOS & EOS\n\t\t\t\telements.unshift({\n\t\t\t\t\tindex: 0,\n\t\t\t\t\ttype: EventElementType.BOS,\n\t\t\t\t\tstaff: null,\n\t\t\t\t\tdivision: null,\n\t\t\t\t\tbeam: null,\n\t\t\t\t\tdots: null,\n\t\t\t\t\tstemDirection: null,\n\t\t\t\t\tgrace: false,\n\t\t\t\t\ttremoloCatcher: false,\n\t\t\t\t\tfullMeasure: false,\n\t\t\t\t\tx: this.position.left,\n\t\t\t\t\tpivotX: this.position.left,\n\t\t\t\t\ty1: 0,\n\t\t\t\t\ty2: 0,\n\t\t\t\t\theadY: 0,\n\t\t\t\t\tfeature: null,\n\t\t\t\t\ttimeWarped: this.duration < signatureDuration,\n\t\t\t\t\ttick: 0,\n\t\t\t\t\tfake: false,\n\t\t\t\t});\n\t\t\t\telements.push({\n\t\t\t\t\tindex: -1,\n\t\t\t\t\ttype: EventElementType.EOS,\n\t\t\t\t\tstaff: null,\n\t\t\t\t\tdivision: null,\n\t\t\t\t\tbeam: null,\n\t\t\t\t\tdots: null,\n\t\t\t\t\tstemDirection: null,\n\t\t\t\t\tgrace: false,\n\t\t\t\t\ttremoloCatcher: false,\n\t\t\t\t\tfullMeasure: false,\n\t\t\t\t\tx: this.position.right,\n\t\t\t\t\tpivotX: this.position.right,\n\t\t\t\t\ty1: 0,\n\t\t\t\t\ty2: 0,\n\t\t\t\t\theadY: 0,\n\t\t\t\t\tfeature: null,\n\t\t\t\t\ttimeWarped: false,\n\t\t\t\t\ttick: this.duration,\n\t\t\t\t\tfake: false,\n\t\t\t\t});\n\n\t\t\t\tlet matrixH = null;\n\t\t\t\tif (this.voices) {\n\t\t\t\t\tmatrixH = elements.map(() => elements.map(() => 0));\n\n\t\t\t\t\tthis.voices.forEach((voice) => {\n\t\t\t\t\t\tlet tar = 0;\n\t\t\t\t\t\tvoice.forEach((id) => {\n\t\t\t\t\t\t\tconst src = elements.findIndex((e) => e.index === id);\n\t\t\t\t\t\t\tif (src > 0 && tar >= 0) matrixH[src][tar] = 1;\n\t\t\t\t\t\t\ttar = src;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (tar >= 0) matrixH[elements.length - 1][tar] = 1;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst annotation = { ...this.solutionStat, patched: this.patched };\n\n\t\t\t\tconst backgroundImages =\n\t\t\t\t\tthis.backgroundImages &&\n\t\t\t\t\tthis.backgroundImages.map(({ url, position }) => ({\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t...position,\n\t\t\t\t\t\t\ty: position.y - staffY0,\n\t\t\t\t\t\t},\n\t\t\t\t\t}));\n\n\t\t\t\treturn new EventCluster({\n\t\t\t\t\tindex: this.measureIndex,\n\t\t\t\t\tduration: this.duration,\n\t\t\t\t\tsignatureDuration,\n\t\t\t\t\tstaffY0,\n\t\t\t\t\telements,\n\t\t\t\t\tmatrixH,\n\t\t\t\t\tannotation,\n\t\t\t\t\tbackgroundImages,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t}\n\n\tapplyClusters(clusters: EventCluster[]): void {\n\t\tconst id_max = this.events.reduce((max, event) => Math.max(max, event.id), 0) + 1;\n\t\tthis.matrixH = Array(id_max + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(id_max).fill(0));\n\n\t\tclusters.forEach((cluster) => {\n\t\t\tconst ids = cluster.elements.map((e) => e.index);\n\t\t\tconsole.assert(cluster.matrixH.length === ids.length - 1, 'unexpected matrixH size:', cluster.matrixH.length, ids.length);\n\n\t\t\tfor (let is = 1; is < ids.length; ++is) {\n\t\t\t\tfor (let it = 0; it < ids.length - 1; ++it) {\n\t\t\t\t\tconst srcId = ids[is] < 0 ? id_max : ids[is];\n\t\t\t\t\tconst tarId = ids[it];\n\n\t\t\t\t\tthis.matrixH[srcId][tarId] = cluster.matrixH[is - 1][it];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// event predisposition\n\t\t\tcluster.elements.forEach((elem) => {\n\t\t\t\tconst event = this.events.find((event) => event.id === elem.index);\n\t\t\t\tif (event) {\n\t\t\t\t\tevent.predisposition = elem.predisposition;\n\t\t\t\t\tif (event.predisposition.grace !== undefined) event.grace = event.predisposition.grace ? GraceType.Grace : null;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t// estimated measure duration\n\t\tthis.estimatedDuration = clusters.reduce((sum, cluster) => sum + cluster.estimatedDuration, 0) / clusters.length;\n\t}\n}\n\nexport { SpartitoMeasure, EquationPolicy };\n","import { SimpleClass } from './aux_/typedJSON';\nimport { StaffBasic } from './interfaces';\nimport { ContextedTerm, EventTerm, MarkTerm } from './term';\n\nclass PatchMeasure extends SimpleClass {\n\tstatic className = 'PatchMeasure';\n\n\tmeasureIndex: number;\n\tstaffMask: number;\n\tbasic: StaffBasic;\n\n\t//points: SemanticPoint[];\n\tevents: EventTerm[];\n\tcontexts: ContextedTerm[][]; // [staff]\n\tmarks: MarkTerm[];\n\tvoices: number[][]; // [voice, id]\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tObject.assign(this, data);\n\t}\n\n\tget staffN(): number {\n\t\treturn Math.floor(Math.log2(this.staffMask)) + 1;\n\t}\n\n\tget basics(): StaffBasic[] {\n\t\treturn Array(this.staffN).fill(this.basic);\n\t}\n\n\tget duration(): number {\n\t\treturn Math.max(\n\t\t\t0,\n\t\t\t...(this.voices || []).map((ids) => {\n\t\t\t\tconst events = ids.map((id) => this.events.find((e) => e.id === id));\n\n\t\t\t\treturn events.reduce((duration, event) => duration + event.duration, 0);\n\t\t\t})\n\t\t);\n\t}\n}\n\nexport { PatchMeasure };\n","import { MetaNotation, TokenPosition } from '../performer';\nimport { SimpleClass } from './aux_/typedJSON';\nimport { cosHashes, Hash, hashToBigInt, hashToHex, HashVector } from './hashVector';\nimport { Performing, RegulationOptions, TermMeasure, TermVoice, VoiceMeasure, VoicesStaff } from './interfaces';\nimport { DummyLogger, Logger } from './logger';\nimport { evaluateMeasure } from './measureEvaluator';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { ContextedTerm, EventTerm, TempoTerm, TermPitch, WHOLE_DURATION } from './term';\nimport { TokenType } from './token';\nimport { argmax, frac, fractionMul, noteToPitch, printFraction, reducedFraction } from './utils';\n\nexport const emptyVoiceFromStaffMeasure = (staff: TermMeasure, chiefVoice: boolean = false): VoiceMeasure => {\n\treturn {\n\t\tempty: true,\n\t\tduration: staff.duration,\n\t\ttickMap: {\n\t\t\t[0]: EventTerm.space({ duration: staff.duration, tick: 0 }),\n\t\t},\n\t\ttimeSignature: staff.timeSignature,\n\t\ttimeSigNumeric: staff.timeSigNumeric,\n\t\tkeySignature: staff.keySignature,\n\t\tcontextedTerms: staff.terms.filter((term) => term instanceof ContextedTerm && (!term.staffLevel || chiefVoice)) as ContextedTerm[],\n\t\tmarks: [],\n\t};\n};\n\nconst removeEmptyMeasuresInVoicesStaves = (staves: VoicesStaff[]): void => {\n\t//console.assert(staves[0] && staves[0].voices[0], 'voices is empty:', staves);\n\tif (!(staves[0] && staves[0].voices[0])) {\n\t\tconsole.warn('empty voices:', staves);\n\t\treturn;\n\t}\n\n\tconst measureCount = staves[0].voices[0].measures.length;\n\tconst measureEmpties = Array(measureCount)\n\t\t.fill(null)\n\t\t.map((_, m) => {\n\t\t\tfor (const staff of staves) {\n\t\t\t\tfor (const voice of staff.voices) {\n\t\t\t\t\tconst measure = voice.measures[m];\n\t\t\t\t\tif (!measure.empty) return false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\tmeasureEmpties.forEach((empty, m) => {\n\t\tif (empty) {\n\t\t\tstaves.forEach((staff) =>\n\t\t\t\tstaff.voices.forEach((voice) => {\n\t\t\t\t\tconst measure = voice.measures[m];\n\t\t\t\t\tmeasure.tickMap = {};\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t});\n};\n\nconst markingTiesInVoice = (voice: TermVoice) => {\n\tconst events = [].concat(...voice.measures.map((m) => Object.values(m.tickMap).filter((event) => event instanceof EventTerm)));\n\t//console.log(\"events:\", events);\n\n\tfor (let i = 1; i < events.length; ++i) {\n\t\tconst event0 = events[i - 1];\n\t\tconst event1 = events[i];\n\t\tif (!event0.rest && !event1.rest) {\n\t\t\tif (event0.accessories.some((acc) => acc.type === TokenType.SlurBegin) && event1.accessories.some((acc) => acc.type === TokenType.SlurEnd)) {\n\t\t\t\tconst pitches = event0.pitches.filter((p0) => event1.pitches.some((p1) => p1.note === p0.note && p1.alter === p0.alter));\n\t\t\t\tif (pitches.length > 0) {\n\t\t\t\t\tevent0.tying = true;\n\t\t\t\t\tevent1.tied = true;\n\n\t\t\t\t\tpitches.forEach((p0) => {\n\t\t\t\t\t\tp0.tying = true;\n\t\t\t\t\t\tconst p1 = event1.pitches.find((p1) => p1.note === p0.note && p1.alter === p0.alter);\n\t\t\t\t\t\tp1.tied = true;\n\t\t\t\t\t});\n\n\t\t\t\t\t// remove slurs from accessories\n\t\t\t\t\tpitches.forEach(() => {\n\t\t\t\t\t\tconst si0 = event0.accessories.findIndex((acc) => acc.type === TokenType.SlurBegin);\n\t\t\t\t\t\tif (si0 >= 0) event0.accessories.splice(si0, 1);\n\n\t\t\t\t\t\tconst si1 = event1.accessories.findIndex((acc) => acc.type === TokenType.SlurEnd);\n\t\t\t\t\t\tif (si1 >= 0) event1.accessories.splice(si1, 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nclass Spartito extends SimpleClass {\n\tstatic className = 'Spartito';\n\n\tstavesCount: number;\n\tstaffGroups: number[][];\n\tmeasures: SpartitoMeasure[];\n\n\ttags: string[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.measures.forEach((measure) => (measure.staffGroups = this.staffGroups));\n\t}\n\n\tget regulated(): boolean {\n\t\treturn this.measures.every((m) => m.regulated);\n\t}\n\n\tget solidMeasureCount(): number {\n\t\treturn this.measures.filter((measure) => !measure.empty).length;\n\t}\n\n\tget measureIndexMapping(): number[] {\n\t\tlet n = 0;\n\t\treturn this.measures.map((measure) => {\n\t\t\treturn !measure.empty ? n++ : null;\n\t\t});\n\t}\n\n\tget headBPM(): number {\n\t\tfor (const measure of this.measures) {\n\t\t\tif (measure.marks) {\n\t\t\t\tconst tempoMark = measure.marks.find((mark) => mark instanceof TempoTerm && mark.isValid()) as TempoTerm;\n\t\t\t\tif (tempoMark) return tempoMark.bpm;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget measureLayoutCode(): string {\n\t\tconst ms = this.measures\n\t\t\t.filter((measure) => !measure.empty)\n\t\t\t.map((measure, i) => ({\n\t\t\t\tindex: i + 1,\n\t\t\t\tvb: measure.voltaBegin,\n\t\t\t\tve: measure.voltaEnd,\n\t\t\t\talter: measure.alternative,\n\t\t\t\tleftSign: '',\n\t\t\t\trightSign: '',\n\t\t\t}));\n\t\tms.forEach((m, i) => {\n\t\t\tif (m.vb) {\n\t\t\t\tconst nextI = ms.slice(i + 1).findIndex((mm) => mm.vb);\n\t\t\t\tconst nextVBI = nextI >= 0 ? i + nextI : ms.length;\n\t\t\t\tif (ms.slice(i, nextVBI - 1).some((mm) => mm.ve))\n\t\t\t\t\t// check if volta range closed\n\t\t\t\t\tm.leftSign = '2*[';\n\t\t\t}\n\n\t\t\tif (m.ve) {\n\t\t\t\tconst pms = ms.slice(0, i + 1).reverse();\n\t\t\t\tconst lastVEI = pms.slice(1).findIndex((mm) => mm.ve);\n\t\t\t\tif (lastVEI >= 0) {\n\t\t\t\t\tif (!pms.slice(1, lastVEI + 1).some((mm) => mm.vb))\n\t\t\t\t\t\t// ignore unclosed right volta\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m.alter) {\n\t\t\t\t\tconst lastMI = pms.findIndex((m) => !m.alter);\n\t\t\t\t\tif (lastMI > 0) {\n\t\t\t\t\t\tpms[lastMI].rightSign = ']';\n\t\t\t\t\t\tpms[lastMI - 1].leftSign = '{[';\n\n\t\t\t\t\t\tm.rightSign = '],';\n\n\t\t\t\t\t\tif (ms[i + 1]) ms[i + 1].rightSign = '},';\n\t\t\t\t\t}\n\t\t\t\t} else m.rightSign = '],';\n\n\t\t\t\tif (!pms.some((m) => m.vb)) ms[0].leftSign = '2*[';\n\t\t\t}\n\t\t});\n\n\t\treturn ms\n\t\t\t.map((m) => m.leftSign + m.index.toString() + m.rightSign + (m.rightSign ? '' : ','))\n\t\t\t.join(' ')\n\t\t\t.replace(/,$/, '');\n\t}\n\n\tget qualityScore(): number {\n\t\tconst measures = this.measures.filter((measure) => !measure.empty);\n\t\tconst qss = measures.map(evaluateMeasure).map((e) => e.qualityScore);\n\t\tconst sum = qss.reduce((a, b) => a + b, 0);\n\t\t//console.log('qss:', qss);\n\n\t\treturn measures.length ? sum / measures.length : null;\n\t}\n\n\tdumpEvaluations(): void {\n\t\tconst es = this.measures.filter((measure) => !measure.empty).map((m) => ({ measureIndex: m.measureIndex, ...evaluateMeasure(m) }));\n\t\tconst qss = es.map((e) => e.qualityScore);\n\t\tconst sum = qss.reduce((a, b) => a + b, 0);\n\t\tconsole.log('qualityScore:', sum / es.length);\n\n\t\tconsole.table(es);\n\t}\n\n\tregulate(options: RegulationOptions = {}): void {\n\t\tthis.measures.forEach((m) => m.regulated || m.regulate(options));\n\t}\n\n\tcleanupRegulation(): void {\n\t\tthis.measures.forEach((m) => (m.voices = null));\n\t}\n\n\t// measures' estimatedDuration should be valid\n\trectifyTimeSignatures(logger: Logger = new DummyLogger()): void {\n\t\tconst mis = this.measures\n\t\t\t.map((measure, index) => ({ measure, index }))\n\t\t\t.filter(({ measure, index }) => !index || measure.timeSignatureChanged)\n\t\t\t.map(({ index }) => index);\n\t\tconst segments = mis\n\t\t\t.map((index, si) => this.measures.slice(index, si < mis.length - 1 ? mis[si + 1] : this.measures.length))\n\t\t\t.map((ms) => ms.filter((m) => m.estimatedDuration > 0))\n\t\t\t.filter((seg) => seg.length >= 3 || seg.some((measure) => measure.doubtfulTimesig));\n\t\t//console.log(\"segments:\", segments.map(ms => ms.map(m => m.measureIndex)));\n\n\t\tsegments.forEach((measures) => {\n\t\t\tif (measures[0].patched) {\n\t\t\t\t// rectify according to patched head measure\n\t\t\t\tconst newTimeSignature = measures[0].timeSignature;\n\t\t\t\tconst measuresToFix = measures\n\t\t\t\t\t.slice(1)\n\t\t\t\t\t.filter((measure) => !measure.patched && printFraction(measure.timeSignature) !== printFraction(newTimeSignature));\n\t\t\t\tif (measuresToFix.length) {\n\t\t\t\t\tconst originTimeSignature = measuresToFix[0].timeSignature;\n\t\t\t\t\tmeasuresToFix.forEach((measure) => measure.basics.forEach((basic) => (basic.timeSignature = newTimeSignature)));\n\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t'[rectifyTimeSignatures]\ttimesignator overwrote by patched head:',\n\t\t\t\t\t\t`${printFraction(originTimeSignature)} -> ${printFraction(newTimeSignature)}`,\n\t\t\t\t\t\tmeasuresToFix.map((m) => m.measureIndex)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst originTimeSignature = measures[0].timeSignature;\n\t\t\tconst regularD = Number.isInteger(Math.log2(originTimeSignature.denominator));\n\n\t\t\tlet denominator = regularD ? 4 : 8;\n\t\t\tif (regularD) denominator = Math.max(denominator, measures[0].timeSignature.denominator);\n\n\t\t\tconst numerators = measures.map((measure) => Math.round((measure.estimatedDuration * denominator) / WHOLE_DURATION));\n\t\t\tconst countings = Object.entries(numerators.reduce((c, n) => ((c[n] = (c[n] || 0) + 1), c), {} as Record)).sort(\n\t\t\t\t(p1, p2) => p2[1] - p1[1]\n\t\t\t);\n\t\t\tconst peakCount = countings[0][1];\n\t\t\tconst candidateNumerators = countings.filter(([_, c]) => c > peakCount * 0.6);\n\t\t\tconst bestCounting = candidateNumerators.reduce((best, c) => (Number(c[0]) > Number(best[0]) ? c : best));\n\t\t\tif (bestCounting[1] > 1) {\n\t\t\t\t//console.log(\"countings:\", countings, bestCounting[0]);\n\t\t\t\tlet numerator = Number(bestCounting[0]);\n\t\t\t\tif (!regularD || originTimeSignature.denominator * numerator !== originTimeSignature.numerator * denominator) {\n\t\t\t\t\tif (regularD && denominator !== originTimeSignature.denominator) {\n\t\t\t\t\t\tconst reducedN = (numerator * originTimeSignature.denominator) / denominator;\n\t\t\t\t\t\tif (Number.isInteger(reducedN)) {\n\t\t\t\t\t\t\tnumerator = reducedN;\n\t\t\t\t\t\t\tdenominator = originTimeSignature.denominator;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst measuresToFix = measures.filter((measure) => !measure.patched);\n\n\t\t\t\t\tconst newTimeSignature = frac(numerator, denominator);\n\t\t\t\t\tmeasuresToFix.forEach((measure) => measure.basics.forEach((basic) => (basic.timeSignature = newTimeSignature)));\n\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t'[rectifyTimeSignatures]\ttimesignator overwrote by estimation:',\n\t\t\t\t\t\t`${printFraction(originTimeSignature)} -> ${numerator}/${denominator}`,\n\t\t\t\t\t\tmeasuresToFix.map((m) => m.measureIndex)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tmakeVoiceStaves(): VoicesStaff[] {\n\t\tthis.regulate();\n\n\t\tconst voiceCount = Math.max(...this.measures.map((measure) => measure.voices.length));\n\t\tif (!voiceCount || !Number.isFinite(voiceCount)) return null;\n\n\t\t// mark tied pitches for patched measues\n\t\tthis.measures\n\t\t\t.filter((measure) => measure.patched)\n\t\t\t.forEach((measure) => {\n\t\t\t\tmeasure.events.forEach((event) => {\n\t\t\t\t\tif (event.tied) event.pitches.forEach((pitch) => (pitch.tied = true));\n\t\t\t\t});\n\t\t\t});\n\n\t\t// Move courtesy clefs to the next measure.\n\t\t// A courtesy clef that appears after all events on its staff announces the\n\t\t// clef change for the next measure rather than applying to the current one.\n\t\tfor (let mi = 0; mi < this.measures.length - 1; mi++) {\n\t\t\tconst measure = this.measures[mi];\n\t\t\tconst nextMeasure = this.measures[mi + 1];\n\t\t\tif (!measure.contexts || !nextMeasure?.contexts) continue;\n\n\t\t\tfor (let si = 0; si < measure.contexts.length; si++) {\n\t\t\t\tconst ctxList = measure.contexts[si];\n\t\t\t\tif (!ctxList) continue;\n\n\t\t\t\tconst staffEvents = measure.events?.filter((e: any) => e.staff === si) || [];\n\t\t\t\tconst maxEventX = staffEvents.reduce((max: number, e: any) => Math.max(max, e.x || 0), -Infinity);\n\t\t\t\tif (!Number.isFinite(maxEventX)) continue;\n\n\t\t\t\tconst deferred: ContextedTerm[] = [];\n\t\t\t\tmeasure.contexts[si] = ctxList.filter((term) => {\n\t\t\t\t\tif (term.type === 0 /* ContextType.Clef */ && term.x > maxEventX) {\n\t\t\t\t\t\tdeferred.push(term);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (deferred.length > 0 && nextMeasure.contexts[si]) {\n\t\t\t\t\tdeferred.forEach((term) => (term.tick = 0));\n\t\t\t\t\tnextMeasure.contexts[si] = [...deferred, ...nextMeasure.contexts[si]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// [measure, voice]\n\t\tconst measures: VoiceMeasure[][] = this.measures.map((measure /*, mi*/) => {\n\t\t\tconsole.assert(measure.validRegulated, '[makeVoiceStaves] measure is invalid:', measure);\n\n\t\t\tconst eventMap: { [key: number]: EventTerm } = {};\n\t\t\tmeasure.events.forEach((event) => (eventMap[event.id] = event));\n\n\t\t\tconst leftStaves = new Set(\n\t\t\t\tArray(measure.contexts.length)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map((_, i) => i)\n\t\t\t);\n\n\t\t\tlet bar = null;\n\t\t\tif (measure.barType) {\n\t\t\t\tswitch (measure.barType) {\n\t\t\t\t\tcase 'Segment':\n\t\t\t\t\t\tbar = '||';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Terminal':\n\t\t\t\t\t\tbar = '|.';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst voices: VoiceMeasure[] = measure.voices.map((ids /*, vi*/) => {\n\t\t\t\tconst events = ids.map((id) => eventMap[id]);\n\t\t\t\tevents.sort((e1, e2) => e1.tick - e2.tick);\n\n\t\t\t\tconst tickMap = {};\n\t\t\t\tlet tick = 0;\n\t\t\t\tlet lastEvent = null;\n\t\t\t\tfor (const event of events) {\n\t\t\t\t\tif (!Number.isFinite(event?.tick)) {\n\t\t\t\t\t\tconsole.warn('invalid event tick:', event);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (event.tick > tick) tickMap[tick] = EventTerm.space({ tick, duration: event.tick - tick });\n\t\t\t\t\telse if (!event.grace && event.tick < tick && lastEvent)\n\t\t\t\t\t\tlastEvent.timeWarp = reducedFraction(event.tick - lastEvent.tick, lastEvent.duration);\n\t\t\t\t\t//console.log(\"timewarp:\", event.tick - lastEvent.tick, lastEvent.duration, lastEvent.timeWarp);\n\n\t\t\t\t\ttickMap[event.tick] = event;\n\n\t\t\t\t\tif (!event.zeroHolder) {\n\t\t\t\t\t\ttick = Math.round(event.tick + event.duration);\n\t\t\t\t\t\tlastEvent = event;\n\n\t\t\t\t\t\t// sub grace events\n\t\t\t\t\t\tif (event.graceIds) {\n\t\t\t\t\t\t\tevent.graceIds.forEach((id) => {\n\t\t\t\t\t\t\t\tconst grace = measure.eventMap[id];\n\t\t\t\t\t\t\t\tif (grace) tickMap[grace.tick] = grace;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (measure.endEvent && measure.endEvent.graceIds) {\n\t\t\t\t\tmeasure.endEvent.graceIds.forEach((id) => {\n\t\t\t\t\t\tconst grace = measure.eventMap[id];\n\t\t\t\t\t\tif (grace && (!lastEvent || grace.staff === lastEvent.staff)) tickMap[grace.tick] = grace;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (tick < measure.duration) tickMap[tick] = EventTerm.space({ tick, duration: measure.duration - tick });\n\t\t\t\telse if (tick > measure.duration && Number.isFinite(measure.duration))\n\t\t\t\t\t//console.warn(\"duration out of range:\", tick, column.duration, mi, vi);\n\t\t\t\t\tlastEvent.timeWarp = reducedFraction(measure.duration - lastEvent.tick, lastEvent.duration);\n\n\t\t\t\tconsole.assert(\n\t\t\t\t\t!lastEvent || !lastEvent.timeWarp || (Number.isInteger(lastEvent.timeWarp.numerator) && Number.isInteger(lastEvent.timeWarp.denominator)),\n\t\t\t\t\t'invalid time warp:',\n\t\t\t\t\tlastEvent\n\t\t\t\t);\n\n\t\t\t\tconst staffIndex = events[0] ? events[0].staff : 0;\n\t\t\t\tleftStaves.delete(staffIndex);\n\t\t\t\tconst basic = measure.basics[staffIndex];\n\n\t\t\t\t//const row = measure.rows[staffIndex];\n\t\t\t\tconst contextedTerms = measure.contexts[staffIndex];\n\n\t\t\t\tconst tailEvent = events[events.length - 1];\n\t\t\t\tconst tailStaff = tailEvent ? tailEvent.staff : 0;\n\n\t\t\t\t// TODO: modify full measure rests duration\n\n\t\t\t\treturn {\n\t\t\t\t\ttickMap,\n\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\t...basic,\n\t\t\t\t\t// TODO: consider staff altered voice\n\t\t\t\t\tcontextedTerms,\n\t\t\t\t\tmarks: [],\n\t\t\t\t\tbreak: measure.break,\n\t\t\t\t\tpageBreak: measure.pageBreak,\n\t\t\t\t\theadStaff: staffIndex,\n\t\t\t\t\ttailStaff,\n\t\t\t\t\tbar,\n\t\t\t\t};\n\t\t\t});\n\n\t\t\twhile (voices.length < voiceCount) {\n\t\t\t\tconst staffIndex = leftStaves.values().next().value || 0;\n\t\t\t\tleftStaves.delete(staffIndex);\n\n\t\t\t\tconst basic = measure.basics[staffIndex];\n\t\t\t\tconst terms = measure.contexts[staffIndex];\n\n\t\t\t\tconst chiefVoice = voices.every((voice) => voice.headStaff !== staffIndex);\n\n\t\t\t\tconst voice = emptyVoiceFromStaffMeasure(\n\t\t\t\t\t{\n\t\t\t\t\t\tterms,\n\t\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\t\t...basic,\n\t\t\t\t\t\tbreak: measure.break,\n\t\t\t\t\t\tpageBreak: measure.pageBreak,\n\t\t\t\t\t},\n\t\t\t\t\tchiefVoice\n\t\t\t\t);\n\t\t\t\tvoice.headStaff = staffIndex;\n\t\t\t\tvoice.tailStaff = staffIndex;\n\t\t\t\tvoices.push(voice);\n\t\t\t}\n\n\t\t\treturn voices;\n\t\t});\n\n\t\t// compute traits for voice-measures\n\t\tmeasures.forEach((voices) =>\n\t\t\tvoices.forEach((measure) => {\n\t\t\t\tconst words = [];\n\n\t\t\t\tif (!measure.empty) {\n\t\t\t\t\twords.push(`s${measure.headStaff}`);\n\t\t\t\t\twords.push(`s${measure.tailStaff}`);\n\t\t\t\t}\n\n\t\t\t\tObject.values(measure.tickMap).forEach((event) => {\n\t\t\t\t\tif (event instanceof EventTerm) {\n\t\t\t\t\t\twords.push(`s${event.staff}`);\n\n\t\t\t\t\t\tif (event.stemDirection) {\n\t\t\t\t\t\t\tconst sd = `st${event.staff}-${event.stemDirection}`;\n\t\t\t\t\t\t\twords.push(sd, sd);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (event.grace) words.push(`gd${event.mainDuration}`);\n\t\t\t\t\t\telse words.push(`d${event.mainDuration}`);\n\n\t\t\t\t\t\tif (event.rest) words.push('r-' + event.rest);\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tevent.pitches.forEach((pitch) => {\n\t\t\t\t\t\t\t\twords.push(`p1-${pitch.note}`);\n\t\t\t\t\t\t\t\twords.push(`p8-${Math.round(pitch.note / 8)}`);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tmeasure.trait = HashVector.fromWords(words);\n\t\t\t})\n\t\t);\n\t\t//console.log(\"measure traits:\");\n\t\t//console.table(measures.map(voices => voices.map(measure => hashToHex(measure.trait.toHash()))));\n\n\t\tconst staffToGroup: Record = this.staffGroups\n\t\t\t.flat(1)\n\t\t\t.reduce((map, si) => ((map[si] = this.staffGroups.findIndex((group) => group.includes(si))), map), {});\n\n\t\t// sort voices to connect voices between neighhoring measures\n\t\tconst voiceTraits = Array(voiceCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, index) => ({ vector: HashVector.zero, index, weight: 0, headStaff: null }));\n\t\tmeasures.forEach((voices, mi) => {\n\t\t\tvoiceTraits.sort((v1, v2) => v2.weight - v1.weight);\n\n\t\t\tconst leftVoices = new Set(voices);\n\t\t\tvoiceTraits.forEach((voiceTrait) => {\n\t\t\t\tconst vs = [...leftVoices];\n\t\t\t\tlet measure = vs[0];\n\t\t\t\tif (mi > 0 && vs.length > 1) {\n\t\t\t\t\tconst consistencies = vs.map((measure) =>\n\t\t\t\t\t\tstaffToGroup[measure.headStaff] === staffToGroup[voiceTrait.headStaff]\n\t\t\t\t\t\t\t? cosHashes(voiceTrait.vector.toHash(), measure.trait.toHash())\n\t\t\t\t\t\t\t: -1\n\t\t\t\t\t);\n\t\t\t\t\tmeasure = vs[argmax(consistencies)];\n\t\t\t\t}\n\t\t\t\tleftVoices.delete(measure);\n\n\t\t\t\tmeasure.voiceIndex = voiceTrait.index;\n\t\t\t\tvoiceTrait.vector.scale(0.4).add(measure.trait);\n\n\t\t\t\tvoiceTrait.weight = Object.keys(measure.tickMap).length;\n\n\t\t\t\tif (mi === 0) voiceTrait.headStaff = measure.headStaff;\n\t\t\t});\n\n\t\t\tvoices.sort((m1, m2) => m1.voiceIndex - m2.voiceIndex);\n\t\t});\n\n\t\t//const staffTraits = Array(this.stavesCount).fill(null).map((_, si) => HashVector.fromString(`s${si}`).toHash());\n\t\tconst staffVoiceIndices = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map(() => []);\n\t\tvoiceTraits.forEach((trait) => {\n\t\t\t//const consistencies = staffTraits.map(staff => cosHashes(trait.vector.toHash(), staff));\n\t\t\t//staffVoiceIndices[argmax(consistencies)].push(trait.index);\n\t\t\tstaffVoiceIndices[trait.headStaff].push(trait.index);\n\t\t});\n\n\t\tconst staves = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, si) => {\n\t\t\t\tif (!measures[0]) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvoices: [],\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t//const voiceIndicies = measures[0].map((voice, vi) => ({ voice, vi })).filter(({ voice }) => voice.headStaff === si).map(({ vi }) => vi);\n\t\t\t\tconst voiceIndicies = staffVoiceIndices[si];\n\n\t\t\t\tconst voices = voiceIndicies.map((vi): TermVoice => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmode: 'relative',\n\t\t\t\t\t\tmeasures: measures.map((m) => m[vi]),\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\treturn { voices };\n\t\t\t});\n\n\t\tremoveEmptyMeasuresInVoicesStaves(staves);\n\t\tstaves.forEach((staff) => staff.voices.forEach(markingTiesInVoice));\n\n\t\treturn staves;\n\t}\n\n\tperform(): Performing {\n\t\tconst staves = this.makeVoiceStaves();\n\t\tif (!staves) return null;\n\n\t\tconst tokenMap = new Map();\n\n\t\t// TODO: store staff channels in score\n\t\tconst staffToChannel = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.reduce((map, _, i) => {\n\t\t\t\tmap[i] = i;\n\t\t\t\treturn map;\n\t\t\t}, {});\n\n\t\tconst voiceChannels = [].concat(...staves.map((staff, si) => staff.voices.map(() => staffToChannel[si])));\n\n\t\tlet hasTempo = false;\n\n\t\tlet nextTick = 0;\n\t\tlet events0 = null;\n\t\tconst measures = this.measures\n\t\t\t.filter((measure) => !measure.empty)\n\t\t\t.map((measure) => {\n\t\t\t\tconst { systemIndex, right: endX } = measure.position;\n\t\t\t\tconst measureIndex = measure.measureIndex;\n\n\t\t\t\tconst voices: VoiceMeasure[] = [].concat(...staves.map((staff) => staff.voices.map((voice) => voice.measures[measureIndex])));\n\t\t\t\tconst voice0 = voices[0];\n\t\t\t\tconst tick = nextTick;\n\n\t\t\t\t//const signatureDuration = (WHOLE_DURATION * voice0.timeSignature.numerator) / voice0.timeSignature.denominator;\n\n\t\t\t\tnextTick += voice0.duration;\n\n\t\t\t\tconst notes = [].concat(\n\t\t\t\t\t...voices.map((measure, vi) => {\n\t\t\t\t\t\tconst tickFactor = 1; //measure.duration ? signatureDuration / measure.duration : 1;\n\n\t\t\t\t\t\tconst channel = voiceChannels[vi];\n\n\t\t\t\t\t\tconst chords = Object.values(measure.tickMap)\n\t\t\t\t\t\t\t.filter((term) => term instanceof EventTerm && !term.rest)\n\t\t\t\t\t\t\t.map((term: EventTerm) => {\n\t\t\t\t\t\t\t\tconst duration = Math.round(term.duration * tickFactor);\n\t\t\t\t\t\t\t\tconsole.assert(Number.isFinite(term.tick), 'invalid event term tick:', term);\n\t\t\t\t\t\t\t\tconsole.assert(Number.isFinite(duration), 'invalid event term duration:', term);\n\n\t\t\t\t\t\t\t\tif (term.tick >= 0) {\n\t\t\t\t\t\t\t\t\t// exclude minus tick tokens\n\t\t\t\t\t\t\t\t\tterm.noteIds.forEach((id) => {\n\t\t\t\t\t\t\t\t\t\ttokenMap.set(id, {\n\t\t\t\t\t\t\t\t\t\t\tsystem: systemIndex,\n\t\t\t\t\t\t\t\t\t\t\tmeasure: measureIndex,\n\t\t\t\t\t\t\t\t\t\t\tx: term.roundX,\n\t\t\t\t\t\t\t\t\t\t\tendX,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst part = this.staffGroups.findIndex((group) => group.includes(term.staff));\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttick: Math.round(term.tick * tickFactor),\n\t\t\t\t\t\t\t\t\tduration,\n\t\t\t\t\t\t\t\t\tpitches: term.pitches,\n\t\t\t\t\t\t\t\t\tnoteIds: term.noteIds,\n\t\t\t\t\t\t\t\t\tpart,\n\t\t\t\t\t\t\t\t\tstaff: term.staff,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn [].concat(\n\t\t\t\t\t\t\t...chords.map((chord) => {\n\t\t\t\t\t\t\t\t// exclude repeated pitches\n\t\t\t\t\t\t\t\tconst pitchMap: { [pitch: number]: TermPitch } = chord.pitches.reduce((map, pitch) => {\n\t\t\t\t\t\t\t\t\tmap[noteToPitch(pitch)] = pitch;\n\t\t\t\t\t\t\t\t\treturn map;\n\t\t\t\t\t\t\t\t}, {});\n\t\t\t\t\t\t\t\tconst pitches = Object.values(pitchMap).sort((p1, p2) => p1.note - p2.note);\n\n\t\t\t\t\t\t\t\treturn pitches\n\t\t\t\t\t\t\t\t\t.filter((pitch) => !pitch.tied)\n\t\t\t\t\t\t\t\t\t.map((pitch, i) => {\n\t\t\t\t\t\t\t\t\t\tconst pitchValue = noteToPitch(pitch);\n\t\t\t\t\t\t\t\t\t\tconst id = chord.noteIds && chord.noteIds[i];\n\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\ttick: chord.tick,\n\t\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\t\tduration: chord.duration,\n\t\t\t\t\t\t\t\t\t\t\tchordPosition: {\n\t\t\t\t\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\t\t\t\t\tcount: chord.pitches.length,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\ttied: pitch.tied,\n\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\tids: [id],\n\t\t\t\t\t\t\t\t\t\t\ttrack: chord.part,\n\t\t\t\t\t\t\t\t\t\t\tstaff: chord.staff,\n\t\t\t\t\t\t\t\t\t\t\tchannel,\n\t\t\t\t\t\t\t\t\t\t\tsubNotes: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tstartTick: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tendTick: chord.duration,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvelocity: 127,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst events = [];\n\t\t\t\tevents0 = events0 || events;\n\n\t\t\t\tif (measure.marks)\n\t\t\t\t\tmeasure.marks.forEach((mark) => {\n\t\t\t\t\t\tif (mark instanceof TempoTerm) {\n\t\t\t\t\t\t\tconst bpm = mark.bpm;\n\t\t\t\t\t\t\tif (mark.isValid()) {\n\t\t\t\t\t\t\t\tconst es = hasTempo ? events : events0; // set the first tempo to the beginning of the track\n\t\t\t\t\t\t\t\tconst tick = hasTempo ? mark.tick : 0;\n\t\t\t\t\t\t\t\tes.push({\n\t\t\t\t\t\t\t\t\ttrack: 0,\n\t\t\t\t\t\t\t\t\tticks: tick,\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\ttype: 'meta',\n\t\t\t\t\t\t\t\t\t\tsubtype: 'setTempo',\n\t\t\t\t\t\t\t\t\t\tmicrosecondsPerBeat: Math.round(60e6 / bpm),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\thasTempo = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\tconst basic = measure.basics[0];\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\tnotes,\n\t\t\t\t\tevents,\n\t\t\t\t\ttimeSignature: basic && basic.timeSignature,\n\t\t\t\t\tkeySignature: basic && basic.keySignature,\n\t\t\t\t};\n\t\t\t});\n\n\t\tif (!hasTempo) {\n\t\t\tmeasures[0].events.push({\n\t\t\t\ttrack: 0,\n\t\t\t\tticks: 0,\n\t\t\t\tdata: {\n\t\t\t\t\ttype: 'meta',\n\t\t\t\t\tsubtype: 'setTempo',\n\t\t\t\t\tmicrosecondsPerBeat: 0.5e6, // TODO\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst notation = new MetaNotation({ measures });\n\n\t\treturn {\n\t\t\tnotation,\n\t\t\ttokenMap,\n\t\t};\n\t}\n\n\tperformByEstimation(): Performing {\n\t\tconst tokenMap = new Map();\n\t\tlet nextTick = 0;\n\n\t\tconst measures = this.measures\n\t\t\t.filter((measure) => measure.events.some((event) => event.predisposition))\n\t\t\t.map((measure) => {\n\t\t\t\tconst tick = nextTick;\n\t\t\t\tconst duration = Math.round(measure.estimatedDuration || fractionMul(WHOLE_DURATION, measure.timeSignature));\n\t\t\t\tconst basic = measure.basics[0];\n\n\t\t\t\tnextTick += duration;\n\n\t\t\t\tconst { systemIndex, right: endX } = measure.position;\n\t\t\t\tconst measureIndex = measure.measureIndex;\n\n\t\t\t\tconst chords = measure.events.filter((event) => event.predisposition && event.predisposition.fake < 0.5 && !event.rest);\n\t\t\t\tconst notes = chords\n\t\t\t\t\t.map((chord) => {\n\t\t\t\t\t\tconst noteTick = Math.round(chord.predisposition.tick);\n\n\t\t\t\t\t\tchord.noteIds.forEach((id) => {\n\t\t\t\t\t\t\ttokenMap.set(id, {\n\t\t\t\t\t\t\t\tsystem: systemIndex,\n\t\t\t\t\t\t\t\tmeasure: measureIndex,\n\t\t\t\t\t\t\t\tx: chord.roundX,\n\t\t\t\t\t\t\t\tendX,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn chord.pitches.map((pitch, i) => {\n\t\t\t\t\t\t\tconst pitchValue = noteToPitch(pitch);\n\t\t\t\t\t\t\tconst id = chord.noteIds && chord.noteIds[i];\n\t\t\t\t\t\t\tconst part = this.staffGroups.findIndex((group) => group.includes(chord.staff));\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttick: noteTick,\n\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\tduration: chord.duration,\n\t\t\t\t\t\t\t\tchordPosition: {\n\t\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\t\tcount: chord.pitches.length,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ttied: pitch.tied,\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\tids: [id],\n\t\t\t\t\t\t\t\ttrack: part,\n\t\t\t\t\t\t\t\tstaff: chord.staff,\n\t\t\t\t\t\t\t\tchannel: 0,\n\t\t\t\t\t\t\t\tsubNotes: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tstartTick: 0,\n\t\t\t\t\t\t\t\t\t\tendTick: chord.duration,\n\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\tvelocity: 127,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.flat(1);\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration,\n\t\t\t\t\tnotes,\n\t\t\t\t\tevents: [],\n\t\t\t\t\ttimeSignature: basic && basic.timeSignature,\n\t\t\t\t\tkeySignature: basic && basic.keySignature,\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst notation = new MetaNotation({ measures });\n\n\t\treturn {\n\t\t\tnotation,\n\t\t\ttokenMap,\n\t\t};\n\t}\n\n\tfeatureHash(): Hash {\n\t\tconst headMeasures = this.measures.slice(0, 16);\n\t\tconst measureWords = headMeasures.map((measure) => measure.featureWords);\n\n\t\tconst levels = [1, 4, 16].map((len) => {\n\t\t\tconst meaures = measureWords.slice(0, len).filter(Boolean);\n\t\t\tconst ys = meaures.map((words) => words[0]).flat(1);\n\t\t\tconst melodies = meaures.map((words) => words[1]).flat(1);\n\t\t\tconst rhythm = meaures.map((words) => words[2]).flat(1);\n\n\t\t\tconst [vecY, vecMelody, vecRhythm] = [ys, melodies, rhythm].map(HashVector.fromWords);\n\n\t\t\treturn HashVector.concat(vecY, vecMelody.sub(128), vecRhythm.sub(128));\n\t\t});\n\n\t\treturn HashVector.concat(...levels).toHash();\n\t}\n\n\tfeatureHashHex(): string {\n\t\treturn hashToHex(this.featureHash());\n\t}\n\n\tfeatureHashBigInt(): bigint {\n\t\treturn hashToBigInt(this.featureHash());\n\t}\n\n\tassignMeasureNumbers(): void {\n\t\tlet n = null as any;\n\t\tfor (const measure of this.measures) {\n\t\t\tif (!measure.discard && !measure.events.length) continue;\n\n\t\t\tif (measure.indent) n = null;\n\n\t\t\tif (!Number.isFinite(n)) n = measure.partialDuration ? 0 : 1;\n\n\t\t\tmeasure.measureNumber = n++;\n\t\t}\n\t}\n}\n\nexport { SpartitoMeasure, Spartito };\n","import { Fraction } from './interfaces';\nimport { ContextedTerm, ContextType } from './term';\nimport { Logger, DummyLogger } from './logger';\n\nconst GROUP_N_TO_PITCH = [0, 2, 4, 5, 7, 9, 11];\nconst MIDDLE_C = 60;\n\nexport const mod7 = (x) => {\n\tlet y = x % 7;\n\twhile (y < 0) y += 7;\n\n\treturn y;\n};\n\nconst mod12 = (x) => {\n\tlet y = x % 12;\n\twhile (y < 0) y += 12;\n\n\treturn y;\n};\n\nconst PHONETS = 'CDEFGAB';\n\nconst ALTER_NAMES = {\n\t[-2]: '\\u266D\\u266D',\n\t[-1]: '\\u266D',\n\t[0]: '\\u266E',\n\t[1]: '\\u266F',\n\t[2]: '\\uD834\\uDD2A',\n};\n\n/*\n\tCoordinates:\n\n\t\tnote:\n\t\t\tzero: the middle C line (maybe altered)\n\t\t\tpositive: high (right on piano keyboard)\n\t\t\tunit: a step in scales of the current staff key\n\n\t\tstaff Y:\n\t\t\tzero: the third (middle) line among 5 staff lines\n\t\t\tpositive: down\n\t\t\tunit: a interval between 2 neighbor staff lines\n*/\n\nexport default class StaffContext {\n\tlogger: Logger = new DummyLogger();\n\n\tclef: number = -3;\n\tkeyAlters: number[] = [];\n\toctaveShift: number = 0;\n\talters: number[] = [];\n\n\ttimeSignature: Fraction = {\n\t\tnumerator: 4,\n\t\tdenominator: 4,\n\t};\n\ttimeSigNumeric: boolean = false;\n\ttimeSigNumSet: boolean = false;\n\ttimeSigDenSet: boolean = false;\n\tdoubtingTimesig: boolean = true;\n\n\tchange(term: ContextedTerm) {\n\t\tswitch (term.type) {\n\t\t\tcase ContextType.Clef:\n\t\t\t\tthis.clef = term.clef;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.KeyAcc:\n\t\t\t\tthis.keyAlters[mod7(this.yToNote(term.y))] = term.alter;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.Acc:\n\t\t\t\tthis.alters[this.yToNote(term.y)] = term.alter;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.OctaveShift:\n\t\t\t\tthis.octaveShift = term.octaveShift;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.TimeSignatureC:\n\t\t\t\tthis.timeSigNumeric = false;\n\t\t\t\tswitch (term.tokenType) {\n\t\t\t\t\tcase 'timesig-C44':\n\t\t\t\t\t\tthis.timeSignature.numerator = 4;\n\t\t\t\t\t\tthis.timeSignature.denominator = 4;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'timesig-C22':\n\t\t\t\t\t\tthis.timeSignature.numerator = 2;\n\t\t\t\t\t\tthis.timeSignature.denominator = 2;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tthis.doubtingTimesig = this.partialTimeSignature;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.TimeSignatureN:\n\t\t\t\tthis.timeSigNumeric = true;\n\t\t\t\tswitch (term.y) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tif (this.timeSigDenSet) this.timeSignature.denominator = this.timeSignature.denominator * 10 + term.number;\n\t\t\t\t\t\telse this.timeSignature.denominator = term.number;\n\n\t\t\t\t\t\tthis.timeSigDenSet = true;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase -1:\n\t\t\t\t\t\tif (this.timeSigNumSet) this.timeSignature.numerator = this.timeSignature.numerator * 10 + term.number;\n\t\t\t\t\t\telse this.timeSignature.numerator = term.number;\n\n\t\t\t\t\t\tthis.timeSigNumSet = true;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.logger.warn('unexpected time signature Y:', term.y);\n\t\t\t\t}\n\t\t\t\tthis.doubtingTimesig = this.partialTimeSignature;\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tresetMeasure() {\n\t\tthis.alters = [];\n\n\t\tthis.timeSigNumSet = false;\n\t\tthis.timeSigDenSet = false;\n\t}\n\n\tresetSystem() {\n\t\tthis.keyAlters = [];\n\t}\n\n\tget keySignature(): number {\n\t\treturn this.keyAlters.filter((a) => Number.isInteger(a)).reduce((sum, a) => sum + a, 0);\n\t}\n\n\tget partialTimeSignature(): boolean {\n\t\treturn !this.timeSigNumSet !== !this.timeSigDenSet;\n\t}\n\n\tnoteToY(note: number): number {\n\t\treturn -note / 2 - this.clef - this.octaveShift * 3.5;\n\t}\n\n\tpitchToNote(pitch: number, { preferredAlter = null } = {}): { note: number; alter: number } {\n\t\tif (!preferredAlter) preferredAlter = this.keySignature < 0 ? -1 : 1;\n\n\t\tconst group = Math.floor((pitch - MIDDLE_C) / 12);\n\t\tconst gp = mod12(pitch);\n\t\tconst alteredGp = GROUP_N_TO_PITCH.includes(gp) ? gp : mod12(gp - preferredAlter);\n\t\tconst gn = GROUP_N_TO_PITCH.indexOf(alteredGp);\n\t\tthis.logger.assert(gn >= 0, 'invalid preferredAlter:', pitch, preferredAlter, alteredGp);\n\n\t\tconst naturalNote = group * 7 + gn;\n\n\t\tconst alterValue = gp - alteredGp;\n\t\tconst keyAlterValue = this.keyAlters[gn] || 0;\n\t\tconst onAcc = Number.isInteger(this.alters[naturalNote]);\n\n\t\tconst alter = onAcc ? alterValue : alterValue === keyAlterValue ? null : alterValue;\n\n\t\treturn { note: naturalNote, alter };\n\t}\n\n\tpitchToY(pitch: number, { preferredAlter = null } = {}): { y: number; alter: number } {\n\t\tconst { note, alter } = this.pitchToNote(pitch, { preferredAlter });\n\t\tconst y = this.noteToY(note);\n\n\t\treturn { y, alter };\n\t}\n\n\tyToNote(y: number): number {\n\t\tthis.logger.assert(Number.isInteger(y * 2), 'invalid y:', y);\n\n\t\treturn (-y - this.octaveShift * 3.5 - this.clef) * 2;\n\t}\n\n\talterOnNote(note: number): number {\n\t\tif (Number.isInteger(this.alters[note])) return this.alters[note];\n\n\t\tconst gn = mod7(note);\n\t\tif (Number.isInteger(this.keyAlters[gn])) return this.keyAlters[gn];\n\n\t\treturn 0;\n\t}\n\n\tnoteToPitch(note: number): number {\n\t\tconst group = Math.floor(note / 7);\n\t\tconst gn = mod7(note);\n\n\t\tconst pitch = MIDDLE_C + group * 12 + GROUP_N_TO_PITCH[gn] + this.alterOnNote(note);\n\t\tif (!Number.isFinite(pitch)) {\n\t\t\tthis.logger.warn('invalid pitch value:', pitch, note, group, gn);\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn pitch;\n\t}\n\n\tyToPitch(y: number): number {\n\t\treturn this.noteToPitch(this.yToNote(y));\n\t}\n\n\tyToPitchName(y: number): string {\n\t\tconst note = this.yToNote(y);\n\t\tconst group = Math.floor(note / 7);\n\t\tconst gn = mod7(note);\n\n\t\tlet alter = this.alterOnNote(note);\n\t\tif (!alter && !Number.isInteger(this.alters[note])) alter = null;\n\n\t\treturn `${ALTER_NAMES[alter] ? ALTER_NAMES[alter] : ''}${PHONETS[gn]}${group + 4}`;\n\t}\n}\n","import sha1 from 'js-sha1';\n\nimport * as measureLayout from '../measureLayout';\nimport * as staffLayout from '../staffLayout';\nimport { SimpleClass } from './aux_/typedJSON';\nimport { EventSystem, MeasureBrief, MusicSheet, RecognitionSettings, ScoreData, TermMeasure, TermStaff, VoicesStaff } from './interfaces';\nimport { DummyLogger, Logger } from './logger';\nimport { evaluateMeasure } from './measureEvaluator';\nimport { PatchMeasure } from './patch';\nimport { Measure, Page, Staff, System } from './scoreComponents';\nimport { hashSemanticPoint, SemanticPoint, SemanticType } from './semanticPoint';\nimport { BOS_ELEMENT, fractionToElems, SemanticCluster, SemanticElement, SemanticElementType } from './semanticTopology';\nimport { Spartito, SpartitoMeasure } from './spartito';\nimport StaffContext from './staffContext';\nimport { ContextedTerm, ContextType, EventTerm, WHOLE_DURATION } from './term';\nimport type { SemanticPointInMeasure } from './timewiseGraph';\nimport { TimewiseGraph } from './timewiseGraph';\nimport { Token, TokenType } from './token';\nimport { distance2D, solveOverlapping } from './utils';\n\nexport const VERSION = 14;\n\ninterface Topology {\n\tclusters: SemanticCluster[];\n}\n\ninterface PaperOptions {\n\traggedLast: boolean;\n\traggedBottom: boolean;\n\traggedLastBottom: boolean;\n}\n\nconst GRAND_STAFF_LAYOUT = '{-}';\n\nconst processStaffContext = (staff: TermStaff, logger: Logger = new DummyLogger()): void => {\n\tconst context = new StaffContext();\n\tcontext.logger = logger;\n\n\tfor (const row of staff.rows) {\n\t\tfor (const measure of row) {\n\t\t\tconst startEvent = measure.terms.find((term) => term instanceof EventTerm) as EventTerm;\n\t\t\tlet tick = startEvent ? Math.min(startEvent.tick, 0) : 0;\n\n\t\t\tmeasure.terms.forEach((term) => {\n\t\t\t\tif (term instanceof ContextedTerm) {\n\t\t\t\t\tterm.tick = tick; // TODO: not working here because measure not regulated yet\n\t\t\t\t\tcontext.change(term);\n\t\t\t\t} else if (term instanceof EventTerm) {\n\t\t\t\t\tconst endTick = term.tick + (term.duration || 0);\n\t\t\t\t\tif (endTick > tick) tick = endTick;\n\n\t\t\t\t\tif (term.ys) {\n\t\t\t\t\t\tterm.pitches = term.ys.map((y) => {\n\t\t\t\t\t\t\tconst note = context.yToNote(y);\n\t\t\t\t\t\t\tconst alter = context.alterOnNote(note);\n\n\t\t\t\t\t\t\treturn { note, alter, octaveShift: context.octaveShift };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeasure.timeSignature = { ...context.timeSignature };\n\t\t\tmeasure.timeSigNumeric = context.timeSigNumeric;\n\t\t\tmeasure.doubtfulTimesig =\n\t\t\t\tcontext.doubtingTimesig ||\n\t\t\t\t!Number.isInteger(Math.log2(measure.timeSignature.denominator)) ||\n\t\t\t\tmeasure.timeSignature.numerator <= measure.timeSignature.denominator / 4;\n\n\t\t\tmeasure.keySignature = context.keySignature;\n\n\t\t\t// fill empty measure duration\n\t\t\tif (measure.duration === 0) measure.duration = (WHOLE_DURATION * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\n\t\t\tcontext.resetMeasure();\n\t\t}\n\n\t\tcontext.resetSystem();\n\t}\n};\n\nconst upgradeScoreData = (data: ScoreData): ScoreData => {\n\tif (data.version < 3) {\n\t\tconst { version, stavesCount, layoutTemplate, ...fields } = data;\n\t\tvoid version;\n\t\tvoid layoutTemplate;\n\n\t\tlet staffLayoutCode =\n\t\t\tstavesCount > 1\n\t\t\t\t? Array(stavesCount - 1)\n\t\t\t\t\t\t.fill(',')\n\t\t\t\t\t\t.join('')\n\t\t\t\t: '';\n\n\t\t// use graph staff by default for 2 staves score\n\t\tif (stavesCount === 2) staffLayoutCode = '{-}';\n\n\t\tdata = {\n\t\t\tversion: 3,\n\t\t\tstaffLayoutCode,\n\t\t\t...fields,\n\t\t};\n\t}\n\n\tif (data.version < 8) {\n\t\t// upgrade system measure bar semantics\n\t\tdata.pages.forEach((page) => {\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tif (system.semantics) {\n\t\t\t\t\tconst bars = system.semantics.filter((point) => point.semantic === SemanticType.vline_BarMeasure);\n\n\t\t\t\t\tsystem.semantics = [].concat(\n\t\t\t\t\t\t...system.staves.map((staff) => {\n\t\t\t\t\t\t\tconst oy = staff.top + staff.staffY;\n\n\t\t\t\t\t\t\treturn bars.map((point) => ({\n\t\t\t\t\t\t\t\t...point,\n\t\t\t\t\t\t\t\ty: point.y + oy,\n\t\t\t\t\t\t\t\textension: {\n\t\t\t\t\t\t\t\t\t...point.extension,\n\t\t\t\t\t\t\t\t\ty1: point.extension.y1 + oy,\n\t\t\t\t\t\t\t\t\ty2: point.extension.y2 + oy,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tdata.version = 8;\n\t}\n\n\tif (data.version < 9) {\n\t\t// remove old format spartito\n\t\tdata.spartito = null;\n\n\t\tdata.version = 9;\n\t}\n\n\treturn data;\n};\n\nconst bitsToMask = (bits: number[]): number => bits.reduce((mask, bit, i) => (bit ? mask | (1 << i) : mask), 0);\n\ninterface PointPosition {\n\tpoint: SemanticPoint;\n\tpageIndex: number;\n\tsystemIndex: number;\n\tstaffIndex: number;\n}\n\ninterface MeasureValidation {\n\ttickMap: { [tick: number]: number };\n}\n\ninterface Size {\n\twidth: number;\n\theight: number;\n}\n\nclass Score extends SimpleClass {\n\tstatic className = 'Score';\n\n\tversion = VERSION;\n\n\ttitle: string;\n\t// in pixels\n\tpageSize: Size;\n\tunitSize: number;\n\tstaffLayoutCode: string;\n\n\tpaperOptions?: Partial;\n\n\theaders: { [key: string]: string };\n\n\ttextAnnotations: { [id: string]: string };\n\n\ttags?: string[];\n\n\tinstrumentDict: { [key: string]: string };\n\n\tpages: Page[];\n\ttopology: Topology;\n\tspartito?: Spartito;\n\n\tpatches?: PatchMeasure[];\n\n\tsettings: RecognitionSettings;\n\n\tconstructor(data: ScoreData) {\n\t\tsuper();\n\t\tsuper.assign(upgradeScoreData(data));\n\n\t\tthis.pages = this.pages || [];\n\t\tthis.headers = this.headers || {};\n\t\tthis.instrumentDict = this.instrumentDict || {};\n\n\t\tthis.pageSize = this.pageSize || {\n\t\t\t// A4 paper\n\t\t\twidth: 794,\n\t\t\theight: 1122,\n\t\t};\n\n\t\tthis.unitSize = this.unitSize || null;\n\n\t\tthis.staffLayoutCode = this.staffLayoutCode || (this.maxStavesCount === 2 ? GRAND_STAFF_LAYOUT : Array(this.maxStavesCount).fill('').join(','));\n\t}\n\n\tget systems(): System[] {\n\t\treturn [].concat(...this.pages.map((page) => page.systems));\n\t}\n\n\tget measureCount(): number {\n\t\treturn this.systems.reduce((sum, system) => sum + (system.measureCount || 0), 0);\n\t}\n\n\tget imageKeys(): string[] {\n\t\treturn [\n\t\t\t...this.pages.map((page) => page.source?.url),\n\t\t\t...this.systems.map((system) => system.backgroundImage),\n\t\t\t...[].concat(\n\t\t\t\t...this.systems.map((system) =>\n\t\t\t\t\t[...system.staves.map((staff) => staff.backgroundImage), ...system.staves.map((staff) => staff.maskImage)].filter(Boolean)\n\t\t\t\t)\n\t\t\t),\n\t\t].filter(Boolean);\n\t}\n\n\tget breakSystemIndices(): number[] {\n\t\tconst indices = [];\n\t\tlet systemCount = 0;\n\t\tthis.pages.forEach((page, i) => {\n\t\t\tif (i < this.pages.length - 1) {\n\t\t\t\tsystemCount += page.systems.length;\n\t\t\t\tindices.push(systemCount - 1);\n\t\t\t}\n\t\t});\n\n\t\treturn indices;\n\t}\n\n\tget staffLayout(): staffLayout.StaffLayout {\n\t\treturn staffLayout.parseCode(this.staffLayoutCode);\n\t}\n\n\tget measureLayoutCode(): string {\n\t\treturn this.spartito?.measureLayoutCode;\n\t}\n\n\tget maxStavesCount(): number {\n\t\treturn Math.max(...this.systems.map((system) => system.staves.length), 0);\n\t}\n\n\tget sidBlackList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidBlackList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget sidWhiteList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidWhiteList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget semanticHash(): string {\n\t\tconst ids = [].concat(\n\t\t\t...this.systems.map((system) =>\n\t\t\t\t[].concat(...system.staves.map((staff) => (staff.semantics ? system.qualifiedSemantics(staff.semantics).map((s) => s.id) : [])))\n\t\t\t)\n\t\t);\n\t\treturn sha1(ids.join(''));\n\t}\n\n\teventSystemsToTermStaves(eventSystems: EventSystem[], logger: Logger = new DummyLogger()): TermStaff[] {\n\t\t// [staff]\n\t\tconst termStaves: TermStaff[] = Array(this.maxStavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, staffIndex): TermStaff => {\n\t\t\t\treturn {\n\t\t\t\t\t// [system, measure]\n\t\t\t\t\trows: eventSystems.map((sys, i) =>\n\t\t\t\t\t\tsys.columns.map((column, ii): TermMeasure => {\n\t\t\t\t\t\t\tconst measure = column.rows[staffIndex];\n\t\t\t\t\t\t\tconsole.assert(measure, '[eventSystemsToTermStaves] measure is null:', staffIndex, column.rows);\n\n\t\t\t\t\t\t\tconst contexts = measure.contexts;\n\n\t\t\t\t\t\t\t// prepend octave shift 0 at begin of every system\n\t\t\t\t\t\t\tif (ii === 0) {\n\t\t\t\t\t\t\t\tif (!contexts.some((term) => term.type === ContextType.OctaveShift)) {\n\t\t\t\t\t\t\t\t\tcontexts.unshift(\n\t\t\t\t\t\t\t\t\t\tnew ContextedTerm({\n\t\t\t\t\t\t\t\t\t\t\tstaff: staffIndex,\n\t\t\t\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\t\t\t\t\ttokenType: TokenType.OctaveShift0,\n\t\t\t\t\t\t\t\t\t\t\ttick: 0,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst terms = [...(measure.events || []), ...contexts].sort((t1, t2) => t1.x - t2.x);\n\n\t\t\t\t\t\t\tconst pageBreak = staffIndex === 0 && ii === sys.columns.length - 1 && this.breakSystemIndices.includes(i);\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tterms,\n\t\t\t\t\t\t\t\t//xToTick: column.xToTick,\n\t\t\t\t\t\t\t\tduration: column.duration,\n\t\t\t\t\t\t\t\tpageBreak,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t});\n\t\ttermStaves.forEach((staff) => processStaffContext(staff, logger));\n\n\t\treturn termStaves;\n\t}\n\n\tresetPageLayout(parameters: { unitSize?: number; pageSize?: Size }) {\n\t\tconst { unitSize = this.unitSize, pageSize = this.pageSize } = parameters;\n\n\t\tconst newCenter = {\n\t\t\tx: (pageSize.width * 0.5) / unitSize,\n\t\t\ty: (pageSize.height * 0.5) / unitSize,\n\t\t};\n\n\t\tthis.pages.forEach((page) => {\n\t\t\tconst offsetX = newCenter.x - page.width / 2;\n\t\t\tconst offsetY = newCenter.y - page.height / 2;\n\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tsystem.left += offsetX;\n\t\t\t\tsystem.top += offsetY;\n\t\t\t});\n\n\t\t\tif (page.semantics) {\n\t\t\t\tpage.semantics.forEach((point) => {\n\t\t\t\t\tpoint.x += offsetX;\n\t\t\t\t\tpoint.y += offsetY;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tpage.width = pageSize.width / unitSize;\n\t\t\tpage.height = pageSize.height / unitSize;\n\n\t\t\tpage.assemble({ textAnnotations: this.textAnnotations });\n\t\t});\n\n\t\tthis.unitSize = unitSize;\n\t\tthis.pageSize = pageSize;\n\t}\n\n\tgetMeasure(measureIndex: number): {\n\t\tmeasureIndex: number;\n\t\tsystem: System;\n\t\tlocalIndex: number;\n\t\tleft: number;\n\t\tright: number;\n\t\tmeasures: Measure[];\n\t} {\n\t\tlet index = measureIndex;\n\t\tfor (const system of this.systems) {\n\t\t\tif (index < system.measureCount) {\n\t\t\t\tconst staff = system.staves[0];\n\t\t\t\tconst measure = staff.measures[index];\n\t\t\t\tconsole.assert(measure, 'measure is null:', system.measureCount, index, staff.measures);\n\t\t\t\tconst measures = system.getStaffArray(this.maxStavesCount).map((staff) => staff && staff.measures[index]);\n\n\t\t\t\treturn {\n\t\t\t\t\tmeasureIndex,\n\t\t\t\t\tsystem,\n\t\t\t\t\tlocalIndex: index,\n\t\t\t\t\tleft: measure.left,\n\t\t\t\t\tright: measure.right,\n\t\t\t\t\tmeasures,\n\t\t\t\t};\n\t\t\t}\n\t\t\tindex -= system.measureCount;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetRawCluster(measureIndex: number, threshold: number, { timeSignature }: Partial = {}): SemanticCluster {\n\t\tconst position = this.getMeasure(measureIndex);\n\t\tif (!position) return null;\n\n\t\tconst { system, left, right } = position;\n\t\t//console.log(\"measure:\", system, left, right);\n\n\t\tconst elements: SemanticElement[] = [BOS_ELEMENT];\n\n\t\tif (timeSignature) elements.push(...fractionToElems(timeSignature));\n\n\t\tconst systemY0 = system.staves[0].top + system.staves[0].staffY - 2;\n\n\t\tsystem.staves.forEach((staff) => {\n\t\t\tlet points = system.qualifiedSemantics(staff.semantics, threshold).filter((point) => point.x > left && point.x < right);\n\t\t\tpoints = solveOverlapping(points);\n\n\t\t\t// exlude tempo noteheads\n\t\t\tconst tempoNhs = points.filter((point) => point.semantic === SemanticType.TempoNotehead);\n\t\t\ttempoNhs.forEach((tempoNh) => {\n\t\t\t\tconst index = points.findIndex((point) => /^Notehead/.test(point.semantic) && distance2D(tempoNh, point) < 0.3);\n\t\t\t\tif (index >= 0) points.splice(index, 1);\n\t\t\t});\n\n\t\t\tconst y0 = staff.top + staff.staffY - systemY0;\n\n\t\t\tpoints.forEach((point) => {\n\t\t\t\tconst type = SemanticElementType[point.semantic];\n\t\t\t\tif (type) {\n\t\t\t\t\tlet y1 = point.y;\n\t\t\t\t\tlet y2 = point.y;\n\t\t\t\t\tif (type === SemanticElementType.vline_Stem) {\n\t\t\t\t\t\ty1 = point.extension.y1;\n\t\t\t\t\t\ty2 = point.extension.y2;\n\t\t\t\t\t}\n\n\t\t\t\t\telements.push({\n\t\t\t\t\t\tid: point.id,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tstaff: staff.index,\n\t\t\t\t\t\tx: point.x - left,\n\t\t\t\t\t\ty1: y1 + y0,\n\t\t\t\t\t\ty2: y2 + y0,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn new SemanticCluster({\n\t\t\tindex: measureIndex,\n\t\t\telements,\n\t\t});\n\t}\n\n\tgetRawClusters(threshold: number = 1): SemanticCluster[] {\n\t\t//const times = this.getMeasuresTime();\n\n\t\treturn Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, mi) => this.getRawCluster(mi, threshold /*, times[mi]*/));\n\t}\n\n\tmakeSpartito(logger: Logger = new DummyLogger()): Spartito {\n\t\tlet eventSystems: EventSystem[] = this.systems.map((system) => system.getEvents(this.maxStavesCount));\n\n\t\t/*if (this.topology) {\n\t\t\tconst clusters = this.topology.clusters;\n\n\t\t\t// [measure, staff, event]\n\t\t\tconst eventsColumns: ChordColumn[][][] = clusters\n\t\t\t\t.filter((cluster) => cluster.index < this.measureCount)\n\t\t\t\t.reduce((columns, cluster) => {\n\t\t\t\t\tconst { system, measures } = this.getMeasure(cluster.index);\n\t\t\t\t\tconst events = cluster.getEvents();\n\n\t\t\t\t\tconst systemY0 = system.staves[0].top + system.staves[0].staffY - 2;\n\t\t\t\t\tconst x0 = measures.filter(Boolean)[0].left;\n\n\t\t\t\t\tconst staves = system.getStaffArray(this.maxStavesCount);\n\n\t\t\t\t\t// translate by staff & measure relative offset\n\t\t\t\t\tevents.forEach((event) => {\n\t\t\t\t\t\tconst staff = staves[event.staff];\n\t\t\t\t\t\tconst y0 = staff.top + staff.staffY - systemY0;\n\t\t\t\t\t\tevent.ys = event.ys.map((y) => roundNumber(y - y0, 0.5));\n\n\t\t\t\t\t\tevent.left += x0;\n\t\t\t\t\t\tevent.right += x0;\n\t\t\t\t\t});\n\n\t\t\t\t\tconst column = measures.map((measure, staffIndex) => {\n\t\t\t\t\t\tif (!measure) return [];\n\n\t\t\t\t\t\t//console.log(\"m:\", mi, \"s:\", staffIndex);\n\t\t\t\t\t\tconst localEvents = events.filter((event) => event.staff === staffIndex);\n\t\t\t\t\t\t//measure.assignModifiersOnEvents(localEvents);\n\t\t\t\t\t\tmeasure.assignAccessoriesOnEvents(localEvents);\n\n\t\t\t\t\t\treturn localEvents;\n\t\t\t\t\t});\n\n\t\t\t\t\tcolumns[cluster.index] = column;\n\n\t\t\t\t\treturn columns;\n\t\t\t\t}, []);\n\n\t\t\tconst breakSystemIndices = this.breakSystemIndices;\n\n\t\t\tconst basicEventSystems = eventSystems;\n\t\t\teventSystems = [];\n\n\t\t\tlet measures = 0;\n\t\t\tfor (const system of this.systems) {\n\t\t\t\tconst esys = system.getEventsFunctional(this.maxStavesCount, (si, mi) => eventsColumns[measures + mi] && eventsColumns[measures + mi][si], [], {\n\t\t\t\t\tuseXMap: false,\n\t\t\t\t});\n\n\t\t\t\tconst basicSys = basicEventSystems[system.index];\n\t\t\t\t//onst nullN = esys.columns.filter(c => !c).length;\n\t\t\t\t//if (nullN)\n\t\t\t\t//\tconsole.log(\"null:\", nullN, esys.columns.length);\n\t\t\t\tesys.columns = esys.columns.map((column, i) => (column ? column : basicSys.columns[i]));\n\n\t\t\t\tconst sysIndex = this.systems.indexOf(system);\n\t\t\t\tconst pageBreak = breakSystemIndices.includes(sysIndex);\n\t\t\t\tconst lastColumn = esys.columns[esys.columns.length - 1];\n\t\t\t\tif (lastColumn) {\n\t\t\t\t\tlastColumn.break = true;\n\t\t\t\t\tlastColumn.pageBreak = pageBreak;\n\t\t\t\t}\n\n\t\t\t\teventSystems.push(esys);\n\t\t\t\tmeasures += system.measureCount;\n\t\t\t}\n\t\t}*/\n\n\t\tconst staves = this.eventSystemsToTermStaves(eventSystems, logger);\n\n\t\t// assign staff basics for columns\n\t\teventSystems.forEach((sys, ri) => {\n\t\t\tsys.columns.forEach((column, mi) => {\n\t\t\t\tcolumn.basics = staves.map((staff) => {\n\t\t\t\t\tconst { timeSignature, timeSigNumeric, keySignature, doubtfulTimesig } = staff.rows[ri][mi];\n\n\t\t\t\t\treturn { timeSignature, timeSigNumeric, keySignature, doubtfulTimesig };\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tconst clusters = null; //this.topology && this.topology.clusters;\n\n\t\tconst measures = [].concat(\n\t\t\t...eventSystems.map((esys) =>\n\t\t\t\tesys.columns.map((column) => {\n\t\t\t\t\tconst measureIndex = column.measureIndex;\n\t\t\t\t\tconst { system, localIndex, left, right } = this.getMeasure(measureIndex);\n\n\t\t\t\t\tconst cluster = clusters && clusters.find((cluster) => cluster.index === measureIndex);\n\n\t\t\t\t\tconst staffYsFull = [];\n\t\t\t\t\tsystem.staves.forEach((staff) => (staffYsFull[staff.index] = staff.top + staff.staffY));\n\n\t\t\t\t\tconst patch = this.patches && this.patches.find((patch) => patch.measureIndex === measureIndex);\n\t\t\t\t\tconst events = patch ? patch.events : SpartitoMeasure.reorderEvents([].concat(...column.rows.map((row) => row.events)), staffYsFull);\n\n\t\t\t\t\tconst barTypes = Object.fromEntries(Object.entries(column.barTypes).map(([k, v]) => [k, v / system.staves.length]));\n\t\t\t\t\tconst indent = localIndex === 0 && system.indent;\n\n\t\t\t\t\treturn new SpartitoMeasure({\n\t\t\t\t\t\tmeasureIndex,\n\t\t\t\t\t\tstaffMask: esys.staffMask,\n\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\tsystemIndex: system.index,\n\t\t\t\t\t\t\tlocalIndex,\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\tright,\n\t\t\t\t\t\t\tstaffYs: system.staves.map((staff) => staff.top + staff.staffY),\n\t\t\t\t\t\t\tstaffYsFull,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t//startX: column.startX,\n\t\t\t\t\t\t//width: column.width,\n\t\t\t\t\t\tduration: patch ? patch.duration : column.duration,\n\t\t\t\t\t\tevents,\n\t\t\t\t\t\tcontexts: column.rows.map((row) => row.contexts),\n\t\t\t\t\t\tmarks: column.marks,\n\t\t\t\t\t\tbreak: column.break,\n\t\t\t\t\t\tpageBreak: column.pageBreak,\n\t\t\t\t\t\tvoltaBegin: column.voltaBegin,\n\t\t\t\t\t\tvoltaEnd: column.voltaEnd,\n\t\t\t\t\t\talternative: column.alternative,\n\t\t\t\t\t\tbarTypes,\n\t\t\t\t\t\tindent,\n\t\t\t\t\t\tbasics: patch ? patch.basics : column.basics,\n\t\t\t\t\t\tmatrixH: cluster && cluster.matrixH,\n\t\t\t\t\t\tmatrixV: cluster && cluster.matrixV,\n\t\t\t\t\t\tvoices: patch ? patch.voices : null,\n\t\t\t\t\t\tpatched: !!patch,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\n\t\tconst staffLayout = this.staffLayout;\n\t\tconst staffGroups = staffLayout.standaloneGroups.map((ids) => ids.map((id) => staffLayout.staffIds.indexOf(id)));\n\n\t\tthis.spartito = new Spartito({\n\t\t\tstavesCount: this.maxStavesCount,\n\t\t\tstaffGroups,\n\t\t\tmeasures,\n\t\t});\n\n\t\treturn this.spartito;\n\t}\n\n\tmakeMusicSheet(): MusicSheet {\n\t\tconst spartito = this.spartito || this.makeSpartito();\n\n\t\tif (!spartito.regulated) console.warn('[makeMusicSheet]\tspartito not regulated.');\n\n\t\tconst voiceStaves = spartito.makeVoiceStaves();\n\n\t\tconst { title, pageSize, unitSize, staffLayout, paperOptions, headers, instrumentDict } = this;\n\t\tconst measureLayout = this.getMeasureLayout();\n\n\t\treturn {\n\t\t\ttitle,\n\t\t\tpageSize,\n\t\t\tunitSize,\n\t\t\tmeasureLayout,\n\t\t\tstaffLayout,\n\t\t\tpaperOptions,\n\t\t\theaders,\n\t\t\tvoiceStaves,\n\t\t\tinstrumentDict,\n\t\t};\n\t}\n\n\tfindPoint(sid: string): PointPosition {\n\t\tfor (const system of this.systems) {\n\t\t\tfor (let si = 0; si < system.staves.length; ++si) {\n\t\t\t\tconst point = system.staves[si].semantics.find((point) => point.id === sid);\n\t\t\t\tif (point) {\n\t\t\t\t\tconst pageIndex = this.pages.findIndex((page) => page.systems.includes(system));\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpoint,\n\t\t\t\t\t\tpageIndex,\n\t\t\t\t\t\tsystemIndex: system.index,\n\t\t\t\t\t\tstaffIndex: si,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetMeasureSemantics(systemIndex: number, localIndex: number): SemanticPointInMeasure[] {\n\t\tconst system = this.systems[systemIndex];\n\t\tif (!system) return null;\n\n\t\tconst left = localIndex ? system.measureBars[localIndex - 1] : 0;\n\t\tconst right = system.measureBars[localIndex] || system.width;\n\n\t\treturn system.staves\n\t\t\t.map((staff, si) => {\n\t\t\t\tconst staffY = staff.top + staff.staffY;\n\t\t\t\treturn staff.semantics\n\t\t\t\t\t.filter((point) => point.x >= left && point.x < right)\n\t\t\t\t\t.map((point) => {\n\t\t\t\t\t\tconst [y1, y2] = Number.isFinite(point.extension?.y1) ? [point.extension.y1, point.extension.y2] : [point.y, point.y];\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...point,\n\t\t\t\t\t\t\tstaff: si,\n\t\t\t\t\t\t\tsy1: y1 + staffY,\n\t\t\t\t\t\t\tsy2: y2 + staffY,\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t.flat(1);\n\t}\n\n\tmakeTimewiseGraph({ store = false }: { store?: boolean } = {}): TimewiseGraph {\n\t\tif (!this.spartito) return null;\n\n\t\tconst measures = this.spartito.measures\n\t\t\t.filter((measure) => measure.events.length > 0)\n\t\t\t.map((measure) => {\n\t\t\t\tconst points = this.getMeasureSemantics(measure.position.systemIndex, measure.position.localIndex);\n\n\t\t\t\tconst graph = {\n\t\t\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\t\t\tleft: measure.position.left,\n\t\t\t\t\tright: measure.position.right,\n\t\t\t\t\tpoints,\n\t\t\t\t};\n\n\t\t\t\tif (store) measure.graph = graph;\n\n\t\t\t\treturn graph;\n\t\t\t});\n\n\t\treturn { measures };\n\t}\n\n\tgetTokenMap(): Map {\n\t\tconst map = new Map();\n\n\t\tthis.systems.forEach((system) =>\n\t\t\tsystem.staves.forEach((staff) => staff.measures.forEach((measure) => measure.tokens.forEach((token) => map.set(token.id, token))))\n\t\t);\n\n\t\treturn map;\n\t}\n\n\tassemble(confidenceThreshold: number = 1, logger: Logger = new DummyLogger()) {\n\t\tconst ids = new Map();\n\n\t\tconst append = (systemIndex, staffIndex, point) => {\n\t\t\tconst id = hashSemanticPoint(systemIndex, staffIndex, point);\n\t\t\tlogger.assert(!ids.has(id), 'semantic point hash conflicted:', id, point, ids.get(id));\n\n\t\t\tids.set(id, point);\n\t\t};\n\n\t\tthis.pages.forEach((page, index) => (page.index = index));\n\n\t\tlet measureIndex = 0;\n\t\tthis.systems.forEach((system, systemIndex) => {\n\t\t\tsystem.index = systemIndex;\n\t\t\tsystem.headMeasureIndex = measureIndex;\n\t\t\tsystem.prev = this.systems[systemIndex - 1] || null;\n\t\t\tsystem.next = this.systems[systemIndex + 1] || null;\n\n\t\t\tif (system.semantics && system.semantics.length) system.semantics.forEach((point) => append(systemIndex, null, point));\n\n\t\t\tsystem.assemble(confidenceThreshold, logger);\n\t\t\tmeasureIndex += system.measureCount;\n\t\t});\n\n\t\tthis.pages.forEach((page, i) => {\n\t\t\tpage.systems.forEach((system) => (system.pageIndex = i));\n\t\t\tpage.assemble({ textAnnotations: this.textAnnotations }, logger);\n\t\t});\n\t}\n\n\tassembleSystem(system: System, confidenceThreshold: number = 1) {\n\t\tthis.systems.forEach((system, si) => (system.index = si));\n\t\tconst systemIndex = system.index;\n\n\t\tif (system.semantics && system.semantics.length) {\n\t\t\tsystem.semantics.forEach((point) => hashSemanticPoint(systemIndex, null, point));\n\t\t\tsystem.assemble(confidenceThreshold);\n\t\t}\n\t}\n\n\tmarkVoices(staves: VoicesStaff[]): void {\n\t\tconst tokenMap = this.getTokenMap();\n\t\tfor (const token of tokenMap.values()) token.voice = 0;\n\n\t\tconst vis = []\n\t\t\t.concat(...staves.map((staff, s) => (staff.voices || []).map((_, v) => [s, v])))\n\t\t\t.sort(([s1, v1], [s2, v2]) => v1 - v2 || s1 - s2)\n\t\t\t.map(([s, v]) => `${s}|${v}`);\n\n\t\tstaves.forEach((staff, si) =>\n\t\t\t(staff.voices || []).forEach((voice, vi) =>\n\t\t\t\tvoice.measures.forEach((measure) => {\n\t\t\t\t\tconst voiceIndex = vis.indexOf(`${si}|${vi}`);\n\n\t\t\t\t\tconst events = Object.values(measure.tickMap).filter((event) => event instanceof EventTerm) as EventTerm[];\n\t\t\t\t\tevents.forEach((event) => {\n\t\t\t\t\t\tconst notes = event.noteIds ? event.noteIds.map((id) => tokenMap.get(id)).filter(Boolean) : [];\n\t\t\t\t\t\tconst accessories = event.accessories ? event.accessories.map((acc) => tokenMap.get(acc.id)).filter(Boolean) : [];\n\t\t\t\t\t\t//console.log(\"notes:\", si, vi, mi, event.noteIds, notes, accessories);\n\n\t\t\t\t\t\t[...notes, ...accessories].forEach((token) => (token.voice |= 1 << voiceIndex));\n\n\t\t\t\t\t\tif (event.timeWarp) notes.forEach((note) => (note.timeWarped = true));\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\t}\n\n\tasync replaceImageKeys(proc: (x: string | Buffer) => Promise): Promise {\n\t\tawait Promise.all([\n\t\t\t...(this.pages.map(async (page) => {\n\t\t\t\tif (page.source) page.source.url = await proc(page.source.url);\n\t\t\t}) as Promise[]),\n\t\t\t...this.systems.map((system) =>\n\t\t\t\tPromise.all([\n\t\t\t\t\tproc(system.backgroundImage).then((key) => (system.backgroundImage = key)),\n\t\t\t\t\t...(system.staves.map(async (staff) => {\n\t\t\t\t\t\tstaff.backgroundImage = await proc(staff.backgroundImage);\n\t\t\t\t\t\tstaff.maskImage = await proc(staff.maskImage);\n\t\t\t\t\t}) as Promise[]),\n\t\t\t\t])\n\t\t\t),\n\t\t]);\n\t}\n\n\tinferenceStaffLayout(): void {\n\t\t// inference the complete layout\n\t\tconst staffTotal = Math.max(...this.systems.map((system) => system.staves.length), 0);\n\t\tthis.staffLayoutCode = Array(staffTotal).fill('').join(',');\n\n\t\tconst completeSystems = this.systems.filter((system) => system.staves.length === staffTotal && system.bracketsAppearance);\n\t\tif (!completeSystems.length) return; // no enough evidence\n\n\t\tconst candidateCodes = completeSystems\n\t\t\t.map((system) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst layout = staffLayout.parseCode(system.bracketsAppearance);\n\t\t\t\t\tif (layout.staffIds.length !== system.staves.length) return null;\n\n\t\t\t\t\treturn system.bracketsAppearance;\n\t\t\t\t} catch (_) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t\tif (!candidateCodes.length) return; // no valid layout\n\n\t\tconst codeCounting = candidateCodes.reduce((acc, code) => {\n\t\t\tconst count = acc[code] || 0;\n\t\t\tacc[code] = count + 1;\n\t\t\treturn acc;\n\t\t}, {} as { [code: string]: number });\n\t\tconst maxCount = Math.max(...Object.values(codeCounting));\n\t\tconst code = Object.entries(codeCounting).find(([_, count]) => count === maxCount)[0];\n\n\t\t// added connection lines between braces {-}\n\t\tconst connectedCode = code.replace(/\\{,*\\}/g, (match) => match.replace(/,/g, '-'));\n\t\tconst layout = staffLayout.parseCode(connectedCode);\n\n\t\tthis.staffLayoutCode = connectedCode;\n\t\t//console.log(\"complete code:\", code);\n\n\t\t// inference systems' mask\n\t\tlet lastSys: System = null;\n\t\tfor (const system of this.systems) {\n\t\t\tif (lastSys && system.staves.length === lastSys.staves.length && system.bracketsAppearance === lastSys.bracketsAppearance) {\n\t\t\t\tsystem.staffMaskChanged = null;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (system.staves.length < staffTotal && system.bracketsAppearance) {\n\t\t\t\t// validate the system brackets code\n\t\t\t\ttry {\n\t\t\t\t\tif (!staffLayout.parseCode(system.bracketsAppearance)) continue;\n\t\t\t\t} catch (_) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst search = (bits: (0 | 1)[]): number => {\n\t\t\t\t\tif (bits.length > layout.staffIds.length) return null;\n\n\t\t\t\t\tif (bits.reduce((sum, bit) => sum + bit, 0) === system.staves.length) return bitsToMask(bits);\n\n\t\t\t\t\tfor (const bit of [1, 0]) {\n\t\t\t\t\t\tconst bb = [...bits, bit] as (0 | 1)[];\n\t\t\t\t\t\tconst code1 = layout.partialMaskCode(bb);\n\t\t\t\t\t\tif (code1 === system.bracketsAppearance) return bitsToMask(bb);\n\t\t\t\t\t\telse if (system.bracketsAppearance.startsWith(code1)) {\n\t\t\t\t\t\t\tconst result = search(bb);\n\t\t\t\t\t\t\tif (result) return result;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t\tconst mask = search([]);\n\t\t\t\t//console.log(\"mask:\", system.bracketsAppearance, mask.toString(2));\n\n\t\t\t\tsystem.staffMaskChanged = !lastSys || mask !== lastSys.staffMask ? mask : null;\n\t\t\t}\n\n\t\t\tlastSys = system;\n\t\t}\n\t}\n\n\tassignBackgroundForMeasure(measure: SpartitoMeasure): void {\n\t\tmeasure.backgroundImages = [];\n\n\t\tconst system = this.systems[measure.position.systemIndex];\n\t\tif (system.backgroundImage) {\n\t\t\tmeasure.backgroundImages.push({\n\t\t\t\turl: system.backgroundImage,\n\t\t\t\tposition: system.imagePosition,\n\t\t\t\toriginal: true,\n\t\t\t});\n\t\t}\n\n\t\tsystem.staves.forEach((staff) => {\n\t\t\tif (!system.backgroundImage && staff.backgroundImage)\n\t\t\t\tmeasure.backgroundImages.push({\n\t\t\t\t\turl: staff.backgroundImage.toString(),\n\t\t\t\t\tposition: {\n\t\t\t\t\t\t...staff.imagePosition,\n\t\t\t\t\t\ty: staff.imagePosition.y + staff.top,\n\t\t\t\t\t},\n\t\t\t\t\toriginal: true,\n\t\t\t\t});\n\n\t\t\tif (staff.maskImage) {\n\t\t\t\tmeasure.backgroundImages.push({\n\t\t\t\t\turl: staff.maskImage.toString(),\n\t\t\t\t\tposition: {\n\t\t\t\t\t\t...staff.imagePosition,\n\t\t\t\t\t\ty: staff.imagePosition.y + staff.top,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tblackoutFakeNotes(scope: 'patched' | 'perfect' | 'all' = 'patched'): string[] {\n\t\tif (!this.spartito) return;\n\n\t\tlet inScope = (_) => true;\n\t\tswitch (scope) {\n\t\t\tcase 'patched':\n\t\t\t\tinScope = (measure) => measure.patched;\n\t\t\t\tbreak;\n\t\t\tcase 'perfect':\n\t\t\t\tinScope = (measure) => measure.patched || (measure.regulated && evaluateMeasure(measure).perfect);\n\t\t\t\tbreak;\n\t\t}\n\t\tconst measures = this.spartito.measures.filter(inScope);\n\n\t\tconst fakeIds = measures.reduce((ids, measure) => {\n\t\t\tif (!measure.regulated) return;\n\n\t\t\tconst voicedIds = measure.voices.flat(1);\n\t\t\tconst fakeChords = measure.events.filter((event) => !event.rest && !event.grace && !voicedIds.includes(event.id));\n\n\t\t\tfakeChords.forEach((event) => event.noteIds && ids.push(...event.noteIds));\n\n\t\t\treturn ids;\n\t\t}, [] as string[]);\n\t\tconst fakeIdSet = new Set(fakeIds);\n\n\t\tthis.systems.forEach((system) =>\n\t\t\tsystem.staves.forEach((staff) => {\n\t\t\t\tconst blackIds = staff.semantics.filter((point) => fakeIdSet.has(point.id)).map((point) => point.id);\n\t\t\t\tsystem.sidBlackList.push(...blackIds);\n\t\t\t})\n\t\t);\n\n\t\treturn fakeIds;\n\t}\n\n\tgetMeasureLayout(): measureLayout.MeasureLayout {\n\t\tconst code = this.spartito && this.spartito.measureLayoutCode;\n\t\tif (code) {\n\t\t\ttry {\n\t\t\t\treturn measureLayout.parseCode(code);\n\t\t\t} catch (err) {\n\t\t\t\tconsole.debug('invalid measure layout code:', err);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t*splitToSingleScoresGen(): Generator {\n\t\tthis.assemble();\n\t\tconst startSysIndices = this.systems.filter((system) => system.index > 0 && system.indent && system.timeSignatureOnHead).map((system) => system.index);\n\n\t\tif (!startSysIndices.length) {\n\t\t\tyield this.deepCopy();\n\t\t\treturn;\n\t\t}\n\n\t\tconst templateScore = new Score({ ...this, pages: [], topology: undefined, spartito: undefined, patches: undefined });\n\n\t\t// clear temporary objects before deep dopy\n\t\tthis.pages.forEach((page) => {\n\t\t\tdelete page.tokens;\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tdelete system.tokens;\n\t\t\t\tsystem.staves.forEach((staff) => {\n\t\t\t\t\tstaff.measures = [];\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tlet startSysIndex = 0;\n\t\tfor (const endSysIndex of [...startSysIndices, this.systems.length]) {\n\t\t\tconst sysInRange = (system) => system.index >= startSysIndex && system.index < endSysIndex;\n\t\t\tconst pages = this.pages\n\t\t\t\t.filter((page) => page.systems.some(sysInRange))\n\t\t\t\t.map((page) => {\n\t\t\t\t\tconst { systems, ...fields } = page;\n\t\t\t\t\treturn new Page({ ...fields, systems: systems.filter(sysInRange).map((system) => new System({ ...system })) });\n\t\t\t\t});\n\n\t\t\tconst newScore = templateScore.deepCopy();\n\t\t\tnewScore.headers.SubScoreSystem = `${startSysIndex}-${endSysIndex - 1}`;\n\t\t\tnewScore.headers.SubScorePage = `${pages[0].index}-${pages[pages.length - 1].index}`;\n\n\t\t\t//newScore.pages = pages.map((page) => page.deepCopy());\n\t\t\tnewScore.pages = pages;\n\t\t\tnewScore.assemble();\n\t\t\tnewScore.inferenceStaffLayout();\n\n\t\t\tstartSysIndex = endSysIndex;\n\n\t\t\tyield newScore;\n\t\t}\n\t}\n\n\tsplitToSingleScores(): Score[] {\n\t\treturn [...this.splitToSingleScoresGen()];\n\t}\n}\n\nexport { PaperOptions, Score, Page, System, Staff, Measure, MeasureValidation };\nexport type { SemanticPointInMeasure };\n","import type { MeasureLayout } from './measureLayout';\nimport * as measureLayout from './measureLayout';\nimport grammar from './grammar.jison';\nimport { recoverJSON } from '../starry/aux_/typedJSON';\n\nconst parseCode = (code: string): MeasureLayout => {\n\tconst raw = grammar.parse(code);\n\n\tif (raw?.data) return recoverJSON(raw.data, measureLayout);\n\n\treturn null;\n};\n\nexport { parseCode };\n","import { MIDI } from '@k-l-lambda/music-widgets';\n\nimport { Fraction } from './interfaces';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { ArpeggioStyle, EventTerm, GraceType, RestType, StemBeam, TermPitch, TremoloLink } from './term';\nimport { noteToPitch } from './utils';\n\n// NOTE: 'JSONEditor.onEditable' determine whether a field is editable, here 'readonly' modifier has no effect to UI\n\ninterface EventUIAgent {\n\treadonly id: number;\n\treadonly duration: number;\n\n\t//ys: number[];\n\tpitches: TermPitch[];\n\trest: RestType;\n\tdivision: number;\n\tdots: number;\n\tstemDirection: string;\n\ttying: boolean;\n\ttied: boolean;\n\tgrace: boolean; //\n\tbeam: StemBeam;\n\ttimeWarp: string; //\n\ttremolo: number;\n\ttremoloLink: TremoloLink;\n\tglissando: boolean;\n\tarpeggioStyle: ArpeggioStyle;\n\ttick: number;\n}\n\ninterface MeasureUIAgent {\n\treadonly measureIndex: number;\n\ttimeSignature: Fraction;\n\tdoubtfulTimesig: boolean;\n\tkeySignature: number;\n\t//readonly events: EventUIAgent[];\n\tduration: number;\n\treadonly voices: number[][];\n}\n\nclass EditableEvent extends EventTerm {\n\tvoice: number;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\t}\n\n\tget agent(): EventUIAgent {\n\t\treturn new Proxy(this as any, {\n\t\t\tget(target, key): any {\n\t\t\t\tconst self = target as any as EditableEvent;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'id':\n\t\t\t\t\tcase 'tick':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\tcase 'rest':\n\t\t\t\t\tcase 'division':\n\t\t\t\t\tcase 'dots':\n\t\t\t\t\tcase 'stemDirection':\n\t\t\t\t\tcase 'beam':\n\t\t\t\t\tcase 'tremolo':\n\t\t\t\t\tcase 'tremoloLink':\n\t\t\t\t\tcase 'arpeggioStyle': {\n\t\t\t\t\t\tconst value = self[key];\n\t\t\t\t\t\treturn value === undefined ? null : value;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'tying':\n\t\t\t\t\tcase 'tied':\n\t\t\t\t\tcase 'glissando': {\n\t\t\t\t\t\tconst value = self[key];\n\t\t\t\t\t\treturn value === undefined ? false : value;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'grace':\n\t\t\t\t\t\treturn !!self.grace;\n\n\t\t\t\t\tcase 'timeWarp':\n\t\t\t\t\t\treturn self.timeWarp ? `${self.timeWarp.numerator}/${self.timeWarp.denominator}` : null;\n\n\t\t\t\t\tcase 'multiplier':\n\t\t\t\t\t\treturn self.multiplier ? `${self.multiplier.numerator}/${self.multiplier.denominator}` : null;\n\n\t\t\t\t\tcase 'pitches':\n\t\t\t\t\t\treturn self.pitches;\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t},\n\n\t\t\tset: (target, key, value): boolean => {\n\t\t\t\tconst self = target as any as EditableEvent;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'tick':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\tcase 'rest':\n\t\t\t\t\tcase 'division':\n\t\t\t\t\tcase 'dots':\n\t\t\t\t\tcase 'stemDirection':\n\t\t\t\t\tcase 'tying':\n\t\t\t\t\tcase 'tied':\n\t\t\t\t\tcase 'beam':\n\t\t\t\t\tcase 'tremolo':\n\t\t\t\t\tcase 'tremoloLink':\n\t\t\t\t\tcase 'glissando':\n\t\t\t\t\tcase 'arpeggioStyle':\n\t\t\t\t\t\t(self as any)[key] = value;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'grace':\n\t\t\t\t\t\tself.grace = value ? GraceType.Grace : null;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'timeWarp':\n\t\t\t\t\t\tself.timeWarp = null;\n\t\t\t\t\t\tif (value && typeof value === 'string') {\n\t\t\t\t\t\t\tconst captures = value.match(/^(\\d+)\\/(\\d+)/);\n\t\t\t\t\t\t\tif (captures) {\n\t\t\t\t\t\t\t\tself.timeWarp = {\n\t\t\t\t\t\t\t\t\tnumerator: parseInt(captures[1]),\n\t\t\t\t\t\t\t\t\tdenominator: parseInt(captures[2]),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'multiplier':\n\t\t\t\t\t\tself.multiplier = null;\n\t\t\t\t\t\tif (value && typeof value === 'string') {\n\t\t\t\t\t\t\tconst captures = value.match(/^(\\d+)\\/(\\d+)/);\n\t\t\t\t\t\t\tif (captures) {\n\t\t\t\t\t\t\t\tself.multiplier = {\n\t\t\t\t\t\t\t\t\tnumerator: parseInt(captures[1]),\n\t\t\t\t\t\t\t\t\tdenominator: parseInt(captures[2]),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'id':\n\t\t\t\t\tcase 'pitches':\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\townKeys: (): string[] => [\n\t\t\t\t'id',\n\t\t\t\t'duration',\n\t\t\t\t'rest',\n\t\t\t\t'division',\n\t\t\t\t'dots',\n\t\t\t\t'stemDirection',\n\t\t\t\t'tying',\n\t\t\t\t'tied',\n\t\t\t\t'beam',\n\t\t\t\t'timeWarp',\n\t\t\t\t'multiplier',\n\t\t\t\t'tremolo',\n\t\t\t\t'tremoloLink',\n\t\t\t\t'glissando',\n\t\t\t\t'arpeggioStyle',\n\t\t\t\t'tick',\n\t\t\t\t'grace',\n\t\t\t\t'pitches',\n\t\t\t],\n\n\t\t\tgetOwnPropertyDescriptor() {\n\t\t\t\treturn { enumerable: true, configurable: true };\n\t\t\t},\n\t\t});\n\t}\n}\n\nclass EditableMeasure extends SpartitoMeasure {\n\tstatic className = 'EditableMeasure';\n\tstatic blackKeys = [];\n\n\tevents: EditableEvent[] = null;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\n\t\tthis.events = data.events;\n\t\tif (this.events?.some((event) => !(event instanceof EditableEvent))) this.events = this.events.map((event) => new EditableEvent(event));\n\n\t\tif (this.voices) this.syncVoiceToEvents();\n\t}\n\n\tsyncVoiceToEvents(): void {\n\t\tthis.events.forEach((event) => (event.voice = -1));\n\t\tthis.voices.forEach((voice, voiceIndex) => {\n\t\t\tvoice.forEach((id) => {\n\t\t\t\tconst event = this.events.find((event) => event.id === id);\n\t\t\t\tif (event) event.voice = voiceIndex;\n\t\t\t\telse console.warn('no event with id:', id, this.events.length);\n\t\t\t});\n\t\t});\n\t}\n\n\tsyncVoiceFromEvents(): void {\n\t\tconst voices: EditableEvent[][] = [];\n\t\tthis.events.forEach((event) => {\n\t\t\tif (event?.voice >= 0) {\n\t\t\t\tvoices[event.voice] = voices[event.voice] || [];\n\t\t\t\tvoices[event.voice].push(event);\n\t\t\t}\n\t\t});\n\n\t\tvoices.forEach((voice) => voice.sort((e1, e2) => e1.tick - e2.tick));\n\n\t\tthis.voices = voices.map((voice) => voice.map((event) => event.id));\n\t}\n\n\tget agent(): MeasureUIAgent {\n\t\treturn new Proxy(this as any, {\n\t\t\tget: (target, key): any => {\n\t\t\t\tconst self = target as any as EditableMeasure;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'measureIndex':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\t\treturn self[key];\n\n\t\t\t\t\tcase 'voices':\n\t\t\t\t\t\treturn self.voices?.map((voice) => voice.join(',')) || null;\n\n\t\t\t\t\tcase 'timeSignature':\n\t\t\t\t\tcase 'keySignature':\n\t\t\t\t\tcase 'doubtfulTimesig':\n\t\t\t\t\t\treturn self.basics[0][key];\n\t\t\t\t\t//case 'events':\n\t\t\t\t\t//\treturn self.events.map(eventUIAgent);\n\t\t\t\t\tcase 'toJSON':\n\t\t\t\t\t\treturn () => ({\n\t\t\t\t\t\t\tmeasureIndex: self.measureIndex,\n\t\t\t\t\t\t\tvoices: self.voices,\n\t\t\t\t\t\t\tduration: self.duration,\n\t\t\t\t\t\t\ttimeSignature: self.basics[0].timeSignature,\n\t\t\t\t\t\t\tkeySignature: self.basics[0].keySignature,\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t},\n\n\t\t\tset: (target, key, value): boolean => {\n\t\t\t\t//console.log('set:', key, value);\n\t\t\t\tconst self = target as any as EditableMeasure;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'timeSignature':\n\t\t\t\t\tcase 'keySignature':\n\t\t\t\t\tcase 'doubtfulTimesig':\n\t\t\t\t\t\t(self.basics[0][key] as any) = value;\n\t\t\t\t\t\tself.basics = self.basics.map(() => self.basics[0]);\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\t\tself.duration = value;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'measureIndex':\n\t\t\t\t\tcase 'voices':\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\townKeys: (): string[] => ['measureIndex', 'timeSignature', 'doubtfulTimesig', 'keySignature', 'duration', 'voices'],\n\n\t\t\tgetOwnPropertyDescriptor() {\n\t\t\t\treturn { enumerable: true, configurable: true };\n\t\t\t},\n\t\t});\n\t}\n\n\tmakeMIDI(bpm: number = 120): MIDI.MidiData {\n\t\tif (!this.regulated) return null;\n\n\t\tconst microsecondsPerBeat = 60e6 / bpm;\n\n\t\tconst header = { formatType: 0, ticksPerBeat: 480 };\n\t\tconst tracks = this.voices.map((ids, vi) => {\n\t\t\tconst events = ids\n\t\t\t\t.map((id) => {\n\t\t\t\t\tconst event = this.events.find((event) => event.id === id);\n\t\t\t\t\tif (event) {\n\t\t\t\t\t\tconst subEvents = event.graceIds ? event.graceIds.map((id) => this.events.find((event) => event.id === id)) : [];\n\n\t\t\t\t\t\treturn [...subEvents, event];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [];\n\t\t\t\t})\n\t\t\t\t.flat(1);\n\n\t\t\tconst startTime = 0;\n\n\t\t\ttype Event = MIDI.MidiEvent & { [key: string]: any };\n\t\t\tconst midiEvents: Event[] = events\n\t\t\t\t.filter((event) => !event.rest && Number.isFinite(event.tick) && event.tick >= 0 && Number.isFinite(event.duration))\n\t\t\t\t.map((event) =>\n\t\t\t\t\tevent.pitches.map((pitch) => [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: event.id,\n\t\t\t\t\t\t\ttime: event.tick,\n\t\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\t\tsubtype: 'noteOn',\n\t\t\t\t\t\t\tchannel: event.staff,\n\t\t\t\t\t\t\tnoteNumber: noteToPitch(pitch),\n\t\t\t\t\t\t\tvelocity: 96,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: event.id,\n\t\t\t\t\t\t\ttime: event.tick + event.duration,\n\t\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\t\tsubtype: 'noteOff',\n\t\t\t\t\t\t\tchannel: event.staff,\n\t\t\t\t\t\t\tnoteNumber: noteToPitch(pitch),\n\t\t\t\t\t\t},\n\t\t\t\t\t])\n\t\t\t\t)\n\t\t\t\t.flat(2);\n\n\t\t\tmidiEvents.sort(function (e1, e2) {\n\t\t\t\treturn e1.time - e2.time;\n\t\t\t});\n\n\t\t\tif (vi === 0) {\n\t\t\t\tmidiEvents.unshift(\n\t\t\t\t\t{\n\t\t\t\t\t\ttime: startTime,\n\t\t\t\t\t\ttype: 'meta',\n\t\t\t\t\t\tsubtype: 'timeSignature',\n\t\t\t\t\t\tnumerator: this.timeSignature.numerator,\n\t\t\t\t\t\tdenominator: this.timeSignature.denominator,\n\t\t\t\t\t\tthirtyseconds: 8,\n\t\t\t\t\t},\n\t\t\t\t\t{ time: startTime, type: 'meta', subtype: 'setTempo', microsecondsPerBeat }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tmidiEvents.forEach((event) => {\n\t\t\t\tevent.ticks = Math.round(event.time - startTime);\n\t\t\t});\n\t\t\tmidiEvents.forEach((event, i) => {\n\t\t\t\tevent.deltaTime = event.ticks - (i > 0 ? midiEvents[i - 1].ticks : 0);\n\t\t\t});\n\n\t\t\tmidiEvents.push({ deltaTime: 0, type: 'meta', subtype: 'endOfTrack' });\n\n\t\t\treturn midiEvents;\n\t\t});\n\n\t\treturn {\n\t\t\theader,\n\t\t\ttracks,\n\t\t};\n\t}\n}\n\nexport { EditableEvent, EditableMeasure };\n","import { RegulationSolution, RegulationSolutionEvent, EventPredisposition } from './interfaces';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { EventCluster, EventElement, EventElementType } from './eventTopology';\nimport { argmax, frac } from './utils';\nimport { WHOLE_DURATION, StemBeam } from './term';\nimport { Logger, DummyLogger } from './logger';\n\ninterface BeadPicker {\n\tn_seq: number;\n\tquota: number;\n\tcost: number; // duration in milliseconds\n\n\tpredictCluster(cluster: EventCluster, tip: number): Promise;\n}\n\nenum BeadType {\n\tPass = 'i',\n\tDivision = 'd',\n\tDots = 'o',\n}\n\nconst DIVISION_NAMES = ['whole', 'half', 'quarter', 'eighth', 'sixteenth', 'thirtysecond', 'sixtyfourth', '128th', '256th'];\n\ninterface BeadNodeInitData {\n\tcluster: EventCluster;\n\telemIndex: number;\n\ttype: BeadType;\n\tpossibilities: number[];\n\tpretentiousness: number;\n}\n\nconst RESIDUE_LOSS_WEIGHT = 0.2;\nconst VOICEN_LOSS_WEIGHT = 0.002;\nconst SPACE_LOSS_WEIGHT = 0.4 / WHOLE_DURATION;\nconst PRETENTIOUSNESS_LOSS_WEIGHT = 0.02;\n\nconst POSSIBILITY_LOW_BOUNDARY = 1e-12;\n\nconst PRETENTIOUSNESS_CLIP = 100;\n\ninterface ClusterEvaluation {\n\ttickErr: number;\n\ttwist: number;\n\tresidue: number;\n\tendTick: number;\n\tfatalError: boolean;\n\tvoiceN: number;\n\tspaceDuration: number;\n\tpretentiousness: number;\n\tloss: number;\n}\n\ninterface ElementState {\n\ttick: number;\n\tdivision: number;\n\tdots: number;\n\tbeam: StemBeam;\n\tstemDirection: string;\n\tgrace: boolean;\n\ttimeWarped: boolean;\n\tfullMeasure: boolean; // full measure rest\n\tfake: boolean;\n\torder: number;\n\tpredisposition: EventPredisposition;\n}\n\ninterface ClusterState {\n\telements: ElementState[];\n}\n\nconst STEM_DIRECTION_OPTIONS = [undefined, 'u', 'd'];\n\nconst BEAM_OPTIONS = [undefined, StemBeam.Open, StemBeam.Continue, StemBeam.Close];\n\nconst saveClusterState = (cluster: EventCluster): ClusterState => ({\n\telements: cluster.elements.map((elem) => ({\n\t\ttick: elem.tick!,\n\t\tdivision: elem.division!,\n\t\tdots: elem.dots!,\n\t\tbeam: elem.beam!,\n\t\tstemDirection: elem.stemDirection!,\n\t\tgrace: elem.grace!,\n\t\ttimeWarped: elem.timeWarped!,\n\t\tfullMeasure: elem.fullMeasure!,\n\t\tfake: elem.fake!,\n\t\torder: elem.order!,\n\t\tpredisposition: elem.predisposition!,\n\t})),\n});\n\nconst restoreClusterState = (cluster: EventCluster, state: ClusterState): void => cluster.elements.forEach((elem, i) => Object.assign(elem, state.elements[i]));\n\nconst measurePretentious = (p) => Math.min(PRETENTIOUSNESS_CLIP, -Math.log(p));\n\ninterface BeadDeductionContext {\n\tpicker: BeadPicker;\n\tlogger: Logger;\n\tptFactor: number; // pretentiousness tolerance factor\n}\n\nclass BeadNode {\n\tcluster: EventCluster;\n\telemIndex: number;\n\ttype: BeadType;\n\tpossibilities: number[];\n\tpretentiousness: number;\n\n\tchildren: Record;\n\taccessCount: number;\n\n\tconstructor(data: BeadNodeInitData) {\n\t\tObject.assign(this, data);\n\n\t\t//this.possibilities = this.possibilities.map((x, i) => (this.type === BeadType.Pass && !i) ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\n\t\tthis.children = {};\n\t\tthis.accessCount = 0;\n\t}\n\n\tnextBranch(): number | null {\n\t\tconst ps = this.possibilities.map((p, i) => p / (this.children[i] ? this.children[i].accessCount + 1 : 1));\n\t\t//const ps = this.possibilities.map((p, i) => p * (this.children[i] ? (2 ** -this.children[i].accessCount) : 1));\n\n\t\tif (ps.every((p) => !p)) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn null;\n\t\t}\n\n\t\treturn argmax(ps);\n\t}\n\n\tget currentElem(): EventElement {\n\t\treturn this.cluster.elements[this.elemIndex];\n\t}\n\n\tbranchID(ni: number): string {\n\t\tswitch (this.type) {\n\t\t\tcase BeadType.Pass:\n\t\t\t\treturn `i_${ni}`;\n\t\t\tcase BeadType.Division:\n\t\t\t\treturn DIVISION_NAMES[ni];\n\t\t\tcase BeadType.Dots:\n\t\t\t\treturn 'o' + '.'.repeat(ni);\n\t\t}\n\n\t\treturn '';\n\t}\n\n\tasync deduce({ picker, logger, ptFactor }: BeadDeductionContext, deep: number = 0): Promise {\n\t\t++this.accessCount;\n\n\t\tconst ni = this.nextBranch()!;\n\t\tlogger.debug(String.fromCodePoint(0x1f349) + ' '.repeat(deep), this.branchID(ni), this.accessCount > 1 ? `[${this.accessCount}]` : '');\n\n\t\tif (!Number.isInteger(ni) || ni < 0) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t}\n\n\t\tthis.pretentiousness += measurePretentious(this.possibilities[ni]);\n\t\tif (this.pretentiousness > PRETENTIOUSNESS_CLIP * ptFactor) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t}\n\n\t\tlet selfEval: null | ClusterEvaluation = null;\n\n\t\tswitch (this.type) {\n\t\t\tcase BeadType.Pass:\n\t\t\t\t{\n\t\t\t\t\tconst tip = this.currentElem.order! + 1;\n\t\t\t\t\tconst element = this.cluster.elements[ni];\n\t\t\t\t\tconsole.assert(element, 'null element:', ni, this.cluster.elements.length);\n\t\t\t\t\tif (element.type === EventElementType.EOS) {\n\t\t\t\t\t\tselfEval = evaluateCluster(this.cluster, tip, this.pretentiousness);\n\t\t\t\t\t\tif (!selfEval.residue || selfEval.fatalError) {\n\t\t\t\t\t\t\tthis.accessCount = Infinity;\n\t\t\t\t\t\t\treturn selfEval!;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.cluster.elements[0].order = tip;\n\t\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\t\tif (!picker.quota) return selfEval;\n\n\t\t\t\t\t\t\tconst possibilities = (await picker.predictCluster(this.cluster, tip + 1)).map((x, i) =>\n\t\t\t\t\t\t\t\tthis.cluster.elements[i].order! < tip + 1 || i === this.cluster.elements.length - 1 ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\t\telemIndex: 0,\n\t\t\t\t\t\t\t\ttype: BeadType.Pass,\n\t\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\telement.order = tip;\n\n\t\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\t\tconsole.assert(element.predisposition, 'no predisposition:', ni, this.possibilities);\n\t\t\t\t\t\t\tconst possibilities = element.predisposition!.divisionVector.map((x) => Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\t\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\t\telemIndex: ni,\n\t\t\t\t\t\t\t\ttype: BeadType.Division,\n\t\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase BeadType.Division:\n\t\t\t\t{\n\t\t\t\t\tthis.currentElem.division = ni;\n\n\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\tconst possibilities = this.currentElem.predisposition!.dotsVector.map((x) => Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\telemIndex: this.elemIndex,\n\t\t\t\t\t\t\ttype: BeadType.Dots,\n\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase BeadType.Dots:\n\t\t\t\t{\n\t\t\t\t\tthis.currentElem.dots = ni;\n\n\t\t\t\t\tselfEval = evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t\t\t\tif (!selfEval.residue || selfEval.fatalError) {\n\t\t\t\t\t\tthis.accessCount = Infinity;\n\t\t\t\t\t\treturn selfEval!;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\tif (!picker.quota) return selfEval;\n\n\t\t\t\t\t\tconst tip = this.currentElem.order! + 1;\n\t\t\t\t\t\tconst possibilities = (await picker.predictCluster(this.cluster, tip)).map((x, i) =>\n\t\t\t\t\t\t\tthis.cluster.elements[i].order! < tip + 1 ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\telemIndex: this.elemIndex,\n\t\t\t\t\t\t\ttype: BeadType.Pass,\n\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst evaluation = await this.children[ni].deduce({ picker, logger, ptFactor }, deep + 1);\n\t\tif (selfEval && evaluation.fatalError) {\n\t\t\tconst tip = this.currentElem.order!;\n\t\t\tthis.cluster.elements.forEach((elem) => {\n\t\t\t\tif (elem.order! > tip) elem.order = undefined;\n\t\t\t});\n\n\t\t\t// clear children data\n\t\t\tthis.cluster.elements.forEach((elem) => (elem.order = elem.order! > this.currentElem.order! ? undefined : elem.order));\n\t\t\tthis.cluster.elements[this.cluster.elements.length - 1].tick = selfEval.endTick;\n\n\t\t\treturn selfEval;\n\t\t}\n\n\t\treturn evaluation;\n\t}\n}\n\nconst estimateElementDuration = (elem: EventElement) => WHOLE_DURATION * 2 ** -elem.division! * (2 - 2 ** -elem.dots!);\n\nconst evaluateCluster = (cluster: EventCluster, tip: number, pretentiousness: number): ClusterEvaluation => {\n\tconst events = cluster.elements.filter(\n\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order) && elem.order! < tip\n\t);\n\tevents.sort((e1, e2) => e1.order! - e2.order!);\n\n\tconst eos = cluster.elements[cluster.elements.length - 1];\n\n\tlet tick = 0;\n\tlet lastOrder = 0;\n\tlet endTick = 0;\n\tlet voiceN = 1;\n\n\t// [x, tick, estimated tick]\n\tconst scales: [number, number, number][] = [[eos.x, cluster.signatureDuration, cluster.signatureDuration]];\n\n\tlet totalDuration = 0;\n\n\t// assign tick for events\n\tevents.forEach((event) => {\n\t\tif (event.order! > lastOrder + 1) {\n\t\t\ttick = 0;\n\t\t\t++voiceN;\n\t\t}\n\n\t\tconst referenceScale = scales.find((s) => s[1] >= tick);\n\t\tif (referenceScale && event.x > referenceScale[0] + 3) {\n\t\t\tconst nearScale = scales.reduce((n, s) => (Math.abs(event.predisposition!.tick - s[2]) < Math.abs(event.predisposition!.tick - n[2]) ? s : n));\n\t\t\tif (Math.abs(nearScale[0] - event.x) < 2) tick = Math.max(tick, nearScale[1]);\n\t\t}\n\n\t\tevent.tick = tick;\n\n\t\tconst si = Math.max(\n\t\t\t0,\n\t\t\tscales.findIndex((s) => s[0] > event.x)\n\t\t);\n\t\tscales.splice(si, 0, [event.x, event.tick, event.predisposition!.tick]);\n\n\t\t//let duration = WHOLE_DURATION * (2 ** -event.division!) * (2 - 2 ** -event.dots!);\n\t\tlet duration = estimateElementDuration(event);\n\t\tif (event.predisposition!.timeWarped > 0.5) duration = (duration * 2) / 3;\n\n\t\ttick += duration;\n\t\ttotalDuration += duration;\n\t\tendTick = Math.max(endTick, tick);\n\t\tlastOrder = event.order!;\n\t});\n\n\t/*const pretentiousness = events.reduce((p, event) => p +\n\t\tmeasurePretentious(event.predisposition!.divisionVector![event.division!]) +\n\t\tmeasurePretentious(event.predisposition!.dotsVector![event.dots!]), 0);*/\n\n\tif (endTick > 0) cluster.elements[cluster.elements.length - 1].tick = endTick;\n\n\tconst xSpan = cluster.elements[cluster.elements.length - 1].pivotX! - cluster.elements[1].pivotX!;\n\tconst tickSpan = Math.max(...events.map((e) => e.tick!), endTick);\n\n\t// tick twist loss\n\tconst eventsXOrder = [...events].sort((e1, e2) => e1.pivotX! - e2.pivotX!);\n\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\tconst e1 = eventsXOrder[i];\n\t\tconst dx = e2.pivotX! - e1.pivotX!;\n\t\tconst dt = e2.tick! - e1.tick!;\n\n\t\tif (!dt) return dx / xSpan;\n\n\t\tconst rate = Math.atan2(dt / tickSpan, dx / xSpan);\n\n\t\t//if (dt < 0)\n\t\t//\tconsole.log(\"minus dt:\", dt, dx, rate);\n\n\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t});\n\t//console.debug(\"tickTwists:\", tickTwists, eventsXOrder);\n\n\tconst twist = Math.max(...tickTwists, 0);\n\n\tconst tickMSE = events.map((event) => (event.tick! - event.predisposition!.tick) ** 2);\n\t//console.debug(\"tickMSE:\", tickMSE.map(Math.sqrt));\n\tconst tickErr = tickMSE.length ? Math.sqrt(tickMSE.reduce((sum, mse) => sum + mse, 0) / tickMSE.length) : 0;\n\t//console.debug(\"tick/twist:\", tickErr / WHOLE_DURATION, twist);\n\n\tconst residueElements = cluster.elements.filter(\n\t\t(elem) =>\n\t\t\t[EventElementType.CHORD, EventElementType.REST].includes(elem.type) &&\n\t\t\t!(Number.isInteger(elem.order) && elem.order! < tip) &&\n\t\t\t!(elem.predisposition && elem.predisposition.fakeP > 0.5)\n\t);\n\tconst residue = residueElements.length;\n\n\tconst fatalError = twist >= 1 || endTick > cluster.signatureDuration;\n\n\t//const spaceDuration = Math.max(0, cluster.signatureDuration - endTick);\n\tconst spaceDuration = Math.max(0, cluster.signatureDuration - totalDuration / voiceN);\n\n\tconst loss =\n\t\ttickErr / WHOLE_DURATION +\n\t\ttwist +\n\t\tresidue * RESIDUE_LOSS_WEIGHT +\n\t\tvoiceN * VOICEN_LOSS_WEIGHT +\n\t\tspaceDuration * SPACE_LOSS_WEIGHT +\n\t\tpretentiousness * PRETENTIOUSNESS_LOSS_WEIGHT;\n\n\treturn {\n\t\ttickErr,\n\t\ttwist,\n\t\tresidue,\n\t\tendTick,\n\t\tfatalError,\n\t\tvoiceN,\n\t\tspaceDuration,\n\t\tpretentiousness,\n\t\tloss,\n\t};\n};\n\nconst solveCluster = async (\n\tcluster: EventCluster,\n\tpicker: BeadPicker,\n\tlogger: Logger,\n\tquota: number = 200,\n\tstopLoss: number = 0,\n\tptFactor: number = 1\n): Promise => {\n\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\tconst suc0 = await picker.predictCluster(cluster, 1);\n\n\tconst root = new BeadNode({ cluster, elemIndex: 0, pretentiousness: 0, type: BeadType.Pass, possibilities: suc0 });\n\n\tlet bestEvaluation: ClusterEvaluation | null = null;\n\tlet bestState: ClusterState | null = null;\n\n\tpicker.quota = quota;\n\twhile (picker.quota) {\n\t\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\n\t\tconst evaluation = await root.deduce({ picker, logger, ptFactor });\n\n\t\tlogger.debug('loss:', evaluation);\n\n\t\tif (!bestEvaluation || evaluation.loss < bestEvaluation.loss) {\n\t\t\tbestEvaluation = evaluation;\n\n\t\t\tcluster.duration = bestEvaluation.endTick;\n\t\t\tbestState = saveClusterState(cluster);\n\n\t\t\tif (Number.isFinite(stopLoss) && bestEvaluation.loss <= stopLoss!) break;\n\t\t}\n\n\t\tif (!Number.isFinite(root.accessCount)) break;\n\t}\n\tlogger.debug('bestEvaluation:', bestEvaluation);\n\n\trestoreClusterState(cluster, bestState!);\n\n\t// solve residue elements\n\tconst fixedEvents = cluster.elements.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order));\n\tconst pendingEvents = cluster.elements.filter(\n\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && !Number.isInteger(elem.order)\n\t);\n\tif (fixedEvents.length) {\n\t\tpendingEvents.forEach((event) => {\n\t\t\t// exclude fake events (includes grace, fullMeasure) from voices\n\t\t\tevent.tick = undefined;\n\n\t\t\tif (event.predisposition!.fakeP < 0.5) {\n\t\t\t\t//const near = fixedEvents.reduce((n, e) => Math.abs(e.predisposition!.tick - event.predisposition!.tick) < Math.abs(n.predisposition!.tick - event.predisposition!.tick) ? e : n);\n\t\t\t\tconst duration = estimateElementDuration(event);\n\t\t\t\tconst candidates = fixedEvents.filter((e) => e.tick! + duration <= bestEvaluation!.endTick);\n\t\t\t\tif (candidates.length) {\n\t\t\t\t\tconst near = candidates.reduce((n, e) => (Math.abs(e.x - event.x) < Math.abs(n.x - event.x) ? e : n));\n\t\t\t\t\tevent.tick = near.tick;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfixedEvents.sort((e1, e2) => e1.order! - e2.order!);\n\n\t// properties\n\t[...fixedEvents, ...pendingEvents].forEach((event) => {\n\t\tevent.grace = !Number.isFinite(event.tick) && event.predisposition!.grace;\n\t\tevent.timeWarped = event.predisposition!.timeWarped > 0.5;\n\t\tevent.fullMeasure = event.predisposition!.fullMeasure > 0.5;\n\t\tevent.stemDirection = STEM_DIRECTION_OPTIONS[argmax(event.predisposition!.stemDirectionVector)];\n\t\tevent.beam = BEAM_OPTIONS[argmax(event.predisposition!.beamVector)];\n\t});\n\n\t// construct matrixH\n\tconst ids = cluster.elements.map((e) => e.index);\n\tconst idx = (id: number): number => ids.indexOf(id);\n\tcluster.matrixH = cluster.elements.map(() => Array(cluster.elements.length).fill(0));\n\tfixedEvents.forEach((event, i) => {\n\t\tconst lastEvent = fixedEvents[i - 1];\n\t\tif (!lastEvent || lastEvent.order! < event.order! - 1) {\n\t\t\tcluster.matrixH![idx(event.index!)][0] = 1;\n\t\t\tif (lastEvent) cluster.matrixH![cluster.elements.length - 1][idx(lastEvent.index!)] = 1;\n\t\t} else {\n\t\t\tconsole.assert(\n\t\t\t\tcluster.matrixH![idx(event.index!)] && Number.isFinite(cluster.matrixH![idx(event.index!)][idx(lastEvent.index!)]),\n\t\t\t\t'matrixH out of range:',\n\t\t\t\tevent.index,\n\t\t\t\tlastEvent.index,\n\t\t\t\tcluster.matrixH!.length\n\t\t\t);\n\n\t\t\tcluster.matrixH![idx(event.index!)][idx(lastEvent.index!)] = 1;\n\t\t}\n\t});\n\tif (!pendingEvents.length && fixedEvents.length) cluster.matrixH![cluster.elements.length - 1][idx(fixedEvents[fixedEvents.length - 1].index!)] = 1;\n\n\treturn bestEvaluation!;\n};\n\ninterface BeadSolverOptions {\n\tpicker: BeadPicker;\n\tstopLoss?: number;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n\tptFactor?: number;\n\tlogger?: Logger;\n}\n\nconst solveMeasure = async (measure: SpartitoMeasure, options: BeadSolverOptions): Promise => {\n\tconst { stopLoss = 0.09, quotaMax = 1000, quotaFactor = 5, ptFactor = 1, logger = new DummyLogger() } = options;\n\n\tlet worstLoss = 0;\n\n\tconst clusters = measure.createClusters();\n\tfor (const cluster of clusters) {\n\t\tconst quota = Math.min(quotaMax, Math.ceil(cluster.elements.length * quotaFactor));\n\t\tlogger.info(`[measure-${measure.measureIndex}]`, quota);\n\t\tconst { loss } = await solveCluster(cluster, options.picker, logger, quota, stopLoss, ptFactor);\n\t\tworstLoss = Math.max(worstLoss, loss);\n\t}\n\n\tconst voices = [] as number[][];\n\n\tconst durations = [] as number[];\n\n\tconst solutionEvents = [] as RegulationSolutionEvent[];\n\n\tclusters.forEach((cluster) => {\n\t\tconst events = cluster.elements.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order));\n\t\tevents.sort((e1, e2) => e1.order! - e2.order!);\n\n\t\tif (!events.length) return;\n\n\t\tlet voice = [] as number[];\n\t\tvoices.push(voice);\n\t\tlet lastOrder = 0;\n\t\tevents.forEach((event) => {\n\t\t\tif (event.fullMeasure || event.grace || event.tremoloCatcher) return;\n\n\t\t\tif (event.order! > lastOrder + 1) {\n\t\t\t\tvoice = [event.index!];\n\t\t\t\tvoices.push(voice);\n\t\t\t} else voice.push(event.index!);\n\n\t\t\tlastOrder = event.order!;\n\t\t});\n\n\t\tlet tipElem = events[events.length - 1];\n\n\t\t// complete voices from pending events\n\t\tconst pendingEvents = cluster.elements.filter(\n\t\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isFinite(elem.tick) && !Number.isInteger(elem.order)\n\t\t);\n\t\twhile (pendingEvents.length) {\n\t\t\tconst ei = pendingEvents.findIndex((e) => e.tick! >= tipElem.tick! + estimateElementDuration(tipElem));\n\t\t\tif (ei >= 0) voice.push(pendingEvents.splice(ei, 1)[0].index!);\n\t\t\telse {\n\t\t\t\ttipElem = pendingEvents.splice(0, 1)[0];\n\t\t\t\tvoice = [tipElem.index!];\n\t\t\t\tvoices.push(voice);\n\t\t\t}\n\t\t}\n\n\t\tif (events.some((elem) => !elem.fullMeasure && Number.isInteger(elem.order))) {\n\t\t\tconst eos = cluster.elements.find((elem) => elem.type === EventElementType.EOS);\n\t\t\tdurations.push(eos!.tick!);\n\t\t}\n\n\t\tconst eventMap = measure.eventMap;\n\n\t\tconst tickSet = cluster.elements.reduce((set, elem) => {\n\t\t\tif (Number.isFinite(elem.tick)) set.add(elem.tick!);\n\t\t\treturn set;\n\t\t}, new Set());\n\t\tconst ticks = Array.from(tickSet).sort((t1, t2) => t1 - t2);\n\n\t\t// fill solutionEvents\n\t\tevents.forEach((elem) => {\n\t\t\tconst event = eventMap[elem.index!];\n\t\t\tif (event) {\n\t\t\t\tsolutionEvents.push({\n\t\t\t\t\tid: event.id!,\n\t\t\t\t\ttick: elem.tick!,\n\t\t\t\t\ttickGroup: ticks.indexOf(elem.tick!),\n\t\t\t\t\tdivision: elem.division !== event.division ? elem.division : undefined,\n\t\t\t\t\tdots: elem.dots !== event.dots ? elem.dots : undefined,\n\t\t\t\t\ttimeWarp: elem.timeWarped ? frac(2, 3) : undefined, // TODO:\n\t\t\t\t\tbeam: elem.beam !== event.beam ? elem.beam : undefined,\n\t\t\t\t\tgrace: elem.grace !== !!event.grace ? elem.grace : undefined,\n\t\t\t\t\tfullMeasure: elem.fullMeasure || undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\n\tconst estimatedDuration = Math.max(...clusters.map((c) => c.estimatedDuration));\n\n\treturn {\n\t\tvoices: voices.filter((voice) => voice.length),\n\t\tduration: Math.max(...durations),\n\t\tevents: solutionEvents,\n\t\tpriority: -worstLoss,\n\t\testimatedDuration,\n\t};\n};\n\ninterface GlimpseMeasureOptions {\n\tpicker: BeadPicker;\n\tresetSignatureForDoubtfulOnly?: boolean;\n}\n\nconst glimpseMeasure = async (measure: SpartitoMeasure, { picker, resetSignatureForDoubtfulOnly }: GlimpseMeasureOptions): Promise => {\n\tconst clusters = measure.createClusters();\n\tconst eventMap = measure.eventMap;\n\n\tfor (const cluster of clusters) {\n\t\tif (!resetSignatureForDoubtfulOnly || measure.doubtfulTimesig) cluster.signatureDuration = 0; // re-estimate measure duration\n\t\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\t\tawait picker.predictCluster(cluster, 1);\n\n\t\tcluster.elements\n\t\t\t.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type))\n\t\t\t.forEach((elem) => {\n\t\t\t\tconst event = eventMap[elem.index!];\n\t\t\t\tevent.predisposition = elem.predisposition!;\n\t\t\t});\n\t}\n\n\tmeasure.estimatedDuration = Math.max(...clusters.map((c) => c.estimatedDuration));\n};\n\nconst estimateMeasure = async (measure: SpartitoMeasure, picker: BeadPicker): Promise =>\n\tglimpseMeasure(measure, { picker, resetSignatureForDoubtfulOnly: true });\n\nexport { BeadPicker, solveCluster, solveMeasure, estimateMeasure, glimpseMeasure };\n","import * as starry from '../starry';\nimport { MidiJson, ScoreJSON } from './types';\nimport { ChordColumn, Staff } from '../starry';\nimport { parseCode } from '../staffLayout';\nimport { MidiEvent } from '../performer';\n\nexport interface FindScoreResource {\n\tscoreJson: ScoreJSON;\n\tmidiJson: MidiJson;\n}\n\nconst SUPPORT_CLEF_TYPES = [starry.TokenType.ClefG, starry.TokenType.ClefF, starry.TokenType.ClefC];\n\nconst tokenToText = (token: starry.ContextedTerm) => {\n\tlet text = null;\n\tswitch (token.tokenType) {\n\t\tcase starry.TokenType.ClefG:\n\t\t\ttext = 'Treble';\n\t\t\tbreak;\n\t\tcase starry.TokenType.ClefF:\n\t\t\ttext = 'Bass';\n\t\t\tbreak;\n\t\tcase starry.TokenType.ClefC:\n\t\t\tif (token.y === -1) {\n\t\t\t\ttext = 'Tenor';\n\t\t\t} else {\n\t\t\t\ttext = 'Alto';\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\treturn text;\n};\n\nexport function encodeFindResource(score: starry.Score): FindScoreResource {\n\tconst perform = score.spartito.perform();\n\tconst maskImages = score.systems.map((sy) => sy.staves.map((st) => st?.maskImage)).flat();\n\tconst hasMaskImage = maskImages.filter(Boolean).length > maskImages.length / 2;\n\n\tconst scoreJson: ScoreJSON = {} as ScoreJSON;\n\n\tconst idsMap = new Map(); // starry内部ID到find播放器id的映射\n\tconst idsXMap = new Map(); // 内部ID和元素X坐标的映射\n\tconst idStaffIndexMap = new Map(); // 内部ID和元素所属part的内部staff索引\n\n\tscoreJson.unitSize = score.unitSize;\n\n\tscoreJson.title = {\n\t\ttitle: score.title,\n\t} as any;\n\n\tconst coverTexts: {\n\t\tconfidence: number;\n\t\tfontSize: number;\n\t\tid: string;\n\t\ttext: string;\n\t\ttextType: 'Title' | 'Author';\n\t\ttype: starry.TokenType;\n\t\twidth_: number;\n\t\tx: number;\n\t\ty: number;\n\t}[] = score.pages[0].tokens as any;\n\n\tif (Array.isArray(coverTexts) && coverTexts.length > 0) {\n\t\tconst [title, ...subtitles] = coverTexts\n\t\t\t.filter((x) => x.type === starry.TokenType.Text && x.textType === 'Title')\n\t\t\t.sort((a, b) => b.fontSize - a.fontSize);\n\n\t\tif (title) {\n\t\t\tscoreJson.title.title = title.text;\n\t\t\tscoreJson.title.t = { size: title.fontSize };\n\t\t}\n\n\t\tif (subtitles?.length > 0) {\n\t\t\tsubtitles.sort((a, b) => a.y - b.y);\n\t\t\tscoreJson.title.subtitle = subtitles.map((x) => x.text).join('\\n');\n\t\t\tscoreJson.title.s = { size: subtitles.reduce((a, n) => a + n.fontSize, 0) / subtitles.length };\n\t\t}\n\n\t\tconst authors = coverTexts.filter((x) => x.type === starry.TokenType.Text && x.textType === 'Author' && x.x > score.pages[0].width / 2);\n\n\t\tif (authors.length > 0) {\n\t\t\tscoreJson.title.composer = authors.map((x) => x.text).join('\\n');\n\t\t\tscoreJson.title.c = { size: authors.reduce((a, n) => a + n.fontSize, 0) / authors.length };\n\t\t}\n\t}\n\n\tscoreJson.page = {\n\t\tw: score.pages[0].width,\n\t\th: score.pages[0].height,\n\t};\n\n\tscoreJson.pages = score.pages.map((page) => {\n\t\tconst bgWidth = page.source.dimensions.width / page.source.interval;\n\t\tconst bgHeight = page.source.dimensions.height / page.source.interval;\n\n\t\tconst [a, b, c, d] = page.source.matrix;\n\n\t\treturn {\n\t\t\tsrc: page.source.url, // 本页本地图片URL\n\t\t\tw: bgWidth, // 背景图\n\t\t\th: bgHeight, // 背景图\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\tl1: score.systems.indexOf(page.systems[0]), // 本页起始system编号\n\t\t\tls: page.systems.length, // 本页system数量\n\t\t\tmatrix: [\n\t\t\t\ta,\n\t\t\t\tb,\n\t\t\t\tc,\n\t\t\t\td,\n\t\t\t\t(-1 / 2) * a * bgWidth + (-1 / 2) * bgHeight * c + (1 / 2) * page.width || 0,\n\t\t\t\t(-1 / 2) * b * bgWidth + (-1 / 2) * bgHeight * d + (1 / 2) * page.height || 0,\n\t\t\t],\n\t\t};\n\t});\n\n\tscoreJson.parts = [];\n\tscoreJson.lines = [];\n\n\t// 没有降噪图就不需要这些字段\n\tif (hasMaskImage) {\n\t\tconst partTemplates = score.staffLayout.partGroups.map((p) => (p.range[0] === p.range[1] ? [p.range[0]] : p.range));\n\t\tconst tokenMap = score.getTokenMap();\n\t\tconst measureXs: number[][] = [];\n\n\t\t// partIndex: part索引,template: 当前part所包含的staff的全局索引\n\t\tfor (const [partIndex, template] of partTemplates.entries()) {\n\t\t\tconst staffIndexBase = partTemplates.slice(0, partIndex).flat().length;\n\n\t\t\tconst part: ScoreJSON['parts'][0] = {\n\t\t\t\tmeasures: [],\n\t\t\t};\n\n\t\t\tscore.systems.forEach((system, systemIndex) => {\n\t\t\t\tconst staves = system.staves.slice();\n\n\t\t\t\t// 不可见staff用null填充的staff列表\n\t\t\t\tconst paddedStaves = partTemplates.flat().map((staffIndex) => (!((1 << staffIndex) & system.staffMask) ? null : staves.shift()));\n\t\t\t\tconst bars = [0, ...system.measureBars];\n\n\t\t\t\t// 便历当前system下的小节\n\t\t\t\tfor (let mi = 0; mi < system.measureCount; mi++) {\n\t\t\t\t\tconst measureIndex = score.spartito.measureIndexMapping[system.headMeasureIndex + mi];\n\n\t\t\t\t\t// 如果小节被过滤\n\t\t\t\t\tif (!Number.isFinite(measureIndex)) {\n\t\t\t\t\t\tif (bars.length > mi + 1) bars[mi + 1] = bars[mi];\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst chordColumns: { chord: ChordColumn; staffIndexInPart: number }[] = [];\n\n\t\t\t\t\tfor (const staffIndex of template) {\n\t\t\t\t\t\tconst staff = paddedStaves[staffIndex];\n\n\t\t\t\t\t\tif (staff) {\n\t\t\t\t\t\t\tchordColumns.push(...staff.measures[mi].getChords().map((chord) => ({ chord, staffIndexInPart: staffIndex - staffIndexBase })));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet noteIndex = 0;\n\n\t\t\t\t\tconst measureStartX = bars[mi]; // 小节开头相对system的x偏移\n\n\t\t\t\t\tconst measureNotes = [];\n\n\t\t\t\t\tchordColumns.forEach(({ staffIndexInPart, chord }) => {\n\t\t\t\t\t\tconst elems = [];\n\n\t\t\t\t\t\tlet firstX = chord.tip ? chord.tip.x : chord.right - chord.left / 2;\n\n\t\t\t\t\t\tchord.noteIds.forEach((noteId, key) => {\n\t\t\t\t\t\t\tconst token = tokenMap.get(noteId);\n\n\t\t\t\t\t\t\tconst innerId = `n_${partTemplates.length > 1 ? partIndex + '_' : ''}${measureIndex}_${noteIndex}`;\n\t\t\t\t\t\t\tnoteIndex++;\n\t\t\t\t\t\t\tidsMap.set(token.id, innerId);\n\t\t\t\t\t\t\tidsXMap.set(token.id, (token.left + token.right) / 2 - measureStartX);\n\t\t\t\t\t\t\tidStaffIndexMap.set(token.id, staffIndexInPart + 1);\n\n\t\t\t\t\t\t\telems.push({\n\t\t\t\t\t\t\t\tline: -chord.ys[key] * 2, // 五线中线为0,往上为正/向下为负,每半格子1个单位\n\t\t\t\t\t\t\t\tid: innerId, // n_小节号_第几个音符\n\t\t\t\t\t\t\t\t// acc: {\n\t\t\t\t\t\t\t\t// \tacc: AccType.Flat,\n\t\t\t\t\t\t\t\t// \tx: -1\n\t\t\t\t\t\t\t\t// }, // 临时升降记号及其偏移量\n\t\t\t\t\t\t\t\tstaff: staffIndexInPart + 1,\n\t\t\t\t\t\t\t\tx: (token.left + token.right) / 2 - firstX, // 当前符头相对第一个符头的偏移量\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tmeasureXs[measureIndex] = measureXs[measureIndex] || [];\n\t\t\t\t\t\tmeasureXs[measureIndex].push(firstX - measureStartX);\n\n\t\t\t\t\t\tconst events = score.spartito.measures[system.headMeasureIndex + mi].events.filter((x) =>\n\t\t\t\t\t\t\tx.noteIds.some((y) => chord.noteIds.includes(y))\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tmeasureNotes.push({\n\t\t\t\t\t\t\telems,\n\t\t\t\t\t\t\tx: firstX - measureStartX, // 本音符相对于小节开头的x偏移量\n\t\t\t\t\t\t\ttype: 2 ** chord.division, // n分音符,1为全音符\n\t\t\t\t\t\t\t...(events.some((x) => x.grace) ? { grace: {} } : {}),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tpart.measures[measureIndex] = {\n\t\t\t\t\t\tw: bars[mi + 1] - bars[mi], // 本小节宽度\n\t\t\t\t\t\tstaves: template.length, // 本part的staff个数\n\t\t\t\t\t\tnotes: measureNotes,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// 提取谱号、调号\n\t\t\tlet lastFifths = null;\n\t\t\tscore.spartito.measures.forEach((measure, i) => {\n\t\t\t\tconst measureIndex = score.spartito.measureIndexMapping[i];\n\n\t\t\t\tconst clefTokens = measure.contexts.flat().filter((x) => SUPPORT_CLEF_TYPES.includes(x.tokenType) && template.includes(x.staff));\n\t\t\t\tconst clefs = clefTokens.map((token) => {\n\t\t\t\t\tconst pt = partTemplates.find((p) => p.includes(token.staff));\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\tclef: tokenToText(token),\n\t\t\t\t\t\tstaff: pt.indexOf(token.staff) + 1, // staff索引从1开始\n\t\t\t\t\t\ttick: token.tick,\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tif (clefs.length > 0) {\n\t\t\t\t\tpart.measures[measureIndex] && (part.measures[measureIndex].clefs = clefs);\n\t\t\t\t}\n\n\t\t\t\tconst fifths = measure.basics.filter((x, i) => (1 << i) & measure.staffMask)[0].keySignature;\n\n\t\t\t\tif (fifths !== lastFifths) {\n\t\t\t\t\tpart.measures[measureIndex] && (part.measures[measureIndex].fifths = { fifths });\n\t\t\t\t\tlastFifths = fifths;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (part.measures.length > 0) {\n\t\t\t\tscoreJson.parts[partIndex] = part;\n\t\t\t}\n\t\t}\n\n\t\tscore.systems.forEach((system, systemIndex) => {\n\t\t\tconst lineStaves = [];\n\n\t\t\tconst systemTopStaff = system.staves[0];\n\t\t\tconst systemBottomStaff = system.staves[system.staves.length - 1];\n\n\t\t\tconst systemTopStaffY = systemTopStaff.top + systemTopStaff.staffY - 2;\n\t\t\tconst systemBottomStaffY = systemBottomStaff.top + systemBottomStaff.staffY - 2;\n\n\t\t\tconst staves = system.staves.slice();\n\n\t\t\tconst paddedStaves = partTemplates.flat().map((staffIndex) => {\n\t\t\t\tconst isEmpty = !((1 << staffIndex) & system.staffMask);\n\t\t\t\tif (isEmpty) {\n\t\t\t\t\treturn null;\n\t\t\t\t} else {\n\t\t\t\t\treturn staves.shift();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet lastPartLastStaff = null;\n\n\t\t\tfor (const [partIndex, template] of partTemplates.entries()) {\n\t\t\t\tconst partStaves: Staff[] = template.map((staffIndex) => paddedStaves.find((s) => s?.index === staffIndex) || null);\n\n\t\t\t\tconst staffs = partStaves.map((staff, index) => [index, !staff] as [number, boolean]).filter((s) => s[1]);\n\n\t\t\t\tlet details = null;\n\t\t\t\tif (staffs.length > 0) {\n\t\t\t\t\tdetails = Object.fromEntries(staffs.map((d) => [d[0] + 1, { hide: d[1] }]));\n\t\t\t\t}\n\n\t\t\t\tlet y = 0;\n\t\t\t\tlet height = 0;\n\n\t\t\t\tconst visibleStaves = partStaves.filter((s) => !!s);\n\n\t\t\t\tif (visibleStaves.length > 0) {\n\t\t\t\t\tconst partTopStaff = visibleStaves[0];\n\t\t\t\t\tconst partBottomStaff = visibleStaves[visibleStaves.length - 1];\n\t\t\t\t\tconst partTopStaffY = partTopStaff.top + partTopStaff.staffY - 2;\n\t\t\t\t\tconst partBottomStaffY = partBottomStaff.top + partBottomStaff.staffY - 2;\n\n\t\t\t\t\ty = partTopStaffY - systemTopStaffY;\n\t\t\t\t\theight = partBottomStaffY - partTopStaffY + 4;\n\t\t\t\t}\n\n\t\t\t\tconst { list: distances, last } = partStaves.reduce(\n\t\t\t\t\t(acc, next, index) => {\n\t\t\t\t\t\tif (acc.last === null || next === null) {\n\t\t\t\t\t\t\tif (index === 0 && y > 0) {\n\t\t\t\t\t\t\t\tacc.list.push(y - 4);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tacc.list.push(0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tacc.list.push(next.top + next.staffY - (acc.last.top + acc.last.staffY) - 4);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tacc.last = next || acc.last;\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t},\n\t\t\t\t\t{ last: lastPartLastStaff, list: [] } as { last: Staff; list: number[] }\n\t\t\t\t);\n\n\t\t\t\tlastPartLastStaff = last;\n\n\t\t\t\tconst imgs = partStaves.map((staff) => {\n\t\t\t\t\tif (staff?.maskImage) {\n\t\t\t\t\t\tconst rect = staff.imagePosition;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tsrc: staff.maskImage,\n\t\t\t\t\t\t\tx: rect.x,\n\t\t\t\t\t\t\ty: system.top + staff.top + rect.y - (system.top + staff.top + staff.staffY - 2),\n\t\t\t\t\t\t\tw: rect.width,\n\t\t\t\t\t\t\th: rect.height,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t});\n\n\t\t\t\tconst spartitoMeasure = score.spartito.measures[system.headMeasureIndex];\n\t\t\t\tlineStaves.push({\n\t\t\t\t\t// parts\n\t\t\t\t\tdistances, // 两个staff间距\n\t\t\t\t\timgs,\n\t\t\t\t\ty, // 本staff相对于当前system第一线的起始y坐标\n\t\t\t\t\tstaves: template.length, // 本staff数量\n\t\t\t\t\tparti: partIndex, // 本staff所属part编号\n\t\t\t\t\theight, // 本staff高度\n\t\t\t\t\t...(details ? { details } : {}),\n\t\t\t\t\tclef: Object.fromEntries(\n\t\t\t\t\t\tscore.spartito.measures[system.headMeasureIndex]?.contexts\n\t\t\t\t\t\t\t.flat()\n\t\t\t\t\t\t\t.filter((x) => SUPPORT_CLEF_TYPES.includes(x.tokenType) && template.includes(x.staff))\n\t\t\t\t\t\t\t.map((token) => [token.staff, tokenToText(token)])\n\t\t\t\t\t),\n\t\t\t\t\tfifths: spartitoMeasure.basics.filter((x, i) => (1 << i) & spartitoMeasure.staffMask)[0].keySignature,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst mIndices = system.measureBars\n\t\t\t\t.map((_, i) => score.spartito.measureIndexMapping[system.headMeasureIndex + i])\n\t\t\t\t.filter((x) => Number.isFinite(x));\n\n\t\t\tscoreJson.lines[systemIndex] = {\n\t\t\t\tm1: mIndices[0], // 本system起始小节编号\n\t\t\t\tm2: mIndices.length > 0 ? mIndices[mIndices.length - 1] + 1 : undefined, // 本system结尾小节编号+1\n\t\t\t\tx: system.left, // 本system左侧小节线x坐标\n\t\t\t\ty: system.top + systemTopStaffY, // 本system左侧小节线y坐标\n\t\t\t\tw: system.measureBars[system.measureBars.length - 1], // 本system宽度\n\t\t\t\th: systemBottomStaffY - systemTopStaffY + 4, // 本system高度\n\t\t\t\tlineStaves,\n\t\t\t};\n\t\t});\n\n\t\tconst map = { 0: 'default', 1: 'brace', 2: 'bracket', 3: 'square' };\n\n\t\tconst staffLayout = parseCode(score.staffLayoutCode);\n\t\tconst sortedParts = staffLayout.partGroups\n\t\t\t.map((x) => {\n\t\t\t\treturn {\n\t\t\t\t\tsort: x.range[0],\n\t\t\t\t\tpart: x,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.sort((a, b) => a.sort - b.sort)\n\t\t\t.map((x) => x.part);\n\n\t\tscoreJson.groups = staffLayout.groups\n\t\t\t.filter((x) => x.group.type !== 0)\n\t\t\t.map((part, key) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: map[part.group.type] as any,\n\t\t\t\t\tp1: sortedParts.findIndex((x) => x.range.includes(part.range[0])),\n\t\t\t\t\tp2: sortedParts.findIndex((x) => x.range.includes(part.range[part.range.length - 1])),\n\t\t\t\t};\n\t\t\t})\n\t\t\t.filter((x) => x.type !== 'default');\n\t}\n\n\tif (perform) {\n\t\tscoreJson.measInfo = perform.notation.measures.map((measure, measureIndex) => {\n\t\t\tconst map = new Map();\n\t\t\tmeasure.notes.forEach((n) => {\n\t\t\t\tmap.set(n.tick, [...(map.get(n.tick) || []), idsXMap.get(n.id)]);\n\t\t\t});\n\n\t\t\t// 找出每个tick对应的第一个音符的中心点的x\n\t\t\treturn Array.from(map.entries())\n\t\t\t\t.sort((a, b) => +a[0] - b[0])\n\t\t\t\t.reduce(\n\t\t\t\t\t(acc, ent, key) => {\n\t\t\t\t\t\tconst val = ent[1].find((x) => x > acc.last) || ent[1][0];\n\t\t\t\t\t\tacc.list.push(val);\n\t\t\t\t\t\tacc.last = val;\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t},\n\t\t\t\t\t{ last: null, list: [] }\n\t\t\t\t)\n\t\t\t\t.list.filter(Number.isFinite);\n\t\t});\n\t}\n\n\t/******************************* 生成 midiJson *************************************/\n\n\tlet midiJson: MidiJson;\n\n\tif (perform) {\n\t\tmidiJson = {} as MidiJson;\n\n\t\tconst idNoteMap = new Map();\n\n\t\tlet beatsCurrent;\n\t\tlet beatsUnitCurrent;\n\t\tperform.notation.measures.forEach((measure, mIndex) => {\n\t\t\tconst { numerator: beats, denominator: beatsUnit } = measure.timeSignature;\n\n\t\t\tif (!midiJson.beats && !midiJson.beatsUnit) {\n\t\t\t\tmidiJson.beats = beats;\n\t\t\t\tmidiJson.beatsUnit = beatsUnit;\n\t\t\t\tbeatsCurrent = beats;\n\t\t\t\tbeatsUnitCurrent = beatsUnit;\n\t\t\t}\n\n\t\t\tmidiJson.beatInfos = midiJson.beatInfos || [];\n\n\t\t\tif (beatsCurrent !== beats || beatsUnitCurrent !== beatsUnit) {\n\t\t\t\tbeatsCurrent = beats;\n\t\t\t\tbeatsUnitCurrent = beatsUnit;\n\n\t\t\t\tmidiJson.beatInfos.push({\n\t\t\t\t\ttick: measure.tick,\n\t\t\t\t\tbeats,\n\t\t\t\t\tbeatsUnit,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tmidiJson.tempos = midiJson.tempos || [];\n\n\t\t\tmeasure.events.forEach((evt) => {\n\t\t\t\tif (evt.data.type === 'meta' && evt.data.subtype === 'setTempo') {\n\t\t\t\t\tmidiJson.tempos.push({\n\t\t\t\t\t\ttick: measure.tick,\n\t\t\t\t\t\ttempo: evt.data.microsecondsPerBeat,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tmidiJson.measures = perform.notation.measures.reduce((acc, measure, index) => {\n\t\t\tconst note_ticks = Array.from(new Set(measure.notes.map((x) => x.tick))).sort((a, b) => a - b);\n\n\t\t\tmeasure.notes.forEach((x) => {\n\t\t\t\tidNoteMap.set(x.id, note_ticks.indexOf(x.tick));\n\t\t\t});\n\n\t\t\tacc[measure.tick] = {\n\t\t\t\tmeasure: index, // 小节编号\n\t\t\t\tduration: measure.duration, // 小节时值\n\t\t\t\tnote_ticks, // 本小节每列的tick\n\t\t\t};\n\n\t\t\treturn acc;\n\t\t}, {});\n\n\t\tmidiJson.measureInfos = perform.notation.measures.map((measure, key) => ({\n\t\t\tnumber: String(key + 1), // 小节编号\n\t\t\tfifths: measure.keySignature, // 调号 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7\n\t\t\tbeats: measure.timeSignature.numerator, // 拍号分子\n\t\t\tbeatUnit: measure.timeSignature.denominator, // 拍号分母\n\t\t}));\n\n\t\tconst midi = perform.notation.toPerformingMIDI(perform.notation.measures.map((_, key) => key + 1));\n\n\t\tconst tracks = midi.tracks as unknown as (MidiEvent & { duration: number })[][];\n\n\t\tconst { partGroups } = score.staffLayout;\n\n\t\tlet mergedTracks = tracks.map((track, trackIndex) => {\n\t\t\tconst key = partGroups[trackIndex].key;\n\n\t\t\tlet program: number;\n\n\t\t\tswitch (key) {\n\t\t\t\tcase 'vi':\n\t\t\t\tcase 'vi1':\n\t\t\t\tcase 'vi2':\n\t\t\t\t\tprogram = 40; // 小提琴\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'viola':\n\t\t\t\t\tprogram = 42; // 中提琴\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vo':\n\t\t\t\t\tprogram = 55; // 合成人声\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'basso':\n\t\t\t\t\tprogram = 71; // 大管乐器\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: // 大钢琴\n\t\t\t\t\tprogram = 0;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tprogram, // 音色:0-127\n\t\t\t\tchannel: trackIndex, // 通道:0-15\n\t\t\t\tname: score.instrumentDict[key] ?? 'Piano', // 轨道名称\n\t\t\t\ttrack,\n\t\t\t};\n\t\t});\n\n\t\t// 找出大谱表所在track(声部),根据分手条件拆分为左右手\n\t\tif (partGroups.some((g) => g.group.grand)) {\n\t\t\tconst lhPattern = /l\\.?h\\.?|左手|left hand/i;\n\t\t\tconst rhPattern = /r\\.?h\\.?|右手|right hand/i;\n\t\t\tconst instrus = Object.entries(score.instrumentDict)\n\t\t\t\t.filter(([key, value]) => lhPattern.test(value) || rhPattern.test(value))\n\t\t\t\t.map(([key, value]) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\thand: lhPattern.test(value) ? 'left' : 'right',\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\tlet handStaves: number[] = null;\n\t\t\tlet partIndex;\n\n\t\t\t// 标记了左右手\n\t\t\tif (instrus.length === 2 && instrus[0].hand !== instrus[1].hand) {\n\t\t\t\tconst left = instrus.find((x) => x.hand === 'left');\n\t\t\t\tconst right = instrus.find((x) => x.hand === 'right');\n\t\t\t\thandStaves = [score.staffLayout.staffIds.findIndex((x) => x === right?.key), score.staffLayout.staffIds.findIndex((x) => x === left?.key)];\n\n\t\t\t\tpartIndex = partGroups.findIndex((g) => g.range[0] <= Math.min(...handStaves) && g.range[1] >= Math.max(...handStaves));\n\t\t\t}\n\n\t\t\tif (Number.isFinite(partIndex) && partIndex > -1) {\n\t\t\t\tconst trackToSplit = mergedTracks[partIndex];\n\t\t\t\tconst newTracks: any[][] = []; // Array.from(new Set(firstTrack.track.map(x => x.channel))).sort((a, b) => a - b)\n\n\t\t\t\ttrackToSplit.track.forEach((evt) => {\n\t\t\t\t\tif (Number.isFinite(evt.staff)) {\n\t\t\t\t\t\tif (!newTracks[evt.staff]) {\n\t\t\t\t\t\t\tnewTracks[evt.staff] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnewTracks[evt.staff].push(evt);\n\t\t\t\t\t}\n\t\t\t\t\tif (evt.type === 'meta') {\n\t\t\t\t\t\tnewTracks.forEach((stave) => {\n\t\t\t\t\t\t\tstave.push(evt);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tmergedTracks.splice(partIndex, 1, newTracks.filter(Boolean).map((track) => ({ ...trackToSplit, track })) as any);\n\n\t\t\t\tmergedTracks = mergedTracks.flat();\n\n\t\t\t\t// 指定左右手track\n\t\t\t\tmidiJson.rightHandTrack = handStaves[0];\n\t\t\t\tmidiJson.leftHandTrack = handStaves[1];\n\t\t\t} else {\n\t\t\t\tmergedTracks.sort((a, b) => (a === mergedTracks[partIndex] ? -1 : 0));\n\t\t\t}\n\t\t}\n\n\t\tmidiJson.tracks = mergedTracks.map(({ program, channel, name }) => ({ program, channel, name }));\n\n\t\tconst transformedTracks = mergedTracks.map(({ track }) => {\n\t\t\tconst pitchMap: Map = new Map();\n\n\t\t\treturn track.map((evt) => {\n\t\t\t\tif (evt.subtype === 'noteOn') {\n\t\t\t\t\tpitchMap.set(evt.noteNumber, evt);\n\t\t\t\t}\n\n\t\t\t\tif (evt.subtype === 'noteOff') {\n\t\t\t\t\tconst onEvent = pitchMap.get(evt.noteNumber);\n\t\t\t\t\tif (onEvent?.noteNumber === evt.noteNumber) {\n\t\t\t\t\t\tonEvent.duration = evt.ticks - onEvent.ticks;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn evt;\n\t\t\t});\n\t\t});\n\n\t\tconst measureTickMap = new Map(Object.entries(midiJson.measures).map(([tick, m]) => [m.measure, +tick]));\n\n\t\tmidiJson.events = (transformedTracks as (MidiEvent & { duration: number; numId?: string; ticks: number })[][])\n\t\t\t.map((track, trackIndex) => {\n\t\t\t\treturn track\n\t\t\t\t\t.filter((x) => x.type === 'channel')\n\t\t\t\t\t.map((evt) => {\n\t\t\t\t\t\tif (evt?.ids?.[0]) {\n\t\t\t\t\t\t\tevt.numId = idsMap.get(evt.ids[0]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet newEvent: [number, number, number] = [0, 0, 0];\n\n\t\t\t\t\t\tswitch (evt.subtype) {\n\t\t\t\t\t\t\tcase 'noteOn':\n\t\t\t\t\t\t\t\tnewEvent = [0x90 | evt.channel, evt.noteNumber, evt.velocity];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'noteOff':\n\t\t\t\t\t\t\t\tnewEvent = [0x80 | evt.channel, evt.noteNumber, evt.velocity ? evt.velocity : 0];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'noteAftertouch':\n\t\t\t\t\t\t\t\tnewEvent = [0xa0 | evt.channel, evt.noteNumber, evt.amount];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'controller':\n\t\t\t\t\t\t\t\tnewEvent = [0xb0 | evt.channel, evt.controllerType, evt.value];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'programChange':\n\t\t\t\t\t\t\t\tnewEvent = [0xc0 | evt.channel, evt.programNumber, 0];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'channelAftertouch':\n\t\t\t\t\t\t\t\tnewEvent = [0xd0 | evt.channel, evt.amount, 0];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'pitchBend':\n\t\t\t\t\t\t\t\tnewEvent = [0xe0 | evt.channel, evt.value & 0xff, (evt.value >> 7) & 0xff];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tthrow new Error('unhandled event subtype:' + evt.subtype);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...(evt.subtype === 'noteOn' ? { id: idsMap.get(evt?.ids?.[0]) } : {}), // 对应符头的id\n\t\t\t\t\t\t\ttick: evt.ticks,\n\t\t\t\t\t\t\tchannel: evt.channel,\n\t\t\t\t\t\t\tduration: evt.duration, // 只有note on事件有时值\n\t\t\t\t\t\t\ttrack: trackIndex, // evt.staffTrack, // 所属track\n\t\t\t\t\t\t\tevent: newEvent, // [event, note, velocity]\n\t\t\t\t\t\t\telem_ids: evt?.ids.map((id) => idsMap.get(id)),\n\t\t\t\t\t\t\tmeasure: evt.measure - 1, // 所属小节编号\n\t\t\t\t\t\t\tmeas_start_tick: measureTickMap.get(evt.measure - 1), // 所属小节起始tick\n\t\t\t\t\t\t\tstaff: idStaffIndexMap.get(evt.ids[0]),\n\t\t\t\t\t\t\tnote: idNoteMap.get(evt.ids[0]),\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t.flat(1)\n\t\t\t.sort((a, b) => {\n\t\t\t\tfor (const field of ['tick', 'measure', 'track']) {\n\t\t\t\t\tif (a[field] !== b[field]) {\n\t\t\t\t\t\treturn a[field] - b[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t});\n\t}\n\n\treturn {\n\t\tscoreJson,\n\t\tmidiJson,\n\t};\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","import { EventEmitter } from 'events';\n\ninterface DSPromiseOption {\n\ttimeout?: number;\n}\n\nexport function destructPromise(\n\toptions: DSPromiseOption = {}\n): [promise: Promise, resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void] {\n\tconst { timeout } = options;\n\tlet rs: (value: T | PromiseLike) => void;\n\tlet rj: (reason: any) => void;\n\n\treturn [\n\t\tnew Promise((resolve, reject) => {\n\t\t\trs = resolve;\n\t\t\trj = reject;\n\n\t\t\tif (timeout >= 0) setTimeout(rj, timeout, 'timeout');\n\t\t}),\n\t\trs,\n\t\trj,\n\t];\n}\n\ntype AsyncTask = [fn: (data: any) => Promise, payload: any, resolve: (data: any) => void, reject: (reason: any) => void];\n\nexport class AsyncQueue extends EventEmitter {\n\tprivate working = false;\n\n\ttasks: AsyncTask[];\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.working = false;\n\t\tthis.tasks = [];\n\t\tprocess.nextTick(() => {\n\t\t\tthis.emit('idle');\n\t\t});\n\t}\n\n\tprivate async _digest(item: AsyncTask) {\n\t\tthis.working = true;\n\n\t\tconst [taskFn, payload, resolve, reject] = item;\n\t\tawait taskFn(payload).then(resolve, reject);\n\n\t\tif (this.tasks.length > 0) {\n\t\t\tawait this._digest(this.tasks.shift());\n\t\t} else {\n\t\t\tthis.working = false;\n\t\t\tthis.emit('idle');\n\t\t}\n\t}\n\n\t/**\n\t * 添加队列任务\n\t * @param task\n\t * @param options\n\t */\n\taddTask(task: [AsyncTask[0], AsyncTask[1]], { timeout = 600000 }: { timeout?: number } = {}): Promise {\n\t\tconst [promise, resolve, reject] = destructPromise({ timeout });\n\n\t\tif (this.working) {\n\t\t\tthis.tasks.push([...task, resolve, reject]);\n\t\t} else {\n\t\t\tthis._digest([...task, resolve, reject]);\n\t\t}\n\n\t\treturn promise;\n\t}\n}\n","import { pack, unpack } from 'msgpackr';\nimport { Request } from 'zeromq';\nimport { AsyncQueue } from './async-queue';\n\ninterface Response {\n\tcode: number;\n\tmsg: string;\n\tdata?: any;\n}\n\nexport interface Logger {\n\tinfo: (...data: any[]) => void;\n\terror: (...data: any[]) => void;\n}\n\ntype PyArgs = any[];\ntype PyKwargs = Record;\n\nexport default class ZeroClient {\n\tlogger: Logger;\n\tprivate socket: Request;\n\tprivate queue: AsyncQueue = new AsyncQueue();\n\n\tprivate url: string;\n\n\tconstructor(logger: Logger = console) {\n\t\tthis.logger = logger;\n\t}\n\n\tbind(url?: string) {\n\t\turl && (this.url = url);\n\t\tthis.socket = new Request({\n\t\t\tsendTimeout: 15e3,\n\t\t\treceiveTimeout: 300e3,\n\t\t});\n\n\t\tthis.socket.connect(this.url);\n\t}\n\n\tprivate __request(payload) {\n\t\tlet retryTimes = 0;\n\n\t\tconst req = async (data) => {\n\t\t\ttry {\n\t\t\t\tif (this.socket.closed) this.bind();\n\t\t\t\treturn await this.socket.send(pack(data)).then(() => this.socket.receive());\n\t\t\t} catch (err) {\n\t\t\t\tif (retryTimes < 2) {\n\t\t\t\t\tretryTimes++;\n\t\t\t\t\tconsole.log(`请求失败,${err.stack}`);\n\t\t\t\t\tconsole.error(`3s后重试第${retryTimes}次`);\n\t\t\t\t\tthis.socket.close();\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 3000));\n\t\t\t\t\treturn req(data);\n\t\t\t\t} else {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treturn req(payload);\n\t}\n\n\tasync request(method: string, args: PyArgs | PyKwargs = null, kwargs: PyKwargs = null): Promise {\n\t\tconst [args_, kwargs_] = Array.isArray(args) ? [args, kwargs] : [undefined, args];\n\t\tconst msg: any = { method };\n\t\tif (args_) msg.args = args_;\n\t\tif (kwargs_) msg.kwargs = kwargs_;\n\n\t\treturn this.queue.addTask([\n\t\t\tasync (opt) => {\n\t\t\t\tconst [result] = await this.__request(opt);\n\n\t\t\t\tconst obj = unpack(result) as Response;\n\n\t\t\t\tif (obj.code === 0) {\n\t\t\t\t\treturn obj.data;\n\t\t\t\t} else {\n\t\t\t\t\treturn Promise.reject(obj.msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\tmsg,\n\t\t]);\n\t}\n}\n","import { getPortPromise } from 'portfinder';\nimport { Options, PythonShell } from 'python-shell';\nimport { defaultsDeep } from 'lodash';\nimport ZeroClient, { Logger } from './ZeroClient';\n\nexport default class PyProcessor extends ZeroClient {\n\tprivate readonly scriptPath: string;\n\tprivate readonly options: Options;\n\tprivate pyShell: PythonShell;\n\n\tprivate retryCount: number = 0;\n\tprivate retryDelay: number = 3000;\n\n\tconstructor(scriptPath: string, options: Options = {}, logger: Logger = console) {\n\t\tsuper(logger);\n\t\tthis.scriptPath = scriptPath;\n\t\tthis.options = options;\n\t}\n\n\tasync bind(port?: string | number) {\n\t\tconst freePort =\n\t\t\tport ||\n\t\t\t(await getPortPromise({\n\t\t\t\tport: 12022,\n\t\t\t\tstopPort: 12122,\n\t\t\t}));\n\n\t\t// \"./streamPredictor.py\", \"--inspect\"\n\t\tconst options = defaultsDeep(\n\t\t\t{\n\t\t\t\targs: [...(this.options.args || []), '-p', `${freePort}`],\n\t\t\t},\n\t\t\tthis.options\n\t\t);\n\n\t\tthis.logger.info(`[python-shell]: starting python shell. path: ${this.scriptPath}`);\n\n\t\tthis.pyShell = new PythonShell(this.scriptPath, options);\n\n\t\tthis.pyShell.stdout.on('data', (data) => this.logger.info(data));\n\n\t\tthis.pyShell.on('pythonError', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} pythonError:`, err));\n\t\tthis.pyShell.on('stderr', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} stderr:`, err));\n\t\tthis.pyShell.on('error', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} error:`, err));\n\t\tthis.pyShell.on('close', () => {\n\t\t\t// python子进程关闭事件\n\t\t\tif (this.retryCount < 5) {\n\t\t\t\tthis.retryCount++;\n\t\t\t\tthis.logger.info(`[python-shell]: ${this.scriptPath} will retry ${this.retryCount}th time after 3 seconds`);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.bind();\n\t\t\t\t}, this.retryDelay);\n\t\t\t}\n\t\t});\n\n\t\tsuper.bind(`tcp://127.0.0.1:${freePort}`);\n\t}\n}\n","module.exports = function isBuffer(arg) {\n return arg instanceof Buffer;\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","try {\n var util = require('util');\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n module.exports = require('./inherits_browser.js');\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","import ZeroClient, { Logger } from './ZeroClient';\nimport * as starry from '../../src/starry';\nimport PyProcessor from './PyProcessor';\nimport { destructPromise } from './async-queue';\nimport { getPort } from 'portfinder';\nimport util from 'util';\nimport { Options } from 'python-shell';\n\nconst getPortPromise = util.promisify(getPort);\n\nexport interface LayoutResult {\n\tdetection: starry.PageLayout;\n\ttheta: number;\n\tinterval: number;\n\tsourceSize?: {\n\t\twidth: number;\n\t\theight: number;\n\t};\n}\n\nexport interface PredictorInterface {\n\tlayout: (streams: Buffer[]) => LayoutResult[];\n\tlayout$reinforce: (streams: Buffer[], baseLayouts: LayoutResult[]) => LayoutResult[];\n\tgauge: (streams: Buffer[]) => {\n\t\timage: Buffer;\n\t}[];\n\tmask: (streams: Buffer[]) => {\n\t\timage: Buffer;\n\t}[];\n\tsemantic: (streams: Buffer[]) => any[];\n\ttextLoc: (streams: Buffer[]) => any[];\n\ttextOcr: (params: { buffers: Buffer[]; location: any[] }) => any[];\n\tbrackets: (params: { buffers: Buffer[] }) => any[];\n\ttopo: (params: { clusters: starry.EventCluster[] }) => any[];\n\tgaugeRenderer: (params: [Buffer, Buffer, number]) => { buffer: Buffer; size: { width: number; height: number } };\n\tjianpu: (params: { buffers: Buffer[] }) => any[];\n\t// [source: Buffer, gauge: Buffer, baseY: number]\n}\n\ntype PredictorType = keyof PredictorInterface;\n\nexport type PyClientsConstructOptions = Partial>;\n\nexport class PyClients {\n\tclients = new Map>();\n\n\tconstructor(public readonly options: PyClientsConstructOptions, public readonly logger: Logger = console) {}\n\n\tasync getClient(type: PredictorType) {\n\t\tif (this.clients.has(type)) {\n\t\t\treturn this.clients.get(type);\n\t\t}\n\n\t\tconst [promise, resolve, reject] = destructPromise();\n\n\t\tconst opt = this.options[type];\n\n\t\tif (!opt) {\n\t\t\tthrow new Error(`no config for client \\`${type}\\` found`);\n\t\t}\n\n\t\ttry {\n\t\t\tif (typeof opt === 'string') {\n\t\t\t\tconst client = new ZeroClient();\n\t\t\t\tclient.bind(opt);\n\t\t\t\tresolve(client);\n\t\t\t} else {\n\t\t\t\tconst { scriptPath, ...option } = opt;\n\t\t\t\tconst client = new PyProcessor(scriptPath, option, this.logger);\n\t\t\t\tawait client.bind(`${await getPortPromise()}`);\n\t\t\t\tresolve(client);\n\t\t\t}\n\n\t\t\tthis.logger.info(`PyClients: ${type} started`);\n\t\t} catch (err) {\n\t\t\tthis.logger.error(`PyClients: ${type} start fail: ${JSON.stringify(err)}`);\n\t\t\treject(err);\n\t\t}\n\n\t\tthis.clients.set(type, promise);\n\n\t\treturn promise;\n\t}\n\n\tasync checkHost(type: PredictorType): Promise {\n\t\tconst client = await this.getClient(type);\n\n\t\treturn client.request('checkHost');\n\t}\n\n\tasync warmup() {\n\t\tconst opts = Object.keys(this.options) as PredictorType[];\n\t\tawait Promise.all(opts.map((type) => this.getClient(type)));\n\t}\n\n\t/**\n\t * 模型预测\n\t * @param type layout | mask | gauge | semantic\n\t * @param args\n\t */\n\tasync predictScoreImages(type: T, ...args: Parameters): Promise> {\n\t\tconst clientType = type.split('$')[0] as PredictorType;\n\t\tconst client = await this.getClient(clientType);\n\t\tlet res = null;\n\n\t\tthis.logger.info(`[predictor]: ${type} py start..`);\n\t\tconst start = Date.now();\n\n\t\tswitch (type) {\n\t\t\tcase 'layout':\n\t\t\t\tres = await client.request('predictDetection', args);\n\t\t\t\tbreak;\n\t\t\tcase 'layout$reinforce':\n\t\t\t\tres = await client.request('predictReinforce', args);\n\t\t\t\tbreak;\n\t\t\tcase 'gauge':\n\t\t\tcase 'mask':\n\t\t\t\tres = await client.request('predict', args, { by_buffer: true });\n\t\t\t\tbreak;\n\t\t\tcase 'semantic':\n\t\t\tcase 'textLoc':\n\t\t\t\tres = await client.request('predict', args);\n\t\t\t\tbreak;\n\t\t\tcase 'textOcr':\n\t\t\tcase 'brackets':\n\t\t\tcase 'topo':\n\t\t\tcase 'gaugeRenderer':\n\t\t\tcase 'jianpu':\n\t\t\t\tres = await client.request('predict', ...args);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.logger.error(`[predictor]: no predictor ${type}`);\n\t\t}\n\n\t\tthis.logger.info(`[predictor]: ${type} py duration: ${Date.now() - start}ms`);\n\n\t\treturn res;\n\t}\n}\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var crypt = require('crypt'),\n utf8 = require('charenc').utf8,\n bin = require('charenc').bin,\n\n // The core\n sha1 = function (message) {\n // Convert to byte array\n if (message.constructor == String)\n message = utf8.stringToBytes(message);\n else if (typeof Buffer !== 'undefined' && typeof Buffer.isBuffer == 'function' && Buffer.isBuffer(message))\n message = Array.prototype.slice.call(message, 0);\n else if (!Array.isArray(message))\n message = message.toString();\n\n // otherwise assume byte array\n\n var m = crypt.bytesToWords(message),\n l = message.length * 8,\n w = [],\n H0 = 1732584193,\n H1 = -271733879,\n H2 = -1732584194,\n H3 = 271733878,\n H4 = -1009589776;\n\n // Padding\n m[l >> 5] |= 0x80 << (24 - l % 32);\n m[((l + 64 >>> 9) << 4) + 15] = l;\n\n for (var i = 0; i < m.length; i += 16) {\n var a = H0,\n b = H1,\n c = H2,\n d = H3,\n e = H4;\n\n for (var j = 0; j < 80; j++) {\n\n if (j < 16)\n w[j] = m[i + j];\n else {\n var n = w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16];\n w[j] = (n << 1) | (n >>> 31);\n }\n\n var t = ((H0 << 5) | (H0 >>> 27)) + H4 + (w[j] >>> 0) + (\n j < 20 ? (H1 & H2 | ~H1 & H3) + 1518500249 :\n j < 40 ? (H1 ^ H2 ^ H3) + 1859775393 :\n j < 60 ? (H1 & H2 | H1 & H3 | H2 & H3) - 1894007588 :\n (H1 ^ H2 ^ H3) - 899497514);\n\n H4 = H3;\n H3 = H2;\n H2 = (H1 << 30) | (H1 >>> 2);\n H1 = H0;\n H0 = t;\n }\n\n H0 += a;\n H1 += b;\n H2 += c;\n H3 += d;\n H4 += e;\n }\n\n return [H0, H1, H2, H3, H4];\n },\n\n // Public API\n api = function (message, options) {\n var digestbytes = crypt.wordsToBytes(sha1(message));\n return options && options.asBytes ? digestbytes :\n options && options.asString ? bin.bytesToString(digestbytes) :\n crypt.bytesToHex(digestbytes);\n };\n\n api._blocksize = 16;\n api._digestsize = 20;\n\n module.exports = api;\n})();\n","import SparkMD5 from 'spark-md5';\n//import JSZip from 'jszip';\nimport * as starry from '../../src/starry';\n//import { encodeFindResource } from '../../src/isomorphic/converter';\nimport sharp, { FormatEnum } from 'sharp';\nimport got from 'got';\n//import { Logger } from './ZeroClient';\nimport type { SolutionStore, SaveIssueMeasure } from './store';\nimport { ScoreJSON } from '../../src/isomorphic/types';\n\nconst SYSTEM_MARGIN = 4;\n\nexport const constructSystem = ({ page, backgroundImage, detection, imageSize, position }) => {\n\tconst systemWidth = (detection.phi2 - detection.phi1) / detection.interval;\n\tconst systemHeight = imageSize.height / detection.interval;\n\n\tconst lastSystem = page.systems[page.systems.length - 1];\n\tconst top = position ? position.y : (lastSystem ? lastSystem.top + lastSystem.height : 0) + SYSTEM_MARGIN;\n\tconst left = position ? position.x : SYSTEM_MARGIN;\n\n\tconst stavesTops = [\n\t\t0,\n\t\t...Array(detection.middleRhos.length - 1)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => (detection.middleRhos[i] + detection.middleRhos[i + 1]) / 2 / detection.interval),\n\t];\n\n\tconst measureBars = [systemWidth];\n\n\tconst staves = stavesTops.map(\n\t\t(top, i) =>\n\t\t\tnew starry.Staff({\n\t\t\t\ttop,\n\t\t\t\theight: (stavesTops[i + 1] || systemHeight) - top,\n\t\t\t\tstaffY: detection.middleRhos[i] / detection.interval - top,\n\t\t\t\tmeasureBars,\n\t\t\t})\n\t);\n\n\t//console.log(\"detection:\", detection, options, stavesTops);\n\n\tconst imagePosition = {\n\t\tx: -detection.phi1 / detection.interval,\n\t\ty: 0,\n\t\twidth: imageSize.width / detection.interval,\n\t\theight: imageSize.height / detection.interval,\n\t};\n\n\treturn new starry.System({\n\t\tstaves,\n\t\tleft,\n\t\ttop,\n\t\twidth: systemWidth,\n\t\tbackgroundImage,\n\t\timagePosition,\n\t\tmeasureBars,\n\t});\n};\n\nexport interface ConvertOption {\n\tformat?: keyof FormatEnum;\n\tquality?: number;\n\tmaxHeight?: number;\n}\n\nconst toBuffer = async (url: string | Buffer): Promise => {\n\tif (typeof url === 'string') {\n\t\tif (/^https?:\\/\\//.test(url)) {\n\t\t\treturn (await got(url, { responseType: 'buffer', decompress: true, https: { rejectUnauthorized: false } })).body;\n\t\t}\n\n\t\tif (/^data:image\\//.test(url)) {\n\t\t\treturn Buffer.from(url.split(',')[1], 'base64');\n\t\t}\n\n\t\treturn Buffer.from(url);\n\t}\n\n\treturn url;\n};\n\n/**\n * 转换图片格式,默认webp、最大高度1080,高度小于1080自动不做尺寸变换\n * @param url\n * @param format\n * @param maxHeight\n * @param quality\n */\nexport async function convertImage(url: string | Buffer, { format = 'webp', maxHeight = 1080, quality = 80 }: ConvertOption = {}) {\n\tlet buf = await toBuffer(url);\n\n\tconst webpBuffer = await new Promise((resolve) => {\n\t\tsharp(buf)\n\t\t\t.resize({\n\t\t\t\twidth: maxHeight,\n\t\t\t\theight: maxHeight,\n\t\t\t\tfit: 'inside',\n\t\t\t\twithoutEnlargement: true,\n\t\t\t})\n\t\t\t.toFormat(format, { quality })\n\t\t\t.toBuffer((err, buf) => {\n\t\t\t\tresolve(buf);\n\t\t\t});\n\t});\n\n\tconst md5 = SparkMD5.ArrayBuffer.hash(webpBuffer);\n\n\treturn {\n\t\tbuffer: webpBuffer,\n\t\tfilename: `${md5}.${format}`,\n\t};\n}\n\n/**\n * 替换scoreJson图片地址\n * @param scoreJson\n * @param onReplaceImage\n */\nexport const replaceScoreJsonImages = (scoreJson: ScoreJSON, onReplaceImage: (src: string) => string = (src) => src) => {\n\tconst json = JSON.parse(JSON.stringify(scoreJson));\n\n\tjson.pages.forEach((page) => {\n\t\tpage?.src && (page.src = onReplaceImage(page?.src));\n\t});\n\n\tjson.lines.forEach((system) => {\n\t\tsystem.lineStaves.forEach((line) => {\n\t\t\tline.imgs.forEach((staff) => {\n\t\t\t\tstaff?.src && (staff.src = onReplaceImage(staff.src));\n\t\t\t});\n\t\t});\n\t});\n\n\treturn json;\n};\n\n/**\n * 获取scoreJson图片资源列表\n * @param scoreJson\n */\nexport const getScoreJsonImages = (scoreJson: ScoreJSON) => {\n\treturn [\n\t\t...scoreJson.pages.map((page) => page?.src),\n\t\t...scoreJson.lines\n\t\t\t.map((system) => system.lineStaves.map((staff) => staff.imgs))\n\t\t\t.flat(2)\n\t\t\t.map((staff) => staff?.src)\n\t\t\t.filter(Boolean),\n\t];\n};\n\ninterface ScorePatchesUpdateOptions {\n\tsolutionStore?: SolutionStore;\n}\n\nexport const updateScorePatches = (score: starry.Score, measures: starry.SpartitoMeasure[], options: ScorePatchesUpdateOptions = {}): void => {\n\tconsole.assert(\n\t\tmeasures.every((measure) => measure.validRegulated),\n\t\t'[updateScorePatches] some measures not valid regulated:',\n\t\tmeasures.filter((measure) => !measure.validRegulated)\n\t);\n\n\tscore.patches = measures.map((measure) => measure.createPatch());\n\n\tif (options?.solutionStore) {\n\t\tscore.assemble();\n\t\tconst spartito = score.makeSpartito();\n\n\t\tmeasures.forEach((measure) => {\n\t\t\toptions.solutionStore!.set(measure.regulationHash, { ...measure.asSolution(), priority: 1 });\n\t\t\tif (measure.regulationHash0 !== measure.regulationHash) {\n\t\t\t\tconst originMeasure = spartito.measures.find((m) => m.measureIndex === measure.measureIndex);\n\t\t\t\toptions.solutionStore!.set(measure.regulationHash0, { ...measure.asSolution(originMeasure), priority: 1 });\n\t\t\t}\n\t\t});\n\t}\n};\n\ninterface EditableMeasuresSaveOptions {\n\tstatus?: number;\n\tsolutionStore?: SolutionStore;\n}\n\nexport const saveEditableMeasures = async (\n\tscore: starry.Score,\n\tmeasureIndices: number[],\n\tsaveMeasure: SaveIssueMeasure,\n\t{ status = 2, solutionStore }: EditableMeasuresSaveOptions = {}\n): Promise => {\n\tscore.assemble();\n\tconst spartito = score.spartito || score.makeSpartito();\n\n\tconst measures = measureIndices\n\t\t.map((index) => spartito.measures.find((measure) => measure.measureIndex === index))\n\t\t.filter(Boolean) as starry.SpartitoMeasure[];\n\n\tif (solutionStore) {\n\t\tconst solutions = await solutionStore.batchGet(measures.map((measure) => measure.regulationHash0));\n\t\tmeasures.forEach((measure, i) => {\n\t\t\tconst solution = solutions[i];\n\t\t\tif (solution) measure.applySolution(solution);\n\t\t});\n\t}\n\n\tmeasures.forEach((measure) => {\n\t\tsaveMeasure({\n\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\tmeasure: new starry.EditableMeasure(measure),\n\t\t\tstatus,\n\t\t});\n\t});\n};\n","import sha1 from 'sha1';\nimport { Canvas, Image, loadImage } from 'skia-canvas';\nimport { WeakLRUCache } from 'weak-lru-cache';\nimport * as starry from '../../src/starry';\nimport { SemanticGraph } from '../../src/starry';\nimport { LayoutResult, PyClients } from './predictors';\nimport { constructSystem, convertImage } from './util';\n\nglobalThis.OffscreenCanvas = (globalThis as any).OffscreenCanvas || Canvas;\n(globalThis as any).Image = (globalThis as any).Image || Image;\nglobalThis.btoa = globalThis.btoa || ((str: string) => Buffer.from(str, 'binary').toString('base64'));\n\nconst STAFF_PADDING_LEFT = 32;\n\nconst MAX_PAGE_WIDTH = 1200;\n\nconst GAUGE_VISION_SPEC = {\n\tviewportHeight: 256,\n\tviewportUnit: 8,\n};\n\nconst MASK_VISION_SPEC = {\n\tviewportHeight: 192,\n\tviewportUnit: 8,\n};\n\nconst SEMANTIC_VISION_SPEC = {\n\tviewportHeight: 192,\n\tviewportUnit: 8,\n};\n\ninterface OMRStat {\n\tcost: number; // in milliseconds\n\tpagesCost: number; // in milliseconds\n\tpages: number;\n}\n\ninterface OMRSummary {\n\tcostTotal: number; // in milliseconds\n\tcostPerPage: number; // in milliseconds\n\tpagesTotal: number;\n\tscoreN: number;\n}\n\n/**\n * 为布局识别的图片标准化处理\n * @param image\n * @param width\n */\nfunction scaleForLayout(image: Image, width: number): Canvas {\n\tlet height = (image.height / image.width) * width;\n\n\tconst canvas = new Canvas(width, height);\n\tconst ctx = canvas.getContext('2d');\n\n\tctx.drawImage(image, 0, 0, width, (width * image.height) / image.width);\n\n\treturn canvas;\n}\n\n/**\n * 根据所有图像的检测结果设置合适的全局页面尺寸\n * @param score\n * @param detections\n * @param outputWidth\n */\nfunction setGlobalPageSize(score: starry.Score, detections: LayoutResult[], outputWidth: number) {\n\tconst sizeRatios = detections\n\t\t.filter((s) => s && s.detection && s.detection.areas?.length)\n\t\t.map((v, k) => {\n\t\t\tconst staffInterval = Math.min(...v.detection.areas.filter((area) => area.staves?.middleRhos?.length).map((x) => x.staves.interval));\n\n\t\t\tconst sourceSize = v.sourceSize;\n\t\t\treturn {\n\t\t\t\t...v,\n\t\t\t\tindex: k,\n\t\t\t\tvw: sourceSize.width / staffInterval, // 页面宽度(逻辑单位)\n\t\t\t\thwr: sourceSize.height / sourceSize.width, // 页面高宽比\n\t\t\t};\n\t\t});\n\n\tif (!sizeRatios.length) {\n\t\tthrow new Error('empty result');\n\t}\n\n\tconst maxVW = sizeRatios.sort((a, b) => b.vw - a.vw)[0];\n\tconst maxAspect = Math.max(...sizeRatios.map((r) => r.hwr));\n\n\tscore.unitSize = outputWidth / maxVW.vw;\n\n\t// 页面显示尺寸\n\tscore.pageSize = {\n\t\twidth: outputWidth,\n\t\theight: outputWidth * maxAspect,\n\t};\n}\n\nconst batchTask = (fn: () => Promise) => fn();\nconst concurrencyTask = (fns: (() => Promise)[]) => Promise.all(fns.map((fn) => fn()));\n\nconst shootStaffImage = async (\n\tsystem: starry.System,\n\tstaffIndex: number,\n\t{ paddingLeft = 0, scaling = 1, spec }: { paddingLeft?: number; scaling?: number; spec: { viewportHeight: number; viewportUnit: number } }\n): Promise => {\n\tif (!system || !system.backgroundImage) return null;\n\n\tconst staff = system.staves[staffIndex];\n\tif (!staff) return null;\n\n\tconst middleUnits = spec.viewportHeight / spec.viewportUnit / 2;\n\n\tconst width = system.imagePosition.width * spec.viewportUnit;\n\tconst height = system.imagePosition.height * spec.viewportUnit;\n\tconst x = system.imagePosition.x * spec.viewportUnit + paddingLeft;\n\tconst y = (system.imagePosition.y - (staff.top + staff.staffY - middleUnits)) * spec.viewportUnit;\n\n\tconst canvas = new Canvas(Math.round(width + x) * scaling, spec.viewportHeight * scaling);\n\tconst context = canvas.getContext('2d');\n\tcontext.fillStyle = 'white';\n\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\tcontext.drawImage(await loadImage(system.backgroundImage), x * scaling, y * scaling, width * scaling, height * scaling);\n\n\treturn canvas;\n\t// .substr(22);\t// remove the prefix of 'data:image/png;base64,'\n};\n\n/**\n * 根据布局检测结果进行截图\n * @param score\n * @param pageCanvas\n * @param page\n * @param detection\n */\nasync function shootImageByDetection({\n\tpage,\n\tscore,\n\tpageCanvas,\n}: {\n\tscore: starry.Score;\n\tpage: starry.Page;\n\tpageCanvas: Canvas; // 原始图片绘制好的canvas\n}) {\n\tif (!page?.layout?.areas?.length) {\n\t\treturn null;\n\t}\n\n\tpage.width = score.pageSize.width / score.unitSize;\n\tpage.height = score.pageSize.height / score.unitSize;\n\n\tconst correctCanvas = new Canvas(pageCanvas.width, pageCanvas.height);\n\tconst ctx = correctCanvas.getContext('2d');\n\n\tctx.save();\n\n\tconst { width, height } = correctCanvas;\n\tconst [a, b, c, d] = page.source.matrix;\n\n\tctx.setTransform(a, b, c, d, (-1 / 2) * width + (1 / 2) * a * width + (1 / 2) * b * height, (-1 / 2) * height + (1 / 2) * c * width + (1 / 2) * d * height);\n\n\tctx.drawImage(pageCanvas, 0, 0);\n\n\tctx.restore();\n\n\tconst interval = page.source.interval;\n\n\tpage.layout.areas.map((area, systemIndex) => {\n\t\tconsole.assert(area.staves?.middleRhos?.length, '[shootImageByDetection] empty area:', area);\n\n\t\tconst data = ctx.getImageData(area.x, area.y, area.width, area.height);\n\n\t\tconst canvas = new Canvas(area.width, area.height);\n\n\t\tconst context = canvas.getContext('2d');\n\t\t// context.rotate(-area.staves.theta);\n\t\tcontext.putImageData(data, 0, 0);\n\n\t\tconst detection = area.staves;\n\t\tconst size = { width: area.width, height: area.height };\n\n\t\tconst sourceCenter = {\n\t\t\tx: pageCanvas.width / 2 / interval,\n\t\t\ty: pageCanvas.height / 2 / interval,\n\t\t};\n\n\t\tconst position = {\n\t\t\tx: (area.x + area.staves.phi1) / interval - sourceCenter.x + page.width / 2,\n\t\t\ty: area.y / interval - sourceCenter.y + page.height / 2,\n\t\t};\n\n\t\tpage.systems[systemIndex] = constructSystem({\n\t\t\tpage,\n\t\t\tbackgroundImage: canvas.toBufferSync('png'),\n\t\t\tdetection,\n\t\t\timageSize: size,\n\t\t\tposition,\n\t\t});\n\t});\n\n\treturn correctCanvas;\n}\n\nasync function shootStaffBackgroundImage({ system, staff, staffIndex }: { system: starry.System; staff: starry.Staff; staffIndex: number }) {\n\tconst sourceCanvas = await shootStaffImage(system, staffIndex, {\n\t\tpaddingLeft: STAFF_PADDING_LEFT,\n\t\tspec: SEMANTIC_VISION_SPEC,\n\t});\n\n\tstaff.backgroundImage = sourceCanvas.toBufferSync('png');\n\n\t// No phi1 offset here: shootStaffImage bakes the system's barline offset\n\t// into the canvas coordinate space, so -paddingLeft is already correct.\n\tstaff.imagePosition = {\n\t\tx: -STAFF_PADDING_LEFT / SEMANTIC_VISION_SPEC.viewportUnit,\n\t\ty: staff.staffY - SEMANTIC_VISION_SPEC.viewportHeight / 2 / SEMANTIC_VISION_SPEC.viewportUnit,\n\t\twidth: sourceCanvas.width / SEMANTIC_VISION_SPEC.viewportUnit,\n\t\theight: sourceCanvas.height / SEMANTIC_VISION_SPEC.viewportUnit,\n\t};\n}\n\n/**\n * 单个staff的变形矫正\n * @param system\n * @param staff\n * @param staffIndex\n * @param gaugeImage\n * @param pyClients\n */\nasync function gaugeStaff({\n\tsystem,\n\tstaff,\n\tstaffIndex,\n\tgaugeImage,\n\tpyClients,\n}: {\n\tsystem: starry.System;\n\tstaff: starry.Staff;\n\tstaffIndex: number;\n\tgaugeImage: Buffer;\n\tpyClients: PyClients;\n}) {\n\tconst sourceCanvas = await shootStaffImage(system, staffIndex, {\n\t\tpaddingLeft: STAFF_PADDING_LEFT,\n\t\tspec: GAUGE_VISION_SPEC,\n\t\tscaling: 2,\n\t});\n\n\tconst sourceBuffer = sourceCanvas.toBufferSync('png');\n\n\tconst baseY = (system.middleY - (staff.top + staff.staffY)) * GAUGE_VISION_SPEC.viewportUnit + GAUGE_VISION_SPEC.viewportHeight / 2;\n\n\tconst { buffer, size } = await pyClients.predictScoreImages('gaugeRenderer', [sourceBuffer, gaugeImage, baseY]);\n\n\tstaff.backgroundImage = buffer;\n\n\tstaff.imagePosition = {\n\t\tx: -STAFF_PADDING_LEFT / GAUGE_VISION_SPEC.viewportUnit,\n\t\ty: staff.staffY - size.height / 2 / GAUGE_VISION_SPEC.viewportUnit,\n\t\twidth: size.width / GAUGE_VISION_SPEC.viewportUnit,\n\t\theight: size.height / GAUGE_VISION_SPEC.viewportUnit,\n\t};\n\n\tstaff.maskImage = null;\n}\n\n/**\n * 单个staff的降噪\n * @param staff\n * @param staffIndex\n * @param maskImage\n */\nasync function maskStaff({ staff, staffIndex, maskImage }: { staff: starry.Staff; staffIndex: number; maskImage: Buffer }) {\n\tconst img = await loadImage(maskImage);\n\n\tstaff.maskImage = maskImage;\n\tstaff.imagePosition = {\n\t\tx: -STAFF_PADDING_LEFT / MASK_VISION_SPEC.viewportUnit,\n\t\ty: staff.staffY - MASK_VISION_SPEC.viewportHeight / 2 / MASK_VISION_SPEC.viewportUnit,\n\t\twidth: img.width / MASK_VISION_SPEC.viewportUnit,\n\t\theight: img.height / MASK_VISION_SPEC.viewportUnit,\n\t};\n}\n\n/**\n * 单个staff的语义识别\n * @param score\n * @param staffIndex\n * @param system\n * @param staff\n * @param graph\n */\nasync function semanticStaff({\n\tscore,\n\tstaffIndex,\n\tsystem,\n\tstaff,\n\tgraph,\n}: {\n\tscore: starry.Score;\n\tstaffIndex: number;\n\tsystem: starry.System;\n\tstaff: starry.Staff;\n\tgraph: SemanticGraph;\n}) {\n\tgraph.offset(-STAFF_PADDING_LEFT / SEMANTIC_VISION_SPEC.viewportUnit, 0);\n\n\tsystem.assignSemantics(staffIndex, graph);\n\n\tstaff.assignSemantics(graph);\n\tstaff.clearPredictedTokens();\n\n\tscore.assembleSystem(system, score.settings?.semanticConfidenceThreshold || 1);\n}\n\nfunction replacePageImages(page: starry.Page, onReplaceImageKey: (src: string) => any) {\n\tconst tasks = [\n\t\t[page.source, 'url'],\n\t\t...page.systems\n\t\t\t.map((system) => {\n\t\t\t\treturn [\n\t\t\t\t\t[system, 'backgroundImage'],\n\t\t\t\t\t...system.staves\n\t\t\t\t\t\t.map((staff) => [\n\t\t\t\t\t\t\t[staff, 'backgroundImage'],\n\t\t\t\t\t\t\t[staff, 'maskImage'],\n\t\t\t\t\t\t])\n\t\t\t\t\t\t.flat(),\n\t\t\t\t];\n\t\t\t})\n\t\t\t.flat(),\n\t];\n\n\ttasks.map(([target, key]: [any, string]) => {\n\t\ttarget[key] = onReplaceImageKey(target[key]);\n\t});\n}\n\nexport type TaskProgress = { total?: number; finished?: number };\n\nexport interface OMRPage {\n\turl: string | Buffer;\n\tkey?: string;\n\tlayout?: LayoutResult;\n\trenew?: boolean;\n\tenableGauge?: boolean;\n}\n\nexport interface ProgressState {\n\tlayout?: TaskProgress;\n\ttext?: TaskProgress;\n\tgauge?: TaskProgress;\n\tmask?: TaskProgress;\n\tsemantic?: TaskProgress;\n\tregulate?: TaskProgress;\n\tbrackets?: TaskProgress;\n}\n\nclass OMRProgress {\n\tstate: ProgressState = {};\n\n\tonChange: (evt: ProgressState) => void;\n\n\tconstructor(onChange: (evt: ProgressState) => void) {\n\t\tthis.onChange = onChange;\n\t}\n\n\tsetTotal(stage: keyof ProgressState, total: number) {\n\t\tthis.state[stage] = this.state[stage] || {\n\t\t\ttotal,\n\t\t\tfinished: 0,\n\t\t};\n\t}\n\n\tincrease(stage: keyof ProgressState, step = 1) {\n\t\tconst info: TaskProgress = this.state[stage] || {\n\t\t\tfinished: 0,\n\t\t};\n\t\tinfo.finished += step;\n\n\t\tthis.onChange(this.state);\n\t}\n}\n\ntype SourceImage = string | Buffer;\n\nexport interface OMROption {\n\toutputWidth?: number;\n\ttitle?: string; // 曲谱标题\n\tpageStore?: {\n\t\thas?: (key: string) => Promise;\n\t\tget: (key: string) => Promise;\n\t\tset: (key: string, val: string) => Promise;\n\t};\n\trenew?: boolean;\n\tprocesses?: (keyof ProgressState)[]; // 选择流程\n\tonProgress?: (progress: ProgressState) => void;\n\tonReplaceImage?: (src: SourceImage) => Promise; // 替换所有图片地址,用于上传或者格式转换\n}\n\nconst lruCache = new WeakLRUCache();\n\n// 默认store\nconst pageStore = {\n\tasync get(key: string) {\n\t\treturn lruCache.getValue(key) as string;\n\t},\n\tasync set(key: string, val: string) {\n\t\tlruCache.setValue(key, val);\n\t},\n};\n\n/**\n * 默认将图片转换为webp格式的base64字符串\n * @param src\n */\nconst onReplaceImage = async (src: SourceImage) => {\n\tif (src instanceof Buffer || (typeof src === 'string' && (/^https?:\\/\\//.test(src) || /^data:image\\//.test(src)))) {\n\t\tconst webpBuffer = (await convertImage(src)).buffer;\n\t\treturn `data:image/webp;base64,${webpBuffer.toString('base64')}`;\n\t}\n\n\treturn src;\n};\n\n/**\n * 识别所有图片\n * @param pyClients\n * @param images\n * @param option\n */\nexport const predictPages = async (\n\tpyClients: PyClients,\n\timages: OMRPage[],\n\toption: OMROption = { outputWidth: 1200, pageStore, onReplaceImage }\n): Promise<{ score: starry.Score; omitPages: number[]; stat: OMRStat }> => {\n\tconst logger = pyClients.logger;\n\n\toption.outputWidth = option.outputWidth || 1200;\n\toption.pageStore = option.pageStore || pageStore;\n\toption.onReplaceImage = option.onReplaceImage || onReplaceImage;\n\n\toption.processes =\n\t\tArray.isArray(option.processes) && option.processes.length > 0 ? option.processes : ['layout', 'text', 'gauge', 'mask', 'semantic', 'brackets'];\n\tconst progress: OMRProgress = new OMRProgress(option.onProgress);\n\n\tconst t0 = Date.now();\n\n\t// 预处理删除不合法区域\n\timages.forEach((image) => {\n\t\tif (image.layout?.detection) {\n\t\t\timage.layout.detection.areas = image.layout.detection?.areas?.filter((a) => a?.staves?.middleRhos?.length > 0);\n\t\t} else {\n\t\t\tdelete image.layout;\n\t\t}\n\t});\n\n\tconst score = new starry.Score({\n\t\ttitle: option?.title,\n\t\tstavesCount: 2,\n\t\tpaperOptions: {\n\t\t\traggedLast: true,\n\t\t\traggedLastBottom: true,\n\t\t},\n\t\theaders: {},\n\t\tinstrumentDict: {},\n\t\tsettings: {\n\t\t\tenabledGauge: option.processes.includes('gauge'),\n\t\t\tsemanticConfidenceThreshold: 1,\n\t\t},\n\t});\n\n\tlogger.info(`[predictor]: download_source_images-${images.length}`);\n\n\t// 原始拍摄图\n\tconst originalImages: Image[] = await Promise.all(images.map((img) => loadImage(img.url as any)));\n\n\tlogger.info(`[predictor]: source_images_downloaded-${images.length}`);\n\n\t//const INPUT_IMAGE_WIDTH = images.filter((x) => x?.layout?.interval)?.[0]?.layout?.sourceSize?.width;\n\n\t/******************************* 布局识别 start *************************/\n\t// 输入给布局检测的图\n\tconst pageCanvasList: Canvas[] = originalImages.map((img, index) => scaleForLayout(img, images[index]!.layout?.sourceSize?.width ?? img.width));\n\n\tprogress.setTotal('layout', originalImages.length);\n\tprogress.setTotal('text', originalImages.length);\n\n\tconst detections = await Promise.all(\n\t\tpageCanvasList.map(async (cvs, key) => {\n\t\t\tif (!images[key].layout) return (await pyClients.predictScoreImages('layout', [cvs.toBufferSync('png')]))?.[0];\n\n\t\t\t// reinforce layout from front-end if no gauge\n\t\t\tif (!images[key].enableGauge && images[key]?.layout?.detection?.areas?.length)\n\t\t\t\treturn (await pyClients.predictScoreImages('layout$reinforce', [cvs.toBufferSync('png')], [images[key].layout]))?.[0];\n\n\t\t\treturn images[key].layout;\n\t\t})\n\t);\n\n\tdetections.forEach((page) => {\n\t\tpage.detection.areas = page.detection?.areas?.filter((a) => a?.staves?.middleRhos?.length > 0);\n\t});\n\n\tconst imageURLMap = new Map();\n\tconst collectImage = async (source: SourceImage): Promise => {\n\t\tconst url = await option.onReplaceImage(source);\n\t\timageURLMap.set(source, url);\n\t};\n\n\t// 根据所有页面的宽高比决定全局显示尺寸\n\tsetGlobalPageSize(score, detections, option.outputWidth);\n\n\tasync function createPage(detect, pageIndex) {\n\t\tconst { url, key, layout, enableGauge } = images[pageIndex];\n\n\t\tconst pageKey = sha1(JSON.stringify({ key: key || url, layout, enableGauge }));\n\n\t\tconst cachedPageJson = await option.pageStore.get(pageKey);\n\n\t\tconst omit = !option.renew && ((cachedPageJson && !images[pageIndex].renew) || !detect.detection.areas?.length);\n\n\t\tconst page = (score.pages[pageIndex] =\n\t\t\tomit && cachedPageJson\n\t\t\t\t? starry.recoverJSON(cachedPageJson, starry)\n\t\t\t\t: new starry.Page({\n\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\tname: key || (typeof url === 'string' && /https?:\\/\\//.test(url) ? url : null),\n\t\t\t\t\t\t\tsize: 0,\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\tcrop: {\n\t\t\t\t\t\t\t\tunit: '%',\n\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\t\twidth: 100,\n\t\t\t\t\t\t\t\theight: 100,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdimensions: detect.sourceSize,\n\t\t\t\t\t\t\tmatrix: [Math.cos(detect.theta), -Math.sin(detect.theta), Math.sin(detect.theta), Math.cos(detect.theta), 0, 0],\n\t\t\t\t\t\t\tinterval: detect.interval,\n\t\t\t\t\t\t\tneedGauge: images[pageIndex].enableGauge,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlayout: detect.detection,\n\t\t\t\t }));\n\n\t\tconst correctCanvas = omit\n\t\t\t? null\n\t\t\t: await shootImageByDetection({\n\t\t\t\t\tscore,\n\t\t\t\t\tpage,\n\t\t\t\t\tpageCanvas: pageCanvasList[pageIndex],\n\t\t\t });\n\n\t\tprogress.increase('layout');\n\n\t\treturn {\n\t\t\tpage,\n\t\t\tomit,\n\t\t\thash: pageKey,\n\t\t\tcorrectCanvas,\n\t\t};\n\t}\n\n\tconst systemsCount = detections.reduce((acc, x) => acc + (x.detection.areas?.length ?? 0), 0);\n\tconst stavesCount = detections.reduce((acc, x) => acc + (x.detection.areas?.reduce?.((a, y) => a + (y.staves?.middleRhos?.length ?? 0), 0) ?? 0), 0);\n\n\tprogress.setTotal('gauge', stavesCount);\n\tprogress.setTotal('mask', stavesCount);\n\tprogress.setTotal('semantic', stavesCount);\n\tprogress.setTotal('brackets', systemsCount);\n\n\tconst allTasks = [];\n\n\tconst omitPages = [];\n\n\tconst t1 = Date.now();\n\n\tlet n_page = 0;\n\n\tfor (const pageIndex of detections.keys()) {\n\t\tconst pageTasks = [];\n\n\t\tconst { page, correctCanvas, omit, hash } = await createPage(detections[pageIndex], pageIndex);\n\n\t\tpageTasks.push(collectImage(page.source.url));\n\t\tpageTasks.push(...page.systems.map((system) => collectImage(system.backgroundImage)));\n\n\t\tlogger.info(`[predictor]: check_cache_pageIndex-${pageIndex} omit: ${omit}`);\n\t\tif (omit) {\n\t\t\tomitPages.push(pageIndex);\n\t\t} else {\n\t\t\tconst staves = page.systems\n\t\t\t\t.map((system, systemIndex) => system.staves.map((staff, staffIndex) => ({ pageIndex, systemIndex, staffIndex, page, system, staff })))\n\t\t\t\t.flat(1);\n\n\t\t\tawait concurrencyTask([\n\t\t\t\t/******************************* 括号检测 start *************************/\n\t\t\t\tasync () => {\n\t\t\t\t\tif (!option.processes.includes('brackets')) return;\n\n\t\t\t\t\tconst detection = page.layout;\n\t\t\t\t\tconst interval = page.source.interval;\n\n\t\t\t\t\tconst startTime = Date.now();\n\n\t\t\t\t\tconst bracketImages = page.systems.map((system, systemIndex) => {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\tstaves: { middleRhos, phi1 },\n\t\t\t\t\t\t} = detection.areas[systemIndex];\n\n\t\t\t\t\t\tconst topMid = middleRhos[0];\n\t\t\t\t\t\tconst bottomMid = middleRhos[middleRhos.length - 1];\n\n\t\t\t\t\t\tconst sourceRect = {\n\t\t\t\t\t\t\tx: x + phi1 - 4 * interval,\n\t\t\t\t\t\t\ty: y + topMid - 4 * interval,\n\t\t\t\t\t\t\twidth: 8 * interval,\n\t\t\t\t\t\t\theight: bottomMid - topMid + 8 * interval,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst OUTPUT_INTERVAL = 8;\n\n\t\t\t\t\t\tconst canvas = new Canvas(OUTPUT_INTERVAL * 8, (sourceRect.height / interval) * OUTPUT_INTERVAL);\n\n\t\t\t\t\t\tconst context = canvas.getContext('2d');\n\t\t\t\t\t\tcontext.drawImage(correctCanvas, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height, 0, 0, canvas.width, canvas.height);\n\n\t\t\t\t\t\t// console.log(pageIndex, systemIndex, JSON.stringify(sourceRect), correctCanvas.width, correctCanvas.height)\n\t\t\t\t\t\t// const pctx = canvas.getContext('2d')\n\t\t\t\t\t\t// pctx.strokeStyle = 'red'\n\t\t\t\t\t\t// pctx.fillStyle = 'rgba(255, 0, 0, 0.2)'\n\t\t\t\t\t\t// pctx.fillRect(sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height)\n\t\t\t\t\t\t// const area = detections[pageIndex].detection.areas[systemIndex]\n\t\t\t\t\t\t// pctx.strokeStyle = 'green'\n\t\t\t\t\t\t// pctx.fillStyle = 'rgba(0, 255, 0, 0.1)'\n\t\t\t\t\t\t// pctx.fillRect(area.x, area.y, area.width, area.height)\n\t\t\t\t\t\t// pctx.fillRect(area.x, area.y, area.width, area.height)\n\t\t\t\t\t\t// require('fs').writeFile(`test--system-${systemIndex}.png`, canvas.toBufferSync('png'), () => {})\n\t\t\t\t\t\t// require('fs-extra').writeFile(`test--brackets-${pageIndex}-${systemIndex}.png`, canvas.toBufferSync('png'))\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\tbuffer: canvas.toBufferSync('png'),\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\n\t\t\t\t\tlogger.info(`[predictor]: brackets js [pageIndex-${pageIndex}] duration: ${Date.now() - startTime}`);\n\n\t\t\t\t\tconst bracketsRes = await pyClients.predictScoreImages('brackets', { buffers: bracketImages.map((x) => x.buffer) });\n\t\t\t\t\tprogress.increase('brackets', bracketImages.length);\n\n\t\t\t\t\tbracketImages.forEach(({ system }, index) => {\n\t\t\t\t\t\tif (bracketsRes[index]) {\n\t\t\t\t\t\t\tsystem.bracketsAppearance = bracketsRes[index];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t/******************************* 括号检测 end *************************/\n\n\t\t\t\t/******************************* 文本识别 start *************************/\n\t\t\t\tasync () => {\n\t\t\t\t\tif (!option.processes.includes('text')) return;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst startTime = Date.now();\n\n\t\t\t\t\t\t// await require('fs-extra').writeFile(`test--text-location-${pageIndex}.png`, correctCanvas.toBufferSync('png'))\n\t\t\t\t\t\tconst bufferForText = correctCanvas.toBufferSync('png');\n\n\t\t\t\t\t\tconst resultLoc = await pyClients.predictScoreImages('textLoc', [bufferForText]);\n\n\t\t\t\t\t\tconst location = resultLoc[0].filter((box) => box.score > 0);\n\n\t\t\t\t\t\tif (location.length > 0) {\n\t\t\t\t\t\t\tconst [resultOCR] = await pyClients.predictScoreImages('textOcr', {\n\t\t\t\t\t\t\t\tbuffers: [bufferForText],\n\t\t\t\t\t\t\t\tlocation,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tpage.assignTexts(resultOCR.areas, resultOCR.imageSize);\n\t\t\t\t\t\t\tpage.assemble();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlogger.info(`[predictor]: text js [pageIndex-${pageIndex}] duration: ${Date.now() - startTime}`);\n\n\t\t\t\t\t\tprogress.increase('text');\n\n\t\t\t\t\t\tif (!option.title) {\n\t\t\t\t\t\t\tconst coverTexts: {\n\t\t\t\t\t\t\t\tconfidence: number;\n\t\t\t\t\t\t\t\tfontSize: number;\n\t\t\t\t\t\t\t\tid: string;\n\t\t\t\t\t\t\t\ttext: string;\n\t\t\t\t\t\t\t\ttextType: 'Title' | 'Author';\n\t\t\t\t\t\t\t\ttype: starry.TokenType;\n\t\t\t\t\t\t\t\twidth_: number;\n\t\t\t\t\t\t\t\tx: number;\n\t\t\t\t\t\t\t\ty: number;\n\t\t\t\t\t\t\t}[] = score.pages[0].tokens as any;\n\n\t\t\t\t\t\t\tif (Array.isArray(coverTexts) && coverTexts.length > 0) {\n\t\t\t\t\t\t\t\tconst [titleToken] = coverTexts\n\t\t\t\t\t\t\t\t\t.filter((x) => x.type === starry.TokenType.Text && x.textType === 'Title')\n\t\t\t\t\t\t\t\t\t.sort((a, b) => b.fontSize - a.fontSize);\n\n\t\t\t\t\t\t\t\tif (titleToken) {\n\t\t\t\t\t\t\t\t\tscore.title = titleToken.text;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tlogger.error(`[predictor]: text js [pageIndex-${pageIndex}] ${JSON.stringify(err)}`);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t/******************************* 文本识别 end *************************/\n\t\t\t\tasync () => {\n\t\t\t\t\t/******************************* 变形矫正 start *************************/\n\t\t\t\t\tawait batchTask(async () => {\n\t\t\t\t\t\tconst disableGauge = !option.processes.includes('gauge') || images[pageIndex].enableGauge === false;\n\n\t\t\t\t\t\tif (!disableGauge) {\n\t\t\t\t\t\t\tconst gaugeRes = await pyClients.predictScoreImages(\n\t\t\t\t\t\t\t\t'gauge',\n\t\t\t\t\t\t\t\tawait Promise.all(\n\t\t\t\t\t\t\t\t\tstaves.map(async ({ staffIndex, system }) => {\n\t\t\t\t\t\t\t\t\t\tconst startTime = Date.now();\n\t\t\t\t\t\t\t\t\t\tconst sourceCanvas = await shootStaffImage(system, staffIndex, {\n\t\t\t\t\t\t\t\t\t\t\tpaddingLeft: STAFF_PADDING_LEFT,\n\t\t\t\t\t\t\t\t\t\t\tspec: GAUGE_VISION_SPEC,\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\tlogger.info(`[predictor]: gauge js shoot [page-${pageIndex}, staff-${staffIndex}] duration: ${Date.now() - startTime}`);\n\n\t\t\t\t\t\t\t\t\t\treturn sourceCanvas.toBufferSync('png');\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tfor (const [index, { system, staff, pageIndex, staffIndex }] of staves.entries()) {\n\t\t\t\t\t\t\t\tconst startTime = Date.now();\n\n\t\t\t\t\t\t\t\tlogger.info(`[predictor]: gauge js [page-${pageIndex}, staff-${staffIndex}] start..`);\n\t\t\t\t\t\t\t\tawait gaugeStaff({\n\t\t\t\t\t\t\t\t\tpyClients,\n\t\t\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\t\t\tstaff,\n\t\t\t\t\t\t\t\t\tstaffIndex,\n\t\t\t\t\t\t\t\t\tgaugeImage: gaugeRes[index].image,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tlogger.info(`[predictor]: gauge js [page-${pageIndex}, staff-${staffIndex}] duration: ${Date.now() - startTime}`);\n\n\t\t\t\t\t\t\t\tprogress.increase('gauge');\n\n\t\t\t\t\t\t\t\tpageTasks.push(collectImage(staff.backgroundImage));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (const [_, { system, staff, staffIndex }] of staves.entries()) {\n\t\t\t\t\t\t\t\tawait shootStaffBackgroundImage({\n\t\t\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\t\t\tstaff,\n\t\t\t\t\t\t\t\t\tstaffIndex,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tpageTasks.push(collectImage(staff.backgroundImage));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t/******************************* 变形矫正 end *************************/\n\n\t\t\t\t\tawait concurrencyTask([\n\t\t\t\t\t\t/******************************* 降噪 start *************************/\n\t\t\t\t\t\tasync () => {\n\t\t\t\t\t\t\tif (!option.processes.includes('mask')) return;\n\n\t\t\t\t\t\t\tconst maskRes = await pyClients.predictScoreImages(\n\t\t\t\t\t\t\t\t'mask',\n\t\t\t\t\t\t\t\tstaves.map(({ staff }) => staff.backgroundImage as Buffer)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tfor (const [index, { staff, staffIndex }] of staves.entries()) {\n\t\t\t\t\t\t\t\tconst startTime = Date.now();\n\n\t\t\t\t\t\t\t\tawait maskStaff({\n\t\t\t\t\t\t\t\t\tstaff,\n\t\t\t\t\t\t\t\t\tstaffIndex,\n\t\t\t\t\t\t\t\t\tmaskImage: maskRes[index].image,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tlogger.info(`[predictor]: mask js [page-${pageIndex}, ${index}, staff-${staffIndex}] duration: ${Date.now() - startTime}`);\n\t\t\t\t\t\t\t\tprogress.increase('mask');\n\n\t\t\t\t\t\t\t\tpageTasks.push(collectImage(staff.maskImage));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/******************************* 降噪 end *************************/\n\n\t\t\t\t\t\t/******************************* 语义识别 start *************************/\n\t\t\t\t\t\tasync () => {\n\t\t\t\t\t\t\tif (!option.processes.includes('semantic')) return;\n\n\t\t\t\t\t\t\tconst semanticRes = starry.recoverJSON(\n\t\t\t\t\t\t\t\tawait pyClients.predictScoreImages(\n\t\t\t\t\t\t\t\t\t'semantic',\n\t\t\t\t\t\t\t\t\tstaves.map(({ staff }) => staff.backgroundImage as Buffer)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tstarry\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tstaves.forEach(({ system }) => system.clearTokens());\n\n\t\t\t\t\t\t\tfor (const [index, { staffIndex, system, staff }] of staves.entries()) {\n\t\t\t\t\t\t\t\tconst startTime = Date.now();\n\n\t\t\t\t\t\t\t\tawait semanticStaff({\n\t\t\t\t\t\t\t\t\tscore,\n\t\t\t\t\t\t\t\t\tsystem,\n\t\t\t\t\t\t\t\t\tstaff,\n\t\t\t\t\t\t\t\t\tstaffIndex,\n\t\t\t\t\t\t\t\t\tgraph: semanticRes[index],\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t\t\t\t`[predictor]: semantic js [page-${pageIndex}, system-${system.index}, staff-${staff.index}] duration: ${\n\t\t\t\t\t\t\t\t\t\tDate.now() - startTime\n\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tprogress.increase('semantic');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/******************************* 语义识别 end *************************/\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t]);\n\n\t\t\t++n_page;\n\t\t}\n\n\t\tallTasks.push(\n\t\t\tPromise.all(pageTasks).then(() => {\n\t\t\t\treplacePageImages(page, (src) => imageURLMap.get(src));\n\t\t\t\tlogger.info(`[predictor]: pageStore set: [${pageIndex}]`);\n\t\t\t\treturn option.pageStore.set(hash, JSON.stringify(page));\n\t\t\t})\n\t\t);\n\t}\n\n\tconst t2 = Date.now();\n\n\tawait Promise.all(allTasks);\n\n\tlogger.info(`[predictor]: inferenceStaffLayout: ${score.title}, [${score.systems.length}]`);\n\n\tscore.inferenceStaffLayout();\n\n\tlogger.info(`[predictor]: done: ${score.title}`);\n\n\t// correct semantic ids\n\tscore.assemble();\n\n\tconst t3 = Date.now();\n\n\treturn {\n\t\tscore,\n\t\tomitPages,\n\t\tstat: {\n\t\t\tcost: t3 - t0,\n\t\t\tpagesCost: t2 - t1,\n\t\t\tpages: n_page,\n\t\t},\n\t};\n};\n\nexport const abstractOMRStats = (stats: OMRStat[]): OMRSummary => {\n\tconst { costTotal, pagesCostTotal, pagesTotal } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tcostTotal: sum.costTotal + stat.cost,\n\t\t\tpagesCostTotal: sum.pagesCostTotal + stat.pagesCost,\n\t\t\tpagesTotal: sum.pagesTotal + stat.pages,\n\t\t}),\n\t\t{ costTotal: 0, pagesCostTotal: 0, pagesTotal: 0 }\n\t);\n\n\treturn {\n\t\tcostTotal,\n\t\tcostPerPage: pagesTotal ? costTotal / pagesTotal : null,\n\t\tpagesTotal,\n\t\tscoreN: stats.length,\n\t};\n};\n","import { EventTerm } from './term';\nimport type { SpartitoMeasure } from './spartitoMeasure';\n\ninterface EventRectification {\n\tid: number;\n\tdivision?: number;\n\tdots?: number;\n}\n\n// Here suppose sum of pvals equal to 1.\nconst multinomial_1 = (pvals: number[]): number => {\n\tconst n = Math.random();\n\n\tlet s = 0;\n\tfor (let i = 0; i < pvals.length; ++i) {\n\t\ts += pvals[i];\n\t\tif (s > n) return i;\n\t}\n\n\treturn pvals.length - 1;\n};\n\nconst looseVector = (ns: number[], factor = 0.9): number[] => {\n\tconst logits = ns.map((n) => Math.log(n) * factor);\n\tconst n2 = logits.map(Math.exp);\n\n\tconst sum = n2.reduce((sum, x) => sum + x, 0);\n\n\treturn n2.map((x) => x / sum);\n};\n\nconst looseEvent = (event: EventTerm): EventTerm => {\n\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return event;\n\n\tconst divisionVector = event.predisposition?.divisionVector ? looseVector(event.predisposition.divisionVector) : null;\n\tconst dotsVector = event.predisposition?.dotsVector ? looseVector(event.predisposition.dotsVector) : null;\n\n\treturn new EventTerm({\n\t\t...event,\n\t\tpredisposition: {\n\t\t\t...event.predisposition,\n\t\t\tdivisionVector,\n\t\t\tdotsVector,\n\t\t},\n\t});\n};\n\nclass MeasureRectification {\n\tevents: EventRectification[];\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\ttoString(): string {\n\t\treturn this.events\n\t\t\t.map((event) => {\n\t\t\t\tif (!event) return '';\n\n\t\t\t\tconst { division = '', dots = '' } = event;\n\t\t\t\treturn `${division}|${dots}`;\n\t\t\t})\n\t\t\t.join(',');\n\t}\n\n\tstatic default(events: EventTerm[]): MeasureRectification {\n\t\treturn new MeasureRectification({\n\t\t\tevents: events.map((event) => {\n\t\t\t\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return null;\n\n\t\t\t\tconst division = event.predisposition.divisionVector ? event.division : undefined;\n\t\t\t\tconst dots = event.predisposition.dotsVector ? event.dots : undefined;\n\n\t\t\t\treturn { id: event.id, division, dots };\n\t\t\t}),\n\t\t});\n\t}\n\n\tstatic roll(events: EventTerm[]): MeasureRectification {\n\t\treturn new MeasureRectification({\n\t\t\tevents: events.map((event) => {\n\t\t\t\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return null;\n\n\t\t\t\tlet division = undefined;\n\t\t\t\tlet dots = undefined;\n\n\t\t\t\tif (event.predisposition.divisionVector) division = multinomial_1(event.predisposition.divisionVector);\n\n\t\t\t\tif (event.predisposition.dotsVector) dots = multinomial_1(event.predisposition.dotsVector);\n\n\t\t\t\treturn { id: event.id, division, dots };\n\t\t\t}),\n\t\t});\n\t}\n}\n\nconst genMeasureRectifications = function* (measure: SpartitoMeasure): Generator {\n\tconst keys = new Set();\n\n\tconst origin = MeasureRectification.default(measure.events);\n\tkeys.add(origin.toString());\n\n\tyield origin;\n\n\tlet stale = 0;\n\tlet events = measure.events;\n\n\twhile (stale < 100) {\n\t\tif (stale && stale % 10 === 0) events = events.map(looseEvent);\n\n\t\tconst rectification = MeasureRectification.roll(events);\n\t\tconst key = rectification.toString();\n\n\t\tif (keys.has(key)) {\n\t\t\t++stale;\n\t\t\tcontinue;\n\t\t}\n\n\t\tstale = 0;\n\n\t\tkeys.add(key);\n\t\tyield rectification;\n\t}\n};\n\nexport { MeasureRectification, genMeasureRectifications };\n","import { WeakLRUCache } from 'weak-lru-cache';\n\nimport { RegulationSolution, SpartitoMeasure } from '../../src/starry';\n\nconst lruCache = new WeakLRUCache();\n\ninterface SolutionStore {\n\tget: (key: string) => Promise;\n\tset: (key: string, val: RegulationSolution) => Promise;\n\tbatchGet: (keys: string[]) => Promise;\n}\n\n// 默认store\nconst DefaultSolutionStore: SolutionStore = {\n\tasync get(key: string) {\n\t\treturn lruCache.getValue(key) as RegulationSolution;\n\t},\n\tasync set(key: string, val: RegulationSolution) {\n\t\tlruCache.setValue(key, val);\n\t},\n\tasync batchGet(keys: string[]) {\n\t\treturn keys.map((key) => lruCache.getValue(key) as RegulationSolution);\n\t},\n};\n\nconst enum MeasureStatus {\n\tDiscard = -1,\n\tSolved = 0,\n\tIssue = 1,\n\tFatal = 2,\n}\n\ninterface IssueMeasure {\n\tscoreId: string;\n\tmeasureIndex: number;\n\tmeasure: SpartitoMeasure;\n\tstatus: MeasureStatus;\n}\n\ntype SaveIssueMeasure = (data: Omit) => void;\n\nexport { SolutionStore, DefaultSolutionStore, MeasureStatus, IssueMeasure, SaveIssueMeasure };\n","import * as starry from '../../src/starry';\nimport { Logger } from './ZeroClient';\nimport { SolutionStore, DefaultSolutionStore, SaveIssueMeasure, MeasureStatus } from './store';\n\ninterface BeadRegulationCounting {\n\tcached: number;\n\tsimple: number;\n\tcomputed: number;\n\ttryTimes: number;\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\ninterface RegulationBeadStat {\n\ttotalCost: number; // in milliseconds\n\tpickerCost: number; // in milliseconds\n\tmeasures: BeadRegulationCounting;\n\tqualityScore: number;\n}\n\ninterface RegulationBeadSummary {\n\tscoreN: number;\n\n\ttotalCost: number; // in milliseconds\n\tpickerCost: number; // in milliseconds\n\tcostPerMeasure: number | null; // in milliseconds\n\tcostPerTime: number | null; // in milliseconds\n\n\tcached: number;\n\tsimple: number;\n\tcomputed: number;\n\ttryTimes: number;\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\ninterface ProgressInfo {\n\tpass: number;\n\tremaining: number;\n\ttotal: number;\n}\n\ninterface RegulateBeadOption {\n\tlogger?: Logger;\n\tpickers: starry.BeadPicker[];\n\tsolutionStore?: SolutionStore;\n\tignoreCache?: boolean;\n\tfreshOnly?: boolean;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n\tonProgress?: (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean, progress: ProgressInfo) => void;\n\tonPassStart?: (pass: number, conditionName: string, pendingCount: number) => void;\n}\n\ninterface MeasureReord {\n\torigin: starry.SpartitoMeasure;\n\tcurrent: starry.SpartitoMeasure;\n\tevaluation?: starry.MeasureEvaluation;\n\tbaseQuality: number;\n\tpicker: starry.BeadPicker;\n}\n\ninterface BeadSolverOptions {\n\tstopLoss: number;\n\tquotaMax: number;\n\tquotaFactor: number;\n\tptFactor: number;\n}\n\nenum PendingCondition {\n\tErrorOnly,\n\tNotFine,\n\tImperfect,\n}\n\nconst isPending = (evaluation: starry.MeasureEvaluation, condition: PendingCondition) => {\n\tswitch (condition) {\n\t\tcase PendingCondition.ErrorOnly:\n\t\t\treturn evaluation.error;\n\n\t\tcase PendingCondition.Imperfect:\n\t\t\treturn !evaluation.perfect;\n\t}\n\n\treturn !evaluation.fine;\n};\n\ntype OnUpdate = (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean) => void;\n\nconst solveMeasureRecords = async (\n\trecords: MeasureReord[],\n\tonUpdate: OnUpdate,\n\tstdout: NodeJS.WritableStream | null,\n\toptions: Partial,\n\tpendingCondition: PendingCondition = PendingCondition.NotFine,\n\tpass: number = 0,\n\tonProgress?: RegulateBeadOption['onProgress']\n): Promise => {\n\tconst pendingRecords = records.filter(({ evaluation }) => !evaluation || isPending(evaluation, pendingCondition));\n\tstdout?.write('.'.repeat(pendingRecords.length));\n\tstdout?.write('\\b'.repeat(pendingRecords.length));\n\n\tconst total = pendingRecords.length;\n\tlet done = 0;\n\n\tfor (const record of pendingRecords) {\n\t\tconst measure = record.current.deepCopy();\n\t\tmeasure.staffGroups = record.current.staffGroups;\n\n\t\tconst solution = await starry.beadSolver.solveMeasure(measure, { picker: record.picker, ...options });\n\t\tmeasure.applySolution(solution);\n\n\t\tconst evaluation = starry.evaluateMeasure(measure);\n\t\tconst better =\n\t\t\t!record.evaluation ||\n\t\t\tevaluation.fine > record.evaluation.fine ||\n\t\t\t(evaluation.qualityScore > record.evaluation.qualityScore && evaluation.fine === record.evaluation.fine);\n\t\tif (better) {\n\t\t\trecord.evaluation = evaluation;\n\t\t\tObject.assign(record.current, measure);\n\t\t}\n\n\t\tonUpdate(record.current, evaluation, better);\n\n\t\tdone++;\n\t\tonProgress?.(record.current, evaluation, better, { pass, remaining: total - done, total });\n\t}\n\n\tif (pendingRecords.length) stdout?.write('\\n');\n\n\treturn pendingRecords.length;\n};\n\nconst regulateWithBeadSolver = async (\n\tscore: starry.Score,\n\t{ logger, pickers, solutionStore = DefaultSolutionStore, ignoreCache, freshOnly, onSaveIssueMeasure, onProgress, onPassStart }: RegulateBeadOption\n): Promise => {\n\tscore.spartito = undefined;\n\tscore.assemble();\n\tconst spartito = score.makeSpartito();\n\n\tspartito.measures.forEach((measure) => score.assignBackgroundForMeasure(measure));\n\n\tconst t0 = Date.now();\n\tlogger?.info(`[regulateWithBeadSolver] begin, measure total: ${spartito.measures.length}.`, ignoreCache ? 'ignoreCache' : '', freshOnly ? 'freshOnly' : '');\n\n\tconst records = spartito.measures\n\t\t.filter((measure) => measure.events?.length && !measure.patched)\n\t\t.map(\n\t\t\t(measure) =>\n\t\t\t\t({\n\t\t\t\t\torigin: measure.deepCopy(),\n\t\t\t\t\tcurrent: measure,\n\t\t\t\t\tevaluation: undefined,\n\t\t\t\t\tbaseQuality: 0,\n\t\t\t\t} as MeasureReord)\n\t\t);\n\n\t// rectify time signature\n\tfor (const measure of spartito.measures.filter((measure) => measure.events?.length)) {\n\t\tconst picker = pickers.find((picker) => picker.n_seq > measure.events.length + 1);\n\t\tif (picker) await starry.beadSolver.estimateMeasure(measure, picker);\n\t}\n\tspartito.rectifyTimeSignatures(logger as any);\n\n\t// zero pickers' cost\n\tpickers.forEach((picker) => (picker.cost = 0));\n\n\tconst counting = {\n\t\tcached: 0,\n\t\tsimple: 0,\n\t\tcomputed: 0,\n\t\ttryTimes: 0,\n\t\tsolved: 0,\n\t\tissue: 0,\n\t\tfatal: 0,\n\t};\n\n\tlogger?.info(`[regulateWithBeadSolver] measures estimation finished.`);\n\n\t// apply solutions\n\tif (solutionStore && !ignoreCache)\n\t\tfor (const record of records) {\n\t\t\tconst solution = await solutionStore.get(record.origin.regulationHash0);\n\t\t\tif (solution) {\n\t\t\t\trecord.current.applySolution(solution);\n\t\t\t\t++counting.cached;\n\n\t\t\t\trecord.evaluation = starry.evaluateMeasure(record.current);\n\t\t\t\trecord.baseQuality = record.evaluation.qualityScore;\n\t\t\t}\n\t\t}\n\n\tlogger?.info('[regulateWithBeadSolver]', `${counting.cached}/${records.length}`, 'solutions loaded.');\n\n\tconst stdout = logger ? null : process.stdout;\n\tif (counting.cached) stdout?.write(`${counting.cached}c`);\n\n\trecords.forEach((record) => {\n\t\tconst picker = pickers.find((picker) => picker.n_seq > record.current.events.length + 1);\n\t\tif (!picker) {\n\t\t\tlogger?.info(`[regulateWithBeadSolver] measure[${record.current.measureIndex}] size out of range:`, record.current.events.length);\n\t\t} else record.picker = picker;\n\t});\n\n\tconst pendingRecords = records.filter((record) => record.picker && (!record.evaluation || (!record.evaluation.fine && !freshOnly))) as (MeasureReord & {\n\t\tevaluation: starry.MeasureEvaluation;\n\t})[];\n\n\t// solve by simple policy\n\tpendingRecords.forEach((record) => {\n\t\tconst measure = record.current.deepCopy();\n\t\tmeasure.staffGroups = record.current.staffGroups;\n\n\t\tmeasure.regulate({ policy: 'simple' });\n\n\t\tconst evaluation = starry.evaluateMeasure(measure);\n\t\tconst better = !record.evaluation || evaluation.qualityScore > record.evaluation.qualityScore;\n\t\tif (better) {\n\t\t\trecord.evaluation = evaluation;\n\t\t\tObject.assign(record.current, measure);\n\n\t\t\tif (evaluation.perfect) {\n\t\t\t\tlogger?.info(`[regulateWithBeadSolver] measure[${record.current.measureIndex}] regulated by simple policy.`);\n\t\t\t\t++counting.simple;\n\t\t\t}\n\t\t}\n\t});\n\tcounting.computed = pendingRecords.length - counting.simple;\n\n\tif (counting.simple) stdout?.write(`${counting.simple}s`);\n\n\tconst onUpdate = (measure, evaluation, better) => {\n\t\tlogger?.info(\n\t\t\t`[regulateWithBeadSolver] measure[${measure.measureIndex}/${spartito.measures.length}] regulated${\n\t\t\t\tbetter ? '+' : '-'\n\t\t\t}: ${evaluation.qualityScore.toFixed(3)}, ${evaluation.fine ? 'solved' : evaluation.error ? 'error' : 'issue'}, ${measure.regulationHash}`\n\t\t);\n\n\t\tstdout?.write(`\\x1b[${evaluation.fine ? '32' : evaluation.error ? '31' : '33'}m${better ? '+' : '-'}\\x1b[0m`);\n\t};\n\n\t// Global progress: total = all measures, remaining = non-fine measures across all passes\n\tconst totalMeasures = spartito.measures.length;\n\tconst computeRemaining = () => pendingRecords.filter((r) => !r.evaluation?.fine).length;\n\tconst wrappedOnProgress = onProgress\n\t\t? (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean, progress: ProgressInfo) => {\n\t\t\t\tonProgress(measure, evaluation, better, { pass: progress.pass, remaining: computeRemaining(), total: totalMeasures });\n\t\t }\n\t\t: undefined;\n\n\tonPassStart?.(1, 'Imperfect', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.05, quotaMax: 200, quotaFactor: 3, ptFactor: 1 },\n\t\tPendingCondition.Imperfect,\n\t\t1,\n\t\twrappedOnProgress\n\t);\n\tonPassStart?.(2, 'NotFine', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.08, quotaMax: 1000, quotaFactor: 20, ptFactor: 1.6 },\n\t\tPendingCondition.NotFine,\n\t\t2,\n\t\twrappedOnProgress\n\t);\n\tonPassStart?.(3, 'ErrorOnly', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.08, quotaMax: 1000, quotaFactor: 40, ptFactor: 3 },\n\t\tPendingCondition.ErrorOnly,\n\t\t3,\n\t\twrappedOnProgress\n\t);\n\n\tpendingRecords.forEach(({ evaluation, baseQuality, current, origin }) => {\n\t\tif (evaluation.fine) ++counting.solved;\n\t\telse if (evaluation.error) ++counting.fatal;\n\t\telse ++counting.issue;\n\n\t\tif (evaluation.qualityScore > baseQuality || !baseQuality) {\n\t\t\tsolutionStore.set(origin.regulationHash0, { ...current.asSolution(origin), priority: -current?.solutionStat?.loss! });\n\t\t\tif (current.regulationHash !== origin.regulationHash0)\n\t\t\t\tsolutionStore.set(current.regulationHash, { ...current.asSolution(), priority: -current?.solutionStat?.loss! });\n\t\t\t//console.log('better:', current.measureIndex, evaluation.qualityScore, baseQuality);\n\t\t}\n\n\t\tif (!evaluation.fine) {\n\t\t\tonSaveIssueMeasure?.({\n\t\t\t\tmeasureIndex: current.measureIndex,\n\t\t\t\tmeasure: new starry.EditableMeasure(current),\n\t\t\t\tstatus: evaluation.error ? MeasureStatus.Fatal : MeasureStatus.Issue,\n\t\t\t});\n\t\t}\n\t});\n\n\tconst t1 = Date.now();\n\tconst pickerCost = pickers.reduce((cost, picker) => cost + picker.cost, 0);\n\n\tconst qualityScore = spartito.qualityScore;\n\tconst totalCost = t1 - t0;\n\n\tlogger?.info('[regulateWithBeadSolver] done in ', totalCost, 'ms, qualityScore:', qualityScore);\n\n\t// zero 'cached' statistics for freshOnly mode\n\tif (freshOnly) counting.cached = 0;\n\n\treturn {\n\t\ttotalCost: t1 - t0,\n\t\tpickerCost,\n\t\tmeasures: counting,\n\t\tqualityScore,\n\t};\n};\n\nconst abstractRegulationBeadStats = (stats: RegulationBeadStat[]): RegulationBeadSummary => {\n\tconst { totalCost, pickerCost, measureN, timeN } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\ttotalCost: sum.totalCost + stat.totalCost,\n\t\t\tpickerCost: sum.pickerCost + stat.pickerCost,\n\t\t\tmeasureN: sum.measureN + stat.measures.computed,\n\t\t\ttimeN: sum.timeN + stat.measures.tryTimes,\n\t\t}),\n\t\t{\n\t\t\ttotalCost: 0,\n\t\t\tpickerCost: 0,\n\t\t\tmeasureN: 0,\n\t\t\ttimeN: 0,\n\t\t}\n\t);\n\n\tconst costPerMeasure = measureN > 0 ? totalCost / measureN : null;\n\tconst costPerTime = timeN > 0 ? totalCost / timeN : null;\n\n\tconst { cached, simple, computed, tryTimes, solved, issue, fatal } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tcached: sum.cached + stat.measures.cached,\n\t\t\tsimple: sum.simple + stat.measures.simple,\n\t\t\tcomputed: sum.computed + stat.measures.computed,\n\t\t\ttryTimes: sum.tryTimes + stat.measures.tryTimes,\n\t\t\tsolved: sum.solved + stat.measures.solved,\n\t\t\tissue: sum.issue + stat.measures.issue,\n\t\t\tfatal: sum.fatal + stat.measures.fatal,\n\t\t}),\n\t\t{ cached: 0, simple: 0, computed: 0, tryTimes: 0, solved: 0, issue: 0, fatal: 0 }\n\t);\n\n\treturn {\n\t\tscoreN: stats.length,\n\t\ttotalCost,\n\t\tpickerCost,\n\t\tcostPerMeasure,\n\t\tcostPerTime,\n\t\tcached,\n\t\tsimple,\n\t\tcomputed,\n\t\ttryTimes,\n\t\tsolved,\n\t\tissue,\n\t\tfatal,\n\t};\n};\n\nexport { regulateWithBeadSolver, abstractRegulationBeadStats, RegulationBeadStat, ProgressInfo };\n","import * as starry from '../../src/starry';\nimport { PyClients } from './predictors';\nimport { Logger } from './ZeroClient';\nimport { SpartitoMeasure, EditableMeasure, evaluateMeasure } from '../../src/starry';\nimport { EquationPolicy } from '../../src/starry/spartitoMeasure';\nimport { genMeasureRectifications } from '../../src/starry/measureRectification';\nimport { SolutionStore, DefaultSolutionStore, SaveIssueMeasure } from './store';\nexport * from './regulationBead';\n\nglobalThis.btoa = globalThis.btoa || ((str) => Buffer.from(str, 'binary').toString('base64'));\n\nconst RECTIFICATION_SEARCH_ITERATIONS = parseInt(process.env.RECTIFICATION_SEARCH_ITERATIONS || '30');\nconst BASE_QUOTA_FACTOR = parseInt(process.env.BASE_QUOTA_FACTOR || '40');\nconst RECTIFICATION_QUOTA_FACTOR = parseInt(process.env.RECTIFICATION_QUOTA_FACTOR || '80');\n\nconst MATRIXH_INTERPOLATION_K = 0.9;\n\ninterface SolveMeasureOptions {\n\tsolver?: (...args: any[]) => any;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n\tsolutionStore?: SolutionStore;\n\tignoreCache?: boolean;\n\tlogger?: Logger;\n}\n\nconst computeQuota = (n: number, factor: number, limit: number) =>\n\tMath.min(Math.ceil((n + 1) * factor * Math.log(n + 2)), Math.ceil(limit * Math.min(1, (24 / (n + 1)) ** 2)));\n\ninterface BaseRegulationStat {\n\tcached: number;\n\tcomputed: number;\n\tsolved: number;\n}\n\nasync function solveMeasures(\n\tmeasures: SpartitoMeasure[],\n\t{ solver, quotaMax = 1000, quotaFactor = BASE_QUOTA_FACTOR, solutionStore = DefaultSolutionStore, ignoreCache = false, logger }: SolveMeasureOptions = {}\n): Promise {\n\tlet cached = 0;\n\tlet solved = 0;\n\n\tlogger?.info(`[solveMeasures] begin, measure total: ${measures.length}.`);\n\n\tawait Promise.all(\n\t\tmeasures.map(async (measure) => {\n\t\t\tif (!ignoreCache) {\n\t\t\t\tconst solution = await solutionStore.get(measure.regulationHash);\n\t\t\t\tif (solution) {\n\t\t\t\t\tmeasure.applySolution(solution);\n\t\t\t\t\t++cached;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst quota = computeQuota(measure.events.length, quotaFactor, quotaMax);\n\n\t\t\tawait measure.regulate({\n\t\t\t\tpolicy: 'equations',\n\t\t\t\tquota,\n\t\t\t\tsolver,\n\t\t\t});\n\n\t\t\tconst stat = evaluateMeasure(measure);\n\t\t\tif (!stat.error) solutionStore.set(measure.regulationHash0, { ...measure.asSolution(), priority: -measure?.solutionStat?.loss! });\n\t\t\tif (stat.perfect) ++solved;\n\n\t\t\tlogger?.info(\n\t\t\t\t`[solveMeasures] measure[${measure.measureIndex}/${measures.length}] regulated: ${stat.perfect ? 'solved' : stat.error ? 'error' : 'issue'}, ${\n\t\t\t\t\tmeasure.regulationHash\n\t\t\t\t}`\n\t\t\t);\n\t\t})\n\t);\n\n\tlogger?.info(`[solveMeasures] ${cached}/${measures.length} cache hit, ${solved} solved.`);\n\n\treturn {\n\t\tcached,\n\t\tcomputed: measures.length - cached,\n\t\tsolved,\n\t};\n}\n\nconst solveMeasuresWithRectifications = async (\n\tmeasure: SpartitoMeasure,\n\t{ solver, quotaMax = 4000 }: SolveMeasureOptions\n): Promise => {\n\tlet best = evaluateMeasure(measure);\n\tlet bestSolution: starry.RegulationSolution = measure.asSolution();\n\tconst quota = computeQuota(measure.events.length, RECTIFICATION_QUOTA_FACTOR, quotaMax);\n\tlet n_rec = 0;\n\n\t// @ts-ignore\n\tfor (const rec of genMeasureRectifications(measure)) {\n\t\tconst solution = await EquationPolicy.regulateMeasureWithRectification(measure, rec, { solver, quota });\n\n\t\tconst testMeasure = measure.deepCopy() as SpartitoMeasure;\n\t\ttestMeasure.applySolution(solution);\n\t\tconst result = evaluateMeasure(testMeasure);\n\n\t\tif (\n\t\t\tresult.perfect > best.perfect ||\n\t\t\tresult.error < best.error ||\n\t\t\t(!result.error && result.perfect >= best.perfect && solution.priority! > bestSolution.priority!)\n\t\t) {\n\t\t\tbest = result;\n\t\t\tbestSolution = solution;\n\t\t}\n\n\t\tif (result.perfect) break;\n\n\t\t++n_rec;\n\t\tif (n_rec > RECTIFICATION_SEARCH_ITERATIONS) break;\n\t}\n\n\treturn bestSolution;\n};\n\ninterface RegulateWithTopoOption {\n\tsolutionStore: SolutionStore;\n\tpyClients: PyClients;\n\tsolver: (...args: any[]) => any;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n}\n\ninterface RegulateMaybeWithTopoOption {\n\tsolutionStore: SolutionStore;\n\tpyClients?: PyClients;\n\tsolver: (...args: any[]) => any;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n}\n\ninterface RegulateSimpleOption {\n\tsolutionStore: SolutionStore;\n\tsolver: (...args: any[]) => any;\n\tlogger?: Logger;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n}\n\ninterface TopoRegulationStat {\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\nasync function doRegulateWithTopo(\n\tscore: starry.Score,\n\t{ pyClients, solver, solutionStore = DefaultSolutionStore, onSaveIssueMeasure }: RegulateWithTopoOption\n): Promise {\n\tpyClients.logger.info(`[RegulateWithTopo] regulate score: ${score.title}, measures: ${score.spartito!.measures.length}`);\n\n\tconst issueMeasures = score.spartito!.measures.filter((measure) => {\n\t\tconst stat = evaluateMeasure(measure);\n\t\treturn !stat.perfect;\n\t});\n\tpyClients.logger.info(`[RegulateWithTopo] basic issues: ${issueMeasures.length}`);\n\n\tif (issueMeasures.length === 0) {\n\t\treturn {\n\t\t\tsolved: 0,\n\t\t\tissue: 0,\n\t\t\tfatal: 0,\n\t\t};\n\t}\n\n\tconst clusters = ([] as starry.EventCluster[]).concat(...issueMeasures.map((measure) => measure.createClusters()));\n\tconst results = await pyClients.predictScoreImages('topo', { clusters });\n\tconsole.assert(results.length === clusters.length, 'prediction number mismatch:', clusters.length, results.length);\n\n\tclusters.forEach((cluster, index) => {\n\t\tconst result = results[index];\n\t\tconsole.assert(result, 'no result for cluster:', cluster.index);\n\n\t\tcluster.assignPrediction(result);\n\t});\n\n\tissueMeasures.forEach((measure) => {\n\t\tconst cs = clusters.filter((c) => c.index === measure.measureIndex);\n\t\tmeasure.applyClusters(cs);\n\n\t\t// intepolate matrixH\n\t\tconst { matrixH } = EquationPolicy.estiamteMeasure(measure);\n\t\tmatrixH.forEach((row, i) =>\n\t\t\trow.forEach((v, j) => {\n\t\t\t\tmeasure.matrixH[i][j] = measure.matrixH[i][j] * MATRIXH_INTERPOLATION_K + v * (1 - MATRIXH_INTERPOLATION_K);\n\t\t\t})\n\t\t);\n\t});\n\n\tconst solvedIndices: number[] = [];\n\tconst errorIndices: number[] = [];\n\n\t// rectification search\n\tawait Promise.all(\n\t\tissueMeasures.map(async (measure) => {\n\t\t\tconst hash = measure.regulationHash0;\n\t\t\tconst solution = await solveMeasuresWithRectifications(measure, { solver });\n\t\t\tif (solution) {\n\t\t\t\tmeasure.applySolution(solution);\n\t\t\t\tsolutionStore.set(hash, solution);\n\t\t\t\tsolutionStore.set(measure.regulationHash, measure.asSolution());\n\t\t\t\tpyClients.logger.info(`[RegulateWithTopo] solutionStore set: ${measure.measureIndex}, ${hash}, ${measure.regulationHash}`);\n\t\t\t}\n\n\t\t\tconst stat = evaluateMeasure(measure);\n\t\t\tonSaveIssueMeasure?.({\n\t\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\t\tmeasure: new EditableMeasure(measure),\n\t\t\t\tstatus: stat.error ? 2 : 1,\n\t\t\t});\n\t\t\tif (stat.perfect) solvedIndices.push(measure.measureIndex);\n\t\t\telse if (stat.error) errorIndices.push(measure.measureIndex);\n\t\t})\n\t);\n\n\tconst n_issues = issueMeasures.length - solvedIndices.length - errorIndices.length;\n\tpyClients.logger.info(`[RegulateWithTopo] score: ${score.title}, solved/issue/fatal: ${solvedIndices.length}/${n_issues}/${errorIndices.length}`);\n\tif (solvedIndices.length) pyClients.logger.info(`[RegulateWithTopo] solved measures: ${solvedIndices.join(', ')}`);\n\tif (errorIndices.length) pyClients.logger.info(`[RegulateWithTopo] error measures: ${errorIndices.join(', ')}`);\n\n\treturn {\n\t\tsolved: solvedIndices.length,\n\t\tissue: n_issues,\n\t\tfatal: errorIndices.length,\n\t};\n}\n\ninterface RegulationStat {\n\tbaseCost: number; // in milliseconds\n\ttopoCost: number; // in milliseconds\n\tbaseMeasures: BaseRegulationStat;\n\ttopoMeasures?: TopoRegulationStat;\n\tqualityScore: number;\n}\n\nconst doRegulate = async (\n\tscore: starry.Score,\n\t{ pyClients, solver, solutionStore = DefaultSolutionStore, onSaveIssueMeasure }: RegulateMaybeWithTopoOption\n): Promise => {\n\tpyClients?.logger?.info(`[doRegulate] score: ${score.title}`);\n\n\tscore.spartito = undefined;\n\tscore.assemble();\n\tconst spartito = score.makeSpartito();\n\n\tspartito.measures.forEach((measure) => score.assignBackgroundForMeasure(measure));\n\n\tconst t0 = Date.now();\n\n\tconst baseMeasures = await solveMeasures(spartito.measures, { solver, quotaMax: 1000, solutionStore, logger: pyClients?.logger });\n\n\tconst t1 = Date.now();\n\n\tconst topoMeasures = pyClients ? await doRegulateWithTopo(score, { pyClients, solver, solutionStore, onSaveIssueMeasure }) : undefined;\n\n\tconst t2 = Date.now();\n\n\treturn {\n\t\tbaseCost: t1 - t0,\n\t\ttopoCost: t2 - t1,\n\t\tbaseMeasures,\n\t\ttopoMeasures,\n\t\tqualityScore: spartito.qualityScore,\n\t};\n};\n\nconst doSimpleRegulate = async (\n\tscore: starry.Score,\n\t{ solver, solutionStore = DefaultSolutionStore, logger, quotaMax = 240, quotaFactor = 16 }: RegulateSimpleOption\n): Promise => {\n\tscore.assemble();\n\tconst spartito = score.spartito || score.makeSpartito();\n\tconst measures = spartito.measures.filter((measure) => !measure.regulated);\n\n\tawait solveMeasures(measures, { solver, quotaMax, quotaFactor, solutionStore, logger });\n\n\tconsole.assert(score.spartito?.regulated, 'doSimpleRegulate: regulation incomplete:', spartito.measures.filter((measure) => !measure.regulated).length);\n};\n\nconst evaluateScoreQuality = async (score: starry.Score, options: RegulateSimpleOption): Promise => {\n\tif (!score.spartito?.regulated) await doSimpleRegulate(score, options);\n\n\treturn score.spartito!.regulated ? score.spartito!.qualityScore : null;\n};\n\ninterface RegulationSummary {\n\tscoreN: number;\n\n\tbaseCostTotal: number; // in milliseconds\n\ttopoCostTotal: number; // in milliseconds\n\tbaseCostPerMeasure: number | null; // in milliseconds\n\ttopoCostPerMeasure: number | null; // in milliseconds\n\n\tcached: number;\n\tbaseComputed: number;\n\tbaseSolved: number;\n\ttopoSolved: number;\n\ttopoIssue: number;\n\ttopoFatal: number;\n}\n\nconst abstractRegulationStats = (stats: RegulationStat[]): RegulationSummary => {\n\tconst { baseCostTotal, topoCostTotal, baseMeasures, topoMeasures } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tbaseCostTotal: sum.baseCostTotal + stat.baseCost,\n\t\t\ttopoCostTotal: sum.topoCostTotal + stat.topoCost,\n\t\t\tbaseMeasures: sum.baseMeasures + stat.baseMeasures.computed,\n\t\t\ttopoMeasures: sum.topoMeasures + (stat.topoMeasures!.solved + stat.topoMeasures!.issue + stat.topoMeasures!.fatal),\n\t\t}),\n\t\t{\n\t\t\tbaseCostTotal: 0,\n\t\t\ttopoCostTotal: 0,\n\t\t\tbaseMeasures: 0,\n\t\t\ttopoMeasures: 0,\n\t\t}\n\t);\n\n\tconst baseCostPerMeasure = baseMeasures > 0 ? baseCostTotal / baseMeasures : null;\n\tconst topoCostPerMeasure = topoMeasures > 0 ? topoCostTotal / topoMeasures : null;\n\n\tconst { cached, baseComputed, baseSolved, topoSolved, topoIssue, topoFatal } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tcached: sum.cached + stat.baseMeasures.cached,\n\t\t\tbaseComputed: sum.baseComputed + stat.baseMeasures.computed,\n\t\t\tbaseSolved: sum.baseSolved + stat.baseMeasures.solved,\n\t\t\ttopoSolved: sum.topoSolved + stat.topoMeasures!.solved,\n\t\t\ttopoIssue: sum.topoIssue + stat.topoMeasures!.issue,\n\t\t\ttopoFatal: sum.topoFatal + stat.topoMeasures!.fatal,\n\t\t}),\n\t\t{ cached: 0, baseComputed: 0, baseSolved: 0, topoSolved: 0, topoIssue: 0, topoFatal: 0 }\n\t);\n\n\treturn {\n\t\tscoreN: stats.length,\n\t\tbaseCostTotal,\n\t\ttopoCostTotal,\n\t\tbaseCostPerMeasure,\n\t\ttopoCostPerMeasure,\n\t\tcached,\n\t\tbaseComputed,\n\t\tbaseSolved,\n\t\ttopoSolved,\n\t\ttopoIssue,\n\t\ttopoFatal,\n\t};\n};\n\nexport { doRegulate, doSimpleRegulate, evaluateScoreQuality, abstractRegulationStats };\n","console.info(`%cstarry-omr%c v1.0.0 2026-04-23T11:20:50.919Z`, 'color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;', 'color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;');\nimport '../../libs/browserComponents';\n\nexport * from '../../../src/isomorphic/converter';\nexport * as starry from '../../../src/starry';\nexport * from '../../libs/predictors';\nexport * from '../../libs/predictPages';\nexport * from '../../libs/regulation';\nexport * from '../../libs/store';\nexport * from '../../libs/util';\n"],"names":["PageLayoutMethod","TextType","SemanticType","globalThis","btoa","str","Buffer","from","toString","atob","NOTEHEAD_WIDTHS","NoteheadS0","NoteheadS1","NoteheadS2","glyphCenters","x","zero","y","one","two","three","four","five","six","seven","eight","nine","f","m","p","r","s","z","SYSTEM_SEMANTIC_TYPES","BarMeasure","vline_BarMeasure","vline_BarTerminal","vline_BarSegment","vline_VoltaLeft","vline_VoltaRight","VoltaAlternativeBegin","st","CONFLICTION_GROUPS","Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","ScriptStaccatissimo","TimesigZero","TimesigOne","TimesigTwo","TimesigThree","TimesigFour","TimesigFive","TimesigSix","TimesigSeven","TimesigEight","TimesigNine","Rest0","Rest1","Rest2","Rest3","Rest4","Rest5","Rest6","Rest0W","RestM1","SignInterval","SignLined","BeamLeft","BeamContinue","BeamRight","STAMP_SEMANTICS","ClefG","ClefF","ClefC","Dot","AccNatural","AccSharp","AccDoublesharp","AccFlat","AccFlatflat","TimesigC44","TimesigC22","OctaveShift8","OctaveShift0","n","ScriptFermata","ScriptShortFermata","ScriptSforzato","ScriptStaccato","ScriptTurn","ScriptTrill","ScriptSegno","ScriptCoda","ScriptArpeggio","ScriptPrall","ScriptMordent","ScriptMarcato","ScriptTenuto","ScriptPortato","PedalStar","PedalPed","hashSemanticPoint","systemIndex","staffIndex","point","Math","round","source","semantic","hash","sha1","array","slice","id","String","fromCharCode","substring","hashPageSemanticPoint","pageName","TokenType","tt","TokenTypes","Object","values","TokenClefs","filter","t","test","TokenTimesigs","TokenTimesigsC","TokenTimesigsN","TokenOctshifts","TokenNumbers","TokenAccidentals","TokenNoteheads","TokenBareNoteheads","TokenDirectionalNoteheads","TokenRests","TokenFlags","TokenVolta","TokenDynamics","TokenScripts","TokenPedals","TokenDots","DotDot","TokenArcs","SlurBegin","SlurEnd","TieBegin","TieEnd","TokenBeams","TokenWedges","TokenAccessories","TokenDirectionless","TokenGlyphs","TOKEN_Y_ROUND","forEach","TOKEN_Y_FIXED","Token","constructor","data","assign","this","typeId","type","split","reverse","isPredicted","Number","isFinite","confidence","isNotehead","includes","isContexted","isAccessory","division","NoteheadS1stemU","NoteheadS1stemD","NoteheadS2stemU","NoteheadS2stemD","Flag3","Flag4","Flag5","Flag6","Flag7","Flag8","dots","direction","width","left","right","voiceIndices","voice","Array","floor","log2","fill","reduce","indices","_","i","className","TextToken","super","width_","value","recoverJSON","json","classDict","JSON","stringify","parse","__prototype","Class","fields","deepCopy","o","dict","Map","get","isArray","result","set","e","push","entries","key","setPrototypeOf","__proto__","SimpleClass","toJSON","cls","serializedKeys","blackKeys","keys","pick","LayoutType","spreadMeasureSeq","seq","Ordinary","concat","map","layout","serialize","seqToCode","withBrackets","code","inRange","length","SingleMLayout","measure","undefined","BlockMLayout","trimSeq","seq2","sub","seq3","fromSeq","VoltaMLayout","bodySeq","body","alternates","alternateSeqs","lastAlternateSeq","Conservative","Full","times","Once","console","warn","join","ABAMLayout","seqA","main","seqA_","seqB","rest","parser","k","v","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","trace","yy","symbols_","error","start_symbol","measure_layout","EOF","index_wise_measure_layout","segment_wise_measure_layout","iw_sequence","iw_item","range","UNSIGNED","single","iw_block_item","iw_volta","iw_aba","iw_block","iw_optional_alternates","iw_alternates","sw_sequence","sw_item","segment","sw_block_item","sw_volta","sw_aba","sw_block","sw_optional_alternates","sw_alternates","$accept","$end","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","root","blockLayout","singleLayout","voltaBlock","abaBlock","table","defaultActions","parseError","recoverable","Error","input","self","stack","vstack","lstack","args","call","arguments","lexer","create","sharedState","prototype","hasOwnProperty","setInput","yylloc","yyloc","ranges","options","getPrototypeOf","symbol","state","action","len","newState","expected","lex","token","yyval","errStr","showPosition","text","match","line","loc","first_line","last_line","first_column","last_column","apply","items","item","start","end","index","speard","it","serializeSeq","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","unput","lines","substr","oldLines","more","reject","backtrack_lexer","less","pastInput","past","replace","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","Parser","grammar$1","StaffGroupType","StaffConjunctionType","singleGroup","Default","staff","BOUNDS_TO_GROUPTYPE","Brace","Bracket","Square","CONJUNCTIONS_MAP","Blank","Solid","Dashed","randomB64","random","makeGroupsFromRaw","parent","remains","word","shift","bound","group","level","subs","grand","every","groupHead","groupTail","groupDict","groupKey","StaffLayout","raw","ids","Set","prefix","name","has","makeUniqueName","add","staffIds","conjunctions","conjunction","leftBounds","rightBounds","groups","indexOf","maskCache","stavesCount","partGroups","grands","g","some","standaloneGroups","collect","conjunctionBetween","upStaff","downStaff","con","min","makeMaskLayout","mask","nextId","partialMaskCode","bits","withIds","staffStatus","status","joinGroup","subStr","pair","Boolean","partial","inner","bracketCode","$Vb","$Vc","staff_layout","seq_id","seq_br","seq_con","bound_left","bound_right","bound_lefts","bound_rights","ID","seq_bl","Seq","tip","bl","br","Item","grammar","parseCode","DummyLogger","debug","groupCollapsed","groupEnd","info","assert","roundNumber","precision","Infinity","max","distance2D","p1","p2","dx","dy","sqrt","gcd","a","b","isInteger","frac","numerator","denominator","reducedFraction","d","printFraction","fractionMul","fraction","segmentPoints","points","axis","sorted","sort","seg","lastP","segments","filterWeekPoints","rests","find","weeks","solveOverlapping","pset","xClusters","clusters","ps","delete","GROUP_N_TO_PITCH","noteToPitch","note","alter","gn","mod7","argmax","WHOLE_DURATION","AccessoryDirection","GraceType","StemBeam","TremoloLink","GlissandoStyle","ArpeggioStyle","Term","EventTerm","space","tick","duration","term","accessories","pivotX","alignedTick","grace","mainDuration","multiplier","timeWarp","divider","prior","fullMeasureRest","tipX","tipY","ys","tremoloCatcher","tremoloLink","Catcher","scaleChord","pitches","pitch","zeroHolder","ContextType","ContextedTerm","Token.TokenClefs","tokenType","Clef","KeyAcc","Acc","Token.TokenOctshifts","OctaveShift","Token.TokenTimesigsC","TimeSignatureC","Token.TokenTimesigsN","TimeSignatureN","staffLevel","clef","KeyNatural","KeySharp","KeyFlat","octaveShift","OctaveShift8va","OctaveShift8vb","number","MarkTerm","MUSIC_NOTES","fromCodePoint","TempoTerm","fromNumeralText","findIndex","beats","durationMagnitude","den","dot","bpm","isValid","GlyphTerm","TextTerm","LyricTerm","CommandTerm","ChordmodeTerm","BEAM_STATUS","Open","Continue","Close","evaluateMeasure","regulated","eventMap","events","validEvents","voices","flat","warpedEvents","warps","irregularWarps","fractionalWarp","tickSum","eventN","event","tickOverlapped","complicatedTimewarp","size","literalDuration","timeSignature","sigDuration","doubtfulTimesig","inVoiceEvents","corruptedVoiceEvent","overranged","over","overDuration","graceInVoice","graceN","graceDominant","irregularTick","beamBroken","broken","ei","evi","beam","spaceTime","surplusTime","eventDuration","sum","nullEvents","predisposition","fakeP","fakeEvents","voiceRugged","es","tickTwist","tickRatesInStaves","rate","perfect","estimatedDuration","fine","expectDuration","durationRate","qualityScore","patched","spaceLoss","tanh","irregularWarpsN","SemanticGraph","fromPoints","graph","getLayer","getConfidentLayer","threshold","getSystemPoints","getStaffPoints","scale","factor","transform","matrix","extension","y1","y2","scaling","height","MEASURE_SEMANTICS","GraceNotehead","CrescendoBegin","CrescendoEnd","DecrescendoBegin","DecrescendoEnd","TremoloLeft","TremoloRight","TremoloMiddle","STAFF_LINED_SEMANTICS","LINED_INTERVAL_SEMANTICS","NOTEHEAD_FOR_STEM_SEMANTICS","KEYACC_CANDIDATE_SEMANTICS","NOTEHEAD_TABLE","up","down","REST_SEMANTICS","TOKEN_TO_STEMBEAM","TEXT_TYPE_ALIAS","Alter1","Alternation1","Alter2","Alternation2","noteheadsXPivot","xs","mean","x1","x2","Measure","tokens","antiTokens","barTypes","noteheads","n1","n2","chordRects","nh","nulN","nhmap","hh","nhs","top","bottom","nh0","stemX","stemDirection","timeWarped","additionalLines","chords","getChords","chord","ceil","flags","beams","chordRcs","rect","noteIds","c1","c2","accs","flagRange","nearbyFlags","flag","beamToken","nearbyDots","getRests","dotValue","getEvents","e1","e2","getContexts","assignAccessoriesOnEvents","accessory","relatedEvents","owner","d1","d2","Down","Up","sortEvents","arpeggio","Grace","tremolsLs","tremolsRs","tremolsMs","tevents","stemL","stemR","tm","te","tremolo","tl","Pitcher","tr","assignFeaturesOnEvents","semantics","dotPs","beamLs","beamMs","beamRs","gracePs","tremoloRs","stems","vline_Stem","s0","s1","s2","cx","divisions","ss","i_flags","f1","f2","i_dots","dots2","bs","u_stems","stem","d_stems","stemDirections","graces","tremolos","feature","Staff","measureCount","measureBars","staffY","measures","endX","noteRange","rearrangeMeasures","reassignTokens","assignSemantics","assemble","system","logger","qualifiedSemantics","TempoNotehead","tempoNh","splice","antiP","displacementSemantics","appendPoint","semanticTop","semanticBottom","rootNhs","nhOffsetX","attachedHeads","topDist","bottomDist","antiPoint","nearStems","appendFlags","dotLines","sy","keyaccs","acc","oct","voltaDots","VoltaLeft","VoltaRight","voltaGroups","lined","interval","signs","fixedY","roundY","holder","mainFlag","downward","tailY","count","clearTokens","clearPredictedTokens","System","HEAD_WIDTH","segmentLength","staves","arrangePosition","sidBlackList","sidWhiteList","staffTop","staffBottom","staffPositions","radius","staffMask","staffMaskChanged","prev","positions","tidyMeasureBars","b1","b2","restWidth","connectionLine","staffHead","staffTail","middleY","timeSignatureOnHead","getStaffArray","si","on","getMarksInMeasure","measureIndex","textType","TempoNumeral","headMeasureIndex","columns","rows","contexts","voltaBegin","voltaEnd","alternative","mi","timeSigs","row","marks","ts","column","lastColumn","break","getEventsFunctional","ev","processors","useXMap","localRows","xMap","groupMap","tickGroup","proc","oy","bars","lastX","barColumns","bar","intensity","barXs","prevStaff","nextStaff","newPoint","appendToken","fontSize","overlap","Page","systems","assignTexts","areas","imageHeight","imageWidth","dimensions","area","cy","rp","score","rect_Text","theta","textFeature","feature_dict","textAnnotations","sysXs","middleX","indent","Text","textFeasure","Title","Author","PageMargin","Other","Chord","MeasureNumber","Instrument","TextualMark","Times","sx","SemanticElementType","TIME_SIG_DENOMINATORS","fromEntries","TIME_SIG_NUMERATORS","et","ELEMENT_TOKEN_NAMES","BOS","NoteheadGrace","NOTEHEAD_BASE_DIVISION","NOTEHEAD_ELEMENT_TYPES","REST_ELEMENT_TYPES","BEAM_ELEMENT_TYPES","NOTE_ELEMENT_TYPES","SOURCE_ELEMENT_TYPES","TARGET_ELEMENT_TYPES","ROOT_NOTE_ELEMENT_TYPES","ELEMENT_TO_STEMBEAM","metaElem","BOS_ELEMENT","fractionToElems","SemanticCluster","elementToJSON","elem","sourceMask","elements","targetMask","vMask","compactMatrixH","matrixH","j","expandMatrixByMasks","compactMatrixV","_matrixV","matrixV","expandMatrixByMaskTriu","groupsV","matrixFromGroups","found","mapMatrix","x2i","i2x","xi","mergeOverlapping","overlaps","overlappedNoteheads","ij","ii","nh1","nh2","masks","stemMasks","stemNotes","s0s","subS0Masks","stemMap","stemId","i1","i2","prevId","linkings","roots","parentMasks","parentId","rootId","subNotes","dotGroups","tipRange","beamElem","iter","gen","maskSrc","maskTar","src","tar","groupIds","id1","id2","ImplicitType","Stream","buffer","Uint8Array","position","eof","read","readString","readInt32","readInt16","readInt8","signed","readVarInt","OStream","write","writeInt32","writeInt16","writeInt8","writeVarInt","getBuffer","getArrayBuffer","charCodeAt","MIDI","parseMidiData","readChunk","stream","lastEventTypeByte","readEvent","deltaTime","eventTypeByte","param1","eventType","channel","subtype","noteNumber","velocity","amount","controllerType","programNumber","subtypeByte","microsecondsPerBeat","hourByte","frameRate","hour","sec","frame","subframe","pow","metronome","thirtyseconds","headerChunk","headerStream","formatType","trackCount","timeDivision","ticksPerBeat","header","tracks","trackChunk","trackStream","encodeMidiFile","writeChunk","writeEvent","frameByte","MidiSequence","midiToSequence","midiFile","trackStates","beatsPerMinute","nextEventIndex","ticksToNextEvent","getNextEvent","nextEventTrack","nextEvent","ticksToEvent","track","midiEvent","processNext","secondsToGenerate","time","processEvents","trimSequence","clear","fixOverlapNotes","noteMap","overlapMap","swaps","leapIndex","swap","front","back","offEvent","leapEvent","tempo","require$$0","PedalControllerTypes","Notation","parseMidi","fixOverlap","channelStatus","pedalStatus","pedals","channels","millisecondsPerBeat","barIndex","keyRange","correspondences","rawTicks","ticks","tempos","rawEvents","deltaTicks","deltaBeats","startTick","low","statusIndex","endTick","finger","high","pedalType","captures","fingers","isNaN","log","endTime","meta","notes","pitchMap","beatInfos","lastInfo","beatIndex","entry","findChordBySoftindex","softIndex","averageTempo","tickRange","to","endtick","span","ticksToTime","next_tempo_index","tempo_index","timeToTicks","tickRangeToTimeRange","scaleTempo","headTempo","MusicNotation","animationDelay","Promise","resolve","requestAnimationFrame","MidiPlayer_1","MidiPlayer","midiData","cacheSpan","onMidi","onPlayFinish","onTurnCursor","notation","isPlaying","progressTime","startTime","performance","now","cursorTurnDelta","dispose","progressTicks","play","nextFrame","currentEventIndex","backturn","eventTime","pause","turnCursor","config","CostStepAttenuation","SkipDeep","PriorDistanceSigmoidFactor","PriorValueSigmoidFactor","SkipCost","LagOffsetCost","LeadOffsetCost","ZeroOffsetCost","RelocationThreshold","Config","require$$1","Node","s_note","c_note","_prev","_totalCost","_value","cacheDirty","ci","rootSi","cost","skip","updateCache","totalCost","selfCost","deep","path","node","dump","evaluatePrev","evaluatePrevCost","bias","priorByOffset","distance","navigator","Navigator","criterion","sample","getCursorOffset","outOfPage","bestNode","fineCursor","breakingSI","zeroNode","relocationThreshold","step","prevNote","prevNode","cursors","nullLength","nullSteps","cursor","resetCursor","breaking","deltaSi","fromIndex","toIndex","backPrior","cursorOffset","relocationTendency","normalizeInterval","HEART_BEAT","makeNoteSoftIndex","softIndexFactor","lastNote","Matcher","makeMatchNodes","targetList","targetNote","genNotationContext","runNavigation","async","onStep","Symbol","for","EXCLUDE_MIDI_EVENT_SUBTYPES","encodeToMIDIData","unclosedNoteDuration","msToTicks","Date","process","env","VUE_APP_BUILD_TIME","toDateString","MidiUtils","sliceMidi","midi","trackDeltaToAbs","lastTick","trackAbsToDelta","sliceTrack","encodeToMIDI","musicWidgets","require$$2","require$$3","require$$4","COMMON_NOTE_FIELDS","MetaNotation","fromAbsoluteNotes","measureHeads","__","mnotes","mn","field","idTrackMap","performAbsoluteNotes","abNotes","withRestTied","tied","overlapped","staffTrack","contextIndex","implicitType","chordPosition","priorNote","ripe","trackTickBias","headMeasure","trackNames","idSet","toAbsoluteNotes","measureIndices","measureTick","measureNotes","mnote","toPerformingNotation","WHOLE_DURATION_MAGNITUDE","toPerformingMIDI","trackList","zeroTick","measureEvents","mevent","eventPriority","subnote","finalTick","toPerformingNotationWithEvents","assignNotationNoteDataFromEvents","setTempo","midiNotation","noteId","CryptoJS","exports","crypto","window","msCrypto","global","require","err","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","F","obj","C","C_lib","lib","Base","extend","overrides","mixIn","init","$super","instance","properties","propertyName","clone","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","nBytes","C_enc","enc","hexChars","bite","hexStr","hexStrLength","parseInt","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","decodeURIComponent","escape","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","doFlush","processedWords","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","_doProcessBlock","Hasher","cfg","_doReset","update","messageUpdate","finalize","_doFinalize","_createHelper","hasher","message","_createHmacHelper","C_algo","HMAC","algo","H","K","isPrime","sqrtN","getFractionalBits","nPrime","W","SHA256","_hash","M","h","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","nBitsTotal","nBitsLeft","HmacSHA256","factory","HashVector","fromHash","byte","fromString","_SHA256","uwords","word_len","fromWords","vectors","toHash","bit","vec","crop","ODDS","odds","odd","cosHashes","hash1","hash2","xor","xorHashes","i2hex","Sylvester","Matrix","setElements","I","els","dup","isSquare","cols","toRightTriangular","np","determinant","det","isSingular","augment","T","nj","inverse","divisor","new_element","inverse_elements","DURATION_MULTIPLIER","floatToTimeWarp","floatToFrac","ActionType","EventElementType","SimplePolicy","Action","P","PLACE","V","order","VERTICAL","HORIZONTAL","StageMatrix","fromNode","stages","actions","stage1","stage","stage2","stagedEvents","endHs","endHP","hActions","pendingHeads","eid","pathOf","target","findDoublePath","paths","reducePath","toEquations","eventCount","equations","path1","path2","equation","PathNode","last","like","constructStages","unshift","newStage","constructConstraints","factors","constraints","inbalancesConstraints","ones","fixed","inbalances","constraint","solveEquations","xis","equationMap","conflicted","squareLines","restLines","candidateLines","sl","invert","mat","matrixInverse","solution","optimallySolve","shrinkMap","shrinkness","released","releasedIds","lowWarp","isConflicted","eventTendencies","timeWarps","getSolution","actionKey","hacts","a1","a2","hmap","act","startEs","se","estages","solveStages","changed","measureDuration","outEI","deduce","quota","access","actionAccessing","closed","credits","children","expand","possibility","child","branches","appendBranch","branch","Solver","event0","measureShrinkness","expectedDuration","xSpan","solve","pathRoot","bestSolution","evaluateSolution","loss","sevents","partialFrac","weight","staffAlters","eventsXOrder","tickTwists","dt","atan2","PI","EventCluster","regular","CHORD","REST","fake","fullMeasure","grant","annotation","endElem","EOS","assignPrediction","prediction","pe","EventClusterSet","trimIrregular","ir","cluster","PatchMeasure","staffN","basics","basic","computeMeasureTicks","roundX","constructXMap","eventGroups","divisionVector","dotsVector","computeMeasureVoices","eventSet","pushEvent","e0","EquationPolicy","INVERT_SQRT2","FINE_BEAMS","bb","solveStaffGroup","staffGroup","EquationSolver.Solver","estiamteMeasure","allEvents","tickEstimated","pR","eventStartX","staffGroupMap","staffGroups","ievents","startX","hp","erf","staffDecay","exp","yDecay","dtx","nR","regulateMeasure","solver","mp","resultEvents","solutionStat","solverCredits","solverTimes","regulateMeasureWithRectification","rectification","re","priority","tickN","SpartitoMeasure","reorderEvents","staffYsFull","rx","ry","yi","yis","intX","intY","originalRegulationHash","regulationHash","postRegulate","keySignature","timeSignatureChanged","validRegulated","tickMap","endEvent","tickToX","tickRates","rates","tickRatesInGroups","gevents","groupIndex","twists","empty","hasIllEvent","voicedEventIds","brief","regulationHash0","regulationHashes","featureWords","invalid","uys","melodies","rhythm","barType","typeEntris","partialDuration","signatureDuration","updateRoundX","graceEvents","staffMap","smap","oldEvent","emap","preTick","graceIds","totalDuration","warp","solveGraceEvents","catchers","pitchers","catcher","candidates","pitcher","catcherId","pi","solveTremoloPairs","updateContextTick","terms","t2","asSolution","ref","refEvent","applySolution","cleanupRegulation","regulateTest","regulateSimple","regulateEquations","regulate","policy","createPatch","createClusters","trueEventIds","idx","staffIndices","staffY0","staffYs","staffYn","headY","backgroundImages","url","applyClusters","id_max","is","srcId","tarId","emptyVoiceFromStaffMeasure","chiefVoice","timeSigNumeric","contextedTerms","markingTiesInVoice","event1","p0","tying","si0","si1","Spartito","solidMeasureCount","measureIndexMapping","headBPM","tempoMark","mark","measureLayoutCode","ms","vb","ve","leftSign","rightSign","nextI","mm","nextVBI","pms","lastVEI","lastMI","dumpEvaluations","rectifyTimeSignatures","mis","newTimeSignature","measuresToFix","originTimeSignature","regularD","numerators","countings","peakCount","bestCounting","best","reducedN","makeVoiceStaves","voiceCount","nextMeasure","ctxList","maxEventX","deferred","leftStaves","lastEvent","tailEvent","tailStaff","pageBreak","headStaff","sd","trait","staffToGroup","voiceTraits","vector","v1","v2","leftVoices","voiceTrait","vs","consistencies","voiceIndex","m1","m2","staffVoiceIndices","vi","mode","removeEmptyMeasuresInVoicesStaves","perform","tokenMap","staffToChannel","voiceChannels","hasTempo","nextTick","events0","voice0","part","pitchValue","performByEstimation","noteTick","featureHash","measureWords","levels","meaures","vecY","vecMelody","vecRhythm","featureHashHex","featureHashBigInt","BigInt","assignMeasureNumbers","discard","measureNumber","mod12","ALTER_NAMES","StaffContext","keyAlters","alters","timeSigNumSet","timeSigDenSet","doubtingTimesig","change","yToNote","partialTimeSignature","resetMeasure","resetSystem","noteToY","pitchToNote","preferredAlter","gp","alteredGp","naturalNote","alterValue","keyAlterValue","pitchToY","alterOnNote","yToPitch","yToPitchName","bitsToMask","Score","version","layoutTemplate","staffLayoutCode","pages","page","spartito","upgradeScoreData","headers","instrumentDict","pageSize","unitSize","maxStavesCount","imageKeys","backgroundImage","maskImage","breakSystemIndices","systemCount","staffLayout","staffLayout.parseCode","semanticHash","eventSystemsToTermStaves","eventSystems","termStaves","sys","context","startEvent","processStaffContext","resetPageLayout","parameters","newCenter","offsetX","offsetY","getMeasure","localIndex","getRawCluster","systemY0","y0","getRawClusters","makeSpartito","ri","esys","patch","patches","makeMusicSheet","voiceStaves","title","paperOptions","measureLayout","getMeasureLayout","findPoint","sid","pageIndex","getMeasureSemantics","sy1","sy2","makeTimewiseGraph","store","getTokenMap","confidenceThreshold","append","assembleSystem","markVoices","vis","replaceImageKeys","all","then","inferenceStaffLayout","staffTotal","completeSystems","bracketsAppearance","candidateCodes","codeCounting","maxCount","connectedCode","lastSys","search","code1","startsWith","assignBackgroundForMeasure","imagePosition","original","blackoutFakeNotes","scope","inScope","fakeIds","voicedIds","fakeIdSet","blackIds","measureLayout.parseCode","splitToSingleScoresGen","startSysIndices","templateScore","topology","startSysIndex","endSysIndex","sysInRange","newScore","SubScoreSystem","SubScorePage","splitToSingleScores","EditableEvent","agent","Proxy","ownKeys","getOwnPropertyDescriptor","enumerable","configurable","EditableMeasure","syncVoiceToEvents","syncVoiceFromEvents","makeMIDI","subEvents","midiEvents","BeadType","DIVISION_NAMES","SPACE_LOSS_WEIGHT","POSSIBILITY_LOW_BOUNDARY","STEM_DIRECTION_OPTIONS","BEAM_OPTIONS","saveClusterState","BeadNode","accessCount","nextBranch","possibilities","currentElem","elemIndex","branchID","ni","Pass","Division","Dots","repeat","picker","ptFactor","evaluateCluster","pretentiousness","selfEval","element","residue","fatalError","predictCluster","evaluation","estimateElementDuration","eos","lastOrder","voiceN","scales","referenceScale","nearScale","tickSpan","twist","tickMSE","tickErr","mse","spaceDuration","solveCluster","stopLoss","suc0","bestEvaluation","bestState","restoreClusterState","fixedEvents","pendingEvents","near","stemDirectionVector","beamVector","solveMeasure","quotaMax","quotaFactor","worstLoss","durations","solutionEvents","tipElem","tickSet","glimpseMeasure","resetSignatureForDoubtfulOnly","estimateMeasure","StemTip","StemHead","rect_Lyric","SemanticClusterSet","vocab","converts","connection","SUPPORT_CLEF_TYPES","starry.TokenType","tokenToText","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","Function","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","eventsModule","once","emitter","errorListener","removeListener","resolver","eventTargetAgnosticAddListener","handler","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","prepend","existing","warning","newListener","emit","warned","w","onceWrapper","fired","wrapFn","_onceWrap","wrapped","bind","_listeners","unwrap","evlistener","arr","ret","unwrapListeners","arrayClone","listenerCount","copy","addEventListener","wrapListener","arg","removeEventListener","destructPromise","timeout","rs","rj","setTimeout","defineProperty","RangeError","setMaxListeners","getMaxListeners","doError","er","listeners","addListener","prependListener","prependOnceListener","list","originalListener","spliceOne","off","removeAllListeners","rawListeners","eventNames","AsyncQueue","working","tasks","_digest","taskFn","payload","addTask","task","promise","ZeroClient","queue","socket","Request","sendTimeout","receiveTimeout","connect","__request","retryTimes","req","send","pack","receive","close","request","method","kwargs","args_","kwargs_","msg","opt","unpack","PyProcessor","scriptPath","retryCount","retryDelay","port","freePort","getPortPromise","stopPort","defaultsDeep","pyShell","PythonShell","stdout","isBuffer","inherits_browserModule","ctor","superCtor","super_","writable","TempCtor","util","inherits","inheritsModule","getOwnPropertyDescriptors","descriptors","formatRegExp","format","isString","objects","inspect","isNull","isObject","deprecate","fn","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","opts","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","isFunction","primitive","simple","isNumber","formatPrimitive","visibleKeys","val","arrayToHash","isError","formatError","isRegExp","RegExp","isDate","output","base","braces","toUTCString","formatProperty","formatArray","cur","reduceToSingleString","desc","ar","objectToString","pad","debuglog","NODE_DEBUG","toUpperCase","pid","bold","italic","underline","white","grey","black","blue","cyan","green","magenta","red","yellow","special","boolean","null","string","date","regexp","isNullOrUndefined","isSymbol","isPrimitive","months","prop","getHours","getMinutes","getSeconds","getDate","getMonth","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","cb","newReason","promisify","promiseResolve","promiseReject","defineProperties","custom","callbackify","callbackified","maybeCb","rej","getPort","base64map","crypt","rotl","rotr","endian","bytes","bytesToWords","wordsToBytes","bytesToHex","hex","hexToBytes","bytesToBase64","base64","triplet","charAt","base64ToBytes","imod4","cryptModule","charenc","utf8","stringToBytes","bin","bytesToString","charenc_1","api","digestbytes","H0","H1","H2","H3","H4","asBytes","asString","_blocksize","_digestsize","sha1Module","constructSystem","detection","imageSize","systemWidth","phi2","phi1","systemHeight","lastSystem","stavesTops","middleRhos","starry.Staff","starry.System","convertImage","maxHeight","quality","buf","got","responseType","decompress","https","rejectUnauthorized","toBuffer","webpBuffer","sharp","resize","fit","withoutEnlargement","toFormat","filename","SparkMD5","ArrayBuffer","OffscreenCanvas","Canvas","Image","STAFF_PADDING_LEFT","GAUGE_VISION_SPEC","viewportHeight","viewportUnit","MASK_VISION_SPEC","SEMANTIC_VISION_SPEC","concurrencyTask","fns","shootStaffImage","paddingLeft","spec","middleUnits","canvas","getContext","fillStyle","fillRect","drawImage","loadImage","shootStaffBackgroundImage","sourceCanvas","toBufferSync","gaugeStaff","gaugeImage","pyClients","sourceBuffer","baseY","predictScoreImages","maskStaff","img","semanticStaff","settings","semanticConfidenceThreshold","replacePageImages","onReplaceImageKey","OMRProgress","onChange","setTotal","total","finished","increase","lruCache","WeakLRUCache","pageStore","getValue","setValue","onReplaceImage","multinomial_1","pvals","looseVector","ns","looseEvent","MeasureRectification","roll","DefaultSolutionStore","PendingCondition","solveMeasureRecords","records","onUpdate","pendingCondition","NotFine","pass","onProgress","pendingRecords","ErrorOnly","Imperfect","isPending","record","current","starry.beadSolver.solveMeasure","starry.evaluateMeasure","better","remaining","RECTIFICATION_SEARCH_ITERATIONS","BASE_QUOTA_FACTOR","RECTIFICATION_QUOTA_FACTOR","computeQuota","limit","solveMeasures","solutionStore","ignoreCache","cached","solved","stat","computed","solveMeasuresWithRectifications","n_rec","rec","default","stale","genMeasureRectifications","testMeasure","doSimpleRegulate","PyClients","clients","getClient","client","option","checkHost","warmup","clientType","res","by_buffer","stats","costTotal","pagesCostTotal","pagesTotal","pagesCost","costPerPage","scoreN","pickerCost","measureN","timeN","tryTimes","costPerMeasure","costPerTime","issue","fatal","baseCostTotal","topoCostTotal","baseMeasures","topoMeasures","baseCost","topoCost","baseCostPerMeasure","topoCostPerMeasure","baseComputed","baseSolved","topoSolved","topoIssue","topoFatal","onSaveIssueMeasure","t0","issueMeasures","results","cs","solvedIndices","errorIndices","n_issues","doRegulateWithTopo","maskImages","hasMaskImage","scoreJson","idsMap","idsXMap","idStaffIndexMap","coverTexts","subtitles","subtitle","authors","composer","bgWidth","bgHeight","l1","ls","parts","partTemplates","measureXs","partIndex","template","staffIndexBase","paddedStaves","chordColumns","staffIndexInPart","noteIndex","measureStartX","elems","firstX","innerId","lastFifths","clefs","pt","fifths","lineStaves","systemTopStaff","systemBottomStaff","systemTopStaffY","systemBottomStaffY","lastPartLastStaff","partStaves","staffs","details","hide","visibleStaves","partTopStaff","partBottomStaff","partTopStaffY","partBottomStaffY","distances","imgs","spartitoMeasure","parti","mIndices","sortedParts","midiJson","measInfo","ent","idNoteMap","beatsCurrent","beatsUnitCurrent","mIndex","beatsUnit","evt","note_ticks","measureInfos","beatUnit","mergedTracks","trackIndex","program","lhPattern","rhPattern","instrus","hand","handStaves","trackToSplit","newTracks","stave","rightHandTrack","leftHandTrack","transformedTracks","onEvent","measureTickMap","numId","newEvent","elem_ids","meas_start_tick","images","outputWidth","processes","progress","image","starry.Score","raggedLast","raggedLastBottom","enabledGauge","originalImages","pageCanvasList","scaleForLayout","sourceSize","detections","cvs","enableGauge","imageURLMap","collectImage","createPage","detect","pageKey","cachedPageJson","omit","renew","starry.recoverJSON","starry","starry.Page","unit","cos","sin","needGauge","correctCanvas","pageCanvas","save","setTransform","restore","getImageData","putImageData","sourceCenter","shootImageByDetection","sizeRatios","staffInterval","vw","hwr","maxVW","maxAspect","setGlobalPageSize","systemsCount","allTasks","omitPages","n_page","pageTasks","bracketImages","topMid","bottomMid","sourceRect","OUTPUT_INTERVAL","bracketsRes","buffers","bufferForText","location","box","resultOCR","titleToken","gaugeRes","maskRes","semanticRes","t3","pickers","freshOnly","onPassStart","baseQuality","n_seq","starry.beadSolver.estimateMeasure","counting","toFixed","totalMeasures","computeRemaining","wrappedOnProgress","starry.EditableMeasure","saveMeasure","solutions","batchGet","originMeasure"],"mappings":"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D,EAAa6D,YACb7D,EAAakoB,eACbloB,EAAamoB,eACbnoB,EAAayF,aACbzF,EAAayC,KACbzC,EAAa0C,IACb1C,EAAa2C,IACb3C,EAAa4C,MACb5C,EAAa6C,KACb7C,EAAa8C,KACb9C,EAAa+C,IACb/C,EAAagD,MACbhD,EAAaiD,MACbjD,EAAakD,KACblD,EAAaiF,WACbjF,EAAakF,SACblF,EAAamF,eACbnF,EAAaoF,QACbpF,EAAaqF,YACbrF,EAAaS,WACbT,EAAaU,WACbV,EAAaW,WACbX,EAAasL,gBACbtL,EAAauL,gBACbvL,EAAawL,gBACbxL,EAAayL,gBACbzL,EAAa8D,MACb9D,EAAa+D,MACb/D,EAAagE,MACbhE,EAAaiE,MACbjE,EAAakE,MACblE,EAAamE,MACbnE,EAAaoE,MACbpE,EAAaqE,OACbrE,EAAasE,OACbtE,EAAawJ,UACbxJ,EAAayJ,QACbzJ,EAAagF,IACbhF,EAAayB,EACbzB,EAAa2B,EACb3B,EAAa0B,EACb1B,EAAa0F,EACb1F,EAAa4B,EACb5B,EAAa6B,EACb7B,EAAa8B,EACb9B,EAAa2F,cACb3F,EAAa4F,mBACb5F,EAAa6F,eACb7F,EAAa8F,eACb9F,EAAamD,oBACbnD,EAAa+F,WACb/F,EAAagG,YACbhG,EAAaiG,YACbjG,EAAakG,WACblG,EAAamG,eACbnG,EAAaoG,YACbpG,EAAaqG,cACbrG,EAAasG,cACbtG,EAAauG,aACbvG,EAAawG,cACbxG,EAAayG,UACbzG,EAAa0G,SACb1G,EAAasuB,cACbtuB,EAAayE,SACbzE,EAAa2E,UACb3E,EAAa0E,aACb1E,EAAauuB,eACbvuB,EAAawuB,aACbxuB,EAAayuB,iBACbzuB,EAAa0uB,eACb1uB,EAAa2uB,YACb3uB,EAAa4uB,aACb5uB,EAAa6uB,eAGRC,GAAwB,CAC7B9uB,EAAaiF,WACbjF,EAAakF,SACblF,EAAamF,eACbnF,EAAaoF,QACbpF,EAAaqF,YACbrF,EAAaS,WACbT,EAAaU,WACbV,EAAaW,WACbX,EAAasL,gBACbtL,EAAauL,gBACbvL,EAAawL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"} \ No newline at end of file diff --git a/backend/omr/dist/regulator.d.ts b/backend/omr/dist/regulator.d.ts index 153698275b7aacd85304d4450f697a5628fe43cf..fd882ec94d23504ac6ff9b250b5a908e2ab33055 100644 --- a/backend/omr/dist/regulator.d.ts +++ b/backend/omr/dist/regulator.d.ts @@ -2383,21 +2383,6 @@ declare namespace beadSolver { // page general Other = "Other" } - class PatchMeasure extends SimpleClass { - static className: string; - measureIndex: number; - staffMask: number; - basic: StaffBasic; - //points: SemanticPoint[]; - events: EventTerm[]; - contexts: ContextedTerm[][]; // [staff] - marks: MarkTerm[]; - voices: number[][]; // [voice, id] - constructor(data: any); - get staffN(): number; - get basics(): StaffBasic[]; - get duration(): number; - } enum EventElementType { PAD = 0, BOS = 1, @@ -2477,6 +2462,21 @@ declare namespace beadSolver { static roll(events: EventTerm[]): MeasureRectification; } const genMeasureRectifications: (measure: SpartitoMeasure) => Generator; + class PatchMeasure extends SimpleClass { + static className: string; + measureIndex: number; + staffMask: number; + basic: StaffBasic; + //points: SemanticPoint[]; + events: EventTerm[]; + contexts: ContextedTerm[][]; // [staff] + marks: MarkTerm[]; + voices: number[][]; // [voice, id] + constructor(data: any); + get staffN(): number; + get basics(): StaffBasic[]; + get duration(): number; + } enum SemanticType { // clefs ClefG = "ClefG", diff --git a/backend/omr/dist/regulator.js b/backend/omr/dist/regulator.js index a838e111aa18b1280092798fd0bf800d5c7e4da4..4bb2d405efedaf1d0ae3bdc3c17524ea9682b864 100644 --- a/backend/omr/dist/regulator.js +++ b/backend/omr/dist/regulator.js @@ -1,7 +1,7 @@ /** * name: backend * version: v1.0.0 - * build time: 2/20/2026, 8:53:44 PM + * build time: 4/23/2026, 7:20:50 PM * system user: camus * git user name: k.l.lambda * git user email: k.l.lambda@gmail.com @@ -2626,6 +2626,7 @@ var measureLayout = /*#__PURE__*/Object.freeze({ ABAMLayout: ABAMLayout }); +// @ts-nocheck /* parser generated by jison 0.4.18 */ /* Returns a Parser object of the following structure: @@ -3750,6 +3751,7 @@ class StaffLayout { } } +// @ts-nocheck /* parser generated by jison 0.4.18 */ /* Returns a Parser object of the following structure: @@ -5032,15 +5034,20 @@ const evaluateMeasure = (measure) => { // console.log("irregularTick:", event.tick, fragment); return fragment < WHOLE_DURATION; }); - const beamStatus = measure.voices.map((voice) => voice.reduce(({ status, broken }, ei) => { + const beamStatus = measure.voices.map((voice) => voice.reduce(({ status, broken }, ei, evi) => { const event = eventMap[ei]; if (event.beam) { + // allow an open beam at beginning of a voice + if (evi === 0 && [StemBeam.Continue, StemBeam.Close].includes(event.beam)) + status = 1; status += BEAM_STATUS[event.beam]; broken = broken || !(status >= 0 && status <= 1); } + else if (!event.rest) + broken = broken || status !== 0; return { status, broken }; }, { status: 0, broken: false })); - const beamBroken = beamStatus.some(({ status, broken }) => status || broken); + const beamBroken = beamStatus.some(({ broken }) => broken); // allow an open beam at the end of a voice (status == 1) let spaceTime = 0; let surplusTime = 0; measure.voices.forEach((voice) => { @@ -5889,9 +5896,11 @@ class Measure extends SimpleClass { flag.y < flagRange[1]); chord.division = nearbyFlags.reduce((d, flag) => Math.max(d, flag.division), chord.division); nearbyFlags.forEach((flag) => accs.add(flag.id)); - const beamToken = rect.tip && beams.find((t) => Math.abs(rect.tip.x - t.x) < 0.3 && Math.abs(rect.tip.y - t.y) < 0.7); - if (beamToken) - chord.beam = TOKEN_TO_STEMBEAM[beamToken.type]; + if (chord.division >= 3) { + const beamToken = rect.tip && beams.find((t) => Math.abs(rect.tip.x - t.x) < 0.3 && Math.abs(rect.tip.y - t.y) < 0.7); + if (beamToken) + chord.beam = TOKEN_TO_STEMBEAM[beamToken.type]; + } } const nearbyDots = dots.filter((dot) => !accs.has(dot.id) && dot.x > rect.x + rect.width - 0.2 && @@ -6214,7 +6223,7 @@ class Staff extends SimpleClass { }; // find root noteheads on stem stems.forEach((stem) => { - const attachedHeads = noteheads.filter((nh) => Math.abs(nh.x - stem.x) - NOTEHEAD_WIDTHS[nh.semantic] / 2 < 0.28 && + const attachedHeads = noteheads.filter((nh) => Math.abs(nh.x - stem.x) - NOTEHEAD_WIDTHS[nh.semantic] / 2 < 0.32 && Math.abs(nh.x - stem.x) - NOTEHEAD_WIDTHS[nh.semantic] / 2 > -0.44 && // for grace noteheads, more close to their stem nh.y > stem.y1 - 0.5 && nh.y < stem.y2 + 0.5 && @@ -6849,6 +6858,14 @@ class System extends SimpleClass { const barXs = Object.entries(barColumns) .filter(([x, intensity]) => (intensity > 3 * this.staves.length)) .map(([x]) => Number(x)); + // Include bar positions from whitelisted semantic points + if (this.sidWhiteList.length) { + for (const bar of bars) { + if (this.sidWhiteList.includes(bar.id) && !barXs.some((x) => Math.abs(x - bar.x) <= 2)) { + barXs.push(bar.x); + } + } + } barXs.sort((x1, x2) => x1 - x2); barXs.forEach((x, i) => { if (i <= 0 || x - barXs[i - 1] > 2) @@ -11996,26 +12013,6 @@ class Solver { } } -class PatchMeasure extends SimpleClass { - constructor(data) { - super(); - Object.assign(this, data); - } - get staffN() { - return Math.floor(Math.log2(this.staffMask)) + 1; - } - get basics() { - return Array(this.staffN).fill(this.basic); - } - get duration() { - return Math.max(0, ...this.voices.map((ids) => { - const events = ids.map((id) => this.events.find((e) => e.id === id)); - return events.reduce((duration, event) => duration + event.duration, 0); - })); - } -} -PatchMeasure.className = 'PatchMeasure'; - var EventElementType; (function (EventElementType) { EventElementType[EventElementType["PAD"] = 0] = "PAD"; @@ -12095,6 +12092,26 @@ class EventClusterSet extends SimpleClass { } EventClusterSet.className = 'EventClusterSet'; +class PatchMeasure extends SimpleClass { + constructor(data) { + super(); + Object.assign(this, data); + } + get staffN() { + return Math.floor(Math.log2(this.staffMask)) + 1; + } + get basics() { + return Array(this.staffN).fill(this.basic); + } + get duration() { + return Math.max(0, ...(this.voices || []).map((ids) => { + const events = ids.map((id) => this.events.find((e) => e.id === id)); + return events.reduce((duration, event) => duration + event.duration, 0); + })); + } +} +PatchMeasure.className = 'PatchMeasure'; + var SimplePolicy; (function (SimplePolicy) { const constructXMap = (measure) => { @@ -12747,7 +12764,13 @@ class SpartitoMeasure extends SimpleClass { return !this.events?.length || !this.voices?.length; } get hasIllEvent() { - return this.regulated && this.events.some((event) => !event.zeroHolder && !Number.isFinite(event.tick) && !event.fullMeasureRest); + const voicedEventIds = this.voices.flat(1); + const eventMap = this.eventMap; + return (this.regulated && + voicedEventIds.some((id) => { + const event = eventMap[id]; + return !event.zeroHolder && !Number.isFinite(event.tick) && !event.fullMeasureRest; + })); } get brief() { const timesig = `${this.timeSignature.numerator}/${this.timeSignature.denominator}`; @@ -12901,7 +12924,7 @@ class SpartitoMeasure extends SimpleClass { event.division = se.division; if (Number.isFinite(se.dots)) event.dots = se.dots; - if (se.beam) + if (se.beam !== undefined) event.beam = se.beam; if (se.grace !== undefined) event.grace = se.grace ? GraceType.Grace : undefined; @@ -13355,6 +13378,36 @@ class Spartito extends SimpleClass { event.pitches.forEach((pitch) => (pitch.tied = true)); }); }); + // Move courtesy clefs to the next measure. + // A courtesy clef that appears after all events on its staff announces the + // clef change for the next measure rather than applying to the current one. + for (let mi = 0; mi < this.measures.length - 1; mi++) { + const measure = this.measures[mi]; + const nextMeasure = this.measures[mi + 1]; + if (!measure.contexts || !nextMeasure?.contexts) + continue; + for (let si = 0; si < measure.contexts.length; si++) { + const ctxList = measure.contexts[si]; + if (!ctxList) + continue; + const staffEvents = measure.events?.filter((e) => e.staff === si) || []; + const maxEventX = staffEvents.reduce((max, e) => Math.max(max, e.x || 0), -Infinity); + if (!Number.isFinite(maxEventX)) + continue; + const deferred = []; + measure.contexts[si] = ctxList.filter((term) => { + if (term.type === 0 /* ContextType.Clef */ && term.x > maxEventX) { + deferred.push(term); + return false; + } + return true; + }); + if (deferred.length > 0 && nextMeasure.contexts[si]) { + deferred.forEach((term) => (term.tick = 0)); + nextMeasure.contexts[si] = [...deferred, ...nextMeasure.contexts[si]]; + } + } + } // [measure, voice] const measures = this.measures.map((measure /*, mi*/) => { console.assert(measure.validRegulated, '[makeVoiceStaves] measure is invalid:', measure); @@ -13458,7 +13511,6 @@ class Spartito extends SimpleClass { } return voices; }); - //console.log("measures:", measures); // compute traits for voice-measures measures.forEach((voices) => voices.forEach((measure) => { const words = []; @@ -14380,6 +14432,7 @@ class Score extends SimpleClass { matrixH: cluster , matrixV: cluster , voices: patch ? patch.voices : null, + patched: !!patch, }); }))); const staffLayout = this.staffLayout; @@ -14765,6 +14818,8 @@ class EditableEvent extends EventTerm { return !!self.grace; case 'timeWarp': return self.timeWarp ? `${self.timeWarp.numerator}/${self.timeWarp.denominator}` : null; + case 'multiplier': + return self.multiplier ? `${self.multiplier.numerator}/${self.multiplier.denominator}` : null; case 'pitches': return self.pitches; } @@ -14803,6 +14858,18 @@ class EditableEvent extends EventTerm { } } return true; + case 'multiplier': + self.multiplier = null; + if (value && typeof value === 'string') { + const captures = value.match(/^(\d+)\/(\d+)/); + if (captures) { + self.multiplier = { + numerator: parseInt(captures[1]), + denominator: parseInt(captures[2]), + }; + } + } + return true; case 'id': case 'pitches': return true; @@ -14820,6 +14887,7 @@ class EditableEvent extends EventTerm { 'tied', 'beam', 'timeWarp', + 'multiplier', 'tremolo', 'tremoloLink', 'glissando', @@ -16191,7 +16259,7 @@ const saveEditableMeasures = async (score, measureIndices, saveMeasure, { status }); }; -console.info(`%cstarry-omr%c v1.0.0 2026-02-20T12:54:09.091Z`, 'color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;', 'color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;'); +console.info(`%cstarry-omr%c v1.0.0 2026-04-23T11:21:15.791Z`, 'color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;', 'color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;'); exports.PyClients = PyClients; exports.abstractRegulationBeadStats = abstractRegulationBeadStats; diff --git a/backend/omr/dist/regulator.js.map b/backend/omr/dist/regulator.js.map index 84e85211e20ab207679e15ff7c3a551139fbe8ee..9b88ec18bcd05e7ea48c3f9fc2fa2b0536306baf 100644 --- a/backend/omr/dist/regulator.js.map +++ b/backend/omr/dist/regulator.js.map @@ -1 +1 @@ -{"version":3,"file":"regulator.js","sources":["../../libs/browserComponents.ts","../../../node_modules/events/events.js","../../libs/async-queue.ts","../../libs/ZeroClient.ts","../../libs/PyProcessor.ts","../../../node_modules/util/support/isBuffer.js","../../../node_modules/util/node_modules/inherits/inherits_browser.js","../../../node_modules/util/node_modules/inherits/inherits.js","../../../node_modules/util/util.js","../../libs/predictors.ts","../../../src/starry/interfaces.ts","../../../src/starry/semanticPoint.ts","../../../src/starry/token.ts","../../../src/starry/aux_/typedJSON.ts","../../../src/measureLayout/measureLayout.ts","../../../src/measureLayout/grammar.jison.js","../../../src/measureLayout/parser.ts","../../../src/staffLayout/staffLayout.ts","../../../src/staffLayout/grammar.jison.js","../../../src/staffLayout/parser.ts","../../../src/starry/logger.ts","../../../src/starry/utils.ts","../../../src/starry/term.ts","../../../src/starry/measureEvaluator.ts","../../../src/starry/semanticGraph.ts","../../../src/starry/scoreComponents.ts","../../../src/starry/semanticTopology.ts","../../../src/performer/types.ts","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/stream.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/midifile.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/streamEx.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/midifileEx.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/index.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiSequence.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MusicNotation.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiPlayer.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/config.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/node.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/navigator.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/index.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiUtils.js","../../../node_modules/@k-l-lambda/music-widgets/index.js","../../../src/performer/notation.ts","../../../node_modules/crypto-js/core.js","../../../node_modules/crypto-js/sha256.js","../../../src/starry/hashVector.ts","../../../node_modules/matrix-inverse/matrix-inverse.js","../../../src/starry/equationSolver.ts","../../../src/starry/patch.ts","../../../src/starry/eventTopology.ts","../../../src/starry/spartitoMeasure.ts","../../../src/starry/spartito.ts","../../../src/starry/staffContext.ts","../../../src/starry/score.ts","../../../src/starry/editableMeasure.ts","../../../src/starry/beadSolver.ts","../../../src/starry/measureRectification.ts","../../libs/store.ts","../../libs/regulationBead.ts","../../libs/regulation.ts","../../libs/util.ts","../src/regulator.ts"],"sourcesContent":["globalThis.btoa = (str) => Buffer.from(str, 'binary').toString('base64');\nglobalThis.atob = (str) => Buffer.from(str, 'base64').toString('binary');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","import { EventEmitter } from 'events';\n\ninterface DSPromiseOption {\n\ttimeout?: number;\n}\n\nexport function destructPromise(\n\toptions: DSPromiseOption = {}\n): [promise: Promise, resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void] {\n\tconst { timeout } = options;\n\tlet rs: (value: T | PromiseLike) => void;\n\tlet rj: (reason: any) => void;\n\n\treturn [\n\t\tnew Promise((resolve, reject) => {\n\t\t\trs = resolve;\n\t\t\trj = reject;\n\n\t\t\tif (timeout >= 0) setTimeout(rj, timeout, 'timeout');\n\t\t}),\n\t\trs,\n\t\trj,\n\t];\n}\n\ntype AsyncTask = [fn: (data: any) => Promise, payload: any, resolve: (data: any) => void, reject: (reason: any) => void];\n\nexport class AsyncQueue extends EventEmitter {\n\tprivate working = false;\n\n\ttasks: AsyncTask[];\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.working = false;\n\t\tthis.tasks = [];\n\t\tprocess.nextTick(() => {\n\t\t\tthis.emit('idle');\n\t\t});\n\t}\n\n\tprivate async _digest(item: AsyncTask) {\n\t\tthis.working = true;\n\n\t\tconst [taskFn, payload, resolve, reject] = item;\n\t\tawait taskFn(payload).then(resolve, reject);\n\n\t\tif (this.tasks.length > 0) {\n\t\t\tawait this._digest(this.tasks.shift());\n\t\t} else {\n\t\t\tthis.working = false;\n\t\t\tthis.emit('idle');\n\t\t}\n\t}\n\n\t/**\n\t * 添加队列任务\n\t * @param task\n\t * @param options\n\t */\n\taddTask(task: [AsyncTask[0], AsyncTask[1]], { timeout = 600000 }: { timeout?: number } = {}): Promise {\n\t\tconst [promise, resolve, reject] = destructPromise({ timeout });\n\n\t\tif (this.working) {\n\t\t\tthis.tasks.push([...task, resolve, reject]);\n\t\t} else {\n\t\t\tthis._digest([...task, resolve, reject]);\n\t\t}\n\n\t\treturn promise;\n\t}\n}\n","import { pack, unpack } from 'msgpackr';\nimport { Request } from 'zeromq';\nimport { AsyncQueue } from './async-queue';\n\ninterface Response {\n\tcode: number;\n\tmsg: string;\n\tdata?: any;\n}\n\nexport interface Logger {\n\tinfo: (...data: any[]) => void;\n\terror: (...data: any[]) => void;\n}\n\ntype PyArgs = any[];\ntype PyKwargs = Record;\n\nexport default class ZeroClient {\n\tlogger: Logger;\n\tprivate socket: Request;\n\tprivate queue: AsyncQueue = new AsyncQueue();\n\n\tprivate url: string;\n\n\tconstructor(logger: Logger = console) {\n\t\tthis.logger = logger;\n\t}\n\n\tbind(url?: string) {\n\t\turl && (this.url = url);\n\t\tthis.socket = new Request({\n\t\t\tsendTimeout: 15e3,\n\t\t\treceiveTimeout: 300e3,\n\t\t});\n\n\t\tthis.socket.connect(this.url);\n\t}\n\n\tprivate __request(payload) {\n\t\tlet retryTimes = 0;\n\n\t\tconst req = async (data) => {\n\t\t\ttry {\n\t\t\t\tif (this.socket.closed) this.bind();\n\t\t\t\treturn await this.socket.send(pack(data)).then(() => this.socket.receive());\n\t\t\t} catch (err) {\n\t\t\t\tif (retryTimes < 2) {\n\t\t\t\t\tretryTimes++;\n\t\t\t\t\tconsole.log(`请求失败,${err.stack}`);\n\t\t\t\t\tconsole.error(`3s后重试第${retryTimes}次`);\n\t\t\t\t\tthis.socket.close();\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 3000));\n\t\t\t\t\treturn req(data);\n\t\t\t\t} else {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treturn req(payload);\n\t}\n\n\tasync request(method: string, args: PyArgs | PyKwargs = null, kwargs: PyKwargs = null): Promise {\n\t\tconst [args_, kwargs_] = Array.isArray(args) ? [args, kwargs] : [undefined, args];\n\t\tconst msg: any = { method };\n\t\tif (args_) msg.args = args_;\n\t\tif (kwargs_) msg.kwargs = kwargs_;\n\n\t\treturn this.queue.addTask([\n\t\t\tasync (opt) => {\n\t\t\t\tconst [result] = await this.__request(opt);\n\n\t\t\t\tconst obj = unpack(result) as Response;\n\n\t\t\t\tif (obj.code === 0) {\n\t\t\t\t\treturn obj.data;\n\t\t\t\t} else {\n\t\t\t\t\treturn Promise.reject(obj.msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\tmsg,\n\t\t]);\n\t}\n}\n","import { getPortPromise } from 'portfinder';\nimport { Options, PythonShell } from 'python-shell';\nimport { defaultsDeep } from 'lodash';\nimport ZeroClient, { Logger } from './ZeroClient';\n\nexport default class PyProcessor extends ZeroClient {\n\tprivate readonly scriptPath: string;\n\tprivate readonly options: Options;\n\tprivate pyShell: PythonShell;\n\n\tprivate retryCount: number = 0;\n\tprivate retryDelay: number = 3000;\n\n\tconstructor(scriptPath: string, options: Options = {}, logger: Logger = console) {\n\t\tsuper(logger);\n\t\tthis.scriptPath = scriptPath;\n\t\tthis.options = options;\n\t}\n\n\tasync bind(port?: string | number) {\n\t\tconst freePort =\n\t\t\tport ||\n\t\t\t(await getPortPromise({\n\t\t\t\tport: 12022,\n\t\t\t\tstopPort: 12122,\n\t\t\t}));\n\n\t\t// \"./streamPredictor.py\", \"--inspect\"\n\t\tconst options = defaultsDeep(\n\t\t\t{\n\t\t\t\targs: [...(this.options.args || []), '-p', `${freePort}`],\n\t\t\t},\n\t\t\tthis.options\n\t\t);\n\n\t\tthis.logger.info(`[python-shell]: starting python shell. path: ${this.scriptPath}`);\n\n\t\tthis.pyShell = new PythonShell(this.scriptPath, options);\n\n\t\tthis.pyShell.stdout.on('data', (data) => this.logger.info(data));\n\n\t\tthis.pyShell.on('pythonError', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} pythonError:`, err));\n\t\tthis.pyShell.on('stderr', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} stderr:`, err));\n\t\tthis.pyShell.on('error', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} error:`, err));\n\t\tthis.pyShell.on('close', () => {\n\t\t\t// python子进程关闭事件\n\t\t\tif (this.retryCount < 5) {\n\t\t\t\tthis.retryCount++;\n\t\t\t\tthis.logger.info(`[python-shell]: ${this.scriptPath} will retry ${this.retryCount}th time after 3 seconds`);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.bind();\n\t\t\t\t}, this.retryDelay);\n\t\t\t}\n\t\t});\n\n\t\tsuper.bind(`tcp://127.0.0.1:${freePort}`);\n\t}\n}\n","module.exports = function isBuffer(arg) {\n return arg instanceof Buffer;\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","try {\n var util = require('util');\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n module.exports = require('./inherits_browser.js');\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","import ZeroClient, { Logger } from './ZeroClient';\nimport * as starry from '../../src/starry';\nimport PyProcessor from './PyProcessor';\nimport { destructPromise } from './async-queue';\nimport { getPort } from 'portfinder';\nimport util from 'util';\nimport { Options } from 'python-shell';\n\nconst getPortPromise = util.promisify(getPort);\n\nexport interface LayoutResult {\n\tdetection: starry.PageLayout;\n\ttheta: number;\n\tinterval: number;\n\tsourceSize?: {\n\t\twidth: number;\n\t\theight: number;\n\t};\n}\n\nexport interface PredictorInterface {\n\tlayout: (streams: Buffer[]) => LayoutResult[];\n\tlayout$reinforce: (streams: Buffer[], baseLayouts: LayoutResult[]) => LayoutResult[];\n\tgauge: (streams: Buffer[]) => {\n\t\timage: Buffer;\n\t}[];\n\tmask: (streams: Buffer[]) => {\n\t\timage: Buffer;\n\t}[];\n\tsemantic: (streams: Buffer[]) => any[];\n\ttextLoc: (streams: Buffer[]) => any[];\n\ttextOcr: (params: { buffers: Buffer[]; location: any[] }) => any[];\n\tbrackets: (params: { buffers: Buffer[] }) => any[];\n\ttopo: (params: { clusters: starry.EventCluster[] }) => any[];\n\tgaugeRenderer: (params: [Buffer, Buffer, number]) => { buffer: Buffer; size: { width: number; height: number } };\n\tjianpu: (params: { buffers: Buffer[] }) => any[];\n\t// [source: Buffer, gauge: Buffer, baseY: number]\n}\n\ntype PredictorType = keyof PredictorInterface;\n\nexport type PyClientsConstructOptions = Partial>;\n\nexport class PyClients {\n\tclients = new Map>();\n\n\tconstructor(public readonly options: PyClientsConstructOptions, public readonly logger: Logger = console) {}\n\n\tasync getClient(type: PredictorType) {\n\t\tif (this.clients.has(type)) {\n\t\t\treturn this.clients.get(type);\n\t\t}\n\n\t\tconst [promise, resolve, reject] = destructPromise();\n\n\t\tconst opt = this.options[type];\n\n\t\tif (!opt) {\n\t\t\tthrow new Error(`no config for client \\`${type}\\` found`);\n\t\t}\n\n\t\ttry {\n\t\t\tif (typeof opt === 'string') {\n\t\t\t\tconst client = new ZeroClient();\n\t\t\t\tclient.bind(opt);\n\t\t\t\tresolve(client);\n\t\t\t} else {\n\t\t\t\tconst { scriptPath, ...option } = opt;\n\t\t\t\tconst client = new PyProcessor(scriptPath, option, this.logger);\n\t\t\t\tawait client.bind(`${await getPortPromise()}`);\n\t\t\t\tresolve(client);\n\t\t\t}\n\n\t\t\tthis.logger.info(`PyClients: ${type} started`);\n\t\t} catch (err) {\n\t\t\tthis.logger.error(`PyClients: ${type} start fail: ${JSON.stringify(err)}`);\n\t\t\treject(err);\n\t\t}\n\n\t\tthis.clients.set(type, promise);\n\n\t\treturn promise;\n\t}\n\n\tasync checkHost(type: PredictorType): Promise {\n\t\tconst client = await this.getClient(type);\n\n\t\treturn client.request('checkHost');\n\t}\n\n\tasync warmup() {\n\t\tconst opts = Object.keys(this.options) as PredictorType[];\n\t\tawait Promise.all(opts.map((type) => this.getClient(type)));\n\t}\n\n\t/**\n\t * 模型预测\n\t * @param type layout | mask | gauge | semantic\n\t * @param args\n\t */\n\tasync predictScoreImages(type: T, ...args: Parameters): Promise> {\n\t\tconst clientType = type.split('$')[0] as PredictorType;\n\t\tconst client = await this.getClient(clientType);\n\t\tlet res = null;\n\n\t\tthis.logger.info(`[predictor]: ${type} py start..`);\n\t\tconst start = Date.now();\n\n\t\tswitch (type) {\n\t\t\tcase 'layout':\n\t\t\t\tres = await client.request('predictDetection', args);\n\t\t\t\tbreak;\n\t\t\tcase 'layout$reinforce':\n\t\t\t\tres = await client.request('predictReinforce', args);\n\t\t\t\tbreak;\n\t\t\tcase 'gauge':\n\t\t\tcase 'mask':\n\t\t\t\tres = await client.request('predict', args, { by_buffer: true });\n\t\t\t\tbreak;\n\t\t\tcase 'semantic':\n\t\t\tcase 'textLoc':\n\t\t\t\tres = await client.request('predict', args);\n\t\t\t\tbreak;\n\t\t\tcase 'textOcr':\n\t\t\tcase 'brackets':\n\t\t\tcase 'topo':\n\t\t\tcase 'gaugeRenderer':\n\t\t\tcase 'jianpu':\n\t\t\t\tres = await client.request('predict', ...args);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.logger.error(`[predictor]: no predictor ${type}`);\n\t\t}\n\n\t\tthis.logger.info(`[predictor]: ${type} py duration: ${Date.now() - start}ms`);\n\n\t\treturn res;\n\t}\n}\n","import { MetaNotation, TokenPosition } from '../performer';\nimport { Term, EventTerm, ContextedTerm, ChordmodeTerm, MarkTerm, Accessory, GraceType, TremoloLink } from './term';\nimport { HashVector } from './hashVector';\nimport { StaffLayout } from '../staffLayout';\nimport * as measureLayout from '../measureLayout';\n\ninterface Rect {\n\tx: number;\n\ty: number;\n\twidth: number;\n\theight: number;\n}\n\ninterface ChordRect {\n\tx: number;\n\tstemX: number;\n\twidth: number;\n\ttop: number;\n\tbottom: number;\n\tstemDirection: string;\n\ttip?: { x: number; y: number };\n}\n\ninterface VLine {\n\tx: number;\n\ty1: number;\n\ty2: number;\n}\n\ninterface Fraction {\n\tnumerator: number;\n\tdenominator: number;\n}\n\ntype DivisionVecotor = [number, number, number, number, number, number, number, number, number]; // [0, 1, 2, 3, 4, 5, 6, 7, 8]\n\ntype MeasureBarType = null | 'Terminal' | 'Segment' | 'VoltaRight';\n\ninterface EventFeature {\n\tdivisions: DivisionVecotor;\n\tdots: [number, number]; // [1, 2]\n\tbeams: [number, number, number]; // ['Open', 'Continue', 'Close']\n\tstemDirections: [number, number]; // ['u', 'd']\n\tgrace: number;\n\ttremoloCatcher: number;\n}\n\ninterface EventPredisposition {\n\tgrace: boolean;\n\ttimeWarped: number;\n\tfullMeasure: number;\n\tfake: number;\n\tfakeP: number;\n\ttick: number;\n\tdivision: number;\n\tdots: number;\n\tdivisionVector: DivisionVecotor;\n\tdotsVector: [number, number, number]; // [0, 1, 2]\n\tbeamVector: [number, number, number, number]; // [null, open, continue, close]\n\tstemDirectionVector: [number, number, number]; // [null, up, down]\n}\n\ninterface ChordColumn {\n\tleft: number;\n\tright: number;\n\tpivotX: number;\n\tys: number[];\n\tnoteIds: string[]; // order by upwards\n\tdivision: number;\n\tdots: number;\n\trest: boolean;\n\tstemDirection: string;\n\taccessories?: Accessory[];\n\tgrace?: GraceType;\n\ttremolo?: number;\n\ttremoloLink?: TremoloLink;\n\tbeam?: string;\n\ttip?: { x: number; y: number };\n\n\t//stemTipY?: number;\n\n\t// for topology\n\tstaff?: number;\n\tid?: number;\n\tprevId?: number;\n\ttickGroup?: number;\n\n\tfeature?: EventFeature;\n}\n\ninterface EventMeasure {\n\tevents: EventTerm[];\n\tcontexts: ContextedTerm[];\n}\n\ninterface StaffBasic {\n\ttimeSignature: Fraction;\n\ttimeSigNumeric: boolean;\n\tkeySignature: number;\n\tdoubtfulTimesig: boolean;\n}\n\ninterface EventMeasureColumn {\n\tmeasureIndex: number;\n\t//startX: number;\n\t//width: number;\n\n\trows: EventMeasure[]; // [staff]\n\tmarks: MarkTerm[];\n\tduration: number;\n\n\tvoices?: number[][]; // [voice, id]\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbasics?: StaffBasic[]; // [staff]\n\txMap?: Map;\n\tregularLoss?: number;\n\tvoltaBegin: boolean;\n\tvoltaEnd: boolean;\n\talternative: boolean;\n\tbarTypes: Record;\n}\n\ninterface EventSystem {\n\tstaffMask: number;\n\tcolumns: EventMeasureColumn[]; // [measure]\n}\n\ninterface TermMeasure extends Partial {\n\tterms: Term[];\n\tduration: number;\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n}\n\ntype TermRow = TermMeasure[];\n\ninterface TermStaff {\n\trows: TermRow[]; // [system]\n}\n\ninterface Pitch {\n\tnote: number;\n\talter: number;\n}\n\nenum PageLayoutMethod {\n\tByLines = 'ByLines',\n\tByBlocks = 'ByBlocks',\n}\n\ninterface RecognitionSettings {\n\tenabledGauge: boolean; // staves straighten\n\tpageLayoutMethod: PageLayoutMethod;\n\tsemanticConfidenceThreshold: number;\n}\n\ninterface Crop {\n\taspect?: number | undefined;\n\tx?: number | undefined;\n\ty?: number | undefined;\n\twidth?: number | undefined;\n\theight?: number | undefined;\n\tunit?: 'px' | '%' | undefined;\n}\n\n//\t0 2 4\t\t\tr r tx\n//\t1 3 5\t\t\tr r ty\ntype Matrix2x3 = [number, number, number, number, number, number];\n\ninterface SourceImageFile {\n\tname: string;\n\tsize: number;\n\turl: string;\n\tcrop?: Crop;\n\tmatrix: Matrix2x3;\n\tdimensions: {\n\t\twidth: number;\n\t\theight: number;\n\t};\n\tinterval: number;\n\tneedGauge?: boolean;\n}\n\ninterface Area extends Rect {\n\tstaves: {\n\t\tinterval: number;\n\t\tmiddleRhos: number[];\n\t\tphi1: number;\n\t\tphi2: number;\n\t};\n}\n\ninterface PageLayout {\n\tareas: Area[];\n}\n\ninterface MeasureBrief {\n\ttimeSignature: Fraction;\n}\n\ninterface VoiceMeasure {\n\ttickMap: { [key: number]: EventTerm | ChordmodeTerm };\n\tduration: number;\n\n\ttimeSignature?: Fraction;\n\ttimeSigNumeric?: boolean;\n\tkeySignature?: number;\n\n\tcontextedTerms: ContextedTerm[];\n\tmarks: MarkTerm[];\n\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbar?: string;\n\n\tempty?: boolean;\n\n\theadStaff?: number;\n\ttailStaff?: number;\n\n\ttrait?: HashVector;\n\tvoiceIndex?: number;\n}\n\ninterface TermVoice {\n\tmode: string;\n\tmeasures: VoiceMeasure[];\n}\n\ninterface VoicesStaff {\n\tcontext?: string;\n\tname?: string;\n\tvoices: TermVoice[];\n}\n\ninterface PaperOptions {\n\traggedLast: boolean;\n\traggedBottom: boolean;\n\traggedLastBottom: boolean;\n\tslashSystemSeparator: boolean;\n}\n\ninterface MusicHeaders {\n\ttitle: string;\n\tsubtitle: string;\n\tsubsubtitle: string;\n\tcomposer: string;\n\tpoet: string;\n\tarranger: string;\n\topus: string;\n\tcopyright: string;\n\tinstrument: string;\n\tdedication: string;\n\ttagline: string;\n}\n\ninterface MusicSheet {\n\ttitle: string;\n\tpageSize: {\n\t\t// in pixels\n\t\twidth: number;\n\t\theight: number;\n\t};\n\tunitSize: number;\n\tmeasureLayout?: measureLayout.MeasureLayout;\n\tstaffLayout: StaffLayout;\n\tpaperOptions?: Partial;\n\theaders: Partial;\n\n\tvoiceStaves: VoicesStaff[];\n\tinstrumentDict: { [key: string]: string };\n}\n\ninterface Performing {\n\tnotation: MetaNotation;\n\ttokenMap: Map;\n}\n\ntype RegulationPolicy = 'test' | 'simple' | 'equations' | 'advanced';\n\ninterface RegulationOptions {\n\tpolicy?: RegulationPolicy;\n\tquota?: number;\n\t[key: string]: any;\n}\n\ninterface ScoreData {\n\tversion?: number;\n\t[key: string]: any;\n}\n\ninterface AdditionalLineStack {\n\tleft: number;\n\tright: number;\n\tn: number;\n}\n\ninterface RegulationSolutionEvent {\n\tid: number;\n\ttick: number;\n\ttickGroup: number;\n\ttimeWarp: Fraction;\n\tdivision?: number;\n\tdots?: number;\n\tbeam?: string;\n\tgrace?: boolean;\n\tfullMeasure?: boolean;\n}\n\ninterface RegulationSolution {\n\tevents: RegulationSolutionEvent[];\n\tvoices: number[][];\n\tduration: number;\n\tpriority?: number;\n\testimatedDuration?: number;\n\ttimeSignature?: Fraction;\n}\n\ninterface BackgroundImage {\n\turl: string;\n\tposition: Rect;\n\toriginal?: boolean;\n}\n\nenum TextType { //\tLEVEL\t\t\tCHARSET\n\tTitle = 'Title', // page\t\t\t\tgeneral\n\tAuthor = 'Author', // page\t\t\t\tgeneral\n\tTempoText = 'TempoText', // measure\t\t\tspecific vocabulary\n\tTempoNumeral = 'TempoNumeral', // measure\t\t\tsymbolic and numeric\n\tTextualMark = 'TextualMark', // term\t\t\t\tspecific vocabulary\n\tLyric = 'Lyric', // term\t\t\t\tgeneral\n\tInstrument = 'Instrument', // system\t\t\tspecific vocabulary\n\tMeasureNumber = 'MeasureNumber', // system\t\t\tnumeric\n\tTimes = 'Times', // staff\t\t\tnumeric\n\tAlternation1 = 'Alternation1', // measure\t\t\tnumeric\n\tAlternation2 = 'Alternation2', // measure\t\t\tnumeric\n\tChord = 'Chord', // measure\t\t\tspecific domian\n\tPageMargin = 'PageMargin', // page\t\t\t\tgeneral\n\tOther = 'Other', // page\t\t\t\tgeneral\n}\n\nexport {\n\tRect,\n\tChordRect,\n\tVLine,\n\tFraction,\n\tMeasureBarType,\n\tEventFeature,\n\tEventPredisposition,\n\tChordColumn,\n\tEventMeasure,\n\tEventMeasureColumn,\n\tEventSystem,\n\tTermMeasure,\n\tTermRow,\n\tTermStaff,\n\tPitch,\n\tPageLayoutMethod,\n\tRecognitionSettings,\n\tSourceImageFile,\n\tPageLayout,\n\tStaffBasic,\n\tVoiceMeasure,\n\tVoicesStaff,\n\tTermVoice,\n\tMeasureBrief,\n\tAdditionalLineStack,\n\tTextType,\n\tMusicSheet,\n\tPerforming,\n\tRegulationOptions,\n\tScoreData,\n\tMusicHeaders,\n\tMatrix2x3,\n\tRegulationSolutionEvent,\n\tRegulationSolution,\n\tBackgroundImage,\n};\n","import sha1 from 'js-sha1';\n\nenum SemanticType {\n\t// clefs\n\tClefG = 'ClefG',\n\tClefF = 'ClefF',\n\tClefC = 'ClefC',\n\n\t// noteheads\n\tNoteheadS0 = 'NoteheadS0',\n\tNoteheadS1 = 'NoteheadS1',\n\tNoteheadS2 = 'NoteheadS2',\n\tNoteheadS1stemU = 'NoteheadS1stemU',\n\tNoteheadS1stemD = 'NoteheadS1stemD',\n\tNoteheadS2stemU = 'NoteheadS2stemU',\n\tNoteheadS2stemD = 'NoteheadS2stemD',\n\n\tvline_Stem = 'vline_Stem',\n\n\t// flags\n\tFlag3 = 'Flag3',\n\n\t// beams\n\tBeamLeft = 'BeamLeft',\n\tBeamContinue = 'BeamContinue',\n\tBeamRight = 'BeamRight',\n\n\t// tremolos\n\tTremoloLeft = 'TremoloLeft',\n\tTremoloRight = 'TremoloRight',\n\tTremoloMiddle = 'TremoloMiddle',\n\n\t// dots (duration)\n\tDot = 'Dot',\n\n\t// rests\n\tRest0 = 'Rest0',\n\tRest1 = 'Rest1',\n\tRest2 = 'Rest2',\n\tRest3 = 'Rest3',\n\tRest4 = 'Rest4',\n\tRest5 = 'Rest5',\n\tRest6 = 'Rest6',\n\tRest0W = 'Rest0W', // capital 'R' in lilypond\n\tRestM1 = 'RestM1',\n\n\t// accidentals\n\tAccNatural = 'AccNatural',\n\tAccSharp = 'AccSharp',\n\tAccDoublesharp = 'AccDoublesharp',\n\tAccFlat = 'AccFlat',\n\tAccFlatflat = 'AccFlatflat',\n\n\t// volta\n\tvline_VoltaLeft = 'vline_VoltaLeft',\n\tvline_VoltaRight = 'vline_VoltaRight',\n\tVoltaLeft = 'VoltaLeft',\n\tVoltaRight = 'VoltaRight',\n\n\tVoltaAlternativeBegin = 'VoltaAlternativeBegin',\n\t//VoltaAlternativeEnd\t= \"VoltaAlternativeEnd\",\n\n\t// vertical bars\n\tBarMeasure = 'BarMeasure',\n\tvline_BarMeasure = 'vline_BarMeasure',\n\tvline_BarTerminal = 'vline_BarTerminal',\n\tvline_BarSegment = 'vline_BarSegment',\n\n\t// slur & tie\n\tSlurBegin = 'SlurBegin',\n\tSlurEnd = 'SlurEnd',\n\n\t// time signature\n\tTimesigC44 = 'TimesigC44',\n\tTimesigC22 = 'TimesigC22',\n\tTimesigZero = 'TimesigZero',\n\tTimesigOne = 'TimesigOne',\n\tTimesigTwo = 'TimesigTwo',\n\tTimesigThree = 'TimesigThree',\n\tTimesigFour = 'TimesigFour',\n\tTimesigFive = 'TimesigFive',\n\tTimesigSix = 'TimesigSix',\n\tTimesigSeven = 'TimesigSeven',\n\tTimesigEight = 'TimesigEight',\n\tTimesigNine = 'TimesigNine',\n\n\t// octave shifts\n\tOctaveShift8va = 'OctaveShift8va',\n\tOctaveShift8vb = 'OctaveShift8vb',\n\tOctaveShift8 = 'OctaveShift8',\n\tOctaveShift0 = 'OctaveShift0',\n\n\t// numbers\n\tZero = 'Zero',\n\tOne = 'One',\n\tTwo = 'Two',\n\tThree = 'Three',\n\tFour = 'Four',\n\tFive = 'Five',\n\tSix = 'Six',\n\tSeven = 'Seven',\n\tEight = 'Eight',\n\tNine = 'Nine',\n\n\t// dynamics\n\tf = 'f',\n\tp = 'p',\n\tm = 'm',\n\tn = 'n',\n\tr = 'r',\n\ts = 's',\n\tz = 'z',\n\n\tCrescendoBegin = 'CrescendoBegin',\n\tCrescendoEnd = 'CrescendoEnd',\n\tDecrescendoBegin = 'DecrescendoBegin',\n\tDecrescendoEnd = 'DecrescendoEnd',\n\n\t// scripts\n\tScriptFermata = 'ScriptFermata',\n\tScriptShortFermata = 'ScriptShortFermata',\n\tScriptSforzato = 'ScriptSforzato',\n\tScriptStaccato = 'ScriptStaccato',\n\tScriptStaccatissimo = 'ScriptStaccatissimo',\n\tScriptTurn = 'ScriptTurn',\n\tScriptTrill = 'ScriptTrill',\n\tScriptSegno = 'ScriptSegno',\n\tScriptCoda = 'ScriptCoda',\n\tScriptArpeggio = 'ScriptArpeggio',\n\tScriptPrall = 'ScriptPrall',\n\tScriptMordent = 'ScriptMordent',\n\tScriptMarcato = 'ScriptMarcato',\n\tScriptTenuto = 'ScriptTenuto',\n\tScriptPortato = 'ScriptPortato',\n\n\t// pedal\n\tPedalStar = 'PedalStar',\n\tPedalPed = 'PedalPed',\n\n\t// additional annotation\n\tKeyAcc = 'KeyAcc',\n\tTempoNotehead = 'TempoNotehead',\n\tGraceNotehead = 'GraceNotehead',\n\tSignLined = 'SignLined',\n\tSignInterval = 'SignInterval',\n\n\trect_Text = 'rect_Text',\n\trect_Lyric = 'rect_Lyric',\n}\n\nconst glyphSemanticMapping: { [key: string]: string } = {\n\t'rests.1': 'Rest1',\n\t'rests.0o': 'Rest0',\n\t'rests.1o': 'Rest1',\n\t'rests.M1': 'RestM1',\n\t'rests.2': 'Rest2',\n\t'rests.3': 'Rest3',\n\t'rests.4': 'Rest4',\n\t'rests.5': 'Rest5',\n\t'rests.6': 'Rest6',\n\t'accidentals.sharp': 'AccSharp',\n\t'accidentals.doublesharp': 'AccDoublesharp',\n\t'accidentals.natural': 'AccNatural',\n\t'accidentals.flat': 'AccFlat',\n\t'accidentals.flatflat': 'AccFlatflat',\n\t'dots.dot': 'Dot',\n\t'scripts.ufermata': 'ScriptFermata',\n\t'scripts.dfermata': 'ScriptFermata',\n\t'scripts.ushortfermata': 'ScriptShortFermata',\n\t'scripts.dshortfermata': 'ScriptShortFermata',\n\t'scripts.staccato': 'ScriptStaccato',\n\t'scripts.ustaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.dstaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.turn': 'ScriptTurn',\n\t'scripts.trill': 'ScriptTrill',\n\t'scripts.segno': 'ScriptSegno',\n\t'scripts.coda': 'ScriptCoda',\n\t'scripts.arpeggio': 'ScriptArpeggio',\n\t'scripts.prall': 'ScriptPrall',\n\t'scripts.mordent': 'ScriptMordent',\n\t'scripts.umarcato': 'ScriptMarcato',\n\t'scripts.dmarcato': 'ScriptMarcato',\n\t'scripts.uportato': 'ScriptPortato',\n\t'scripts.dportato': 'ScriptPortato',\n\t'scripts.tenuto': 'ScriptTenuto',\n\t'scripts.sforzato': 'ScriptSforzato',\n\t'clefs.C': 'ClefC',\n\t'clefs.F': 'ClefF',\n\t'clefs.G': 'ClefG',\n\t'clefs.F_change': 'ClefF',\n\t'clefs.G_change': 'ClefG',\n\t'timesig.C44': 'TimesigC44',\n\t'timesig.C22': 'TimesigC22',\n\t'pedal.*': 'PedalStar',\n\t'pedal.Ped': 'PedalPed',\n\t'noteheads.s0': 'NoteheadS0',\n\t'noteheads.s1': 'NoteheadS1',\n\t'noteheads.s2': 'NoteheadS2',\n\tf: 'f',\n\tm: 'm',\n\tp: 'p',\n\tr: 'r',\n\ts: 's',\n\tz: 'z',\n};\n\nconst semanticPriorities: { [key: string]: number } = {\n\tClefG: 0,\n\tClefF: 0,\n\tTimesigFour: 0,\n\tTimesigThree: 0,\n\tTimesigTwo: 0,\n\tNoteheadS0: 0,\n\tNoteheadS1: 0,\n\tNoteheadS2: 0,\n\tDot: 0,\n\tvline_BarMeasure: 0,\n\tvline_Stem: 0,\n\tFlag3: 0,\n\n\tTimesigC44: 1,\n\tTimesigC22: 1,\n\tTimesigEight: 1,\n\tTimesigSix: 1,\n\tAccNatural: 1,\n\tAccSharp: 1,\n\tAccFlat: 1,\n\tKeyAcc: 1,\n\tRest0: 1,\n\tRest1: 1,\n\tRest2: 1,\n\tRest3: 1,\n\tRest4: 1,\n\tOctaveShift8: 1,\n\tOctaveShift0: 1,\n\n\tAccDoublesharp: 2,\n\tAccFlatflat: 2,\n\tTimesigOne: 2,\n\tTimesigNine: 2,\n\tRest5: 2,\n\tRest6: 2,\n\tSlurBegin: 2,\n\tSlurEnd: 2,\n\tVoltaLeft: 2,\n\tVoltaRight: 2,\n\t//VoltaAlternativeBegin: 2,\n\tvline_BarTerminal: 2,\n\tvline_BarSegment: 2,\n\tTempoNotehead: 2,\n\tGraceNotehead: 2,\n\tSignLined: 2,\n\tSignInterval: 2,\n\tBeamLeft: 2,\n\tBeamRight: 2,\n\tBeamContinue: 2,\n\tTremoloLeft: 2,\n\tTremoloRight: 2,\n\tTremoloMiddle: 2,\n\tStemTip: 2,\n\tStemHead: 2,\n\n\t//Rest0W: 3,\n\tf: 3,\n\tp: 3,\n\tm: 3,\n\tScriptFermata: 3,\n\tScriptSforzato: 3,\n\tScriptStaccato: 3,\n\tScriptStaccatissimo: 3,\n\tScriptTurn: 3,\n\tScriptTrill: 3,\n\tScriptSegno: 3,\n\tScriptCoda: 3,\n\tScriptArpeggio: 3,\n\tScriptPrall: 3,\n\tScriptMordent: 3,\n\tScriptTenuto: 3,\n\tPedalStar: 3,\n\tPedalPed: 3,\n\tTimesigFive: 3,\n\tTimesigSeven: 3,\n\tTimesigZero: 3,\n\tOne: 3,\n\tTwo: 3,\n\tThree: 3,\n\tFour: 3,\n\tFive: 3,\n\trect_Text: 3,\n\trect_Lyric: 3,\n\tCrescendoBegin: 3,\n\tCrescendoEnd: 3,\n\tDecrescendoBegin: 3,\n\tDecrescendoEnd: 3,\n\n\tRestM1: 4,\n\tClefC: 4,\n\tScriptShortFermata: 4,\n\tScriptMarcato: 4,\n\tScriptPortato: 4,\n\ts: 4,\n\tr: 4,\n\tz: 4,\n\tZero: 4,\n\tSix: 4,\n\tSeven: 4,\n\tEight: 4,\n\tNine: 4,\n};\n\ninterface Position {\n\tx?: number;\n\ty?: number;\n}\n\nconst NOTEHEAD_WIDTHS = {\n\tNoteheadS0: 0.913 * 2,\n\tNoteheadS1: 0.632 * 2,\n\tNoteheadS2: 0.599 * 2,\n};\n\nconst glyphCenters: { [key: string]: Position } = {\n\t//\"clefs.C\": { x: 1.3 },\n\t'clefs.F': { x: 1.06 },\n\t'clefs.G': { x: 1.3 },\n\t'clefs.F_change': { x: 0.87 },\n\t'clefs.G_change': { x: 1.07 },\n\t'timesig.C44': { x: 0.9 },\n\t'timesig.C22': { x: 0.9 },\n\tzero: { x: 0.7, y: -1 },\n\tone: { x: 0.7, y: -1 },\n\ttwo: { x: 0.7, y: -1 },\n\tthree: { x: 0.7, y: -1 },\n\tfour: { x: 0.7, y: -1 },\n\tfive: { x: 0.7, y: -1 },\n\tsix: { x: 0.7, y: -1 },\n\tseven: { x: 0.7, y: -1 },\n\teight: { x: 0.7, y: -1 },\n\tnine: { x: 0.7, y: -1 },\n\t'accidentals.sharp': { x: 0.55 },\n\t'accidentals.doublesharp': { x: 0.5 },\n\t'accidentals.natural': { x: 0.3 },\n\t'accidentals.flat': { x: 0.3 },\n\t'accidentals.flatflat': { x: 0.5 },\n\t'noteheads.s0': { x: NOTEHEAD_WIDTHS.NoteheadS0 / 2 },\n\t'noteheads.s1': { x: NOTEHEAD_WIDTHS.NoteheadS1 / 2 },\n\t'noteheads.s2': { x: NOTEHEAD_WIDTHS.NoteheadS2 / 2 },\n\t'rests.0': { x: 0.75, y: 1 },\n\t'rests.1': { x: 0.75 },\n\t'rests.0o': { x: 0.75, y: 1 },\n\t'rests.1o': { x: 0.75 },\n\t'rests.M1': { x: 0.75, y: 1 },\n\t'rests.2': { x: 0.5 },\n\t'rests.3': { x: 0.5 },\n\t'rests.4': { x: 0.5 },\n\t'rests.5': { x: 0.5 },\n\t'rests.6': { x: 0.5 },\n\tf: { x: 0.6, y: -0.5 },\n\tm: { x: 0.9, y: -0.5 },\n\tp: { x: 0.5, y: -0.5 },\n\tr: { x: 0.5, y: -0.5 },\n\ts: { x: 0.5, y: -0.5 },\n\tz: { x: 0.5, y: -0.5 },\n\t'scripts.trill': { y: -0.5 },\n\t'scripts.segno': { x: 0, y: 0 },\n\t'scripts.coda': { x: 0, y: 0 },\n\t'scripts.arpeggio': { x: 0.5, y: -0.5 },\n\t'pedal.*': { x: 0.78, y: -0.78 },\n\t'pedal.Ped': { x: 1.6, y: -0.7 },\n};\n\ninterface Point {\n\t// in staff unit coordinates\n\tx: number;\n\ty: number;\n\n\tpivotX?: number;\n\n\t// for prediction\n\tconfidence?: number;\n\n\t// sheet token index in page\n\tindex?: number;\n\ttag?: string;\n\n\textension?: {\n\t\ty1?: number;\n\t\ty2?: number;\n\n\t\thref?: string;\n\t\twidth?: number;\n\t\theight?: number;\n\n\t\ttext?: string;\n\t\ttheta?: number;\n\t\ttype?: string;\n\t\ttextFeature?: Record;\n\t};\n}\n\ninterface SemanticPoint extends Point {\n\tid?: string;\n\tsemantic: SemanticType;\n}\n\nconst ONE_D_SEMANTICS = [\n\t'OctaveShift8va',\n\t'OctaveShift8vb',\n\t'OctaveShift8',\n\t'OctaveShift0',\n\t'vline_VoltaLeft',\n\t'vline_VoltaRight',\n\t'VoltaAlternativeBegin',\n\t'vline_BarMeasure',\n\t'vline_BarTerminal',\n\t'vline_BarSegment',\n];\n\nconst SYSTEM_SEMANTIC_TYPES = [\n\tSemanticType.BarMeasure,\n\tSemanticType.vline_BarMeasure,\n\tSemanticType.vline_BarTerminal,\n\tSemanticType.vline_BarSegment,\n\tSemanticType.vline_VoltaLeft,\n\tSemanticType.vline_VoltaRight,\n\tSemanticType.VoltaAlternativeBegin,\n];\n\nconst st = SemanticType;\nconst CONFLICTION_GROUPS = [\n\t[st.NoteheadS0, st.NoteheadS1, st.NoteheadS2],\n\t[st.Zero, st.One, st.Two, st.Three, st.Four, st.Five, st.Six, st.Seven, st.Eight, st.Nine, st.ScriptStaccatissimo],\n\t[\n\t\tst.TimesigZero,\n\t\tst.TimesigOne,\n\t\tst.TimesigTwo,\n\t\tst.TimesigThree,\n\t\tst.TimesigFour,\n\t\tst.TimesigFive,\n\t\tst.TimesigSix,\n\t\tst.TimesigSeven,\n\t\tst.TimesigEight,\n\t\tst.TimesigNine,\n\t],\n\t[st.Rest0, st.Rest1, st.Rest2, st.Rest3, st.Rest4, st.Rest5, st.Rest6, st.Rest0W, st.RestM1],\n\t[st.SignInterval, st.SignLined],\n\t[st.BeamLeft, st.BeamContinue, st.BeamRight],\n];\n\nconst STAMP_SEMANTICS = [\n\tst.ClefG,\n\tst.ClefF,\n\tst.ClefC,\n\tst.NoteheadS0,\n\tst.NoteheadS1,\n\tst.NoteheadS2,\n\tst.Dot,\n\tst.Rest0,\n\tst.Rest1,\n\tst.Rest2,\n\tst.Rest3,\n\tst.Rest4,\n\tst.Rest5,\n\tst.Rest6,\n\tst.RestM1,\n\tst.AccNatural,\n\tst.AccSharp,\n\tst.AccDoublesharp,\n\tst.AccFlat,\n\tst.AccFlatflat,\n\tst.TimesigC44,\n\tst.TimesigC22,\n\tst.TimesigZero,\n\tst.TimesigOne,\n\tst.TimesigTwo,\n\tst.TimesigThree,\n\tst.TimesigFour,\n\tst.TimesigFive,\n\tst.TimesigSix,\n\tst.TimesigSeven,\n\tst.TimesigEight,\n\tst.TimesigNine,\n\tst.One,\n\tst.Two,\n\tst.Three,\n\tst.Four,\n\tst.Five,\n\tst.OctaveShift8,\n\t//st.OctaveShift15,\n\tst.OctaveShift0,\n\tst.f,\n\tst.p,\n\tst.m,\n\tst.n,\n\tst.r,\n\tst.s,\n\tst.z,\n\tst.ScriptFermata,\n\tst.ScriptShortFermata,\n\tst.ScriptSforzato,\n\tst.ScriptStaccato,\n\tst.ScriptStaccatissimo,\n\tst.ScriptTurn,\n\tst.ScriptTrill,\n\tst.ScriptSegno,\n\tst.ScriptCoda,\n\tst.ScriptArpeggio,\n\tst.ScriptPrall,\n\tst.ScriptMordent,\n\tst.ScriptMarcato,\n\tst.ScriptTenuto,\n\tst.ScriptPortato,\n\tst.PedalStar,\n\tst.PedalPed,\n];\n\n// [cx, cy, width, height]\nconst STAMP_RECTS = {\n\tClefG: [-0.0625, -1.125, 3.6, 8.6],\n\tClefF: [0.25, 0.5625, 3.6, 3.8],\n\tClefC: [0.25, 0, 3.25, 4.5],\n\tNoteheadS0: [0.0625, 0, 2.55, 1.4],\n\tNoteheadS1: [0.0625, 0, 1.8, 1.4],\n\tNoteheadS2: [0.0625, -0.0625, 1.65, 1.35],\n\tDot: [0.25, 0, 0.6, 0.6],\n\tRest0: [0, -0.75, 3.25, 0.9],\n\tRest1: [0, -0.25, 3.25, 0.9],\n\tRest2: [-0.0625, -0.1875, 1.6, 3.375],\n\tRest3: [0, 0.0625, 1.2, 2.25],\n\tRest4: [0.0625, 0.5625, 1.65, 3.375],\n\tRest5: [0.0625, 0.0625, 1.95, 4.375],\n\tRest6: [0.0625, 0.5625, 1.95, 5.375],\n\tRestM1: [-0.4375, -1.5, 0.75, 1.2],\n\tAccNatural: [0, 0, 0.9, 3.5],\n\tAccSharp: [0, 0, 1.5, 3.5],\n\tAccDoublesharp: [0, 0, 1.5, 1.5],\n\tAccFlat: [0, -0.5625, 1.2, 3.125],\n\tAccFlatflat: [0.1875, -0.5625, 1.95, 3.125],\n\tTimesigC44: [-0.0625, 0, 2.25, 2.3],\n\tTimesigC22: [-0.0625, 0, 2.25, 3.2],\n\tTimesigZero: [0, 0, 1.8, 2.2],\n\tTimesigOne: [-0.125, 0, 1.5, 2.2],\n\tTimesigTwo: [0, 0, 2.2, 2.2],\n\tTimesigThree: [-0.0625, 0, 1.9, 2.4],\n\tTimesigFour: [0.0625, 0, 1.95, 2.2],\n\tTimesigFive: [0, 0, 1.8, 2.3],\n\tTimesigSix: [0, 0, 2.0, 2.4],\n\tTimesigSeven: [0, 0, 1.8, 2.2],\n\tTimesigEight: [0, 0, 1.9, 2.2],\n\tTimesigNine: [0, 0, 1.9, 2.2],\n\tOne: [-0.0625, 0, 0.75, 1.6],\n\tTwo: [0, 0, 1.2, 1.6],\n\tThree: [0, 0, 1.2, 1.6],\n\tFour: [0, 0, 1.2, 1.6],\n\tFive: [0, 0, 1.2, 1.6],\n\tOctaveShift8: [2.125, -0.1875, 4.75, 3.6],\n\tOctaveShift0: [-0.4, 0, 1.8, 4.2],\n\tf: [0.0625, -0.125, 2.55, 3],\n\tp: [-0.0625, 0.25, 2.55, 2.1],\n\tm: [-0.125, -0.0625, 2.4, 1.35],\n\tn: [-0.3125, -0.0625, 1.95, 1.35],\n\tr: [0, -0.125, 1.5, 1.5],\n\ts: [0, -0.0625, 1.2, 1.35],\n\tz: [0.0625, 0, 1.35, 1.5],\n\tScriptFermata: [0, 0, 3.25, 3.9],\n\tScriptShortFermata: [0, 0, 2.4, 4.95],\n\tScriptSforzato: [-0.0625, 0, 2.5, 1.2],\n\tScriptStaccato: [0, -0.0625, 0.6, 0.45],\n\tScriptStaccatissimo: [0, 0, 1.2, 2.6],\n\tScriptTurn: [0, 0, 2.7, 1.5],\n\tScriptTrill: [-0.125, -0.5, 3, 2.7],\n\tScriptSegno: [0, 0, 2.4, 3.5],\n\tScriptCoda: [0, 0, 2.7, 3.25],\n\tScriptArpeggio: [-0.0625, 0, 1.05, 1.8],\n\tScriptPrall: [0, 0, 2.4, 1.2],\n\tScriptMordent: [0, 0, 2.4, 1.5],\n\tScriptMarcato: [0, 0, 1.2, 2.475],\n\tScriptTenuto: [0, -0.0625, 1.5, 0.15],\n\tScriptPortato: [0, 0, 1.5, 1.65],\n\tPedalStar: [0, 0, 3.2, 3.2],\n\tPedalPed: [0, -0.25, 4.7, 2.4],\n};\n\nconst hashSemanticPoint = (systemIndex: number, staffIndex: number, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x * 10);\n\tconst y = Math.round(point.y * 10);\n\tconst source = `${systemIndex}|${staffIndex}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nconst hashPageSemanticPoint = (pageName: string, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x);\n\tconst y = Math.round(point.y);\n\tconst source = `p-${pageName}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nexport {\n\tSemanticType,\n\tglyphSemanticMapping,\n\tsemanticPriorities,\n\tPoint,\n\tSemanticPoint,\n\tNOTEHEAD_WIDTHS,\n\tglyphCenters,\n\tONE_D_SEMANTICS,\n\tSYSTEM_SEMANTIC_TYPES,\n\tCONFLICTION_GROUPS,\n\tSTAMP_SEMANTICS,\n\tSTAMP_RECTS,\n\thashSemanticPoint,\n\thashPageSemanticPoint,\n};\n","import { TextType } from './interfaces';\nimport { NOTEHEAD_WIDTHS } from './semanticPoint';\n\nenum TokenType {\n\t// clefs\n\tClefG = 'clefs-G', // clefs.G_change\n\tClefF = 'clefs-F', // clefs.F_change\n\tClefC = 'clefs-C', // clefs.C_change\n\n\t// time signature\n\tTimesigC44 = 'timesig-C44',\n\tTimesigC22 = 'timesig-C22',\n\tTimesigZero = 'zero|timesig0',\n\tTimesigOne = 'one|timesig1',\n\tTimesigTwo = 'two|timesig2',\n\tTimesigThree = 'three|timesig3',\n\tTimesigFour = 'four|timesig4',\n\tTimesigFive = 'five|timesig5',\n\tTimesigSix = 'six|timesig6',\n\tTimesigSeven = 'seven|timesig7',\n\tTimesigEight = 'eight|timesig8',\n\tTimesigNine = 'nine|timesig9',\n\n\t// octave shifts\n\tOctaveShift8va = 'octave-a',\n\tOctaveShift8vb = 'octave-b',\n\tOctaveShift0 = 'octave-0',\n\n\t// numbers\n\tZero = 'zero|n0',\n\tOne = 'one|n1',\n\tTwo = 'two|n2',\n\tThree = 'three|n3',\n\tFour = 'four|n4',\n\tFive = 'five|n5',\n\tSix = 'six|n6',\n\tSeven = 'seven|n7',\n\tEight = 'eight|n8',\n\tNine = 'nine|n9',\n\n\t// accidentals\n\tAccNatural = 'accidentals-natural',\n\tAccSharp = 'accidentals-sharp',\n\tAccDoublesharp = 'accidentals-doublesharp',\n\tAccFlat = 'accidentals-flat',\n\tAccFlatflat = 'accidentals-flatflat',\n\tKeyNatural = 'accidentals-natural|key-natural',\n\tKeySharp = 'accidentals-sharp|key-sharp',\n\tKeyFlat = 'accidentals-flat|key-flat',\n\n\t// noteheads\n\tNoteheadS0 = 'noteheads-s0',\n\tNoteheadS1 = 'noteheads-s1',\n\tNoteheadS2 = 'noteheads-s2',\n\tNoteheadS1stemU = 'noteheads-s1|noteheads-s1-u',\n\tNoteheadS1stemD = 'noteheads-s1|noteheads-s1-d',\n\tNoteheadS2stemU = 'noteheads-s2|noteheads-s2-u',\n\tNoteheadS2stemD = 'noteheads-s2|noteheads-s2-d',\n\n\t// rests\n\tRest0 = 'rests-0o',\n\tRest1 = 'rests-1o',\n\tRest2 = 'rests-2',\n\tRest3 = 'rests-3',\n\tRest4 = 'rests-4',\n\tRest5 = 'rests-5',\n\tRest6 = 'rests-6',\n\tRest0W = 'rests-0',\n\tRestM1 = 'rests-M1',\n\n\t// flags\n\tFlag3 = 'flags-u3', // flags.d3\n\tFlag4 = 'flags-u4', // flags.d4\n\tFlag5 = 'flags-u5', // flags.d5\n\tFlag6 = 'flags-u6', // flags.d6\n\tFlag7 = 'flags-u7', // flags.d7\n\tFlag8 = 'flags-u8', // flags.d8\n\n\t// beams\n\tBeamLeft = '|beam-left',\n\tBeamRight = '|beam-right',\n\tBeamContinue = '|beam-continue',\n\n\t// tremolos\n\tTremoloLeft = '|tremolo-left',\n\tTremoloRight = '|tremolo-right',\n\tTremoloMiddle = '|tremolo-middle',\n\n\t// slur & tie\n\tSlurBegin = '|slur-begin',\n\tSlurEnd = '|slur-end',\n\tTieBegin = '|tie-begin',\n\tTieEnd = '|tie-end',\n\n\t// volta\n\tVoltaLeft = '|volta-left',\n\tVoltaRight = '|volta-right',\n\n\tVoltaAlternativeBegin = '|volta-alter-begin',\n\t//VoltaAlternativeEnd = \"|volta-alter-end\",\n\n\t// vertical bars\n\t//BarMeasure = \"|bar-measure\",\n\tBarTerminal = '|bar-terminal',\n\tBarSegment = '|bar-segment',\n\n\t// dots (duration)\n\tDot = '|dot',\n\tDotDot = '|dotdot',\n\n\t// dynamics\n\tf = 'f',\n\tp = 'p',\n\tm = 'm',\n\tr = 'r',\n\ts = 's',\n\tz = 'z',\n\n\t//\n\tWedgeCrescendo = '|wedge-crescendo',\n\tWedgeDiminuendo = '|wedge-diminuendo',\n\tWedgeClose = '|wedge-close',\n\n\tCrescendoBegin = '|wedge-crescendo',\n\tDecrescendoBegin = '|wedge-diminuendo',\n\tCrescendoEnd = '|wedge-close',\n\tDecrescendoEnd = '|wedge-close',\n\n\t// scripts\n\tScriptFermata = 'scripts-ufermata', // scripts.dfermata\n\tScriptShortFermata = 'scripts-ushortfermata', // scripts.dshortfermata\n\tScriptSforzato = 'scripts-sforzato',\n\tScriptStaccato = 'scripts-staccato',\n\tScriptStaccatissimo = 'scripts-ustaccatissimo', // scripts.dstaccatissimo\n\tScriptTurn = 'scripts-turn',\n\tScriptTrill = 'scripts-trill',\n\tScriptSegno = 'scripts-segno',\n\tScriptCoda = 'scripts-coda',\n\tScriptArpeggio = 'scripts-arpeggio',\n\tScriptPrall = 'scripts-prall',\n\tScriptMordent = 'scripts-mordent',\n\tScriptMarcato = 'scripts-umarcato', // scripts.dmarcato\n\tScriptTenuto = 'scripts-tenuto',\n\tScriptPortato = 'scripts-uportato', // scripts.dportato\n\n\t// pedal\n\tPedalStar = 'pedal-star',\n\tPedalPed = 'pedal-Ped',\n\n\tText = '|text',\n\tGraceNotehead = '|grace-notehead',\n}\n\n// alias\nconst tt = TokenType;\n\nexport const TokenTypes = Object.values(TokenType);\nexport const TokenClefs = TokenTypes.filter((t) => /clefs-/.test(t));\nexport const TokenTimesigs = TokenTypes.filter((t) => /timesig/.test(t));\nexport const TokenTimesigsC = TokenTypes.filter((t) => /timesig-/.test(t));\nexport const TokenTimesigsN = TokenTypes.filter((t) => /timesig\\d/.test(t));\nexport const TokenOctshifts = TokenTypes.filter((t) => /octave-/.test(t));\nexport const TokenNumbers = TokenTypes.filter((t) => /n\\d/.test(t));\nexport const TokenAccidentals = TokenTypes.filter((t) => /accidentals-/.test(t));\nexport const TokenNoteheads = TokenTypes.filter((t) => /noteheads-/.test(t));\nexport const TokenBareNoteheads = [tt.NoteheadS0, tt.NoteheadS1, tt.NoteheadS2];\nexport const TokenDirectionalNoteheads = TokenTypes.filter((t) => /noteheads-.+-[ud]/.test(t));\nexport const TokenRests = TokenTypes.filter((t) => /rests-/.test(t));\nexport const TokenFlags = TokenTypes.filter((t) => /flags-/.test(t));\nexport const TokenVolta = TokenTypes.filter((t) => /volta-/.test(t));\nexport const TokenDynamics = TokenTypes.filter((t) => /^[a-z]$/.test(t));\nexport const TokenScripts = TokenTypes.filter((t) => /scripts-/.test(t));\nexport const TokenPedals = TokenTypes.filter((t) => /pedal-/.test(t));\nexport const TokenDots = [tt.Dot, tt.DotDot];\nexport const TokenArcs = [tt.SlurBegin, tt.SlurEnd, tt.TieBegin, tt.TieEnd];\nexport const TokenBeams = TokenTypes.filter((t) => /beam-/.test(t));\nexport const TokenWedges = TokenTypes.filter((t) => /wedge-/.test(t));\n\nexport const TokenAccessories = [\n\t...TokenNumbers,\n\t...TokenDynamics,\n\t...TokenWedges,\n\t...TokenPedals,\n\t...TokenArcs,\n\n\ttt.ScriptFermata,\n\ttt.ScriptShortFermata,\n\ttt.ScriptSforzato,\n\ttt.ScriptStaccato,\n\ttt.ScriptStaccatissimo,\n\ttt.ScriptTurn,\n\ttt.ScriptTrill,\n\ttt.ScriptPrall,\n\ttt.ScriptMordent,\n\ttt.ScriptMarcato,\n\ttt.ScriptTenuto,\n\ttt.ScriptPortato,\n];\n\nexport const TokenDirectionless = [...TokenPedals];\n\nexport const TokenGlyphs = [\n\t...TokenClefs,\n\t...TokenTimesigs,\n\t...TokenNumbers,\n\t...TokenAccidentals,\n\ttt.NoteheadS0,\n\ttt.NoteheadS1,\n\ttt.NoteheadS2,\n\t...TokenRests,\n\t...TokenDynamics,\n\t...TokenScripts,\n\t...TokenPedals,\n\t...TokenDots,\n];\n\nconst TOKEN_Y_ROUND = {} as Record;\nTokenClefs.forEach((t) => (TOKEN_Y_ROUND[t] = 1));\nTokenTimesigsN.forEach((t) => (TOKEN_Y_ROUND[t] = 1));\nTokenAccidentals.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenNoteheads.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenRests.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenDots.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\n\nconst TOKEN_Y_FIXED = {} as Record;\nTokenTimesigsC.forEach((t) => (TOKEN_Y_FIXED[t] = 0));\nTokenVolta.forEach((t) => (TOKEN_Y_FIXED[t] = 0));\n\nclass Token {\n\tstatic className = 'Token';\n\n\tid: string;\n\ttype: TokenType;\n\tx: number;\n\ty: number;\n\tpivotX?: number;\n\n\tconfidence: number;\n\n\ttip?: { x: number; y: number };\n\n\tvoice?: number; // integer, every bit stand for a voice\n\ttimeWarped?: boolean;\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tget typeId(): string {\n\t\treturn this.type.split('|').reverse()[0];\n\t}\n\n\tget isPredicted(): boolean {\n\t\treturn Number.isFinite(this.confidence);\n\t}\n\n\tget isNotehead(): boolean {\n\t\treturn TokenDirectionalNoteheads.includes(this.type) || this.type === TokenType.NoteheadS0;\n\t}\n\n\tget isContexted(): boolean {\n\t\treturn (\n\t\t\tTokenClefs.includes(this.type) || TokenTimesigs.includes(this.type) || TokenOctshifts.includes(this.type) || TokenAccidentals.includes(this.type)\n\t\t);\n\t}\n\n\tget isAccessory(): boolean {\n\t\treturn TokenNumbers.includes(this.type) || TokenDynamics.includes(this.type) || TokenScripts.includes(this.type) || TokenPedals.includes(this.type);\n\t}\n\n\tget division(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn 0;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn 2;\n\n\t\t\tcase tt.Flag3:\n\t\t\t\treturn 3;\n\n\t\t\tcase tt.Flag4:\n\t\t\t\treturn 4;\n\n\t\t\tcase tt.Flag5:\n\t\t\t\treturn 5;\n\n\t\t\tcase tt.Flag6:\n\t\t\t\treturn 6;\n\n\t\t\tcase tt.Flag7:\n\t\t\t\treturn 7;\n\n\t\t\tcase tt.Flag8:\n\t\t\t\treturn 8;\n\n\t\t\tcase tt.RestM1:\n\t\t\t\treturn -1;\n\n\t\t\tcase tt.Rest0:\n\t\t\t\treturn 0;\n\n\t\t\tcase tt.Rest1:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.Rest2:\n\t\t\t\treturn 2;\n\n\t\t\tcase tt.Rest3:\n\t\t\t\treturn 3;\n\n\t\t\tcase tt.Rest4:\n\t\t\t\treturn 4;\n\n\t\t\tcase tt.Rest5:\n\t\t\t\treturn 5;\n\n\t\t\tcase tt.Rest6:\n\t\t\t\treturn 6;\n\n\t\t\t// TODO:\n\t\t\t//case tt.Rest0W:\n\t\t\t//\treturn 0;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget dots(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.Dot:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.DotDot:\n\t\t\t\treturn 2;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget direction(): 'u' | 'd' | null {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn 'u';\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn 'd';\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget width(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS0;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS2;\n\t\t}\n\t}\n\n\tget left(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn this.x - this.width / 2;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn this.x - this.width;\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn this.x;\n\t\t}\n\n\t\treturn this.x;\n\t}\n\n\tget right(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn this.x + this.width / 2;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn this.x;\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn this.x + this.width;\n\t\t}\n\n\t\treturn this.x;\n\t}\n\n\tget voiceIndices(): number[] {\n\t\tif (!this.voice || this.voice < 0) return [];\n\n\t\treturn Array(Math.floor(Math.log2(this.voice)) + 1)\n\t\t\t.fill(null)\n\t\t\t.reduce((indices, _, i) => (this.voice & (1 << i) ? [i + 1, ...indices] : indices), []);\n\t}\n}\n\nclass TextToken extends Token {\n\ttextType: TextType;\n\ttext: string;\n\ttextFeature?: Record;\n\twidth_: number;\n\tfontSize: number;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\t\tObject.assign(this, data);\n\t}\n\n\tget width(): number {\n\t\treturn this.width_;\n\t}\n\n\tset width(value: number) {\n\t\tthis.width_ = value;\n\t}\n}\n\nexport { TokenType, Token, TextToken, TOKEN_Y_ROUND, TOKEN_Y_FIXED };\n","import pick from 'lodash/pick';\n\nconst recoverJSON = (json: string | object, classDict): T => {\n\tif (typeof json === 'object') json = JSON.stringify(json);\n\n\treturn JSON.parse(json, (_, value) => {\n\t\tif (value && typeof value === 'object' && value.__prototype) {\n\t\t\tconst Class = classDict[value.__prototype];\n\t\t\tif (Class) {\n\t\t\t\tconst { __prototype, ...fields } = value;\n\t\t\t\treturn new Class(fields);\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t});\n};\n\nconst deepCopy = (o: any, dict: Map = null): any => {\n\tdict = dict || new Map();\n\tif (dict.get(o)) return dict.get(o);\n\n\tif (Array.isArray(o)) {\n\t\tconst result = [];\n\t\tdict.set(o, result);\n\n\t\to.forEach((e) => result.push(deepCopy(e, dict)));\n\n\t\treturn result;\n\t} else if (o && typeof o === 'object') {\n\t\tconst result = {};\n\t\tdict.set(o, result);\n\n\t\tObject.entries(o).forEach(([key, value]) => (result[key] = deepCopy(value, dict)));\n\t\tObject.setPrototypeOf(result, o.__proto__);\n\n\t\treturn result;\n\t}\n\n\treturn o;\n};\n\nclass SimpleClass {\n\tassign(data?: object) {\n\t\tif (data) Object.assign(this, data);\n\t}\n\n\ttoJSON() {\n\t\tconst cls = this.constructor as any;\n\n\t\tconst serializedKeys = cls.serializedKeys || (cls.blackKeys && Object.keys(this).filter((key) => !cls.blackKeys.includes(key)));\n\t\tconst fields = serializedKeys ? pick(this, serializedKeys) : this;\n\n\t\treturn {\n\t\t\t__prototype: cls.className,\n\t\t\t...fields,\n\t\t};\n\t}\n\n\tdeepCopy(): this {\n\t\treturn deepCopy(this);\n\t}\n}\n\nexport { recoverJSON, SimpleClass };\n","import { SimpleClass } from '../starry/aux_/typedJSON';\n\nenum LayoutType {\n\tOrdinary = 'ordinary',\n\tFull = 'full',\n\tConservative = 'conservative',\n\tOnce = 'once',\n}\n\ninterface MeasureLayout {\n\tserialize(type: LayoutType): number[];\n\n\tseq: MeasureSeq;\n\tcode: string;\n}\n\nexport type MeasureSeq = MeasureLayout[];\n\nconst spreadMeasureSeq = (seq: MeasureSeq, type: LayoutType = LayoutType.Ordinary): number[] => [].concat(...seq.map((layout) => layout.serialize(type)));\n\nconst seqToCode = (seq: MeasureSeq, { withBrackets = false }: { withBrackets?: boolean } = {}): string => {\n\t//const code = seq.map(layout => layout.code).join(\", \");\n\tlet code = '';\n\tlet inRange = false;\n\n\tfor (let i = 0; i < seq.length; ++i) {\n\t\tconst middle = seq[i - 1] instanceof SingleMLayout && seq[i] instanceof SingleMLayout && seq[i + 1] instanceof SingleMLayout;\n\t\tif (middle) {\n\t\t\tif (!inRange) {\n\t\t\t\tcode += '..';\n\t\t\t\tinRange = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (i > 0 && !inRange) code += ', ';\n\n\t\t\tinRange = false;\n\n\t\t\tcode += seq[i].code;\n\t\t}\n\t}\n\n\treturn withBrackets ? `[${code}]` : code;\n};\n\nclass SingleMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'SingleMLayout';\n\n\tmeasure: number;\n\n\tstatic from(measure: number) {\n\t\tconst layout = new SingleMLayout();\n\t\tlayout.measure = measure;\n\n\t\treturn layout;\n\t}\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(): number[] {\n\t\treturn [this.measure];\n\t}\n\n\tget seq(): MeasureSeq {\n\t\treturn [this];\n\t}\n\n\tget code(): string {\n\t\treturn this.measure.toString();\n\t}\n}\n\nclass BlockMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'BlockMLayout';\n\n\tseq: MeasureSeq;\n\n\tstatic trimSeq(seq: MeasureSeq): MeasureSeq {\n\t\tconst seq2 = [];\n\t\tfor (const layout of seq) {\n\t\t\tif (layout instanceof BlockMLayout) {\n\t\t\t\tfor (const sub of layout.seq) seq2.push(sub);\n\t\t\t} else seq2.push(layout);\n\t\t}\n\n\t\t// reduce duplicated or backwards single measures\n\t\tconst seq3 = [];\n\t\tlet measure = null;\n\t\tfor (const layout of seq2) {\n\t\t\tif (layout instanceof SingleMLayout) {\n\t\t\t\tif (layout.measure > measure) {\n\t\t\t\t\tseq3.push(layout);\n\t\t\t\t\tmeasure = layout.measure;\n\t\t\t\t}\n\t\t\t} else seq3.push(layout);\n\t\t}\n\n\t\treturn seq3;\n\t}\n\n\tstatic fromSeq(seq: MeasureSeq): BlockMLayout {\n\t\tconst layout = new BlockMLayout();\n\t\tlayout.seq = BlockMLayout.trimSeq(seq);\n\n\t\treturn layout;\n\t}\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\treturn spreadMeasureSeq(this.seq, type);\n\t}\n\n\tget code(): string {\n\t\treturn seqToCode(this.seq, { withBrackets: true });\n\t}\n}\n\nclass VoltaMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'VoltaMLayout';\n\n\ttimes: number;\n\tbody: MeasureSeq;\n\talternates: MeasureSeq[];\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\tconst bodySeq = spreadMeasureSeq(this.body);\n\n\t\tif (this.alternates) {\n\t\t\tconst alternateSeqs = this.alternates.map((seq) => spreadMeasureSeq(seq));\n\t\t\tconst lastAlternateSeq = alternateSeqs[alternateSeqs.length - 1];\n\n\t\t\tswitch (type) {\n\t\t\t\tcase LayoutType.Ordinary:\n\t\t\t\t\treturn bodySeq.concat(...alternateSeqs);\n\n\t\t\t\tcase LayoutType.Conservative:\n\t\t\t\tcase LayoutType.Full: {\n\t\t\t\t\tconst priorSeq = [].concat(\n\t\t\t\t\t\t...Array(this.times - 1)\n\t\t\t\t\t\t\t.fill(null)\n\t\t\t\t\t\t\t.map((_, i) => [...bodySeq, ...alternateSeqs[i % (this.times - 1)]])\n\t\t\t\t\t);\n\n\t\t\t\t\treturn [...priorSeq, ...bodySeq, ...lastAlternateSeq];\n\t\t\t\t}\n\n\t\t\t\tcase LayoutType.Once:\n\t\t\t\t\treturn [...bodySeq, ...lastAlternateSeq];\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (type) {\n\t\t\t\tcase LayoutType.Ordinary:\n\t\t\t\tcase LayoutType.Conservative:\n\t\t\t\tcase LayoutType.Once:\n\t\t\t\t\treturn bodySeq;\n\n\t\t\t\tcase LayoutType.Full:\n\t\t\t\t\treturn [].concat(\n\t\t\t\t\t\t...Array(this.times)\n\t\t\t\t\t\t\t.fill(null)\n\t\t\t\t\t\t\t.map(() => bodySeq)\n\t\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconsole.warn('the current case not handled:', type, this);\n\t}\n\n\tget seq(): MeasureSeq {\n\t\tconst alternates = this.alternates ? this.alternates[this.alternates.length - 1] : [];\n\n\t\treturn [...this.body, ...alternates];\n\t}\n\n\tget code(): string {\n\t\tconst body = seqToCode(this.body, { withBrackets: true });\n\n\t\tlet code = `${this.times}*${body}`;\n\t\tif (this.alternates) code += '{' + this.alternates.map((seq) => seqToCode(seq, { withBrackets: seq.length > 1 })).join(', ') + '}';\n\n\t\treturn code;\n\t}\n}\n\nclass ABAMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'ABAMLayout';\n\n\tmain: MeasureLayout;\n\trest: MeasureSeq;\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\tconst seqA = this.main.serialize(type);\n\t\tconst seqA_ = spreadMeasureSeq(this.main.seq, LayoutType.Once);\n\t\tconst seqB = spreadMeasureSeq(this.rest, type);\n\n\t\tswitch (type) {\n\t\t\tcase LayoutType.Ordinary: // A B\n\t\t\t\treturn [...seqA, ...seqB];\n\n\t\t\tcase LayoutType.Once: // B A'\n\t\t\t\treturn [...seqB, ...seqA_];\n\n\t\t\tcase LayoutType.Conservative: // A B A'\n\t\t\tcase LayoutType.Full: // A B A'\n\t\t\t\treturn [...seqA, ...seqB, ...seqA_];\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn('the current case not handled:', type, this);\n\t\t}\n\t}\n\n\tget seq(): MeasureSeq {\n\t\treturn [this.main, ...this.rest];\n\t}\n\n\tget code(): string {\n\t\treturn '<' + this.main.code + ', ' + seqToCode(this.rest) + '>';\n\t}\n}\n\nexport { LayoutType, MeasureLayout, SingleMLayout, BlockMLayout, VoltaMLayout, ABAMLayout };\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function () {\n\tvar o = function (k, v, o, l) {\n\t\t\tfor (o = o || {}, l = k.length; l--; o[k[l]] = v);\n\t\t\treturn o;\n\t\t},\n\t\t$V0 = [1, 13],\n\t\t$V1 = [1, 16],\n\t\t$V2 = [1, 15],\n\t\t$V3 = [1, 26],\n\t\t$V4 = [1, 29],\n\t\t$V5 = [1, 28],\n\t\t$V6 = [1, 30],\n\t\t$V7 = [5, 13, 22, 27, 29],\n\t\t$V8 = [2, 15],\n\t\t$V9 = [1, 32],\n\t\t$Va = [5, 14, 21, 22, 27, 28, 29];\n\tvar parser = {\n\t\ttrace: function trace() {},\n\t\tyy: {},\n\t\tsymbols_: {\n\t\t\terror: 2,\n\t\t\tstart_symbol: 3,\n\t\t\tmeasure_layout: 4,\n\t\t\tEOF: 5,\n\t\t\tindex_wise_measure_layout: 6,\n\t\t\t'i:': 7,\n\t\t\t's:': 8,\n\t\t\tsegment_wise_measure_layout: 9,\n\t\t\tiw_sequence: 10,\n\t\t\tiw_item: 11,\n\t\t\trange: 12,\n\t\t\t',': 13,\n\t\t\tUNSIGNED: 14,\n\t\t\t'..': 15,\n\t\t\tsingle: 16,\n\t\t\tiw_block_item: 17,\n\t\t\tiw_volta: 18,\n\t\t\tiw_aba: 19,\n\t\t\tiw_block: 20,\n\t\t\t'[': 21,\n\t\t\t']': 22,\n\t\t\t'*': 23,\n\t\t\tiw_optional_alternates: 24,\n\t\t\tiw_alternates: 25,\n\t\t\t'{': 26,\n\t\t\t'}': 27,\n\t\t\t'<': 28,\n\t\t\t'>': 29,\n\t\t\tsw_sequence: 30,\n\t\t\tsw_item: 31,\n\t\t\tsegment: 32,\n\t\t\tsw_block_item: 33,\n\t\t\tsw_volta: 34,\n\t\t\tsw_aba: 35,\n\t\t\tsw_block: 36,\n\t\t\tsw_optional_alternates: 37,\n\t\t\tsw_alternates: 38,\n\t\t\t$accept: 0,\n\t\t\t$end: 1,\n\t\t},\n\t\tterminals_: {\n\t\t\t2: 'error',\n\t\t\t5: 'EOF',\n\t\t\t7: 'i:',\n\t\t\t8: 's:',\n\t\t\t13: ',',\n\t\t\t14: 'UNSIGNED',\n\t\t\t15: '..',\n\t\t\t21: '[',\n\t\t\t22: ']',\n\t\t\t23: '*',\n\t\t\t26: '{',\n\t\t\t27: '}',\n\t\t\t28: '<',\n\t\t\t29: '>',\n\t\t},\n\t\tproductions_: [\n\t\t\t0,\n\t\t\t[3, 2],\n\t\t\t[4, 1],\n\t\t\t[4, 2],\n\t\t\t[4, 2],\n\t\t\t[6, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 3],\n\t\t\t[10, 3],\n\t\t\t[12, 3],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[16, 1],\n\t\t\t[17, 1],\n\t\t\t[20, 3],\n\t\t\t[18, 4],\n\t\t\t[24, 0],\n\t\t\t[24, 1],\n\t\t\t[25, 3],\n\t\t\t[19, 5],\n\t\t\t[9, 1],\n\t\t\t[30, 1],\n\t\t\t[30, 2],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[32, 1],\n\t\t\t[33, 1],\n\t\t\t[36, 3],\n\t\t\t[34, 4],\n\t\t\t[37, 0],\n\t\t\t[37, 1],\n\t\t\t[38, 3],\n\t\t\t[35, 4],\n\t\t],\n\t\tperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n\t\t\t/* this == yyval */\n\n\t\t\tvar $0 = $$.length - 1;\n\t\t\tswitch (yystate) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tthis.$ = root(null, $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.$ = root('index-wise', $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tthis.$ = root('segment-wise', serialize($$[$0]));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\tcase 23:\n\t\t\t\t\tif ($$[$0].length === 1 && $$[$0][0].__prototype === 'BlockMLayout') this.$ = $$[$0][0];\n\t\t\t\t\telse this.$ = blockLayout($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 6:\n\t\t\t\tcase 24:\n\t\t\t\t\tthis.$ = [$$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 7:\n\t\t\t\tcase 11:\n\t\t\t\tcase 12:\n\t\t\t\tcase 13:\n\t\t\t\tcase 14:\n\t\t\t\tcase 20:\n\t\t\t\tcase 27:\n\t\t\t\tcase 28:\n\t\t\t\tcase 29:\n\t\t\t\tcase 35:\n\t\t\t\t\tthis.$ = $$[$0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\tthis.$ = [...$$[$0 - 2], $$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9:\n\t\t\t\t\tthis.$ = [...$$[$0 - 2], ...$$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 10:\n\t\t\t\t\tthis.$ = range($$[$0 - 2], $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 15:\n\t\t\t\t\tthis.$ = singleLayout($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 16:\n\t\t\t\tcase 31:\n\t\t\t\t\tthis.$ = blockLayout($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 17:\n\t\t\t\tcase 32:\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 18:\n\t\t\t\tcase 33:\n\t\t\t\t\tthis.$ = voltaBlock($$[$0 - 3], $$[$0 - 1], $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 19:\n\t\t\t\tcase 34:\n\t\t\t\t\tthis.$ = null;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 21:\n\t\t\t\tcase 36:\n\t\t\t\t\tthis.$ = alternates($$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 22:\n\t\t\t\t\tthis.$ = abaBlock($$[$0 - 3], $$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 25:\n\t\t\t\t\tthis.$ = [...$$[$0 - 1], $$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 26:\n\t\t\t\t\tthis.$ = blockLayout([$$[$0]]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 30:\n\t\t\t\t\tthis.$ = segment($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37:\n\t\t\t\t\tthis.$ = abaBlock($$[$0 - 2], $$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\ttable: [\n\t\t\t{ 3: 1, 4: 2, 6: 3, 7: [1, 4], 8: [1, 5], 10: 6, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 1: [3] },\n\t\t\t{ 5: [1, 17] },\n\t\t\t{ 5: [2, 2] },\n\t\t\t{ 6: 18, 10: 6, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 9: 19, 14: $V3, 21: $V4, 28: $V5, 30: 20, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 5: [2, 5], 13: $V6 },\n\t\t\to($V7, [2, 6]),\n\t\t\to($V7, [2, 7]),\n\t\t\to($V7, [2, 11]),\n\t\t\to($V7, [2, 12]),\n\t\t\to($V7, [2, 13]),\n\t\t\to($V7, [2, 14]),\n\t\t\to($V7, $V8, { 15: [1, 31], 23: $V9 }),\n\t\t\to($V7, [2, 16]),\n\t\t\t{ 11: 33, 14: [1, 34], 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 10: 35, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 1: [2, 1] },\n\t\t\t{ 5: [2, 3] },\n\t\t\t{ 5: [2, 4] },\n\t\t\t{ 5: [2, 23], 14: $V3, 21: $V4, 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($Va, [2, 24]),\n\t\t\to($Va, [2, 26]),\n\t\t\to($Va, [2, 27]),\n\t\t\to($Va, [2, 28]),\n\t\t\to($Va, [2, 29]),\n\t\t\to($Va, [2, 30], { 23: [1, 37] }),\n\t\t\to($Va, [2, 31]),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 31: 38, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 39, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 11: 40, 12: 41, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 14: [1, 42] },\n\t\t\t{ 20: 43, 21: $V1 },\n\t\t\t{ 13: [1, 44] },\n\t\t\t{ 13: $V8, 23: $V9 },\n\t\t\t{ 13: $V6, 22: [1, 45] },\n\t\t\to($Va, [2, 25]),\n\t\t\t{ 21: $V4, 36: 46 },\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 47, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 14: $V3, 21: $V4, 22: [1, 48], 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($V7, [2, 8]),\n\t\t\to($V7, [2, 9]),\n\t\t\to($V7, [2, 10]),\n\t\t\to($V7, [2, 19], { 24: 49, 25: 50, 26: [1, 51] }),\n\t\t\t{ 10: 52, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\to([5, 13, 22, 26, 27, 29], [2, 17]),\n\t\t\to($Va, [2, 34], { 37: 53, 38: 54, 26: [1, 55] }),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 29: [1, 56], 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to([5, 14, 21, 22, 26, 27, 28, 29], [2, 32]),\n\t\t\to($V7, [2, 18]),\n\t\t\to($V7, [2, 20]),\n\t\t\t{ 10: 57, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 13: $V6, 29: [1, 58] },\n\t\t\to($Va, [2, 33]),\n\t\t\to($Va, [2, 35]),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 59, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($Va, [2, 37]),\n\t\t\t{ 13: $V6, 27: [1, 60] },\n\t\t\to($V7, [2, 22]),\n\t\t\t{ 14: $V3, 21: $V4, 27: [1, 61], 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($V7, [2, 21]),\n\t\t\to($Va, [2, 36]),\n\t\t],\n\t\tdefaultActions: { 3: [2, 2], 17: [2, 1], 18: [2, 3], 19: [2, 4] },\n\t\tparseError: function parseError(str, hash) {\n\t\t\tif (hash.recoverable) {\n\t\t\t\tthis.trace(str);\n\t\t\t} else {\n\t\t\t\tvar error = new Error(str);\n\t\t\t\terror.hash = hash;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tparse: function parse(input) {\n\t\t\tvar self = this,\n\t\t\t\tstack = [0],\n\t\t\t\ttstack = [],\n\t\t\t\tvstack = [null],\n\t\t\t\tlstack = [],\n\t\t\t\ttable = this.table,\n\t\t\t\tyytext = '',\n\t\t\t\tyylineno = 0,\n\t\t\t\tyyleng = 0,\n\t\t\t\trecovering = 0,\n\t\t\t\tTERROR = 2,\n\t\t\t\tEOF = 1;\n\t\t\tvar args = lstack.slice.call(arguments, 1);\n\t\t\tvar lexer = Object.create(this.lexer);\n\t\t\tvar sharedState = { yy: {} };\n\t\t\tfor (var k in this.yy) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n\t\t\t\t\tsharedState.yy[k] = this.yy[k];\n\t\t\t\t}\n\t\t\t}\n\t\t\tlexer.setInput(input, sharedState.yy);\n\t\t\tsharedState.yy.lexer = lexer;\n\t\t\tsharedState.yy.parser = this;\n\t\t\tif (typeof lexer.yylloc == 'undefined') {\n\t\t\t\tlexer.yylloc = {};\n\t\t\t}\n\t\t\tvar yyloc = lexer.yylloc;\n\t\t\tlstack.push(yyloc);\n\t\t\tvar ranges = lexer.options && lexer.options.ranges;\n\t\t\tif (typeof sharedState.yy.parseError === 'function') {\n\t\t\t\tthis.parseError = sharedState.yy.parseError;\n\t\t\t} else {\n\t\t\t\tthis.parseError = Object.getPrototypeOf(this).parseError;\n\t\t\t}\n\t\t\tfunction popStack(n) {\n\t\t\t\tstack.length = stack.length - 2 * n;\n\t\t\t\tvstack.length = vstack.length - n;\n\t\t\t\tlstack.length = lstack.length - n;\n\t\t\t}\n\t\t\t_token_stack: var lex = function () {\n\t\t\t\tvar token;\n\t\t\t\ttoken = lexer.lex() || EOF;\n\t\t\t\tif (typeof token !== 'number') {\n\t\t\t\t\ttoken = self.symbols_[token] || token;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t};\n\t\t\tvar symbol,\n\t\t\t\tpreErrorSymbol,\n\t\t\t\tstate,\n\t\t\t\taction,\n\t\t\t\ta,\n\t\t\t\tr,\n\t\t\t\tyyval = {},\n\t\t\t\tp,\n\t\t\t\tlen,\n\t\t\t\tnewState,\n\t\t\t\texpected;\n\t\t\twhile (true) {\n\t\t\t\tstate = stack[stack.length - 1];\n\t\t\t\tif (this.defaultActions[state]) {\n\t\t\t\t\taction = this.defaultActions[state];\n\t\t\t\t} else {\n\t\t\t\t\tif (symbol === null || typeof symbol == 'undefined') {\n\t\t\t\t\t\tsymbol = lex();\n\t\t\t\t\t}\n\t\t\t\t\taction = table[state] && table[state][symbol];\n\t\t\t\t}\n\t\t\t\tif (typeof action === 'undefined' || !action.length || !action[0]) {\n\t\t\t\t\tvar errStr = '';\n\t\t\t\t\texpected = [];\n\t\t\t\t\tfor (p in table[state]) {\n\t\t\t\t\t\tif (this.terminals_[p] && p > TERROR) {\n\t\t\t\t\t\t\texpected.push(\"'\" + this.terminals_[p] + \"'\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (lexer.showPosition) {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t':\\n' +\n\t\t\t\t\t\t\tlexer.showPosition() +\n\t\t\t\t\t\t\t'\\nExpecting ' +\n\t\t\t\t\t\t\texpected.join(', ') +\n\t\t\t\t\t\t\t\", got '\" +\n\t\t\t\t\t\t\t(this.terminals_[symbol] || symbol) +\n\t\t\t\t\t\t\t\"'\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t': Unexpected ' +\n\t\t\t\t\t\t\t(symbol == EOF ? 'end of input' : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.parseError(errStr, {\n\t\t\t\t\t\ttext: lexer.match,\n\t\t\t\t\t\ttoken: this.terminals_[symbol] || symbol,\n\t\t\t\t\t\tline: lexer.yylineno,\n\t\t\t\t\t\tloc: yyloc,\n\t\t\t\t\t\texpected: expected,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (action[0] instanceof Array && action.length > 1) {\n\t\t\t\t\tthrow new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n\t\t\t\t}\n\t\t\t\tswitch (action[0]) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tstack.push(symbol);\n\t\t\t\t\t\tvstack.push(lexer.yytext);\n\t\t\t\t\t\tlstack.push(lexer.yylloc);\n\t\t\t\t\t\tstack.push(action[1]);\n\t\t\t\t\t\tsymbol = null;\n\t\t\t\t\t\tif (!preErrorSymbol) {\n\t\t\t\t\t\t\tyyleng = lexer.yyleng;\n\t\t\t\t\t\t\tyytext = lexer.yytext;\n\t\t\t\t\t\t\tyylineno = lexer.yylineno;\n\t\t\t\t\t\t\tyyloc = lexer.yylloc;\n\t\t\t\t\t\t\tif (recovering > 0) {\n\t\t\t\t\t\t\t\trecovering--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsymbol = preErrorSymbol;\n\t\t\t\t\t\t\tpreErrorSymbol = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tlen = this.productions_[action[1]][1];\n\t\t\t\t\t\tyyval.$ = vstack[vstack.length - len];\n\t\t\t\t\t\tyyval._$ = {\n\t\t\t\t\t\t\tfirst_line: lstack[lstack.length - (len || 1)].first_line,\n\t\t\t\t\t\t\tlast_line: lstack[lstack.length - 1].last_line,\n\t\t\t\t\t\t\tfirst_column: lstack[lstack.length - (len || 1)].first_column,\n\t\t\t\t\t\t\tlast_column: lstack[lstack.length - 1].last_column,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (ranges) {\n\t\t\t\t\t\t\tyyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tr = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n\t\t\t\t\t\tif (typeof r !== 'undefined') {\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (len) {\n\t\t\t\t\t\t\tstack = stack.slice(0, -1 * len * 2);\n\t\t\t\t\t\t\tvstack = vstack.slice(0, -1 * len);\n\t\t\t\t\t\t\tlstack = lstack.slice(0, -1 * len);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstack.push(this.productions_[action[1]][0]);\n\t\t\t\t\t\tvstack.push(yyval.$);\n\t\t\t\t\t\tlstack.push(yyval._$);\n\t\t\t\t\t\tnewState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n\t\t\t\t\t\tstack.push(newState);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tconst root = (type, data) => ({ __prototype: 'MesaureLayout', type, data });\n\n\tconst singleLayout = (n) => ({ __prototype: 'SingleMLayout', measure: Number(n) });\n\tconst blockLayout = (seq) => ({ __prototype: 'BlockMLayout', seq });\n\tconst voltaBlock = (times, body, alternates) => ({ __prototype: 'VoltaMLayout', times: Number(times), body, alternates });\n\tconst abaBlock = (main, rest) => ({ __prototype: 'ABAMLayout', main, rest });\n\n\tconst segment = (n) => ({ segment: true, length: Number(n) });\n\n\tconst alternates = (items) =>\n\t\titems.map((item) => {\n\t\t\tif (item.__prototype === 'BlockMLayout') return item.seq;\n\n\t\t\treturn [item];\n\t\t});\n\n\tconst range = (start, end) => {\n\t\tstart = Number(start);\n\t\tend = Number(end);\n\n\t\tif (!(end >= start)) throw new Error(`invalid measure range: ${start}..${end}`);\n\n\t\treturn Array(end + 1 - start)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => singleLayout(start + i));\n\t};\n\n\tconst serializeSeq = (item, options) => {\n\t\tif (item.segment) {\n\t\t\tconst index = options.index;\n\t\t\toptions.index += item.length;\n\n\t\t\treturn Array(item.length)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => singleLayout(index + i));\n\t\t}\n\n\t\treturn [serialize(item, options)];\n\t};\n\n\tconst serialize = (item, options = { index: 1 }) => {\n\t\tconst speard = (seq) => [].concat(...seq.map((it) => serializeSeq(it, options)));\n\n\t\tswitch (item.__prototype) {\n\t\t\tcase 'BlockMLayout':\n\t\t\t\titem.seq = speard(item.seq);\n\n\t\t\t\tbreak;\n\t\t\tcase 'VoltaMLayout':\n\t\t\t\titem.body = speard(item.body);\n\t\t\t\titem.alternates = item.alternates && item.alternates.map(speard);\n\n\t\t\t\tbreak;\n\t\t\tcase 'ABAMLayout':\n\t\t\t\titem.main = serialize(item.main, options);\n\t\t\t\titem.rest = speard(item.rest);\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn item;\n\t};\n\t/* generated by jison-lex 0.3.4 */\n\tvar lexer = (function () {\n\t\tvar lexer = {\n\t\t\tEOF: 1,\n\n\t\t\tparseError: function parseError(str, hash) {\n\t\t\t\tif (this.yy.parser) {\n\t\t\t\t\tthis.yy.parser.parseError(str, hash);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(str);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// resets the lexer, sets new input\n\t\t\tsetInput: function (input, yy) {\n\t\t\t\tthis.yy = yy || this.yy || {};\n\t\t\t\tthis._input = input;\n\t\t\t\tthis._more = this._backtrack = this.done = false;\n\t\t\t\tthis.yylineno = this.yyleng = 0;\n\t\t\t\tthis.yytext = this.matched = this.match = '';\n\t\t\t\tthis.conditionStack = ['INITIAL'];\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: 1,\n\t\t\t\t\tfirst_column: 0,\n\t\t\t\t\tlast_line: 1,\n\t\t\t\t\tlast_column: 0,\n\t\t\t\t};\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [0, 0];\n\t\t\t\t}\n\t\t\t\tthis.offset = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// consumes and returns one char from the input\n\t\t\tinput: function () {\n\t\t\t\tvar ch = this._input[0];\n\t\t\t\tthis.yytext += ch;\n\t\t\t\tthis.yyleng++;\n\t\t\t\tthis.offset++;\n\t\t\t\tthis.match += ch;\n\t\t\t\tthis.matched += ch;\n\t\t\t\tvar lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno++;\n\t\t\t\t\tthis.yylloc.last_line++;\n\t\t\t\t} else {\n\t\t\t\t\tthis.yylloc.last_column++;\n\t\t\t\t}\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range[1]++;\n\t\t\t\t}\n\n\t\t\t\tthis._input = this._input.slice(1);\n\t\t\t\treturn ch;\n\t\t\t},\n\n\t\t\t// unshifts one char (or a string) into the input\n\t\t\tunput: function (ch) {\n\t\t\t\tvar len = ch.length;\n\t\t\t\tvar lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n\t\t\t\tthis._input = ch + this._input;\n\t\t\t\tthis.yytext = this.yytext.substr(0, this.yytext.length - len);\n\t\t\t\t//this.yyleng -= len;\n\t\t\t\tthis.offset -= len;\n\t\t\t\tvar oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n\t\t\t\tthis.match = this.match.substr(0, this.match.length - 1);\n\t\t\t\tthis.matched = this.matched.substr(0, this.matched.length - 1);\n\n\t\t\t\tif (lines.length - 1) {\n\t\t\t\t\tthis.yylineno -= lines.length - 1;\n\t\t\t\t}\n\t\t\t\tvar r = this.yylloc.range;\n\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length\n\t\t\t\t\t\t: this.yylloc.first_column - len,\n\t\t\t\t};\n\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [r[0], r[0] + this.yyleng - len];\n\t\t\t\t}\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, caches matched text and appends it on next action\n\t\t\tmore: function () {\n\t\t\t\tthis._more = true;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n\t\t\treject: function () {\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\tthis._backtrack = true;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError(\n\t\t\t\t\t\t'Lexical error on line ' +\n\t\t\t\t\t\t\t(this.yylineno + 1) +\n\t\t\t\t\t\t\t'. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' +\n\t\t\t\t\t\t\tthis.showPosition(),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// retain first n characters of the match\n\t\t\tless: function (n) {\n\t\t\t\tthis.unput(this.match.slice(n));\n\t\t\t},\n\n\t\t\t// displays already matched input, i.e. for error messages\n\t\t\tpastInput: function () {\n\t\t\t\tvar past = this.matched.substr(0, this.matched.length - this.match.length);\n\t\t\t\treturn (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays upcoming input, i.e. for error messages\n\t\t\tupcomingInput: function () {\n\t\t\t\tvar next = this.match;\n\t\t\t\tif (next.length < 20) {\n\t\t\t\t\tnext += this._input.substr(0, 20 - next.length);\n\t\t\t\t}\n\t\t\t\treturn (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays the character position where the lexing error occurred, i.e. for error messages\n\t\t\tshowPosition: function () {\n\t\t\t\tvar pre = this.pastInput();\n\t\t\t\tvar c = new Array(pre.length + 1).join('-');\n\t\t\t\treturn pre + this.upcomingInput() + '\\n' + c + '^';\n\t\t\t},\n\n\t\t\t// test the lexed token: return FALSE when not a match, otherwise return token\n\t\t\ttest_match: function (match, indexed_rule) {\n\t\t\t\tvar token, lines, backup;\n\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t// save context\n\t\t\t\t\tbackup = {\n\t\t\t\t\t\tyylineno: this.yylineno,\n\t\t\t\t\t\tyylloc: {\n\t\t\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\t\t\tlast_line: this.last_line,\n\t\t\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\t\t\tlast_column: this.yylloc.last_column,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tyytext: this.yytext,\n\t\t\t\t\t\tmatch: this.match,\n\t\t\t\t\t\tmatches: this.matches,\n\t\t\t\t\t\tmatched: this.matched,\n\t\t\t\t\t\tyyleng: this.yyleng,\n\t\t\t\t\t\toffset: this.offset,\n\t\t\t\t\t\t_more: this._more,\n\t\t\t\t\t\t_input: this._input,\n\t\t\t\t\t\tyy: this.yy,\n\t\t\t\t\t\tconditionStack: this.conditionStack.slice(0),\n\t\t\t\t\t\tdone: this.done,\n\t\t\t\t\t};\n\t\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\t\tbackup.yylloc.range = this.yylloc.range.slice(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno += lines.length;\n\t\t\t\t}\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.last_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.last_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length\n\t\t\t\t\t\t: this.yylloc.last_column + match[0].length,\n\t\t\t\t};\n\t\t\t\tthis.yytext += match[0];\n\t\t\t\tthis.match += match[0];\n\t\t\t\tthis.matches = match;\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [this.offset, (this.offset += this.yyleng)];\n\t\t\t\t}\n\t\t\t\tthis._more = false;\n\t\t\t\tthis._backtrack = false;\n\t\t\t\tthis._input = this._input.slice(match[0].length);\n\t\t\t\tthis.matched += match[0];\n\t\t\t\ttoken = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\t\t\t\tif (this.done && this._input) {\n\t\t\t\t\tthis.done = false;\n\t\t\t\t}\n\t\t\t\tif (token) {\n\t\t\t\t\treturn token;\n\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t// recover context\n\t\t\t\t\tfor (var k in backup) {\n\t\t\t\t\t\tthis[k] = backup[k];\n\t\t\t\t\t}\n\t\t\t\t\treturn false; // rule action called reject() implying the next rule should be tested instead.\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\t// return next match in input\n\t\t\tnext: function () {\n\t\t\t\tif (this.done) {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t}\n\t\t\t\tif (!this._input) {\n\t\t\t\t\tthis.done = true;\n\t\t\t\t}\n\n\t\t\t\tvar token, match, tempMatch, index;\n\t\t\t\tif (!this._more) {\n\t\t\t\t\tthis.yytext = '';\n\t\t\t\t\tthis.match = '';\n\t\t\t\t}\n\t\t\t\tvar rules = this._currentRules();\n\t\t\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\t\t\ttempMatch = this._input.match(this.rules[rules[i]]);\n\t\t\t\t\tif (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n\t\t\t\t\t\tmatch = tempMatch;\n\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t\t\ttoken = this.test_match(tempMatch, rules[i]);\n\t\t\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\t\t\treturn token;\n\t\t\t\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\t\t\tcontinue; // rule action called reject() implying a rule MISmatch.\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!this.options.flex) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (match) {\n\t\t\t\t\ttoken = this.test_match(match, rules[index]);\n\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\treturn token;\n\t\t\t\t\t}\n\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this._input === '') {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return next match that has a token\n\t\t\tlex: function lex() {\n\t\t\t\tvar r = this.next();\n\t\t\t\tif (r) {\n\t\t\t\t\treturn r;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.lex();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n\t\t\tbegin: function begin(condition) {\n\t\t\t\tthis.conditionStack.push(condition);\n\t\t\t},\n\n\t\t\t// pop the previously active lexer condition state off the condition stack\n\t\t\tpopState: function popState() {\n\t\t\t\tvar n = this.conditionStack.length - 1;\n\t\t\t\tif (n > 0) {\n\t\t\t\t\treturn this.conditionStack.pop();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditionStack[0];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// produce the lexer rule set which is active for the currently active lexer condition state\n\t\t\t_currentRules: function _currentRules() {\n\t\t\t\tif (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n\t\t\t\t\treturn this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditions['INITIAL'].rules;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n\t\t\ttopState: function topState(n) {\n\t\t\t\tn = this.conditionStack.length - 1 - Math.abs(n || 0);\n\t\t\t\tif (n >= 0) {\n\t\t\t\t\treturn this.conditionStack[n];\n\t\t\t\t} else {\n\t\t\t\t\treturn 'INITIAL';\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// alias for begin(condition)\n\t\t\tpushState: function pushState(condition) {\n\t\t\t\tthis.begin(condition);\n\t\t\t},\n\n\t\t\t// return the number of states currently on the stack\n\t\t\tstateStackSize: function stateStackSize() {\n\t\t\t\treturn this.conditionStack.length;\n\t\t\t},\n\t\t\toptions: {},\n\t\t\tperformAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n\t\t\t\tvar YYSTATE = YY_START;\n\t\t\t\tswitch ($avoiding_name_collisions) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn 14;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\treturn 5;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\trules: [/^(?:\\s+)/, /^(?:([*,\\[\\]<>{}]))/, /^(?:(([1-9])([0-9])*))/, /^(?:(([a-z])+):)/, /^(?:\\.\\.)/, /^(?:$)/],\n\t\t\tconditions: { INITIAL: { rules: [0, 1, 2, 3, 4, 5], inclusive: true } },\n\t\t};\n\t\treturn lexer;\n\t})();\n\tparser.lexer = lexer;\n\tfunction Parser() {\n\t\tthis.yy = {};\n\t}\n\tParser.prototype = parser;\n\tparser.Parser = Parser;\n\treturn new Parser();\n})();\n\nexport { parser };\nexport var Parser = parser.Parser;\nexport var parse = function () {\n\treturn parser.parse.apply(parser, arguments);\n};\nexport default { parser: parser, Parser: parser.Parser, parse: parse };\n","import type { MeasureLayout } from './measureLayout';\nimport * as measureLayout from './measureLayout';\nimport grammar from './grammar.jison';\nimport { recoverJSON } from '../starry/aux_/typedJSON';\n\nconst parseCode = (code: string): MeasureLayout => {\n\tconst raw = grammar.parse(code);\n\n\tif (raw?.data) return recoverJSON(raw.data, measureLayout);\n\n\treturn null;\n};\n\nexport { parseCode };\n","export interface RawItem {\n\tid: string;\n\tleftBounds: string[];\n\trightBounds: string[];\n\tconjunction: string;\n}\n\nexport enum StaffGroupType {\n\tDefault,\n\tBrace, // {}\n\tBracket, // <>\n\tSquare, // []\n}\n\nexport enum StaffConjunctionType {\n\tBlank,\n\tDashed,\n\tSolid,\n}\n\ntype StaffID = string;\n\nexport interface StaffGroup {\n\ttype: StaffGroupType;\n\tsubs?: StaffGroup[];\n\tstaff?: StaffID;\n\tlevel?: number;\n\tgrand?: boolean;\n}\n\ninterface StaffGroupTrait {\n\tgroup: StaffGroup;\n\trange: [number, number];\n\tkey: string;\n}\n\nconst singleGroup = (id: string) => ({ type: StaffGroupType.Default, staff: id });\n\nconst BOUNDS_TO_GROUPTYPE: { [bound: string]: StaffGroupType } = {\n\t'{': StaffGroupType.Brace,\n\t'}': StaffGroupType.Brace,\n\t'<': StaffGroupType.Bracket,\n\t'>': StaffGroupType.Bracket,\n\t'[': StaffGroupType.Square,\n\t']': StaffGroupType.Square,\n};\n\nconst OPEN_BOUNDS = '{<[';\nconst CLOSE_BOUNDS = '}>]';\n\nconst CONJUNCTIONS_MAP: { [conj: string]: StaffConjunctionType } = {\n\t',': StaffConjunctionType.Blank,\n\t'-': StaffConjunctionType.Solid,\n\t'.': StaffConjunctionType.Dashed,\n};\n\nconst bracketCode = (type: StaffGroupType, partial: boolean = false): ((inner: string) => string) => {\n\tif (type === StaffGroupType.Default) return (inner) => inner;\n\n\tif (partial) {\n\t\tswitch (type) {\n\t\t\tcase StaffGroupType.Brace:\n\t\t\t\treturn (inner) => `{${inner}`;\n\t\t\tcase StaffGroupType.Bracket:\n\t\t\t\treturn (inner) => `<${inner}`;\n\t\t\tcase StaffGroupType.Square:\n\t\t\t\treturn (inner) => `[${inner}`;\n\t\t\tdefault:\n\t\t\t\treturn (inner) => inner;\n\t\t}\n\t}\n\n\tswitch (type) {\n\t\tcase StaffGroupType.Brace:\n\t\t\treturn (inner) => `{${inner}}`;\n\t\tcase StaffGroupType.Bracket:\n\t\t\treturn (inner) => `<${inner}>`;\n\t\tcase StaffGroupType.Square:\n\t\t\treturn (inner) => `[${inner}]`;\n\t\tdefault:\n\t\t\treturn (inner) => inner;\n\t}\n};\n\nconst randomB64 = (): string => {\n\tconst code = btoa(Math.random().toString().substr(2)).replace(/=/g, '');\n\n\treturn code.split('').reverse().slice(0, 6).join('');\n};\n\nconst makeUniqueName = (set: Set, index: number, prefix?: string): string => {\n\tlet name = prefix;\n\tif (!name) name = index.toString();\n\telse if (set.has(name)) name += '_' + index.toString();\n\n\twhile (set.has(name)) name += '_' + randomB64();\n\n\treturn name;\n};\n\nconst makeGroupsFromRaw = (parent: StaffGroup, seq: string[]): string[] => {\n\tlet remains = seq;\n\twhile (remains.length) {\n\t\tconst word = remains.shift();\n\t\tconst bound = BOUNDS_TO_GROUPTYPE[word];\n\t\tif (bound) {\n\t\t\tif (CLOSE_BOUNDS.includes(word) && bound === parent.type) break;\n\n\t\t\tif (OPEN_BOUNDS.includes(word)) {\n\t\t\t\tconst group = { type: bound, level: Number.isFinite(parent.level) ? parent.level + 1 : 0 };\n\t\t\t\tremains = makeGroupsFromRaw(group, remains);\n\n\t\t\t\tparent.subs = parent.subs || [];\n\t\t\t\tparent.subs.push(group);\n\t\t\t}\n\t\t} else {\n\t\t\tparent.subs = parent.subs || [];\n\t\t\tparent.subs.push(singleGroup(word));\n\t\t}\n\t}\n\n\twhile (parent.type === StaffGroupType.Default && parent.subs && parent.subs.length === 1) {\n\t\tconst sub = parent.subs[0];\n\t\tparent.type = sub.type;\n\t\tparent.subs = sub.subs;\n\t\tparent.staff = sub.staff;\n\t\tparent.level = sub.level;\n\t}\n\n\twhile (parent.subs && parent.subs.length === 1 && parent.subs[0].type === StaffGroupType.Default) {\n\t\tconst sub = parent.subs[0];\n\t\tparent.subs = sub.subs;\n\t\tparent.staff = sub.staff;\n\t}\n\n\tparent.grand = parent.type === StaffGroupType.Brace && parent.subs && parent.subs.every((sub) => sub.staff);\n\n\treturn remains;\n};\n\nconst groupHead = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return groupHead(group.subs[0]);\n};\n\nconst groupTail = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return groupTail(group.subs[group.subs.length - 1]);\n};\n\nexport const groupKey = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return `${groupHead(group)}-${groupTail(group)}`;\n};\n\nconst groupDict = (group: StaffGroup, dict: { [key: string]: StaffGroup }): void => {\n\tdict[groupKey(group)] = group;\n\n\tif (group.subs) group.subs.forEach((sub) => groupDict(sub, dict));\n};\n\nexport interface MaskedStaffLayout {\n\tstaffIds: string[];\n\tconjunctions: StaffConjunctionType[];\n\tgroups: StaffGroupTrait[];\n}\n\nclass StaffLayout {\n\tstaffIds: string[];\n\tconjunctions: StaffConjunctionType[];\n\tgroup: StaffGroup;\n\tgroups: StaffGroupTrait[];\n\n\tmaskCache: Map;\n\n\tconstructor(raw: RawItem[]) {\n\t\t// make unique ids\n\t\tconst ids = new Set();\n\t\traw.forEach((item, i) => {\n\t\t\titem.id = makeUniqueName(ids, i + 1, item.id);\n\t\t\tids.add(item.id);\n\t\t});\n\t\tthis.staffIds = raw.map((item) => item.id);\n\t\tthis.conjunctions = raw.slice(0, raw.length - 1).map((item) => (item.conjunction ? CONJUNCTIONS_MAP[item.conjunction] : StaffConjunctionType.Blank));\n\n\t\t// make groups\n\t\tconst seq = [].concat(...raw.map((item) => [...item.leftBounds, item.id, ...item.rightBounds]));\n\t\tthis.group = { type: StaffGroupType.Default };\n\t\tmakeGroupsFromRaw(this.group, seq);\n\n\t\tconst dict = {};\n\t\tgroupDict(this.group, dict);\n\t\tthis.groups = Object.entries(dict).map(([key, group]) => {\n\t\t\tlet ids = key.split('-');\n\t\t\tif (ids.length === 1) ids = [ids[0], ids[0]];\n\t\t\tconst range = ids.map((id) => this.staffIds.indexOf(id));\n\n\t\t\treturn {\n\t\t\t\tgroup,\n\t\t\t\trange,\n\t\t\t\tkey,\n\t\t\t} as StaffGroupTrait;\n\t\t});\n\n\t\tthis.maskCache = new Map();\n\t}\n\n\tget stavesCount(): number {\n\t\tif (!this.staffIds) return null;\n\n\t\treturn this.staffIds.length;\n\t}\n\n\tget partGroups(): StaffGroupTrait[] {\n\t\tconst grands = this.groups.filter((g) => g.group.grand);\n\t\tconst parts = this.groups.filter((g) => {\n\t\t\tif (g.group.grand) return true;\n\n\t\t\tif (g.range[0] === g.range[1]) {\n\t\t\t\tconst index = g.range[0];\n\t\t\t\treturn !grands.some((g) => g.range[0] <= index && g.range[1] >= index);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t\treturn parts;\n\t}\n\n\tget standaloneGroups(): string[][] {\n\t\tconst groups: string[][] = [];\n\t\tconst collect = (group: StaffGroup): void => {\n\t\t\tif (group.grand) groups.push(group.subs.map((sub) => sub.staff));\n\t\t\telse if (group.staff) groups.push([group.staff]);\n\t\t\telse if (group.subs) group.subs.forEach((sub) => collect(sub));\n\t\t};\n\t\tcollect(this.group);\n\n\t\treturn groups;\n\t}\n\n\tconjunctionBetween(upStaff: number, downStaff: number): StaffConjunctionType {\n\t\tif (downStaff <= upStaff) return null;\n\n\t\tlet con = StaffConjunctionType.Solid;\n\t\tfor (let i = upStaff; i < downStaff; i++) con = Math.min(con, this.conjunctions[i]);\n\n\t\treturn con;\n\t}\n\n\tstatic makeMaskLayout(layout: StaffLayout, mask: number): MaskedStaffLayout {\n\t\tconst staffIds = layout.staffIds.filter((_, i) => mask & (1 << i));\n\t\tif (staffIds.length === layout.staffIds.length) {\n\t\t\treturn {\n\t\t\t\tstaffIds: layout.staffIds,\n\t\t\t\tconjunctions: layout.conjunctions,\n\t\t\t\tgroups: layout.groups,\n\t\t\t};\n\t\t}\n\n\t\tconst groups = layout.groups\n\t\t\t.map((g) => ({ ids: layout.staffIds.slice(g.range[0], g.range[1] + 1).filter((id) => staffIds.includes(id)), ...g }))\n\t\t\t.filter(({ ids }) => ids.length)\n\t\t\t.map(\n\t\t\t\t({ ids, ...g }) =>\n\t\t\t\t\t({\n\t\t\t\t\t\tkey: g.key,\n\t\t\t\t\t\tgroup: g.group,\n\t\t\t\t\t\trange: [staffIds.indexOf(ids[0]), staffIds.indexOf(ids[ids.length - 1])],\n\t\t\t\t\t} as StaffGroupTrait)\n\t\t\t);\n\n\t\tconst conjunctions = staffIds.slice(0, staffIds.length - 1).map((id, i) => {\n\t\t\tconst nextId = staffIds[i + 1];\n\t\t\treturn layout.conjunctionBetween(layout.staffIds.indexOf(id), layout.staffIds.indexOf(nextId));\n\t\t});\n\n\t\treturn {\n\t\t\tstaffIds,\n\t\t\tconjunctions,\n\t\t\tgroups,\n\t\t};\n\t}\n\n\tmask(mask: number): MaskedStaffLayout {\n\t\tif (!this.maskCache.get(mask)) this.maskCache.set(mask, StaffLayout.makeMaskLayout(this, mask));\n\n\t\treturn this.maskCache.get(mask);\n\t}\n\n\t// {,}\t*\t1,1\t\t=> {,}\n\t// {,}\t*\t1,x\t\t=> {\n\t// {,}\t*\t0,x\t\t=>\n\t// {,}\t*\t0,1\t\t=> {}\n\tpartialMaskCode(bits: (1 | 0)[], withIds = false): string {\n\t\ttype Attendance = 0 | 1 | null;\n\t\tconst staffStatus = this.staffIds\n\t\t\t.map((_, i) => (i < bits.length ? bits[i] : null))\n\t\t\t.reduce((status, x, i) => {\n\t\t\t\tstatus[this.staffIds[i]] = x;\n\t\t\t\treturn status;\n\t\t\t}, {} as { [id: string]: Attendance });\n\n\t\tconst joinGroup = (group: StaffGroup): [string, boolean] => {\n\t\t\tif (group.staff) return [staffStatus[group.staff] ? group.staff : null, staffStatus[group.staff] === null];\n\n\t\t\tconst subs = group.subs.map((sub) => joinGroup(sub));\n\t\t\tconst subStr = subs\n\t\t\t\t.map((pair) => pair[0])\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(',');\n\t\t\tconst partial = subs.some(([_, partial]) => partial);\n\n\t\t\tconst code = subStr ? bracketCode(group.type, partial)(subStr) : null;\n\n\t\t\treturn [code, partial];\n\t\t};\n\n\t\tlet [code] = joinGroup(this.group);\n\t\tcode = code || '';\n\t\tif (!withIds) code = code.replace(/[_\\w]+/g, '');\n\n\t\treturn code;\n\t}\n}\n\nexport default StaffLayout;\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function () {\n\tvar o = function (k, v, o, l) {\n\t\t\tfor (o = o || {}, l = k.length; l--; o[k[l]] = v);\n\t\t\treturn o;\n\t\t},\n\t\t$V0 = [1, 15],\n\t\t$V1 = [1, 16],\n\t\t$V2 = [1, 17],\n\t\t$V3 = [1, 11],\n\t\t$V4 = [1, 12],\n\t\t$V5 = [1, 13],\n\t\t$V6 = [1, 24],\n\t\t$V7 = [1, 25],\n\t\t$V8 = [1, 26],\n\t\t$V9 = [5, 11, 12, 13, 15, 16, 17, 21, 22, 23, 24],\n\t\t$Va = [15, 16, 17, 21, 22, 23, 24],\n\t\t$Vb = [11, 12, 13, 15, 16, 17, 21, 22, 23, 24],\n\t\t$Vc = [5, 11, 12, 13, 21, 22, 23, 24];\n\tvar parser = {\n\t\ttrace: function trace() {},\n\t\tyy: {},\n\t\tsymbols_: {\n\t\t\terror: 2,\n\t\t\tstart_symbol: 3,\n\t\t\tstaff_layout: 4,\n\t\t\tEOF: 5,\n\t\t\tseq: 6,\n\t\t\tseq_id: 7,\n\t\t\tseq_br: 8,\n\t\t\tseq_con: 9,\n\t\t\tbound_left: 10,\n\t\t\t'<': 11,\n\t\t\t'[': 12,\n\t\t\t'{': 13,\n\t\t\tbound_right: 14,\n\t\t\t'>': 15,\n\t\t\t']': 16,\n\t\t\t'}': 17,\n\t\t\tbound_lefts: 18,\n\t\t\tbound_rights: 19,\n\t\t\tconjunction: 20,\n\t\t\t'-': 21,\n\t\t\t',': 22,\n\t\t\t'.': 23,\n\t\t\tID: 24,\n\t\t\tseq_bl: 25,\n\t\t\t$accept: 0,\n\t\t\t$end: 1,\n\t\t},\n\t\tterminals_: { 2: 'error', 5: 'EOF', 11: '<', 12: '[', 13: '{', 15: '>', 16: ']', 17: '}', 21: '-', 22: ',', 23: '.', 24: 'ID' },\n\t\tproductions_: [\n\t\t\t0,\n\t\t\t[3, 2],\n\t\t\t[4, 1],\n\t\t\t[6, 0],\n\t\t\t[6, 1],\n\t\t\t[6, 1],\n\t\t\t[6, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[14, 1],\n\t\t\t[14, 1],\n\t\t\t[14, 1],\n\t\t\t[18, 1],\n\t\t\t[18, 2],\n\t\t\t[19, 1],\n\t\t\t[19, 2],\n\t\t\t[20, 1],\n\t\t\t[20, 1],\n\t\t\t[20, 1],\n\t\t\t[7, 1],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[25, 1],\n\t\t\t[25, 2],\n\t\t\t[25, 2],\n\t\t\t[25, 2],\n\t\t\t[8, 2],\n\t\t\t[8, 2],\n\t\t\t[8, 2],\n\t\t\t[9, 1],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t],\n\t\tperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n\t\t\t/* this == yyval */\n\n\t\t\tvar $0 = $$.length - 1;\n\t\t\tswitch (yystate) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\t$$[$0].next();\n\n\t\t\t\t\tthis.$ = $$[$0].toJSON();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.$ = new Seq();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13:\n\t\t\t\tcase 15:\n\t\t\t\t\tthis.$ = [$$[$0]];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 14:\n\t\t\t\tcase 16:\n\t\t\t\t\tthis.$ = [...$$[$0 - 1], $$[$0]];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 20:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.i($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 21:\n\t\t\t\tcase 23:\n\t\t\t\t\t$$[$0 - 1].next();\n\t\t\t\t\t$$[$0 - 1].tip.i($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 22:\n\t\t\t\tcase 24:\n\t\t\t\t\t$$[$0 - 1].tip.i($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 25:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.bl($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 26:\n\t\t\t\tcase 27:\n\t\t\t\t\t$$[$0 - 1].next();\n\t\t\t\t\t$$[$0 - 1].tip.bl($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 28:\n\t\t\t\t\t$$[$0 - 1].tip.bl($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 29:\n\t\t\t\tcase 30:\n\t\t\t\tcase 31:\n\t\t\t\t\t$$[$0 - 1].tip.br($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 32:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.con($$[$0]);\n\t\t\t\t\tthis.$.next();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 33:\n\t\t\t\tcase 34:\n\t\t\t\tcase 35:\n\t\t\t\tcase 36:\n\t\t\t\t\t$$[$0 - 1].tip.con($$[$0]);\n\t\t\t\t\t$$[$0 - 1].next();\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\ttable: [\n\t\t\t{ 3: 1, 4: 2, 5: [2, 3], 6: 3, 7: 4, 8: 5, 9: 6, 10: 14, 11: $V0, 12: $V1, 13: $V2, 18: 10, 20: 9, 21: $V3, 22: $V4, 23: $V5, 24: [1, 7], 25: 8 },\n\t\t\t{ 1: [3] },\n\t\t\t{ 5: [1, 18] },\n\t\t\t{ 5: [2, 2] },\n\t\t\t{ 5: [2, 4], 10: 14, 11: $V0, 12: $V1, 13: $V2, 14: 23, 15: $V6, 16: $V7, 17: $V8, 18: 22, 19: 20, 20: 21, 21: $V3, 22: $V4, 23: $V5, 24: [1, 19] },\n\t\t\t{ 5: [2, 5], 10: 14, 11: $V0, 12: $V1, 13: $V2, 18: 29, 20: 28, 21: $V3, 22: $V4, 23: $V5, 24: [1, 27] },\n\t\t\t{ 5: [2, 6], 10: 14, 11: $V0, 12: $V1, 13: $V2, 14: 23, 15: $V6, 16: $V7, 17: $V8, 18: 33, 19: 31, 20: 32, 21: $V3, 22: $V4, 23: $V5, 24: [1, 30] },\n\t\t\to($V9, [2, 20]),\n\t\t\t{ 14: 23, 15: $V6, 16: $V7, 17: $V8, 19: 35, 20: 36, 21: $V3, 22: $V4, 23: $V5, 24: [1, 34] },\n\t\t\to($V9, [2, 32]),\n\t\t\to($Va, [2, 25], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 17]),\n\t\t\to($V9, [2, 18]),\n\t\t\to($V9, [2, 19]),\n\t\t\to($Vb, [2, 13]),\n\t\t\to($Vb, [2, 7]),\n\t\t\to($Vb, [2, 8]),\n\t\t\to($Vb, [2, 9]),\n\t\t\t{ 1: [2, 1] },\n\t\t\to($V9, [2, 21]),\n\t\t\to($Vc, [2, 29], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 33]),\n\t\t\to($Va, [2, 26], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 15]),\n\t\t\to($V9, [2, 10]),\n\t\t\to($V9, [2, 11]),\n\t\t\to($V9, [2, 12]),\n\t\t\to($V9, [2, 23]),\n\t\t\to($V9, [2, 35]),\n\t\t\to($Va, [2, 27], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 24]),\n\t\t\to($Vc, [2, 31], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 36]),\n\t\t\to($Va, [2, 28], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 22]),\n\t\t\to($Vc, [2, 30], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 34]),\n\t\t\to($Vb, [2, 14]),\n\t\t\to($V9, [2, 16]),\n\t\t],\n\t\tdefaultActions: { 3: [2, 2], 18: [2, 1] },\n\t\tparseError: function parseError(str, hash) {\n\t\t\tif (hash.recoverable) {\n\t\t\t\tthis.trace(str);\n\t\t\t} else {\n\t\t\t\tvar error = new Error(str);\n\t\t\t\terror.hash = hash;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tparse: function parse(input) {\n\t\t\tvar self = this,\n\t\t\t\tstack = [0],\n\t\t\t\ttstack = [],\n\t\t\t\tvstack = [null],\n\t\t\t\tlstack = [],\n\t\t\t\ttable = this.table,\n\t\t\t\tyytext = '',\n\t\t\t\tyylineno = 0,\n\t\t\t\tyyleng = 0,\n\t\t\t\trecovering = 0,\n\t\t\t\tTERROR = 2,\n\t\t\t\tEOF = 1;\n\t\t\tvar args = lstack.slice.call(arguments, 1);\n\t\t\tvar lexer = Object.create(this.lexer);\n\t\t\tvar sharedState = { yy: {} };\n\t\t\tfor (var k in this.yy) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n\t\t\t\t\tsharedState.yy[k] = this.yy[k];\n\t\t\t\t}\n\t\t\t}\n\t\t\tlexer.setInput(input, sharedState.yy);\n\t\t\tsharedState.yy.lexer = lexer;\n\t\t\tsharedState.yy.parser = this;\n\t\t\tif (typeof lexer.yylloc == 'undefined') {\n\t\t\t\tlexer.yylloc = {};\n\t\t\t}\n\t\t\tvar yyloc = lexer.yylloc;\n\t\t\tlstack.push(yyloc);\n\t\t\tvar ranges = lexer.options && lexer.options.ranges;\n\t\t\tif (typeof sharedState.yy.parseError === 'function') {\n\t\t\t\tthis.parseError = sharedState.yy.parseError;\n\t\t\t} else {\n\t\t\t\tthis.parseError = Object.getPrototypeOf(this).parseError;\n\t\t\t}\n\t\t\tfunction popStack(n) {\n\t\t\t\tstack.length = stack.length - 2 * n;\n\t\t\t\tvstack.length = vstack.length - n;\n\t\t\t\tlstack.length = lstack.length - n;\n\t\t\t}\n\t\t\t_token_stack: var lex = function () {\n\t\t\t\tvar token;\n\t\t\t\ttoken = lexer.lex() || EOF;\n\t\t\t\tif (typeof token !== 'number') {\n\t\t\t\t\ttoken = self.symbols_[token] || token;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t};\n\t\t\tvar symbol,\n\t\t\t\tpreErrorSymbol,\n\t\t\t\tstate,\n\t\t\t\taction,\n\t\t\t\ta,\n\t\t\t\tr,\n\t\t\t\tyyval = {},\n\t\t\t\tp,\n\t\t\t\tlen,\n\t\t\t\tnewState,\n\t\t\t\texpected;\n\t\t\twhile (true) {\n\t\t\t\tstate = stack[stack.length - 1];\n\t\t\t\tif (this.defaultActions[state]) {\n\t\t\t\t\taction = this.defaultActions[state];\n\t\t\t\t} else {\n\t\t\t\t\tif (symbol === null || typeof symbol == 'undefined') {\n\t\t\t\t\t\tsymbol = lex();\n\t\t\t\t\t}\n\t\t\t\t\taction = table[state] && table[state][symbol];\n\t\t\t\t}\n\t\t\t\tif (typeof action === 'undefined' || !action.length || !action[0]) {\n\t\t\t\t\tvar errStr = '';\n\t\t\t\t\texpected = [];\n\t\t\t\t\tfor (p in table[state]) {\n\t\t\t\t\t\tif (this.terminals_[p] && p > TERROR) {\n\t\t\t\t\t\t\texpected.push(\"'\" + this.terminals_[p] + \"'\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (lexer.showPosition) {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t':\\n' +\n\t\t\t\t\t\t\tlexer.showPosition() +\n\t\t\t\t\t\t\t'\\nExpecting ' +\n\t\t\t\t\t\t\texpected.join(', ') +\n\t\t\t\t\t\t\t\", got '\" +\n\t\t\t\t\t\t\t(this.terminals_[symbol] || symbol) +\n\t\t\t\t\t\t\t\"'\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t': Unexpected ' +\n\t\t\t\t\t\t\t(symbol == EOF ? 'end of input' : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.parseError(errStr, {\n\t\t\t\t\t\ttext: lexer.match,\n\t\t\t\t\t\ttoken: this.terminals_[symbol] || symbol,\n\t\t\t\t\t\tline: lexer.yylineno,\n\t\t\t\t\t\tloc: yyloc,\n\t\t\t\t\t\texpected: expected,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (action[0] instanceof Array && action.length > 1) {\n\t\t\t\t\tthrow new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n\t\t\t\t}\n\t\t\t\tswitch (action[0]) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tstack.push(symbol);\n\t\t\t\t\t\tvstack.push(lexer.yytext);\n\t\t\t\t\t\tlstack.push(lexer.yylloc);\n\t\t\t\t\t\tstack.push(action[1]);\n\t\t\t\t\t\tsymbol = null;\n\t\t\t\t\t\tif (!preErrorSymbol) {\n\t\t\t\t\t\t\tyyleng = lexer.yyleng;\n\t\t\t\t\t\t\tyytext = lexer.yytext;\n\t\t\t\t\t\t\tyylineno = lexer.yylineno;\n\t\t\t\t\t\t\tyyloc = lexer.yylloc;\n\t\t\t\t\t\t\tif (recovering > 0) {\n\t\t\t\t\t\t\t\trecovering--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsymbol = preErrorSymbol;\n\t\t\t\t\t\t\tpreErrorSymbol = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tlen = this.productions_[action[1]][1];\n\t\t\t\t\t\tyyval.$ = vstack[vstack.length - len];\n\t\t\t\t\t\tyyval._$ = {\n\t\t\t\t\t\t\tfirst_line: lstack[lstack.length - (len || 1)].first_line,\n\t\t\t\t\t\t\tlast_line: lstack[lstack.length - 1].last_line,\n\t\t\t\t\t\t\tfirst_column: lstack[lstack.length - (len || 1)].first_column,\n\t\t\t\t\t\t\tlast_column: lstack[lstack.length - 1].last_column,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (ranges) {\n\t\t\t\t\t\t\tyyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tr = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n\t\t\t\t\t\tif (typeof r !== 'undefined') {\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (len) {\n\t\t\t\t\t\t\tstack = stack.slice(0, -1 * len * 2);\n\t\t\t\t\t\t\tvstack = vstack.slice(0, -1 * len);\n\t\t\t\t\t\t\tlstack = lstack.slice(0, -1 * len);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstack.push(this.productions_[action[1]][0]);\n\t\t\t\t\t\tvstack.push(yyval.$);\n\t\t\t\t\t\tlstack.push(yyval._$);\n\t\t\t\t\t\tnewState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n\t\t\t\t\t\tstack.push(newState);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tclass Item {\n\t\tconstructor() {\n\t\t\tthis.id = null;\n\t\t\tthis.leftBounds = [];\n\t\t\tthis.rightBounds = [];\n\t\t\tthis.conjunction = null;\n\t\t}\n\n\t\ti(id) {\n\t\t\tthis.id = id;\n\t\t\treturn this;\n\t\t}\n\n\t\tbl(leftBounds) {\n\t\t\tthis.leftBounds = leftBounds;\n\t\t\treturn this;\n\t\t}\n\n\t\tbr(rightBounds) {\n\t\t\tthis.rightBounds = rightBounds;\n\t\t\treturn this;\n\t\t}\n\n\t\tcon(conjunction) {\n\t\t\tthis.conjunction = conjunction;\n\t\t\treturn this;\n\t\t}\n\t}\n\n\tclass Seq {\n\t\tconstructor() {\n\t\t\tthis.body = [];\n\t\t\tthis.tip = new Item();\n\t\t}\n\n\t\tnext() {\n\t\t\tthis.body.push(this.tip);\n\t\t\tthis.tip = new Item();\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\treturn this.body;\n\t\t}\n\t}\n\t/* generated by jison-lex 0.3.4 */\n\tvar lexer = (function () {\n\t\tvar lexer = {\n\t\t\tEOF: 1,\n\n\t\t\tparseError: function parseError(str, hash) {\n\t\t\t\tif (this.yy.parser) {\n\t\t\t\t\tthis.yy.parser.parseError(str, hash);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(str);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// resets the lexer, sets new input\n\t\t\tsetInput: function (input, yy) {\n\t\t\t\tthis.yy = yy || this.yy || {};\n\t\t\t\tthis._input = input;\n\t\t\t\tthis._more = this._backtrack = this.done = false;\n\t\t\t\tthis.yylineno = this.yyleng = 0;\n\t\t\t\tthis.yytext = this.matched = this.match = '';\n\t\t\t\tthis.conditionStack = ['INITIAL'];\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: 1,\n\t\t\t\t\tfirst_column: 0,\n\t\t\t\t\tlast_line: 1,\n\t\t\t\t\tlast_column: 0,\n\t\t\t\t};\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [0, 0];\n\t\t\t\t}\n\t\t\t\tthis.offset = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// consumes and returns one char from the input\n\t\t\tinput: function () {\n\t\t\t\tvar ch = this._input[0];\n\t\t\t\tthis.yytext += ch;\n\t\t\t\tthis.yyleng++;\n\t\t\t\tthis.offset++;\n\t\t\t\tthis.match += ch;\n\t\t\t\tthis.matched += ch;\n\t\t\t\tvar lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno++;\n\t\t\t\t\tthis.yylloc.last_line++;\n\t\t\t\t} else {\n\t\t\t\t\tthis.yylloc.last_column++;\n\t\t\t\t}\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range[1]++;\n\t\t\t\t}\n\n\t\t\t\tthis._input = this._input.slice(1);\n\t\t\t\treturn ch;\n\t\t\t},\n\n\t\t\t// unshifts one char (or a string) into the input\n\t\t\tunput: function (ch) {\n\t\t\t\tvar len = ch.length;\n\t\t\t\tvar lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n\t\t\t\tthis._input = ch + this._input;\n\t\t\t\tthis.yytext = this.yytext.substr(0, this.yytext.length - len);\n\t\t\t\t//this.yyleng -= len;\n\t\t\t\tthis.offset -= len;\n\t\t\t\tvar oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n\t\t\t\tthis.match = this.match.substr(0, this.match.length - 1);\n\t\t\t\tthis.matched = this.matched.substr(0, this.matched.length - 1);\n\n\t\t\t\tif (lines.length - 1) {\n\t\t\t\t\tthis.yylineno -= lines.length - 1;\n\t\t\t\t}\n\t\t\t\tvar r = this.yylloc.range;\n\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length\n\t\t\t\t\t\t: this.yylloc.first_column - len,\n\t\t\t\t};\n\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [r[0], r[0] + this.yyleng - len];\n\t\t\t\t}\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, caches matched text and appends it on next action\n\t\t\tmore: function () {\n\t\t\t\tthis._more = true;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n\t\t\treject: function () {\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\tthis._backtrack = true;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError(\n\t\t\t\t\t\t'Lexical error on line ' +\n\t\t\t\t\t\t\t(this.yylineno + 1) +\n\t\t\t\t\t\t\t'. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' +\n\t\t\t\t\t\t\tthis.showPosition(),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// retain first n characters of the match\n\t\t\tless: function (n) {\n\t\t\t\tthis.unput(this.match.slice(n));\n\t\t\t},\n\n\t\t\t// displays already matched input, i.e. for error messages\n\t\t\tpastInput: function () {\n\t\t\t\tvar past = this.matched.substr(0, this.matched.length - this.match.length);\n\t\t\t\treturn (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays upcoming input, i.e. for error messages\n\t\t\tupcomingInput: function () {\n\t\t\t\tvar next = this.match;\n\t\t\t\tif (next.length < 20) {\n\t\t\t\t\tnext += this._input.substr(0, 20 - next.length);\n\t\t\t\t}\n\t\t\t\treturn (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays the character position where the lexing error occurred, i.e. for error messages\n\t\t\tshowPosition: function () {\n\t\t\t\tvar pre = this.pastInput();\n\t\t\t\tvar c = new Array(pre.length + 1).join('-');\n\t\t\t\treturn pre + this.upcomingInput() + '\\n' + c + '^';\n\t\t\t},\n\n\t\t\t// test the lexed token: return FALSE when not a match, otherwise return token\n\t\t\ttest_match: function (match, indexed_rule) {\n\t\t\t\tvar token, lines, backup;\n\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t// save context\n\t\t\t\t\tbackup = {\n\t\t\t\t\t\tyylineno: this.yylineno,\n\t\t\t\t\t\tyylloc: {\n\t\t\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\t\t\tlast_line: this.last_line,\n\t\t\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\t\t\tlast_column: this.yylloc.last_column,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tyytext: this.yytext,\n\t\t\t\t\t\tmatch: this.match,\n\t\t\t\t\t\tmatches: this.matches,\n\t\t\t\t\t\tmatched: this.matched,\n\t\t\t\t\t\tyyleng: this.yyleng,\n\t\t\t\t\t\toffset: this.offset,\n\t\t\t\t\t\t_more: this._more,\n\t\t\t\t\t\t_input: this._input,\n\t\t\t\t\t\tyy: this.yy,\n\t\t\t\t\t\tconditionStack: this.conditionStack.slice(0),\n\t\t\t\t\t\tdone: this.done,\n\t\t\t\t\t};\n\t\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\t\tbackup.yylloc.range = this.yylloc.range.slice(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno += lines.length;\n\t\t\t\t}\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.last_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.last_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length\n\t\t\t\t\t\t: this.yylloc.last_column + match[0].length,\n\t\t\t\t};\n\t\t\t\tthis.yytext += match[0];\n\t\t\t\tthis.match += match[0];\n\t\t\t\tthis.matches = match;\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [this.offset, (this.offset += this.yyleng)];\n\t\t\t\t}\n\t\t\t\tthis._more = false;\n\t\t\t\tthis._backtrack = false;\n\t\t\t\tthis._input = this._input.slice(match[0].length);\n\t\t\t\tthis.matched += match[0];\n\t\t\t\ttoken = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\t\t\t\tif (this.done && this._input) {\n\t\t\t\t\tthis.done = false;\n\t\t\t\t}\n\t\t\t\tif (token) {\n\t\t\t\t\treturn token;\n\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t// recover context\n\t\t\t\t\tfor (var k in backup) {\n\t\t\t\t\t\tthis[k] = backup[k];\n\t\t\t\t\t}\n\t\t\t\t\treturn false; // rule action called reject() implying the next rule should be tested instead.\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\t// return next match in input\n\t\t\tnext: function () {\n\t\t\t\tif (this.done) {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t}\n\t\t\t\tif (!this._input) {\n\t\t\t\t\tthis.done = true;\n\t\t\t\t}\n\n\t\t\t\tvar token, match, tempMatch, index;\n\t\t\t\tif (!this._more) {\n\t\t\t\t\tthis.yytext = '';\n\t\t\t\t\tthis.match = '';\n\t\t\t\t}\n\t\t\t\tvar rules = this._currentRules();\n\t\t\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\t\t\ttempMatch = this._input.match(this.rules[rules[i]]);\n\t\t\t\t\tif (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n\t\t\t\t\t\tmatch = tempMatch;\n\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t\t\ttoken = this.test_match(tempMatch, rules[i]);\n\t\t\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\t\t\treturn token;\n\t\t\t\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\t\t\tcontinue; // rule action called reject() implying a rule MISmatch.\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!this.options.flex) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (match) {\n\t\t\t\t\ttoken = this.test_match(match, rules[index]);\n\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\treturn token;\n\t\t\t\t\t}\n\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this._input === '') {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return next match that has a token\n\t\t\tlex: function lex() {\n\t\t\t\tvar r = this.next();\n\t\t\t\tif (r) {\n\t\t\t\t\treturn r;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.lex();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n\t\t\tbegin: function begin(condition) {\n\t\t\t\tthis.conditionStack.push(condition);\n\t\t\t},\n\n\t\t\t// pop the previously active lexer condition state off the condition stack\n\t\t\tpopState: function popState() {\n\t\t\t\tvar n = this.conditionStack.length - 1;\n\t\t\t\tif (n > 0) {\n\t\t\t\t\treturn this.conditionStack.pop();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditionStack[0];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// produce the lexer rule set which is active for the currently active lexer condition state\n\t\t\t_currentRules: function _currentRules() {\n\t\t\t\tif (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n\t\t\t\t\treturn this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditions['INITIAL'].rules;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n\t\t\ttopState: function topState(n) {\n\t\t\t\tn = this.conditionStack.length - 1 - Math.abs(n || 0);\n\t\t\t\tif (n >= 0) {\n\t\t\t\t\treturn this.conditionStack[n];\n\t\t\t\t} else {\n\t\t\t\t\treturn 'INITIAL';\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// alias for begin(condition)\n\t\t\tpushState: function pushState(condition) {\n\t\t\t\tthis.begin(condition);\n\t\t\t},\n\n\t\t\t// return the number of states currently on the stack\n\t\t\tstateStackSize: function stateStackSize() {\n\t\t\t\treturn this.conditionStack.length;\n\t\t\t},\n\t\t\toptions: {},\n\t\t\tperformAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n\t\t\t\tvar YYSTATE = YY_START;\n\t\t\t\tswitch ($avoiding_name_collisions) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn 24;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn 5;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\trules: [/^(?:\\s+)/, /^(?:([-,.\\[\\]<>{}]))/, /^(?:([a-zA-Z_0-9]+))/, /^(?:$)/],\n\t\t\tconditions: { INITIAL: { rules: [0, 1, 2, 3], inclusive: true } },\n\t\t};\n\t\treturn lexer;\n\t})();\n\tparser.lexer = lexer;\n\tfunction Parser() {\n\t\tthis.yy = {};\n\t}\n\tParser.prototype = parser;\n\tparser.Parser = Parser;\n\treturn new Parser();\n})();\n\n// if (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexport { parser };\nexport var Parser = parser.Parser;\nexport var parse = function () {\n\treturn parser.parse.apply(parser, arguments);\n};\nexport default { parser: parser, Parser: parser.Parser, parse: parse };\n","import StaffLayout from './staffLayout';\nimport grammar from './grammar.jison';\n\nconst parseCode = (code: string): StaffLayout => {\n\tconst raw = grammar.parse(code);\n\n\treturn new StaffLayout(raw);\n};\n\nexport { parseCode };\n","interface Logger {\n\tdebug(message?: any, ...optionalParams: any[]): void;\n\tinfo(message?: any, ...optionalParams: any[]): void;\n\twarn(message?: any, ...optionalParams: any[]): void;\n\tgroup(...label: any[]): void;\n\tgroupCollapsed(...label: any[]): void;\n\tgroupEnd(): void;\n\tassert(expr: boolean, ...optionalParams: any[]): void;\n}\n\nclass DummyLogger implements Logger {\n\tdebug(..._: any[]): void {}\n\tgroup(..._: any[]): void {}\n\tgroupCollapsed(..._: any[]): void {}\n\tgroupEnd(): void {}\n\tinfo(..._: any[]): void {}\n\twarn(..._: any[]): void {}\n\tassert(..._: any[]): void {}\n}\n\nexport { Logger, DummyLogger };\n","import { Fraction, Pitch, Matrix2x3 } from './interfaces';\nimport { SemanticPoint, CONFLICTION_GROUPS } from './semanticPoint';\n\ntype Point2D = { x: number; y: number };\ntype PointSegment = Point2D[];\n\nconst POINT_CONFLICTION_DISTANCE = 0.4;\n\nconst roundNumber = (x: number, precision: number, min = -Infinity): number => Math.max(Math.round(x / precision) * precision, min);\n\nconst distance2D = (p1: Point2D, p2: Point2D): number => {\n\tconst dx = p1.x - p2.x;\n\tconst dy = p1.y - p2.y;\n\n\treturn Math.sqrt(dx * dx + dy * dy);\n};\n\nconst trans23 = (point: Point2D, matrix: Matrix2x3): Point2D => ({\n\tx: matrix[0] * point.x + matrix[2] * point.y + matrix[4],\n\ty: matrix[1] * point.x + matrix[3] * point.y + matrix[5],\n});\n\nconst gcd = (a: number, b: number): number => {\n\tif (!(Number.isInteger(a) && Number.isInteger(b))) {\n\t\tconsole.error('non-integer gcd:', a, b);\n\t\treturn 1;\n\t}\n\n\treturn b === 0 ? a : gcd(b, a % b);\n};\n\nconst frac = (numerator: number, denominator: number): Fraction => ({ numerator, denominator });\n\nconst reducedFraction = (n: number, d: number): Fraction => {\n\tn = Math.round(n);\n\td = Math.round(d);\n\n\tconst g = n !== 0 ? gcd(n, d) : d;\n\n\treturn frac(n / g, d / g);\n};\n\nconst printFraction = (f: Fraction): string => `${f.numerator}/${f.denominator}`;\n\nconst fractionMul = (value: number, fraction: Fraction): number => (fraction ? (value * fraction.numerator) / fraction.denominator : value);\n\nconst segmentPoints = (points: Point2D[], axis: 'x' | 'y'): PointSegment[] => {\n\tconst sorted = [...points].sort((p1, p2) => p1[axis] - p2[axis]);\n\n\tlet seg: Point2D[] = null;\n\tlet lastP = null;\n\n\treturn sorted.reduce((segments, p, i) => {\n\t\tif (!lastP) {\n\t\t\tlastP = p;\n\t\t\tseg = [p];\n\t\t} else {\n\t\t\tif (p[axis] - lastP[axis] < POINT_CONFLICTION_DISTANCE) seg.push(p);\n\t\t\telse {\n\t\t\t\tif (seg.length > 1) segments.push(seg);\n\t\t\t\tlastP = p;\n\t\t\t\tseg = [p];\n\t\t\t}\n\t\t}\n\n\t\tif (seg.length > 1 && i === sorted.length - 1) segments.push(seg);\n\n\t\treturn segments;\n\t}, []);\n};\n\nconst filterWeekPoints = (points: SemanticPoint[]): SemanticPoint[] => {\n\t//console.log(\"filterWeekPoints:\", points.map(p => `${p.semantic}, ${p.x}, ${p.y}`));\n\t//console.table(points.map(p => ({ ...p })));\n\n\tif (points.length <= 1) return [];\n\n\tlet rests = points.slice(1);\n\tconst group = CONFLICTION_GROUPS.find((group) => group.includes(points[0].semantic));\n\tif (!group) return filterWeekPoints(rests);\n\n\tconst weeks = rests.filter((p) => group.includes(p.semantic));\n\trests = rests.filter((p) => !group.includes(p.semantic));\n\n\treturn [...weeks, ...filterWeekPoints(rests)];\n};\n\nconst solveOverlapping = (points: SemanticPoint[]): SemanticPoint[] => {\n\tconst pset = new Set(points);\n\n\tconst xClusters = segmentPoints(points, 'x');\n\tconst clusters: SemanticPoint[][] = [].concat(...xClusters.map((c) => segmentPoints(c, 'y')));\n\tclusters.forEach((ps) => ps.sort((p1, p2) => p2.confidence - p1.confidence));\n\n\tclusters.forEach((ps) => {\n\t\tfilterWeekPoints(ps).forEach((p) => pset.delete(p));\n\t});\n\n\treturn Array.from(pset);\n};\n\nconst GROUP_N_TO_PITCH = [0, 2, 4, 5, 7, 9, 11];\nconst MIDDLE_C = 60;\n\nconst mod7 = (x) => {\n\tlet y = x % 7;\n\twhile (y < 0) y += 7;\n\n\treturn y;\n};\n\nconst mod12 = (x) => {\n\tlet y = x % 12;\n\twhile (y < 0) y += 12;\n\n\treturn y;\n};\n\nconst noteToPitch = ({ note, alter }: Pitch): number => {\n\tconst group = Math.floor(note / 7);\n\tconst gn = mod7(note);\n\n\treturn MIDDLE_C + group * 12 + GROUP_N_TO_PITCH[gn] + alter;\n};\n\nconst argmax = (data: number[]): number => {\n\tconst max = Math.max(...data);\n\n\treturn data.indexOf(max);\n};\n\nexport {\n\tPoint2D,\n\troundNumber,\n\tdistance2D,\n\ttrans23,\n\tsolveOverlapping,\n\tgcd,\n\tfrac,\n\treducedFraction,\n\tprintFraction,\n\tfractionMul,\n\tGROUP_N_TO_PITCH,\n\tMIDDLE_C,\n\tmod7,\n\tmod12,\n\tnoteToPitch,\n\targmax,\n};\n","import { Fraction, Pitch, EventFeature, EventPredisposition } from './interfaces';\nimport { gcd, reducedFraction } from './utils';\nimport { TokenType } from './token';\nimport * as Token from './token';\nimport { SimpleClass } from './aux_/typedJSON';\n\nconst WHOLE_DURATION = 128 * 3 * 5;\nconst WHOLE_EXP2 = WHOLE_DURATION / 15;\n\nenum AccessoryDirection {\n\tUp = '^',\n\tDown = '_',\n\tMiddle = '-',\n}\n\nenum GraceType {\n\tGrace = 'grace',\n\tAfterGrace = 'afterGrace',\n\tAcciaccatura = 'acciaccatura',\n\tAppoggiatura = 'appoggiatura',\n\tSlashedGrace = 'slashedGrace',\n}\n\nenum StemBeam {\n\tOpen = 'Open',\n\tClose = 'Close',\n\tContinue = 'Continue',\n}\n\nenum TremoloLink {\n\tPitcher = 'Pitcher',\n\tCatcher = 'Catcher',\n\tPierced = 'Pierced',\n}\n\nenum GlissandoStyle {\n\tNormal = 'normal',\n\tDashedLine = 'dashed-line',\n\tDottedLine = 'dotted-line',\n\tZigzag = 'zigzag',\n\tTrill = 'trill',\n}\n\nenum ArpeggioStyle {\n\tNormal = 'Normal',\n\tBracket = 'Bracket',\n\tParenthesis = 'Parenthesis',\n\tParenthesisDashed = 'ParenthesisDashed',\n\tArrowDown = 'ArrowDown',\n}\n\ninterface Accessory {\n\tdirection?: AccessoryDirection;\n\tparenthesized?: boolean;\n\ttype: TokenType;\n\tid?: string;\n\tx: number;\n}\n\ninterface TermPitch extends Pitch {\n\ttying?: boolean;\n\ttied?: boolean;\n\tparenthesized?: boolean;\n\toctaveShift?: number;\n}\n\nclass Term extends SimpleClass {\n\tx: number;\n\tstaff?: number;\n}\n\ntype RestType = 'r' | 'R' | 's' | null;\n\ninterface DurationalTerm {\n\tdivision: number;\n\tdots: number;\n\tmultiplier?: Fraction;\n}\n\nconst SCALE_NAMES = 'CDEFGAB';\n\nclass EventTerm extends Term implements DurationalTerm {\n\tstatic className = 'EventTerm';\n\n\tleft: number;\n\tright: number;\n\tpivotX: number;\n\n\tsystem: number;\n\troundX: number; // for tick map, scheduler\n\tintX: number; // for measure hash\n\tintY: number;\n\tys: number[]; // order by ascending pitch, low (greater Y) to high (less Y)\n\tpitches?: TermPitch[];\n\trest: RestType;\n\tdivision: number;\n\tdots: number;\n\taccessories: Accessory[];\n\tmultiplier: Fraction;\n\tstemDirection: string;\n\ttying: boolean;\n\ttied: boolean;\n\trepetitionChord: boolean;\n\tgrace?: GraceType;\n\tbeam?: StemBeam;\n\ttimeWarp?: Fraction;\n\tparenthesized?: boolean;\n\ttremolo?: number; // like division, 'number of beams' + 2\n\ttremoloLink?: TremoloLink;\n\tglissando?: boolean;\n\tglissandoStyle?: GlissandoStyle;\n\tarpeggioStyle?: ArpeggioStyle;\n\ttip?: { x: number; y: number };\n\n\ttick: number;\n\n\t// for topology\n\tid?: number;\n\tprevId?: number;\n\ttickGroup?: number;\n\n\tfeature: EventFeature;\n\tpredisposition: EventPredisposition;\n\n\tgraceIds?: number[];\n\tcatcherId?: number; // tremolo catcher event ID for tremolo pitcher event\n\n\tnoteIds?: string[]; // order by upwards\n\n\tstatic space({ tick, duration }: { tick: number; duration: number }): EventTerm {\n\t\tconst term = new EventTerm({\n\t\t\trest: 's',\n\t\t\ttick,\n\t\t\taccessories: [],\n\t\t});\n\t\tterm.duration = Math.round(duration);\n\n\t\treturn term;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tObject.assign(this, data);\n\n\t\tif (Number.isFinite(data.left) && Number.isFinite(data.right)) this.x = (this.left + this.right) / 2;\n\t\tif (!Number.isFinite(this.pivotX)) this.pivotX = this.x;\n\t\t//console.assert(Number.isFinite(this.x), \"EventTerm: invalid x,\", data);\n\t}\n\n\tget alignedTick(): number {\n\t\treturn this.grace ? this.tick + this.duration : this.tick;\n\t}\n\n\tget mainDuration(): number {\n\t\treturn WHOLE_DURATION * 2 ** -this.division * (2 - 2 ** -this.dots);\n\t}\n\n\tget duration(): number {\n\t\tlet value = this.mainDuration;\n\t\tif (this.multiplier) value *= this.multiplier.numerator / this.multiplier.denominator;\n\t\tif (this.timeWarp) value *= this.timeWarp.numerator / this.timeWarp.denominator;\n\n\t\treturn this.grace ? value / 8 : value;\n\t}\n\n\tset duration(value: number) {\n\t\tconsole.assert(Number.isFinite(value), 'invalid duration value:', value);\n\n\t\tconst divider = gcd(value, WHOLE_EXP2);\n\t\tconst division = Math.log2(WHOLE_EXP2 / divider);\n\t\tconst multiplier = reducedFraction(value * 2 ** division, WHOLE_DURATION);\n\n\t\tthis.division = division;\n\t\tthis.dots = 0;\n\n\t\tif (multiplier.numerator !== multiplier.denominator) this.multiplier = multiplier;\n\t\telse this.multiplier = undefined;\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick;\n\t}\n\n\tget times(): string {\n\t\tif (!this.timeWarp) return null;\n\n\t\treturn `${this.timeWarp.numerator}/${this.timeWarp.denominator}`;\n\t}\n\n\tget fullMeasureRest(): boolean {\n\t\treturn this.rest === 'R';\n\t}\n\n\tget tipX(): number {\n\t\treturn this.tip ? this.tip.x : this.x;\n\t}\n\n\tget tipY(): number {\n\t\treturn this.tip ? this.tip.y : this.ys ? this.ys[0] : 0;\n\t}\n\n\tget tremoloCatcher(): boolean {\n\t\treturn this.tremoloLink === TremoloLink.Catcher;\n\t}\n\n\tget scaleChord(): string {\n\t\treturn this.pitches.map((pitch) => SCALE_NAMES[(pitch.note + 700) % 7]).join('');\n\t}\n\n\tget zeroHolder(): boolean {\n\t\treturn !!this.grace || this.tremoloCatcher;\n\t}\n}\n\nenum ContextType {\n\tClef,\n\tKeyAcc,\n\tAcc,\n\tOctaveShift,\n\tTimeSignatureC,\n\tTimeSignatureN,\n}\n\nclass ContextedTerm extends Term {\n\tstatic className = 'ContextedTerm';\n\n\ty: number;\n\ttokenType: TokenType;\n\n\ttick: number;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget type(): ContextType {\n\t\tif (Token.TokenClefs.includes(this.tokenType)) return ContextType.Clef;\n\t\tif (/\\|key-/.test(this.tokenType)) return ContextType.KeyAcc;\n\t\tif (/accidentals-/.test(this.tokenType)) return ContextType.Acc;\n\t\tif (Token.TokenOctshifts.includes(this.tokenType)) return ContextType.OctaveShift;\n\t\tif (Token.TokenTimesigsC.includes(this.tokenType)) return ContextType.TimeSignatureC;\n\t\tif (Token.TokenTimesigsN.includes(this.tokenType)) return ContextType.TimeSignatureN;\n\n\t\treturn null;\n\t}\n\n\tget staffLevel(): boolean {\n\t\treturn [ContextType.OctaveShift, ContextType.Clef, ContextType.KeyAcc].includes(this.type);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick - 0.1;\n\t}\n\n\tget clef(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.ClefG:\n\t\t\t\treturn -this.y - 2;\n\n\t\t\tcase TokenType.ClefF:\n\t\t\t\treturn -this.y + 2;\n\n\t\t\tcase TokenType.ClefC:\n\t\t\t\treturn -this.y;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget alter() {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.AccNatural:\n\t\t\tcase TokenType.KeyNatural:\n\t\t\t\treturn 0;\n\n\t\t\tcase TokenType.AccSharp:\n\t\t\tcase TokenType.KeySharp:\n\t\t\t\treturn 1;\n\n\t\t\tcase TokenType.AccFlat:\n\t\t\tcase TokenType.KeyFlat:\n\t\t\t\treturn -1;\n\n\t\t\tcase TokenType.AccDoublesharp:\n\t\t\t\treturn 2;\n\n\t\t\tcase TokenType.AccFlatflat:\n\t\t\t\treturn -2;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget octaveShift(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.OctaveShift8va:\n\t\t\t\treturn -1;\n\n\t\t\tcase TokenType.OctaveShift0:\n\t\t\t\treturn 0;\n\n\t\t\tcase TokenType.OctaveShift8vb:\n\t\t\t\treturn 1;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget number(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.TimesigZero:\n\t\t\t\treturn 0;\n\t\t\tcase TokenType.TimesigOne:\n\t\t\t\treturn 1;\n\t\t\tcase TokenType.TimesigTwo:\n\t\t\t\treturn 2;\n\t\t\tcase TokenType.TimesigThree:\n\t\t\t\treturn 3;\n\t\t\tcase TokenType.TimesigFour:\n\t\t\t\treturn 4;\n\t\t\tcase TokenType.TimesigFive:\n\t\t\t\treturn 5;\n\t\t\tcase TokenType.TimesigSix:\n\t\t\t\treturn 6;\n\t\t\tcase TokenType.TimesigSeven:\n\t\t\t\treturn 7;\n\t\t\tcase TokenType.TimesigEight:\n\t\t\t\treturn 8;\n\t\t\tcase TokenType.TimesigNine:\n\t\t\t\treturn 9;\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n//class BreakTerm extends Term {\n//};\n\nclass MarkTerm extends Term {\n\tstatic className = 'MarkTerm';\n\n\ttick: number;\n\n\tget prior(): number {\n\t\treturn this.tick + 0.01;\n\t}\n}\n\nconst MUSIC_NOTES = Array(7)\n\t.fill(0)\n\t.map((_, i) => String.fromCodePoint(0x1d15d + i));\n\nclass TempoTerm extends MarkTerm {\n\tstatic className = 'TempoTerm';\n\n\tduration: string;\n\tbeats: string;\n\n\tstatic fromNumeralText(text: string): TempoTerm {\n\t\tif (/.+=.*\\d+/.test(text)) {\n\t\t\tconst [symbol, value] = text.split('=');\n\t\t\tlet division = MUSIC_NOTES.findIndex((n) => symbol.includes(n));\n\t\t\tdivision = division >= 0 ? division : 2;\n\t\t\tlet duration = (2 ** division).toString();\n\t\t\tif (symbol.includes('.')) duration += '.';\n\n\t\t\treturn new TempoTerm({ tick: 0, duration, beats: value });\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick - 0.01;\n\t}\n\n\t// a whole note equal to 1920\n\tget durationMagnitude(): number {\n\t\tconst [_, den, dot] = this.duration.match(/^(\\d+)(\\.)?$/);\n\t\tconst magnitude = (WHOLE_DURATION / Number(den)) * (dot ? 1.5 : 1);\n\n\t\treturn magnitude;\n\t}\n\n\t// beats per minute, suppose 1 beat = 480 ticks\n\tget bpm(): number {\n\t\tconst [number] = this.beats.match(/\\d+/) || [90];\n\t\tconst beats = Number(number);\n\n\t\treturn (beats * this.durationMagnitude * 4) / WHOLE_DURATION;\n\t}\n\n\tisValid(range = [10, 400]): boolean {\n\t\tconst bpm = this.bpm;\n\n\t\treturn Number.isFinite(this.bpm) && bpm >= range[0] && bpm < range[1];\n\t}\n}\n\nclass GlyphTerm extends MarkTerm {\n\tstatic className = 'GlyphTerm';\n\n\tglyph: string;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass TextTerm extends MarkTerm {\n\tstatic className = 'TextTerm';\n\n\tdirection?: AccessoryDirection;\n\ttext: string;\n\tbold: boolean;\n\titalic: boolean;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass LyricTerm extends MarkTerm {\n\tstatic className = 'LyricTerm';\n\n\ttext: string;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass CommandTerm extends MarkTerm {\n\tstatic className = 'CommandTerm';\n\n\tcommand: string;\n\tparameters: string[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass ChordmodeTerm extends Term implements DurationalTerm {\n\tstatic className = 'ChordmodeTerm';\n\n\tpitch: Pitch;\n\tbasePitch?: Pitch;\n\tmodifier?: string;\n\n\tdivision: number;\n\tdots: number;\n\tmultiplier: Fraction;\n\n\ttick: number;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick;\n\t}\n\n\tget duration(): number {\n\t\tconst value = WHOLE_DURATION * 2 ** -this.division * (2 - 2 ** -this.dots);\n\t\tif (this.multiplier) return (value * this.multiplier.numerator) / this.multiplier.denominator;\n\n\t\treturn value;\n\t}\n}\n\nexport {\n\tTerm,\n\tEventTerm,\n\tContextedTerm,\n\t//BreakTerm,\n\tMarkTerm,\n\tTempoTerm,\n\tGlyphTerm,\n\tTextTerm,\n\tLyricTerm,\n\tCommandTerm,\n\tChordmodeTerm,\n\tDurationalTerm,\n\tContextType,\n\tGraceType,\n\tTermPitch,\n\tRestType,\n\tGlissandoStyle,\n\tArpeggioStyle,\n\tAccessory,\n\tAccessoryDirection,\n\tWHOLE_DURATION,\n\tStemBeam,\n\tTremoloLink,\n};\n","import { fractionMul, gcd } from './utils';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { StemBeam, WHOLE_DURATION } from './term';\n\nexport interface MeasureEvaluation {\n\tevents: number;\n\tvalidEvents: number;\n\tvoiceRugged: boolean;\n\tnullEvents: number;\n\tfakeEvents: number;\n\twarpedEvents: number;\n\tcomplicatedTimewarp: boolean;\n\tspaceTime: number;\n\tsurplusTime: number;\n\tdurationRate: number;\n\tbeamBroken: boolean;\n\tfractionalWarp: boolean;\n\tirregularWarpsN: number;\n\tirregularTick: boolean;\n\ttickTwist: number;\n\ttickOverlapped: boolean;\n\tgraceInVoice: boolean;\n\tgraceN: number;\n\tgraceDominant: boolean;\n\tperfect: boolean;\n\tfine: boolean;\n\terror: boolean;\n\tqualityScore: number;\n}\n\nconst BEAM_STATUS = {\n\t[StemBeam.Open]: 1,\n\t[StemBeam.Continue]: 0,\n\t[StemBeam.Close]: -1,\n};\n\nexport const evaluateMeasure = (measure: SpartitoMeasure): MeasureEvaluation => {\n\tif (!measure.regulated) return undefined;\n\n\tconst eventMap = measure.eventMap;\n\n\tconst events = measure.events.length;\n\tconst validEvents = measure.voices.flat(1).length;\n\tconst warpedEvents = measure.events.filter((e) => e.timeWarp).length;\n\tconst warps = new Set(\n\t\tmeasure.events.filter((e) => e.timeWarp && !(e.rest && e.division === 0)).map((e) => `${e.timeWarp!.numerator}/${e.timeWarp!.denominator}`)\n\t);\n\tconst irregularWarps = new Set(warps);\n\tirregularWarps.delete('2/3');\n\n\tconst fractionalWarp = measure.voices.some((voice) => {\n\t\tconst events = voice.map((id) => eventMap[id]);\n\t\tif (!events.some((e) => e.timeWarp)) return false;\n\n\t\tlet denominator = 0;\n\t\tlet tickSum = 0;\n\t\tlet eventN = 0;\n\t\treturn events.some((event, i) => {\n\t\t\tconst d = event.timeWarp ? event.timeWarp.denominator : 0;\n\t\t\tif (d !== denominator) {\n\t\t\t\tif (denominator > 0 && (tickSum % denominator || eventN < 2)) return true;\n\n\t\t\t\ttickSum = 0;\n\t\t\t\teventN = 0;\n\t\t\t}\n\n\t\t\tdenominator = d;\n\t\t\ttickSum += event.duration;\n\t\t\t++eventN;\n\n\t\t\tif (i === events.length - 1) {\n\t\t\t\tif (denominator > 0 && (tickSum % denominator || eventN < 2)) return true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\t});\n\n\tconst tickOverlapped = measure.voices.some((voice) => {\n\t\tconst events = voice.map((id) => eventMap[id]);\n\t\tlet tick = 0;\n\t\treturn events.some((event) => {\n\t\t\tif (event.grace) return false;\n\n\t\t\tif (event.tick < tick) return true;\n\t\t\ttick = event.tick + event.duration;\n\n\t\t\treturn false;\n\t\t});\n\t});\n\n\tconst fractionalTimes = new Set(measure.events.filter((e) => e.timeWarp && e.timeWarp.denominator > 3).map((e) => e.duration));\n\tconst complicatedTimewarp = fractionalTimes.size > 1;\n\n\tconst literalDuration = fractionMul(WHOLE_DURATION, measure.timeSignature);\n\tconst sigDuration = measure.doubtfulTimesig ? measure.duration : literalDuration;\n\n\tconst inVoiceEvents = measure.voices.flat(1).map((id) => eventMap[id]);\n\n\t// Guard: detect corrupted event data in voices (e.g. missing division, NaN tick)\n\tconst corruptedVoiceEvent = inVoiceEvents.some(\n\t\t(event) =>\n\t\t\t!event ||\n\t\t\t!Number.isFinite(event.tick) ||\n\t\t\t!Number.isFinite(event.division) ||\n\t\t\tevent.division < 0 ||\n\t\t\t!Number.isFinite(event.duration) ||\n\t\t\tevent.duration <= 0\n\t);\n\n\tconst overranged = inVoiceEvents.reduce((over, event) => over || event.tick < 0 || event.tick + event.duration > sigDuration, false);\n\tconst overDuration = measure.duration > literalDuration;\n\tconst graceInVoice = inVoiceEvents.some((event) => event.grace);\n\tconst graceN = measure.events.filter((e) => e.grace).length;\n\tconst graceDominant = graceN >= inVoiceEvents.length;\n\n\tconst irregularTick = inVoiceEvents.some((event) => {\n\t\tlet t = event.tick * 2 ** (event.division + 2);\n\t\tif (event.timeWarp) t *= event.timeWarp.denominator;\n\n\t\tif (!Number.isFinite(t)) return true;\n\n\t\tconst fragment = gcd(Math.round(t), WHOLE_DURATION);\n\t\t//if (fragment < WHOLE_DURATION)\n\t\t//\tconsole.log(\"irregularTick:\", event.tick, fragment);\n\t\treturn fragment < WHOLE_DURATION;\n\t});\n\n\tconst beamStatus = measure.voices!.map((voice) =>\n\t\tvoice.reduce(\n\t\t\t({ status, broken }, ei) => {\n\t\t\t\tconst event = eventMap[ei];\n\t\t\t\tif (event.beam) {\n\t\t\t\t\tstatus += BEAM_STATUS[event.beam];\n\t\t\t\t\tbroken = broken || !(status >= 0 && status <= 1);\n\t\t\t\t}\n\n\t\t\t\treturn { status, broken };\n\t\t\t},\n\t\t\t{ status: 0, broken: false }\n\t\t)\n\t);\n\tconst beamBroken = beamStatus.some(({ status, broken }) => status || broken);\n\tlet spaceTime = 0;\n\tlet surplusTime = 0;\n\tmeasure.voices!.forEach((voice) => {\n\t\tconst eventDuration = voice.reduce((sum, ei) => sum + eventMap[ei].duration, 0);\n\t\tspaceTime += Math.max(0, measure.duration - eventDuration);\n\t\tsurplusTime += Math.max(0, eventDuration - measure.duration);\n\t});\n\tspaceTime /= WHOLE_DURATION;\n\tconst nullEvents = measure.events.filter(\n\t\t(e) => !e.grace && !e.fullMeasureRest && !e.tremoloCatcher && (!e.predisposition || e.predisposition.fakeP < 0.1) && !Number.isFinite(e.tick)\n\t).length;\n\n\tconst fakeEvents = measure.events.filter(\n\t\t(event) => !event.fullMeasureRest && !event.grace && !event.tremoloCatcher && !inVoiceEvents.includes(event)\n\t).length;\n\n\tconst { voiceRugged } = measure.voices!.flat(1).reduce(\n\t\t(result, ei) => {\n\t\t\tif (!result.voiceRugged) {\n\t\t\t\tif (result.es.has(ei)) return { voiceRugged: true, es: result.es };\n\t\t\t}\n\n\t\t\tresult.es.add(ei);\n\n\t\t\treturn result;\n\t\t},\n\t\t{ voiceRugged: false, es: new Set() }\n\t);\n\n\tconst tickTwist = measure.tickTwist || 0;\n\n\tconst error =\n\t\tcorruptedVoiceEvent ||\n\t\ttickTwist >= 1 ||\n\t\ttickOverlapped ||\n\t\tvoiceRugged ||\n\t\tmeasure.tickRatesInStaves.some((rate) => rate < 0) ||\n\t\tnullEvents > 2 ||\n\t\t!measure.timeSignature ||\n\t\toverranged ||\n\t\tmeasure.duration > sigDuration ||\n\t\tmeasure.events.some((event) => event.timeWarp && event.timeWarp.numerator / event.timeWarp.denominator <= 0.5);\n\tconst perfect =\n\t\t!error &&\n\t\t!overDuration &&\n\t\ttickTwist < 0.2 &&\n\t\t!fractionalWarp &&\n\t\t!irregularWarps.size &&\n\t\t!irregularTick &&\n\t\t!spaceTime &&\n\t\t!surplusTime &&\n\t\t!!measure.voices!.length &&\n\t\t!beamBroken &&\n\t\t!graceInVoice &&\n\t\t!graceDominant &&\n\t\t(measure.duration === sigDuration || (Number.isFinite(measure.estimatedDuration) && measure.estimatedDuration <= sigDuration * 0.75));\n\tconst fine = !error && !overDuration && tickTwist < 0.3 && !fractionalWarp && !irregularTick && !surplusTime && !beamBroken && !graceInVoice;\n\n\tlet expectDuration = Math.min(sigDuration, WHOLE_DURATION * 2);\n\tif (Number.isFinite(measure.estimatedDuration)) expectDuration = Math.max(0, Math.min(expectDuration, measure.estimatedDuration));\n\tconst durationRate = measure.duration / expectDuration;\n\n\tlet qualityScore = 0;\n\tif (measure.patched && !corruptedVoiceEvent) qualityScore = 1;\n\telse if (!error) {\n\t\tconst spaceLoss = Math.tanh(Math.abs(spaceTime / Math.max(1, measure.voices.length)) * 1);\n\n\t\tlet expectDuration = Math.min(sigDuration, WHOLE_DURATION * 2);\n\t\tif (Number.isFinite(measure.estimatedDuration)) expectDuration = Math.max(0, Math.min(expectDuration, measure.estimatedDuration));\n\t\tconst durationLoss = expectDuration ? Math.max(0, 1 - durationRate) ** 2 : 0;\n\t\tconst warpsLoss = Math.tanh(irregularWarps.size);\n\n\t\tqualityScore = (1 - spaceLoss) * (1 - durationLoss) * (1 - warpsLoss) * (1 - tickTwist ** 2);\n\t}\n\n\treturn {\n\t\tevents,\n\t\tvalidEvents,\n\t\tvoiceRugged,\n\t\tnullEvents,\n\t\tfakeEvents,\n\t\twarpedEvents,\n\t\tcomplicatedTimewarp,\n\t\tspaceTime,\n\t\tsurplusTime,\n\t\tdurationRate,\n\t\tbeamBroken,\n\t\tfractionalWarp,\n\t\tirregularWarpsN: irregularWarps.size,\n\t\tirregularTick,\n\t\ttickTwist,\n\t\ttickOverlapped,\n\t\tgraceInVoice,\n\t\tgraceN,\n\t\tgraceDominant,\n\t\tperfect,\n\t\tfine,\n\t\terror,\n\t\tqualityScore,\n\t};\n};\n","//import { staffSvg } from \"@kelvinnxu/lotus\";\n\nimport { SemanticType, SemanticPoint, /*glyphSemanticMapping, glyphCenters,*/ SYSTEM_SEMANTIC_TYPES, Point } from './semanticPoint';\nimport { SimpleClass } from './aux_/typedJSON';\n\nclass SemanticGraph extends SimpleClass {\n\tstatic className = 'SemanticGraph';\n\n\tpoints: SemanticPoint[];\n\n\tconstructor(data?: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\t/*static fromSheetStaff(staff: staffSvg.SheetStaff, hashTable: {[key: string]: any}): SemanticGraph {\n\t\tconst tokens = [].concat(...staff.measures.map(measure => measure.tokens));\n\n\t\tconst voltaRightXs = [];\n\n\t\tconst points = [];\n\t\ttokens.forEach(token => {\n\t\t\tconst def = hashTable[token.hash];\n\n\t\t\tif (token.glyph) {\n\t\t\t\tconst glyph = token.glyph as string;\n\t\t\t\tlet semantic = null;\n\n\t\t\t\tconst isKey = /^\\\\key/.test(token.source) || token.is(\"KEY\");\n\t\t\t\tlet { x: cx = 0, y: cy = 0 } = glyphCenters[glyph] || { x: 0, y: 0 };\n\t\t\t\tif (token.scale2) {\n\t\t\t\t\tcx *= token.scale2.x;\n\t\t\t\t\tcy *= token.scale2.y;\n\t\t\t\t}\n\n\t\t\t\tlet x = token.x + cx;\n\t\t\t\tconst y = token.y + cy;\n\n\t\t\t\tswitch (glyph) {\n\t\t\t\tcase \"rests.0\":\n\t\t\t\t\tif (/^R/.test(token.source))\n\t\t\t\t\t\tsemantic = \"Rest0W\";\n\t\t\t\t\telse\n\t\t\t\t\t\tsemantic = \"Rest0\";\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.flat\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.natural\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.sharp\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dots.dot\":\n\t\t\t\t\tif (token.is(\"VOLTA\")) {\n\t\t\t\t\t\tx += 0.24;\t// dot glyph center X offset\n\t\t\t\t\t\tif (token.is(\"LEFT\"))\n\t\t\t\t\t\t\tsemantic = SemanticType.VoltaLeft;\n\t\t\t\t\t\telse if (token.is(\"RIGHT\")) {\n\t\t\t\t\t\t\tvoltaRightXs.push(x);\n\t\t\t\t\t\t\tsemantic = SemanticType.VoltaRight;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tsemantic = \"Dot\";\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"zero\":\n\t\t\t\tcase \"one\":\n\t\t\t\tcase \"two\":\n\t\t\t\tcase \"three\":\n\t\t\t\tcase \"four\":\n\t\t\t\tcase \"five\":\n\t\t\t\tcase \"six\":\n\t\t\t\tcase \"seven\":\n\t\t\t\tcase \"eight\":\n\t\t\t\tcase \"nine\": {\n\t\t\t\t\tconst upper = glyph[0].toUpperCase() + glyph.substr(1);\n\t\t\t\t\tsemantic = token.is(\"TIME_SIG\") ? \"Timesig\" + upper : upper;\n\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t}\n\n\t\t\t\tif (semantic) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (token.is(\"TEMPO_NOTEHEAD\")) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.TempoNotehead,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// grace noteheads\n\t\t\t\tif (token.is(\"NOTEHEAD\") && Number.isFinite(token.scale) && token.scale < 0.75) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.GraceNotehead,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// semantic from token symbol\n\t\t\tlet semantic = null;\n\t\t\tconst cx = 0;\n\t\t\tlet cy = 0;\n\t\t\tif (token.is(\"OCTAVE\")) {\n\t\t\t\tif (token.is(\"_8\")) {\n\t\t\t\t\tsemantic = SemanticType.OctaveShift8;\n\t\t\t\t\tcy = token.is(\"B\") ? -0.7512 : -0.7256;\n\t\t\t\t}\n\t\t\t\telse if (token.is(\"CLOSE\")) {\n\t\t\t\t\tsemantic = SemanticType.OctaveShift0;\n\t\t\t\t\tcy = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (/^flags/.test(token.glyph)) {\n\t\t\t\tlet direction = 0;\n\t\t\t\tif (/\\.u\\d/.test(token.glyph))\n\t\t\t\t\tdirection = 1;\n\t\t\t\tif (/\\.d\\d/.test(token.glyph))\n\t\t\t\t\tdirection = -1;\n\t\t\t\tif (direction) {\n\t\t\t\t\tconst [n] = token.glyph.match(/\\d+/);\n\t\t\t\t\tconst flagCount = Number(n) - 2;\n\t\t\t\t\t//console.log(\"flags:\", token.glyph, flagCount);\n\t\t\t\t\tfor (let i = 0; i < flagCount; ++i) {\n\t\t\t\t\t\tconst y = token.y + (i + 0.5) * direction;\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.Flag3,\n\t\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t\t//console.log(\"flags.1:\", token.x, y);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (token.is(\"SLUR\")) {\n\t\t\t\tconst d = def && def.d;\n\t\t\t\tif (d) {\n\t\t\t\t\tconst numbers = d.match(/-?[\\d.]+/g).map(Number);\n\t\t\t\t\t//console.log(\"slur:\", numbers);\n\t\t\t\t\tconst x1 = token.x + numbers[0];\n\t\t\t\t\tconst y1 = token.y + numbers[1];\n\t\t\t\t\tconst x2 = token.x + numbers[6];\n\t\t\t\t\tconst y2 = token.y + numbers[7];\n\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.SlurBegin,\n\t\t\t\t\t\tx: x1,\n\t\t\t\t\t\ty: y1,\n\t\t\t\t\t});\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.SlurEnd,\n\t\t\t\t\t\tx: x2,\n\t\t\t\t\t\ty: y2,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (token.is(\"NOTE_STEM\")) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.vline_Stem,\n\t\t\t\t\tx: token.x + def.width / 2,\n\t\t\t\t\ty: token.y,\n\t\t\t\t\textension: {\n\t\t\t\t\t\ty1: token.y,\n\t\t\t\t\t\ty2: token.y + token.height,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (token.is(\"TEXT\") || token.is(\"CHORD_TEXT\")) {\n\t\t\t\tif (/\\S/.test(token.text)) {\n\t\t\t\t\t// NOTE: text rect computation is delayed to sheet rendering\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.rect_Text,\n\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\ty: token.y,\n\t\t\t\t\t\textension: {\n\t\t\t\t\t\t\tindex: token.index,\n\t\t\t\t\t\t\ttext: token.text,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (semantic) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic,\n\t\t\t\t\tx: token.x + cx,\n\t\t\t\t\ty: token.y + cy,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// beams\n\t\tconst stems = tokens.filter(token => token.is(\"NOTE_STEM\")).map(stem => ({\n\t\t\tx: stem.x + stem.width / 2,\n\t\t\ty1: stem.y,\n\t\t\ty2: stem.y + stem.height,\n\t\t}));\n\t\tconst beams = tokens.filter(token => token.is(\"NOTETAIL\") && token.is(\"JOINT\"))\n\t\t\t.map(beam => {\n\t\t\t\tconst def = hashTable[beam.hash];\n\t\t\t\tconst points = def && def.points;\n\t\t\t\tif (points) {\n\t\t\t\t\tconst floats = points.split(\" \").map(Number);\n\t\t\t\t\tconst x1 = beam.x + floats[4];\n\t\t\t\t\tconst x2 = beam.x + floats[0];\n\t\t\t\t\tconst y1 = beam.y + (floats[5] + floats[7]) / 2;\n\t\t\t\t\tconst y2 = beam.y + (floats[1] + floats[3]) / 2;\n\t\t\t\t\tconst k = (y2 - y1) / (x2 - x1);\n\n\t\t\t\t\treturn { x1, x2, y1, y2, k, capital: beam.is(\"CAPITAL_BEAM\") };\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}).filter(Boolean);\n\t\t//console.log(\"beams:\", beams);\n\t\tbeams.forEach(beam => {\n\t\t\tconst innerStems = stems.filter(stem => stem.x > beam.x1 - 0.2 && stem.x < beam.x2 + 0.2);\n\t\t\t//console.log(\"innerStems:\", beam, innerStems);\n\n\t\t\tlet lines = 0;\n\t\t\tinnerStems.forEach(stem => {\n\t\t\t\tconst beamY = beam.y1 + (stem.x - beam.x1) * beam.k;\n\t\t\t\t//console.log(\"beamY:\", beamY, Math.min(Math.abs(beamY - beam.y1), Math.abs(beamY - beam.y2)));\n\t\t\t\tif (beamY >= stem.y1 - 0.1 && beamY <= stem.y2 + 0.1) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.Flag3,\n\t\t\t\t\t\tx: stem.x,\n\t\t\t\t\t\ty: beamY,\n\t\t\t\t\t});\n\n\t\t\t\t\t++lines;\n\n\t\t\t\t\t// beam semantics\n\t\t\t\t\tif (beam.capital) {\n\t\t\t\t\t\tlet semantic = SemanticType.BeamContinue;\n\t\t\t\t\t\tif (Math.abs(stem.x - beam.x1) < 0.2)\n\t\t\t\t\t\t\tsemantic = SemanticType.BeamLeft;\n\t\t\t\t\t\telse if (Math.abs(stem.x - beam.x2) < 0.2)\n\t\t\t\t\t\t\tsemantic = SemanticType.BeamRight;\n\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\t\tx: stem.x,\n\t\t\t\t\t\t\ty: beamY,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!lines)\n\t\t\t\tconsole.warn(\"empty beam:\", beam, innerStems, stems);\n\t\t\t//else if (lines < 2)\n\t\t\t//\tconsole.debug(\"single beam:\", beam, innerStems, stems);\n\t\t});\n\n\t\t// wedges (crescendo & decrescendo)\n\t\tconst crescendos = tokens.filter(token => token.is(\"WEDGE CRESCENDO TOP\"));\n\t\tconst crescendoBottoms = tokens.filter(token => token.is(\"WEDGE CRESCENDO BOTTOM\"));\n\t\tconst decrescendos = tokens.filter(token => token.is(\"WEDGE DECRESCENDO TOP\"));\n\t\tconst decrescendoBottoms = tokens.filter(token => token.is(\"WEDGE DECRESCENDO BOTTOM\"));\n\t\tcrescendos.forEach(line => {\n\t\t\tconst partner = crescendoBottoms.find(b => b.x === line.x && Math.abs(b.y - line.y) < 0.06);\n\n\t\t\tif (partner) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.CrescendoBegin,\n\t\t\t\t\tx: line.x,\n\t\t\t\t\ty: line.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.log(\"unpaired crescendo:\", line, crescendoBottoms);\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.CrescendoEnd,\n\t\t\t\tx: line.x + line.target.x,\n\t\t\t\ty: line.y + line.target.y,\n\t\t\t});\n\t\t});\n\t\tdecrescendos.forEach(line => {\n\t\t\tconst partner = decrescendoBottoms.find(b => b.x + b.target.x === line.x + line.target.x && Math.abs(b.y + b.target.y - (line.y + line.target.y)) < 0.06);\n\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.DecrescendoBegin,\n\t\t\t\tx: line.x,\n\t\t\t\ty: line.y,\n\t\t\t});\n\t\t\tif (partner) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.DecrescendoEnd,\n\t\t\t\t\tx: line.x + line.target.x,\n\t\t\t\t\ty: line.y + line.target.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.log(\"unpaired decrescendo:\", line, decrescendoBottoms);\n\t\t});\n\n\t\t// TODO: volta alternative\n\n\t\t// measure bars\n\t\tconst measureSeparators = staff.tokens.filter(token => token.is(\"MEASURE_SEPARATOR\"));\n\t\tconst singleBars = [];\n\t\tconst groupBars = [];\n\n\t\tfor (let i = 0; i < measureSeparators.length; ++i) {\n\t\t\tconst bar = measureSeparators[i];\n\t\t\tconst nextBar = measureSeparators[i + 1];\n\t\t\tconst inteval = nextBar ? nextBar.x - bar.x : Infinity;\n\n\t\t\tif (inteval < 1) {\n\t\t\t\tgroupBars.push([bar, nextBar]);\n\t\t\t\t++i;\n\t\t\t}\n\t\t\telse\n\t\t\t\tsingleBars.push(bar);\n\t\t};\n\t\t//console.log(\"bars:\", singleBars, groupBars);\n\n\t\tsingleBars.forEach(bar => {\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.vline_BarMeasure,\n\t\t\t\tx: bar.x + bar.sw / 2,\n\t\t\t\ty: 0,\n\t\t\t\textension: {\n\t\t\t\t\ty1: -2,\n\t\t\t\t\ty2: 2,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tgroupBars.forEach(group => {\n\t\t\tlet x = (group[0].x + group[1].x) / 2;\n\t\t\tconst bold0 = group[0].is(\"BOLD\");\n\t\t\tconst bold1 = group[1].is(\"BOLD\");\n\n\t\t\tlet semantic = null;\n\t\t\tif (!bold0 && bold1) {\n\t\t\t\tx = group[0].x;\n\n\t\t\t\tif (!voltaRightXs.some(vx => x - vx < 2))\n\t\t\t\t\tsemantic = SemanticType.vline_BarTerminal;\n\t\t\t}\n\t\t\telse if (bold0 && !bold1)\n\t\t\t\tx = group[1].x;\n\t\t\telse if (!bold0 && !bold1)\n\t\t\t\tsemantic = SemanticType.vline_BarSegment;\n\n\t\t\t//console.log(\"group:\", group[0].x, group[1].x, x);\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.vline_BarMeasure,\n\t\t\t\tx,\n\t\t\t\ty: 0,\n\t\t\t\textension: {\n\t\t\t\t\ty1: -2,\n\t\t\t\t\ty2: 2,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tif (semantic) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic,\n\t\t\t\t\tx,\n\t\t\t\t\ty: 0,\n\t\t\t\t\textension: {\n\t\t\t\t\t\ty1: -2,\n\t\t\t\t\t\ty2: 2,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst graph = new SemanticGraph();\n\t\tgraph.points = points;\n\n\t\treturn graph;\n\t}*/\n\n\tstatic fromPoints(points: SemanticPoint[] = []): SemanticGraph {\n\t\tconst graph = new SemanticGraph();\n\t\tgraph.points = points;\n\n\t\treturn graph;\n\t}\n\n\tgetLayer(semantic: SemanticType): Point[] {\n\t\treturn this.points.filter((p) => p.semantic === semantic);\n\t}\n\n\tgetConfidentLayer(semantic: SemanticType, threshold: number): Point[] {\n\t\treturn this.points.filter((p) => p.semantic === semantic && (!Number.isFinite(p.confidence) || p.confidence >= threshold));\n\t}\n\n\tgetSystemPoints(): SemanticPoint[] {\n\t\treturn this.points.filter((point) => SYSTEM_SEMANTIC_TYPES.includes(point.semantic));\n\t}\n\n\tgetStaffPoints(): SemanticPoint[] {\n\t\treturn this.points.filter((point) => !SYSTEM_SEMANTIC_TYPES.includes(point.semantic));\n\t}\n\n\toffset(x: number, y: number): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tpoint.x += x;\n\t\t\tpoint.y += y;\n\t\t});\n\t}\n\n\tscale(factor: number): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tpoint.x *= factor;\n\t\t\tpoint.y *= factor;\n\t\t});\n\t}\n\n\t// multipy 3x2 matrix\n\ttransform(matrix: [number, number][]): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tlet x = point.x * matrix[0][0] + point.y * matrix[1][0] + matrix[2][0];\n\t\t\tconst y = point.x * matrix[0][1] + point.y * matrix[1][1] + matrix[2][1];\n\n\t\t\tif (point.extension) {\n\t\t\t\tif (Number.isFinite(point.extension.y1)) {\n\t\t\t\t\tconst y1 = point.x * matrix[0][1] + point.extension.y1 * matrix[1][1] + matrix[2][1];\n\t\t\t\t\tconst y2 = point.x * matrix[0][1] + point.extension.y2 * matrix[1][1] + matrix[2][1];\n\t\t\t\t\tx = point.x * matrix[0][0] + (point.extension.y1 + point.extension.y2) * 0.5 * matrix[1][0] + matrix[2][0];\n\n\t\t\t\t\tpoint.extension.y1 = y1;\n\t\t\t\t\tpoint.extension.y2 = y2;\n\t\t\t\t}\n\n\t\t\t\tif (Number.isFinite(point.extension.width)) {\n\t\t\t\t\tconst scaling = Math.sqrt(matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]);\n\t\t\t\t\tpoint.extension.width *= scaling;\n\t\t\t\t\tpoint.extension.height *= scaling;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpoint.x = x;\n\t\t\tpoint.y = y;\n\t\t});\n\t}\n}\n\nexport { SemanticGraph };\n","import { SimpleClass } from './aux_/typedJSON';\nimport {\n\tRect,\n\tChordRect,\n\tVLine,\n\tChordColumn,\n\tEventMeasureColumn,\n\tEventSystem,\n\tSourceImageFile,\n\tPageLayout,\n\tAdditionalLineStack,\n\tTextType,\n\tEventFeature,\n} from './interfaces';\nimport { distance2D, solveOverlapping, roundNumber, trans23 } from './utils';\nimport {\n\tToken,\n\tTextToken,\n\tTokenType,\n\tTokenNoteheads,\n\tTokenFlags,\n\tTokenDots,\n\tTokenRests,\n\tTokenAccessories,\n\tTokenDirectionless,\n\tTokenClefs,\n\tTokenBeams,\n\tTokenTimesigs,\n\tTOKEN_Y_FIXED,\n\tTOKEN_Y_ROUND,\n} from './token';\nimport { EventTerm, ContextedTerm, MarkTerm, TempoTerm, AccessoryDirection, GraceType, ContextType, TremoloLink } from './term';\nimport { SemanticGraph } from './semanticGraph';\nimport { SemanticType, SemanticPoint, NOTEHEAD_WIDTHS, hashSemanticPoint, hashPageSemanticPoint } from './semanticPoint';\nimport { Logger, DummyLogger } from './logger';\n\ntype ChordsFeeder = (si: number, mi: number) => ChordColumn[];\ntype ColumnProcessor = (column: EventMeasureColumn) => EventMeasureColumn;\n\nconst CHORD_X_TOLERANCE = 0.2;\n//const EVENT_X_TOLERANCE = 0.8;\n\nconst STEM_LENGTH_MAX = 6;\n\nconst INDENT_THRESHOLD = 2;\n\nconst MEASURE_SEMANTICS = [\n\tSemanticType.ClefG,\n\tSemanticType.ClefF,\n\tSemanticType.ClefC,\n\tSemanticType.TimesigC44,\n\tSemanticType.TimesigC22,\n\tSemanticType.TimesigZero,\n\tSemanticType.TimesigOne,\n\tSemanticType.TimesigTwo,\n\tSemanticType.TimesigThree,\n\tSemanticType.TimesigFour,\n\tSemanticType.TimesigFive,\n\tSemanticType.TimesigSix,\n\tSemanticType.TimesigSeven,\n\tSemanticType.TimesigEight,\n\tSemanticType.TimesigNine,\n\tSemanticType.OctaveShift8va,\n\tSemanticType.OctaveShift8vb,\n\tSemanticType.OctaveShift0,\n\tSemanticType.Zero,\n\tSemanticType.One,\n\tSemanticType.Two,\n\tSemanticType.Three,\n\tSemanticType.Four,\n\tSemanticType.Five,\n\tSemanticType.Six,\n\tSemanticType.Seven,\n\tSemanticType.Eight,\n\tSemanticType.Nine,\n\tSemanticType.AccNatural,\n\tSemanticType.AccSharp,\n\tSemanticType.AccDoublesharp,\n\tSemanticType.AccFlat,\n\tSemanticType.AccFlatflat,\n\tSemanticType.NoteheadS0,\n\tSemanticType.NoteheadS1,\n\tSemanticType.NoteheadS2,\n\tSemanticType.NoteheadS1stemU,\n\tSemanticType.NoteheadS1stemD,\n\tSemanticType.NoteheadS2stemU,\n\tSemanticType.NoteheadS2stemD,\n\tSemanticType.Rest0,\n\tSemanticType.Rest1,\n\tSemanticType.Rest2,\n\tSemanticType.Rest3,\n\tSemanticType.Rest4,\n\tSemanticType.Rest5,\n\tSemanticType.Rest6,\n\tSemanticType.Rest0W,\n\tSemanticType.RestM1,\n\tSemanticType.SlurBegin,\n\tSemanticType.SlurEnd,\n\tSemanticType.Dot,\n\tSemanticType.f,\n\tSemanticType.p,\n\tSemanticType.m,\n\tSemanticType.n,\n\tSemanticType.r,\n\tSemanticType.s,\n\tSemanticType.z,\n\tSemanticType.ScriptFermata,\n\tSemanticType.ScriptShortFermata,\n\tSemanticType.ScriptSforzato,\n\tSemanticType.ScriptStaccato,\n\tSemanticType.ScriptStaccatissimo,\n\tSemanticType.ScriptTurn,\n\tSemanticType.ScriptTrill,\n\tSemanticType.ScriptSegno,\n\tSemanticType.ScriptCoda,\n\tSemanticType.ScriptArpeggio,\n\tSemanticType.ScriptPrall,\n\tSemanticType.ScriptMordent,\n\tSemanticType.ScriptMarcato,\n\tSemanticType.ScriptTenuto,\n\tSemanticType.ScriptPortato,\n\tSemanticType.PedalStar,\n\tSemanticType.PedalPed,\n\tSemanticType.GraceNotehead,\n\tSemanticType.BeamLeft,\n\tSemanticType.BeamRight,\n\tSemanticType.BeamContinue,\n\tSemanticType.CrescendoBegin,\n\tSemanticType.CrescendoEnd,\n\tSemanticType.DecrescendoBegin,\n\tSemanticType.DecrescendoEnd,\n\tSemanticType.TremoloLeft,\n\tSemanticType.TremoloRight,\n\tSemanticType.TremoloMiddle,\n];\n\nconst STAFF_LINED_SEMANTICS = [\n\tSemanticType.AccNatural,\n\tSemanticType.AccSharp,\n\tSemanticType.AccDoublesharp,\n\tSemanticType.AccFlat,\n\tSemanticType.AccFlatflat,\n\tSemanticType.NoteheadS0,\n\tSemanticType.NoteheadS1,\n\tSemanticType.NoteheadS2,\n\tSemanticType.NoteheadS1stemU,\n\tSemanticType.NoteheadS1stemD,\n\tSemanticType.NoteheadS2stemU,\n\tSemanticType.NoteheadS2stemD,\n];\n\nconst LINED_INTERVAL_SEMANTICS = [SemanticType.SignLined, SemanticType.SignInterval];\n\nconst NOTEHEAD_FOR_STEM_SEMANTICS = [SemanticType.NoteheadS1, SemanticType.NoteheadS2];\n\nconst KEYACC_CANDIDATE_SEMANTICS = {\n\tAccSharp: TokenType.KeySharp,\n\tAccNatural: TokenType.KeyNatural,\n\tAccFlat: TokenType.KeyFlat,\n};\n\nconst NOTEHEAD_TABLE: { [key: string]: { [key: string]: SemanticType } } = {\n\t[SemanticType.NoteheadS1]: {\n\t\tup: SemanticType.NoteheadS1stemU,\n\t\tdown: SemanticType.NoteheadS1stemD,\n\t},\n\t[SemanticType.NoteheadS2]: {\n\t\tup: SemanticType.NoteheadS2stemU,\n\t\tdown: SemanticType.NoteheadS2stemD,\n\t},\n};\n\nconst REST_SEMANTICS = [\n\tSemanticType.Rest0,\n\tSemanticType.Rest1,\n\tSemanticType.Rest2,\n\tSemanticType.Rest3,\n\tSemanticType.Rest4,\n\tSemanticType.Rest5,\n\tSemanticType.Rest6,\n];\n\nconst TOKEN_TO_STEMBEAM = {\n\t[TokenType.BeamLeft]: 'Open',\n\t[TokenType.BeamRight]: 'Close',\n\t[TokenType.BeamContinue]: 'Continue',\n};\n\nconst TEXT_TYPE_ALIAS = {\n\tAlter1: TextType.Alternation1,\n\tAlter2: TextType.Alternation2,\n};\n\ninterface StaffPosition {\n\ty: number;\n\tradius: number;\n}\n\ninterface TextArea {\n\tscore: number;\n\tcx: number;\n\tcy: number;\n\twidth: number;\n\theight: number;\n\ttext: string;\n\ttype: string;\n\ttheta: number;\n\tfeature_dict: Record;\n}\n\ntype Stem = VLine & { direction: 'u' | 'd' };\n\nconst noteheadsXPivot = (xs: number[], direction: 'u' | 'd' | null): number => {\n\tswitch (xs.length) {\n\t\tcase 0:\n\t\t\treturn undefined;\n\n\t\tcase 1:\n\t\t\treturn xs[0];\n\n\t\tcase 2:\n\t\t\treturn direction === 'u' ? Math.min(...xs) : Math.max(...xs);\n\n\t\tdefault: {\n\t\t\tconst mean = xs.reduce((sum, x) => sum + x, 0) / xs.length;\n\t\t\txs.sort((x1, x2) => Math.abs(x1 - mean) - Math.abs(x2 - mean));\n\n\t\t\treturn noteheadsXPivot(xs.slice(0, xs.length - 1), direction);\n\t\t}\n\t}\n};\n\nconst noteheadsPivot = (nhs: Token[]): number =>\n\tnoteheadsXPivot(\n\t\tnhs.map((nh) => (Number.isFinite(nh.pivotX) ? nh.pivotX : nh.x)),\n\t\tnhs[0].direction\n\t);\n\nclass Measure extends SimpleClass {\n\tstatic className = 'Measure';\n\tstatic blackKeys = ['tokens', 'antiTokens'];\n\n\tleft: number;\n\twidth: number;\n\theight: number;\n\n\talternative: boolean;\n\n\ttokens: Token[];\n\tantiTokens: Token[];\n\n\tbarTypes: Record;\n\n\tconstructor(data?: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.tokens = this.tokens || [];\n\t\tthis.antiTokens = this.antiTokens || [];\n\t\tthis.barTypes = this.barTypes || {};\n\t}\n\n\tget right(): number {\n\t\treturn this.left + this.width;\n\t}\n\n\tget noteheads(): Token[] {\n\t\treturn this.tokens.filter((t) => t.isNotehead).sort((n1, n2) => n1.x - n2.x);\n\t}\n\n\tget chordRects(): ChordRect[] {\n\t\tconst noteheads = this.noteheads.filter((nh) =>\n\t\t\t[TokenType.NoteheadS0, TokenType.NoteheadS1stemU, TokenType.NoteheadS2stemU, TokenType.NoteheadS1stemD, TokenType.NoteheadS2stemD].includes(nh.type)\n\t\t);\n\n\t\tlet nulN = 0;\n\n\t\tconst nhmap: Record = noteheads.reduce((map, nh) => {\n\t\t\tconst tip = nh.tip ? `${nh.tip.x}|${nh.tip.y}` : `nul${nulN}`;\n\t\t\tlet key = `${nh.type}|${tip}`;\n\n\t\t\tif (!nh.tip && map[key]) {\n\t\t\t\tif (!map[key].some((hh) => Math.abs(hh.x - nh.x) < NOTEHEAD_WIDTHS.NoteheadS0)) {\n\t\t\t\t\t++nulN;\n\t\t\t\t\tkey = `${nh.type}|nul${nulN}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmap[key] = map[key] || [];\n\t\t\tmap[key].push(nh);\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn Object.values(nhmap).map((nhs) => {\n\t\t\tconst left = Math.min(...nhs.map((nh) => nh.x));\n\t\t\tconst right = Math.max(...nhs.map((nh) => nh.x));\n\t\t\tconst top = Math.min(...nhs.map((nh) => nh.y));\n\t\t\tconst bottom = Math.max(...nhs.map((nh) => nh.y));\n\n\t\t\tconst nh0 = nhs[0];\n\n\t\t\tconst stemX = nh0 && nh0.tip ? nh0.tip.x : left;\n\n\t\t\tlet x = left;\n\t\t\tlet width = right - left;\n\t\t\tlet stemDirection = null;\n\n\t\t\tswitch (nh0.type) {\n\t\t\t\tcase TokenType.NoteheadS0:\n\t\t\t\t\tx -= NOTEHEAD_WIDTHS.NoteheadS0 / 2;\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS0;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase TokenType.NoteheadS1stemU:\n\t\t\t\tcase TokenType.NoteheadS2stemU:\n\t\t\t\t\tstemDirection = 'u';\n\t\t\t\t\tx -= NOTEHEAD_WIDTHS.NoteheadS1;\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase TokenType.NoteheadS1stemD:\n\t\t\t\tcase TokenType.NoteheadS2stemD:\n\t\t\t\t\tstemDirection = 'd';\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tx,\n\t\t\t\twidth,\n\t\t\t\tstemX,\n\t\t\t\tstemDirection,\n\t\t\t\ttop,\n\t\t\t\tbottom,\n\t\t\t\ttip: nh0.tip,\n\t\t\t};\n\t\t});\n\t}\n\n\tget timeWarped(): boolean {\n\t\treturn this.tokens && this.tokens.some((token) => token.timeWarped);\n\t}\n\n\tget additionalLines(): AdditionalLineStack[] {\n\t\tconst chords = this.getChords();\n\t\tconst up = chords\n\t\t\t.filter((chord) => chord.ys.some((y) => y <= -3))\n\t\t\t.map((chord) => ({\n\t\t\t\tleft: chord.left,\n\t\t\t\tright: chord.right,\n\t\t\t\tn: Math.ceil(Math.min(...chord.ys)) + 2,\n\t\t\t}));\n\t\tconst down = chords\n\t\t\t.filter((chord) => chord.ys.some((y) => y >= 3))\n\t\t\t.map((chord) => ({\n\t\t\t\tleft: chord.left,\n\t\t\t\tright: chord.right,\n\t\t\t\tn: Math.floor(Math.max(...chord.ys)) - 2,\n\t\t\t}));\n\n\t\treturn [...up, ...down].map((stack) => ({\n\t\t\tleft: stack.left - 0.28,\n\t\t\tright: stack.right + 0.28,\n\t\t\tn: stack.n,\n\t\t}));\n\t}\n\n\tgetChords(): ChordColumn[] {\n\t\tconst flags = this.tokens.filter((t) => TokenFlags.includes(t.type));\n\t\tconst dots = this.tokens.filter((t) => TokenDots.includes(t.type));\n\t\tconst beams = this.tokens.filter((t) => TokenBeams.includes(t.type));\n\n\t\tconst chordRcs = this.chordRects\n\t\t\t.map((rect) => {\n\t\t\t\tconst noteheads = this.noteheads.filter(\n\t\t\t\t\t(nh) =>\n\t\t\t\t\t\tnh.direction === rect.stemDirection &&\n\t\t\t\t\t\tnh.left >= rect.x &&\n\t\t\t\t\t\tnh.right <= rect.x + rect.width + CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tnh.y >= rect.top &&\n\t\t\t\t\t\tnh.y <= rect.bottom\n\t\t\t\t);\n\t\t\t\tnoteheads.sort((n1, n2) => n2.y - n1.y);\n\t\t\t\tconst ys = noteheads.map((nh) => nh.y);\n\t\t\t\tconst noteIds = noteheads.map((nh) => nh.id);\n\n\t\t\t\tconst division = noteheads.reduce((d, nh) => Math.max(d, nh.division), 0);\n\n\t\t\t\treturn {\n\t\t\t\t\trect,\n\t\t\t\t\tleft: rect.x,\n\t\t\t\t\tright: rect.x + rect.width,\n\t\t\t\t\tpivotX: noteheadsPivot(noteheads),\n\t\t\t\t\tys,\n\t\t\t\t\ttip: rect.tip,\n\t\t\t\t\tnoteIds,\n\t\t\t\t\tdivision,\n\t\t\t\t\tdots: null,\n\t\t\t\t\trest: false,\n\t\t\t\t\tstemDirection: rect.stemDirection,\n\t\t\t\t\tbeam: null,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.sort((c1, c2) => c2.left - c1.left);\n\n\t\tconst accs = new Set();\n\n\t\tconst chords = chordRcs.map(({ rect, ...chord }) => {\n\t\t\tif (chord.division >= 1) {\n\t\t\t\t// NOTE: notehead-s1 may have flags too\n\t\t\t\tconst flagRange = [rect.bottom, rect.top];\n\t\t\t\tswitch (rect.stemDirection) {\n\t\t\t\t\tcase 'u':\n\t\t\t\t\t\tflagRange[0] = rect.tip ? rect.tip.y - 0.2 : rect.top - STEM_LENGTH_MAX - 0.5;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tflagRange[1] = rect.tip ? rect.tip.y + 0.2 : rect.bottom + STEM_LENGTH_MAX + 0.5;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst nearbyFlags = flags.filter(\n\t\t\t\t\t(flag) =>\n\t\t\t\t\t\t!accs.has(flag.id) &&\n\t\t\t\t\t\tflag.x > rect.stemX - CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tflag.x < rect.stemX + CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tflag.y > flagRange[0] &&\n\t\t\t\t\t\tflag.y < flagRange[1]\n\t\t\t\t);\n\t\t\t\tchord.division = nearbyFlags.reduce((d, flag) => Math.max(d, flag.division), chord.division);\n\n\t\t\t\tnearbyFlags.forEach((flag) => accs.add(flag.id));\n\n\t\t\t\tconst beamToken = rect.tip && beams.find((t) => Math.abs(rect.tip.x - t.x) < 0.3 && Math.abs(rect.tip.y - t.y) < 0.7);\n\t\t\t\tif (beamToken) chord.beam = TOKEN_TO_STEMBEAM[beamToken.type];\n\t\t\t}\n\n\t\t\tconst nearbyDots = dots.filter(\n\t\t\t\t(dot) =>\n\t\t\t\t\t!accs.has(dot.id) &&\n\t\t\t\t\tdot.x > rect.x + rect.width - 0.2 &&\n\t\t\t\t\tdot.x < rect.x + rect.width + 1.2 &&\n\t\t\t\t\tdot.y > rect.top - 1 &&\n\t\t\t\t\tdot.y <= rect.bottom + 0.5\n\t\t\t);\n\t\t\tchord.dots = nearbyDots.reduce((v, dot) => Math.max(v, dot.dots), 0);\n\n\t\t\tnearbyDots.forEach((dot) => accs.add(dot.id));\n\n\t\t\treturn chord;\n\t\t});\n\n\t\tchords.reverse();\n\n\t\treturn chords;\n\t}\n\n\tgetRests(): ChordColumn[] {\n\t\tconst rests = this.tokens.filter((t) => TokenRests.includes(t.type));\n\t\tconst dots = this.tokens.filter((t) => TokenDots.includes(t.type));\n\n\t\treturn rests.map((rest) => {\n\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > rest.x + 0.5 && dot.x < rest.x + 2 && dot.y > rest.y - 1 && dot.y < rest.y + 0.5);\n\t\t\tconst dotValue = nearbyDots.reduce((v, dot) => Math.max(v, dot.dots), 0);\n\n\t\t\treturn {\n\t\t\t\tleft: rest.x - 0.75,\n\t\t\t\tright: rest.x + 0.75,\n\t\t\t\tpivotX: rest.x,\n\t\t\t\trest: true,\n\t\t\t\tys: [rest.y],\n\t\t\t\tnoteIds: [rest.id],\n\t\t\t\tdots: dotValue,\n\t\t\t\tdivision: rest.division,\n\t\t\t\tstemDirection: null,\n\t\t\t};\n\t\t});\n\t}\n\n\tgetEvents(): ChordColumn[] {\n\t\treturn [...this.getChords(), ...this.getRests()].sort((e1, e2) => e1.left - e2.left);\n\t}\n\n\tgetContexts(fields = {}): ContextedTerm[] {\n\t\treturn this.tokens\n\t\t\t.filter((t) => t.isContexted)\n\t\t\t.sort((n1, n2) => n1.x - n2.x)\n\t\t\t.map(\n\t\t\t\t(token) =>\n\t\t\t\t\tnew ContextedTerm({\n\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\ty: token.y,\n\t\t\t\t\t\ttokenType: token.type,\n\t\t\t\t\t\t...fields,\n\t\t\t\t\t})\n\t\t\t);\n\t}\n\n\tassignAccessoriesOnEvents(events: ChordColumn[]): void {\n\t\tevents.forEach((event) => (event.accessories = event.accessories || []));\n\n\t\tconst accessories = this.tokens.filter((token) => TokenAccessories.includes(token.type));\n\t\t//console.log(\"accessories:\", accessories);\n\t\taccessories.forEach((accessory) => {\n\t\t\tconst relatedEvents = events.filter((event) => accessory.x > event.left - 1 && accessory.x < event.right + 1);\n\n\t\t\tif (relatedEvents.length > 0) {\n\t\t\t\tlet owner = relatedEvents[0];\n\t\t\t\tif (relatedEvents.length > 1) {\n\t\t\t\t\towner = relatedEvents\n\t\t\t\t\t\t.map((event) => ({ event, d: Math.min(...event.ys.map((y) => Math.abs(y - accessory.y))) }))\n\t\t\t\t\t\t.sort(({ d: d1 }, { d: d2 }) => d1 - d2)\n\t\t\t\t\t\t.map(({ event }) => event)[0];\n\t\t\t\t}\n\t\t\t\t//console.log(\"relatedEvents:\", accessory, owner);\n\n\t\t\t\tlet direction = accessory.y > Math.max(...owner.ys) ? AccessoryDirection.Down : AccessoryDirection.Up;\n\t\t\t\tif (TokenDirectionless.includes(accessory.type)) direction = null;\n\n\t\t\t\towner.accessories.push({\n\t\t\t\t\ttype: accessory.type,\n\t\t\t\t\tid: accessory.id,\n\t\t\t\t\tdirection,\n\t\t\t\t\tx: accessory.x - owner.left,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"alone accessory:\", accessory.type);\n\t\t});\n\n\t\t// arpeggio\n\t\tconst sortEvents = [...events];\n\t\tsortEvents.sort((e1, e2) => e1.left - e2.left);\n\n\t\tconst arpeggios = this.tokens.filter((token) => token.type === TokenType.ScriptArpeggio);\n\t\tarpeggios.forEach((arpeggio) => {\n\t\t\tconst owner = sortEvents.find(\n\t\t\t\t(event) => arpeggio.x < event.left && event.ys.some((y) => y < arpeggio.y + 0.25) && event.ys.some((y) => y > arpeggio.y)\n\t\t\t);\n\t\t\t//const owner = sortEvents.find(event => event.left - leftMost.left < 2 && event.ys.some(y => Math.abs(y - arpeggio.y + 0.25) < 0.5));\n\t\t\tif (owner) {\n\t\t\t\towner.accessories.push({\n\t\t\t\t\ttype: TokenType.ScriptArpeggio,\n\t\t\t\t\tid: arpeggio.id,\n\t\t\t\t\tx: arpeggio.x - owner.left,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"alone arpeggio:\", arpeggio);\n\t\t});\n\n\t\t// grace noteheads\n\t\tconst graceNhs = this.tokens.filter((token) => token.type === TokenType.GraceNotehead);\n\t\tgraceNhs.forEach((grace) => {\n\t\t\tconst event = events.find((event) => grace.x > event.left && grace.x < event.right && event.ys.some((y) => Math.abs(grace.y - y) < 0.4));\n\t\t\tif (event) event.grace = GraceType.Grace;\n\t\t});\n\n\t\t// tremolos\n\t\tconst tremolsLs = this.tokens.filter((token) => token.type === TokenType.TremoloLeft);\n\t\tconst tremolsRs = this.tokens.filter((token) => token.type === TokenType.TremoloRight);\n\t\tconst tremolsMs = this.tokens.filter((token) => token.type === TokenType.TremoloMiddle);\n\n\t\tconst tevents = events\n\t\t\t.filter((event) => !event.rest)\n\t\t\t.map((event) => {\n\t\t\t\tconst ys = [...event.ys];\n\t\t\t\tif (event.tip) ys.push(event.tip.y);\n\t\t\t\telse {\n\t\t\t\t\tys.push(event.ys[0] + 2);\n\t\t\t\t\tys.push(event.ys[event.ys.length - 1] - 2);\n\t\t\t\t}\n\n\t\t\t\tconst stemL = event.tip ? event.tip.x : event.left;\n\t\t\t\tconst stemR = event.tip ? event.tip.x : event.right;\n\n\t\t\t\treturn {\n\t\t\t\t\tevent,\n\t\t\t\t\ttop: Math.min(...ys),\n\t\t\t\t\tbottom: Math.max(...ys),\n\t\t\t\t\tstemL,\n\t\t\t\t\tstemR,\n\t\t\t\t};\n\t\t\t});\n\n\t\ttremolsMs.forEach((tm) => {\n\t\t\tconst te = tevents.find((te) => {\n\t\t\t\tif (te.event.tip) return tm.y > te.top && tm.y < te.bottom && Math.abs(tm.x - te.event.tip.x) < 0.3;\n\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t}\n\t\t});\n\t\ttremolsLs.forEach((tl) => {\n\t\t\tconst te = tevents.find((te) => tl.y > te.top && tl.y < te.bottom && tl.x > te.stemR && tl.x < te.stemR + 1.6);\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t\tte.event.tremoloLink = TremoloLink.Pitcher;\n\t\t\t}\n\t\t});\n\t\ttremolsRs.forEach((tr) => {\n\t\t\tconst te = tevents.find((te) => tr.y > te.top && tr.y < te.bottom && tr.x < te.stemL && tr.x > te.stemL - 1.6);\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t\tte.event.tremoloLink = TremoloLink.Catcher;\n\t\t\t}\n\t\t});\n\t}\n\n\tassignFeaturesOnEvents(events: ChordColumn[], semantics: SemanticPoint[]): void {\n\t\tconst points = semantics.filter((point) => point.x > this.left && point.x < this.right);\n\t\tconst rests = points.filter((point) => REST_SEMANTICS.includes(point.semantic));\n\t\tconst flags = points.filter((point) => point.semantic === SemanticType.Flag3);\n\t\tconst dotPs = points.filter((point) => point.semantic === SemanticType.Dot);\n\t\tconst beamLs = points.filter((points) => points.semantic === SemanticType.BeamLeft);\n\t\tconst beamMs = points.filter((points) => points.semantic === SemanticType.BeamContinue);\n\t\tconst beamRs = points.filter((points) => points.semantic === SemanticType.BeamRight);\n\t\tconst gracePs = points.filter((point) => point.semantic === SemanticType.GraceNotehead);\n\t\tconst tremoloRs = points.filter((point) => point.semantic === SemanticType.TremoloRight);\n\t\tconst stems = points.filter((point) => point.semantic === SemanticType.vline_Stem);\n\t\tconst s0 = points.filter((point) => point.semantic === SemanticType.NoteheadS0);\n\t\tconst s1 = points.filter((point) => point.semantic === SemanticType.NoteheadS1);\n\t\tconst s2 = points.filter((point) => point.semantic === SemanticType.NoteheadS2);\n\n\t\tevents.forEach((event) => {\n\t\t\tconst cx = event.tip ? event.tip.x : (event.left + event.right) / 2;\n\t\t\tconst top = event.tip ? Math.min(event.tip.y, event.ys[event.ys.length - 1]) : event.ys[event.ys.length - 1];\n\t\t\tconst bottom = event.tip ? Math.max(event.tip.y, event.ys[0]) : event.ys[0];\n\t\t\tconst stemL = event.tip ? event.tip.x : event.left;\n\n\t\t\tconst divisions = [0, 0, 0, 0, 0, 0, 0];\n\t\t\tif (event.rest) {\n\t\t\t\tconst i_rests = rests.filter((point) => distance2D(point, { x: cx, y: event.ys[0] }) < 0.5);\n\t\t\t\ti_rests.forEach((r) => {\n\t\t\t\t\tconst d = REST_SEMANTICS.indexOf(r.semantic);\n\t\t\t\t\tdivisions[d] = Math.max(divisions[d], r.confidence);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst nhs = [s0, s1, s2]\n\t\t\t\t\t.map((ss) => ss.filter((nh) => nh.x > event.left && nh.x < event.right && nh.y > top - 0.25 && nh.y < bottom + 0.25))\n\t\t\t\t\t.map((ss) => Math.max(0, ...ss.map((nh) => nh.confidence)));\n\n\t\t\t\tconst i_flags = flags.filter((flag) => flag.y > top - 0.2 && flag.y < bottom + 0.2 && Math.abs(flag.x - cx) < 0.2);\n\t\t\t\ti_flags.sort((f1, f2) => f2.confidence - f1.confidence);\n\n\t\t\t\tdivisions[0] = nhs[0];\n\t\t\t\tdivisions[1] = nhs[1];\n\t\t\t\tdivisions[2] = nhs[2];\n\t\t\t\tArray(divisions.length - 3)\n\t\t\t\t\t.fill(0)\n\t\t\t\t\t.forEach((_, i) => (divisions[3 + i] = i_flags[i] ? i_flags[i].confidence : 0));\n\t\t\t}\n\n\t\t\tconst i_dots = dotPs.filter((dot) => dot.x > cx && dot.x < event.right + 2.6);\n\t\t\tconst dots2 = i_dots.filter((dot) => i_dots.some((d) => dot.x > d.x && Math.abs(dot.y - d.y) < 0.2));\n\t\t\tconst dots = [Math.max(0, ...i_dots.map((dot) => dot.confidence)), Math.max(0, ...dots2.map((dot) => dot.confidence))];\n\n\t\t\tconst beams = [beamLs, beamMs, beamRs]\n\t\t\t\t.map((bs) => bs.filter((b) => Math.abs(b.x - cx) < 0.2 && b.y > top - 0.2 && b.y < bottom + 0.2))\n\t\t\t\t.map((bs) => Math.max(0, ...bs.map((b) => b.confidence)));\n\n\t\t\tconst u_stems = stems.filter((stem) => distance2D({ x: cx, y: event.ys[0] }, { x: stem.x, y: stem.extension.y2 }) < 0.5);\n\t\t\tconst d_stems = stems.filter((stem) => distance2D({ x: cx, y: event.ys[event.ys.length - 1] }, { x: stem.x, y: stem.extension.y1 }) < 0.5);\n\t\t\tconst stemDirections = [Math.max(0, ...u_stems.map((stem) => stem.confidence)), Math.max(0, ...d_stems.map((stem) => stem.confidence))];\n\n\t\t\tconst graces = gracePs.filter((grace) => Math.abs(grace.x - cx) < 0.6 && event.ys.some((y) => Math.abs(grace.y - y) < 0.4));\n\t\t\tconst grace = Math.max(0, ...graces.map((grace) => grace.confidence));\n\n\t\t\tconst tremolos =\n\t\t\t\tevent.division === 0\n\t\t\t\t\t? tremoloRs.filter((tremolo) => tremolo.x > event.left - 2 && tremolo.x < event.right)\n\t\t\t\t\t: tremoloRs.filter((tremolo) => tremolo.y > top - 0.04 && tremolo.y < bottom + 0.04 && tremolo.x > stemL - 2 && tremolo.x < stemL);\n\t\t\tconst tremoloCatcher = Math.max(0, ...tremolos.map((tremolo) => tremolo.confidence));\n\n\t\t\tevent.feature = {\n\t\t\t\tdivisions,\n\t\t\t\tdots,\n\t\t\t\tbeams,\n\t\t\t\tstemDirections,\n\t\t\t\tgrace,\n\t\t\t\ttremoloCatcher,\n\t\t\t} as EventFeature;\n\t\t});\n\t}\n}\n\nclass Staff extends SimpleClass {\n\tstatic className = 'Staff';\n\tstatic blackKeys = ['index', 'semanticTop', 'semanticBttom'];\n\n\tindex?: number; // staff index in full staff layout\n\n\t// in units\n\ttop: number;\n\theight: number;\n\tstaffY: number;\n\n\tsemanticTop: number;\n\tsemanticBottom: number;\n\n\tbackgroundImage: string | Buffer;\n\tmaskImage: string | Buffer;\n\timagePosition: Rect;\n\n\tmeasures: Measure[];\n\n\tsemantics: SemanticPoint[];\n\n\tconstructor({ measureCount = null, measureBars = null, ...data }: Record = {}) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.height = this.height || 10;\n\t\tthis.staffY = this.staffY || 5;\n\n\t\tif (measureBars) {\n\t\t\tlet left = 0;\n\t\t\tthis.measures = measureBars.map((endX) => {\n\t\t\t\tconst measure = new Measure({ left, width: endX - left, height: this.height });\n\t\t\t\tleft = endX;\n\n\t\t\t\treturn measure;\n\t\t\t});\n\t\t} else if (measureCount)\n\t\t\tthis.measures = Array(measureCount)\n\t\t\t\t.fill(null)\n\t\t\t\t.map(() => new Measure());\n\t\telse this.measures = [];\n\t}\n\n\t// relative to staffY\n\tget noteRange(): { top: number; bottom: number } {\n\t\tconst noteheads: Token[] = [].concat(...this.measures.map((measure) => measure.noteheads));\n\t\tconst ys = noteheads.map((note) => note.y);\n\t\tconst top = Math.min(-2, ...ys);\n\t\tconst bottom = Math.max(2, ...ys);\n\n\t\treturn { top, bottom };\n\t}\n\n\tget additionalLines(): AdditionalLineStack[] {\n\t\treturn [].concat(...this.measures.map((measure) => measure.additionalLines));\n\t}\n\n\trearrangeMeasures(measureBars: number[]): void {\n\t\tif (!measureBars.length) {\n\t\t\tconsole.warn('rearrangeMeasures error, measureBars are empty.');\n\t\t\treturn;\n\t\t}\n\n\t\tconst tokens = this.measures?.map((measure) => measure.tokens).flat(1) || [];\n\n\t\tlet left = 0;\n\t\tthis.measures = measureBars.map((endX) => {\n\t\t\tconst measure = new Measure({ left, width: endX - left, height: this.height });\n\t\t\tleft = endX;\n\n\t\t\treturn measure;\n\t\t});\n\n\t\tthis.reassignTokens(tokens);\n\t}\n\n\treassignTokens(tokens: Token[] = null): void {\n\t\tif (!tokens) tokens = [].concat(...this.measures.map((measure) => measure.tokens));\n\n\t\tthis.measures.forEach((measure) => (measure.tokens = []));\n\n\t\ttokens.forEach((token) => {\n\t\t\tfor (const measure of this.measures) {\n\t\t\t\tif (token.x < measure.right) {\n\t\t\t\t\tmeasure.tokens.push(token);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tassignSemantics(graph: SemanticGraph): void {\n\t\tthis.semantics = graph.getStaffPoints();\n\t}\n\n\t// generate tokens from semantics\n\tassemble(threshold: number, system: System, logger: Logger = new DummyLogger()): void {\n\t\tif (!this.semantics) return;\n\n\t\tlet points = system.qualifiedSemantics(this.semantics, threshold);\n\t\tpoints = solveOverlapping(points);\n\n\t\t// tempo noteheads\n\t\tconst tempoNhs = points.filter((point) => point.semantic === SemanticType.TempoNotehead);\n\t\ttempoNhs.forEach((tempoNh) => {\n\t\t\tconst index = points.findIndex((point) => /^Notehead/.test(point.semantic) && distance2D(tempoNh, point) < 0.3);\n\t\t\t//console.log(\"temponh:\", tempoNh, index, points[index]);\n\t\t\tif (index >= 0) points.splice(index, 1);\n\t\t\t// TODO: construct tempo term\n\t\t});\n\n\t\tconst antiP = (id: string): SemanticPoint | null => {\n\t\t\tif (system.displacementSemantics?.[id]) return this.semantics.find((p) => p.id === id);\n\n\t\t\treturn null;\n\t\t};\n\n\t\tpoints.filter((point) => MEASURE_SEMANTICS.includes(point.semantic)).forEach((point) => this.appendPoint(point, { points }));\n\n\t\t// noteheads with stem from noteheads & stems\n\t\tconst stems: Stem[] = points\n\t\t\t.filter((point) => point.semantic === SemanticType.vline_Stem)\n\t\t\t.filter((stem) => stem.extension.y2 - stem.extension.y1 > 1.5) // exclude too short stems\n\t\t\t.map((p) => ({\n\t\t\t\tx: p.x,\n\t\t\t\ty1: p.extension.y1,\n\t\t\t\ty2: p.extension.y2,\n\t\t\t\tdirection: null,\n\t\t\t}));\n\t\tconst noteheads = points.filter(\n\t\t\t(point) => NOTEHEAD_FOR_STEM_SEMANTICS.includes(point.semantic) && point.y > this.semanticTop && point.y < this.semanticBottom\n\t\t);\n\t\tconst rootNhs = new Set();\n\n\t\t// for 2nd degree chord notes\n\t\tconst nhOffsetX = (nh: SemanticPoint, stem: Stem, down: boolean): number => {\n\t\t\tif ((down ? 1 : 0) ^ (nh.x < stem.x ? 1 : 0)) return 0;\n\n\t\t\tconst offset = NOTEHEAD_WIDTHS[nh.semantic];\n\n\t\t\treturn down ? -offset : offset;\n\t\t};\n\n\t\t// find root noteheads on stem\n\t\tstems.forEach((stem) => {\n\t\t\tconst attachedHeads = noteheads.filter(\n\t\t\t\t(nh) =>\n\t\t\t\t\tMath.abs(nh.x - stem.x) - NOTEHEAD_WIDTHS[nh.semantic] / 2 < 0.28 &&\n\t\t\t\t\tMath.abs(nh.x - stem.x) - NOTEHEAD_WIDTHS[nh.semantic] / 2 > -0.44 && // for grace noteheads, more close to their stem\n\t\t\t\t\tnh.y > stem.y1 - 0.5 &&\n\t\t\t\t\tnh.y < stem.y2 + 0.5 &&\n\t\t\t\t\t!(nh.x > stem.x && nh.y > stem.y2) &&\n\t\t\t\t\t!(nh.x < stem.x && nh.y < stem.y1)\n\t\t\t);\n\t\t\t//if (stem.x===102.0625 && stem.y2===1.875)\n\t\t\t//\tdebugger;\n\t\t\tif (attachedHeads.length) {\n\t\t\t\tattachedHeads.sort((n1, n2) => n1.y - n2.y);\n\n\t\t\t\tconst topDist = Math.min(...attachedHeads.map((nh) => nh.y - stem.y1));\n\t\t\t\tconst bottomDist = Math.min(...attachedHeads.map((nh) => stem.y2 - nh.y));\n\t\t\t\tif (Math.min(topDist, bottomDist) > 0.5) return; // no root notehead on this stem\n\n\t\t\t\tconst down = topDist < bottomDist;\n\t\t\t\tstem.direction = down ? 'd' : 'u';\n\n\t\t\t\tif (!down) attachedHeads.reverse();\n\t\t\t\tconst root = attachedHeads[0];\n\n\t\t\t\tconst semantic = down ? NOTEHEAD_TABLE[root.semantic].down : NOTEHEAD_TABLE[root.semantic].up;\n\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: root.id,\n\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\tx: stem.x + nhOffsetX(root, stem, down),\n\t\t\t\t\t\ty: root.y,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\tconfidence: root.confidence,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttip: { x: stem.x, y: down ? stem.y2 : stem.y1 },\n\t\t\t\t\t\tantiPoint: antiP(root.id),\n\t\t\t\t\t\tpoints,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\trootNhs.add(root.id);\n\t\t\t}\n\t\t});\n\n\t\t// non-root noteheads\n\t\tnoteheads\n\t\t\t.filter((nh) => !rootNhs.has(nh.id))\n\t\t\t.forEach((nh) => {\n\t\t\t\tconst nearStems = stems\n\t\t\t\t\t.filter((stem) => Math.abs(stem.x - nh.x) < 2 && nh.y > stem.y1 && nh.y < stem.y2)\n\t\t\t\t\t.sort((s1, s2) => Math.abs(s1.x - nh.x) - Math.abs(s2.x - nh.x));\n\t\t\t\tconst stem = nearStems[0];\n\t\t\t\tif (stem) {\n\t\t\t\t\tconst down = stem.direction === 'd';\n\t\t\t\t\tconst semantic = down ? NOTEHEAD_TABLE[nh.semantic].down : NOTEHEAD_TABLE[nh.semantic].up;\n\n\t\t\t\t\tthis.appendPoint(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: nh.id,\n\t\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\t\tx: stem.x + nhOffsetX(nh, stem, down),\n\t\t\t\t\t\t\ty: nh.y,\n\t\t\t\t\t\t\tpivotX: nh.x,\n\t\t\t\t\t\t\tconfidence: nh.confidence,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttip: { x: stem.x, y: down ? stem.y2 : stem.y1 },\n\t\t\t\t\t\t\tantiPoint: antiP(nh.id),\n\t\t\t\t\t\t\tpoints,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else logger.debug('isolated notehead:', system.index, this.index, nh);\n\t\t\t});\n\n\t\t// group flags\n\t\tconst flags = points.filter((point) => point.semantic === SemanticType.Flag3);\n\t\tflags.sort((f1, f2) => f1.x - f2.x);\n\t\tthis.appendFlags(flags, stems);\n\n\t\t// group dots\n\t\tconst dots = points\n\t\t\t.filter((point) => point.semantic === SemanticType.Dot)\n\t\t\t.map((dot) => {\n\t\t\t\tconst y = roundNumber(dot.y, 0.5);\n\t\t\t\treturn { x: dot.x, y };\n\t\t\t});\n\t\tconst dotLines: { [key: number]: SemanticPoint[] } = dots.reduce((table, dot) => {\n\t\t\ttable[dot.y] = table[dot.y] || [];\n\t\t\ttable[dot.y].push(dot);\n\t\t\treturn table;\n\t\t}, {});\n\t\tObject.entries(dotLines).forEach(([sy, line]) => {\n\t\t\tconst y = Number(sy);\n\t\t\tif (line.length > 1) {\n\t\t\t\tline.sort((d1, d2) => d1.x - d2.x);\n\t\t\t\tfor (let i = 0; i < line.length - 1; i++) {\n\t\t\t\t\tconst dot = line[i];\n\t\t\t\t\tif (line.find((d) => d.x > dot.x && d.x - dot.x < 1.2)) {\n\t\t\t\t\t\tthis.appendPoint(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: dot.id,\n\t\t\t\t\t\t\t\tx: dot.x,\n\t\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\t\tconfidence: dot.confidence,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: TokenType.DotDot, antiPoint: antiP(dot.id), points }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// pair key accidentals\n\t\tconst keyaccs = points.filter((point) => point.semantic === SemanticType.KeyAcc);\n\t\tconst accs = points.filter((point) => KEYACC_CANDIDATE_SEMANTICS[point.semantic]);\n\t\taccs.forEach((acc) => {\n\t\t\tif (keyaccs.some((key) => Math.abs(acc.x - key.x) < 0.5 && Math.abs(acc.y - key.y) < 1)) {\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: acc.id,\n\t\t\t\t\t\tx: acc.x,\n\t\t\t\t\t\ty: acc.y,\n\t\t\t\t\t\tconfidence: acc.confidence,\n\t\t\t\t\t},\n\t\t\t\t\t{ type: KEYACC_CANDIDATE_SEMANTICS[acc.semantic], points }\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\t// octave shift heads\n\t\tconst octs = points.filter((point) => point.semantic === SemanticType.OctaveShift8);\n\t\tocts.forEach((oct) => {\n\t\t\tconst type = oct.y < 0 ? TokenType.OctaveShift8va : TokenType.OctaveShift8vb;\n\t\t\tthis.appendPoint(\n\t\t\t\t{\n\t\t\t\t\tid: oct.id,\n\t\t\t\t\tx: oct.x,\n\t\t\t\t\ty: oct.y,\n\t\t\t\t\tconfidence: oct.confidence,\n\t\t\t\t},\n\t\t\t\t{ type, points }\n\t\t\t);\n\t\t});\n\n\t\t// group volta dots\n\t\tconst voltaDots = this.semantics.filter((point) => [SemanticType.VoltaLeft, SemanticType.VoltaRight].includes(point.semantic));\n\t\tvoltaDots.sort((d1, d2) => d1.x - d2.x);\n\t\tconst voltaGroups: Record> = voltaDots.reduce(\n\t\t\t(groups, dot) => {\n\t\t\t\tconst group = groups[dot.semantic];\n\t\t\t\tconst xs = Array.from(Object.keys(group)).map(Number);\n\t\t\t\tconst x = xs.find((x) => dot.x < x + 0.2) || dot.x;\n\n\t\t\t\tgroup[x] = groups[dot.semantic][x] || [];\n\t\t\t\tgroup[x].push(dot);\n\n\t\t\t\treturn groups;\n\t\t\t},\n\t\t\t{ [SemanticType.VoltaLeft]: {}, [SemanticType.VoltaRight]: {} }\n\t\t);\n\t\tfor (const [type, group] of Object.entries(voltaGroups)) {\n\t\t\tObject.values(group).forEach((dots) => {\n\t\t\t\tif (dots.length > 1) {\n\t\t\t\t\tconst confidence = dots.reduce((sum, dot) => sum + dot.confidence, 0);\n\t\t\t\t\tif (dots[0].y * dots[1].y < 0 && confidence >= threshold * 2) this.appendPoint(dots[0], { type: TokenType[type] });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tappendPoint(\n\t\tpoint: Partial,\n\t\t{ type, points = null, antiPoint, ...fields }: { type?: TokenType; antiPoint?: SemanticPoint; [key: string]: any } = {}\n\t): void {\n\t\t//console.log(\"appendPoint.0:\", point, point.x, point.y);\n\t\tconst x = point.x;\n\t\tconst measure = this.measures.find((measure) => x < measure.left + measure.width);\n\t\tif (!measure)\n\t\t\t// drop tokens out of measures range\n\t\t\treturn;\n\n\t\t// lined or interval\n\t\tlet lined = false;\n\t\tlet interval = false;\n\t\tif (STAFF_LINED_SEMANTICS.includes(point.semantic)) {\n\t\t\tconsole.assert(points, 'argument of points for this semantic is required:', point.semantic);\n\t\t\tconst signs = points.filter((p) => LINED_INTERVAL_SEMANTICS.includes(p.semantic) && Math.abs(p.y - point.y) < 0.2 && Math.abs(p.x - point.x) < 1.2);\n\t\t\tif (signs.some((s) => s.semantic === SemanticType.SignLined)) lined = true;\n\t\t\telse if (signs.some((s) => s.semantic === SemanticType.SignInterval)) interval = true;\n\t\t}\n\n\t\ttype = type || TokenType[point.semantic];\n\t\tconst fixedY = TOKEN_Y_FIXED[type];\n\t\tlet roundY = TOKEN_Y_ROUND[type];\n\n\t\tif (lined || interval) roundY = Math.max(roundY, 1);\n\n\t\tlet y = point.y;\n\t\tif (Number.isFinite(fixedY)) y = fixedY;\n\t\telse if (roundY) {\n\t\t\tif (interval) y = roundNumber(y + 0.5, roundY) - 0.5;\n\t\t\telse y = roundNumber(y, roundY);\n\t\t}\n\t\t//if (lined || interval)\n\t\t//\tconsole.log(\"round sign:\", point.semantic, y, lined, interval);\n\n\t\tconst holder = measure.tokens.find((token) => token.type === type && Math.abs(token.x - x) < 0.1 && Math.abs(token.y - y) < 0.1);\n\t\tif (holder) {\n\t\t\tif (Number.isFinite(holder.confidence) && holder.confidence < point.confidence) {\n\t\t\t\tholder.x = x;\n\t\t\t\tholder.y = y;\n\t\t\t\tholder.confidence = point.confidence;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// exlude clef out of pitch range\n\t\tif (TokenClefs.includes(type)) {\n\t\t\tif (Math.abs(y) > 3) return;\n\t\t}\n\n\t\t// TODO: exclude overlapped pair by a token prior table\n\n\t\tmeasure.tokens.push(\n\t\t\tnew Token({\n\t\t\t\tid: point.id,\n\t\t\t\ttype,\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\tpivotX: point.pivotX,\n\t\t\t\tconfidence: point.confidence,\n\t\t\t\t...fields,\n\t\t\t})\n\t\t);\n\n\t\tif (antiPoint) {\n\t\t\tmeasure.antiTokens.push(\n\t\t\t\tnew Token({\n\t\t\t\t\tid: antiPoint.id,\n\t\t\t\t\ttype,\n\t\t\t\t\tx,\n\t\t\t\t\ty: antiPoint.y,\n\t\t\t\t\tconfidence: antiPoint.confidence,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\n\tappendFlags(flags: SemanticPoint[], stems: Stem[]): void {\n\t\t//console.log(\"flags:\", flags);\n\t\tconst stemGroups = stems\n\t\t\t.map((stem) => ({\n\t\t\t\t...stem,\n\t\t\t\tflags: flags.filter((flag) => Math.abs(flag.x - stem.x) < 0.3 && flag.y > stem.y1 - 0.5 && flag.y < stem.y2 + 0.5),\n\t\t\t}))\n\t\t\t.filter((group) => group.flags.length);\n\n\t\tstemGroups.forEach((group) => {\n\t\t\tconst mainFlag = group.flags.reduce((main, flag) => (main && main.confidence > flag.confidence ? main : flag), null);\n\n\t\t\t//const upDistance = mainFlag.y - group.y1;\n\t\t\t//const downDistance = group.y2 - mainFlag.y;\n\t\t\t//const downward = downDistance < upDistance;\n\t\t\tconst downward = group.direction === 'd';\n\n\t\t\tconst tailY = downward ? Math.min(group.y2, group.y1 + STEM_LENGTH_MAX) : Math.max(group.y1, group.y2 - STEM_LENGTH_MAX);\n\n\t\t\tconst flagTips = group.flags.map((flag) => ({\n\t\t\t\ttip: (tailY - flag.y) * (downward ? 1 : -1),\n\t\t\t\tconfidence: flag.confidence,\n\t\t\t}));\n\t\t\tconst count = flagTips.filter((f) => f.tip < 2 || f.confidence > mainFlag.confidence * 0.7).length;\n\n\t\t\tconst type = TokenFlags[count - 1];\n\t\t\tif (type) {\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: group.flags[0].id,\n\t\t\t\t\t\tx: group.x,\n\t\t\t\t\t\ty: tailY,\n\t\t\t\t\t\tconfidence: Math.min(...group.flags.map((flag) => flag.confidence)),\n\t\t\t\t\t},\n\t\t\t\t\t{ type }\n\t\t\t\t);\n\t\t\t\t//console.log(\"flag:\", type);\n\t\t\t}\n\t\t});\n\t}\n\n\tclearTokens(): void {\n\t\tthis.measures.forEach((measure) => (measure.tokens = []));\n\t\tthis.semantics = [];\n\t}\n\n\tclearPredictedTokens(): void {\n\t\tthis.measures.forEach((measure) => (measure.tokens = measure.tokens.filter((token) => !token.isPredicted)));\n\t}\n}\n\nclass System extends SimpleClass {\n\tstatic className = 'System';\n\tstatic blackKeys = ['index', 'pageIndex', 'prev', 'next', 'headMeasureIndex', 'tokens', 'indent'];\n\n\tindex?: number;\n\tpageIndex?: number;\n\tprev?: System;\n\tnext?: System;\n\theadMeasureIndex?: number; // zero based\n\n\t// in units\n\tleft: number;\n\ttop: number;\n\twidth: number;\n\tindent: boolean;\n\n\tmeasureCount: number;\n\tstaves: Staff[];\n\n\tmeasureBars: number[];\n\n\tbackgroundImage: string;\n\timagePosition: Rect;\n\n\tsemantics: SemanticPoint[];\n\ttokens?: Token[];\n\n\tsidBlackList: string[];\n\tsidWhiteList: string[];\n\n\tdisplacementSemantics?: { [id: string]: Partial };\n\n\tstaffMaskChanged: number;\n\tbracketsAppearance: string; // the staff layout code by prediction\n\n\tconstructor({ stavesCount, ...fields }: any) {\n\t\tsuper();\n\t\tsuper.assign(fields);\n\n\t\tif (!this.measureBars) {\n\t\t\tconst HEAD_WIDTH = 5;\n\t\t\tconst segmentLength = (this.width - HEAD_WIDTH) / this.measureCount;\n\t\t\tthis.measureBars = Array(this.measureCount)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => HEAD_WIDTH + segmentLength * (i + 1));\n\t\t}\n\n\t\tif (!fields.staves && stavesCount)\n\t\t\tthis.staves = Array(stavesCount)\n\t\t\t\t.fill(null)\n\t\t\t\t.map(() => new Staff({ measureBars: this.measureBars }));\n\n\t\tthis.arrangePosition();\n\n\t\tthis.measureCount = this.measureCount || this.measureBars.length;\n\n\t\tthis.sidBlackList = this.sidBlackList || [];\n\t\tthis.sidWhiteList = this.sidWhiteList || [];\n\t}\n\n\tget noteRange(): { top: number; bottom: number } {\n\t\tif (!this.staves.length) return null;\n\n\t\tconst staffTop = this.staves[0];\n\t\tconst staffBottom = this.staves[this.staves.length - 1];\n\n\t\treturn {\n\t\t\ttop: staffTop.top + staffTop.staffY + staffTop.noteRange.top,\n\t\t\tbottom: staffBottom.top + staffBottom.staffY + staffBottom.noteRange.bottom,\n\t\t};\n\t}\n\n\tget staffPositions(): StaffPosition[] {\n\t\treturn this.staves.map((staff) => ({\n\t\t\ty: staff.top + staff.staffY,\n\t\t\tradius: 2,\n\t\t}));\n\t}\n\n\tget staffMask(): number {\n\t\tif (this.staffMaskChanged) return this.staffMaskChanged;\n\n\t\tif (this.prev && this.staves.length === this.prev.staves.length) return this.prev.staffMask;\n\n\t\treturn 2 ** this.staves.length - 1;\n\t}\n\n\tget staffTop(): number {\n\t\tconst positions = this.staffPositions;\n\t\treturn positions.length ? positions[0].y - positions[0].radius : 0;\n\t}\n\n\tget staffBottom(): number {\n\t\tconst positions = this.staffPositions;\n\t\treturn positions.length ? positions[positions.length - 1].y + positions[positions.length - 1].radius : 0;\n\t}\n\n\tarrangePosition(): void {\n\t\tlet y = 0;\n\t\tfor (const staff of this.staves) {\n\t\t\tif (Number.isFinite(staff.top)) break;\n\n\t\t\tstaff.top = y;\n\t\t\ty += staff.height;\n\t\t}\n\t}\n\n\ttidyMeasureBars(): void {\n\t\tthis.measureBars = this.measureBars.filter((x) => x > 1);\n\t\tthis.measureBars.sort((b1, b2) => b1 - b2);\n\n\t\tconst restWidth = this.width - this.measureBars[this.measureBars.length - 1];\n\t\tif (restWidth > 12) this.measureBars.push(this.width);\n\t\telse if (restWidth < 2) this.measureBars[this.measureBars.length - 1] = this.width;\n\n\t\tthis.measureBars = this.measureBars.filter((x, i) => i < 1 || x - this.measureBars[i - 1] > 4);\n\t}\n\n\trearrangeMeasures(): void {\n\t\tthis.measureCount = this.measureBars.length;\n\t\tthis.staves.forEach((staff) => staff.rearrangeMeasures(this.measureBars));\n\t}\n\n\tget height(): number {\n\t\treturn this.staves.reduce((height, staff) => height + staff.height, 0);\n\t}\n\n\tget connectionLine(): { top: number; bottom: number } {\n\t\tconst staffHead = this.staves[0];\n\t\tconst staffTail = this.staves[this.staves.length - 1];\n\n\t\treturn (\n\t\t\tstaffHead && {\n\t\t\t\ttop: staffHead.top + staffHead.staffY - 2,\n\t\t\t\tbottom: staffTail.top + staffTail.staffY + 2,\n\t\t\t}\n\t\t);\n\t}\n\n\tget middleY(): number {\n\t\tif (!this.staves.length) return 0;\n\n\t\tconst sum = this.staves.reduce((sum, staff) => sum + staff.top + staff.staffY, 0);\n\n\t\treturn sum / this.staves.length;\n\t}\n\n\tget timeSignatureOnHead(): boolean {\n\t\treturn this.staves.some((staff) => staff.measures[0]?.tokens.some((token) => TokenTimesigs.includes(token.type)));\n\t}\n\n\t// an array staff or null on every position of full staff layout\n\tgetStaffArray(stavesCount: number): Staff[] {\n\t\tlet si = 0;\n\n\t\treturn Array(stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, i) => {\n\t\t\t\tconst on = this.staffMask & (1 << i);\n\t\t\t\tconst staff = on ? this.staves[si++] : null;\n\t\t\t\tconsole.assert(!on || staff, 'system staves count is less than staff mask declared:', this.staves.length, this.staffMask.toString(2));\n\n\t\t\t\treturn staff;\n\t\t\t});\n\t}\n\n\t// measureIndex: the local measure index\n\tgetMarksInMeasure(measureIndex: number): MarkTerm[] {\n\t\tconsole.assert(measureIndex < this.measureBars.length, 'measure index out of range:', measureIndex, this.measureBars.length);\n\n\t\tconst left = measureIndex > 0 ? this.measureBars[measureIndex - 1] : 0;\n\t\tconst right = this.measureBars[measureIndex];\n\n\t\tconst tempoTokens = (this.tokens ?? []).filter(\n\t\t\t(token) => token.x >= left && token.x < right && token instanceof TextToken && token.textType === TextType.TempoNumeral\n\t\t) as TextToken[];\n\n\t\treturn [...tempoTokens.map((token) => TempoTerm.fromNumeralText(token.text)).filter(Boolean)];\n\t}\n\n\tgetEvents(stavesCount: number): EventSystem {\n\t\tconsole.assert(Number.isInteger(this.headMeasureIndex), 'invalid headMeasureIndex:', this.headMeasureIndex);\n\n\t\t// Empty system (no measureBars / no staves with measures): return empty result\n\t\tif (!this.measureBars?.length && this.staves.every((s) => !s.measures?.length)) {\n\t\t\treturn { staffMask: this.staffMask, columns: [] };\n\t\t}\n\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: [] as EventTerm[],\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure) => {\n\t\t\t\tconst events = measure.getEvents();\n\t\t\t\tmeasure.assignAccessoriesOnEvents(events);\n\t\t\t\tmeasure.assignFeaturesOnEvents(events, staff.semantics);\n\n\t\t\t\treturn {\n\t\t\t\t\tevents: events.map(\n\t\t\t\t\t\t(event) =>\n\t\t\t\t\t\t\tnew EventTerm({\n\t\t\t\t\t\t\t\tstaff: staff.index,\n\t\t\t\t\t\t\t\tsystem: this.index,\n\t\t\t\t\t\t\t\t...event,\n\t\t\t\t\t\t\t\trest: event.rest ? 'r' : null,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t\tcontexts: measure.getContexts({ staff: staff.index }),\n\t\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\t\talternative: measure.alternative,\n\t\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\n\t\t// supplement time signatures for empty staves\n\t\tfor (let mi = 0; mi < this.measureCount; ++mi) {\n\t\t\tconst tsRows = rows.map((row) => row[mi]?.contexts?.filter((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type)));\n\t\t\tconst timeSigs = tsRows.find((row) => row?.length);\n\t\t\tif (timeSigs) {\n\t\t\t\trows.forEach((row) => {\n\t\t\t\t\tif (row[mi] && !row[mi].contexts.length && !row[mi].events.length) row[mi].contexts.push(...timeSigs);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//onst measureStartXs = [0, ...this.measureBars];\n\n\t\tconst columns = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map(\n\t\t\t\t(_, i): EventMeasureColumn => ({\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + i,\n\t\t\t\t\t//startX: measureStartXs[i],\n\t\t\t\t\t//width: measureWidths[i],\n\t\t\t\t\trows: rows.map((row) => row[i]),\n\t\t\t\t\tmarks: this.getMarksInMeasure(i),\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\tvoltaBegin: rows.some((row) => row[i]?.voltaBegin),\n\t\t\t\t\tvoltaEnd: rows.some((row) => row[i]?.voltaEnd),\n\t\t\t\t\talternative: rows.some((row) => row[i]?.alternative),\n\t\t\t\t\tbarTypes: rows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row[i]?.barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t);\n\t\t//columns.forEach(computeMeasureTicks);\n\n\t\t// assign id on column events\n\t\tcolumns.forEach((column) => {\n\t\t\tconst events = [].concat(...column.rows.filter(Boolean).map((row) => row.events));\n\t\t\tevents.forEach((event, i) => (event.id = i + 1));\n\t\t});\n\n\t\tconst lastColumn = columns[columns.length - 1];\n\t\tif (lastColumn) lastColumn.break = true;\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\tgetEventsFunctional(stavesCount: number, ev: ChordsFeeder, processors: ColumnProcessor[] = [], { useXMap = false } = {}): EventSystem {\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff, si) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: [] as EventTerm[],\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure, mi) => {\n\t\t\t\tconst events = ev(si, mi);\n\n\t\t\t\treturn (\n\t\t\t\t\tevents && {\n\t\t\t\t\t\tevents: events.map(\n\t\t\t\t\t\t\t(event) =>\n\t\t\t\t\t\t\t\tnew EventTerm({\n\t\t\t\t\t\t\t\t\tsystem: this.index,\n\t\t\t\t\t\t\t\t\t...event,\n\t\t\t\t\t\t\t\t\trest: event.rest ? 'r' : null,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcontexts: measure.getContexts({ staff: si }),\n\t\t\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\t\t\talternative: measure.alternative,\n\t\t\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//const measureStartXs = [0, ...this.measureBars];\n\n\t\t// [measure, staff]\n\t\tconst columns: EventMeasureColumn[] = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, mi) => {\n\t\t\t\tconst localRows = rows.map((row) => row[mi]);\n\t\t\t\tif (localRows.some((row) => !row)) return null;\n\n\t\t\t\tlet xMap: Map = null;\n\t\t\t\tif (useXMap) {\n\t\t\t\t\tconst events: EventTerm[] = [].concat(...localRows.map((row) => row.events));\n\t\t\t\t\tconst groupMap: { [group: number]: EventTerm[] } = events.reduce((map, event) => {\n\t\t\t\t\t\tif (Number.isFinite(event.tickGroup)) map[event.tickGroup] = map[event.tickGroup] || [];\n\t\t\t\t\t\tmap[event.tickGroup].push(event);\n\n\t\t\t\t\t\treturn map;\n\t\t\t\t\t}, {});\n\n\t\t\t\t\txMap = Object.values(groupMap).reduce((map, events) => {\n\t\t\t\t\t\tconst x = Math.min(...events.map((event) => (event.left + event.right) / 2));\n\t\t\t\t\t\tmap.set(x, events);\n\n\t\t\t\t\t\treturn map;\n\t\t\t\t\t}, new Map());\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + mi,\n\t\t\t\t\t//startX: measureStartXs[mi],\n\t\t\t\t\t//width: measureWidths[mi],\n\t\t\t\t\trows: localRows, // [staff]\n\t\t\t\t\tmarks: this.getMarksInMeasure(mi),\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\txMap,\n\t\t\t\t\tvoltaBegin: localRows.some((row) => row.voltaBegin),\n\t\t\t\t\tvoltaEnd: localRows.some((row) => row.voltaEnd),\n\t\t\t\t\talternative: localRows.some((row) => row.alternative),\n\t\t\t\t\tbarTypes: localRows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row.barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t});\n\t\tprocessors.forEach((proc) => columns.forEach(proc));\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\t// get EventSystem contains only contexted terms\n\tgetContexts(stavesCount: number): EventSystem {\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: null,\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure) => ({\n\t\t\t\tevents: null,\n\t\t\t\tcontexts: measure.getContexts(),\n\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\talternative: rows.some((row) => row.alternative),\n\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t}));\n\t\t});\n\n\t\t// supplement time signatures for empty staves\n\t\tfor (let mi = 0; mi < this.measureCount; ++mi) {\n\t\t\tconst tsRows = rows.map((row) => row[mi]?.contexts.filter((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type)));\n\t\t\tconst timeSigs = tsRows.find((row) => row?.length);\n\t\t\tif (timeSigs) {\n\t\t\t\trows.forEach((row) => {\n\t\t\t\t\tif (!row[mi].contexts.length) row[mi].contexts.push(...timeSigs);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//const measureStartXs = [0, ...this.measureBars];\n\n\t\tconst columns = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map(\n\t\t\t\t(_, i): EventMeasureColumn => ({\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + i,\n\t\t\t\t\t//startX: measureStartXs[i],\n\t\t\t\t\t//width: measureWidths[i],\n\t\t\t\t\trows: rows.map((row) => row[i]),\n\t\t\t\t\tmarks: [],\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\tvoltaBegin: rows.some((row) => row[i].voltaBegin),\n\t\t\t\t\tvoltaEnd: rows.some((row) => row[i].voltaEnd),\n\t\t\t\t\talternative: rows.some((row) => row.alternative),\n\t\t\t\t\tbarTypes: rows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row[i].barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t);\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\tassignSemantics(staffIndex: number, graph: SemanticGraph): void {\n\t\tconst staff = this.staves[staffIndex];\n\t\tconsole.assert(staff, 'staff is null:', staffIndex, this.staves);\n\t\tconst oy = staff.top + staff.staffY;\n\n\t\tgraph.getSystemPoints().forEach((point) => {\n\t\t\tconst p = { ...point };\n\t\t\tp.y += oy;\n\n\t\t\tif (p.extension) {\n\t\t\t\tp.extension = { ...p.extension };\n\t\t\t\tif (Number.isFinite(p.extension.y1)) {\n\t\t\t\t\tp.extension.y1 += oy;\n\t\t\t\t\tp.extension.y2 += oy;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.semantics.push(p);\n\t\t});\n\t}\n\n\t// generate tokens from semantics\n\tassemble(threshold: number, logger: Logger = new DummyLogger()): void {\n\t\t//console.log(\"System.assignSemantics:\", graph);\n\t\tthis.measureBars = [];\n\n\t\tif (!this.semantics) return;\n\n\t\tconst graph = SemanticGraph.fromPoints(this.semantics);\n\n\t\tconst bars = graph.getConfidentLayer(SemanticType.vline_BarMeasure, threshold);\n\t\tbars.sort((b1, b2) => b1.x - b2.x);\n\n\t\tconst staffTop = this.staffTop;\n\t\tconst staffBottom = this.staffBottom;\n\n\t\tconst MERGE_WINDOW = 0.4;\n\t\tlet lastX = 0;\n\t\tconst barColumns: { [key: number]: number } = bars.reduce((columns, bar) => {\n\t\t\tconst confidence = Number.isFinite(bar.confidence) ? Math.tanh(bar.confidence) : 1;\n\n\t\t\tconst x = bar.x - lastX > MERGE_WINDOW ? bar.x : lastX;\n\t\t\tlastX = bar.x;\n\t\t\tlet intensity = columns[x] || 0;\n\t\t\tintensity += (Math.min(bar.extension.y2, staffBottom) - Math.max(bar.extension.y1, staffTop)) * confidence;\n\n\t\t\tif (bar.x !== x) delete columns[x];\n\t\t\tcolumns[bar.x] = intensity;\n\n\t\t\treturn columns;\n\t\t}, {});\n\t\tconst barXs: number[] = Object.entries(barColumns)\n\t\t\t.filter(([x, intensity]) => (void x, intensity > 3 * this.staves.length))\n\t\t\t.map(([x]) => Number(x));\n\t\tbarXs.sort((x1, x2) => x1 - x2);\n\t\tbarXs.forEach((x, i) => {\n\t\t\tif (i <= 0 || x - barXs[i - 1] > 2) this.measureBars.push(x);\n\t\t});\n\n\t\tif (!this.measureBars.length) this.measureBars.push(this.width);\n\n\t\tthis.tidyMeasureBars();\n\t\tthis.rearrangeMeasures();\n\n\t\t// measure bar type\n\t\tconst typeBars = this.semantics.filter((point) => [SemanticType.vline_BarTerminal, SemanticType.vline_BarSegment].includes(point.semantic));\n\t\ttypeBars.forEach((bar) => {\n\t\t\tconst measure = this.staves[0].measures.find((measure) => bar.x > measure.right - 2 && bar.x < measure.right + 1);\n\t\t\tif (measure) {\n\t\t\t\tconst type = bar.semantic.replace(/^vline_Bar/, '');\n\t\t\t\tmeasure.barTypes[type] = measure.barTypes[type] || 0;\n\t\t\t\tmeasure.barTypes[type] += bar.confidence;\n\t\t\t}\n\t\t});\n\n\t\tlet staffIndex = 0;\n\t\tconst staffMask = this.staffMask;\n\t\tthis.staves.forEach((staff, si) => {\n\t\t\t// staff index\n\t\t\twhile (!(staffMask & (1 << staffIndex))) ++staffIndex;\n\t\t\tstaff.index = staffIndex++;\n\n\t\t\t// assign semantic boundaries\n\t\t\tif (si === 0) staff.semanticTop = -staff.staffY;\n\t\t\telse {\n\t\t\t\tconst prevStaff = this.staves[si - 1];\n\t\t\t\tstaff.semanticTop = prevStaff.top + prevStaff.staffY + 3 - (staff.top + staff.staffY);\n\t\t\t}\n\n\t\t\tif (si < this.staves.length - 1) {\n\t\t\t\tconst nextStaff = this.staves[si + 1];\n\t\t\t\tstaff.semanticBottom = nextStaff.top + nextStaff.staffY - 3 - (staff.top + staff.staffY);\n\t\t\t} else staff.semanticBottom = this.height - (staff.top + staff.staffY);\n\n\t\t\tif (staff.semantics && staff.semantics.length) {\n\t\t\t\tstaff.semantics.forEach((point) => hashSemanticPoint(this.index, si, point));\n\n\t\t\t\tstaff.clearPredictedTokens();\n\t\t\t\tstaff.assemble(threshold, this, logger);\n\t\t\t}\n\t\t});\n\t}\n\n\tqualifiedSemantics(semantics: SemanticPoint[], threshold: number = 1): SemanticPoint[] {\n\t\treturn semantics\n\t\t\t.filter(\n\t\t\t\t(p) => this.sidWhiteList.includes(p.id) || (!this.sidBlackList.includes(p.id) && (p.confidence >= threshold || !Number.isFinite(p.confidence)))\n\t\t\t)\n\t\t\t.map((point) => {\n\t\t\t\t// displace semantic point\n\t\t\t\tif (this.displacementSemantics && this.displacementSemantics[point.id]) return { ...point, ...this.displacementSemantics[point.id] };\n\n\t\t\t\treturn point;\n\t\t\t});\n\t}\n\n\tclearTokens(): void {\n\t\tthis.staves.forEach((staff) => staff.clearTokens());\n\t\tthis.semantics = [];\n\t}\n\n\tnewPoint(staffIndex: number, data: SemanticPoint, threshold: number = 1): SemanticPoint {\n\t\tconst staff = this.staves[staffIndex];\n\t\tconsole.assert(staff, 'staff index out of bound:', staffIndex, this.staves.length);\n\n\t\tconst { semantic, x, y, confidence = 0, extension = null } = data;\n\t\tconst point = { semantic, x, y, confidence, extension };\n\t\tif (!point.extension) delete point.extension;\n\n\t\thashSemanticPoint(this.index, staffIndex, point);\n\t\tstaff.semantics.push(point);\n\t\tstaff.clearPredictedTokens();\n\t\tstaff.assemble(threshold, this);\n\n\t\treturn point;\n\t}\n\n\tappendToken(token: TextToken): void {\n\t\tthis.tokens.push(token);\n\n\t\tswitch (token.textType) {\n\t\t\tcase TextType.TempoNumeral:\n\t\t\t\t{\n\t\t\t\t\t// remove noteheads in text area\n\t\t\t\t\tconst staff = this.staves[0];\n\t\t\t\t\tif (staff) {\n\t\t\t\t\t\tconst oy = staff.top + staff.staffY;\n\t\t\t\t\t\tstaff.measures.forEach((measure) => {\n\t\t\t\t\t\t\tmeasure.tokens = measure.tokens.filter(\n\t\t\t\t\t\t\t\t(t) =>\n\t\t\t\t\t\t\t\t\t!TokenNoteheads.includes(t.type) ||\n\t\t\t\t\t\t\t\t\tMath.abs(t.x - token.x) > token.width / 2 ||\n\t\t\t\t\t\t\t\t\tMath.abs(oy + t.y - token.y) > token.fontSize / 2\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase TextType.Alternation1:\n\t\t\tcase TextType.Alternation2:\n\t\t\t\t//console.log(\"appendToken:\", token, this.staves[0].measures);\n\t\t\t\tthis.staves[0].measures.forEach((measure) => {\n\t\t\t\t\tconst overlap = Math.min(measure.left + measure.width, token.x + token.width / 2) - Math.max(measure.left, token.x - token.width / 2);\n\t\t\t\t\tmeasure.alternative = measure.alternative || overlap / measure.width > 0.5;\n\t\t\t\t});\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nclass Page extends SimpleClass {\n\tstatic className = 'Page';\n\tstatic blackKeys = ['index', 'tokens'];\n\n\tindex?: number;\n\n\t// in units\n\twidth: number;\n\theight: number;\n\n\tsystems: System[];\n\n\tsource: SourceImageFile;\n\tlayout?: PageLayout;\n\n\tsemantics: SemanticPoint[];\n\ttokens?: Token[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.systems = this.systems || [];\n\n\t\tif (this.source) {\n\t\t\tthis.source.matrix = this.source.matrix || [1, 0, 0, 1, 0, 0];\n\t\t}\n\t}\n\n\tget sidBlackList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidBlackList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget sidWhiteList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidWhiteList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tclearTokens(): void {\n\t\tthis.semantics = null;\n\t\tthis.tokens = null;\n\n\t\tthis.systems.forEach((system) => (system.tokens = null));\n\t}\n\n\tassignTexts(areas: TextArea[], [imageHeight, imageWidth]: [number, number]): void {\n\t\tconst interval = this.source && this.source.interval ? this.source.interval * (imageHeight / this.source.dimensions.height) : imageHeight / this.height;\n\n\t\tthis.semantics = areas.map((area) => {\n\t\t\tconst p = {\n\t\t\t\tx: (area.cx - imageWidth / 2) / interval,\n\t\t\t\ty: (area.cy - imageHeight / 2) / interval,\n\t\t\t};\n\t\t\tconst rp = this.source && this.source.matrix ? trans23(p, this.source.matrix) : p;\n\n\t\t\treturn {\n\t\t\t\tconfidence: area.score,\n\t\t\t\tx: rp.x + this.width / 2,\n\t\t\t\ty: rp.y + this.height / 2,\n\t\t\t\tsemantic: SemanticType.rect_Text,\n\t\t\t\textension: {\n\t\t\t\t\ttext: area.text,\n\t\t\t\t\ttype: area.type,\n\t\t\t\t\twidth: area.width / interval,\n\t\t\t\t\theight: area.height / interval,\n\t\t\t\t\ttheta: area.theta,\n\t\t\t\t\ttextFeature: area.feature_dict,\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tassemble({ textAnnotations = null }: { textAnnotations?: { [id: string]: string } } = {}, logger: Logger = new DummyLogger()): void {\n\t\tthis.tokens = [];\n\t\tthis.systems.forEach((system) => (system.tokens = []));\n\n\t\t// compute system indent\n\t\tif (this.systems.length) {\n\t\t\tconst sysXs = this.systems.map((system) => system.left);\n\t\t\tconst middleX = sysXs[Math.floor((sysXs.length - 1) / 2)];\n\t\t\tthis.systems.forEach((system) => (system.indent = system.left > middleX + INDENT_THRESHOLD));\n\t\t}\n\n\t\tif (this.semantics) {\n\t\t\tconst pageName = this.source ? this.source.name : this.index.toString();\n\n\t\t\tthis.semantics.forEach((point) => {\n\t\t\t\thashPageSemanticPoint(pageName, point);\n\n\t\t\t\tconst fields = {\n\t\t\t\t\tid: point.id,\n\t\t\t\t\ttype: TokenType.Text,\n\t\t\t\t\tconfidence: point.confidence,\n\t\t\t\t\ttextType: TEXT_TYPE_ALIAS[point.extension.type] || point.extension.type,\n\t\t\t\t\ttext: (textAnnotations && textAnnotations[point.id]) || point.extension.text,\n\t\t\t\t\ttextFeasure: point.extension.textFeature,\n\t\t\t\t\twidth: point.extension.width,\n\t\t\t\t\tfontSize: point.extension.height,\n\t\t\t\t};\n\n\t\t\t\tswitch (point.semantic) {\n\t\t\t\t\tcase SemanticType.rect_Text:\n\t\t\t\t\t\tswitch (fields.textType) {\n\t\t\t\t\t\t\t// page tokens\n\t\t\t\t\t\t\tcase TextType.Title:\n\t\t\t\t\t\t\tcase TextType.Author:\n\t\t\t\t\t\t\tcase TextType.PageMargin:\n\t\t\t\t\t\t\tcase TextType.Other:\n\t\t\t\t\t\t\t\tthis.tokens.push(\n\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\tx: point.x,\n\t\t\t\t\t\t\t\t\t\ty: point.y,\n\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// tokens on the top of system\n\t\t\t\t\t\t\tcase TextType.TempoNumeral:\n\t\t\t\t\t\t\tcase TextType.Chord:\n\t\t\t\t\t\t\tcase TextType.MeasureNumber:\n\t\t\t\t\t\t\tcase TextType.Instrument:\n\t\t\t\t\t\t\tcase TextType.Alternation1:\n\t\t\t\t\t\t\tcase TextType.Alternation2:\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconst system = this.systems.find((system) => system.top + system.staffTop > point.y);\n\t\t\t\t\t\t\t\t\tif (system) {\n\t\t\t\t\t\t\t\t\t\tsystem.appendToken(\n\t\t\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\t\t\tx: point.x - system.left,\n\t\t\t\t\t\t\t\t\t\t\t\ty: point.y - system.top,\n\t\t\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// tokens in staff\n\t\t\t\t\t\t\tcase TextType.TextualMark:\n\t\t\t\t\t\t\tcase TextType.Times:\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconst system = [...this.systems].reverse().find((system) => system.top < point.y);\n\t\t\t\t\t\t\t\t\tif (system) {\n\t\t\t\t\t\t\t\t\t\tconst sy = point.y - (system.top + system.staffTop);\n\t\t\t\t\t\t\t\t\t\tconst sx = point.x - system.left;\n\t\t\t\t\t\t\t\t\t\tconst staff = system.staves.find((staff) => sy >= staff.top && sy < staff.top + staff.height);\n\t\t\t\t\t\t\t\t\t\tif (staff) {\n\t\t\t\t\t\t\t\t\t\t\tconst measure = staff.measures.find((measure) => sx >= measure.left && sx < measure.left + measure.width);\n\t\t\t\t\t\t\t\t\t\t\tif (measure) {\n\t\t\t\t\t\t\t\t\t\t\t\tmeasure.tokens.push(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tx: sx,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ty: sy,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\nexport { Measure, Staff, System, Page };\n","import { ChordColumn, Fraction } from './interfaces';\nimport { GraceType } from './term';\nimport { roundNumber } from './utils';\nimport { SimpleClass } from './aux_/typedJSON';\n\nenum SemanticElementType {\n\tBOS,\n\tPAD,\n\n\tNoteheadS0,\n\tNoteheadS1,\n\tNoteheadS2,\n\tNoteheadGrace,\n\tvline_Stem,\n\tFlag3,\n\tBeamLeft,\n\tBeamContinue,\n\tBeamRight,\n\tDot,\n\tRest0,\n\tRest1,\n\tRest2,\n\tRest3,\n\tRest4,\n\tRest5,\n\tRest6,\n\n\t// measure time signature denominators & numerators\n\tTimeD2,\n\tTimeD4,\n\tTimeD8,\n\tTimeN1,\n\tTimeN2,\n\tTimeN3,\n\tTimeN4,\n\tTimeN5,\n\tTimeN6,\n\tTimeN7,\n\tTimeN8,\n\tTimeN9,\n\tTimeN10,\n\tTimeN11,\n\tTimeN12,\n}\n\nconst TIME_SIG_DENOMINATORS = Object.fromEntries([2, 4, 8].map((n) => [n, SemanticElementType[`TimeD${n}`]]));\nconst TIME_SIG_NUMERATORS = Object.fromEntries(\n\tArray(12)\n\t\t.fill(null)\n\t\t.map((_, i) => i + 1)\n\t\t.map((n) => [n, SemanticElementType[`TimeN${n}`]])\n);\n\nconst et = SemanticElementType;\n\nconst ELEMENT_TOKEN_NAMES = {\n\t[et.BOS]: 'BOS',\n\t[et.NoteheadS0]: 'noteheads-s0',\n\t[et.NoteheadS1]: 'noteheads-s1',\n\t[et.NoteheadS2]: 'noteheads-s2',\n\t[et.NoteheadGrace]: 'GraceNotehead',\n\t[et.Flag3]: 'flags-u3',\n\t[et.BeamLeft]: 'BeamLeft',\n\t[et.BeamContinue]: 'BeamContinue',\n\t[et.BeamRight]: 'BeamRight',\n\t[et.Dot]: 'dot',\n\t[et.Rest0]: 'rests-0o',\n\t[et.Rest1]: 'rests-1o',\n\t[et.Rest2]: 'rests-2',\n\t[et.Rest3]: 'rests-3',\n\t[et.Rest4]: 'rests-4',\n\t[et.Rest5]: 'rests-5',\n\t[et.Rest6]: 'rests-6',\n};\n\nconst NOTEHEAD_BASE_DIVISION = {\n\t[et.NoteheadS0]: 0,\n\t[et.NoteheadS1]: 1,\n\t[et.NoteheadS2]: 2,\n\t[et.NoteheadGrace]: 2,\n};\n\nconst NOTEHEAD_ELEMENT_TYPES = [et.NoteheadS0, et.NoteheadS1, et.NoteheadS2, et.NoteheadGrace];\n\nconst REST_ELEMENT_TYPES = [et.Rest0, et.Rest1, et.Rest2, et.Rest3, et.Rest4, et.Rest5, et.Rest6];\n\nconst BEAM_ELEMENT_TYPES = [et.BeamLeft, et.BeamContinue, et.BeamRight];\n\nconst NOTE_ELEMENT_TYPES = [...NOTEHEAD_ELEMENT_TYPES, ...REST_ELEMENT_TYPES];\n\nconst SOURCE_ELEMENT_TYPES = [...NOTEHEAD_ELEMENT_TYPES, ...REST_ELEMENT_TYPES, et.vline_Stem];\n\nconst TARGET_ELEMENT_TYPES = [et.BOS, et.NoteheadS0, et.vline_Stem, ...REST_ELEMENT_TYPES];\n\nconst ROOT_NOTE_ELEMENT_TYPES = [...NOTE_ELEMENT_TYPES, et.vline_Stem];\n\nconst ELEMENT_TO_STEMBEAM = {\n\t[et.BeamLeft]: 'Open',\n\t[et.BeamRight]: 'Close',\n};\n\ninterface SemanticElement {\n\ttype: SemanticElementType;\n\tstaff: number;\n\tx: number;\n\ty1: number;\n\ty2: number;\n\n\tindex?: number;\n\ttick?: number;\n\tid?: string;\n}\n\ntype Matrix = number[][];\n\nconst metaElem = (type: SemanticElementType): SemanticElement => ({\n\ttype,\n\tstaff: -1,\n\tx: 0,\n\ty1: 0,\n\ty2: 0,\n});\n\nconst BOS_ELEMENT = metaElem(SemanticElementType.BOS);\n\nconst fractionToElems = (fraction: Fraction): SemanticElement[] => [\n\tmetaElem(TIME_SIG_NUMERATORS[fraction.numerator]),\n\tmetaElem(TIME_SIG_DENOMINATORS[fraction.denominator]),\n];\n\nconst argmax = (data: number[], mask: boolean[]): number => {\n\tconst values = data.filter((_, i) => mask[i]);\n\tconst max = Math.max(...values);\n\n\treturn data.findIndex((x) => x === max);\n};\n\nclass SemanticCluster extends SimpleClass {\n\tindex?: number;\n\n\telements: SemanticElement[];\n\tmatrixH?: Matrix; // matrix N x N\n\t_matrixV?: Matrix; // matrix N x N\n\tgroupsV?: number[][]; // ids array\n\tmasks?: [boolean[], boolean[], boolean[]]; // the masks for: [jointer source, jointer target, V]\n\n\tstatic elementToJSON(elem: SemanticElement): object {\n\t\tconst result: any = {\n\t\t\ttype: elem.type,\n\t\t\tstaff: elem.staff,\n\t\t\tx: elem.x,\n\t\t\ty1: elem.y1,\n\t\t\ty2: elem.y2,\n\t\t};\n\n\t\tif (elem.id) result.id = elem.id;\n\n\t\treturn result;\n\t}\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\tget sourceMask(): boolean[] {\n\t\treturn this.elements.map((elem) => SOURCE_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget targetMask(): boolean[] {\n\t\treturn this.elements.map((elem) => TARGET_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget vMask(): boolean[] {\n\t\treturn this.elements.map((elem) => ROOT_NOTE_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget compactMatrixH(): Matrix {\n\t\tif (!this.matrixH) return null;\n\n\t\tconst sourceMask = this.sourceMask;\n\t\tconst targetMask = this.targetMask;\n\n\t\treturn this.matrixH.filter((_, i) => sourceMask[i]).map((row) => row.filter((_, j) => targetMask[j]));\n\t}\n\n\tset compactMatrixH(value: Matrix) {\n\t\tthis.matrixH = expandMatrixByMasks([].concat(...value), [this.sourceMask, this.targetMask]);\n\t}\n\n\tget compactMatrixV(): number[] {\n\t\tif (!this._matrixV) return null;\n\n\t\tconst vMask = this.vMask;\n\n\t\tconst matrix = this._matrixV.filter((_, i) => vMask[i]).map((row) => row.filter((_, j) => vMask[j]));\n\n\t\treturn [].concat(...matrix.map((row, i) => row.slice(0, i)));\n\t}\n\n\tset compactMatrixV(value: number[]) {\n\t\tthis.matrixV = value && expandMatrixByMaskTriu(value, this.vMask);\n\t}\n\n\tget matrixV(): Matrix {\n\t\treturn this.groupsV && matrixFromGroups(this.elements.length, this.groupsV);\n\t}\n\n\tset matrixV(value: Matrix) {\n\t\tif (!value) {\n\t\t\tthis.groupsV = null;\n\t\t\tthis._matrixV = value;\n\t\t\treturn;\n\t\t}\n\n\t\tconst THRESHOLD = 0.5;\n\n\t\tconst groups: number[][] = [];\n\t\tconst vMask = value.map((row, i) => row.some(Number.isFinite) || value.some((row) => Number.isFinite(row[i])));\n\n\t\tvalue.forEach((row, i) => {\n\t\t\tif (vMask[i]) {\n\t\t\t\tlet found = false;\n\n\t\t\t\tfor (let j = 0; j < i; ++j) {\n\t\t\t\t\tconst cell = row[j];\n\t\t\t\t\tif (cell >= THRESHOLD) {\n\t\t\t\t\t\tconst g = groups.findIndex((group) => group.includes(j));\n\t\t\t\t\t\tgroups[g].push(i);\n\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!found) groups.push([i]);\n\t\t\t}\n\t\t});\n\n\t\tthis.groupsV = groups;\n\t\tthis._matrixV = value;\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\t__prototype: 'SemanticCluster',\n\t\t\tindex: this.index,\n\t\t\telements: this.elements.map(SemanticCluster.elementToJSON),\n\t\t\tcompactMatrixH: this.compactMatrixH,\n\t\t\tcompactMatrixV: this.compactMatrixV,\n\t\t\t//groupsV: this.groupsV,\n\t\t};\n\t}\n\n\tstatic mapMatrix(matrix: number[][], x2i: number[], i2x: number[]): number[][] {\n\t\tconst rows = x2i.reduce((rows, i, x) => {\n\t\t\tif (rows[i]) rows[i] = rows[i].map((v, xi) => (v + matrix[x][xi] ? 1 : 0));\n\t\t\telse rows[i] = matrix[x];\n\n\t\t\treturn rows;\n\t\t}, [] as number[][]);\n\n\t\treturn rows.map((row) => i2x.map((x) => row[x]));\n\t}\n\n\tmergeOverlapping() {\n\t\tconst overlaps = this.overlappedNoteheads();\n\t\tif (overlaps.length) {\n\t\t\tconst x2i = this.elements.map((_, index) => {\n\t\t\t\tconst pair = overlaps.find((ij) => index === ij[1]);\n\t\t\t\tconst i = pair ? pair[0] : index;\n\n\t\t\t\treturn i - overlaps.filter((ij) => ij[1] < i).length;\n\t\t\t});\n\t\t\tconst i2x = Array(this.elements.length - overlaps.length)\n\t\t\t\t.fill(null)\n\t\t\t\t.map((_, i) => x2i.findIndex((ii) => ii === i));\n\n\t\t\tthis.elements = i2x.map((x) => this.elements[x]);\n\t\t\tconsole.assert(this.elements.every(Boolean), 'null element found:', this, x2i, i2x);\n\n\t\t\tthis.matrixH = SemanticCluster.mapMatrix(this.matrixH, x2i, i2x);\n\t\t\tthis.groupsV = this.groupsV.map((group) => Array.from(new Set(group.map((x) => x2i[x]))));\n\t\t}\n\t}\n\n\toverlappedNoteheads(): [number, number][] {\n\t\tconst indices = [];\n\n\t\tconst noteheads = this.elements.filter((elem) => NOTEHEAD_ELEMENT_TYPES.includes(elem.type));\n\t\tfor (let i = 0; i < noteheads.length; ++i) {\n\t\t\tconst nh1 = noteheads[i];\n\t\t\tfor (let j = i + 1; j < noteheads.length; ++j) {\n\t\t\t\tconst nh2 = noteheads[j];\n\t\t\t\tif ((nh1.x - nh2.x) * (nh1.x - nh2.x) + (nh1.y1 - nh2.y1) * (nh1.y1 - nh2.y1) < 0.2 ** 2) indices.push([nh1.index, nh2.index]);\n\t\t\t}\n\t\t}\n\n\t\treturn indices;\n\t}\n\n\tgetEvents(): ChordColumn[] {\n\t\tconsole.assert(this.matrixH, '[SemanticCluster.getEvents]\tmatrixH is null.');\n\n\t\tconst NOTE_STEM_CONFIDENCE = 0.5;\n\n\t\tconst ids = Array(this.elements.length)\n\t\t\t.fill(null)\n\t\t\t.map((_, index) => index);\n\n\t\tconst targetMask = this.masks ? this.masks[1] : ids.map((id) => TARGET_ELEMENT_TYPES.includes(this.elements[id].type));\n\n\t\t//const stems = ids.filter(i => this.elements[i].type === et.vline_Stem);\n\t\tconst stemMasks = ids.map((id) => this.elements[id].type === et.vline_Stem && this.elements[id].y2 - this.elements[id].y1 > 2); // TODO: sift out too short stems by rectification model\n\t\tconst stemNotes = ids.filter((i) => [et.NoteheadS1, et.NoteheadS2, et.NoteheadGrace].includes(this.elements[i].type));\n\t\tconst s0s = ids.filter((i) => this.elements[i].type === et.NoteheadS0);\n\t\tconst subS0Masks = ids.map(() => false);\n\n\t\t// root elements: top NoteheadS0, Rests, stem with noteheads\n\t\tconst stemMap: { [stem: number]: number[] } = {};\n\t\tstemNotes.forEach((id) => {\n\t\t\tconst note = this.elements[id];\n\t\t\tconst stems = ids\n\t\t\t\t.filter((i) => stemMasks[i])\n\t\t\t\t.filter((stemId) => this.elements[stemId].y1 - 0.5 < note.y1 && this.elements[stemId].y2 + 0.5 > note.y1) // filter by stem Y range\n\t\t\t\t.sort((i1, i2) => this.matrixH[id][i2] - this.matrixH[id][i1]) // sort by confidence\n\t\t\t\t.slice(0, 2)\n\t\t\t\t.filter((i, ii) => ii === 0 || this.matrixH[id][i] >= NOTE_STEM_CONFIDENCE);\n\t\t\tstems.forEach((stem) => {\n\t\t\t\tstemMap[stem] = stemMap[stem] || [];\n\t\t\t\tstemMap[stem].push(id);\n\t\t\t});\n\t\t});\n\n\t\ts0s.forEach((id) => {\n\t\t\tconst s0 = this.elements[id];\n\t\t\tconst prevId = argmax(this.matrixH[id], targetMask);\n\t\t\tconst prev = this.elements[prevId];\n\t\t\tif (prev.type === et.NoteheadS0 && Math.abs(s0.x - prev.x) < 2.6) {\n\t\t\t\tsubS0Masks[id] = true;\n\t\t\t\tstemMap[prevId] = stemMap[prevId] || [prevId];\n\t\t\t\tstemMap[prevId].push(id);\n\t\t\t} else stemMap[id] = stemMap[id] || [id];\n\t\t});\n\n\t\t// setup linkings\n\t\tconst linkings: { [key: number]: number } = {};\n\n\t\tconst roots = ids.filter((id) => stemMap[id] || REST_ELEMENT_TYPES.includes(this.elements[id].type));\n\t\troots.sort((i1, i2) => this.elements[i1].x - this.elements[i2].x); // traverse roots from left to right later\n\n\t\tconst parentMasks = ids.map((id) => id === et.BOS);\n\t\troots.forEach((id) => {\n\t\t\tconst parentId = argmax(this.matrixH[id], parentMasks);\n\t\t\tlinkings[id] = parentId;\n\n\t\t\tif (parentId && !REST_ELEMENT_TYPES.includes(this.elements[parentId].type)) parentMasks[parentId] = false;\n\n\t\t\tparentMasks[id] = true;\n\t\t});\n\t\t//console.log(\"topology:\", stemMap, linkings);\n\n\t\tconst dots = this.elements.filter((elem) => elem.type === et.Dot);\n\t\tconst flags = this.elements.filter((elem) => elem.type === et.Flag3);\n\t\tconst beams = this.elements.filter((elem) => BEAM_ELEMENT_TYPES.includes(elem.type));\n\n\t\tconst groupsV = this.groupsV;\n\n\t\treturn roots\n\t\t\t.map((rootId): ChordColumn => {\n\t\t\t\tconst root = this.elements[rootId];\n\n\t\t\t\tconst tickGroup = groupsV ? groupsV.findIndex((group) => group.includes(rootId)) : null;\n\n\t\t\t\tif (REST_ELEMENT_TYPES.includes(root.type)) {\n\t\t\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > root.x + 0.5 && dot.x < root.x + 0.75 + 1.2 && dot.y1 > root.y1 - 1 && dot.y1 < root.y1);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tleft: root.x - 0.75,\n\t\t\t\t\t\tright: root.x + 0.75,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\trest: true,\n\t\t\t\t\t\tys: [root.y1],\n\t\t\t\t\t\tnoteIds: [root.id],\n\t\t\t\t\t\tdots: nearbyDots.length,\n\t\t\t\t\t\tdivision: root.type - et.Rest0,\n\t\t\t\t\t\tstemDirection: null,\n\t\t\t\t\t\tid: rootId,\n\t\t\t\t\t\tprevId: linkings[rootId],\n\t\t\t\t\t\tstaff: root.staff,\n\t\t\t\t\t\ttickGroup,\n\t\t\t\t\t};\n\t\t\t\t} else if (stemMap[rootId]) {\n\t\t\t\t\tconst subNotes = stemMap[rootId].map((id) => this.elements[id]);\n\t\t\t\t\tconst left = Math.min(...subNotes.map((n) => n.x - 0.7));\n\t\t\t\t\tconst right = Math.max(...subNotes.map((n) => n.x + 0.7));\n\t\t\t\t\tsubNotes.sort((n1, n2) => n2.y1 - n1.y1);\n\n\t\t\t\t\tconst ys = subNotes.map((note) => note.y1);\n\n\t\t\t\t\tconst noteIds = subNotes.map((note) => note.id);\n\n\t\t\t\t\tconst top = ys[0];\n\t\t\t\t\tconst bottom = ys[ys.length - 1];\n\n\t\t\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > right && dot.x < right + 1.2 && dot.y1 > top - 1 && dot.y1 < bottom + 0.5);\n\t\t\t\t\tconst dotGroups: { [key: number]: SemanticElement[] } = nearbyDots.reduce((groups, dot) => {\n\t\t\t\t\t\tconst y = roundNumber(dot.y1, 0.5);\n\t\t\t\t\t\tgroups[y] = groups[y] || [];\n\t\t\t\t\t\tgroups[y].push(dot);\n\n\t\t\t\t\t\treturn groups;\n\t\t\t\t\t}, {});\n\t\t\t\t\tconst dotValue = Math.max(...Object.values(dotGroups).map((group) => group.length), 0);\n\n\t\t\t\t\tlet division = NOTEHEAD_BASE_DIVISION[subNotes[0].type];\n\n\t\t\t\t\tlet stemDirection = null;\n\t\t\t\t\tlet beam: string = null;\n\t\t\t\t\tlet tip = null;\n\t\t\t\t\tif (root.type === et.vline_Stem) {\n\t\t\t\t\t\tconst topTip = top - root.y1;\n\t\t\t\t\t\tconst bottomTip = root.y2 - bottom;\n\t\t\t\t\t\tstemDirection = topTip > bottomTip ? 'u' : 'd';\n\n\t\t\t\t\t\ttip = { x: root.x, y: stemDirection === 'u' ? root.y1 : root.y2 };\n\n\t\t\t\t\t\tif (division === 2) {\n\t\t\t\t\t\t\tconst flagRange = stemDirection === 'u' ? [root.y1 - 0.4, root.y2 - 1] : [root.y1 + 1, root.y2 + 0.4];\n\t\t\t\t\t\t\tconst nearbyFlags = flags.filter((flag) => Math.abs(flag.x - root.x) < 0.2 && flag.y1 > flagRange[0] && flag.y1 < flagRange[1]);\n\t\t\t\t\t\t\tdivision += nearbyFlags.length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//const tipY = stemDirection === \"u\" ? root.y1 : root.y2;\n\t\t\t\t\t\tconst tipRange = stemDirection === 'u' ? [root.y1 - 0.2, root.y1 + 0.9] : [root.y2 - 0.9, root.y2 + 0.2];\n\t\t\t\t\t\tconst beamElem = beams.find((beam) => Math.abs(beam.x - root.x) < 0.2 && beam.y1 > tipRange[0] && beam.y1 < tipRange[1]);\n\t\t\t\t\t\tbeam = beamElem ? ELEMENT_TO_STEMBEAM[beamElem.type] : null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst grace = subNotes[0].type === SemanticElementType.NoteheadGrace ? GraceType.Grace : null;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\tright,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\tys,\n\t\t\t\t\t\ttip,\n\t\t\t\t\t\tnoteIds,\n\t\t\t\t\t\tdivision,\n\t\t\t\t\t\tdots: dotValue,\n\t\t\t\t\t\trest: false,\n\t\t\t\t\t\tstemDirection,\n\t\t\t\t\t\tbeam,\n\t\t\t\t\t\tid: rootId,\n\t\t\t\t\t\tprevId: linkings[rootId],\n\t\t\t\t\t\tstaff: subNotes[0].staff,\n\t\t\t\t\t\tgrace,\n\t\t\t\t\t\ttickGroup,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t}\n}\n\ninterface SemanticClusterSetData {\n\tvocab?: string[];\n\tclusters: SemanticCluster[];\n}\n\nclass SemanticClusterSet {\n\tclusters: SemanticCluster[];\n\n\tconstructor(data?: SemanticClusterSetData) {\n\t\tif (data) {\n\t\t\tthis.clusters = data.clusters;\n\n\t\t\t// upgrade vocab\n\t\t\tif (data.vocab) {\n\t\t\t\tconst converts = data.vocab\n\t\t\t\t\t.map((name, i) => [i, SemanticElementType[name]])\n\t\t\t\t\t.filter(([x, y]) => x !== y)\n\t\t\t\t\t.reduce((table, [x, y]) => ((table[x] = y), table), {});\n\t\t\t\tthis.clusters.forEach((connection) =>\n\t\t\t\t\tconnection.elements.forEach((elem) => {\n\t\t\t\t\t\tif (Number.isFinite(converts[elem.type])) elem.type = converts[elem.type];\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\ttoJSON() {\n\t\tconst vocab = Object.entries(SemanticElementType)\n\t\t\t.filter((entry) => Number.isFinite(entry[1]))\n\t\t\t.map((entry) => entry[0]);\n\n\t\treturn {\n\t\t\t__prototype: 'SemanticClusterSet',\n\t\t\tvocab,\n\t\t\tclusters: this.clusters.map((c) => c.toJSON()),\n\t\t};\n\t}\n}\n\nconst expandMatrixByMasks = (matrix: number[], masks: [boolean[], boolean[]]): Matrix => {\n\tconst gen = function* (): Generator {\n\t\tfor (const x of matrix) yield x;\n\t};\n\tconst iter = gen();\n\n\tconst [maskSrc, maskTar] = masks;\n\n\treturn maskSrc.map((src) => maskTar.map((tar) => (src && tar ? iter.next().value : null)));\n};\n\nconst expandMatrixByMaskTriu = (matrix: number[], mask: boolean[]): Matrix => {\n\tconst gen = function* (): Generator {\n\t\tfor (const x of matrix) yield x;\n\t};\n\tconst iter = gen();\n\n\treturn mask.map((row, i) => mask.map((column, j) => (row && column && j < i ? iter.next().value : null)));\n};\n\nconst matrixFromGroups = (len: number, groups: number[][]): Matrix => {\n\tconst groupIds = Array(len)\n\t\t.fill(null)\n\t\t.map((_, i) => groups.findIndex((group) => group.includes(i)));\n\n\treturn Array(len)\n\t\t.fill(null)\n\t\t.map((_, i) =>\n\t\t\tArray(len)\n\t\t\t\t.fill(null)\n\t\t\t\t.map((_, j) => {\n\t\t\t\t\tif (j >= i) return null;\n\n\t\t\t\t\tconst id1 = groupIds[i];\n\t\t\t\t\tconst id2 = groupIds[j];\n\n\t\t\t\t\tif (id1 < 0 || id2 < 0) return null;\n\n\t\t\t\t\treturn id1 === id2 ? 1 : 0;\n\t\t\t\t})\n\t\t);\n};\n\nexport {\n\tSemanticElementType,\n\tSemanticElement,\n\tSemanticCluster,\n\tSemanticClusterSet,\n\tELEMENT_TOKEN_NAMES,\n\tNOTEHEAD_ELEMENT_TYPES,\n\tNOTE_ELEMENT_TYPES,\n\tBOS_ELEMENT,\n\tfractionToElems,\n\texpandMatrixByMasks,\n\texpandMatrixByMaskTriu,\n\tmatrixFromGroups,\n};\n","import { MusicNotation } from '@k-l-lambda/music-widgets';\n\n// implicit note (from expressive marks) types\nenum ImplicitType {\n\tNone = 0,\n\n\tMordent = 'mordent',\n\tPrall = 'prall',\n\tTurn = 'turn',\n\tTrill = 'trill',\n\tTremolo = 'tremolo',\n\tArpeggio = 'arpeggio',\n}\n\ninterface ChordPosition {\n\tindex: number;\n\tcount: number;\n}\n\nclass TokenPosition {\n\tsystem?: number;\n\tmeasure?: number;\n\tx: number;\n\tendX?: number;\n}\n\ninterface Note extends MusicNotation.Note {\n\tchordPosition?: ChordPosition;\n\tmeasure?: number;\n}\n\ninterface Notation {\n\tnotes: Note[];\n\tendTick: number;\n}\n\ninterface SheetPosition {\n\tsystem: number;\n\tx: number;\n}\n\nexport { ChordPosition, ImplicitType, TokenPosition, Note, Notation, SheetPosition };\n","\n/* Wrapper for accessing buffer through sequential reads */\n\n\n\nmodule.exports = class Stream {\n\tconstructor (buffer) {\n\t\tthis.array = new Uint8Array(buffer);\n\t\tthis.position = 0;\n\t}\n\n\n\teof () {\n\t\treturn this.position >= this.array.length;\n\t}\n\n\n\tread (length) {\n\t\tconst result = this.array.slice(this.position, this.position + length);\n\t\tthis.position += length;\n\n\t\treturn result;\n\t}\n\n\n\treadString (length) {\n\t\tconst data = Array.from(this.read(length));\n\n\t\treturn data.map(c => String.fromCharCode(c)).join(\"\");\n\t}\n\n\n\t// read a big-endian 32-bit integer\n\treadInt32 () {\n\t\tconst result = (\n\t\t\t(this.array[this.position] << 24) +\n\t\t\t(this.array[this.position + 1] << 16) +\n\t\t\t(this.array[this.position + 2] << 8) +\n\t\t\tthis.array[this.position + 3]);\n\t\tthis.position += 4;\n\n\t\treturn result;\n\t}\n\n\n\t// read a big-endian 16-bit integer\n\treadInt16 () {\n\t\tconst result = (\n\t\t\t(this.array[this.position] << 8) +\n\t\t\tthis.array[this.position + 1]);\n\t\tthis.position += 2;\n\n\t\treturn result;\n\t}\n\n\n\t// read an 8-bit integer\n\treadInt8 (signed) {\n\t\tlet result = this.array[this.position];\n\t\tif (signed && result > 127)\n\t\t\tresult -= 256;\n\t\tthis.position += 1;\n\n\t\treturn result;\n\t}\n\n\n\t/* read a MIDI-style variable-length integer\n\t\t(big-endian value in groups of 7 bits,\n\t\twith top bit set to signify that another byte follows)\n\t*/\n\treadVarInt () {\n\t\tlet result = 0;\n\t\twhile (true) {\n\t\t\tconst b = this.readInt8();\n\t\t\tif (b & 0x80) {\n\t\t\t\tresult += (b & 0x7f);\n\t\t\t\tresult <<= 7;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// b is the last byte\n\t\t\t\treturn result + b;\n\t\t\t}\n\t\t}\n\t}\n};\n","/*\nclass to parse the .mid file format\n(depends on stream.js)\n*/\n\nconst Stream = require(\"./stream.js\");\n\n\n\nmodule.exports = function MidiFile (data) {\n\tfunction readChunk (stream) {\n\t\tconst id = stream.readString(4);\n\t\tconst length = stream.readInt32();\n\n\t\treturn {\n\t\t\tid,\n\t\t\tlength,\n\t\t\tdata: stream.read(length),\n\t\t};\n\t}\n\n\tlet lastEventTypeByte;\n\n\tfunction readEvent (stream) {\n\t\tconst event = {};\n\t\tevent.deltaTime = stream.readVarInt();\n\t\tlet eventTypeByte = stream.readInt8();\n\t\tif ((eventTypeByte & 0xf0) === 0xf0) {\n\t\t\t// system / meta event\n\t\t\tif (eventTypeByte === 0xff) {\n\t\t\t\t// meta event\n\t\t\t\tevent.type = \"meta\";\n\t\t\t\tconst subtypeByte = stream.readInt8();\n\t\t\t\tconst length = stream.readVarInt();\n\n\t\t\t\tswitch (subtypeByte) {\n\t\t\t\tcase 0x00:\n\t\t\t\t\tevent.subtype = \"sequenceNumber\";\n\t\t\t\t\tif (length !== 2)\n\t\t\t\t\t\tthrow new Error(\"Expected length for sequenceNumber event is 2, got \" + length);\n\t\t\t\t\tevent.number = stream.readInt16();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x01:\n\t\t\t\t\tevent.subtype = \"text\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x02:\n\t\t\t\t\tevent.subtype = \"copyrightNotice\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tevent.subtype = \"trackName\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x04:\n\t\t\t\t\tevent.subtype = \"instrumentName\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x05:\n\t\t\t\t\tevent.subtype = \"lyrics\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x06:\n\t\t\t\t\tevent.subtype = \"marker\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x07:\n\t\t\t\t\tevent.subtype = \"cuePoint\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x20:\n\t\t\t\t\tevent.subtype = \"midiChannelPrefix\";\n\t\t\t\t\tif (length !== 1)\n\t\t\t\t\t\tthrow new Error(\"Expected length for midiChannelPrefix event is 1, got \" + length);\n\t\t\t\t\tevent.channel = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x2f:\n\t\t\t\t\tevent.subtype = \"endOfTrack\";\n\t\t\t\t\tif (length !== 0)\n\t\t\t\t\t\tthrow new Error(\"Expected length for endOfTrack event is 0, got \" + length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x51:\n\t\t\t\t\tevent.subtype = \"setTempo\";\n\t\t\t\t\tif (length !== 3)\n\t\t\t\t\t\tthrow new Error(\"Expected length for setTempo event is 3, got \" + length);\n\t\t\t\t\tevent.microsecondsPerBeat = (\n\t\t\t\t\t\t(stream.readInt8() << 16) +\n\t\t\t\t\t\t\t(stream.readInt8() << 8) +\n\t\t\t\t\t\t\tstream.readInt8()\n\t\t\t\t\t);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x54:\n\t\t\t\t\tevent.subtype = \"smpteOffset\";\n\t\t\t\t\tif (length !== 5)\n\t\t\t\t\t\tthrow new Error(\"Expected length for smpteOffset event is 5, got \" + length);\n\t\t\t\t\tconst hourByte = stream.readInt8();\n\t\t\t\t\tevent.frameRate = {\n\t\t\t\t\t\t0x00: 24, 0x20: 25, 0x40: 29, 0x60: 30,\n\t\t\t\t\t}[hourByte & 0x60];\n\t\t\t\t\tevent.hour = hourByte & 0x1f;\n\t\t\t\t\tevent.min = stream.readInt8();\n\t\t\t\t\tevent.sec = stream.readInt8();\n\t\t\t\t\tevent.frame = stream.readInt8();\n\t\t\t\t\tevent.subframe = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x58:\n\t\t\t\t\tevent.subtype = \"timeSignature\";\n\t\t\t\t\tif (length !== 4)\n\t\t\t\t\t\tthrow new Error(\"Expected length for timeSignature event is 4, got \" + length);\n\t\t\t\t\tevent.numerator = stream.readInt8();\n\t\t\t\t\tevent.denominator = Math.pow(2, stream.readInt8());\n\t\t\t\t\tevent.metronome = stream.readInt8();\n\t\t\t\t\tevent.thirtyseconds = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x59:\n\t\t\t\t\tevent.subtype = \"keySignature\";\n\t\t\t\t\tif (length !== 2)\n\t\t\t\t\t\tthrow new Error(\"Expected length for keySignature event is 2, got \" + length);\n\t\t\t\t\tevent.key = stream.readInt8(true);\n\t\t\t\t\tevent.scale = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x7f:\n\t\t\t\t\tevent.subtype = \"sequencerSpecific\";\n\t\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tdefault:\n\t\t\t\t\t// console.log(\"Unrecognised meta event subtype: \" + subtypeByte);\n\t\t\t\t\tevent.subtype = \"unknown\";\n\t\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\t}\n\n\t\t\t\t//event.data = stream.readString(length);\n\t\t\t\t//return event;\n\t\t\t}\n\t\t\telse if (eventTypeByte === 0xf0) {\n\t\t\t\tevent.type = \"sysEx\";\n\t\t\t\tconst length = stream.readVarInt();\n\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\treturn event;\n\t\t\t}\n\t\t\telse if (eventTypeByte === 0xf7) {\n\t\t\t\tevent.type = \"dividedSysEx\";\n\t\t\t\tconst length = stream.readVarInt();\n\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\treturn event;\n\t\t\t}\n\t\t\telse\n\t\t\t\tthrow new Error(\"Unrecognised MIDI event type byte: \" + eventTypeByte);\n\t\t}\n\t\telse {\n\t\t\t/* channel event */\n\t\t\tlet param1;\n\t\t\tif ((eventTypeByte & 0x80) === 0) {\n\t\t\t\t/* running status - reuse lastEventTypeByte as the event type.\n\t\t\t\t\teventTypeByte is actually the first parameter\n\t\t\t\t*/\n\t\t\t\tparam1 = eventTypeByte;\n\t\t\t\teventTypeByte = lastEventTypeByte;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparam1 = stream.readInt8();\n\t\t\t\tlastEventTypeByte = eventTypeByte;\n\t\t\t}\n\n\t\t\tconst eventType = eventTypeByte >> 4;\n\t\t\tevent.channel = eventTypeByte & 0x0f;\n\t\t\tevent.type = \"channel\";\n\n\t\t\tswitch (eventType) {\n\t\t\tcase 0x08:\n\t\t\t\tevent.subtype = \"noteOff\";\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.velocity = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x09:\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.velocity = stream.readInt8();\n\t\t\t\tif (event.velocity === 0)\n\t\t\t\t\tevent.subtype = \"noteOff\";\n\t\t\t\telse\n\t\t\t\t\tevent.subtype = \"noteOn\";\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0a:\n\t\t\t\tevent.subtype = \"noteAftertouch\";\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.amount = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0b:\n\t\t\t\tevent.subtype = \"controller\";\n\t\t\t\tevent.controllerType = param1;\n\t\t\t\tevent.value = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0c:\n\t\t\t\tevent.subtype = \"programChange\";\n\t\t\t\tevent.programNumber = param1;\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0d:\n\t\t\t\tevent.subtype = \"channelAftertouch\";\n\t\t\t\tevent.amount = param1;\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0e:\n\t\t\t\tevent.subtype = \"pitchBend\";\n\t\t\t\tevent.value = param1 + (stream.readInt8() << 7);\n\n\t\t\t\treturn event;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Unrecognised MIDI event type: \" + eventType);\n\n\t\t\t\t/*\n\t\t\t\tconsole.log(\"Unrecognised MIDI event type: \" + eventType);\n\t\t\t\tstream.readInt8();\n\t\t\t\tevent.subtype = 'unknown';\n\t\t\t\treturn event;\n\t\t\t\t*/\n\t\t\t}\n\t\t}\n\t}\n\n\n\tlet source = data;\n\tif (typeof data === \"string\")\n\t\tsource = data.split(\"\").map(c => c.charCodeAt(0));\n\n\tconst stream = new Stream(source);\n\tconst headerChunk = readChunk(stream);\n\tif (headerChunk.id !== \"MThd\" || headerChunk.length !== 6)\n\t\tthrow new Error(\"Bad .mid file - header not found\");\n\n\tconst headerStream = new Stream(headerChunk.data);\n\tconst formatType = headerStream.readInt16();\n\tconst trackCount = headerStream.readInt16();\n\tconst timeDivision = headerStream.readInt16();\n\n\tlet ticksPerBeat;\n\tif (timeDivision & 0x8000)\n\t\tthrow new Error(\"Expressing time division in SMTPE frames is not supported yet\");\n\telse\n\t\tticksPerBeat = timeDivision;\n\n\n\tconst header = {\n\t\tformatType,\n\t\ttrackCount,\n\t\tticksPerBeat,\n\t};\n\tconst tracks = [];\n\tfor (let i = 0; i < header.trackCount; i++) {\n\t\ttracks[i] = [];\n\t\tconst trackChunk = readChunk(stream);\n\t\tif (trackChunk.id !== \"MTrk\")\n\t\t\tthrow new Error(\"Unexpected chunk - expected MTrk, got \" + trackChunk.id);\n\n\t\tconst trackStream = new Stream(trackChunk.data);\n\t\twhile (!trackStream.eof()) {\n\t\t\tconst event = readEvent(trackStream);\n\t\t\ttracks[i].push(event);\n\t\t}\n\t}\n\n\treturn {\n\t\theader,\n\t\ttracks,\n\t};\n};\n","\r\n/* Wrapper for accessing strings through sequential writes */\r\n\r\n\r\n\r\nmodule.exports = class OStream {\r\n\tconstructor () {\r\n\t\tthis.buffer = \"\";\r\n\t}\r\n\r\n\twrite (str) {\r\n\t\tthis.buffer += str;\r\n\t}\r\n\r\n\t/* write a big-endian 32-bit integer */\r\n\twriteInt32 (i) {\r\n\t\tthis.buffer += String.fromCharCode((i >> 24) & 0xff) + String.fromCharCode((i >> 16) & 0xff) +\r\n\t\t\tString.fromCharCode((i >> 8) & 0xff) + String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write a big-endian 16-bit integer */\r\n\twriteInt16 (i) {\r\n\t\tthis.buffer += String.fromCharCode((i >> 8) & 0xff) + String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write an 8-bit integer */\r\n\twriteInt8 (i) {\r\n\t\tthis.buffer += String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write a MIDI-style variable-length integer\r\n\t\t(big-endian value in groups of 7 bits,\r\n\t\twith top bit set to signify that another byte follows)\r\n\t*/\r\n\twriteVarInt (i) {\r\n\t\tif (i < 0)\r\n\t\t\tthrow new Error(\"OStream.writeVarInt minus number: \" + i);\r\n\r\n\t\tconst b = i & 0x7f;\r\n\t\ti >>= 7;\r\n\t\tlet str = String.fromCharCode(b);\r\n\r\n\t\twhile (i) {\r\n\t\t\tconst b = i & 0x7f;\r\n\t\t\ti >>= 7;\r\n\t\t\tstr = String.fromCharCode(b | 0x80) + str;\r\n\t\t}\r\n\r\n\t\tthis.buffer += str;\r\n\t}\r\n\r\n\tgetBuffer () {\r\n\t\treturn this.buffer;\r\n\t}\r\n\r\n\tgetArrayBuffer () {\r\n\t\treturn Uint8Array.from(this.buffer.split(\"\").map(c => c.charCodeAt(0))).buffer;\r\n\t}\r\n};\r\n","/*\r\nclass to encode the .mid file format\r\n(depends on streamEx.js)\r\n*/\r\n\r\nconst OStream = require(\"./streamEx.js\");\r\n\r\n\r\n\r\nmodule.exports = function OMidiFile ({ header, tracks }) {\r\n\tfunction writeChunk (stream, id, data) {\r\n\t\tconsole.assert(id.length === 4, \"chunk id must be 4 byte\");\r\n\r\n\t\tstream.write(id);\r\n\t\tstream.writeInt32(data.length);\r\n\t\tstream.write(data);\r\n\t}\r\n\r\n\tfunction writeEvent (stream, event) {\r\n\t\tif (event.subtype === \"unknown\")\r\n\t\t\treturn;\r\n\r\n\t\tstream.writeVarInt(event.deltaTime);\r\n\r\n\t\tswitch (event.type) {\r\n\t\tcase \"meta\":\r\n\t\t\tstream.writeInt8(0xff);\r\n\r\n\t\t\tswitch (event.subtype) {\r\n\t\t\tcase \"sequenceNumber\":\r\n\t\t\t\tstream.writeInt8(0x00);\r\n\t\t\t\tstream.writeVarInt(2);\r\n\r\n\t\t\t\tstream.writeInt16(event.number);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"text\":\r\n\t\t\t\tstream.writeInt8(0x01);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"copyrightNotice\":\r\n\t\t\t\tstream.writeInt8(0x02);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"trackName\":\r\n\t\t\t\tstream.writeInt8(0x03);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"instrumentName\":\r\n\t\t\t\tstream.writeInt8(0x04);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"lyrics\":\r\n\t\t\t\tstream.writeInt8(0x05);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"marker\":\r\n\t\t\t\tstream.writeInt8(0x06);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"cuePoint\":\r\n\t\t\t\tstream.writeInt8(0x07);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"midiChannelPrefix\":\r\n\t\t\t\tstream.writeInt8(0x20);\r\n\t\t\t\tstream.writeVarInt(1);\r\n\r\n\t\t\t\tstream.writeInt8(event.channel);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"endOfTrack\":\r\n\t\t\t\tstream.writeInt8(0x2f);\r\n\t\t\t\tstream.writeVarInt(0);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"setTempo\":\r\n\t\t\t\tstream.writeInt8(0x51);\r\n\t\t\t\tstream.writeVarInt(3);\r\n\r\n\t\t\t\tstream.writeInt8((event.microsecondsPerBeat >> 16) & 0xff);\r\n\t\t\t\tstream.writeInt8((event.microsecondsPerBeat >> 8) & 0xff);\r\n\t\t\t\tstream.writeInt8(event.microsecondsPerBeat & 0xff);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"smpteOffset\":\r\n\t\t\t\tstream.writeInt8(0x54);\r\n\t\t\t\tstream.writeVarInt(5);\r\n\r\n\t\t\t\tvar frameByte = { 24: 0x00, 25: 0x20, 29: 0x40, 30: 0x60 }[event.frameRate];\r\n\t\t\t\tstream.writeInt8(event.hour | frameByte);\r\n\t\t\t\tstream.writeInt8(event.min);\r\n\t\t\t\tstream.writeInt8(event.sec);\r\n\t\t\t\tstream.writeInt8(event.frame);\r\n\t\t\t\tstream.writeInt8(event.subframe);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"timeSignature\":\r\n\t\t\t\tstream.writeInt8(0x58);\r\n\t\t\t\tstream.writeVarInt(4);\r\n\r\n\t\t\t\tstream.writeInt8(event.numerator);\r\n\t\t\t\tstream.writeInt8(Math.log2(event.denominator));\r\n\t\t\t\tstream.writeInt8(event.metronome);\r\n\t\t\t\tstream.writeInt8(event.thirtyseconds);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"keySignature\":\r\n\t\t\t\tstream.writeInt8(0x59);\r\n\t\t\t\tstream.writeVarInt(2);\r\n\r\n\t\t\t\tstream.writeInt8(event.key);\r\n\t\t\t\tstream.writeInt8(event.scale);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"sequencerSpecific\":\r\n\t\t\t\tstream.writeInt8(0x7f);\r\n\t\t\t\tstream.writeVarInt(event.data.length);\r\n\r\n\t\t\t\tstream.write(event.data);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"unhandled event subtype:\" + event.subtype);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"sysEx\":\r\n\t\t\tstream.writeInt8(0xf0);\r\n\t\t\tstream.writeVarInt(event.data.length);\r\n\t\t\tstream.write(event.data);\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"dividedSysEx\":\r\n\t\t\tstream.writeInt8(0xf7);\r\n\t\t\tstream.writeVarInt(event.data.length);\r\n\t\t\tstream.write(event.data);\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"channel\":\r\n\t\t\tswitch (event.subtype) {\r\n\t\t\tcase \"noteOn\":\r\n\t\t\t\tstream.writeInt8(0x90 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.velocity);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"noteOff\":\r\n\t\t\t\tstream.writeInt8(0x80 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.velocity ? event.velocity : 0);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"noteAftertouch\":\r\n\t\t\t\tstream.writeInt8(0xa0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.amount);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"controller\":\r\n\t\t\t\tstream.writeInt8(0xb0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.controllerType);\r\n\t\t\t\tstream.writeInt8(event.value);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"programChange\":\r\n\t\t\t\tstream.writeInt8(0xc0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.programNumber);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"channelAftertouch\":\r\n\t\t\t\tstream.writeInt8(0xd0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.amount);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pitchBend\":\r\n\t\t\t\tstream.writeInt8(0xe0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.value & 0xff);\r\n\t\t\t\tstream.writeInt8((event.value >> 7) & 0xff);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"unhandled event subtype:\" + event.subtype);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"unhandled event type:\" + event.type);\r\n\t\t}\r\n\t}\r\n\r\n\tconst stream = new OStream();\r\n\r\n\tconst headerChunk = new OStream();\r\n\theaderChunk.writeInt16(header.formatType);\r\n\theaderChunk.writeInt16(tracks.length);\r\n\theaderChunk.writeInt16(header.ticksPerBeat);\r\n\r\n\twriteChunk(stream, \"MThd\", headerChunk.getBuffer());\r\n\r\n\tfor (let i = 0; i < tracks.length; ++i) {\r\n\t\tconst trackChunk = new OStream();\r\n\r\n\t\tfor (let ei = 0; ei < tracks[i].length; ++ei)\r\n\t\t\twriteEvent(trackChunk, tracks[i][ei]);\r\n\r\n\t\twriteChunk(stream, \"MTrk\", trackChunk.getBuffer());\r\n\t}\r\n\r\n\treturn stream.getArrayBuffer();\r\n};\r\n","\nmodule.exports = {\n\tparseMidiData: require(\"./midifile.js\"),\n\tencodeMidiFile: require(\"./midifileEx.js\"),\n};\n","\nconst midiToSequence = (midiFile, {timeWarp = 1} = {}) => {\n\tconst trackStates = [];\n\tlet beatsPerMinute = 120;\n\tconst ticksPerBeat = midiFile.header.ticksPerBeat;\n\n\tfor (let i = 0; i < midiFile.tracks.length; i++) {\n\t\ttrackStates[i] = {\n\t\t\tnextEventIndex: 0,\n\t\t\tticksToNextEvent: (\n\t\t\t\tmidiFile.tracks[i].length ?\n\t\t\t\t\tmidiFile.tracks[i][0].deltaTime :\n\t\t\t\t\tnull\n\t\t\t),\n\t\t};\n\t}\n\n\tfunction getNextEvent () {\n\t\tlet ticksToNextEvent = null;\n\t\tlet nextEventTrack = null;\n\t\tlet nextEventIndex = null;\n\n\t\tfor (let i = 0; i < trackStates.length; i++) {\n\t\t\tif (\n\t\t\t\ttrackStates[i].ticksToNextEvent != null\n\t\t\t\t&& (ticksToNextEvent == null || trackStates[i].ticksToNextEvent < ticksToNextEvent)\n\t\t\t) {\n\t\t\t\tticksToNextEvent = trackStates[i].ticksToNextEvent;\n\t\t\t\tnextEventTrack = i;\n\t\t\t\tnextEventIndex = trackStates[i].nextEventIndex;\n\t\t\t}\n\t\t}\n\t\tif (nextEventTrack != null) {\n\t\t\t/* consume event from that track */\n\t\t\tconst nextEvent = midiFile.tracks[nextEventTrack][nextEventIndex];\n\t\t\tif (midiFile.tracks[nextEventTrack][nextEventIndex + 1]) \n\t\t\t\ttrackStates[nextEventTrack].ticksToNextEvent += midiFile.tracks[nextEventTrack][nextEventIndex + 1].deltaTime;\n\t\t\telse \n\t\t\t\ttrackStates[nextEventTrack].ticksToNextEvent = null;\n\n\t\t\ttrackStates[nextEventTrack].nextEventIndex += 1;\n\t\t\t/* advance timings on all tracks by ticksToNextEvent */\n\t\t\tfor (let i = 0; i < trackStates.length; i++) {\n\t\t\t\tif (trackStates[i].ticksToNextEvent != null) \n\t\t\t\t\ttrackStates[i].ticksToNextEvent -= ticksToNextEvent;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tticksToEvent: ticksToNextEvent,\n\t\t\t\tevent: nextEvent,\n\t\t\t\ttrack: nextEventTrack,\n\t\t\t};\n\t\t}\n\t\telse \n\t\t\treturn null;\n\t\t\n\t};\n\t//\n\tlet midiEvent;\n\tconst events = [];\n\t//\n\tfunction processEvents () {\n\t\tfunction processNext () {\n\t\t\tlet secondsToGenerate = 0;\n\t\t\tif (midiEvent.ticksToEvent > 0) {\n\t\t\t\tconst beatsToGenerate = midiEvent.ticksToEvent / ticksPerBeat;\n\t\t\t\tsecondsToGenerate = beatsToGenerate / (beatsPerMinute / 60);\n\t\t\t}\n\n\t\t\t// beatsPerMinute must be changed after secondsToGenerate calculation\n\t\t\tif ( midiEvent.event.type == \"meta\" && midiEvent.event.subtype == \"setTempo\" ) {\n\t\t\t\t// tempo change events can occur anywhere in the middle and affect events that follow\n\t\t\t\tbeatsPerMinute = 60e+6 / midiEvent.event.microsecondsPerBeat;\n\t\t\t}\n\n\t\t\tconst time = (secondsToGenerate * 1000 * timeWarp) || 0;\n\t\t\tevents.push([ midiEvent, time ]);\n\t\t\tmidiEvent = getNextEvent();\n\t\t};\n\t\t//\n\t\tif (midiEvent = getNextEvent()) {\n\t\t\twhile (midiEvent)\n\t\t\t\tprocessNext();\n\t\t}\n\t};\n\n\tprocessEvents();\n\n\treturn events;\n};\n\n\nconst trimSequence = seq => {\n\tconst status = new Map();\n\n\treturn seq.filter(([{event, ticksToEvent}]) => {\n\t\tif (ticksToEvent > 0)\n\t\t\tstatus.clear();\n\n\t\tif (event.type !== \"channel\")\n\t\t\treturn true;\n\n\t\tconst key = `${event.subtype}|${event.channel}|${event.noteNumber}`;\n\n\t\tif (status.get(key)) {\n\t\t\t//console.debug(\"event trimmed:\", event, ticksToEvent);\n\t\t\treturn false;\n\t\t}\n\n\t\tstatus.set(key, event);\n\n\t\treturn true;\n\t});\n};\n\n\nconst fixOverlapNotes = seq => {\n\tconst noteMap = new Map();\n\tconst overlapMap = new Map();\n\tconst swaps = [];\n\n\tlet leapIndex = -1;\n\n\tseq.forEach(([{event, ticksToEvent}], index) => {\n\t\tif (ticksToEvent > 0)\n\t\t\tleapIndex = index;\n\n\t\tif (event.type !== \"channel\")\n\t\t\treturn;\n\n\t\tconst key = `${event.channel}|${event.noteNumber}`;\n\n\t\tswitch (event.subtype) {\n\t\tcase \"noteOn\":\n\t\t\tif (noteMap.get(key))\n\t\t\t\toverlapMap.set(key, leapIndex);\n\t\t\telse\n\t\t\t\tnoteMap.set(key, leapIndex);\n\n\t\t\tbreak;\n\t\tcase \"noteOff\":\n\t\t\tif (overlapMap.get(key)) {\n\t\t\t\tswaps.push([overlapMap.get(key), index]);\n\t\t\t\toverlapMap.delete(key);\n\t\t\t}\n\t\t\telse\n\t\t\t\tnoteMap.delete(key);\n\n\t\t\tbreak;\n\t\t}\n\t});\n\n\t// shift overlapped swaps\n\tswaps.forEach((swap, i) => {\n\t\tfor (let ii = i - 1; ii >= 0; --ii) {\n\t\t\tconst pre = swaps[ii];\n\t\t\tif (pre[1] < swap[0])\n\t\t\t\tbreak;\n\n\t\t\tif (swap[0] > pre[0])\n\t\t\t\t++swap[0];\n\t\t}\n\t});\n\n\t//console.debug(\"swaps:\", swaps);\n\tswaps.forEach(([front, back]) => {\n\t\tif (back >= seq.length - 1 || front < 0)\n\t\t\treturn;\n\n\t\tconst offEvent = seq[back];\n\t\tconst nextEvent = seq[back + 1];\n\t\tconst leapEvent = seq[front];\n\n\t\tif (!leapEvent[0].ticksToEvent) {\n\t\t\tconsole.warn(\"invalid front index:\", front, back, leapEvent);\n\t\t\treturn;\n\t\t}\n\n\t\t// ms per tick\n\t\tconst tempo = leapEvent[1] / leapEvent[0].ticksToEvent;\n\n\t\tnextEvent[1] += offEvent[1];\n\t\tnextEvent[0].ticksToEvent += offEvent[0].ticksToEvent;\n\n\t\toffEvent[0].ticksToEvent = leapEvent[0].ticksToEvent - 1;\n\t\tleapEvent[0].ticksToEvent = 1;\n\n\t\toffEvent[1] = offEvent[0].ticksToEvent * tempo;\n\t\tleapEvent[1] = leapEvent[0].ticksToEvent * tempo;\n\t\t//console.debug(\"swap:\", [front, back], offEvent, nextEvent, leapEvent);\n\n\t\tseq.splice(back, 1);\n\t\tseq.splice(front, 0, offEvent);\n\t});\n\n\treturn seq;\n};\n\n\n\nmodule.exports = {\n\tmidiToSequence,\n\ttrimSequence,\n\tfixOverlapNotes,\n};\n","\nconst MidiSequence = require(\"./MidiSequence.js\");\n\n\n\nconst PedalControllerTypes = {\n\t64: \"Sustain\",\n\t65: \"Portamento\",\n\t66: \"Sostenuto\",\n\t67: \"Soft\",\n};\n\n\n\nclass Notation {\n\tstatic parseMidi (data, {fixOverlap = true} = {}) {\n\t\tconst channelStatus = [];\n\t\tconst pedalStatus = {};\n\t\tconst pedals = {};\n\t\tconst channels = [];\n\t\tconst bars = [];\n\t\tlet time = 0;\n\t\tlet millisecondsPerBeat = 600000 / 120;\n\t\tlet beats = 0;\n\t\tlet numerator = 4;\n\t\tlet barIndex = 0;\n\t\tconst keyRange = {};\n\t\tlet rawTicks = 0;\n\t\tlet ticks = 0;\n\t\tlet correspondences;\n\t\tconst tempos = [];\n\n\t\tconst ticksPerBeat = data.header.ticksPerBeat;\n\n\t\tlet rawEvents = MidiSequence.midiToSequence(data);\n\n\t\tif (fixOverlap)\n\t\t\trawEvents = MidiSequence.trimSequence(MidiSequence.fixOverlapNotes(rawEvents));\n\n\t\tconst events = rawEvents.map(d => ({\n\t\t\tdata: d[0].event,\n\t\t\ttrack: d[0].track,\n\t\t\tdeltaTime: d[1],\n\t\t\tdeltaTicks: d[0].ticksToEvent,\n\t\t}));\n\n\t\tlet index = 0;\n\n\t\tconst ticksNormal = 1;\n\n\t\tfor (const ev of events) {\n\t\t\trawTicks += ev.deltaTicks;\n\t\t\tticks = Math.round(rawTicks * ticksNormal);\n\n\t\t\tif (ev.deltaTicks > 0) {\n\t\t\t\t// append bars\n\t\t\t\tconst deltaBeats = ev.deltaTicks / ticksPerBeat;\n\t\t\t\tfor (let b = Math.ceil(beats); b < beats + deltaBeats; ++b) {\n\t\t\t\t\tconst t = time + (b - beats) * millisecondsPerBeat;\n\t\t\t\t\tbars.push({time: t, index: barIndex % numerator});\n\n\t\t\t\t\t++barIndex;\n\t\t\t\t}\n\n\t\t\t\tbeats += deltaBeats;\n\t\t\t}\n\n\t\t\ttime += ev.deltaTime;\n\n\t\t\t//const ticksTime = beats * millisecondsPerBeat;\n\t\t\t//console.log(\"time:\", time, ticksTime, ticksTime - time);\n\n\t\t\tev.time = time;\n\t\t\tev.ticks = ticks;\n\n\t\t\tconst event = ev.data;\n\t\t\tswitch (event.type) {\n\t\t\tcase \"channel\":\n\t\t\t\t//channelStatus[event.channel] = channelStatus[event.channel] || [];\n\n\t\t\t\tswitch (event.subtype) {\n\t\t\t\tcase \"noteOn\":\n\t\t\t\t\t{\n\t\t\t\t\t\tconst pitch = event.noteNumber;\n\t\t\t\t\t\t//channelStatus[event.channel][pitch] = {\n\t\t\t\t\t\tchannelStatus.push({\n\t\t\t\t\t\t\tchannel: event.channel,\n\t\t\t\t\t\t\tpitch,\n\t\t\t\t\t\t\tstartTick: ticks,\n\t\t\t\t\t\t\tstart: time,\n\t\t\t\t\t\t\tvelocity: event.velocity,\n\t\t\t\t\t\t\tbeats: beats,\n\t\t\t\t\t\t\ttrack: ev.track,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tkeyRange.low = Math.min(keyRange.low || pitch, pitch);\n\n\t\t\t\t\t\tev.index = index;\n\t\t\t\t\t\t++index;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"noteOff\":\n\t\t\t\t\t{\n\t\t\t\t\t\tconst pitch = event.noteNumber;\n\n\t\t\t\t\t\tchannels[event.channel] = channels[event.channel] || [];\n\n\t\t\t\t\t\tconst statusIndex = channelStatus.findIndex(status => status.channel == event.channel && status.pitch == pitch);\n\t\t\t\t\t\tif (statusIndex >= 0) {\n\t\t\t\t\t\t\tconst status = channelStatus.splice(statusIndex, 1)[0];\n\n\t\t\t\t\t\t\tchannels[event.channel].push({\n\t\t\t\t\t\t\t\tchannel: event.channel,\n\t\t\t\t\t\t\t\tstartTick: status.startTick,\n\t\t\t\t\t\t\t\tendTick: ticks,\n\t\t\t\t\t\t\t\tpitch,\n\t\t\t\t\t\t\t\tstart: status.start,\n\t\t\t\t\t\t\t\tduration: time - status.start,\n\t\t\t\t\t\t\t\tvelocity: status.velocity,\n\t\t\t\t\t\t\t\tbeats: status.beats,\n\t\t\t\t\t\t\t\ttrack: status.track,\n\t\t\t\t\t\t\t\tfinger: status.finger,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tconsole.debug(\"unexpected noteOff: \", time, event);\n\n\t\t\t\t\t\tkeyRange.high = Math.max(keyRange.high || pitch, pitch);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"controller\":\n\t\t\t\t\tswitch (event.controllerType) {\n\t\t\t\t\t// pedal controllers\n\t\t\t\t\tcase 64:\n\t\t\t\t\tcase 65:\n\t\t\t\t\tcase 66:\n\t\t\t\t\tcase 67:\n\t\t\t\t\t\tconst pedalType = PedalControllerTypes[event.controllerType];\n\n\t\t\t\t\t\tpedalStatus[event.channel] = pedalStatus[event.channel] || {};\n\t\t\t\t\t\tpedals[event.channel] = pedals[event.channel] || [];\n\n\t\t\t\t\t\tconst status = pedalStatus[event.channel][pedalType];\n\n\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\tpedals[event.channel].push({type: pedalType, start: status.start, duration: time - status.start, value: status.value});\n\t\t\t\t\t\tpedalStatus[event.channel][pedalType] = {start: time, value: event.value};\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase \"meta\":\n\t\t\t\tswitch (event.subtype) {\n\t\t\t\tcase \"setTempo\":\n\t\t\t\t\tmillisecondsPerBeat = event.microsecondsPerBeat / 1000;\n\t\t\t\t\t//beats = Math.round(beats);\n\t\t\t\t\t//console.assert(Number.isFinite(time), \"invalid time:\", time);\n\t\t\t\t\ttempos.push({tempo: event.microsecondsPerBeat, tick: ticks, time});\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"timeSignature\":\n\t\t\t\t\tnumerator = event.numerator;\n\t\t\t\t\tbarIndex = 0;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tif (!correspondences && /^find-corres:/.test(event.text)) {\n\t\t\t\t\t\tconst captures = event.text.match(/:([\\d\\,-]+)/);\n\t\t\t\t\t\tconst str = captures && captures[1] || \"\";\n\t\t\t\t\t\tcorrespondences = str.split(\",\").map(s => Number(s));\n\t\t\t\t\t}\n\t\t\t\t\telse if (/fingering\\(.*\\)/.test(event.text)) {\n\t\t\t\t\t\tconst [_, fingers] = event.text.match(/\\((.+)\\)/);\n\t\t\t\t\t\tconst finger = Number(fingers);\n\t\t\t\t\t\tif (!Number.isNaN(finger)) {\n\t\t\t\t\t\t\tconst status = channelStatus[channelStatus.length - 1];\n\t\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\t\tstatus.finger = finger;\n\n\t\t\t\t\t\t\tconst event = events.find(e => e.index == index - 1);\n\t\t\t\t\t\t\tif (event)\n\t\t\t\t\t\t\t\tevent.data.finger = finger;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"copyrightNotice\":\n\t\t\t\t\tconsole.log(\"MIDI copyright:\", event.text);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tchannelStatus.forEach(status => {\n\t\t\tconsole.debug(\"unclosed noteOn event at\", status.startTick, status);\n\n\t\t\tchannels[status.channel].push({\n\t\t\t\tstartTick: status.startTick,\n\t\t\t\tendTick: ticks,\n\t\t\t\tpitch: status.pitch,\n\t\t\t\tstart: status.start,\n\t\t\t\tduration: time - status.start,\n\t\t\t\tvelocity: status.velocity,\n\t\t\t\tbeats: status.beats,\n\t\t\t\ttrack: status.track,\n\t\t\t\tfinger: status.finger,\n\t\t\t});\n\t\t});\n\n\t\treturn new Notation({\n\t\t\tchannels,\n\t\t\tkeyRange,\n\t\t\tpedals,\n\t\t\tbars,\n\t\t\tendTime: time,\n\t\t\tendTick: ticks,\n\t\t\tcorrespondences,\n\t\t\tevents,\n\t\t\ttempos,\n\t\t\tticksPerBeat,\n\t\t\tmeta: {},\n\t\t});\n\t}\n\n\n\tconstructor (fields) {\n\t\tObject.assign(this, fields);\n\n\t\t// channels to notes\n\t\tthis.notes = [];\n\t\tfor (const channel of this.channels) {\n\t\t\tif (channel) {\n\t\t\t\tfor (const note of channel)\n\t\t\t\t\tthis.notes.push(note);\n\t\t\t}\n\t\t}\n\t\tthis.notes.sort(function (n1, n2) {\n\t\t\treturn n1.start - n2.start;\n\t\t});\n\n\t\tfor (const i in this.notes)\n\t\t\tthis.notes[i].index = Number(i);\n\n\n\t\t// duration\n\t\tthis.duration = this.notes.length > 0 ? (this.endTime - this.notes[0].start) : 0,\n\n\t\t//this.endSoftIndex = this.notes.length ? this.notes[this.notes.length - 1].softIndex : 0;\n\n\n\t\t// pitch map\n\t\tthis.pitchMap = [];\n\t\tfor (const c in this.channels) {\n\t\t\tfor (const n in this.channels[c]) {\n\t\t\t\tconst pitch = this.channels[c][n].pitch;\n\t\t\t\tthis.pitchMap[pitch] = this.pitchMap[pitch] || [];\n\n\t\t\t\tthis.pitchMap[pitch].push(this.channels[c][n]);\n\t\t\t}\n\t\t}\n\n\t\tthis.pitchMap.forEach(notes => notes.sort((n1, n2) => n1.start - n2.start));\n\n\n\t\t/*// setup measure notes index\n\t\tif (this.measures) {\n\t\t\tconst measure_list = [];\n\n\t\t\tlet last_measure = null;\n\t\t\tconst measure_entries = Object.entries(this.measures).sort((e1, e2) => Number(e1[0]) - Number(e2[0]));\n\t\t\tfor (const [t, measure] of measure_entries) {\n\t\t\t\t//console.log(\"measure time:\", Number(t));\n\t\t\t\tmeasure.startTick = Number(t);\n\t\t\t\tmeasure.notes = [];\n\n\t\t\t\tif (last_measure)\n\t\t\t\t\tlast_measure.endTick = measure.startTick;\n\n\t\t\t\tconst m = measure.measure;\n\t\t\t\tmeasure_list[m] = measure_list[m] || [];\n\t\t\t\tmeasure_list[m].push(measure);\n\n\t\t\t\tlast_measure = measure;\n\t\t\t}\n\t\t\tif (last_measure)\n\t\t\t\tlast_measure.endTick = this.notes[this.notes.length - 1].endTick;\n\t\t\tfor (const i in this.notes) {\n\t\t\t\tconst note = this.notes[i];\n\t\t\t\tfor (const t in this.measures) {\n\t\t\t\t\tconst measure = this.measures[t];\n\t\t\t\t\tif (note.startTick >= measure.startTick && note.startTick < measure.endTick || note.endTick > measure.startTick && note.endTick <= measure.endTick)\n\t\t\t\t\t\tmeasure.notes.push(note);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.measure_list = measure_list;\n\t\t}*/\n\n\n\t\t// prepare beats info\n\t\tif (this.meta.beatInfos) {\n\t\t\tfor (let i = 0; i < this.meta.beatInfos.length; ++i) {\n\t\t\t\tconst info = this.meta.beatInfos[i];\n\t\t\t\tif (i > 0) {\n\t\t\t\t\tconst lastInfo = this.meta.beatInfos[i - 1];\n\t\t\t\t\tinfo.beatIndex = lastInfo.beatIndex + Math.ceil((info.tick - lastInfo.tick) / this.ticksPerBeat);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tinfo.beatIndex = 0;\n\t\t\t}\n\t\t}\n\n\n\t\t// compute tempos tick -> time\n\t\t{\n\t\t\tlet time = 0;\n\t\t\tlet ticks = 0;\n\t\t\tlet tempo = 500000;\n\t\t\tfor (const entry of this.tempos) {\n\t\t\t\tconst deltaTicks = entry.tick - ticks;\n\t\t\t\ttime += (tempo / 1000) * deltaTicks / this.ticksPerBeat;\n\n\t\t\t\tticks = entry.tick;\n\t\t\t\ttempo = entry.tempo;\n\n\t\t\t\tentry.time = time;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfindChordBySoftindex (softIndex, radius = 0.8) {\n\t\treturn this.notes.filter(note => Math.abs(note.softIndex - softIndex) < radius);\n\t}\n\n\n\taverageTempo (tickRange) {\n\t\ttickRange = tickRange || {from: 0, to: this.endtick};\n\n\t\tconsole.assert(this.tempos, \"no tempos.\");\n\t\tconsole.assert(tickRange.to > tickRange.from, \"range is invalid:\", tickRange);\n\n\t\tconst span = index => {\n\t\t\tconst from = Math.max(tickRange.from, this.tempos[index].tick);\n\t\t\tconst to = (index < this.tempos.length - 1) ? Math.min(this.tempos[index + 1].tick, tickRange.to) : tickRange.to;\n\n\t\t\treturn Math.max(0, to - from);\n\t\t};\n\n\t\tconst tempo_sum = this.tempos.reduce((sum, tempo, index) => sum + tempo.tempo * span(index), 0);\n\n\t\tconst average = tempo_sum / (tickRange.to - tickRange.from);\n\n\t\t// convert microseconds per beat to beats per minute\n\t\treturn 60e+6 / average;\n\t}\n\n\n\tticksToTime (tick) {\n\t\tconsole.assert(Number.isFinite(tick), \"invalid tick value:\", tick);\n\t\tconsole.assert(this.tempos && this.tempos.length, \"no tempos.\");\n\n\t\tconst next_tempo_index = this.tempos.findIndex(tempo => tempo.tick > tick);\n\t\tconst tempo_index = next_tempo_index < 0 ? this.tempos.length - 1 : Math.max(next_tempo_index - 1, 0);\n\n\t\tconst tempo = this.tempos[tempo_index];\n\n\t\treturn tempo.time + (tick - tempo.tick) * tempo.tempo * 1e-3 / this.ticksPerBeat;\n\t}\n\n\n\ttimeToTicks (time) {\n\t\tconsole.assert(Number.isFinite(time), \"invalid time value:\", time);\n\t\tconsole.assert(this.tempos && this.tempos.length, \"no tempos.\");\n\n\t\tconst next_tempo_index = this.tempos.findIndex(tempo => tempo.time > time);\n\t\tconst tempo_index = next_tempo_index < 0 ? this.tempos.length - 1 : Math.max(next_tempo_index - 1, 0);\n\n\t\tconst tempo = this.tempos[tempo_index];\n\n\t\treturn tempo.tick + (time - tempo.time) * this.ticksPerBeat / (tempo.tempo * 1e-3);\n\t}\n\n\n\ttickRangeToTimeRange (tickRange) {\n\t\tconsole.assert(tickRange.to >= tickRange.from, \"invalid tick range:\", tickRange);\n\n\t\treturn {\n\t\t\tfrom: this.ticksToTime(tickRange.from),\n\t\t\tto: this.ticksToTime(tickRange.to),\n\t\t};\n\t}\n\n\n\t/*getMeasureRange (measureRange) {\n\t\tconsole.assert(Number.isInteger(measureRange.start) && Number.isInteger(measureRange.end), \"invalid measure range:\", measureRange);\n\t\tconsole.assert(this.measure_list && this.measure_list[measureRange.start] && this.measure_list[measureRange.end], \"no measure data for specific index:\", this.measure_list, measureRange);\n\n\t\tconst startMeasure = this.measure_list[measureRange.start][0];\n\t\tlet endMeasure = null;\n\t\tfor (const measure of this.measure_list[measureRange.end]) {\n\t\t\tif (measure.endTick > startMeasure.startTick) {\n\t\t\t\tendMeasure = measure;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// there no path between start measure and end measure.\n\t\tif (!endMeasure)\n\t\t\treturn null;\n\n\t\tconst tickRange = {from: startMeasure.startTick, to: endMeasure.endTick, duration: endMeasure.endTick - startMeasure.startTick};\n\t\tconst timeRange = this.tickRangeToTimeRange(tickRange);\n\t\ttimeRange.duration = timeRange.to - timeRange.from;\n\n\t\treturn {\n\t\t\ttickRange,\n\t\t\ttimeRange,\n\t\t};\n\t}*/\n\n\n\tscaleTempo ({factor, headTempo}) {\n\t\tconsole.assert(this.tempos && this.tempos.length, \"[Notation.scaleTempo] tempos is empty.\");\n\n\t\tif (headTempo)\n\t\t\tfactor = headTempo / this.tempos[0].tempo;\n\n\t\tconsole.assert(Number.isFinite(factor) && factor > 0, \"[Notation.scaleTempo] invalid factor:\", factor);\n\n\t\tthis.tempos.forEach(tempo => {\n\t\t\ttempo.tempo *= factor;\n\t\t\ttempo.time *= factor;\n\t\t});\n\t\tthis.events.forEach(event => {\n\t\t\tevent.deltaTime *= factor;\n\t\t\tevent.time *= factor;\n\t\t});\n\t\tthis.notes.forEach(note => {\n\t\t\tnote.start *= factor;\n\t\t\tnote.duration *= factor;\n\t\t});\n\n\t\tthis.endTime *= factor;\n\t}\n};\n\n\n\nmodule.exports = {\n\tNotation,\n};\n","\nconst { Notation } = require(\"./MusicNotation.js\");\n\n\n\n//const msDelay = ms => new Promise(resolve => setTimeout(resolve, ms));\nconst animationDelay = () => new Promise(resolve => requestAnimationFrame(resolve));\n\n\nclass MidiPlayer {\n\tconstructor (midiData, {cacheSpan = 600, onMidi, onPlayFinish, onTurnCursor} = {}) {\n\t\tthis.cacheSpan = cacheSpan;\n\t\tthis.onMidi = onMidi;\n\t\tthis.onPlayFinish = onPlayFinish;\n\t\tthis.onTurnCursor = onTurnCursor;\n\n\t\tlet notation;\n\t\tif (midiData.notes && Number.isFinite(midiData.endTime))\n\t\t\tnotation = midiData;\n\t\telse\n\t\t\tnotation = Notation.parseMidi(midiData);\n\n\t\tthis.notation = notation;\n\t\tthis.events = notation.events;\n\t\t//console.log(\"events:\", this.events);\n\n\t\tthis.isPlaying = false;\n\t\tthis.progressTime = 0;\n\t\tthis.startTime = performance.now();\n\t\tthis.duration = notation.endTime;\n\t\tthis.cursorTurnDelta = 0;\n\n\t\tconsole.assert(notation.tempos && notation.tempos.length, \"[MidiPlayer] invalid notation, tempos is empty.\");\n\t}\n\n\n\tdispose () {\n\t\tthis.isPlaying = false;\n\t\tthis.progressTime = 0;\n\t}\n\n\n\tget progressTicks () {\n\t\treturn this.notation.timeToTicks(this.progressTime);\n\t}\n\n\n\tset progressTicks (value) {\n\t\tthis.progressTime = this.notation.ticksToTime(value);\n\n\t\tif (this.onTurnCursor)\n\t\t\tthis.onTurnCursor(this.progressTime);\n\t}\n\n\n\tasync play ({nextFrame = animationDelay} = {}) {\n\t\tif (this.progressTime >= this.duration)\n\t\t\tthis.progressTime = 0;\n\n\t\tlet now = performance.now();\n\t\tthis.startTime = now - this.progressTime;\n\n\t\tthis.isPlaying = true;\n\n\t\tlet currentEventIndex = this.events.findIndex(event => event.time >= now - this.startTime);\n\n\t\twhile (this.isPlaying) {\n\t\t\tfor (; currentEventIndex < this.events.length; ++currentEventIndex) {\n\t\t\t\tconst event = this.events[currentEventIndex];\n\t\t\t\t//console.log(\"play event:\", currentEventIndex, event.time, this.progressTime + this.cacheSpan);\n\t\t\t\tif (!event || event.time > this.progressTime + this.cacheSpan)\n\t\t\t\t\tbreak;\n\n\t\t\t\tif (event.data.type === \"channel\" && this.startTime + event.time >= now)\n\t\t\t\t\tif (this.onMidi)\n\t\t\t\t\t\tthis.onMidi(event.data, this.startTime + event.time);\n\t\t\t}\n\n\t\t\tawait nextFrame();\n\n\t\t\tif (!this.isPlaying)\n\t\t\t\tbreak;\n\n\t\t\tif (this.cursorTurnDelta !== 0) {\n\t\t\t\tconst backturn = this.cursorTurnDelta < 0;\n\n\t\t\t\tthis.startTime -= this.cursorTurnDelta;\n\t\t\t\tthis.cursorTurnDelta = 0;\n\n\t\t\t\tif (backturn) {\n\t\t\t\t\tfor (; currentEventIndex > 0; --currentEventIndex) {\n\t\t\t\t\t\tconst eventTime = this.events[currentEventIndex].time;\n\t\t\t\t\t\tif (this.startTime + eventTime < now)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnow = performance.now();\n\n\t\t\tthis.progressTime = now - this.startTime;\n\n\t\t\tif (this.progressTime > this.duration) {\n\t\t\t\tthis.isPlaying = false;\n\n\t\t\t\tif (this.onPlayFinish)\n\t\t\t\t\tthis.onPlayFinish();\n\t\t\t}\n\t\t}\n\t}\n\n\n\tpause () {\n\t\tthis.isPlaying = false;\n\t}\n\n\n\tturnCursor (time) {\n\t\t//console.log(\"onTurnCursor:\", time, oldTime);\n\t\tif (this.isPlaying)\n\t\t\tthis.cursorTurnDelta += time - this.progressTime;\n\t\telse\n\t\t\tthis.progressTime = time;\n\n\t\tif (this.onTurnCursor)\n\t\t\tthis.onTurnCursor(time);\n\t}\n};\n\n\n\nmodule.exports = MidiPlayer;\n","\nmodule.exports = {\n\tCostStepAttenuation: 0.6,\n\tSkipDeep: 3,\n\tPriorDistanceSigmoidFactor: 0.1,\n\tPriorValueSigmoidFactor: 0.12,\n\n\tSkipCost: 0.5,\n\tLagOffsetCost: 1,\n\tLeadOffsetCost: 1.6,\n\tZeroOffsetCost: 0.58,\n\n\tRelocationThreshold: 6,\n};\n","\nconst {pick} = require(\"lodash\");\n\nconst Config = require(\"./config.js\");\n\n\n\nclass Node {\n\tconstructor (s_note, c_note) {\n\t\tthis.s_note = s_note;\n\t\tthis.c_note = c_note;\n\n\t\tconsole.assert(this.s_note.softIndex != null, \"s_note softIndex is null\");\n\t\tthis.offset = this.s_note.softIndex - this.c_note.softIndex;\n\n\t\tthis._prev = null;\n\t\tthis._totalCost = 0;\n\t\tthis._value = 0;\n\t\tthis.cacheDirty = true;\n\n\t\t//this.evaluatePrev(Node.Zero);\n\t}\n\n\n\tget prev () {\n\t\treturn this._prev;\n\t}\n\n\n\tset prev (value) {\n\t\tif (value != this._prev) {\n\t\t\tthis._prev = value;\n\t\t\tthis.cacheDirty = true;\n\t\t}\n\t}\n\n\n\tget si () {\n\t\treturn this.s_note.index;\n\t}\n\n\n\tget ci () {\n\t\treturn this.c_note.index;\n\t}\n\n\n\tget root () {\n\t\treturn this.prev.root || this;\n\t}\n\n\n\tget rootSi () {\n\t\treturn !this.prev.zero ? this.prev.rootSi : this.si;\n\t}\n\n\n\tget id () {\n\t\treturn `${this.s_note.index},${this.c_note.index}`;\n\t}\n\n\n\tstatic cost (prev, skip, self) {\n\t\treturn prev * Config.CostStepAttenuation + Math.tanh(skip * Config.SkipCost) + Math.tanh(self * 0.5);\n\t}\n\n\n\tupdateCache () {\n\t\tif (this.cacheDirty) {\n\t\t\tthis._totalCost = Node.cost(this.prev.totalCost, this.si - this.prev.si - 1, this.selfCost);\n\t\t\tthis._value = this.prev.value + 1 - Math.tanh(this.selfCost * 0.5);\n\n\t\t\tthis.cacheDirty = false;\n\t\t}\n\t}\n\n\n\tget totalCost () {\n\t\tthis.updateCache();\n\n\t\treturn this._totalCost;\n\t}\n\n\n\tget value () {\n\t\tthis.updateCache();\n\n\t\treturn this._value;\n\t}\n\n\n\tget deep () {\n\t\treturn this.prev.deep + 1;\n\t}\n\n\n\tget path () {\n\t\tconst path = [];\n\t\tfor (let node = this; !node.zero; node = node.prev) {\n\t\t\tpath[node.si] = node.ci;\n\t\t}\n\n\t\tfor (let i = 0; i < path.length; ++i)\n\t\t\tif (typeof path[i] != \"number\")\n\t\t\t\tpath[i] = -1;\n\n\t\treturn path;\n\t}\n\n\n\tdump () {\n\t\treturn pick(this, [\"id\", \"si\", \"ci\", \"rootSi\", \"value\", \"deep\", \"rootSi\", \"offset\", \"prior\", \"selfCost\", \"totalCost\"]);\n\t}\n\n\n\tevaluatePrev (node) {\n\t\tconst cost = this.evaluatePrevCost(node);\n\n\t\tconsole.assert(this.si - node.si >= 1, \"node index error:\", this, node/*, {get [Symbol.toStringTag]() {debugger}}*/);\n\t\t//if (this.si - node.si < 1)\n\t\t//\tdebugger;\n\n\t\tconst totalCost = Node.cost(node.totalCost, this.si - node.si - 1, cost);\n\n\t\tif (!this.prev || totalCost < this.totalCost) {\n\t\t\tthis.prev = node;\n\t\t\tthis.selfCost = cost;\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\tevaluatePrevCost (node) {\n\t\tlet cost = 0;\n\n\t\tif (node.offset != null) {\n\t\t\tconst bias = this.offset - node.offset;\n\t\t\tconst costCoeff = node.zero ? Config.ZeroOffsetCost : (bias > 0 ? Config.LagOffsetCost : Config.LeadOffsetCost);\n\t\t\tcost += (bias * costCoeff) ** 2;\n\t\t}\n\n\t\treturn cost;\n\t}\n\n\n\tpriorByOffset (offset) {\n\t\tconst distance = Math.abs(this.offset - offset) / 1;//(this.s_note.deltaSi + 0.04);\n\n\t\treturn Math.tanh(this.value * Config.PriorValueSigmoidFactor) - Math.tanh(distance * Config.PriorDistanceSigmoidFactor);\n\t\t//return Math.log(this.value) * Math.tanh(4 / distance);\n\t\t//return this.value - distance;\n\t}\n\n\n\tstatic zero () {\n\t\treturn {\n\t\t\tzero: true,\n\t\t\ttotalCost: 0,\n\t\t\tvalue: 0,\n\t\t\tsi: -1,\n\t\t\tci: -1,\n\t\t\tdeep: 0,\n\t\t\toffset: 0,\n\t\t};\n\t}\n};\n\n\n\nmodule.exports = Node;\n","\nconst Config = require(\"./config.js\");\nconst Node = require(\"./node.js\");\n\n\n\nclass Navigator {\n\tconstructor (criterion, sample, options = {}) {\n\t\tthis.criterion = criterion;\n\t\tthis.sample = sample;\n\n\t\tthis.getCursorOffset = options.getCursorOffset || (() => null);\n\t\tthis.outOfPage = options.outOfPage;\n\n\t\tthis.bestNode = null;\n\t\tthis.fineCursor = null;\n\n\t\tthis.breakingSI = sample.notes.length - 1;\n\n\t\tthis.zeroNode = Node.zero();\n\t\tthis.zeroNode.offset = this.getCursorOffset() || 0;\n\n\t\tthis.relocationThreshold = options.relocationThreshold || Config.RelocationThreshold;\n\t}\n\n\n\tstep (index) {\n\t\t//console.log(\"step:\", this.zeroNode.offset);\n\t\tconst note = this.sample.notes[index];\n\n\t\tif (note.matches.length > 0) {\n\t\t\t//console.log(\"zeroNode.offset:\", index, this.zeroNode.offset);\n\t\t\tnote.matches.forEach(node => {\n\t\t\t\tnode.evaluatePrev(this.zeroNode);\n\t\t\t\t//console.log(\"node:\", node, node.evaluatePrevCost(this.zeroNode), node.offset, this.zeroNode.offset);\n\n\t\t\t\tfor (let si = index - 1; si >= Math.max(this.breakingSI + 1, index - Config.SkipDeep); --si) {\n\t\t\t\t\t//const skipCost = Config.SkipCost * (index - 1 - si);\n\n\t\t\t\t\tconst prevNote = this.sample.notes[si];\n\t\t\t\t\tconsole.assert(prevNote, \"prevNote is null:\", si, index, this.sample.notes);\n\t\t\t\t\tprevNote.matches.forEach(prevNode => {\n\t\t\t\t\t\tconst bias = node.offset - prevNode.offset;\n\t\t\t\t\t\tif (/*prevNode.totalCost + skipCost < node.totalCost\n\t\t\t\t\t\t\t&&*/ (bias < 2 / Config.LagOffsetCost && bias > -2 / Config.LeadOffsetCost))\n\t\t\t\t\t\t\tnode.evaluatePrev(prevNode);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tnode.prior = node.totalCost > 1.99 ? -1 : node.priorByOffset(this.zeroNode.offset);\n\n\t\t\t\tif (node.prior > 0 && this.outOfPage) {\n\t\t\t\t\tconst tick = this.criterion.notes[node.ci].startTick;\n\t\t\t\t\tif (this.outOfPage(tick))\n\t\t\t\t\t\tnode.prior -= 0.7;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tnote.matches.sort((c1, c2) => c2.prior - c1.prior);\n\t\t\tthis.cursors = note.matches;\n\t\t\t//console.log(\"navigator cursors:\", this.cursors);\n\n\t\t\tlet fineCursor = null;\n\t\t\tconst nullLength = this.nullSteps(index);\n\n\t\t\tconst cursor = this.cursors[0];\n\t\t\tif (cursor && cursor.totalCost < 1) {\n\t\t\t\t//console.log(\"nullLength:\", nullLength, nullLength * Math.log(cursor.value / 4));\n\t\t\t\tif (cursor.prior > 0 || (cursor.totalCost < 0.4 && Math.log(Math.max(nullLength * cursor.value, 1e-3)) > this.relocationThreshold)) {\n\t\t\t\t\tthis.zeroNode.offset = cursor.offset;\n\n\t\t\t\t\tfineCursor = cursor;\n\n\t\t\t\t\tif (!this.bestNode || cursor.value > this.bestNode.value)\n\t\t\t\t\t\tthis.bestNode = cursor;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (fineCursor)\n\t\t\t\tthis.fineCursor = fineCursor;\n\t\t\telse {\n\t\t\t\tif (!this.resetCursor(index, {breaking: false/*nullLength > Config.SkipDeep*/})) {\n\t\t\t\t\tthis.zeroNode.offset += note.deltaSi * Math.tanh(nullLength);\n\t\t\t\t\tconsole.assert(!Number.isNaN(this.zeroNode.offset), \"zeroNode.offset is NaN.\", note.deltaSi, nullLength);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t\tthis.cursors = [];\n\t}\n\n\n\tpath ({fromIndex = 0, toIndex = this.sample.notes.length - 1} = {}) {\n\t\tconst path = [];\n\n\t\tlet offset = null;\n\n\t\tfor (let si = toIndex; si >= fromIndex;) {\n\t\t\tconst note = this.sample.notes[si];\n\n\t\t\tif (!note.matches.length || note.matches[0].prior < -0.01 || note.matches[0].totalCost >= 1) {\n\t\t\t\t//if (note.matches.length)\n\t\t\t\t//\tconsole.log(\"path -1:\", si, note.matches[0].prior, note.matches[0].totalCost);\n\t\t\t\tpath[si] = -1;\n\t\t\t\t--si;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// sort nodes by backwards heuristic offset\n\t\t\tif (offset != null) {\n\t\t\t\tnote.matches.forEach(node => node.backPrior = (node.totalCost < 1.99 ? node.priorByOffset(offset) : -1));\n\t\t\t\tnote.matches.sort((n1, n2) => n2.backPrior - n1.backPrior);\n\t\t\t}\n\n\t\t\tconst node = note.matches[0];\n\t\t\tnode.path.forEach((ci, si) => path[si] = ci);\n\t\t\t//console.log(\"node path:\", si, node.path);\n\n\t\t\toffset = node.root.offset;\n\n\t\t\tsi = node.rootSi - 1;\n\t\t}\n\n\t\tconsole.assert(path.length == toIndex + 1, \"path length error:\", path, fromIndex, toIndex + 1,\n\t\t\tthis.sample.notes.length, this.sample.notes.length ? this.sample.notes[this.sample.notes.length - 1].index : null);\n\n\t\treturn path;\n\t}\n\n\n\tnullSteps (index) {\n\t\treturn index - (this.fineCursor ? this.fineCursor.si : -1) - 1;\n\t}\n\n\n\tresetCursor (index, {breaking = true} = {}) {\n\t\tif (breaking)\n\t\t\tthis.breakingSI = index;\n\n\t\tconst cursorOffset = this.getCursorOffset();\n\t\tif (cursorOffset != null) {\n\t\t\t//console.log(\"cursorOffset:\", cursorOffset);\n\n\t\t\tthis.zeroNode.offset = cursorOffset;\n\t\t\t//this.breaking = this.nullSteps(index) > Config.SkipDeep;\n\t\t\t//if (this.breaking)\t// trivial zero node si resets result in focus path interruption\n\t\t\tthis.zeroNode.si = index;\n\t\t\tthis.fineCursor = null;\n\n\t\t\tconsole.assert(!Number.isNaN(this.zeroNode.offset), \"zeroNode.offset is NaN.\", cursorOffset);\n\t\t\t//console.log(\"cursor offset reset:\", cursorOffset);\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\tget relocationTendency () {\n\t\tconst cursor = this.cursors && this.cursors[0];\n\t\tif (!cursor)\n\t\t\treturn null;\n\n\t\tconst nullLength = this.nullSteps(cursor.si);\n\t\tif (nullLength <= 0)\n\t\t\treturn 0;\n\n\t\treturn Math.log(Math.max(nullLength * cursor.value, 1e-3)) / this.relocationThreshold;\n\t}\n};\n\n\n\nmodule.exports = Navigator;\n","\nconst Node = require(\"./node.js\");\nconst Navigator = require(\"./navigator.js\");\n\n\n\nconst HEART_BEAT = 800;\t// in ms\nconst SIMULTANEOUS_INTERVAL = HEART_BEAT * 0.24;\n\n\nconst normalizeInterval = interval => Math.tanh(interval / SIMULTANEOUS_INTERVAL);\n\n\n// greater softIndexFactor make 'harder' soft index\nconst makeNoteSoftIndex = function (notes, index, {softIndexFactor = 1} = {}) {\n\tindex = Number(index);\n\n\tconst note = notes[index];\n\n\t// make soft index\n\tif (index > 0) {\n\t\tconst lastNote = notes[index - 1];\n\n\t\tconsole.assert(note.start != null, \"note.start is null\", note);\n\t\tconsole.assert(lastNote.start != null, \"lastNote.start is null\", lastNote);\n\n\t\tnote.deltaSi = normalizeInterval((note.start - lastNote.start) * softIndexFactor);\n\t\tnote.softIndex = lastNote.softIndex + note.deltaSi;\n\n\t\tconsole.assert(!Number.isNaN(note.deltaSi), \"note.deltaSi is NaN.\", note.start, lastNote.start);\n\t}\n\telse {\n\t\tnote.softIndex = 0;\n\t\tnote.deltaSi = 0;\n\t}\n};\n\n\nconst makeMatchNodes = function (note, criterion, zeroNode = Node.zero()) {\n\tnote.matches = [];\n\n\tconst targetList = criterion.pitchMap[note.pitch];\n\tif (targetList) {\n\t\tfor (const targetNote of targetList) {\n\t\t\tconst node = new Node(note, targetNote);\n\t\t\tif (zeroNode)\n\t\t\t\tnode.evaluatePrev(zeroNode);\n\n\t\t\tnote.matches.push(node);\n\t\t}\n\t}\n};\n\n\nconst genNotationContext = function (notation, {softIndexFactor = 1} = {}) {\n\tfor (let i = 0; i < notation.notes.length; ++i)\n\t\tmakeNoteSoftIndex(notation.notes, i, {softIndexFactor});\n};\n\n\nconst runNavigation = async function(criterion, sample, onStep) {\n\tconst navigator = new Navigator(criterion, sample);\n\tnavigator.resetCursor(-1);\n\n\tfor (let i = 0; i < sample.notes.length; ++i) {\n\t\tnavigator.step(i);\n\n\t\tconst next = await (onStep && onStep(i, navigator));\n\t\tif (next === Symbol.for(\"end\")) {\n\t\t\tconsole.log(\"Navigation interrupted.\");\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t//console.log(\"Navigation accomplished.\");\n\n\treturn navigator;\n};\n\n\n\nmodule.exports = {\n\tnormalizeInterval,\n\tmakeNoteSoftIndex,\n\tmakeMatchNodes,\n\tgenNotationContext,\n\trunNavigation,\n\tNavigator,\n\tNode,\n};\n","\nconst MIDI = require(\"./MIDI\");\n\n\n\nconst trackDeltaToAbs = events => {\n\tlet tick = 0;\n\n\tevents.forEach(event => {\n\t\ttick += event.deltaTime;\n\t\tevent.tick = tick;\n\t});\n};\n\n\nconst trackAbsToDelta = events => {\n\tlet lastTick = 0;\n\n\tevents.sort((e1, e2) => e1.tick - e2.tick).forEach(event => {\n\t\tevent.deltaTime = event.tick - lastTick;\n\t\tlastTick = event.tick;\n\t});\n};\n\n\nconst sliceTrack = (track, startTick, endTick) => {\n\ttrackDeltaToAbs(track);\n\n\tconst events = [];\n\tconst status = {};\n\n\ttrack.forEach(event => {\n\t\tif (event.tick >= startTick && event.tick <= endTick && event.subtype !== \"endOfTrack\")\n\t\t\tevents.push({\n\t\t\t\t...event,\n\t\t\t\ttick: event.tick - startTick,\n\t\t\t});\n\t\telse if (event.tick < startTick) {\n\t\t\tswitch (event.type) {\n\t\t\tcase \"meta\":\n\t\t\t\tstatus[event.subtype] = event;\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\n\tObject.values(status).forEach(event => events.push({\n\t\t...event,\n\t\ttick: 0,\n\t}));\n\n\tevents.push({\n\t\ttick: endTick - startTick,\n\t\ttype: \"meta\",\n\t\tsubtype: \"endOfTrack\",\n\t});\n\n\ttrackAbsToDelta(events);\n\n\treturn events;\n};\n\n\nconst sliceMidi = (midi, startTick, endTick) => ({\n\theader: midi.header,\n\ttracks: midi.tracks.map(track => sliceTrack(track, startTick, endTick)),\n});\n\n\nconst TICKS_PER_BEATS = 480;\n\nconst EXCLUDE_MIDI_EVENT_SUBTYPES = [\n\t\"endOfTrack\", \"trackName\",\n\t\"noteOn\", \"noteOff\",\n];\n\n\nfunction encodeToMIDIData(notation, {startTime, unclosedNoteDuration = 30e+3} = {}) {\n\tnotation.microsecondsPerBeat = notation.microsecondsPerBeat || 500000;\n\n\tconst ticksPerBeat = TICKS_PER_BEATS;\n\tconst msToTicks = ticksPerBeat * 1000 / notation.microsecondsPerBeat;\n\n\tconst header = { formatType: 0, ticksPerBeat };\n\tconst track = [];\n\n\tif (!Number.isFinite(startTime)) {\n\t\tif (!notation.notes || !notation.notes[0])\n\t\t\tthrow new Error(\"encodeToMidiData: no start time specificed\");\n\n\t\tstartTime = notation.notes[0].start;\n\t}\n\n\ttrack.push({ time: startTime, type: \"meta\", subtype: \"copyrightNotice\", text: `Composed by MusicWdigets. BUILT on ${new Date(Number(process.env.VUE_APP_BUILD_TIME)).toDateString()}` });\n\n\tconst containsTempo = notation.events && notation.events.find(event => event.subtype == \"setTempo\");\n\tif (!containsTempo) {\n\t\ttrack.push({ time: startTime, type: \"meta\", subtype: \"timeSignature\", numerator: 4, denominator: 4, thirtyseconds: 8 });\n\t\ttrack.push({ time: startTime, type: \"meta\", subtype: \"setTempo\", microsecondsPerBeat: notation.microsecondsPerBeat });\n\t}\n\n\t//if (notation.correspondences)\n\t//\ttrack.push({ time: startTime, type: \"meta\", subtype: \"text\", text: \"find-corres:\" + notation.correspondences.join(\",\") });\n\n\tlet endTime = startTime || 0;\n\n\tif (notation.notes) {\n\t\tfor (const note of notation.notes) {\n\t\t\ttrack.push({\n\t\t\t\ttime: note.start,\n\t\t\t\ttype: \"channel\",\n\t\t\t\tsubtype: \"noteOn\",\n\t\t\t\tchannel: note.channel || 0,\n\t\t\t\tnoteNumber: note.pitch,\n\t\t\t\tvelocity: note.velocity,\n\t\t\t\tfinger: note.finger,\n\t\t\t});\n\n\t\t\tendTime = Math.max(endTime, note.start);\n\n\t\t\tif (Number.isFinite(unclosedNoteDuration))\n\t\t\t\tnote.duration = note.duration || unclosedNoteDuration;\n\t\t\tif (note.duration) {\n\t\t\t\ttrack.push({\n\t\t\t\t\ttime: note.start + note.duration,\n\t\t\t\t\ttype: \"channel\",\n\t\t\t\t\tsubtype: \"noteOff\",\n\t\t\t\t\tchannel: note.channel || 0,\n\t\t\t\t\tnoteNumber: note.pitch,\n\t\t\t\t\tvelocity: 0,\n\t\t\t\t});\n\n\t\t\t\tendTime = Math.max(endTime, note.start + note.duration);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (notation.events) {\n\t\tconst events = notation.events.filter(event => !EXCLUDE_MIDI_EVENT_SUBTYPES.includes(event.data.subtype));\n\t\tfor (const event of events) {\n\t\t\ttrack.push({\n\t\t\t\ttime: event.time,\n\t\t\t\t...event.data,\n\t\t\t});\n\n\t\t\tendTime = Math.max(endTime, event.time);\n\t\t}\n\t}\n\n\ttrack.push({ time: endTime + 100, type: \"meta\", subtype: \"endOfTrack\" });\n\n\ttrack.sort(function (e1, e2) { return e1.time - e2.time; });\n\n\t// append finger event after every noteOn event\n\ttrack.map((event, index) => ({event, index}))\n\t\t.filter(({event}) => event.subtype == \"noteOn\" && event.finger != null)\n\t\t.reverse()\n\t\t.forEach(({event, index}) => track.splice(index + 1, 0, {\n\t\t\ttime: event.time,\n\t\t\ttype: \"meta\",\n\t\t\tsubtype: \"text\",\n\t\t\ttext: `fingering(${event.finger})`,\n\t\t}));\n\n\ttrack.forEach(event => event.ticks = Math.round((event.time - startTime) * msToTicks));\n\ttrack.forEach((event, i) => event.deltaTime = (event.ticks - (i > 0 ? track[i - 1].ticks : 0)));\n\n\treturn {header, tracks: [track]};\n};\n\n\nfunction encodeToMIDI(notation, options) {\n\tconst data = encodeToMIDIData(notation, options);\n\treturn MIDI.encodeMidiFile(data);\n};\n\n\n\nmodule.exports = {\n\tsliceMidi,\n\tencodeToMIDIData,\n\tencodeToMIDI,\n};\n","\nconst MIDI = require(\"./source/inc/MIDI\");\nconst MusicNotation = require(\"./source/inc/MusicNotation\");\nconst MidiPlayer = require(\"./source/inc/MidiPlayer.js\");\nconst Matcher = require(\"./source/inc/Matcher\");\nconst MidiUtils = require(\"./source/inc/MidiUtils.js\");\n\n\n\nmodule.exports = {\n\tMIDI,\n\tMusicNotation,\n\tMidiPlayer,\n\tMatcher,\n\tMidiUtils,\n};\n","import pick from 'lodash/pick';\n\nimport { MusicNotation, MIDI } from '@k-l-lambda/music-widgets';\n\n//import {MeasureLayout, LayoutType} from\nimport { ImplicitType, ChordPosition } from './types';\n\nconst WHOLE_DURATION_MAGNITUDE = 1920;\nconst TICKS_PER_BEAT = WHOLE_DURATION_MAGNITUDE / 4;\n\ninterface Fraction {\n\tnumerator: number;\n\tdenominator: number;\n}\n\ninterface StaffNoteProperties {\n\trest: boolean;\n\ttied: boolean;\n\toverlapped: boolean;\n\timplicitType: ImplicitType;\n\tafterGrace: boolean;\n\tchordPosition: ChordPosition;\n\tdivision: number;\n\n\tcontextIndex: number;\n\tstaffTrack: number;\n}\n\ninterface MetaNote extends MusicNotation.Note, Partial {\n\tid: string;\n\tmeasure: number;\n\tendTick: number;\n}\n\ninterface SubNote {\n\tstartTick: number;\n\tendTick: number;\n\tpitch: number;\n\tvelocity?: number;\n}\n\ninterface MeasureNote extends Partial {\n\ttick: number;\n\tpitch: number;\n\tduration: number;\n\tchordPosition: ChordPosition;\n\tstaff: number;\n\n\ttrack: number;\n\tchannel: number;\n\tid: string;\n\tids: string[];\n\n\tsubNotes: SubNote[];\n}\n\ninterface MeasureEvent {\n\tdata: any;\n\ttrack: number;\n\tticks?: number;\n}\n\ninterface Measure {\n\ttick: number;\n\tduration: number;\n\n\tnotes: MeasureNote[];\n\tevents?: MeasureEvent[];\n\ttimeSignature?: Fraction;\n\tkeySignature?: number;\n}\n\ninterface PerformOptions {\n\twithRestTied?: boolean;\n}\n\ninterface MidiEvent extends MIDI.MidiEvent {\n\tticks?: number;\n\tmeasure?: number;\n\tids?: string[];\n\tstaffTrack?: number;\n\tstaff?: number;\n}\ntype MidiTrack = MidiEvent[];\n\nconst EXTRA_NOTE_FIELDS = ['rest', 'tied', 'overlapped', 'implicitType', 'afterGrace', 'contextIndex', 'staffTrack', 'chordPosition', 'division'];\nconst COMMON_NOTE_FIELDS = ['id', 'ids', 'pitch', 'velocity', 'track', 'channel', ...EXTRA_NOTE_FIELDS];\n\nclass MetaNotation {\n\t//pitchContextGroup: PitchContextTable[];\n\t//measureLayout: MeasureLayout;\n\tmeasures: Measure[];\n\n\ttrackNames: string[];\n\tidTrackMap: { [key: string]: number };\n\n\tripe: boolean = false;\n\n\tstatic fromAbsoluteNotes(notes: MetaNote[], measureHeads: number[], data?: Partial): MetaNotation {\n\t\tconst notation = new MetaNotation(data);\n\n\t\tnotation.measures = Array(measureHeads.length)\n\t\t\t.fill(null)\n\t\t\t.map((__, i) => {\n\t\t\t\tconst tick = measureHeads[i];\n\t\t\t\tconst duration = measureHeads[i + 1] ? measureHeads[i + 1] - tick : 0;\n\n\t\t\t\tconst mnotes = notes\n\t\t\t\t\t.filter((note) => note.measure === i + 1)\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(note) =>\n\t\t\t\t\t\t\t({\n\t\t\t\t\t\t\t\ttick: note.startTick - tick,\n\t\t\t\t\t\t\t\tduration: note.endTick - note.startTick,\n\t\t\t\t\t\t\t\t...pick(note, COMMON_NOTE_FIELDS),\n\t\t\t\t\t\t\t\tsubNotes: [],\n\t\t\t\t\t\t\t} as MeasureNote)\n\t\t\t\t\t);\n\n\t\t\t\t// reduce note data size\n\t\t\t\tmnotes.forEach((mn) =>\n\t\t\t\t\t['rest', 'tied', 'implicitType', 'afterGrace'].forEach((field) => {\n\t\t\t\t\t\tif (!mn[field]) delete mn[field];\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration,\n\t\t\t\t\tnotes: mnotes,\n\t\t\t\t};\n\t\t\t});\n\n\t\tnotation.idTrackMap = notes.reduce((map, note) => {\n\t\t\tif (note.id) map[note.id] = note.track;\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn notation;\n\t}\n\n\tstatic performAbsoluteNotes(abNotes: MetaNote[], { withRestTied = false }: PerformOptions = {}): MusicNotation.Note[] {\n\t\tconst notes = abNotes\n\t\t\t.filter((note) => (withRestTied || (!note.rest && !note.tied)) && !note.overlapped)\n\t\t\t.map((note) => ({\n\t\t\t\tmeasure: note.measure,\n\t\t\t\tchannel: note.channel,\n\t\t\t\ttrack: note.track,\n\t\t\t\tstart: note.start,\n\t\t\t\tstartTick: note.startTick,\n\t\t\t\tendTick: note.endTick,\n\t\t\t\tpitch: note.pitch,\n\t\t\t\tduration: note.duration,\n\t\t\t\tvelocity: note.velocity || 127,\n\t\t\t\tid: note.id,\n\t\t\t\tids: note.ids,\n\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\tcontextIndex: note.contextIndex,\n\t\t\t\timplicitType: note.implicitType,\n\t\t\t\tchordPosition: note.chordPosition,\n\t\t\t}));\n\n\t\tconst noteMap = notes.reduce((map, note) => {\n\t\t\tconst key = `${note.channel}|${note.start}|${note.pitch}`;\n\t\t\tconst priorNote = map[key];\n\t\t\tif (priorNote) priorNote.ids.push(...note.ids);\n\t\t\telse map[key] = note;\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn Object.values(noteMap);\n\t}\n\n\tconstructor(data?: Partial) {\n\t\tif (data) Object.assign(this, data);\n\t}\n\n\t/*get ordinaryMeasureIndices (): number[] {\n\t\tif (this.measureLayout)\n\t\t\treturn this.measureLayout.serialize(LayoutType.Ordinary);\n\n\t\treturn Array(this.measures.length).fill(null).map((_, i) => i + 1);\n\t}*/\n\n\t// In Lilypond 2.20.0, minus tick value at the head of a track result in MIDI event time bias,\n\t//\tSo store the bias values to correct MIDI time from lilyond.\n\tget trackTickBias(): { [key: string]: number } {\n\t\tconst headMeasure = this.measures[0];\n\t\treturn this.trackNames.reduce((map, name, track) => {\n\t\t\tmap[name] = 0;\n\t\t\tif (headMeasure) {\n\t\t\t\tconst note = headMeasure.notes.find((note) => note.track === track);\n\t\t\t\tif (note) map[name] = Math.min(note.tick, 0);\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget idSet(): Set {\n\t\treturn this.measures.reduce(\n\t\t\t(set, measure) => (measure.notes.filter((note) => !note.rest).forEach((note) => note.ids.forEach((id) => set.add(id))), set),\n\t\t\tnew Set()\n\t\t);\n\t}\n\n\ttoJSON() {\n\t\treturn {\n\t\t\t__prototype: 'LilyNotation',\n\t\t\t//pitchContextGroup: this.pitchContextGroup,\n\t\t\t//measureLayout: this.measureLayout,\n\t\t\tmeasures: this.measures,\n\t\t\tidTrackMap: this.idTrackMap,\n\t\t\ttrackNames: this.trackNames,\n\t\t\tripe: this.ripe,\n\t\t};\n\t}\n\n\ttoAbsoluteNotes(measureIndices: number[] /*= this.ordinaryMeasureIndices*/): MetaNote[] {\n\t\tlet measureTick = 0;\n\t\tconst measureNotes: MetaNote[][] = measureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\n\t\t\tconst notes = measure.notes.map((mnote) => {\n\t\t\t\treturn {\n\t\t\t\t\tstartTick: measureTick + mnote.tick,\n\t\t\t\t\tendTick: measureTick + mnote.tick + mnote.duration,\n\t\t\t\t\tstart: measureTick + mnote.tick,\n\t\t\t\t\tduration: mnote.duration,\n\t\t\t\t\tmeasure: index,\n\t\t\t\t\t...pick(mnote, COMMON_NOTE_FIELDS),\n\t\t\t\t} as MetaNote;\n\t\t\t});\n\n\t\t\tmeasureTick += measure.duration;\n\n\t\t\treturn notes;\n\t\t});\n\n\t\treturn [].concat(...measureNotes);\n\t}\n\n\t/*getMeasureIndices (type: LayoutType) {\n\t\treturn this.measureLayout.serialize(type);\n\t}*/\n\n\ttoPerformingNotation(measureIndices: number[] /*= this.ordinaryMeasureIndices*/, options: PerformOptions = {}): MusicNotation.Notation {\n\t\t//console.debug(\"toPerformingNotation:\", this, measureIndices);\n\t\tconst abNotes = this.toAbsoluteNotes(measureIndices);\n\t\tconst notes = MetaNotation.performAbsoluteNotes(abNotes, options);\n\n\t\t//const lastNote = notes[notes.length - 1];\n\t\tconst endTime = Math.max(...notes.map((note) => note.start + note.duration));\n\n\t\tconst endTick = measureIndices.reduce((tick, index) => tick + this.measures[index - 1].duration, 0);\n\n\t\tconst notation = new MusicNotation.Notation({\n\t\t\tticksPerBeat: TICKS_PER_BEAT,\n\t\t\tmeta: {},\n\t\t\ttempos: [], // TODO\n\t\t\tchannels: [notes],\n\t\t\tendTime,\n\t\t\tendTick,\n\t\t});\n\n\t\treturn notation;\n\t}\n\n\ttoPerformingMIDI(measureIndices: number[], { trackList }: { trackList?: boolean[] } = {}): MIDI.MidiData & { zeroTick: number } {\n\t\tif (!measureIndices.length) return null;\n\n\t\t// to avoid begin minus tick\n\t\tconst zeroTick = -Math.min(0, ...(this.measures[0]?.events.map((e) => e.ticks) || []), ...(this.measures[0]?.notes.map((note) => note.tick) || []));\n\n\t\tlet measureTick = zeroTick;\n\t\tconst measureEvents: MeasureEvent[][] = measureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\n\t\t\tconst events = measure.events.map((mevent) => ({\n\t\t\t\tticks: measureTick + mevent.ticks,\n\t\t\t\ttrack: mevent.track,\n\t\t\t\tdata: {\n\t\t\t\t\t...mevent.data,\n\t\t\t\t\tmeasure: index,\n\t\t\t\t},\n\t\t\t}));\n\n\t\t\tmeasureTick += measure.duration;\n\n\t\t\treturn events;\n\t\t});\n\n\t\tconst eventPriority = (event: MidiEvent): number => event.ticks + (event.subtype === 'noteOff' ? -1e-8 : 0);\n\n\t\tconst tracks: MidiTrack[] = [].concat(...measureEvents).reduce((tracks, mevent) => {\n\t\t\ttracks[mevent.track] = tracks[mevent.track] || [];\n\t\t\ttracks[mevent.track].push({\n\t\t\t\tticks: mevent.ticks,\n\t\t\t\t...mevent.data,\n\t\t\t});\n\n\t\t\treturn tracks;\n\t\t}, []);\n\n\t\ttracks[0] = tracks[0] || [];\n\t\t/*tracks[0].push({\n\t\t\tticks: 0,\n\t\t\ttype: \"meta\",\n\t\t\tsubtype: \"text\",\n\t\t\ttext: `${npmPackage.name} ${npmPackage.version}`,\n\t\t});*/\n\n\t\t// append note events\n\t\tmeasureTick = zeroTick;\n\t\tmeasureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\t\t\tif (!Number.isFinite(measure.duration)) return;\n\n\t\t\tmeasure.notes.forEach((note) => {\n\t\t\t\tif (trackList && !trackList[note.track]) return;\n\n\t\t\t\tif (note.rest) return;\n\n\t\t\t\tconst tick = measureTick + note.tick;\n\n\t\t\t\tconst track = (tracks[note.track] = tracks[note.track] || []);\n\n\t\t\t\tnote.subNotes.forEach((subnote) => {\n\t\t\t\t\ttrack.push({\n\t\t\t\t\t\tticks: tick + subnote.startTick,\n\t\t\t\t\t\tmeasure: index,\n\t\t\t\t\t\tids: note.ids,\n\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\tsubtype: 'noteOn',\n\t\t\t\t\t\tchannel: note.channel,\n\t\t\t\t\t\tnoteNumber: subnote.pitch,\n\t\t\t\t\t\tvelocity: subnote.velocity,\n\t\t\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\t\t\tstaff: note.staff,\n\t\t\t\t\t});\n\n\t\t\t\t\ttrack.push({\n\t\t\t\t\t\tticks: tick + subnote.endTick,\n\t\t\t\t\t\tmeasure: index,\n\t\t\t\t\t\tids: note.ids,\n\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\tsubtype: 'noteOff',\n\t\t\t\t\t\tchannel: note.channel,\n\t\t\t\t\t\tnoteNumber: subnote.pitch,\n\t\t\t\t\t\tvelocity: 0,\n\t\t\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\t\t\tstaff: note.staff,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tmeasureTick += measure.duration;\n\t\t});\n\n\t\tconst finalTick = measureTick;\n\n\t\t// ensure no empty track\n\t\tfor (let t = 0; t < tracks.length; ++t) tracks[t] = tracks[t] || [];\n\n\t\t// sort & make deltaTime\n\t\ttracks.forEach((events) => {\n\t\t\tevents.sort((e1, e2) => eventPriority(e1) - eventPriority(e2));\n\n\t\t\tlet ticks = 0;\n\t\t\tevents.forEach((event) => {\n\t\t\t\tevent.deltaTime = event.ticks - ticks;\n\t\t\t\tif (!Number.isFinite(event.deltaTime)) event.deltaTime = 0;\n\t\t\t\telse ticks = event.ticks;\n\t\t\t});\n\n\t\t\tevents.push({ deltaTime: Math.max(finalTick - ticks, 0), type: 'meta', subtype: 'endOfTrack' });\n\t\t});\n\n\t\treturn {\n\t\t\theader: {\n\t\t\t\tformatType: 0,\n\t\t\t\tticksPerBeat: TICKS_PER_BEAT,\n\t\t\t},\n\t\t\ttracks,\n\t\t\tzeroTick,\n\t\t};\n\t}\n\n\ttoPerformingNotationWithEvents(measureIndices: number[], options: { trackList?: boolean[] } = {}): MusicNotation.Notation {\n\t\tif (!measureIndices.length) return null;\n\n\t\tconst { zeroTick, ...midi } = this.toPerformingMIDI(measureIndices, options);\n\t\tconst notation = MusicNotation.Notation.parseMidi(midi);\n\n\t\tassignNotationNoteDataFromEvents(notation);\n\n\t\tlet tick = zeroTick;\n\n\t\tnotation.measures = measureIndices.map((index) => {\n\t\t\tconst startTick = tick;\n\t\t\ttick += this.measures[index - 1].duration;\n\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tstartTick,\n\t\t\t\tendTick: tick,\n\t\t\t};\n\t\t});\n\n\t\treturn notation;\n\t}\n\n\t// find the MIDI event of setTempo in measures data, and change the value of microsecondsPerBeat\n\tsetTempo(bpm: number): boolean {\n\t\tlet found = false;\n\t\tfor (const measure of this.measures) {\n\t\t\tfor (const event of measure.events) {\n\t\t\t\tif (event.data.subtype === 'setTempo') {\n\t\t\t\t\tevent.data.microsecondsPerBeat = 60e6 / bpm;\n\t\t\t\t\tfound = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn found;\n\t}\n}\n\nconst assignNotationNoteDataFromEvents = (midiNotation: MusicNotation.NotationData, fields = ['ids', 'measure', 'staffTrack']) => {\n\tconst noteId = (channel: number, pitch: number, tick: number): string => `${channel}|${pitch}|${tick}`;\n\n\tconst noteMap = midiNotation.notes.reduce((map, note) => {\n\t\tmap[noteId(note.channel, note.pitch, note.startTick)] = note;\n\n\t\treturn map;\n\t}, {});\n\n\tmidiNotation.events.forEach((event) => {\n\t\tif (event.data.subtype === 'noteOn') {\n\t\t\tconst id = noteId(event.data.channel, event.data.noteNumber, event.ticks);\n\t\t\tconst note = noteMap[id];\n\t\t\tconsole.assert(!!note, 'cannot find note of', id);\n\n\t\t\tif (note) Object.assign(note, pick(event.data, fields));\n\t\t}\n\t});\n};\n\nexport { MetaNote, MetaNotation, MidiEvent };\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","import _SHA256 from 'crypto-js/sha256';\n\nconst SHA256 = (source: string): Uint8Array => {\n\tconst { words, sigBytes } = _SHA256(source);\n\tconst uwords = words.map((x) => (x < 0 ? x + 0x100000000 : x));\n\tconst word_len = sigBytes / words.length;\n\n\treturn new Uint8Array(sigBytes).map((_, i) => (uwords[Math.floor(i / word_len)] >> ((3 - (i % word_len)) * 8)) & 0xff);\n};\n\ntype Hash = Uint8Array;\nconst HASH_LEN = 256;\n\nclass HashVector {\n\tfields: number[];\n\n\tstatic fromHash(hash: Hash): HashVector {\n\t\tconst fields = [];\n\t\tfor (const byte of hash) {\n\t\t\tfor (let b = 0; b < 8; ++b) fields.push((byte >> b) & 1 ? 1 : -1);\n\t\t}\n\n\t\treturn new HashVector(fields);\n\t}\n\n\tstatic fromString(source: string): HashVector {\n\t\tconst hash = SHA256(source);\n\t\treturn HashVector.fromHash(hash);\n\t}\n\n\tstatic fromWords(words: string[]): HashVector {\n\t\tconst vs = words.map((word) => HashVector.fromString(word));\n\t\treturn vs.reduce((sum, v) => sum.add(v), HashVector.zero);\n\t}\n\n\tstatic concat(...vectors: HashVector[]): HashVector {\n\t\tconst fields = vectors.map((v) => v.fields).flat(1);\n\n\t\treturn new HashVector(fields);\n\t}\n\n\tconstructor(fields: number[] | null = null) {\n\t\tthis.fields = fields || Array(HASH_LEN).fill(0);\n\t}\n\n\tget length(): number {\n\t\treturn this.fields.length;\n\t}\n\n\ttoHash(): Hash {\n\t\treturn Uint8Array.from(\n\t\t\tArray(this.length / 8)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => {\n\t\t\t\t\tconst bits = this.fields.slice(i * 8, (i + 1) * 8);\n\n\t\t\t\t\treturn bits.reduce((byte, bit, b) => byte | ((bit > 0 ? 1 : 0) << b), 0);\n\t\t\t\t})\n\t\t) as Hash;\n\t}\n\n\tadd(vec: HashVector): this {\n\t\tthis.fields.forEach((value, i) => (this.fields[i] = value + vec.fields[i]));\n\n\t\treturn this;\n\t}\n\n\tscale(factor: number): this {\n\t\tthis.fields = this.fields.map((value) => value * factor);\n\n\t\treturn this;\n\t}\n\n\tsub(crop: number): HashVector {\n\t\tconst fields = crop > 0 ? this.fields.slice(0, crop) : this.fields.slice(crop);\n\t\treturn new HashVector(fields);\n\t}\n\n\tstatic get zero(): HashVector {\n\t\treturn new HashVector();\n\t}\n}\n\nconst odds = (byte: number): number => {\n\tlet result = 0;\n\tfor (let b = byte; b > 0; b >>= 1) {\n\t\tif (b % 2) ++result;\n\t}\n\n\treturn result;\n};\nconst ODDS = Array(2 ** 8)\n\t.fill(0)\n\t.map((_, i) => odds(i));\nconst ODDS_HEX = ODDS.reduce((table, odd, i) => ({ ...table, [('0' + i.toString(16)).slice(-2)]: odd }), {});\n\nconst countOnes = (hash: Hash): number => hash.reduce((sum, byte) => sum + ODDS[byte], 0);\n\nconst xorHashes = (hash1: Hash, hash2: Hash): Hash => hash1.map((byte, i) => byte ^ hash2[i]) as Hash;\n\nconst cosHashes = (hash1: Hash, hash2: Hash): number => {\n\tconst len = hash1.length * 8;\n\n\tconst xor = xorHashes(hash1, hash2);\n\tconst ones = countOnes(xor);\n\n\treturn (len - ones * 2) / len;\n};\n\nconst cosBigInts = (hash1: bigint, hash2: bigint, len: number = HASH_LEN): number => {\n\tconst xor = hash1 ^ hash2;\n\tconst xor_hex = '0'.repeat(len / 4) + xor.toString(16);\n\n\tconst ones = Array(len / 8)\n\t\t.fill(0)\n\t\t.reduce((ones, _, i) => ones + ODDS_HEX[xor_hex.slice((i + 1) * -2, i ? i * -2 : undefined)], 0);\n\n\treturn (len - ones * 2) / len;\n};\n\nconst i2hex = (i) => ('0' + i.toString(16)).slice(-2);\nconst hashToHex = (hash: Hash): string => Array.from(hash).map(i2hex).join('');\n\nconst hexToHash = (hex: string): Hash =>\n\tUint8Array.from(\n\t\tArray(hex.length / 2)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => hex.substring(i * 2, (i + 1) * 2))\n\t\t\t.map((x) => parseInt(x, 16))\n\t);\n\nconst hashToBigInt = (hash: Hash): bigint => {\n\t// __NOT_FOR_BROWSER_\n\treturn Array.from(hash).reduce((r, x) => r * 0x100n + BigInt(x), 0n);\n\t/*\n\t// _NOT_FOR_BROWSER__\n\tthrow new Error('BigInt not supported');\n\t//*/\n};\n\nconst hashFromWords = (words: string[]): Hash => HashVector.fromWords(words).toHash();\n\nexport { Hash, HashVector, cosHashes, cosBigInts, hashToHex, hexToHash, hashToBigInt, hashFromWords };\n","var Sylvester = {}\n\nSylvester.Matrix = function () {}\n\nSylvester.Matrix.create = function (elements) {\n var M = new Sylvester.Matrix()\n return M.setElements(elements)\n}\n\nSylvester.Matrix.I = function (n) {\n var els = [],\n i = n,\n j\n while (i--) {\n j = n\n els[i] = []\n while (j--) {\n els[i][j] = i === j ? 1 : 0\n }\n }\n return Sylvester.Matrix.create(els)\n}\n\nSylvester.Matrix.prototype = {\n dup: function () {\n return Sylvester.Matrix.create(this.elements)\n },\n\n isSquare: function () {\n var cols = this.elements.length === 0 ? 0 : this.elements[0].length\n return this.elements.length === cols\n },\n\n toRightTriangular: function () {\n if (this.elements.length === 0) return Sylvester.Matrix.create([])\n var M = this.dup(),\n els\n var n = this.elements.length,\n i,\n j,\n np = this.elements[0].length,\n p\n for (i = 0; i < n; i++) {\n if (M.elements[i][i] === 0) {\n for (j = i + 1; j < n; j++) {\n if (M.elements[j][i] !== 0) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[i][p] + M.elements[j][p])\n }\n M.elements[i] = els\n break\n }\n }\n }\n if (M.elements[i][i] !== 0) {\n for (j = i + 1; j < n; j++) {\n var multiplier = M.elements[j][i] / M.elements[i][i]\n els = []\n for (p = 0; p < np; p++) {\n // Elements with column numbers up to an including the number of the\n // row that we're subtracting can safely be set straight to zero,\n // since that's the point of this routine and it avoids having to\n // loop over and correct rounding errors later\n els.push(\n p <= i ? 0 : M.elements[j][p] - M.elements[i][p] * multiplier\n )\n }\n M.elements[j] = els\n }\n }\n }\n return M\n },\n\n determinant: function () {\n if (this.elements.length === 0) {\n return 1\n }\n if (!this.isSquare()) {\n return null\n }\n var M = this.toRightTriangular()\n var det = M.elements[0][0],\n n = M.elements.length\n for (var i = 1; i < n; i++) {\n det = det * M.elements[i][i]\n }\n return det\n },\n\n isSingular: function () {\n return this.isSquare() && this.determinant() === 0\n },\n\n augment: function (matrix) {\n if (this.elements.length === 0) {\n return this.dup()\n }\n var M = matrix.elements || matrix\n if (typeof M[0][0] === 'undefined') {\n M = Sylvester.Matrix.create(M).elements\n }\n var T = this.dup(),\n cols = T.elements[0].length\n var i = T.elements.length,\n nj = M[0].length,\n j\n if (i !== M.length) {\n return null\n }\n while (i--) {\n j = nj\n while (j--) {\n T.elements[i][cols + j] = M[i][j]\n }\n }\n return T\n },\n\n inverse: function () {\n if (this.elements.length === 0) {\n return null\n }\n if (!this.isSquare() || this.isSingular()) {\n return null\n }\n var n = this.elements.length,\n i = n,\n j\n var M = this.augment(Sylvester.Matrix.I(n)).toRightTriangular()\n var np = M.elements[0].length,\n p,\n els,\n divisor\n var inverse_elements = [],\n new_element\n // Sylvester.Matrix is non-singular so there will be no zeros on the\n // diagonal. Cycle through rows from last to first.\n while (i--) {\n // First, normalise diagonal elements to 1\n els = []\n inverse_elements[i] = []\n divisor = M.elements[i][i]\n for (p = 0; p < np; p++) {\n new_element = M.elements[i][p] / divisor\n els.push(new_element)\n // Shuffle off the current row of the right hand side into the results\n // array as it will not be modified by later runs through this loop\n if (p >= n) {\n inverse_elements[i].push(new_element)\n }\n }\n M.elements[i] = els\n // Then, subtract this row from those above it to give the identity matrix\n // on the left hand side\n j = i\n while (j--) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[j][p] - M.elements[i][p] * M.elements[j][i])\n }\n M.elements[j] = els\n }\n }\n return Sylvester.Matrix.create(inverse_elements)\n },\n\n setElements: function (els) {\n var i,\n j,\n elements = els.elements || els\n if (elements[0] && typeof elements[0][0] !== 'undefined') {\n i = elements.length\n this.elements = []\n while (i--) {\n j = elements[i].length\n this.elements[i] = []\n while (j--) {\n this.elements[i][j] = elements[i][j]\n }\n }\n return this\n }\n var n = elements.length\n this.elements = []\n for (i = 0; i < n; i++) {\n this.elements.push([elements[i]])\n }\n return this\n },\n}\n\nmodule.exports = function (elements) {\n const mat = Sylvester.Matrix.create(elements).inverse()\n if (mat !== null) {\n return mat.elements\n } else {\n return null\n }\n}\n","import matrixInverse from 'matrix-inverse';\n\nimport { Fraction } from './interfaces';\nimport { fractionMul, reducedFraction, roundNumber } from './utils';\nimport { Logger, DummyLogger } from './logger';\n\ntype Matrix = number[][];\ntype EventID = number;\ntype Time = number;\ntype EventSet = Set;\ntype Equation = number[];\n\nconst EOM = -1; // end event id of measure\n\n//const GREAT_NUMBER = 16 * 9 * 5 * 7 * 11 * 13 * 17 * 19 * 23;\nconst GREAT_NUMBER = 1920;\n\nconst DURATION_MULTIPLIER = 128 * 3 * 5 * 7 * 11 * 13;\n\nconst floatToFrac = (x: number): Fraction => {\n\tconst n = Math.round(x * GREAT_NUMBER);\n\n\treturn reducedFraction(n, GREAT_NUMBER);\n};\n\nconst floatToTimeWarp = (x: number): Fraction => {\n\tif (x === 1) return null;\n\n\treturn floatToFrac(x);\n};\n\ninterface Stage {\n\tevents: EventID[];\n\tindex?: number;\n\ttick?: Time;\n}\n\nenum ActionType {\n\tPLACE,\n\tVERTICAL,\n\tHORIZONTAL,\n}\n\nclass Action {\n\ttype: ActionType;\n\te1: EventID;\n\te2?: EventID;\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tstatic P(e: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.PLACE,\n\t\t\te1: e,\n\t\t});\n\t}\n\n\tstatic V(e1: EventID, e2: EventID, order: number = 1): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.VERTICAL,\n\t\t\te1: order > 0 ? e1 : e2,\n\t\t\te2: order > 0 ? e2 : e1,\n\t\t});\n\t}\n\n\tstatic H(e1: EventID, e2: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.HORIZONTAL,\n\t\t\te1,\n\t\t\te2,\n\t\t});\n\t}\n\n\tget id(): string {\n\t\tswitch (this.type) {\n\t\t\tcase ActionType.PLACE:\n\t\t\t\treturn this.e1.toString();\n\n\t\t\tcase ActionType.VERTICAL:\n\t\t\t\treturn `${this.e1}|${this.e2}`;\n\n\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\treturn `${this.e1}-${this.e2 >= 0 ? this.e2 : '.'}`;\n\t\t}\n\t}\n\n\tget events(): EventID[] {\n\t\treturn [this.e1, this.e2].filter(Number.isFinite);\n\t}\n}\n\ninterface Quota {\n\tcredits: number;\n}\n\ninterface BasicEvent {\n\tid: EventID;\n\tconfidence: number;\n\tshrinkness: number; // the possibility of time warp\n\tx: number;\n\tstaff?: number;\n\tduration: Time;\n}\n\ninterface Event extends BasicEvent {\n\tlowWarp: number;\n}\n\ninterface EventResult {\n\tid: EventID;\n\ttick: Time;\n\tendTick: Time;\n\ttickGroup: number;\n\ttimeWarp?: Fraction;\n}\n\ninterface Environment {\n\tevents: BasicEvent[];\n\texpectedDuration: Time;\n\tmeasureShrinkness: number;\n\tendX: number;\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n}\n\ninterface Solution {\n\tevents: EventResult[];\n\tvoices: EventID[][];\n\tduration: number;\n\n\tloss?: number;\n\tactions?: string;\n\tcredits?: number;\n\ttimes?: number;\n}\n\ninterface Status {\n\tactionAccessing: Map;\n\teventMap: { [id: number]: Event };\n\teventTendencies: number[];\n\tmatrixH: Matrix; // matrix N+1 x N\t\t[right][left]\n\tmatrixV: Matrix; // matrix N x N\n}\n\ninterface NodeBranch {\n\taction: Action;\n\tpossibility: number;\n}\n\ntype Path = EventID[];\n\ninterface InbalanceEquations {\n\tones: boolean[];\n\tinbalances: Equation[];\n}\n\ninterface SolverOptions {\n\tquota?: number;\n\tlogger?: Logger;\n}\n\nclass StageMatrix {\n\tmatrix: EventSet[][];\n\n\tstatic fromNode(node: PathNode, status: Status): StageMatrix {\n\t\tconst matrix = Array(node.stages.length)\n\t\t\t.fill(null)\n\t\t\t.map(() =>\n\t\t\t\tArray(node.stages.length)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => new Set())\n\t\t\t);\n\n\t\tnode.actions\n\t\t\t.filter((action) => action.type === ActionType.HORIZONTAL)\n\t\t\t.forEach((action) => {\n\t\t\t\tconst stage1 = node.stages.findIndex((stage) => stage.events.includes(action.e1));\n\t\t\t\tconst stage2 = node.stages.findIndex((stage) => stage.events.includes(action.e2));\n\t\t\t\tconsole.assert(stage1 >= 0 && stage2 >= 0, 'invalid stages for H action:', node.id, node.stages, action);\n\n\t\t\t\tmatrix[stage1][stage2].add(action.e1);\n\t\t\t});\n\t\tmatrix[0][node.stages.length - 1].add(0); // the entire measure edge\n\n\t\tconst stagedEvents = node.stagedEvents;\n\t\tconst endHs = status.matrixH[status.matrixH.length - 1].filter((_, i) => !stagedEvents.has(i));\n\t\tconst endHP = Math.max(0, Math.max(...endHs) - 0.01);\n\n\t\tconst hActions = node.actions.filter((action) => action.type === ActionType.HORIZONTAL);\n\n\t\tconst pendingHeads = Object.keys(status.eventMap)\n\t\t\t.map(Number)\n\t\t\t.filter((eid) => !hActions.find((action) => action.e2 === eid));\n\n\t\t// edges to end stage\n\t\tnode.stages.forEach((stage) => {\n\t\t\tstage.events.forEach((eid) => {\n\t\t\t\tif (eid > 0) {\n\t\t\t\t\tconst act = hActions.find((action) => action.e1 === eid);\n\t\t\t\t\tif (!act && status.matrixH[status.matrixH.length - 1][eid] >= endHP) {\n\t\t\t\t\t\tif (!pendingHeads.some((id) => status.matrixH[id][eid] > 0)) matrix[stage.index][node.stages.length - 1].add(eid);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn new StageMatrix({ matrix });\n\t}\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tpathOf(x: number, y: number, target: number, ei: number = 0): Path {\n\t\tif (this.matrix[x][y].size) {\n\t\t\tconst eid = [...this.matrix[x][y]][ei];\n\t\t\tif (y === target) return [eid];\n\n\t\t\tfor (let yy = y + 1; yy <= target; ++yy) {\n\t\t\t\tconst sub = this.pathOf(y, yy, target);\n\t\t\t\tif (sub) return [eid, ...sub];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfindDoublePath(s1: number, s2: number): [Path, Path] {\n\t\tconst paths = [];\n\t\tfor (let t = s2; t >= s1 + 1; --t) {\n\t\t\tfor (let ei = 0; ei < this.matrix[s1][t].size; ++ei) {\n\t\t\t\tconst path = this.pathOf(s1, t, s2, ei);\n\t\t\t\tif (path) {\n\t\t\t\t\tpaths.push(path);\n\t\t\t\t\tif (paths.length === 2) return [paths[0], paths[1]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\treducePath(path: Path): void {\n\t\tthis.matrix.forEach((column) => column.forEach((set) => path.forEach((id) => set.delete(id))));\n\t}\n\n\ttoEquations(eventCount: number): Equation[] {\n\t\tconst equations: Equation[] = [];\n\n\t\tfor (let d = 1; d < this.matrix.length; d++) {\n\t\t\tfor (let s1 = 0; s1 < this.matrix.length - d; s1++) {\n\t\t\t\tconst s2 = s1 + d;\n\n\t\t\t\twhile (true) {\n\t\t\t\t\t// find closed loop from s1 to s2\n\t\t\t\t\tconst paths = this.findDoublePath(s1, s2);\n\t\t\t\t\tif (paths) {\n\t\t\t\t\t\tconst [path1, path2] = paths;\n\t\t\t\t\t\tconst equation = Array(eventCount).fill(0);\n\t\t\t\t\t\tpath1.forEach((eid) => (equation[eid] = 1));\n\t\t\t\t\t\tpath2.forEach((eid) => (equation[eid] = -1));\n\t\t\t\t\t\tequations.push(equation);\n\n\t\t\t\t\t\tthis.reducePath(path1.length > path2.length ? path1 : path2);\n\t\t\t\t\t} else break;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn equations;\n\t}\n}\n\nclass PathNode {\n\tlogger: Logger;\n\n\tparent: PathNode;\n\taction: Action;\n\tpossibility: number;\n\tchildren: PathNode[];\n\n\tstages: Stage[];\n\t//stageMatrix: StageMatrix;\n\tconstraints: Equation[];\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\n\t\tconsole.assert(this.logger, 'logger is null:', data);\n\t}\n\n\tget actions(): Action[] {\n\t\tconst last = this.parent ? this.parent.actions : [];\n\t\treturn this.action ? [...last, this.action] : last;\n\t}\n\n\tget id(): string {\n\t\tconst actionIds = this.actions.map((action) => action.id).sort();\n\t\treturn actionIds.join(' ');\n\t}\n\n\tget stagedEvents(): Set {\n\t\tconst set = new Set();\n\t\tif (this.stages) this.stages.forEach((stage) => stage.events.forEach((eid) => eid >= 0 && set.add(eid)));\n\n\t\treturn set;\n\t}\n\n\tlike(ids: string): boolean {\n\t\tconst actionIds = ids.split(' ').sort();\n\t\treturn actionIds.join(' ') === this.id;\n\t}\n\n\tconstructStages(status: Status): void {\n\t\tthis.stages = [{ events: [EOM] }];\n\n\t\tfor (const action of this.actions) {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase ActionType.PLACE:\n\t\t\t\t\tthis.stages.unshift({ events: [action.e1] });\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.VERTICAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid V action:', this.stages, action);\n\n\t\t\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\t\t\tstage1.events.push(...stage2.events);\n\t\t\t\t\t\t\tstage2.events = null;\n\t\t\t\t\t\t\tthis.stages = this.stages.filter((stage) => stage.events);\n\t\t\t\t\t\t} else if (!stage1) stage2.events.unshift(action.e1);\n\t\t\t\t\t\telse if (!stage2) stage1.events.push(action.e2);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid H action:', this.stages, action);\n\n\t\t\t\t\t\tconst newStage = (eid) => {\n\t\t\t\t\t\t\tconsole.assert(status.eventMap[eid], 'invalid event id:', action.id, eid, status.eventMap);\n\t\t\t\t\t\t\tconst x = status.eventMap[eid].x;\n\n\t\t\t\t\t\t\tconst stage = this.stages.find(\n\t\t\t\t\t\t\t\t(s) => s.events.some((e) => e > 0 && status.eventMap[e].x <= x) && s.events.some((e) => e > 0 && status.eventMap[e].x >= x)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (stage) stage.events.push(eid);\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconst newStage = { events: [eid] };\n\t\t\t\t\t\t\t\tconst si = this.stages.findIndex((s) => s.events[0] === EOM || status.eventMap[s.events[0]].x >= x);\n\t\t\t\t\t\t\t\tthis.stages.splice(si, 0, newStage);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (!stage1) newStage(action.e1);\n\t\t\t\t\t\tif (!stage2) newStage(action.e2);\n\n\t\t\t\t\t\t/*if (this.stages.some((s, si) => si < this.stages.length - 2\n\t\t\t\t\t&& s.events.some(e1 => this.stages[si + 1].events.some(e2 => status.eventMap[e2].x <= status.eventMap[e1].x))))\n\t\t\t\t\tdebugger;*/\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.stages.forEach((stage, i) => (stage.index = i));\n\t}\n\n\tconstructConstraints(status: Status): void {\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst stageMatrix = StageMatrix.fromNode(this, status);\n\t\tconst equations = stageMatrix.toEquations(eventCount);\n\n\t\tconst factors = Array(eventCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, id) => status.eventMap[id].duration);\n\t\tthis.constraints = equations.map((equation) => equation.map((it, i) => it * factors[i]));\n\t}\n\n\tinbalancesConstraints(status: Status): InbalanceEquations {\n\t\tconsole.assert(this.constraints, 'constraints not constructed.');\n\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst ones = Array(eventCount).fill(true);\n\t\tconst fixed = Array(eventCount).fill(false);\n\n\t\tconst inbalances: Equation[] = [];\n\n\t\tfor (const constraint of this.constraints) {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum !== 0) {\n\t\t\t\tconst c = sum < 0 ? constraint.map((it) => -it) : constraint;\n\t\t\t\tif (c[0] > 0) continue; // entire measure edge usually is larger than others, no effect\n\n\t\t\t\tinbalances.push(c);\n\n\t\t\t\t// set ones for tight items\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tfixed[i] = fixed[i] || it < 0;\n\t\t\t\t\tif (it) ones[i] = it < 0 || fixed[i];\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// pick out influenced equations\n\t\tthis.constraints.forEach((constraint) => {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum === 0 && !constraint[0]) {\n\t\t\t\tif (constraint.some((it, i) => it && !ones[i])) {\n\t\t\t\t\tconstraint.forEach((it, i) => it && (ones[i] = false));\n\t\t\t\t\tinbalances.push(constraint);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn { ones, inbalances };\n\t}\n\n\tsolveEquations({ ones, inbalances }: InbalanceEquations): number[] {\n\t\tif (!inbalances.length) return ones.map(() => 1);\n\n\t\tconst xis = ones\n\t\t\t.map((fixed, i) => ({ fixed, i }))\n\t\t\t.filter(({ fixed }) => !fixed)\n\t\t\t.map(({ i }) => i)\n\t\t\t.filter((i) => inbalances.some((items) => items[i] !== 0));\n\t\tif (!xis.length) return ones.map(() => 1);\n\n\t\tconst factors = xis.map((i) => Math.abs(inbalances.find((items) => items[i] !== 0)[i]));\n\n\t\ttype Line = { line: number[]; bias: number };\n\n\t\tconst equationMap = new Map();\n\t\tlet conflicted = false;\n\n\t\tconst lines: Line[] = inbalances\n\t\t\t.map((items) => {\n\t\t\t\tconst line = items.filter((_, i) => xis.includes(i));\n\t\t\t\tconst bias = -items.reduce((sum, it, i) => sum + (xis.includes(i) ? 0 : it), 0);\n\n\t\t\t\treturn { line, bias };\n\t\t\t\t// remove duplicated equations\n\t\t\t})\n\t\t\t.filter(({ line, bias }) => {\n\t\t\t\tif (line.every((it) => it === 0)) return false;\n\n\t\t\t\tconst id = line.join(',');\n\t\t\t\tif (equationMap.has(id)) {\n\t\t\t\t\tconflicted = equationMap.get(id) !== bias;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tequationMap.set(id, bias);\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tif (conflicted) return null;\n\n\t\tconst squareLines = lines.slice(0, xis.length);\n\t\tconst restLines = lines.slice(xis.length);\n\t\tif (squareLines.length < xis.length) {\n\t\t\tconst candidateLines = [];\n\t\t\tfor (let i1 = 0; i1 < xis.length - 1; ++i1) {\n\t\t\t\tconst i2 = i1 + 1;\n\t\t\t\tconst line = {\n\t\t\t\t\tline: xis.map((_, i) => (i === i1 ? 1 : i === i2 ? -1 : 0)),\n\t\t\t\t\tbias: 0,\n\t\t\t\t\tprior: (factors[i1] + factors[i2]) / DURATION_MULTIPLIER,\n\t\t\t\t};\n\t\t\t\tif (squareLines.some((sl) => sl.line[i1] && sl.line[i2])) line.prior -= 10;\n\t\t\t\tif (squareLines.some((sl) => sl.line.filter(Number).length === 1 && (sl.line[i1] || sl.line[i2]))) line.prior += 1;\n\t\t\t\tcandidateLines.push(line);\n\t\t\t}\n\t\t\tcandidateLines.sort((c1, c2) => c1.prior - c2.prior);\n\n\t\t\tsquareLines.push(...candidateLines.slice(0, xis.length - squareLines.length));\n\t\t}\n\t\t//console.assert(squareLines.length, \"squareLines is empty.\", lines, xis, equationMap, inbalances);\n\n\t\tconst matrix = squareLines.map(({ line }) => line);\n\t\tconst bias = squareLines.map(({ bias }) => bias);\n\n\t\tconst invert = matrixInverse(matrix);\n\t\tif (!invert) {\n\t\t\tthis.logger.warn('null invert:', matrix);\n\t\t\t//debugger;\n\t\t\treturn null;\n\t\t}\n\t\tconst solution = invert.map((row) => row.reduce((sum, it, i) => sum + it * bias[i], 0));\n\t\t//console.log(\"solution:\", matrix, invert, solution);\n\n\t\tif (restLines.length) {\n\t\t\tif (restLines.some((line) => Math.abs(line.line.reduce((sum, it, i) => sum + it * solution[i], 0)) > 1e-3)) {\n\t\t\t\t//console.debug(\"rest lines not satisfied:\", restLines, solution);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tconst result = ones.map(() => 1);\n\t\txis.forEach((xi, i) => (result[xi] = solution[i]));\n\n\t\treturn result;\n\t}\n\n\toptimallySolve(status: Status): number[] {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 1-2 9|1 2-3 3-4 9-10 4-5 5-6 6-7 7-8 8-. 12|6 11-12 10-11\"))\n\t\t//\tdebugger;\n\n\t\tconst shrinknesses = ones.map((fixed, id) => (fixed ? -1 : roundNumber(status.eventMap[id].shrinkness, 0.01)));\n\t\tconst shrinkMap = shrinknesses.reduce((map, shrinkness, id) => {\n\t\t\tif (shrinkness >= 0) {\n\t\t\t\tmap[shrinkness] = map[shrinkness] || [];\n\t\t\t\tmap[shrinkness].push(id);\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t\tconst groups = Object.entries(shrinkMap)\n\t\t\t.sort((p1, p2) => Number(p2[0]) - Number(p1[0]))\n\t\t\t.map((pair) => pair[1]);\n\t\t//console.log(\"groups:\", groups, shrinknesses);\n\n\t\tfor (let released = 1; released < groups.length; ++released) {\n\t\t\tconst releasedIds = [].concat(...groups.slice(0, released));\n\t\t\tconst fixed = ones.map((_, id) => !releasedIds.includes(id));\n\t\t\tconst warps = this.solveEquations({ ones: fixed, inbalances });\n\n\t\t\tif (warps && warps.every((it, i) => it <= 1 && it > status.eventMap[i].lowWarp)) return warps;\n\t\t}\n\n\t\treturn this.solveEquations({ ones, inbalances });\n\t}\n\n\tisConflicted(status: Status): boolean {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 8|2 8-9 3|9 2-3 3-4 10|4 4-5 5|11 11-12 6|12 5-6 10-11 9-10 6-7\"))\n\t\t//\tdebugger;\n\n\t\tfor (const c of inbalances) {\n\t\t\t// sum with low warps\n\t\t\tconst lowSum = c.reduce((sum, it, i) => sum + it * (ones[i] || it <= 0 ? 1 : status.eventMap[i].lowWarp), 0);\n\n\t\t\tif (lowSum >= 0) {\n\t\t\t\t// mark events' broken tendency\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tif (it) status.eventTendencies[i] += it > 0 ? 1 : -1;\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (!inbalances.length) return false;\n\n\t\tconst timeWarps = this.solveEquations({ ones, inbalances });\n\t\tif (!timeWarps) return true;\n\n\t\treturn !timeWarps.every((it, i) => it > status.eventMap[i].lowWarp && it <= 1);\n\t}\n\n\tgetSolution(status: Status): Solution {\n\t\tconst actionKey = (action) =>\n\t\t\tstatus.eventMap[action.e2]\n\t\t\t\t? status.eventMap[action.e2].x + Math.abs(status.eventMap[action.e2].x - status.eventMap[action.e1].x) * 0.06\n\t\t\t\t: status.eventMap[action.e1].x + 1e4;\n\t\tconst hacts = this.actions.filter((action) => action.type === ActionType.HORIZONTAL).sort((a1, a2) => actionKey(a1) - actionKey(a2));\n\t\tconst hmap = hacts.reduce((map, act) => ({ ...map, [act.e1]: act.e2 }), {});\n\t\tconst startEs = new Set([...Object.keys(hmap)].map(Number));\n\t\thacts.forEach((act) => startEs.delete(act.e2));\n\t\tthis.stages[0].events.forEach((eid) => eid > 0 && startEs.add(eid));\n\n\t\tlet voices = [...startEs].map((se) => {\n\t\t\tconst voice = [se];\n\n\t\t\tlet x = se;\n\t\t\twhile (hmap[x]) {\n\t\t\t\tx = hmap[x];\n\t\t\t\tif (x < 0 || voice.includes(x)) break;\n\n\t\t\t\tvoice.push(x);\n\t\t\t}\n\n\t\t\treturn voice;\n\t\t});\n\n\t\tconst events: EventResult[] = Object.values(status.eventMap)\n\t\t\t.filter((e) => e.id > 0)\n\t\t\t.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\ttick: null,\n\t\t\t\tendTick: null,\n\t\t\t\ttickGroup: null,\n\t\t\t\ttimeWarp: null,\n\t\t\t}));\n\t\tconst eventMap: { [id: number]: EventResult } = events\n\t\t\t.filter((e) => voices.some((voice) => voice.includes(e.id)) || hacts.some((act) => [act.e1, act.e2].includes(e.id)))\n\t\t\t.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.stages.forEach((stage, si) => stage.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tickGroup = si)));\n\n\t\tthis.stages[0].tick = 0;\n\t\tthis.stages[0].events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = 0));\n\n\t\t// solve time warps\n\t\tconst timeWarps = this.optimallySolve(status);\n\t\tevents.forEach((e) => (e.timeWarp = floatToTimeWarp(timeWarps[e.id])));\n\n\t\t//if (this.like(\"1 12|1 1-2 9|2 2-3 13|3 3-4 4-5 10|5 14|10 10-11 8-9 14-15 15|6 6-7 7-. 13-14 5-6 12-13 9-10\"))\n\t\t//\tdebugger;\n\n\t\t// solve stage ticks\n\t\tconst estages = this.stages.slice(0, this.stages.length - 1);\n\t\tconst solveStages = (): boolean => {\n\t\t\tif (estages.every((stage) => Number.isFinite(stage.tick))) return false;\n\n\t\t\tlet changed = false;\n\n\t\t\t// forward\n\t\t\thacts.forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (Number.isFinite(stage1.tick) && !Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage2.tick = stage1.tick + fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage2.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage2.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// backward\n\t\t\t[...hacts].reverse().forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (!Number.isFinite(stage1.tick) && Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage1.tick = stage2.tick - fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage1.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage1.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn changed;\n\t\t};\n\t\twhile (solveStages());\n\n\t\tconsole.assert(\n\t\t\testages.every((stage) => Number.isFinite(stage.tick)),\n\t\t\t'stage ticks not all solved:',\n\t\t\tthis.stages,\n\t\t\tthis.id\n\t\t);\n\t\tevents\n\t\t\t.filter((event) => Number.isFinite(event.tick))\n\t\t\t.forEach((event) => (event.endTick = event.tick + fractionMul(status.eventMap[event.id].duration, event.timeWarp)));\n\n\t\t// clip out of bound events\n\t\tconst measureDuration = status.eventMap[0].duration;\n\t\tvoices.forEach((voice) => {\n\t\t\tconst outEI = voice.findIndex((eid) => eventMap[eid].endTick > measureDuration);\n\t\t\tif (outEI >= 0) {\n\t\t\t\tconst es = voice.splice(outEI, voice.length - outEI);\n\t\t\t\tes.forEach((eid) => {\n\t\t\t\t\teventMap[eid].tick = null;\n\t\t\t\t\teventMap[eid].endTick = null;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tvoices = voices.filter((voice) => voice.length);\n\n\t\tconst duration = Math.max(0, ...events.map((e) => e.endTick).filter(Number.isFinite));\n\t\t//console.log(\"getSolution:\", this);\n\t\tthis.logger.debug(String.fromCodePoint(0x1f34e), this.id, timeWarps);\n\n\t\treturn {\n\t\t\tvoices,\n\t\t\tevents,\n\t\t\tduration,\n\t\t\tactions: this.actions.map((action) => action.id).join(' '),\n\t\t};\n\t}\n\n\tdeduce(status: Status, quota: Quota): Solution {\n\t\tif (!this.stages) this.constructStages(status);\n\t\t//console.log(\"deduce:\", status);\n\n\t\t// increase access counting\n\t\tconst access = status.actionAccessing.get(this.id) || { times: 0 };\n\t\t++access.times;\n\t\tstatus.actionAccessing.set(this.id, access);\n\n\t\tthis.constructConstraints(status);\n\t\t//console.log(\"constraints:\", this.id, this.stages, this.constraints);\n\n\t\tif (this.isConflicted(status)) {\n\t\t\taccess.closed = true;\n\t\t\tthis.logger.info(this.action.id, '\\u274c');\n\t\t\treturn null;\n\t\t}\n\n\t\t//const newStatus = status;\n\t\tthis.logger.group(this.action && this.action.id);\n\n\t\tif (quota.credits > 0) {\n\t\t\t--quota.credits;\n\n\t\t\tif (!this.children) this.expand(status);\n\n\t\t\tthis.children = this.children.filter((node) => !status.actionAccessing.get(node.id) || !status.actionAccessing.get(node.id).closed);\n\t\t\tif (this.children.length) {\n\t\t\t\tconst p = (node: PathNode): number => node.possibility / ((status.actionAccessing.get(node.id) || { times: 0 }).times + 1);\n\t\t\t\tthis.children.sort((n1, n2) => p(n2) - p(n1));\n\n\t\t\t\tfor (const child of this.children) {\n\t\t\t\t\tconst solution = child.deduce(status, quota);\n\t\t\t\t\tif (solution) {\n\t\t\t\t\t\tthis.logger.groupEnd();\n\t\t\t\t\t\treturn solution;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (quota.credits <= 0) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"got the leaf:\", this, status);\n\t\t} else this.logger.debug('quota exhausted.');\n\n\t\tthis.logger.groupEnd();\n\n\t\taccess.closed = true;\n\n\t\treturn this.getSolution(status);\n\t}\n\n\texpand(status: Status): void {\n\t\t//this.action.events.forEach(eid => status.pendingEvents.delete(eid));\n\t\tthis.constructStages(status);\n\n\t\tconst { eventMap, matrixV, matrixH } = status;\n\t\tconst stagedEvents = this.stagedEvents;\n\n\t\tconst branches: NodeBranch[] = [];\n\t\tconst appendBranch = (branch: NodeBranch): void => {\n\t\t\tif (!this.actions.some((a) => a.id === branch.action.id) && !branches.some((b) => b.action.id === branch.action.id)) {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(branch.action.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(branch.action.e2));\n\t\t\t\tif (stage1 === stage2 || (stage1 && stage2 && stage1.index >= stage2.index)) return;\n\n\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\t\tif (stage2.index - stage1.index > 1) return;\n\t\t\t\t\t\tif (this.actions.some((a) => stage1.events.includes(a.e1) && stage2.events.includes(a.e2))) return;\n\t\t\t\t\t} else if (branch.action.type === ActionType.HORIZONTAL) {\n\t\t\t\t\t\tif (stage1.index > stage2.index) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tbranch.action.type === ActionType.HORIZONTAL &&\n\t\t\t\t\tthis.actions.some(\n\t\t\t\t\t\t(a) =>\n\t\t\t\t\t\t\ta.type === ActionType.HORIZONTAL &&\n\t\t\t\t\t\t\t(a.e1 === branch.action.e1 || a.e2 === branch.action.e2 || (a.e1 === branch.action.e2 && a.e2 === branch.action.e1))\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\treturn;\n\n\t\t\t\t// exclude 2 too far away events by vertical\n\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\tif (stage1) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage1.events.map((e) => matrixV[branch.action.e2][e]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (stage2) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage2.events.map((e) => matrixV[e][branch.action.e1]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbranches.push(branch);\n\t\t\t}\n\t\t};\n\n\t\tfor (const eid of stagedEvents) {\n\t\t\tif (eid < 0) continue;\n\n\t\t\tmatrixV[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0 && eid !== id) appendBranch({ action: Action.V(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixV.forEach((ps, id) => {\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.V(eid, id), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH.forEach((ps, id) => {\n\t\t\t\tid = id >= Object.keys(eventMap).length ? -1 : id;\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(eid, id), possibility: p });\n\t\t\t});\n\t\t}\n\n\t\t// If branches not contains extending actions, clear it.\n\t\t//\tBecause pure inner vertical action may be harmful\n\t\tif (\n\t\t\t!branches.some(\n\t\t\t\t(branch) =>\n\t\t\t\t\t[ActionType.HORIZONTAL, ActionType.PLACE].includes(branch.action.type) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e1) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e2)\n\t\t\t)\n\t\t) {\n\t\t\tthis.children = [];\n\t\t\treturn;\n\t\t}\n\n\t\t//console.table(branches.map(b => [b.action.id, b.possibility]));\n\t\t//console.log(\"branches:\", branches.map(b => b.action.id).join(\", \"), \"\\n\", this.actions.map(a => a.id).join(\", \"));\n\t\tthis.children = branches.map((branch) => new PathNode({ logger: this.logger, parent: this, ...branch }));\n\t}\n}\n\nclass Solver {\n\tquota: number;\n\tlogger: Logger;\n\n\tevents: Event[];\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n\txSpan: number;\n\n\teventMap: { [id: number]: Event };\n\tactionAccessing: Map;\n\n\tpathRoot: PathNode;\n\n\tconstructor(env: Environment, { quota = 1000, logger = new DummyLogger() }: SolverOptions = {}) {\n\t\tthis.quota = quota;\n\t\tthis.logger = logger;\n\n\t\tconst event0 = {\n\t\t\tid: 0,\n\t\t\tx: 0,\n\t\t\tconfidence: 1,\n\t\t\tshrinkness: env.measureShrinkness,\n\t\t\tduration: env.expectedDuration,\n\t\t\tlowWarp: 0,\n\t\t};\n\n\t\tthis.events = [\n\t\t\tevent0,\n\t\t\t...env.events.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\tx: e.x,\n\t\t\t\tconfidence: e.confidence,\n\t\t\t\tshrinkness: e.shrinkness,\n\t\t\t\tstaff: e.staff,\n\t\t\t\tduration: e.duration,\n\t\t\t\tlowWarp: 0.5,\n\t\t\t})),\n\t\t];\n\t\tthis.eventMap = this.events.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.matrixH = env.matrixH;\n\t\tthis.matrixV = env.matrixV;\n\n\t\tthis.xSpan = env.endX - Math.min(env.endX - 1, ...env.events.map((e) => e.x));\n\n\t\tthis.actionAccessing = new Map();\n\t}\n\n\tsolve(): Solution {\n\t\t// construct path root\n\t\tthis.pathRoot = new PathNode({\n\t\t\tlogger: this.logger,\n\t\t\taction: null,\n\t\t});\n\t\tthis.pathRoot.children = this.events.slice(1).map(\n\t\t\t(event) =>\n\t\t\t\tnew PathNode({\n\t\t\t\t\tlogger: this.logger,\n\t\t\t\t\tparent: this.pathRoot,\n\t\t\t\t\taction: Action.P(event.id),\n\t\t\t\t\tpossibility: this.matrixV[event.id].reduce((sum, p) => sum + p, 0),\n\t\t\t\t})\n\t\t);\n\n\t\tlet bestSolution: Solution = null;\n\n\t\tthis.logger.groupCollapsed('solve');\n\n\t\tconst eventTendencies = Array(this.events.length).fill(0);\n\n\t\tconst quota = { credits: this.quota, times: 0 };\n\t\twhile (quota.credits > 0) {\n\t\t\t++quota.times;\n\n\t\t\tconst status = {\n\t\t\t\teventMap: this.eventMap,\n\t\t\t\tmatrixH: this.matrixH,\n\t\t\t\tmatrixV: this.matrixV,\n\t\t\t\tactionAccessing: this.actionAccessing,\n\t\t\t\teventTendencies,\n\t\t\t};\n\n\t\t\tconst solution = this.pathRoot.deduce(status, quota);\n\t\t\tsolution.credits = this.quota - quota.credits;\n\t\t\tsolution.times = quota.times;\n\t\t\tthis.evaluateSolution(solution);\n\t\t\tthis.logger.debug('loss:', solution.loss);\n\n\t\t\tbestSolution = !bestSolution || solution.loss < bestSolution.loss ? solution : bestSolution;\n\t\t\tif (!bestSolution.loss) break;\n\n\t\t\t// check if searching tree traversed\n\t\t\tif (this.actionAccessing.get('').closed) break;\n\t\t}\n\n\t\tthis.logger.groupEnd();\n\t\tthis.logger.debug('solution', bestSolution && bestSolution.loss, bestSolution);\n\t\tthis.logger.debug('cost:', this.quota - quota.credits);\n\n\t\tthis.logger.debug(\n\t\t\t'eventTendencies:',\n\t\t\teventTendencies.map((t) => t / quota.times)\n\t\t);\n\n\t\treturn bestSolution;\n\t}\n\n\tevaluateSolution(solution: Solution): void {\n\t\tsolution.loss = 0;\n\n\t\ttype EventR = Event & EventResult;\n\t\tconst eventMap: Record = solution.events.reduce((map, e) => ({ ...map, [e.id]: { ...e, ...this.eventMap[e.id] } }), {});\n\n\t\t/*// minus tick\n\t\tconst minuses = solution.events.filter((e) => e.tick < 0).length;\n\t\tsolution.loss += minuses * 1000;*/\n\n\t\t// minus tick rates penalty\n\t\tconst events = solution.events.filter((event) => Number.isFinite(event.tick)).map((event) => eventMap[event.id]);\n\t\tconst sevents: Record = events.reduce((map, event) => {\n\t\t\tmap[event.staff] = map[event.staff] || [];\n\t\t\tmap[event.staff].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\t\tObject.values(sevents).forEach((es) => {\n\t\t\tconst ses = es.sort((e1, e2) => e1.x - e2.x).slice(0, es.length - 1);\n\t\t\tses.forEach((e1, i) => {\n\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\tif (e2.tick < e1.tick) solution.loss += 1000;\n\t\t\t});\n\t\t});\n\n\t\tconst times = new Map();\n\t\tsolution.events.forEach((event) => {\n\t\t\tif (!Number.isFinite(event.tick) || solution.voices.every((voice) => !voice.includes(event.id)))\n\t\t\t\tsolution.loss += 100 * eventMap[event.id].confidence;\n\n\t\t\tif (event.timeWarp) {\n\t\t\t\tconst { numerator, denominator } = event.timeWarp;\n\t\t\t\tconst shrinkness = eventMap[event.id].shrinkness;\n\t\t\t\ttimes.set(numerator, Math.max(times.get(numerator) || 0, 1 - shrinkness));\n\t\t\t\ttimes.set(denominator, Math.max(times.get(denominator) || 0, 1 - shrinkness));\n\t\t\t}\n\t\t});\n\n\t\t// partial measure penalty\n\t\tconst partialFrac = reducedFraction(solution.duration, this.eventMap[0].duration);\n\t\ttimes.set(partialFrac.numerator, Math.max(times.get(partialFrac.numerator) || 0, 1 - this.eventMap[0].shrinkness));\n\t\ttimes.set(partialFrac.denominator, Math.max(times.get(partialFrac.denominator) || 0, 1 - this.eventMap[0].shrinkness));\n\n\t\tfor (const [n, weight] of times.entries()) {\n\t\t\tif (n > 1) solution.loss += Math.log(n) * weight;\n\t\t}\n\n\t\tlet spaceTime = 0;\n\t\tlet staffAlters = 0;\n\t\tsolution.voices.forEach((voice) => {\n\t\t\tconsole.assert(eventMap[voice[0]], 'invalid voice:', voice, Object.keys(eventMap));\n\n\t\t\tconst start = Math.abs(eventMap[voice[0]].tick); // abs: penalty for minus start\n\t\t\tconst end = eventMap[voice[voice.length - 1]].endTick;\n\n\t\t\tspaceTime += Math.max(0, start + solution.duration - end);\n\n\t\t\t// staff alternation penalty\n\t\t\tlet staff = null;\n\t\t\tvoice.forEach((id) => {\n\t\t\t\tconst event = eventMap[id];\n\t\t\t\tif (event.staff !== staff) {\n\t\t\t\t\tif (staff !== null) ++staffAlters;\n\t\t\t\t\tstaff = event.staff;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tsolution.loss += (spaceTime * 10) / DURATION_MULTIPLIER;\n\t\tsolution.loss += 5 ** staffAlters - 1;\n\n\t\t// tick twist\n\t\tconst eventsXOrder = [...events].sort((e1, e2) => e1.x - e2.x);\n\t\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\t\tconst e1 = eventsXOrder[i];\n\t\t\tconst dx = e2.x - e1.x;\n\t\t\tconst dt = e2.tick - e1.tick;\n\n\t\t\tif (!dt) return dx / this.xSpan;\n\n\t\t\tconst rate = Math.atan2(dt / solution.duration, dx / this.xSpan);\n\n\t\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t\t});\n\t\tconst tickTwist = Math.max(...tickTwists, 0);\n\t\tsolution.loss += tickTwist ** 2;\n\n\t\tconsole.assert(solution.loss >= 0, 'Invalid solution loss!!!', solution.loss, times, spaceTime, staffAlters);\n\t\tif (solution.loss < 0) solution.loss = Infinity;\n\t}\n}\n\nexport { SolverOptions, Solver };\n","import { SimpleClass } from './aux_/typedJSON';\nimport { StaffBasic } from './interfaces';\nimport { SemanticPoint } from './semanticPoint';\nimport { EventTerm, ContextedTerm, MarkTerm } from './term';\n\nclass PatchMeasure extends SimpleClass {\n\tstatic className = 'PatchMeasure';\n\n\tmeasureIndex: number;\n\tstaffMask: number;\n\tbasic: StaffBasic;\n\n\t//points: SemanticPoint[];\n\tevents: EventTerm[];\n\tcontexts: ContextedTerm[][]; // [staff]\n\tmarks: MarkTerm[];\n\tvoices: number[][]; // [voice, id]\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tObject.assign(this, data);\n\t}\n\n\tget staffN(): number {\n\t\treturn Math.floor(Math.log2(this.staffMask)) + 1;\n\t}\n\n\tget basics(): StaffBasic[] {\n\t\treturn Array(this.staffN).fill(this.basic);\n\t}\n\n\tget duration(): number {\n\t\treturn Math.max(\n\t\t\t0,\n\t\t\t...this.voices.map((ids) => {\n\t\t\t\tconst events = ids.map((id) => this.events.find((e) => e.id === id));\n\n\t\t\t\treturn events.reduce((duration, event) => duration + event.duration, 0);\n\t\t\t})\n\t\t);\n\t}\n}\n\nexport { PatchMeasure };\n","import { EventFeature, BackgroundImage, EventPredisposition } from './interfaces';\nimport { StemBeam } from './term';\nimport { SimpleClass } from './aux_/typedJSON';\n\nenum EventElementType {\n\tPAD,\n\tBOS,\n\tEOS,\n\n\tCHORD,\n\tREST,\n}\n\ninterface EventElement {\n\thref?: string;\n\tdisposed?: boolean;\n\tindex?: number;\n\tvoice?: number;\n\n\ttype: EventElementType;\n\tstaff: number;\n\tx: number;\n\ty1: number;\n\ty2: number;\n\tfeature: EventFeature;\n\tpivotX?: number;\n\theadY?: number;\n\n\t// targets\n\ttick?: number;\n\tdivision?: number;\n\tdots?: number;\n\tbeam?: StemBeam;\n\tstemDirection?: string;\n\tgrace?: boolean;\n\ttremoloCatcher?: boolean;\n\ttimeWarped?: boolean;\n\tfullMeasure?: boolean; // full measure rest\n\tfake?: boolean;\n\n\torder?: number;\n\n\tpredisposition?: EventPredisposition;\n}\n\ntype Matrix = number[][];\n\ninterface Annotation {\n\tloss: number;\n\tgrant: boolean;\n\tpatched: boolean; // from manually solved measure\n}\n\nclass EventCluster extends SimpleClass {\n\tstatic className = 'EventCluster';\n\tstatic blackKeys = ['id'];\n\n\tid?: string; // for db access\n\tindex?: number;\n\tduration?: number;\n\tstaffY0?: number; // the first staff top + staffY\n\n\tsignatureDuration: number;\n\telements: EventElement[];\n\tmatrixH?: Matrix; // matrix N x N, [next][prev]\n\n\tbackgroundImages?: BackgroundImage[];\n\n\tannotation?: Annotation;\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\tget regular(): boolean {\n\t\treturn (\n\t\t\tthis.elements.some((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && !elem.fake) &&\n\t\t\tthis.elements.every((elem) => [elem.x, elem.y1, elem.y2, elem.tick].every(Number.isFinite)) &&\n\t\t\tthis.elements\n\t\t\t\t.slice(1)\n\t\t\t\t.every(\n\t\t\t\t\t(elem, ei) =>\n\t\t\t\t\t\telem.fake ||\n\t\t\t\t\t\tthis.elements[ei].fake ||\n\t\t\t\t\t\telem.grace ||\n\t\t\t\t\t\tthis.elements[ei].grace ||\n\t\t\t\t\t\telem.fullMeasure ||\n\t\t\t\t\t\tthis.elements[ei].fullMeasure ||\n\t\t\t\t\t\telem.tick <= this.elements[ei].tick ||\n\t\t\t\t\t\telem.x > this.elements[ei].x\n\t\t\t\t)\n\t\t);\n\t}\n\n\tget grant(): boolean {\n\t\treturn this.annotation && this.annotation.grant;\n\t}\n\n\tget feature(): Partial {\n\t\treturn {\n\t\t\tindex: this.index,\n\t\t\telements: this.elements,\n\t\t};\n\t}\n\n\tget estimatedDuration(): number {\n\t\tconst endElem = this.elements.find((elem) => elem.type === EventElementType.EOS);\n\n\t\tconst tick = endElem?.predisposition ? endElem.predisposition?.tick : endElem?.tick;\n\n\t\treturn Number.isFinite(tick) ? tick : this.duration;\n\t}\n\n\tassignPrediction(prediction: any): void {\n\t\tconsole.assert(prediction.index === this.index, 'index mismatch:', prediction.index, this.index);\n\n\t\tthis.matrixH = prediction.matrixH;\n\t\tprediction.elements.forEach((pe) => {\n\t\t\tconst { index, ...predisposition } = pe;\n\t\t\tconst elem = this.elements.find((elem) => elem.index === index);\n\t\t\tconsole.assert(elem, 'element not found:', index);\n\n\t\t\tif (elem) elem.predisposition = predisposition;\n\t\t});\n\t}\n}\n\nclass EventClusterSet extends SimpleClass {\n\tstatic className = 'EventClusterSet';\n\n\tname?: string;\n\n\tclusters: EventCluster[];\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\ttrimIrregular(): number {\n\t\tlet ir = 0;\n\n\t\tthis.clusters = this.clusters.filter((cluster) => {\n\t\t\tconst regular = cluster.regular;\n\t\t\tif (!regular) {\n\t\t\t\tconsole.debug('irregular cluster:', cluster);\n\t\t\t\t++ir;\n\t\t\t}\n\n\t\t\treturn regular;\n\t\t});\n\n\t\tif (ir) console.debug('Irregular clusters trimmed:', `${ir}/${this.clusters.length + ir}`);\n\t\telse console.debug(`The EventClusterSet (${this.clusters.length}) is fine.`);\n\n\t\treturn ir;\n\t}\n}\n\nexport { EventElementType, EventElement, EventCluster, EventClusterSet };\n","import erf from 'math-erf';\nimport sha1 from 'js-sha1';\n\nimport { SimpleClass } from './aux_/typedJSON';\nimport { EventTerm, ContextedTerm, MarkTerm, WHOLE_DURATION, StemBeam, GraceType, ContextType, TremoloLink } from './term';\nimport {\n\tFraction,\n\tStaffBasic,\n\tEventMeasure,\n\tRegulationOptions,\n\tRegulationSolution,\n\tRegulationSolutionEvent,\n\tBackgroundImage,\n\tMeasureBarType,\n} from './interfaces';\nimport { frac, fractionMul, roundNumber, argmax } from './utils';\nimport { NOTEHEAD_WIDTHS } from './semanticPoint';\nimport * as EquationSolver from './equationSolver';\nimport { PatchMeasure } from './patch';\nimport { EventCluster, EventElement, EventElementType } from './eventTopology';\nimport type { MeasureRectification } from './measureRectification';\nimport type { GraphMeasure } from './timewiseGraph';\n\nnamespace SimplePolicy {\n\tconst constructXMap = (measure: SpartitoMeasure): Map => {\n\t\tconst xMap = new Map();\n\n\t\t// mark full measure rests\n\t\tmeasure.rows.forEach((row) => {\n\t\t\tif (row.events.length === 1) {\n\t\t\t\tconst event = row.events[0];\n\t\t\t\tif (event.rest && event.division === 0) event.rest = 'R';\n\t\t\t}\n\t\t});\n\n\t\tmeasure.events.forEach((event) => {\n\t\t\tconst x = Math.round(event.pivotX * 10) / 10;\n\t\t\tlet key = 0;\n\t\t\tif (event.fullMeasureRest) key = Math.min(x, ...xMap.keys());\n\t\t\telse {\n\t\t\t\tkey =\n\t\t\t\t\t[...xMap.keys()].find((k) => {\n\t\t\t\t\t\t// check if the event is aligned with the current chord\n\t\t\t\t\t\tconst es = xMap.get(k);\n\t\t\t\t\t\tconst left = Math.min(...es.map((e) => e.left));\n\t\t\t\t\t\tconst right = Math.max(...es.map((e) => e.right));\n\n\t\t\t\t\t\tconst overlaySize = Math.min(right, event.right) - Math.max(left, event.left);\n\n\t\t\t\t\t\treturn overlaySize > NOTEHEAD_WIDTHS.NoteheadS1 * 0.62;\n\t\t\t\t\t}) || x;\n\t\t\t}\n\t\t\tevent.roundX = key;\n\n\t\t\tconst es = xMap.get(key) || [];\n\t\t\txMap.set(key, es);\n\n\t\t\tes.push(event);\n\t\t});\n\n\t\treturn xMap;\n\t};\n\n\texport const computeMeasureTicks = (measure: SpartitoMeasure): void => {\n\t\tconst xMap = constructXMap(measure);\n\n\t\tlet tick = 0;\n\t\tconst ts = new Set([tick]);\n\t\tconst eventGroups = [...xMap.entries()].sort(([x1], [x2]) => x1 - x2); //.map(entry => entry[1]);\n\t\tfor (const [x, events] of eventGroups) {\n\t\t\tvoid x;\n\n\t\t\tevents.forEach((event: EventTerm) => {\n\t\t\t\tif (event.predisposition) {\n\t\t\t\t\tevent.rest = event.rest && event.predisposition.fullMeasure > 0.5 ? 'R' : event.rest;\n\t\t\t\t\tevent.grace = event.predisposition.grace ? GraceType.Grace : null;\n\t\t\t\t\tevent.division = argmax(event.predisposition.divisionVector);\n\t\t\t\t\tevent.dots = argmax(event.predisposition.dotsVector);\n\t\t\t\t\tif (event.predisposition.timeWarped > 0.5) event.timeWarp = frac(2, 3);\n\t\t\t\t}\n\n\t\t\t\tif (event.fullMeasureRest) event.tick = 0;\n\t\t\t\telse {\n\t\t\t\t\tif (event.zeroHolder) tick -= event.duration;\n\n\t\t\t\t\tif (!event.zeroHolder && event.predisposition && Number.isInteger(event.predisposition.tick)) event.tick = event.predisposition.tick;\n\t\t\t\t\telse event.tick = tick;\n\t\t\t\t\tts.add(event.tick + event.duration);\n\t\t\t\t}\n\t\t\t\t//console.log(\"append tick:\", event.tick + event.duration, event);\n\t\t\t});\n\t\t\tts.delete(tick);\n\n\t\t\t//column.xToTick[x] = tick;\n\n\t\t\tif (ts.size) tick = Math.min(...ts);\n\t\t}\n\n\t\tif (Number.isInteger(measure.estimatedDuration)) measure.duration = measure.estimatedDuration;\n\t\telse measure.duration = Math.max(...ts, 0);\n\t};\n\n\texport const computeMeasureVoices = (measure: SpartitoMeasure): void => {\n\t\tmeasure.voices = [];\n\t\tfor (const row of measure.rows) {\n\t\t\tconst events = row.events.filter(\n\t\t\t\t(event) => !event.grace && !event.tremoloCatcher && !event.fullMeasureRest && !(event.predisposition && event.predisposition.fake > 0.5)\n\t\t\t);\n\t\t\tconst eventSet = new Set(events);\n\n\t\t\twhile (eventSet.size) {\n\t\t\t\tlet tick = 0;\n\n\t\t\t\tconst voice = [];\n\t\t\t\tconst pushEvent = (e: EventTerm) => {\n\t\t\t\t\tvoice.push(e.id);\n\t\t\t\t\tif (!e.zeroHolder) tick += e.duration;\n\t\t\t\t\teventSet.delete(e);\n\t\t\t\t};\n\n\t\t\t\tconst e0 = events.find((e) => eventSet.has(e));\n\t\t\t\tif (e0.alignedTick > 0) {\n\t\t\t\t\t//voice.tickMap[tick] = EventTerm.space({ tick, duration: e0.alignedTick });\n\t\t\t\t\ttick = e0.alignedTick;\n\t\t\t\t}\n\t\t\t\tpushEvent(e0);\n\n\t\t\t\twhile (true) {\n\t\t\t\t\t// TODO: consider slur pair\n\t\t\t\t\tconst e = events.find((e) => eventSet.has(e) && e.alignedTick === tick);\n\t\t\t\t\tif (!e) break;\n\n\t\t\t\t\tpushEvent(e);\n\t\t\t\t}\n\n\t\t\t\t//if (tick < measure.duration)\n\t\t\t\t//\tvoice.tickMap[tick] = EventTerm.space({ tick, duration: staff.duration - tick });\n\n\t\t\t\tmeasure.voices.push(voice);\n\t\t\t}\n\t\t}\n\t};\n}\n\nconst solveGraceEvents = (measure: SpartitoMeasure): void => {\n\tconst graceEvents = measure.events.filter((event) => event.grace /*&& !Number.isFinite(event.tick)*/);\n\tif (!graceEvents.length) return;\n\n\tconst tickMap = measure.tickMap;\n\tconst staffMap = [...tickMap.entries()].reduce((smap, [tick, events]) => {\n\t\tevents.forEach((event) => {\n\t\t\tif (!event.grace) {\n\t\t\t\tsmap[event.staff] = smap[event.staff] || {};\n\n\t\t\t\tconst oldEvent = smap[event.staff][tick];\n\t\t\t\tsmap[event.staff][tick] = !oldEvent || oldEvent.x > event.x ? event : oldEvent;\n\t\t\t}\n\t\t});\n\n\t\treturn smap;\n\t}, {} as { [staff: number]: { [tick: number]: EventTerm } });\n\n\ttype Position = { tick: number; preTick: number; graces: EventTerm[]; event: EventTerm };\n\tconst staffPositions = Object.entries(staffMap).reduce((map, [staff, emap]) => {\n\t\tmap[staff] = Object.entries(emap)\n\t\t\t.map(([t, event]) => ({ event, tick: Number(t), preTick: -240, graces: [] }))\n\t\t\t.sort((p1, p2) => p1.event.x - p2.event.x);\n\t\tmap[staff].push({ tick: measure.duration, event: measure.endEvent, preTick: 0, graces: [] }); // terminal bar\n\n\t\tlet tick = 0;\n\t\tmap[staff].forEach((position) => {\n\t\t\tif (position.tick > tick) {\n\t\t\t\tposition.preTick = tick;\n\t\t\t\ttick = position.tick;\n\t\t\t}\n\t\t});\n\n\t\treturn map;\n\t}, {} as { [staff: number]: Position[] });\n\n\t// append grace events into positions\n\tgraceEvents.forEach((event) => {\n\t\tconst staff = staffPositions[event.staff];\n\t\tif (staff) {\n\t\t\tconst position = staff.find((p) => p.event.x > event.x);\n\t\t\tif (position) position.graces.push(event);\n\t\t\tevent.roundX = event.x;\n\t\t\t//if (position.tick >= measure.duration)\n\t\t\t//\tevent.grace = GraceType.AfterGrace;\n\t\t}\n\t});\n\n\tObject.values(staffPositions).forEach((staff) =>\n\t\tstaff.forEach((position) => {\n\t\t\tif (position.graces.length) {\n\t\t\t\tposition.event.graceIds = position.graces.map((e) => e.id);\n\n\t\t\t\tconst totalDuration = position.graces.reduce((t, e) => t + e.duration, 0);\n\t\t\t\tconst duration = Math.min(totalDuration, position.tick - position.preTick);\n\t\t\t\tconst warp = duration / totalDuration;\n\n\t\t\t\tlet tick = position.tick;\n\t\t\t\t[...position.graces].reverse().forEach((event) => {\n\t\t\t\t\tevent.tick = Math.round(tick - event.duration * warp);\n\t\t\t\t\ttick = event.tick;\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t);\n};\n\nconst solveTremoloPairs = (measure: SpartitoMeasure): void => {\n\tconst catchers = measure.events.filter((event) => event.tremoloCatcher && !event.grace);\n\tconst pitchers = measure.events.filter((event) => event.tremoloLink === TremoloLink.Pitcher && !event.grace);\n\n\tcatchers.forEach((catcher) => {\n\t\tlet candidates = pitchers.filter((event) => event.division === catcher.division && event.x < catcher.x);\n\t\tif (!candidates.length)\n\t\t\tcandidates = measure.events.filter(\n\t\t\t\t(event) =>\n\t\t\t\t\tNumber.isFinite(event.tick) &&\n\t\t\t\t\t!event.grace &&\n\t\t\t\t\t!event.rest &&\n\t\t\t\t\tevent.division === catcher.division &&\n\t\t\t\t\tevent.dots === catcher.dots &&\n\t\t\t\t\tevent.x < catcher.x\n\t\t\t);\n\t\tcandidates.sort((c1, c2) => c2.x - c1.x);\n\t\tif (candidates.length) {\n\t\t\tconst pitcher = candidates[0];\n\t\t\tpitcher.catcherId = catcher.id;\n\t\t\tconst tremolo = Math.max(pitcher.tremolo || 3, catcher.tremolo || 3);\n\t\t\tpitcher.tremolo = tremolo;\n\t\t\tcatcher.tremolo = tremolo;\n\n\t\t\tif (!catcher.tick) catcher.tick = pitcher.tick + pitcher.duration / 2;\n\n\t\t\tconst pi = pitchers.indexOf(pitcher);\n\t\t\tif (pi >= 0) pitchers.splice(pi, 1);\n\t\t}\n\t});\n};\n\nnamespace EquationPolicy {\n\ttype EventID = number;\n\ttype Time = number;\n\n\tconst DURATION_MULTIPLIER = 128 * 3 * 5 * 7 * 11 * 13;\n\n\tconst CHORDS_SEAM_SIGMA = 0.6;\n\tconst NEIGHBOR_CHORDS_SIGMA = 1.6;\n\tconst Y_DECAY_SIGMA = 16;\n\tconst STAFF_DECAY_FACTOR = 2;\n\tconst STEM_DIRECTION_DECAY = 0.9;\n\tconst ILL_BEAMS_PENALTY = 0.2;\n\n\tconst INVERT_SQRT2 = 0.7071067811865475;\n\n\tconst MATRIX_H_WEIGHT = 3;\n\n\tconst FINE_BEAMS = [\n\t\t[null, null],\n\t\t[null, StemBeam.Open],\n\t\t[StemBeam.Open, StemBeam.Continue],\n\t\t[StemBeam.Open, StemBeam.Close],\n\t\t[StemBeam.Continue, StemBeam.Continue],\n\t\t[StemBeam.Continue, StemBeam.Close],\n\t\t[StemBeam.Close, null],\n\t\t[StemBeam.Close, StemBeam.Open],\n\t].map((bb) => bb.join('-'));\n\n\tinterface Event {\n\t\tid: EventID;\n\t\tstaff: number;\n\t\tx: number;\n\t\ty: number;\n\t\tduration: Time;\n\t\tconfidence: number;\n\t\tshrinkness: number;\n\t}\n\n\texport interface StaffGroup {\n\t\tevents: Event[];\n\t\texpectedDuration: Time;\n\t\tmeasureShrinkness: number;\n\t\tendX: number;\n\t\tmatrixH: Matrix;\n\t\tmatrixV: Matrix;\n\n\t\tids?: EventID[];\n\t}\n\n\tinterface EventResult {\n\t\tid: EventID;\n\t\ttick: Time;\n\t\tendTick: Time;\n\t\ttickGroup: number;\n\t\ttimeWarp?: Fraction;\n\t}\n\n\texport interface StaffGroupSolution {\n\t\tevents: EventResult[];\n\t\tvoices: EventID[][];\n\t\tduration: number;\n\n\t\tloss?: number;\n\t\tcredits?: number;\n\t\ttimes?: number;\n\t}\n\n\texport interface RegulatorOptions extends EquationSolver.SolverOptions {\n\t\tsolver?: (staffGroup: StaffGroup, options: EquationSolver.SolverOptions) => Promise;\n\t}\n\n\tconst solveStaffGroup = (staffGroup: StaffGroup, options: EquationSolver.SolverOptions): StaffGroupSolution => {\n\t\tif (!staffGroup.events.length) {\n\t\t\treturn {\n\t\t\t\tevents: [],\n\t\t\t\tvoices: [],\n\t\t\t\tduration: 0,\n\t\t\t};\n\t\t}\n\n\t\tconst solver = new EquationSolver.Solver(staffGroup, options);\n\n\t\treturn solver.solve();\n\t};\n\n\texport const estiamteMeasure = (measure: SpartitoMeasure): StaffGroup => {\n\t\tconst allEvents = measure.events\n\t\t\t.filter((event) => !event.zeroHolder)\n\t\t\t.map((event) => ({\n\t\t\t\tid: event.id,\n\t\t\t\tstaff: event.staff,\n\t\t\t\tx: event.x,\n\t\t\t\ttickEstimated: event.predisposition && Number.isFinite(event.predisposition.tick) ? event.predisposition.tick : event.x,\n\t\t\t\ttipX: event.tipX,\n\t\t\t\ty: event.tipY + event.staff * 100, // TODO: refine y by event term tipY\n\t\t\t\tduration: (event.mainDuration * DURATION_MULTIPLIER) / WHOLE_DURATION,\n\t\t\t\tdivision: event.division,\n\t\t\t\tdots: event.dots,\n\t\t\t\tstemDirection: event.stemDirection,\n\t\t\t\tbeam: event.beam,\n\t\t\t\trest: event.rest,\n\t\t\t\t// the possibility of full measure rest\n\t\t\t\tpR: event.rest === 'R' ? 1 : event.rest === 'r' && event.division === 0 ? Math.tanh(event.x - measure.eventStartX) : 0,\n\t\t\t\tfakeP: event.predisposition ? event.predisposition.fakeP || 0 : 0,\n\t\t\t\tshrinkness: event.predisposition ? event.predisposition.timeWarped : null,\n\t\t\t}));\n\t\tlet expectedDuration = (DURATION_MULTIPLIER * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\texpectedDuration = Math.max(expectedDuration, roundNumber(measure.estimatedDuration, DURATION_MULTIPLIER / 4));\n\n\t\tconst staffGroupMap = measure.staffGroups.reduce((map, staves, group) => {\n\t\t\tstaves.forEach((staff) => (map[staff] = group));\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst ids = [0, ...allEvents.map((e) => e.id)]; // compact ids\n\t\tconst ievents = allEvents.map((e) => ({\n\t\t\t...e,\n\t\t\tid: ids.indexOf(e.id),\n\t\t\tx: e.x - measure.startX,\n\t\t\tconfidence: (1 - e.pR) * (1 - e.fakeP),\n\t\t\tshrinkness: Number.isFinite(e.shrinkness) ? e.shrinkness : Math.tanh((e.division - e.dots * 0.1) / 4),\n\t\t\tstaffGroup: staffGroupMap[e.staff],\n\t\t}));\n\n\t\t// estimate topology matrices\n\t\tconst matrixH = Array(ids.length + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\t\tconst matrixV = Array(ids.length)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\n\t\t//const hp = (dx: number): number => 1 - erf(((dx / NEIGHBOR_CHORDS_SIGMA) ** 0.6) * INVERT_SQRT2);\n\t\tconst hp = (dx: number): number => erf(dx / NEIGHBOR_CHORDS_SIGMA) * erf(NEIGHBOR_CHORDS_SIGMA / dx);\n\n\t\tfor (const e1 of ievents) {\n\t\t\tfor (const e2 of ievents) {\n\t\t\t\tmatrixV[e1.id][e2.id] =\n\t\t\t\t\te1 !== e2 && e1.tickEstimated >= e2.tickEstimated ? 1 - erf(((e1.tickEstimated - e2.tickEstimated) * INVERT_SQRT2) / CHORDS_SEAM_SIGMA) : 0;\n\n\t\t\t\tif (e1.staffGroup !== e2.staffGroup) matrixH[e1.id][e2.id] = 0;\n\t\t\t\t// prohibit voice crossing staff groups\n\t\t\t\telse if (e1.x <= e2.x) matrixH[e1.id][e2.id] = 0;\n\t\t\t\telse {\n\t\t\t\t\tconst staffDecay = Math.exp(-Math.abs(e1.staff - e2.staff) * STAFF_DECAY_FACTOR);\n\t\t\t\t\tconst yDecay = e1.staff === e2.staff ? Math.exp(-Math.abs(e1.y - e2.y) / Y_DECAY_SIGMA) : 1;\n\t\t\t\t\tconst dx = e1.x - e2.x;\n\t\t\t\t\tconst dtx = e1.tipX - e2.tipX;\n\t\t\t\t\tmatrixH[e1.id][e2.id] = (staffDecay * yDecay * Math.min(hp(dx), hp(dtx))) ** (1 / MATRIX_H_WEIGHT);\n\t\t\t\t}\n\n\t\t\t\t// weaken full measure rest connections\n\t\t\t\tconst nR = (1 - e1.pR) * (1 - e2.pR);\n\t\t\t\tmatrixV[e1.id][e2.id] *= nR;\n\t\t\t\tmatrixH[e1.id][e2.id] *= nR;\n\n\t\t\t\tif (matrixV[e1.id][e2.id] < 1e-2) matrixV[e1.id][e2.id] = 0;\n\n\t\t\t\t// weaken inconsistent stem directions\n\t\t\t\tif (e1.stemDirection && e2.stemDirection && e1.stemDirection !== e2.stemDirection) matrixH[e1.id][e2.id] *= STEM_DIRECTION_DECAY;\n\n\t\t\t\t// ill beams penalty\n\t\t\t\tif (!e1.rest && !e2.rest && !FINE_BEAMS.includes([e2.beam, e1.beam].join('-'))) matrixH[e1.id][e2.id] *= ILL_BEAMS_PENALTY;\n\t\t\t}\n\n\t\t\t// H possibility of e1 and end of measure\n\t\t\tmatrixH[ids.length][e1.id] = hp(measure.width - e1.x) ** (1 / MATRIX_H_WEIGHT);\n\t\t}\n\n\t\treturn {\n\t\t\tids,\n\t\t\tevents: ievents,\n\t\t\texpectedDuration,\n\t\t\tmeasureShrinkness: 0,\n\t\t\tendX: measure.position.right,\n\t\t\tmatrixH,\n\t\t\tmatrixV,\n\t\t};\n\t};\n\n\texport const regulateMeasure = async (measure: SpartitoMeasure, { solver = null, ...options }: RegulatorOptions): Promise => {\n\t\tconst env = estiamteMeasure(measure);\n\t\tconst { ids, matrixH, matrixV } = env;\n\n\t\t// copy matrices values from measure topology data\n\t\tif (measure.matrixH) {\n\t\t\tconsole.assert(\n\t\t\t\tmeasure.matrixH.length > ids[ids.length - 1] && measure.matrixH[0].length > ids[ids.length - 1],\n\t\t\t\t'matrix shape mismatch:',\n\t\t\t\tids.length,\n\t\t\t\t`${measure.matrixH.length}x${measure.matrixH[0].length}`,\n\t\t\t\t`${matrixH.length}x${matrixH[0].length}`\n\t\t\t);\n\t\t\tfor (let i = 0; i < ids.length + 1; i++) {\n\t\t\t\tconst ii = i < ids.length ? ids[i] : measure.matrixH.length - 1;\n\t\t\t\tfor (let j = 1; j < ids.length; j++) matrixH[i][j] = measure.matrixH[ii][ids[j]];\n\t\t\t}\n\t\t}\n\t\tif (measure.matrixV) {\n\t\t\tmatrixV.forEach((row, i) =>\n\t\t\t\trow.forEach((_, j) => {\n\t\t\t\t\tconst mp = measure.matrixV[ids[i]][ids[j]];\n\t\t\t\t\tif (Number.isFinite(mp)) matrixV[i][j] = mp;\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\tenv.measureShrinkness = Math.tanh(Math.log(Math.min(1, measure.estimatedDuration / measure.duration)) * -3);\n\n\t\tif (options.logger) options.logger.info('--- MEASURE', measure.measureIndex, '---', env);\n\n\t\tconst solution = solver ? await solver(env, options) : solveStaffGroup(env, options);\n\t\tconst resultEvents = solution.events.map((e) => ({\n\t\t\t...e,\n\t\t\tid: env.ids[e.id], // decode compact ids\n\t\t}));\n\t\tresultEvents.forEach((e) => {\n\t\t\tconst event = measure.events.find((e0) => e0.id === e.id);\n\t\t\tevent.tick = Number.isFinite(e.tick) ? Math.round((e.tick * WHOLE_DURATION) / DURATION_MULTIPLIER) : null;\n\t\t\tevent.tickGroup = e.tickGroup;\n\t\t\tevent.timeWarp = e.timeWarp;\n\t\t});\n\n\t\tmeasure.duration = Math.round((solution.duration * WHOLE_DURATION) / DURATION_MULTIPLIER);\n\t\tmeasure.voices = solution.voices.map((voice) => voice.map((id) => env.ids[id]));\n\n\t\tmeasure.solutionStat = {\n\t\t\tloss: solution.loss,\n\t\t\tsolverCredits: solution.credits,\n\t\t\tsolverTimes: solution.times,\n\t\t};\n\n\t\t// full measure rests\n\t\tmeasure.events.forEach((event) => {\n\t\t\tconst result = resultEvents.find((e) => e.id === event.id);\n\t\t\tif (!result) return;\n\t\t\telse if (!Number.isFinite(result.tick) && event.rest === 'r' && event.division === 0) {\n\t\t\t\tevent.tick = 0;\n\t\t\t\tevent.tickGroup = 0;\n\t\t\t\tevent.rest = 'R';\n\t\t\t\tevent.duration = measure.duration;\n\t\t\t\tmeasure.voices.push([event.id]);\n\t\t\t} else if (event.rest === 'R') {\n\t\t\t\tevent.tick = 0;\n\t\t\t\tevent.tickGroup = 0;\n\t\t\t\tevent.duration = measure.duration;\n\t\t\t\tmeasure.voices.push([event.id]);\n\t\t\t}\n\t\t});\n\t};\n\n\texport const regulateMeasureWithRectification = async (\n\t\tmeasure: SpartitoMeasure,\n\t\trectification: MeasureRectification,\n\t\t{ solver = null, ...options }: RegulatorOptions\n\t): Promise => {\n\t\tconst allEvents = measure.events\n\t\t\t.filter((event) => !event.zeroHolder)\n\t\t\t.map((event) => {\n\t\t\t\tconst re = rectification.events.find((e) => e && e.id === event.id);\n\t\t\t\tconst division = Number.isFinite(re?.division) ? re.division : event.division;\n\t\t\t\tconst dots = Number.isFinite(re?.dots) ? re.dots : event.dots;\n\t\t\t\tconst duration = DURATION_MULTIPLIER * 2 ** -division * (2 - 2 ** -dots);\n\n\t\t\t\treturn {\n\t\t\t\t\tid: event.id,\n\t\t\t\t\tstaff: event.staff,\n\t\t\t\t\tx: event.x,\n\t\t\t\t\ttickEstimated: event.predisposition?.tick,\n\t\t\t\t\ty: event.tipY + event.staff * 100, // TODO: refine y by event term tipY\n\t\t\t\t\tduration,\n\t\t\t\t\t// the possibility of full measure rest\n\t\t\t\t\tpR: event.rest === 'R' ? 1 : event.rest === 'r' && event.division === 0 ? Math.tanh(event.x - measure.eventStartX) : 0,\n\t\t\t\t\tfakeP: event.predisposition ? event.predisposition.fakeP || 0 : 0,\n\t\t\t\t\tshrinkness: event.predisposition?.timeWarped || 0,\n\t\t\t\t};\n\t\t\t});\n\t\tlet expectedDuration = (DURATION_MULTIPLIER * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\texpectedDuration = Math.max(expectedDuration, roundNumber(measure.estimatedDuration, DURATION_MULTIPLIER / 4));\n\n\t\tconst staffGroupMap = measure.staffGroups.reduce((map, staves, group) => {\n\t\t\tstaves.forEach((staff) => (map[staff] = group));\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst ids = [0, ...allEvents.map((e) => e.id)]; // compact ids\n\t\tconst ievents = allEvents.map((e) => ({\n\t\t\t...e,\n\t\t\tid: ids.indexOf(e.id),\n\t\t\tx: e.x - measure.startX,\n\t\t\tconfidence: (1 - e.pR) * (1 - e.fakeP),\n\t\t\tshrinkness: e.shrinkness,\n\t\t\tstaffGroup: staffGroupMap[e.staff],\n\t\t}));\n\n\t\t// estimate topology matrices\n\t\tconst matrixH = Array(ids.length + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\t\tconst matrixV = Array(ids.length)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\n\t\tfor (const e1 of ievents) {\n\t\t\tfor (const e2 of ievents) {\n\t\t\t\tmatrixV[e1.id][e2.id] =\n\t\t\t\t\te1 !== e2 && e1.tickEstimated >= e2.tickEstimated ? 1 - erf(((e1.tickEstimated - e2.tickEstimated) * INVERT_SQRT2) / CHORDS_SEAM_SIGMA) : 0;\n\n\t\t\t\t// weaken full measure rest connections\n\t\t\t\tconst nR = (1 - e1.pR) * (1 - e2.pR);\n\t\t\t\tmatrixV[e1.id][e2.id] *= nR;\n\n\t\t\t\tif (matrixV[e1.id][e2.id] < 1e-2) matrixV[e1.id][e2.id] = 0;\n\t\t\t}\n\t\t}\n\n\t\t// copy matrices values from measure topology data\n\t\tconsole.assert(\n\t\t\tmeasure.matrixH && measure.matrixH.length > ids[ids.length - 1] && measure.matrixH[0].length > ids[ids.length - 1],\n\t\t\t'matrix shape mismatch:',\n\t\t\tids.length,\n\t\t\t`${measure.matrixH.length}x${measure.matrixH[0].length}`,\n\t\t\t`${matrixH.length}x${matrixH[0].length}`\n\t\t);\n\t\tfor (let i = 0; i < ids.length + 1; i++) {\n\t\t\tconst ii = i < ids.length ? ids[i] : measure.matrixH.length - 1;\n\t\t\tfor (let j = 1; j < ids.length; j++) matrixH[i][j] = measure.matrixH[ii][ids[j]];\n\t\t}\n\n\t\tlet measureShrinkness = 0;\n\t\tif (Number.isFinite(measure.estimatedDuration)) measureShrinkness = Math.tanh(Math.log(Math.min(1, measure.estimatedDuration / measure.duration)) * -3);\n\n\t\tconst env = {\n\t\t\tids,\n\t\t\tevents: ievents,\n\t\t\texpectedDuration,\n\t\t\tmeasureShrinkness,\n\t\t\tendX: measure.position.right,\n\t\t\tmatrixH,\n\t\t\tmatrixV,\n\t\t};\n\t\tconst solution = solver ? await solver(env, options) : solveStaffGroup(env, options);\n\n\t\tconst priority = -solution.loss;\n\n\t\tconst events = solution.events.map(({ id, tick, tickGroup, timeWarp }) => {\n\t\t\tconst re = rectification.events.find((e) => e && e.id === id);\n\t\t\tconst tickN = Number.isFinite(tick) ? Math.round((tick * WHOLE_DURATION) / DURATION_MULTIPLIER) : tick;\n\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\ttick: tickN,\n\t\t\t\ttickGroup,\n\t\t\t\ttimeWarp,\n\t\t\t\tdivision: re?.division,\n\t\t\t\tdots: re?.dots,\n\t\t\t};\n\t\t});\n\n\t\tconst duration = Math.round((solution.duration * WHOLE_DURATION) / DURATION_MULTIPLIER);\n\n\t\treturn {\n\t\t\tevents,\n\t\t\tvoices: solution.voices,\n\t\t\tduration,\n\t\t\tpriority,\n\t\t};\n\t};\n}\n\ntype Matrix = number[][];\n\ntype TickMap = Map;\n\ninterface SolutionStatistics {\n\tloss?: number;\n\tsolverCredits?: number;\n\tsolverTimes?: number;\n}\n\nclass SpartitoMeasure extends SimpleClass {\n\tstatic className = 'SpartitoMeasure';\n\tstatic blackKeys = ['staffGroups', 'solutionStat', 'measureNumber', 'deposit'];\n\n\tmeasureIndex: number;\n\tstaffMask: number;\n\tstaffGroups: number[][];\n\toriginalRegulationHash?: string;\n\tmeasureNumber?: number; // count from the last indent measure, head partial measure is zero, skip empty measures\n\n\tpatched: boolean;\n\tdiscard: boolean;\n\n\tposition: {\n\t\tsystemIndex: number;\n\t\tlocalIndex: number; // the measure local index in its system\n\t\tleft: number;\n\t\tright: number;\n\t\tstaffYs?: number[];\n\t\tstaffYsFull?: number[];\n\t};\n\n\tbackgroundImages: BackgroundImage[];\n\n\tevents: EventTerm[];\n\tendEvent: Partial; // the placeholder for end tick\n\tcontexts: ContextedTerm[][]; // [staff]\n\tmarks: MarkTerm[];\n\tduration: number;\n\n\tvoices?: number[][]; // [voice, id]\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbasics?: StaffBasic[]; // [staff]\n\tvoltaBegin: boolean;\n\tvoltaEnd: boolean;\n\talternative: boolean;\n\tbarTypes: Record;\n\tindent: boolean;\n\n\tsolutionStat?: SolutionStatistics;\n\n\tmatrixH: Matrix; // matrix N x N\t\t[right][left]\n\tmatrixV: Matrix; // matrix N x N\n\testimatedDuration: number;\n\n\tgraph: GraphMeasure;\n\n\tdeposit: Record;\n\n\tstatic reorderEvents(events: EventTerm[], staffYsFull: number[]): EventTerm[] {\n\t\tconst HALF_NOTEHEAD = 0.7;\n\n\t\tconst ys = [];\n\n\t\tconst es = events.map((e) => ({\n\t\t\tid: e.id,\n\t\t\tstaff: e.staff,\n\t\t\tx: e.x / HALF_NOTEHEAD,\n\t\t\trx: 0,\n\t\t\try: staffYsFull[e.staff] + e.tipY,\n\t\t\ttipY: e.tipY,\n\t\t\tprior: 0,\n\t\t}));\n\t\tes.sort((e1, e2) => e1.x - e2.x);\n\t\tes.slice(1).forEach((e, i) => {\n\t\t\tconst dx = Math.min(Math.round(e.x - es[i].x), 2);\n\t\t\te.rx = es[i].rx + dx;\n\t\t});\n\t\tes.forEach((e) => {\n\t\t\te.prior = e.staff * 1e4 + e.rx + e.tipY * 0.01;\n\n\t\t\tif (!ys.includes(e.ry)) ys.push(e.ry);\n\t\t});\n\t\tes.sort((e1, e2) => e1.prior - e2.prior);\n\t\tys.sort((y1, y2) => y1 - y2);\n\n\t\tlet yi = 0;\n\t\tconst yis = ys.map((y, i) => {\n\t\t\tif (!i || ys[i] - ys[i - 1] < 0.5) return yi;\n\n\t\t\t++yi;\n\t\t\treturn yi;\n\t\t});\n\n\t\tconst result = es.map((e) => new EventTerm({ ...events.find((ev) => ev.id === e.id), intX: e.rx, intY: yis[ys.indexOf(e.ry)] }));\n\t\tresult.forEach((e, i) => (e.id = i + 1));\n\n\t\treturn result;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tif (!this.originalRegulationHash && !this.regulated) this.originalRegulationHash = this.regulationHash;\n\n\t\tthis.barTypes = this.barTypes || {};\n\n\t\t// Ensure postRegulate runs for measures deserialized with voices (e.g. from patches/JSON)\n\t\t// to set endEvent and roundX needed for playback cursor positioning.\n\t\tif (this.regulated && this.position) this.postRegulate();\n\t}\n\n\tget timeSignature(): Fraction {\n\t\treturn this.basics && this.basics[0].timeSignature;\n\t}\n\n\tget keySignature(): number {\n\t\treturn this.basics && this.basics[0].keySignature;\n\t}\n\n\tget timeSignatureChanged(): boolean {\n\t\treturn this.contexts.filter(Boolean)[0].some((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type));\n\t}\n\n\tget doubtfulTimesig(): boolean {\n\t\treturn this.basics && this.basics[0].doubtfulTimesig;\n\t}\n\n\tget regulated(): boolean {\n\t\treturn !!this.voices;\n\t}\n\n\tget validRegulated(): boolean {\n\t\tif (!this.voices) return false;\n\n\t\treturn this.voices.flat(1).every((id) => Number.isFinite(this.events.find((e) => e.id === id)?.tick));\n\t}\n\n\tget rows(): EventMeasure[] {\n\t\treturn this.contexts.map((contexts, si) => {\n\t\t\tconst events = this.events.filter((e) => e.staff === si);\n\n\t\t\treturn {\n\t\t\t\tevents,\n\t\t\t\tcontexts,\n\t\t\t};\n\t\t});\n\t}\n\n\tget eventStartX(): number {\n\t\treturn this.events.length ? Math.min(...this.events.map((e) => e.x)) : this.startX;\n\t}\n\n\tget startX(): number {\n\t\treturn this.position.left;\n\t}\n\n\tget width(): number {\n\t\treturn this.position.right - this.position.left;\n\t}\n\n\tget tickMap(): TickMap {\n\t\treturn this.events\n\t\t\t.concat([this.endEvent as EventTerm])\n\t\t\t.filter(Boolean)\n\t\t\t.reduce((map, event) => {\n\t\t\t\tif (Number.isFinite(event.tick)) {\n\t\t\t\t\tif (!map.has(event.tick)) map.set(event.tick, []);\n\n\t\t\t\t\tmap.get(event.tick).push(event);\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}, new Map());\n\t}\n\n\tget tickToX(): { [tick: number]: number } {\n\t\treturn [...this.tickMap.entries()].reduce((map, [tick, events]) => {\n\t\t\tevents = events.filter((e) => !e.fullMeasureRest && !e.grace);\n\t\t\tif (events.length) {\n\t\t\t\tconst x = Math.min(...events.map((e) => e.x));\n\t\t\t\tmap[tick] = x;\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget tickRates(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest);\n\t\tevents.sort((e1, e2) => e1.x - e2.x);\n\n\t\treturn events.slice(0, events.length - 1).map((e1, i) => {\n\t\t\tconst e2 = events[i + 1];\n\n\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t});\n\t}\n\n\tget tickRatesInStaves(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest && !event.grace);\n\t\tconst sevents: Record = events.reduce((map, event) => {\n\t\t\tmap[event.staff] = map[event.staff] || [];\n\t\t\tmap[event.staff].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst rates = Object.values(sevents).map((es) =>\n\t\t\tes\n\t\t\t\t.sort((e1, e2) => e1.x - e2.x)\n\t\t\t\t.slice(0, es.length - 1)\n\t\t\t\t.map((e1, i) => {\n\t\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t\t\t})\n\t\t);\n\n\t\treturn [].concat(...rates);\n\t}\n\n\tget tickRatesInGroups(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest);\n\t\tconst gevents: Record = events.reduce((map, event) => {\n\t\t\tconst groupIndex = this.staffGroups.findIndex((group) => group.includes(event.staff));\n\t\t\tmap[groupIndex] = map[groupIndex] || [];\n\t\t\tmap[groupIndex].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst rates = Object.values(gevents).map((es) =>\n\t\t\tes\n\t\t\t\t.sort((e1, e2) => e1.x - e2.x)\n\t\t\t\t.slice(0, es.length - 1)\n\t\t\t\t.map((e1, i) => {\n\t\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t\t\t})\n\t\t);\n\n\t\treturn [].concat(...rates);\n\t}\n\n\tget tickTwist(): number {\n\t\tif (!this.duration || !this.staffGroups) return undefined;\n\n\t\tconst events = this.events.filter(\n\t\t\t(event) => Number.isFinite(event.tick) && !event.fullMeasureRest && !event.grace && !event.tremoloCatcher && !(event.rest && event.division === 0)\n\t\t); // ignore rest0\n\t\tconst gevents: Record = events.reduce((map, event) => {\n\t\t\tconst groupIndex = this.staffGroups.findIndex((group) => group.includes(event.staff));\n\t\t\tmap[groupIndex] = map[groupIndex] || [];\n\t\t\tmap[groupIndex].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst twists = Object.values(gevents).map((es) => {\n\t\t\tconst eventsXOrder = [...es].sort((e1, e2) => e1.pivotX - e2.pivotX);\n\t\t\tconst xSpan = this.position.right - eventsXOrder[0].x;\n\t\t\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\t\t\tconst e1 = eventsXOrder[i];\n\t\t\t\tconst dx = e2.pivotX - e1.pivotX;\n\t\t\t\tconst dt = e2.tick! - e1.tick!;\n\n\t\t\t\tif (!dt) return dx / xSpan;\n\n\t\t\t\tconst rate = Math.atan2(dt / this.duration, dx / xSpan);\n\n\t\t\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t\t\t});\n\n\t\t\treturn Math.max(0, ...tickTwists);\n\t\t});\n\n\t\treturn Math.max(0, ...twists);\n\t}\n\n\tget eventMap(): Record {\n\t\treturn this.events.reduce((map, event) => {\n\t\t\tmap[event.id] = event;\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget empty(): boolean {\n\t\treturn !this.events?.length || !this.voices?.length;\n\t}\n\n\tget hasIllEvent(): boolean {\n\t\treturn this.regulated && this.events.some((event) => !event.zeroHolder && !Number.isFinite(event.tick) && !event.fullMeasureRest);\n\t}\n\n\tget brief(): string {\n\t\tconst timesig = `${this.timeSignature.numerator}/${this.timeSignature.denominator}`;\n\t\tconst eventBrieves = this.events.map((e) =>\n\t\t\t[\n\t\t\t\te.staff,\n\t\t\t\te.intX,\n\t\t\t\tMath.round(e.tip ? e.tip.y : e.ys?.[0] ?? 0),\n\t\t\t\te.fullMeasureRest ? 0 : e.division,\n\t\t\t\te.fullMeasureRest ? 0 : e.dots,\n\t\t\t\te.rest ? 'r' : '',\n\t\t\t\te.grace || '',\n\t\t\t\te.stemDirection,\n\t\t\t\te.beam || '',\n\t\t\t].join('|')\n\t\t);\n\n\t\treturn [timesig, ...eventBrieves].join('\\n');\n\t}\n\n\tget regulationHash(): string {\n\t\treturn sha1(this.brief);\n\t}\n\n\t// prefer use originalRegulationHash\n\tget regulationHash0(): string {\n\t\treturn this.originalRegulationHash || this.regulationHash;\n\t}\n\n\tget regulationHashes(): string[] {\n\t\treturn Array.from(new Set([this.originalRegulationHash, this.regulationHash].filter(Boolean)));\n\t}\n\n\tget featureWords(): string[][] | null {\n\t\tif (!this.regulated || !this.voices || !this.voices.length) return null;\n\n\t\tconst invalid = this.tickRatesInStaves.some((rate) => rate < 0);\n\n\t\tconst mainEvents = this.events.filter((event) => !event.zeroHolder && !event.rest);\n\n\t\tconst ys = mainEvents\n\t\t\t.map((event) => event.ys)\n\t\t\t.flat(1)\n\t\t\t.map((y) => `Y${-y * 2}`);\n\t\tconst uys = Array.from(new Set(ys));\n\t\tif (this.keySignature) uys.push(`K${this.keySignature}`);\n\n\t\tconst voices = this.voices\n\t\t\t.map((ids) => ids.map((id) => this.events.find((e) => e.id === id)).filter((event) => !event.zeroHolder && !event.rest))\n\t\t\t.filter((voice) => voice.length);\n\n\t\tconst melodies = invalid ? [] : voices.map((es) => es.map((e) => e.scaleChord).join('-'));\n\n\t\tconst rhythm = invalid ? [] : voices.map((es) => es.map((e) => e.division).join(''));\n\t\tif (this.timeSignature) rhythm.push(`T${this.timeSignature.numerator}/${this.timeSignature.denominator}`);\n\n\t\treturn [uys, melodies, rhythm];\n\t}\n\n\tget barType(): MeasureBarType {\n\t\tif (this.voltaEnd) return 'VoltaRight';\n\n\t\tconst typeEntris = Object.entries(this.barTypes).sort((e1, e2) => e2[1] - e1[1]);\n\t\tif (typeEntris[0] && typeEntris[0][1] >= 1) return typeEntris[0][0] as MeasureBarType;\n\n\t\treturn null;\n\t}\n\n\tget partialDuration(): boolean {\n\t\tif (!Number.isFinite(this.duration)) return false;\n\n\t\tconst signatureDuration = fractionMul(WHOLE_DURATION, this.timeSignature);\n\n\t\treturn this.duration < signatureDuration;\n\t}\n\n\tpostRegulate(): void {\n\t\tthis.endEvent = new EventTerm({ tick: this.duration, x: this.position.right });\n\n\t\tthis.updateRoundX();\n\t\tsolveGraceEvents(this);\n\t\tsolveTremoloPairs(this);\n\t\tthis.updateContextTick();\n\t}\n\n\tupdateRoundX(): void {\n\t\tconst tickToX = this.tickToX;\n\t\tif (tickToX)\n\t\t\tthis.events.forEach((event) => {\n\t\t\t\tconst x = tickToX[event.tick];\n\t\t\t\tif (Number.isFinite(x)) event.roundX = x;\n\t\t\t});\n\t}\n\n\tupdateContextTick(): void {\n\t\tif (!this.staffGroups) return;\n\t\tconst contexts = this.contexts.flat(1);\n\t\tthis.staffGroups.flat(1).forEach((staffIndex) => {\n\t\t\tconst terms = [...this.events.filter((e) => e.staff === staffIndex), ...contexts.filter((c) => c.staff === staffIndex)];\n\t\t\tterms.sort((t1, t2) => t2.x - t1.x); // order by x from right to left\n\n\t\t\tlet tick = this.duration;\n\t\t\tterms.forEach((term) => {\n\t\t\t\tif (term instanceof EventTerm) {\n\t\t\t\t\tif (!term.fullMeasureRest && !term.zeroHolder) tick = term.tick;\n\t\t\t\t} else if (term instanceof ContextedTerm) term.tick = tick;\n\t\t\t});\n\t\t});\n\t}\n\n\tasSolution(ref: SpartitoMeasure = undefined): RegulationSolution {\n\t\tif (!this.regulated) return null;\n\n\t\t//let timeSignature = undefined;\n\t\t//if (ref && printFraction(ref.timeSignature) !== printFraction(this.timeSignature)) timeSignature = this.timeSignature;\n\n\t\treturn {\n\t\t\t//timeSignature,\n\t\t\tevents: this.events.map((e) => {\n\t\t\t\tconst se = {\n\t\t\t\t\tid: e.id,\n\t\t\t\t\ttick: e.tick,\n\t\t\t\t\ttickGroup: e.tickGroup,\n\t\t\t\t\ttimeWarp: e.timeWarp,\n\t\t\t\t} as RegulationSolutionEvent;\n\n\t\t\t\tif (ref) {\n\t\t\t\t\tconst refEvent = ref.events.find((re) => re.id === e.id);\n\t\t\t\t\tif (refEvent) {\n\t\t\t\t\t\tif (e.division !== refEvent.division) se.division = e.division;\n\t\t\t\t\t\tif (e.dots !== refEvent.dots) se.dots = e.dots;\n\t\t\t\t\t\tif (e.grace !== refEvent.grace) se.grace = !!e.grace;\n\t\t\t\t\t\tif (e.beam !== refEvent.beam) se.beam = e.beam;\n\t\t\t\t\t\tif (e.fullMeasureRest !== refEvent.fullMeasureRest) se.fullMeasure = e.fullMeasureRest;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn se;\n\t\t\t}),\n\t\t\tvoices: this.voices,\n\t\t\tduration: this.duration,\n\t\t\tpriority: -this.solutionStat?.loss,\n\t\t};\n\t}\n\n\tapplySolution(solution: RegulationSolution): void {\n\t\tif (solution.timeSignature) {\n\t\t\tthis.basics.forEach((basic) => {\n\t\t\t\tbasic.timeSignature = solution.timeSignature;\n\t\t\t\tbasic.doubtfulTimesig = false;\n\t\t\t});\n\t\t}\n\n\t\tthis.voices = solution.voices;\n\t\tthis.duration = solution.duration;\n\t\tthis.events.forEach((event) => {\n\t\t\tevent.timeWarp = null;\n\t\t\tevent.tick = null;\n\t\t\tevent.tickGroup = null;\n\n\t\t\tconst se = solution.events?.find((e) => e.id === event.id);\n\t\t\tif (se) {\n\t\t\t\tevent.tick = se.tick;\n\t\t\t\tevent.timeWarp = se.timeWarp;\n\t\t\t\tevent.tickGroup = se.tickGroup;\n\n\t\t\t\tif (Number.isFinite(se.division)) event.division = se.division;\n\t\t\t\tif (Number.isFinite(se.dots)) event.dots = se.dots;\n\t\t\t\tif (se.beam) event.beam = se.beam as StemBeam;\n\t\t\t\tif (se.grace !== undefined) event.grace = se.grace ? GraceType.Grace : undefined;\n\t\t\t\tif (se.fullMeasure) event.rest = 'R';\n\t\t\t}\n\t\t});\n\n\t\tif (Number.isFinite(solution.priority)) this.solutionStat = { loss: -solution.priority };\n\n\t\tthis.postRegulate();\n\t}\n\n\tcleanupRegulation(): void {\n\t\tthis.voices = null;\n\t\tthis.duration = null;\n\t\tthis.events.forEach((event) => {\n\t\t\tevent.tick = null;\n\t\t\tevent.tickGroup = null;\n\t\t\tevent.timeWarp = null;\n\t\t});\n\t}\n\n\tregulateTest(): void {\n\t\tthis.duration = 0;\n\t\tthis.voices = this.rows.map((row) => row.events.map((e) => e.id));\n\t\tthis.voices.forEach((ids) => {\n\t\t\tlet tick = 0;\n\t\t\tconst events = ids.map((id) => this.events.find((e) => e.id === id));\n\t\t\tevents.forEach((e, index) => {\n\t\t\t\te.tickGroup = index;\n\t\t\t\te.tick = tick;\n\n\t\t\t\ttick += e.duration;\n\t\t\t});\n\n\t\t\tthis.duration = Math.max(this.duration, tick);\n\t\t});\n\t}\n\n\tregulateSimple(): void {\n\t\tSimplePolicy.computeMeasureTicks(this);\n\t\tSimplePolicy.computeMeasureVoices(this);\n\t}\n\n\tasync regulateEquations(options: EquationPolicy.RegulatorOptions): Promise {\n\t\tawait EquationPolicy.regulateMeasure(this, options);\n\t}\n\n\t// compute event.tick, event.tickGroup, event.timeWarp, voices, duration\n\tasync regulate({ policy = 'advanced', ...options }: RegulationOptions = {}): Promise {\n\t\tswitch (policy) {\n\t\t\tcase 'test':\n\t\t\t\tthis.regulateTest();\n\n\t\t\t\tbreak;\n\t\t\tcase 'equations':\n\t\t\tcase 'advanced':\n\t\t\t\tawait this.regulateEquations(options);\n\n\t\t\t\tbreak;\n\t\t\tcase 'simple':\n\t\t\tdefault:\n\t\t\t\tthis.regulateSimple();\n\t\t}\n\n\t\tthis.postRegulate();\n\t}\n\n\tcreatePatch(): PatchMeasure {\n\t\treturn new PatchMeasure({\n\t\t\tmeasureIndex: this.measureIndex,\n\t\t\tstaffMask: this.staffMask,\n\t\t\tbasic: this.basics[0],\n\t\t\t//points: [],\n\t\t\tevents: this.events,\n\t\t\tcontexts: this.contexts,\n\t\t\tmarks: this.marks,\n\t\t\tvoices: this.voices,\n\t\t});\n\t}\n\n\tcreateClusters(): EventCluster[] {\n\t\tconst trueEventIds = this.voices && new Set(this.voices.flat(1));\n\n\t\treturn this.staffGroups\n\t\t\t.filter((idx) => idx.length)\n\t\t\t.map((staffIndices) => {\n\t\t\t\tconst staffY0 = this.position.staffYs[0];\n\t\t\t\tconst staffYn = (n) => this.position.staffYs[staffIndices.indexOf(n)] - staffY0;\n\n\t\t\t\tconst events = this.events.filter((event) => staffIndices.includes(event.staff));\n\t\t\t\tif (!events.length) return null;\n\n\t\t\t\tconst elements: EventElement[] = events.map((event) => ({\n\t\t\t\t\tindex: event.id,\n\t\t\t\t\tvoice: (this.voices || []).findIndex((voice) => voice.includes(event.id)),\n\t\t\t\t\ttype: event.rest ? EventElementType.REST : EventElementType.CHORD,\n\t\t\t\t\tstaff: staffIndices.indexOf(event.staff),\n\t\t\t\t\tx: event.tipX,\n\t\t\t\t\tpivotX: event.pivotX,\n\t\t\t\t\ty1: staffYn(event.staff) + (event.stemDirection === 'u' ? event.tipY : event.ys[event.ys.length - 1]),\n\t\t\t\t\ty2: staffYn(event.staff) + (event.stemDirection === 'u' ? event.ys[0] : event.tipY),\n\t\t\t\t\theadY: event.stemDirection === 'u' ? event.ys[0] : event.ys[event.ys.length - 1],\n\t\t\t\t\tfeature: event.feature,\n\t\t\t\t\tdivision: event.division,\n\t\t\t\t\tdots: event.dots,\n\t\t\t\t\tbeam: event.beam || null,\n\t\t\t\t\tstemDirection: event.stemDirection,\n\t\t\t\t\tgrace: !!event.grace,\n\t\t\t\t\ttremoloCatcher: event.tremoloCatcher,\n\t\t\t\t\ttimeWarped: !!event.timeWarp,\n\t\t\t\t\tfullMeasure: event.fullMeasureRest,\n\t\t\t\t\ttick: event.tick || 0,\n\t\t\t\t\tfake: !event.fullMeasureRest && !event.grace && this.voices && !trueEventIds.has(event.id), // tremoloCatcher deemed as fake\n\t\t\t\t}));\n\t\t\t\tif (!elements.some((elem) => !elem.fake)) return null;\n\n\t\t\t\tconst signatureDuration = fractionMul(WHOLE_DURATION, this.timeSignature);\n\n\t\t\t\t// BOS & EOS\n\t\t\t\telements.unshift({\n\t\t\t\t\tindex: 0,\n\t\t\t\t\ttype: EventElementType.BOS,\n\t\t\t\t\tstaff: null,\n\t\t\t\t\tdivision: null,\n\t\t\t\t\tbeam: null,\n\t\t\t\t\tdots: null,\n\t\t\t\t\tstemDirection: null,\n\t\t\t\t\tgrace: false,\n\t\t\t\t\ttremoloCatcher: false,\n\t\t\t\t\tfullMeasure: false,\n\t\t\t\t\tx: this.position.left,\n\t\t\t\t\tpivotX: this.position.left,\n\t\t\t\t\ty1: 0,\n\t\t\t\t\ty2: 0,\n\t\t\t\t\theadY: 0,\n\t\t\t\t\tfeature: null,\n\t\t\t\t\ttimeWarped: this.duration < signatureDuration,\n\t\t\t\t\ttick: 0,\n\t\t\t\t\tfake: false,\n\t\t\t\t});\n\t\t\t\telements.push({\n\t\t\t\t\tindex: -1,\n\t\t\t\t\ttype: EventElementType.EOS,\n\t\t\t\t\tstaff: null,\n\t\t\t\t\tdivision: null,\n\t\t\t\t\tbeam: null,\n\t\t\t\t\tdots: null,\n\t\t\t\t\tstemDirection: null,\n\t\t\t\t\tgrace: false,\n\t\t\t\t\ttremoloCatcher: false,\n\t\t\t\t\tfullMeasure: false,\n\t\t\t\t\tx: this.position.right,\n\t\t\t\t\tpivotX: this.position.right,\n\t\t\t\t\ty1: 0,\n\t\t\t\t\ty2: 0,\n\t\t\t\t\theadY: 0,\n\t\t\t\t\tfeature: null,\n\t\t\t\t\ttimeWarped: false,\n\t\t\t\t\ttick: this.duration,\n\t\t\t\t\tfake: false,\n\t\t\t\t});\n\n\t\t\t\tlet matrixH = null;\n\t\t\t\tif (this.voices) {\n\t\t\t\t\tmatrixH = elements.map(() => elements.map(() => 0));\n\n\t\t\t\t\tthis.voices.forEach((voice) => {\n\t\t\t\t\t\tlet tar = 0;\n\t\t\t\t\t\tvoice.forEach((id) => {\n\t\t\t\t\t\t\tconst src = elements.findIndex((e) => e.index === id);\n\t\t\t\t\t\t\tif (src > 0 && tar >= 0) matrixH[src][tar] = 1;\n\t\t\t\t\t\t\ttar = src;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (tar >= 0) matrixH[elements.length - 1][tar] = 1;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst annotation = { ...this.solutionStat, patched: this.patched };\n\n\t\t\t\tconst backgroundImages =\n\t\t\t\t\tthis.backgroundImages &&\n\t\t\t\t\tthis.backgroundImages.map(({ url, position }) => ({\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t...position,\n\t\t\t\t\t\t\ty: position.y - staffY0,\n\t\t\t\t\t\t},\n\t\t\t\t\t}));\n\n\t\t\t\treturn new EventCluster({\n\t\t\t\t\tindex: this.measureIndex,\n\t\t\t\t\tduration: this.duration,\n\t\t\t\t\tsignatureDuration,\n\t\t\t\t\tstaffY0,\n\t\t\t\t\telements,\n\t\t\t\t\tmatrixH,\n\t\t\t\t\tannotation,\n\t\t\t\t\tbackgroundImages,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t}\n\n\tapplyClusters(clusters: EventCluster[]): void {\n\t\tconst id_max = this.events.reduce((max, event) => Math.max(max, event.id), 0) + 1;\n\t\tthis.matrixH = Array(id_max + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(id_max).fill(0));\n\n\t\tclusters.forEach((cluster) => {\n\t\t\tconst ids = cluster.elements.map((e) => e.index);\n\t\t\tconsole.assert(cluster.matrixH.length === ids.length - 1, 'unexpected matrixH size:', cluster.matrixH.length, ids.length);\n\n\t\t\tfor (let is = 1; is < ids.length; ++is) {\n\t\t\t\tfor (let it = 0; it < ids.length - 1; ++it) {\n\t\t\t\t\tconst srcId = ids[is] < 0 ? id_max : ids[is];\n\t\t\t\t\tconst tarId = ids[it];\n\n\t\t\t\t\tthis.matrixH[srcId][tarId] = cluster.matrixH[is - 1][it];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// event predisposition\n\t\t\tcluster.elements.forEach((elem) => {\n\t\t\t\tconst event = this.events.find((event) => event.id === elem.index);\n\t\t\t\tif (event) {\n\t\t\t\t\tevent.predisposition = elem.predisposition;\n\t\t\t\t\tif (event.predisposition.grace !== undefined) event.grace = event.predisposition.grace ? GraceType.Grace : null;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t// estimated measure duration\n\t\tthis.estimatedDuration = clusters.reduce((sum, cluster) => sum + cluster.estimatedDuration, 0) / clusters.length;\n\t}\n}\n\nexport { SpartitoMeasure, EquationPolicy };\n","import { MetaNotation, TokenPosition } from '../performer';\nimport { Hash, HashVector, cosHashes, hashToHex, hashToBigInt } from './hashVector';\nimport { EventTerm, ContextedTerm, TermPitch, TempoTerm, WHOLE_DURATION } from './term';\nimport { VoicesStaff, VoiceMeasure, TermMeasure, TermVoice, Performing, RegulationOptions } from './interfaces';\nimport { reducedFraction, argmax, noteToPitch, frac, printFraction, fractionMul } from './utils';\nimport { TokenType } from './token';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { SimpleClass } from './aux_/typedJSON';\nimport { evaluateMeasure } from './measureEvaluator';\nimport { Logger, DummyLogger } from './logger';\n\nexport const emptyVoiceFromStaffMeasure = (staff: TermMeasure, chiefVoice: boolean = false): VoiceMeasure => {\n\treturn {\n\t\tempty: true,\n\t\tduration: staff.duration,\n\t\ttickMap: {\n\t\t\t[0]: EventTerm.space({ duration: staff.duration, tick: 0 }),\n\t\t},\n\t\ttimeSignature: staff.timeSignature,\n\t\ttimeSigNumeric: staff.timeSigNumeric,\n\t\tkeySignature: staff.keySignature,\n\t\tcontextedTerms: staff.terms.filter((term) => term instanceof ContextedTerm && (!term.staffLevel || chiefVoice)) as ContextedTerm[],\n\t\tmarks: [],\n\t};\n};\n\nconst removeEmptyMeasuresInVoicesStaves = (staves: VoicesStaff[]): void => {\n\t//console.assert(staves[0] && staves[0].voices[0], 'voices is empty:', staves);\n\tif (!(staves[0] && staves[0].voices[0])) {\n\t\tconsole.warn('empty voices:', staves);\n\t\treturn;\n\t}\n\n\tconst measureCount = staves[0].voices[0].measures.length;\n\tconst measureEmpties = Array(measureCount)\n\t\t.fill(null)\n\t\t.map((_, m) => {\n\t\t\tfor (const staff of staves) {\n\t\t\t\tfor (const voice of staff.voices) {\n\t\t\t\t\tconst measure = voice.measures[m];\n\t\t\t\t\tif (!measure.empty) return false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\tmeasureEmpties.forEach((empty, m) => {\n\t\tif (empty) {\n\t\t\tstaves.forEach((staff) =>\n\t\t\t\tstaff.voices.forEach((voice) => {\n\t\t\t\t\tconst measure = voice.measures[m];\n\t\t\t\t\tmeasure.tickMap = {};\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t});\n};\n\nconst markingTiesInVoice = (voice: TermVoice) => {\n\tconst events = [].concat(...voice.measures.map((m) => Object.values(m.tickMap).filter((event) => event instanceof EventTerm)));\n\t//console.log(\"events:\", events);\n\n\tfor (let i = 1; i < events.length; ++i) {\n\t\tconst event0 = events[i - 1];\n\t\tconst event1 = events[i];\n\t\tif (!event0.rest && !event1.rest) {\n\t\t\tif (event0.accessories.some((acc) => acc.type === TokenType.SlurBegin) && event1.accessories.some((acc) => acc.type === TokenType.SlurEnd)) {\n\t\t\t\tconst pitches = event0.pitches.filter((p0) => event1.pitches.some((p1) => p1.note === p0.note && p1.alter === p0.alter));\n\t\t\t\tif (pitches.length > 0) {\n\t\t\t\t\tevent0.tying = true;\n\t\t\t\t\tevent1.tied = true;\n\n\t\t\t\t\tpitches.forEach((p0) => {\n\t\t\t\t\t\tp0.tying = true;\n\t\t\t\t\t\tconst p1 = event1.pitches.find((p1) => p1.note === p0.note && p1.alter === p0.alter);\n\t\t\t\t\t\tp1.tied = true;\n\t\t\t\t\t});\n\n\t\t\t\t\t// remove slurs from accessories\n\t\t\t\t\tpitches.forEach(() => {\n\t\t\t\t\t\tconst si0 = event0.accessories.findIndex((acc) => acc.type === TokenType.SlurBegin);\n\t\t\t\t\t\tif (si0 >= 0) event0.accessories.splice(si0, 1);\n\n\t\t\t\t\t\tconst si1 = event1.accessories.findIndex((acc) => acc.type === TokenType.SlurEnd);\n\t\t\t\t\t\tif (si1 >= 0) event1.accessories.splice(si1, 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nclass Spartito extends SimpleClass {\n\tstatic className = 'Spartito';\n\n\tstavesCount: number;\n\tstaffGroups: number[][];\n\tmeasures: SpartitoMeasure[];\n\n\ttags: string[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.measures.forEach((measure) => (measure.staffGroups = this.staffGroups));\n\t}\n\n\tget regulated(): boolean {\n\t\treturn this.measures.every((m) => m.regulated);\n\t}\n\n\tget solidMeasureCount(): number {\n\t\treturn this.measures.filter((measure) => !measure.empty).length;\n\t}\n\n\tget measureIndexMapping(): number[] {\n\t\tlet n = 0;\n\t\treturn this.measures.map((measure) => {\n\t\t\treturn !measure.empty ? n++ : null;\n\t\t});\n\t}\n\n\tget headBPM(): number {\n\t\tfor (const measure of this.measures) {\n\t\t\tif (measure.marks) {\n\t\t\t\tconst tempoMark = measure.marks.find((mark) => mark instanceof TempoTerm && mark.isValid()) as TempoTerm;\n\t\t\t\tif (tempoMark) return tempoMark.bpm;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget measureLayoutCode(): string {\n\t\tconst ms = this.measures\n\t\t\t.filter((measure) => !measure.empty)\n\t\t\t.map((measure, i) => ({\n\t\t\t\tindex: i + 1,\n\t\t\t\tvb: measure.voltaBegin,\n\t\t\t\tve: measure.voltaEnd,\n\t\t\t\talter: measure.alternative,\n\t\t\t\tleftSign: '',\n\t\t\t\trightSign: '',\n\t\t\t}));\n\t\tms.forEach((m, i) => {\n\t\t\tif (m.vb) {\n\t\t\t\tconst nextI = ms.slice(i + 1).findIndex((mm) => mm.vb);\n\t\t\t\tconst nextVBI = nextI >= 0 ? i + nextI : ms.length;\n\t\t\t\tif (ms.slice(i, nextVBI - 1).some((mm) => mm.ve))\n\t\t\t\t\t// check if volta range closed\n\t\t\t\t\tm.leftSign = '2*[';\n\t\t\t}\n\n\t\t\tif (m.ve) {\n\t\t\t\tconst pms = ms.slice(0, i + 1).reverse();\n\t\t\t\tconst lastVEI = pms.slice(1).findIndex((mm) => mm.ve);\n\t\t\t\tif (lastVEI >= 0) {\n\t\t\t\t\tif (!pms.slice(1, lastVEI + 1).some((mm) => mm.vb))\n\t\t\t\t\t\t// ignore unclosed right volta\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m.alter) {\n\t\t\t\t\tconst lastMI = pms.findIndex((m) => !m.alter);\n\t\t\t\t\tif (lastMI > 0) {\n\t\t\t\t\t\tpms[lastMI].rightSign = ']';\n\t\t\t\t\t\tpms[lastMI - 1].leftSign = '{[';\n\n\t\t\t\t\t\tm.rightSign = '],';\n\n\t\t\t\t\t\tif (ms[i + 1]) ms[i + 1].rightSign = '},';\n\t\t\t\t\t}\n\t\t\t\t} else m.rightSign = '],';\n\n\t\t\t\tif (!pms.some((m) => m.vb)) ms[0].leftSign = '2*[';\n\t\t\t}\n\t\t});\n\n\t\treturn ms\n\t\t\t.map((m) => m.leftSign + m.index.toString() + m.rightSign + (m.rightSign ? '' : ','))\n\t\t\t.join(' ')\n\t\t\t.replace(/,$/, '');\n\t}\n\n\tget qualityScore(): number {\n\t\tconst measures = this.measures.filter((measure) => !measure.empty);\n\t\tconst qss = measures.map(evaluateMeasure).map((e) => e.qualityScore);\n\t\tconst sum = qss.reduce((a, b) => a + b, 0);\n\t\t//console.log('qss:', qss);\n\n\t\treturn measures.length ? sum / measures.length : null;\n\t}\n\n\tdumpEvaluations(): void {\n\t\tconst es = this.measures.filter((measure) => !measure.empty).map((m) => ({ measureIndex: m.measureIndex, ...evaluateMeasure(m) }));\n\t\tconst qss = es.map((e) => e.qualityScore);\n\t\tconst sum = qss.reduce((a, b) => a + b, 0);\n\t\tconsole.log('qualityScore:', sum / es.length);\n\n\t\tconsole.table(es);\n\t}\n\n\tregulate(options: RegulationOptions = {}): void {\n\t\tthis.measures.forEach((m) => m.regulated || m.regulate(options));\n\t}\n\n\tcleanupRegulation(): void {\n\t\tthis.measures.forEach((m) => (m.voices = null));\n\t}\n\n\t// measures' estimatedDuration should be valid\n\trectifyTimeSignatures(logger: Logger = new DummyLogger()): void {\n\t\tconst mis = this.measures\n\t\t\t.map((measure, index) => ({ measure, index }))\n\t\t\t.filter(({ measure, index }) => !index || measure.timeSignatureChanged)\n\t\t\t.map(({ index }) => index);\n\t\tconst segments = mis\n\t\t\t.map((index, si) => this.measures.slice(index, si < mis.length - 1 ? mis[si + 1] : this.measures.length))\n\t\t\t.map((ms) => ms.filter((m) => m.estimatedDuration > 0))\n\t\t\t.filter((seg) => seg.length >= 3 || seg.some((measure) => measure.doubtfulTimesig));\n\t\t//console.log(\"segments:\", segments.map(ms => ms.map(m => m.measureIndex)));\n\n\t\tsegments.forEach((measures) => {\n\t\t\tif (measures[0].patched) {\n\t\t\t\t// rectify according to patched head measure\n\t\t\t\tconst newTimeSignature = measures[0].timeSignature;\n\t\t\t\tconst measuresToFix = measures\n\t\t\t\t\t.slice(1)\n\t\t\t\t\t.filter((measure) => !measure.patched && printFraction(measure.timeSignature) !== printFraction(newTimeSignature));\n\t\t\t\tif (measuresToFix.length) {\n\t\t\t\t\tconst originTimeSignature = measuresToFix[0].timeSignature;\n\t\t\t\t\tmeasuresToFix.forEach((measure) => measure.basics.forEach((basic) => (basic.timeSignature = newTimeSignature)));\n\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t'[rectifyTimeSignatures]\ttimesignator overwrote by patched head:',\n\t\t\t\t\t\t`${printFraction(originTimeSignature)} -> ${printFraction(newTimeSignature)}`,\n\t\t\t\t\t\tmeasuresToFix.map((m) => m.measureIndex)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst originTimeSignature = measures[0].timeSignature;\n\t\t\tconst regularD = Number.isInteger(Math.log2(originTimeSignature.denominator));\n\n\t\t\tlet denominator = regularD ? 4 : 8;\n\t\t\tif (regularD) denominator = Math.max(denominator, measures[0].timeSignature.denominator);\n\n\t\t\tconst numerators = measures.map((measure) => Math.round((measure.estimatedDuration * denominator) / WHOLE_DURATION));\n\t\t\tconst countings = Object.entries(numerators.reduce((c, n) => ((c[n] = (c[n] || 0) + 1), c), {} as Record)).sort(\n\t\t\t\t(p1, p2) => p2[1] - p1[1]\n\t\t\t);\n\t\t\tconst peakCount = countings[0][1];\n\t\t\tconst candidateNumerators = countings.filter(([_, c]) => c > peakCount * 0.6);\n\t\t\tconst bestCounting = candidateNumerators.reduce((best, c) => (Number(c[0]) > Number(best[0]) ? c : best));\n\t\t\tif (bestCounting[1] > 1) {\n\t\t\t\t//console.log(\"countings:\", countings, bestCounting[0]);\n\t\t\t\tlet numerator = Number(bestCounting[0]);\n\t\t\t\tif (!regularD || originTimeSignature.denominator * numerator !== originTimeSignature.numerator * denominator) {\n\t\t\t\t\tif (regularD && denominator !== originTimeSignature.denominator) {\n\t\t\t\t\t\tconst reducedN = (numerator * originTimeSignature.denominator) / denominator;\n\t\t\t\t\t\tif (Number.isInteger(reducedN)) {\n\t\t\t\t\t\t\tnumerator = reducedN;\n\t\t\t\t\t\t\tdenominator = originTimeSignature.denominator;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst measuresToFix = measures.filter((measure) => !measure.patched);\n\n\t\t\t\t\tconst newTimeSignature = frac(numerator, denominator);\n\t\t\t\t\tmeasuresToFix.forEach((measure) => measure.basics.forEach((basic) => (basic.timeSignature = newTimeSignature)));\n\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t'[rectifyTimeSignatures]\ttimesignator overwrote by estimation:',\n\t\t\t\t\t\t`${printFraction(originTimeSignature)} -> ${numerator}/${denominator}`,\n\t\t\t\t\t\tmeasuresToFix.map((m) => m.measureIndex)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tmakeVoiceStaves(): VoicesStaff[] {\n\t\tthis.regulate();\n\n\t\tconst voiceCount = Math.max(...this.measures.map((measure) => measure.voices.length));\n\t\tif (!voiceCount || !Number.isFinite(voiceCount)) return null;\n\n\t\t// mark tied pitches for patched measues\n\t\tthis.measures\n\t\t\t.filter((measure) => measure.patched)\n\t\t\t.forEach((measure) => {\n\t\t\t\tmeasure.events.forEach((event) => {\n\t\t\t\t\tif (event.tied) event.pitches.forEach((pitch) => (pitch.tied = true));\n\t\t\t\t});\n\t\t\t});\n\n\t\t// [measure, voice]\n\t\tconst measures: VoiceMeasure[][] = this.measures.map((measure /*, mi*/) => {\n\t\t\tconsole.assert(measure.validRegulated, '[makeVoiceStaves] measure is invalid:', measure);\n\n\t\t\tconst eventMap: { [key: number]: EventTerm } = {};\n\t\t\tmeasure.events.forEach((event) => (eventMap[event.id] = event));\n\n\t\t\tconst leftStaves = new Set(\n\t\t\t\tArray(measure.contexts.length)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map((_, i) => i)\n\t\t\t);\n\n\t\t\tlet bar = null;\n\t\t\tif (measure.barType) {\n\t\t\t\tswitch (measure.barType) {\n\t\t\t\t\tcase 'Segment':\n\t\t\t\t\t\tbar = '||';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Terminal':\n\t\t\t\t\t\tbar = '|.';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst voices: VoiceMeasure[] = measure.voices.map((ids /*, vi*/) => {\n\t\t\t\tconst events = ids.map((id) => eventMap[id]);\n\t\t\t\tevents.sort((e1, e2) => e1.tick - e2.tick);\n\n\t\t\t\tconst tickMap = {};\n\t\t\t\tlet tick = 0;\n\t\t\t\tlet lastEvent = null;\n\t\t\t\tfor (const event of events) {\n\t\t\t\t\tif (!Number.isFinite(event?.tick)) {\n\t\t\t\t\t\tconsole.warn('invalid event tick:', event);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (event.tick > tick) tickMap[tick] = EventTerm.space({ tick, duration: event.tick - tick });\n\t\t\t\t\telse if (!event.grace && event.tick < tick && lastEvent)\n\t\t\t\t\t\tlastEvent.timeWarp = reducedFraction(event.tick - lastEvent.tick, lastEvent.duration);\n\t\t\t\t\t//console.log(\"timewarp:\", event.tick - lastEvent.tick, lastEvent.duration, lastEvent.timeWarp);\n\n\t\t\t\t\ttickMap[event.tick] = event;\n\n\t\t\t\t\tif (!event.zeroHolder) {\n\t\t\t\t\t\ttick = Math.round(event.tick + event.duration);\n\t\t\t\t\t\tlastEvent = event;\n\n\t\t\t\t\t\t// sub grace events\n\t\t\t\t\t\tif (event.graceIds) {\n\t\t\t\t\t\t\tevent.graceIds.forEach((id) => {\n\t\t\t\t\t\t\t\tconst grace = measure.eventMap[id];\n\t\t\t\t\t\t\t\tif (grace) tickMap[grace.tick] = grace;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (measure.endEvent && measure.endEvent.graceIds) {\n\t\t\t\t\tmeasure.endEvent.graceIds.forEach((id) => {\n\t\t\t\t\t\tconst grace = measure.eventMap[id];\n\t\t\t\t\t\tif (grace && (!lastEvent || grace.staff === lastEvent.staff)) tickMap[grace.tick] = grace;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (tick < measure.duration) tickMap[tick] = EventTerm.space({ tick, duration: measure.duration - tick });\n\t\t\t\telse if (tick > measure.duration && Number.isFinite(measure.duration))\n\t\t\t\t\t//console.warn(\"duration out of range:\", tick, column.duration, mi, vi);\n\t\t\t\t\tlastEvent.timeWarp = reducedFraction(measure.duration - lastEvent.tick, lastEvent.duration);\n\n\t\t\t\tconsole.assert(\n\t\t\t\t\t!lastEvent || !lastEvent.timeWarp || (Number.isInteger(lastEvent.timeWarp.numerator) && Number.isInteger(lastEvent.timeWarp.denominator)),\n\t\t\t\t\t'invalid time warp:',\n\t\t\t\t\tlastEvent\n\t\t\t\t);\n\n\t\t\t\tconst staffIndex = events[0] ? events[0].staff : 0;\n\t\t\t\tleftStaves.delete(staffIndex);\n\t\t\t\tconst basic = measure.basics[staffIndex];\n\n\t\t\t\t//const row = measure.rows[staffIndex];\n\t\t\t\tconst contextedTerms = measure.contexts[staffIndex];\n\n\t\t\t\tconst tailEvent = events[events.length - 1];\n\t\t\t\tconst tailStaff = tailEvent ? tailEvent.staff : 0;\n\n\t\t\t\t// TODO: modify full measure rests duration\n\n\t\t\t\treturn {\n\t\t\t\t\ttickMap,\n\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\t...basic,\n\t\t\t\t\t// TODO: consider staff altered voice\n\t\t\t\t\tcontextedTerms,\n\t\t\t\t\tmarks: [],\n\t\t\t\t\tbreak: measure.break,\n\t\t\t\t\tpageBreak: measure.pageBreak,\n\t\t\t\t\theadStaff: staffIndex,\n\t\t\t\t\ttailStaff,\n\t\t\t\t\tbar,\n\t\t\t\t};\n\t\t\t});\n\n\t\t\twhile (voices.length < voiceCount) {\n\t\t\t\tconst staffIndex = leftStaves.values().next().value || 0;\n\t\t\t\tleftStaves.delete(staffIndex);\n\n\t\t\t\tconst basic = measure.basics[staffIndex];\n\t\t\t\tconst terms = measure.contexts[staffIndex];\n\n\t\t\t\tconst chiefVoice = voices.every((voice) => voice.headStaff !== staffIndex);\n\n\t\t\t\tconst voice = emptyVoiceFromStaffMeasure(\n\t\t\t\t\t{\n\t\t\t\t\t\tterms,\n\t\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\t\t...basic,\n\t\t\t\t\t\tbreak: measure.break,\n\t\t\t\t\t\tpageBreak: measure.pageBreak,\n\t\t\t\t\t},\n\t\t\t\t\tchiefVoice\n\t\t\t\t);\n\t\t\t\tvoice.headStaff = staffIndex;\n\t\t\t\tvoice.tailStaff = staffIndex;\n\t\t\t\tvoices.push(voice);\n\t\t\t}\n\n\t\t\treturn voices;\n\t\t});\n\t\t//console.log(\"measures:\", measures);\n\n\t\t// compute traits for voice-measures\n\t\tmeasures.forEach((voices) =>\n\t\t\tvoices.forEach((measure) => {\n\t\t\t\tconst words = [];\n\n\t\t\t\tif (!measure.empty) {\n\t\t\t\t\twords.push(`s${measure.headStaff}`);\n\t\t\t\t\twords.push(`s${measure.tailStaff}`);\n\t\t\t\t}\n\n\t\t\t\tObject.values(measure.tickMap).forEach((event) => {\n\t\t\t\t\tif (event instanceof EventTerm) {\n\t\t\t\t\t\twords.push(`s${event.staff}`);\n\n\t\t\t\t\t\tif (event.stemDirection) {\n\t\t\t\t\t\t\tconst sd = `st${event.staff}-${event.stemDirection}`;\n\t\t\t\t\t\t\twords.push(sd, sd);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (event.grace) words.push(`gd${event.mainDuration}`);\n\t\t\t\t\t\telse words.push(`d${event.mainDuration}`);\n\n\t\t\t\t\t\tif (event.rest) words.push('r-' + event.rest);\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tevent.pitches.forEach((pitch) => {\n\t\t\t\t\t\t\t\twords.push(`p1-${pitch.note}`);\n\t\t\t\t\t\t\t\twords.push(`p8-${Math.round(pitch.note / 8)}`);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tmeasure.trait = HashVector.fromWords(words);\n\t\t\t})\n\t\t);\n\t\t//console.log(\"measure traits:\");\n\t\t//console.table(measures.map(voices => voices.map(measure => hashToHex(measure.trait.toHash()))));\n\n\t\tconst staffToGroup: Record = this.staffGroups\n\t\t\t.flat(1)\n\t\t\t.reduce((map, si) => ((map[si] = this.staffGroups.findIndex((group) => group.includes(si))), map), {});\n\n\t\t// sort voices to connect voices between neighhoring measures\n\t\tconst voiceTraits = Array(voiceCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, index) => ({ vector: HashVector.zero, index, weight: 0, headStaff: null }));\n\t\tmeasures.forEach((voices, mi) => {\n\t\t\tvoiceTraits.sort((v1, v2) => v2.weight - v1.weight);\n\n\t\t\tconst leftVoices = new Set(voices);\n\t\t\tvoiceTraits.forEach((voiceTrait) => {\n\t\t\t\tconst vs = [...leftVoices];\n\t\t\t\tlet measure = vs[0];\n\t\t\t\tif (mi > 0 && vs.length > 1) {\n\t\t\t\t\tconst consistencies = vs.map((measure) =>\n\t\t\t\t\t\tstaffToGroup[measure.headStaff] === staffToGroup[voiceTrait.headStaff]\n\t\t\t\t\t\t\t? cosHashes(voiceTrait.vector.toHash(), measure.trait.toHash())\n\t\t\t\t\t\t\t: -1\n\t\t\t\t\t);\n\t\t\t\t\tmeasure = vs[argmax(consistencies)];\n\t\t\t\t}\n\t\t\t\tleftVoices.delete(measure);\n\n\t\t\t\tmeasure.voiceIndex = voiceTrait.index;\n\t\t\t\tvoiceTrait.vector.scale(0.4).add(measure.trait);\n\n\t\t\t\tvoiceTrait.weight = Object.keys(measure.tickMap).length;\n\n\t\t\t\tif (mi === 0) voiceTrait.headStaff = measure.headStaff;\n\t\t\t});\n\n\t\t\tvoices.sort((m1, m2) => m1.voiceIndex - m2.voiceIndex);\n\t\t});\n\n\t\t//const staffTraits = Array(this.stavesCount).fill(null).map((_, si) => HashVector.fromString(`s${si}`).toHash());\n\t\tconst staffVoiceIndices = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map(() => []);\n\t\tvoiceTraits.forEach((trait) => {\n\t\t\t//const consistencies = staffTraits.map(staff => cosHashes(trait.vector.toHash(), staff));\n\t\t\t//staffVoiceIndices[argmax(consistencies)].push(trait.index);\n\t\t\tstaffVoiceIndices[trait.headStaff].push(trait.index);\n\t\t});\n\n\t\tconst staves = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, si) => {\n\t\t\t\tif (!measures[0]) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvoices: [],\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t//const voiceIndicies = measures[0].map((voice, vi) => ({ voice, vi })).filter(({ voice }) => voice.headStaff === si).map(({ vi }) => vi);\n\t\t\t\tconst voiceIndicies = staffVoiceIndices[si];\n\n\t\t\t\tconst voices = voiceIndicies.map((vi): TermVoice => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmode: 'relative',\n\t\t\t\t\t\tmeasures: measures.map((m) => m[vi]),\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\treturn { voices };\n\t\t\t});\n\n\t\tremoveEmptyMeasuresInVoicesStaves(staves);\n\t\tstaves.forEach((staff) => staff.voices.forEach(markingTiesInVoice));\n\n\t\treturn staves;\n\t}\n\n\tperform(): Performing {\n\t\tconst staves = this.makeVoiceStaves();\n\t\tif (!staves) return null;\n\n\t\tconst tokenMap = new Map();\n\n\t\t// TODO: store staff channels in score\n\t\tconst staffToChannel = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.reduce((map, _, i) => {\n\t\t\t\tmap[i] = i;\n\t\t\t\treturn map;\n\t\t\t}, {});\n\n\t\tconst voiceChannels = [].concat(...staves.map((staff, si) => staff.voices.map(() => staffToChannel[si])));\n\n\t\tlet hasTempo = false;\n\n\t\tlet nextTick = 0;\n\t\tlet events0 = null;\n\t\tconst measures = this.measures\n\t\t\t.filter((measure) => !measure.empty)\n\t\t\t.map((measure) => {\n\t\t\t\tconst { systemIndex, right: endX } = measure.position;\n\t\t\t\tconst measureIndex = measure.measureIndex;\n\n\t\t\t\tconst voices: VoiceMeasure[] = [].concat(...staves.map((staff) => staff.voices.map((voice) => voice.measures[measureIndex])));\n\t\t\t\tconst voice0 = voices[0];\n\t\t\t\tconst tick = nextTick;\n\n\t\t\t\t//const signatureDuration = (WHOLE_DURATION * voice0.timeSignature.numerator) / voice0.timeSignature.denominator;\n\n\t\t\t\tnextTick += voice0.duration;\n\n\t\t\t\tconst notes = [].concat(\n\t\t\t\t\t...voices.map((measure, vi) => {\n\t\t\t\t\t\tconst tickFactor = 1; //measure.duration ? signatureDuration / measure.duration : 1;\n\n\t\t\t\t\t\tconst channel = voiceChannels[vi];\n\n\t\t\t\t\t\tconst chords = Object.values(measure.tickMap)\n\t\t\t\t\t\t\t.filter((term) => term instanceof EventTerm && !term.rest)\n\t\t\t\t\t\t\t.map((term: EventTerm) => {\n\t\t\t\t\t\t\t\tconst duration = Math.round(term.duration * tickFactor);\n\t\t\t\t\t\t\t\tconsole.assert(Number.isFinite(term.tick), 'invalid event term tick:', term);\n\t\t\t\t\t\t\t\tconsole.assert(Number.isFinite(duration), 'invalid event term duration:', term);\n\n\t\t\t\t\t\t\t\tif (term.tick >= 0) {\n\t\t\t\t\t\t\t\t\t// exclude minus tick tokens\n\t\t\t\t\t\t\t\t\tterm.noteIds.forEach((id) => {\n\t\t\t\t\t\t\t\t\t\ttokenMap.set(id, {\n\t\t\t\t\t\t\t\t\t\t\tsystem: systemIndex,\n\t\t\t\t\t\t\t\t\t\t\tmeasure: measureIndex,\n\t\t\t\t\t\t\t\t\t\t\tx: term.roundX,\n\t\t\t\t\t\t\t\t\t\t\tendX,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst part = this.staffGroups.findIndex((group) => group.includes(term.staff));\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttick: Math.round(term.tick * tickFactor),\n\t\t\t\t\t\t\t\t\tduration,\n\t\t\t\t\t\t\t\t\tpitches: term.pitches,\n\t\t\t\t\t\t\t\t\tnoteIds: term.noteIds,\n\t\t\t\t\t\t\t\t\tpart,\n\t\t\t\t\t\t\t\t\tstaff: term.staff,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn [].concat(\n\t\t\t\t\t\t\t...chords.map((chord) => {\n\t\t\t\t\t\t\t\t// exclude repeated pitches\n\t\t\t\t\t\t\t\tconst pitchMap: { [pitch: number]: TermPitch } = chord.pitches.reduce((map, pitch) => {\n\t\t\t\t\t\t\t\t\tmap[noteToPitch(pitch)] = pitch;\n\t\t\t\t\t\t\t\t\treturn map;\n\t\t\t\t\t\t\t\t}, {});\n\t\t\t\t\t\t\t\tconst pitches = Object.values(pitchMap).sort((p1, p2) => p1.note - p2.note);\n\n\t\t\t\t\t\t\t\treturn pitches\n\t\t\t\t\t\t\t\t\t.filter((pitch) => !pitch.tied)\n\t\t\t\t\t\t\t\t\t.map((pitch, i) => {\n\t\t\t\t\t\t\t\t\t\tconst pitchValue = noteToPitch(pitch);\n\t\t\t\t\t\t\t\t\t\tconst id = chord.noteIds && chord.noteIds[i];\n\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\ttick: chord.tick,\n\t\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\t\tduration: chord.duration,\n\t\t\t\t\t\t\t\t\t\t\tchordPosition: {\n\t\t\t\t\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\t\t\t\t\tcount: chord.pitches.length,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\ttied: pitch.tied,\n\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\tids: [id],\n\t\t\t\t\t\t\t\t\t\t\ttrack: chord.part,\n\t\t\t\t\t\t\t\t\t\t\tstaff: chord.staff,\n\t\t\t\t\t\t\t\t\t\t\tchannel,\n\t\t\t\t\t\t\t\t\t\t\tsubNotes: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tstartTick: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tendTick: chord.duration,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvelocity: 127,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst events = [];\n\t\t\t\tevents0 = events0 || events;\n\n\t\t\t\tif (measure.marks)\n\t\t\t\t\tmeasure.marks.forEach((mark) => {\n\t\t\t\t\t\tif (mark instanceof TempoTerm) {\n\t\t\t\t\t\t\tconst bpm = mark.bpm;\n\t\t\t\t\t\t\tif (mark.isValid()) {\n\t\t\t\t\t\t\t\tconst es = hasTempo ? events : events0; // set the first tempo to the beginning of the track\n\t\t\t\t\t\t\t\tconst tick = hasTempo ? mark.tick : 0;\n\t\t\t\t\t\t\t\tes.push({\n\t\t\t\t\t\t\t\t\ttrack: 0,\n\t\t\t\t\t\t\t\t\tticks: tick,\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\ttype: 'meta',\n\t\t\t\t\t\t\t\t\t\tsubtype: 'setTempo',\n\t\t\t\t\t\t\t\t\t\tmicrosecondsPerBeat: Math.round(60e6 / bpm),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\thasTempo = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\tconst basic = measure.basics[0];\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\tnotes,\n\t\t\t\t\tevents,\n\t\t\t\t\ttimeSignature: basic && basic.timeSignature,\n\t\t\t\t\tkeySignature: basic && basic.keySignature,\n\t\t\t\t};\n\t\t\t});\n\n\t\tif (!hasTempo) {\n\t\t\tmeasures[0].events.push({\n\t\t\t\ttrack: 0,\n\t\t\t\tticks: 0,\n\t\t\t\tdata: {\n\t\t\t\t\ttype: 'meta',\n\t\t\t\t\tsubtype: 'setTempo',\n\t\t\t\t\tmicrosecondsPerBeat: 0.5e6, // TODO\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst notation = new MetaNotation({ measures });\n\n\t\treturn {\n\t\t\tnotation,\n\t\t\ttokenMap,\n\t\t};\n\t}\n\n\tperformByEstimation(): Performing {\n\t\tconst tokenMap = new Map();\n\t\tlet nextTick = 0;\n\n\t\tconst measures = this.measures\n\t\t\t.filter((measure) => measure.events.some((event) => event.predisposition))\n\t\t\t.map((measure) => {\n\t\t\t\tconst tick = nextTick;\n\t\t\t\tconst duration = Math.round(measure.estimatedDuration || fractionMul(WHOLE_DURATION, measure.timeSignature));\n\t\t\t\tconst basic = measure.basics[0];\n\n\t\t\t\tnextTick += duration;\n\n\t\t\t\tconst { systemIndex, right: endX } = measure.position;\n\t\t\t\tconst measureIndex = measure.measureIndex;\n\n\t\t\t\tconst chords = measure.events.filter((event) => event.predisposition && event.predisposition.fake < 0.5 && !event.rest);\n\t\t\t\tconst notes = chords\n\t\t\t\t\t.map((chord) => {\n\t\t\t\t\t\tconst noteTick = Math.round(chord.predisposition.tick);\n\n\t\t\t\t\t\tchord.noteIds.forEach((id) => {\n\t\t\t\t\t\t\ttokenMap.set(id, {\n\t\t\t\t\t\t\t\tsystem: systemIndex,\n\t\t\t\t\t\t\t\tmeasure: measureIndex,\n\t\t\t\t\t\t\t\tx: chord.roundX,\n\t\t\t\t\t\t\t\tendX,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn chord.pitches.map((pitch, i) => {\n\t\t\t\t\t\t\tconst pitchValue = noteToPitch(pitch);\n\t\t\t\t\t\t\tconst id = chord.noteIds && chord.noteIds[i];\n\t\t\t\t\t\t\tconst part = this.staffGroups.findIndex((group) => group.includes(chord.staff));\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttick: noteTick,\n\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\tduration: chord.duration,\n\t\t\t\t\t\t\t\tchordPosition: {\n\t\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\t\tcount: chord.pitches.length,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ttied: pitch.tied,\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\tids: [id],\n\t\t\t\t\t\t\t\ttrack: part,\n\t\t\t\t\t\t\t\tstaff: chord.staff,\n\t\t\t\t\t\t\t\tchannel: 0,\n\t\t\t\t\t\t\t\tsubNotes: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tstartTick: 0,\n\t\t\t\t\t\t\t\t\t\tendTick: chord.duration,\n\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\tvelocity: 127,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.flat(1);\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration,\n\t\t\t\t\tnotes,\n\t\t\t\t\tevents: [],\n\t\t\t\t\ttimeSignature: basic && basic.timeSignature,\n\t\t\t\t\tkeySignature: basic && basic.keySignature,\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst notation = new MetaNotation({ measures });\n\n\t\treturn {\n\t\t\tnotation,\n\t\t\ttokenMap,\n\t\t};\n\t}\n\n\tfeatureHash(): Hash {\n\t\tconst headMeasures = this.measures.slice(0, 16);\n\t\tconst measureWords = headMeasures.map((measure) => measure.featureWords);\n\n\t\tconst levels = [1, 4, 16].map((len) => {\n\t\t\tconst meaures = measureWords.slice(0, len).filter(Boolean);\n\t\t\tconst ys = meaures.map((words) => words[0]).flat(1);\n\t\t\tconst melodies = meaures.map((words) => words[1]).flat(1);\n\t\t\tconst rhythm = meaures.map((words) => words[2]).flat(1);\n\n\t\t\tconst [vecY, vecMelody, vecRhythm] = [ys, melodies, rhythm].map(HashVector.fromWords);\n\n\t\t\treturn HashVector.concat(vecY, vecMelody.sub(128), vecRhythm.sub(128));\n\t\t});\n\n\t\treturn HashVector.concat(...levels).toHash();\n\t}\n\n\tfeatureHashHex(): string {\n\t\treturn hashToHex(this.featureHash());\n\t}\n\n\tfeatureHashBigInt(): bigint {\n\t\treturn hashToBigInt(this.featureHash());\n\t}\n\n\tassignMeasureNumbers(): void {\n\t\tlet n = null as any;\n\t\tfor (const measure of this.measures) {\n\t\t\tif (!measure.discard && !measure.events.length) continue;\n\n\t\t\tif (measure.indent) n = null;\n\n\t\t\tif (!Number.isFinite(n)) n = measure.partialDuration ? 0 : 1;\n\n\t\t\tmeasure.measureNumber = n++;\n\t\t}\n\t}\n}\n\nexport { SpartitoMeasure, Spartito };\n","import { Fraction } from './interfaces';\nimport { ContextedTerm, ContextType } from './term';\nimport { Logger, DummyLogger } from './logger';\n\nconst GROUP_N_TO_PITCH = [0, 2, 4, 5, 7, 9, 11];\nconst MIDDLE_C = 60;\n\nexport const mod7 = (x) => {\n\tlet y = x % 7;\n\twhile (y < 0) y += 7;\n\n\treturn y;\n};\n\nconst mod12 = (x) => {\n\tlet y = x % 12;\n\twhile (y < 0) y += 12;\n\n\treturn y;\n};\n\nconst PHONETS = 'CDEFGAB';\n\nconst ALTER_NAMES = {\n\t[-2]: '\\u266D\\u266D',\n\t[-1]: '\\u266D',\n\t[0]: '\\u266E',\n\t[1]: '\\u266F',\n\t[2]: '\\uD834\\uDD2A',\n};\n\n/*\n\tCoordinates:\n\n\t\tnote:\n\t\t\tzero: the middle C line (maybe altered)\n\t\t\tpositive: high (right on piano keyboard)\n\t\t\tunit: a step in scales of the current staff key\n\n\t\tstaff Y:\n\t\t\tzero: the third (middle) line among 5 staff lines\n\t\t\tpositive: down\n\t\t\tunit: a interval between 2 neighbor staff lines\n*/\n\nexport default class StaffContext {\n\tlogger: Logger = new DummyLogger();\n\n\tclef: number = -3;\n\tkeyAlters: number[] = [];\n\toctaveShift: number = 0;\n\talters: number[] = [];\n\n\ttimeSignature: Fraction = {\n\t\tnumerator: 4,\n\t\tdenominator: 4,\n\t};\n\ttimeSigNumeric: boolean = false;\n\ttimeSigNumSet: boolean = false;\n\ttimeSigDenSet: boolean = false;\n\tdoubtingTimesig: boolean = true;\n\n\tchange(term: ContextedTerm) {\n\t\tswitch (term.type) {\n\t\t\tcase ContextType.Clef:\n\t\t\t\tthis.clef = term.clef;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.KeyAcc:\n\t\t\t\tthis.keyAlters[mod7(this.yToNote(term.y))] = term.alter;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.Acc:\n\t\t\t\tthis.alters[this.yToNote(term.y)] = term.alter;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.OctaveShift:\n\t\t\t\tthis.octaveShift = term.octaveShift;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.TimeSignatureC:\n\t\t\t\tthis.timeSigNumeric = false;\n\t\t\t\tswitch (term.tokenType) {\n\t\t\t\t\tcase 'timesig-C44':\n\t\t\t\t\t\tthis.timeSignature.numerator = 4;\n\t\t\t\t\t\tthis.timeSignature.denominator = 4;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'timesig-C22':\n\t\t\t\t\t\tthis.timeSignature.numerator = 2;\n\t\t\t\t\t\tthis.timeSignature.denominator = 2;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tthis.doubtingTimesig = this.partialTimeSignature;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.TimeSignatureN:\n\t\t\t\tthis.timeSigNumeric = true;\n\t\t\t\tswitch (term.y) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tif (this.timeSigDenSet) this.timeSignature.denominator = this.timeSignature.denominator * 10 + term.number;\n\t\t\t\t\t\telse this.timeSignature.denominator = term.number;\n\n\t\t\t\t\t\tthis.timeSigDenSet = true;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase -1:\n\t\t\t\t\t\tif (this.timeSigNumSet) this.timeSignature.numerator = this.timeSignature.numerator * 10 + term.number;\n\t\t\t\t\t\telse this.timeSignature.numerator = term.number;\n\n\t\t\t\t\t\tthis.timeSigNumSet = true;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.logger.warn('unexpected time signature Y:', term.y);\n\t\t\t\t}\n\t\t\t\tthis.doubtingTimesig = this.partialTimeSignature;\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tresetMeasure() {\n\t\tthis.alters = [];\n\n\t\tthis.timeSigNumSet = false;\n\t\tthis.timeSigDenSet = false;\n\t}\n\n\tresetSystem() {\n\t\tthis.keyAlters = [];\n\t}\n\n\tget keySignature(): number {\n\t\treturn this.keyAlters.filter((a) => Number.isInteger(a)).reduce((sum, a) => sum + a, 0);\n\t}\n\n\tget partialTimeSignature(): boolean {\n\t\treturn !this.timeSigNumSet !== !this.timeSigDenSet;\n\t}\n\n\tnoteToY(note: number): number {\n\t\treturn -note / 2 - this.clef - this.octaveShift * 3.5;\n\t}\n\n\tpitchToNote(pitch: number, { preferredAlter = null } = {}): { note: number; alter: number } {\n\t\tif (!preferredAlter) preferredAlter = this.keySignature < 0 ? -1 : 1;\n\n\t\tconst group = Math.floor((pitch - MIDDLE_C) / 12);\n\t\tconst gp = mod12(pitch);\n\t\tconst alteredGp = GROUP_N_TO_PITCH.includes(gp) ? gp : mod12(gp - preferredAlter);\n\t\tconst gn = GROUP_N_TO_PITCH.indexOf(alteredGp);\n\t\tthis.logger.assert(gn >= 0, 'invalid preferredAlter:', pitch, preferredAlter, alteredGp);\n\n\t\tconst naturalNote = group * 7 + gn;\n\n\t\tconst alterValue = gp - alteredGp;\n\t\tconst keyAlterValue = this.keyAlters[gn] || 0;\n\t\tconst onAcc = Number.isInteger(this.alters[naturalNote]);\n\n\t\tconst alter = onAcc ? alterValue : alterValue === keyAlterValue ? null : alterValue;\n\n\t\treturn { note: naturalNote, alter };\n\t}\n\n\tpitchToY(pitch: number, { preferredAlter = null } = {}): { y: number; alter: number } {\n\t\tconst { note, alter } = this.pitchToNote(pitch, { preferredAlter });\n\t\tconst y = this.noteToY(note);\n\n\t\treturn { y, alter };\n\t}\n\n\tyToNote(y: number): number {\n\t\tthis.logger.assert(Number.isInteger(y * 2), 'invalid y:', y);\n\n\t\treturn (-y - this.octaveShift * 3.5 - this.clef) * 2;\n\t}\n\n\talterOnNote(note: number): number {\n\t\tif (Number.isInteger(this.alters[note])) return this.alters[note];\n\n\t\tconst gn = mod7(note);\n\t\tif (Number.isInteger(this.keyAlters[gn])) return this.keyAlters[gn];\n\n\t\treturn 0;\n\t}\n\n\tnoteToPitch(note: number): number {\n\t\tconst group = Math.floor(note / 7);\n\t\tconst gn = mod7(note);\n\n\t\tconst pitch = MIDDLE_C + group * 12 + GROUP_N_TO_PITCH[gn] + this.alterOnNote(note);\n\t\tif (!Number.isFinite(pitch)) {\n\t\t\tthis.logger.warn('invalid pitch value:', pitch, note, group, gn);\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn pitch;\n\t}\n\n\tyToPitch(y: number): number {\n\t\treturn this.noteToPitch(this.yToNote(y));\n\t}\n\n\tyToPitchName(y: number): string {\n\t\tconst note = this.yToNote(y);\n\t\tconst group = Math.floor(note / 7);\n\t\tconst gn = mod7(note);\n\n\t\tlet alter = this.alterOnNote(note);\n\t\tif (!alter && !Number.isInteger(this.alters[note])) alter = null;\n\n\t\treturn `${ALTER_NAMES[alter] ? ALTER_NAMES[alter] : ''}${PHONETS[gn]}${group + 4}`;\n\t}\n}\n","import sha1 from 'js-sha1';\n\nimport * as measureLayout from '../measureLayout';\nimport * as staffLayout from '../staffLayout';\nimport { SimpleClass } from './aux_/typedJSON';\nimport { EventSystem, MeasureBrief, MusicSheet, RecognitionSettings, ScoreData, TermMeasure, TermStaff, VoicesStaff } from './interfaces';\nimport { DummyLogger, Logger } from './logger';\nimport { evaluateMeasure } from './measureEvaluator';\nimport { PatchMeasure } from './patch';\nimport { Measure, Page, Staff, System } from './scoreComponents';\nimport { hashSemanticPoint, SemanticPoint, SemanticType } from './semanticPoint';\nimport { BOS_ELEMENT, fractionToElems, SemanticCluster, SemanticElement, SemanticElementType } from './semanticTopology';\nimport { Spartito, SpartitoMeasure } from './spartito';\nimport StaffContext from './staffContext';\nimport { ContextedTerm, ContextType, EventTerm, WHOLE_DURATION } from './term';\nimport type { SemanticPointInMeasure } from './timewiseGraph';\nimport { TimewiseGraph } from './timewiseGraph';\nimport { Token, TokenType } from './token';\nimport { distance2D, solveOverlapping } from './utils';\n\nexport const VERSION = 14;\n\ninterface Topology {\n\tclusters: SemanticCluster[];\n}\n\ninterface PaperOptions {\n\traggedLast: boolean;\n\traggedBottom: boolean;\n\traggedLastBottom: boolean;\n}\n\nconst GRAND_STAFF_LAYOUT = '{-}';\n\nconst processStaffContext = (staff: TermStaff, logger: Logger = new DummyLogger()): void => {\n\tconst context = new StaffContext();\n\tcontext.logger = logger;\n\n\tfor (const row of staff.rows) {\n\t\tfor (const measure of row) {\n\t\t\tconst startEvent = measure.terms.find((term) => term instanceof EventTerm) as EventTerm;\n\t\t\tlet tick = startEvent ? Math.min(startEvent.tick, 0) : 0;\n\n\t\t\tmeasure.terms.forEach((term) => {\n\t\t\t\tif (term instanceof ContextedTerm) {\n\t\t\t\t\tterm.tick = tick; // TODO: not working here because measure not regulated yet\n\t\t\t\t\tcontext.change(term);\n\t\t\t\t} else if (term instanceof EventTerm) {\n\t\t\t\t\tconst endTick = term.tick + (term.duration || 0);\n\t\t\t\t\tif (endTick > tick) tick = endTick;\n\n\t\t\t\t\tif (term.ys) {\n\t\t\t\t\t\tterm.pitches = term.ys.map((y) => {\n\t\t\t\t\t\t\tconst note = context.yToNote(y);\n\t\t\t\t\t\t\tconst alter = context.alterOnNote(note);\n\n\t\t\t\t\t\t\treturn { note, alter, octaveShift: context.octaveShift };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeasure.timeSignature = { ...context.timeSignature };\n\t\t\tmeasure.timeSigNumeric = context.timeSigNumeric;\n\t\t\tmeasure.doubtfulTimesig =\n\t\t\t\tcontext.doubtingTimesig ||\n\t\t\t\t!Number.isInteger(Math.log2(measure.timeSignature.denominator)) ||\n\t\t\t\tmeasure.timeSignature.numerator <= measure.timeSignature.denominator / 4;\n\n\t\t\tmeasure.keySignature = context.keySignature;\n\n\t\t\t// fill empty measure duration\n\t\t\tif (measure.duration === 0) measure.duration = (WHOLE_DURATION * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\n\t\t\tcontext.resetMeasure();\n\t\t}\n\n\t\tcontext.resetSystem();\n\t}\n};\n\nconst upgradeScoreData = (data: ScoreData): ScoreData => {\n\tif (data.version < 3) {\n\t\tconst { version, stavesCount, layoutTemplate, ...fields } = data;\n\t\tvoid version;\n\t\tvoid layoutTemplate;\n\n\t\tlet staffLayoutCode =\n\t\t\tstavesCount > 1\n\t\t\t\t? Array(stavesCount - 1)\n\t\t\t\t\t\t.fill(',')\n\t\t\t\t\t\t.join('')\n\t\t\t\t: '';\n\n\t\t// use graph staff by default for 2 staves score\n\t\tif (stavesCount === 2) staffLayoutCode = '{-}';\n\n\t\tdata = {\n\t\t\tversion: 3,\n\t\t\tstaffLayoutCode,\n\t\t\t...fields,\n\t\t};\n\t}\n\n\tif (data.version < 8) {\n\t\t// upgrade system measure bar semantics\n\t\tdata.pages.forEach((page) => {\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tif (system.semantics) {\n\t\t\t\t\tconst bars = system.semantics.filter((point) => point.semantic === SemanticType.vline_BarMeasure);\n\n\t\t\t\t\tsystem.semantics = [].concat(\n\t\t\t\t\t\t...system.staves.map((staff) => {\n\t\t\t\t\t\t\tconst oy = staff.top + staff.staffY;\n\n\t\t\t\t\t\t\treturn bars.map((point) => ({\n\t\t\t\t\t\t\t\t...point,\n\t\t\t\t\t\t\t\ty: point.y + oy,\n\t\t\t\t\t\t\t\textension: {\n\t\t\t\t\t\t\t\t\t...point.extension,\n\t\t\t\t\t\t\t\t\ty1: point.extension.y1 + oy,\n\t\t\t\t\t\t\t\t\ty2: point.extension.y2 + oy,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tdata.version = 8;\n\t}\n\n\tif (data.version < 9) {\n\t\t// remove old format spartito\n\t\tdata.spartito = null;\n\n\t\tdata.version = 9;\n\t}\n\n\treturn data;\n};\n\nconst bitsToMask = (bits: number[]): number => bits.reduce((mask, bit, i) => (bit ? mask | (1 << i) : mask), 0);\n\ninterface PointPosition {\n\tpoint: SemanticPoint;\n\tpageIndex: number;\n\tsystemIndex: number;\n\tstaffIndex: number;\n}\n\ninterface MeasureValidation {\n\ttickMap: { [tick: number]: number };\n}\n\ninterface Size {\n\twidth: number;\n\theight: number;\n}\n\nclass Score extends SimpleClass {\n\tstatic className = 'Score';\n\n\tversion = VERSION;\n\n\ttitle: string;\n\t// in pixels\n\tpageSize: Size;\n\tunitSize: number;\n\tstaffLayoutCode: string;\n\n\tpaperOptions?: Partial;\n\n\theaders: { [key: string]: string };\n\n\ttextAnnotations: { [id: string]: string };\n\n\ttags?: string[];\n\n\tinstrumentDict: { [key: string]: string };\n\n\tpages: Page[];\n\ttopology: Topology;\n\tspartito?: Spartito;\n\n\tpatches?: PatchMeasure[];\n\n\tsettings: RecognitionSettings;\n\n\tconstructor(data: ScoreData) {\n\t\tsuper();\n\t\tsuper.assign(upgradeScoreData(data));\n\n\t\tthis.pages = this.pages || [];\n\t\tthis.headers = this.headers || {};\n\t\tthis.instrumentDict = this.instrumentDict || {};\n\n\t\tthis.pageSize = this.pageSize || {\n\t\t\t// A4 paper\n\t\t\twidth: 794,\n\t\t\theight: 1122,\n\t\t};\n\n\t\tthis.unitSize = this.unitSize || null;\n\n\t\tthis.staffLayoutCode = this.staffLayoutCode || (this.maxStavesCount === 2 ? GRAND_STAFF_LAYOUT : Array(this.maxStavesCount).fill('').join(','));\n\t}\n\n\tget systems(): System[] {\n\t\treturn [].concat(...this.pages.map((page) => page.systems));\n\t}\n\n\tget measureCount(): number {\n\t\treturn this.systems.reduce((sum, system) => sum + (system.measureCount || 0), 0);\n\t}\n\n\tget imageKeys(): string[] {\n\t\treturn [\n\t\t\t...this.pages.map((page) => page.source?.url),\n\t\t\t...this.systems.map((system) => system.backgroundImage),\n\t\t\t...[].concat(\n\t\t\t\t...this.systems.map((system) =>\n\t\t\t\t\t[...system.staves.map((staff) => staff.backgroundImage), ...system.staves.map((staff) => staff.maskImage)].filter(Boolean)\n\t\t\t\t)\n\t\t\t),\n\t\t].filter(Boolean);\n\t}\n\n\tget breakSystemIndices(): number[] {\n\t\tconst indices = [];\n\t\tlet systemCount = 0;\n\t\tthis.pages.forEach((page, i) => {\n\t\t\tif (i < this.pages.length - 1) {\n\t\t\t\tsystemCount += page.systems.length;\n\t\t\t\tindices.push(systemCount - 1);\n\t\t\t}\n\t\t});\n\n\t\treturn indices;\n\t}\n\n\tget staffLayout(): staffLayout.StaffLayout {\n\t\treturn staffLayout.parseCode(this.staffLayoutCode);\n\t}\n\n\tget measureLayoutCode(): string {\n\t\treturn this.spartito?.measureLayoutCode;\n\t}\n\n\tget maxStavesCount(): number {\n\t\treturn Math.max(...this.systems.map((system) => system.staves.length), 0);\n\t}\n\n\tget sidBlackList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidBlackList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget sidWhiteList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidWhiteList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget semanticHash(): string {\n\t\tconst ids = [].concat(\n\t\t\t...this.systems.map((system) =>\n\t\t\t\t[].concat(...system.staves.map((staff) => (staff.semantics ? system.qualifiedSemantics(staff.semantics).map((s) => s.id) : [])))\n\t\t\t)\n\t\t);\n\t\treturn sha1(ids.join(''));\n\t}\n\n\teventSystemsToTermStaves(eventSystems: EventSystem[], logger: Logger = new DummyLogger()): TermStaff[] {\n\t\t// [staff]\n\t\tconst termStaves: TermStaff[] = Array(this.maxStavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, staffIndex): TermStaff => {\n\t\t\t\treturn {\n\t\t\t\t\t// [system, measure]\n\t\t\t\t\trows: eventSystems.map((sys, i) =>\n\t\t\t\t\t\tsys.columns.map((column, ii): TermMeasure => {\n\t\t\t\t\t\t\tconst measure = column.rows[staffIndex];\n\t\t\t\t\t\t\tconsole.assert(measure, '[eventSystemsToTermStaves] measure is null:', staffIndex, column.rows);\n\n\t\t\t\t\t\t\tconst contexts = measure.contexts;\n\n\t\t\t\t\t\t\t// prepend octave shift 0 at begin of every system\n\t\t\t\t\t\t\tif (ii === 0) {\n\t\t\t\t\t\t\t\tif (!contexts.some((term) => term.type === ContextType.OctaveShift)) {\n\t\t\t\t\t\t\t\t\tcontexts.unshift(\n\t\t\t\t\t\t\t\t\t\tnew ContextedTerm({\n\t\t\t\t\t\t\t\t\t\t\tstaff: staffIndex,\n\t\t\t\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\t\t\t\t\ttokenType: TokenType.OctaveShift0,\n\t\t\t\t\t\t\t\t\t\t\ttick: 0,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst terms = [...(measure.events || []), ...contexts].sort((t1, t2) => t1.x - t2.x);\n\n\t\t\t\t\t\t\tconst pageBreak = staffIndex === 0 && ii === sys.columns.length - 1 && this.breakSystemIndices.includes(i);\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tterms,\n\t\t\t\t\t\t\t\t//xToTick: column.xToTick,\n\t\t\t\t\t\t\t\tduration: column.duration,\n\t\t\t\t\t\t\t\tpageBreak,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t});\n\t\ttermStaves.forEach((staff) => processStaffContext(staff, logger));\n\n\t\treturn termStaves;\n\t}\n\n\tresetPageLayout(parameters: { unitSize?: number; pageSize?: Size }) {\n\t\tconst { unitSize = this.unitSize, pageSize = this.pageSize } = parameters;\n\n\t\tconst newCenter = {\n\t\t\tx: (pageSize.width * 0.5) / unitSize,\n\t\t\ty: (pageSize.height * 0.5) / unitSize,\n\t\t};\n\n\t\tthis.pages.forEach((page) => {\n\t\t\tconst offsetX = newCenter.x - page.width / 2;\n\t\t\tconst offsetY = newCenter.y - page.height / 2;\n\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tsystem.left += offsetX;\n\t\t\t\tsystem.top += offsetY;\n\t\t\t});\n\n\t\t\tif (page.semantics) {\n\t\t\t\tpage.semantics.forEach((point) => {\n\t\t\t\t\tpoint.x += offsetX;\n\t\t\t\t\tpoint.y += offsetY;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tpage.width = pageSize.width / unitSize;\n\t\t\tpage.height = pageSize.height / unitSize;\n\n\t\t\tpage.assemble({ textAnnotations: this.textAnnotations });\n\t\t});\n\n\t\tthis.unitSize = unitSize;\n\t\tthis.pageSize = pageSize;\n\t}\n\n\tgetMeasure(measureIndex: number): {\n\t\tmeasureIndex: number;\n\t\tsystem: System;\n\t\tlocalIndex: number;\n\t\tleft: number;\n\t\tright: number;\n\t\tmeasures: Measure[];\n\t} {\n\t\tlet index = measureIndex;\n\t\tfor (const system of this.systems) {\n\t\t\tif (index < system.measureCount) {\n\t\t\t\tconst staff = system.staves[0];\n\t\t\t\tconst measure = staff.measures[index];\n\t\t\t\tconsole.assert(measure, 'measure is null:', system.measureCount, index, staff.measures);\n\t\t\t\tconst measures = system.getStaffArray(this.maxStavesCount).map((staff) => staff && staff.measures[index]);\n\n\t\t\t\treturn {\n\t\t\t\t\tmeasureIndex,\n\t\t\t\t\tsystem,\n\t\t\t\t\tlocalIndex: index,\n\t\t\t\t\tleft: measure.left,\n\t\t\t\t\tright: measure.right,\n\t\t\t\t\tmeasures,\n\t\t\t\t};\n\t\t\t}\n\t\t\tindex -= system.measureCount;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetRawCluster(measureIndex: number, threshold: number, { timeSignature }: Partial = {}): SemanticCluster {\n\t\tconst position = this.getMeasure(measureIndex);\n\t\tif (!position) return null;\n\n\t\tconst { system, left, right } = position;\n\t\t//console.log(\"measure:\", system, left, right);\n\n\t\tconst elements: SemanticElement[] = [BOS_ELEMENT];\n\n\t\tif (timeSignature) elements.push(...fractionToElems(timeSignature));\n\n\t\tconst systemY0 = system.staves[0].top + system.staves[0].staffY - 2;\n\n\t\tsystem.staves.forEach((staff) => {\n\t\t\tlet points = system.qualifiedSemantics(staff.semantics, threshold).filter((point) => point.x > left && point.x < right);\n\t\t\tpoints = solveOverlapping(points);\n\n\t\t\t// exlude tempo noteheads\n\t\t\tconst tempoNhs = points.filter((point) => point.semantic === SemanticType.TempoNotehead);\n\t\t\ttempoNhs.forEach((tempoNh) => {\n\t\t\t\tconst index = points.findIndex((point) => /^Notehead/.test(point.semantic) && distance2D(tempoNh, point) < 0.3);\n\t\t\t\tif (index >= 0) points.splice(index, 1);\n\t\t\t});\n\n\t\t\tconst y0 = staff.top + staff.staffY - systemY0;\n\n\t\t\tpoints.forEach((point) => {\n\t\t\t\tconst type = SemanticElementType[point.semantic];\n\t\t\t\tif (type) {\n\t\t\t\t\tlet y1 = point.y;\n\t\t\t\t\tlet y2 = point.y;\n\t\t\t\t\tif (type === SemanticElementType.vline_Stem) {\n\t\t\t\t\t\ty1 = point.extension.y1;\n\t\t\t\t\t\ty2 = point.extension.y2;\n\t\t\t\t\t}\n\n\t\t\t\t\telements.push({\n\t\t\t\t\t\tid: point.id,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tstaff: staff.index,\n\t\t\t\t\t\tx: point.x - left,\n\t\t\t\t\t\ty1: y1 + y0,\n\t\t\t\t\t\ty2: y2 + y0,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn new SemanticCluster({\n\t\t\tindex: measureIndex,\n\t\t\telements,\n\t\t});\n\t}\n\n\tgetRawClusters(threshold: number = 1): SemanticCluster[] {\n\t\t//const times = this.getMeasuresTime();\n\n\t\treturn Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, mi) => this.getRawCluster(mi, threshold /*, times[mi]*/));\n\t}\n\n\tmakeSpartito(logger: Logger = new DummyLogger()): Spartito {\n\t\tlet eventSystems: EventSystem[] = this.systems.map((system) => system.getEvents(this.maxStavesCount));\n\n\t\t/*if (this.topology) {\n\t\t\tconst clusters = this.topology.clusters;\n\n\t\t\t// [measure, staff, event]\n\t\t\tconst eventsColumns: ChordColumn[][][] = clusters\n\t\t\t\t.filter((cluster) => cluster.index < this.measureCount)\n\t\t\t\t.reduce((columns, cluster) => {\n\t\t\t\t\tconst { system, measures } = this.getMeasure(cluster.index);\n\t\t\t\t\tconst events = cluster.getEvents();\n\n\t\t\t\t\tconst systemY0 = system.staves[0].top + system.staves[0].staffY - 2;\n\t\t\t\t\tconst x0 = measures.filter(Boolean)[0].left;\n\n\t\t\t\t\tconst staves = system.getStaffArray(this.maxStavesCount);\n\n\t\t\t\t\t// translate by staff & measure relative offset\n\t\t\t\t\tevents.forEach((event) => {\n\t\t\t\t\t\tconst staff = staves[event.staff];\n\t\t\t\t\t\tconst y0 = staff.top + staff.staffY - systemY0;\n\t\t\t\t\t\tevent.ys = event.ys.map((y) => roundNumber(y - y0, 0.5));\n\n\t\t\t\t\t\tevent.left += x0;\n\t\t\t\t\t\tevent.right += x0;\n\t\t\t\t\t});\n\n\t\t\t\t\tconst column = measures.map((measure, staffIndex) => {\n\t\t\t\t\t\tif (!measure) return [];\n\n\t\t\t\t\t\t//console.log(\"m:\", mi, \"s:\", staffIndex);\n\t\t\t\t\t\tconst localEvents = events.filter((event) => event.staff === staffIndex);\n\t\t\t\t\t\t//measure.assignModifiersOnEvents(localEvents);\n\t\t\t\t\t\tmeasure.assignAccessoriesOnEvents(localEvents);\n\n\t\t\t\t\t\treturn localEvents;\n\t\t\t\t\t});\n\n\t\t\t\t\tcolumns[cluster.index] = column;\n\n\t\t\t\t\treturn columns;\n\t\t\t\t}, []);\n\n\t\t\tconst breakSystemIndices = this.breakSystemIndices;\n\n\t\t\tconst basicEventSystems = eventSystems;\n\t\t\teventSystems = [];\n\n\t\t\tlet measures = 0;\n\t\t\tfor (const system of this.systems) {\n\t\t\t\tconst esys = system.getEventsFunctional(this.maxStavesCount, (si, mi) => eventsColumns[measures + mi] && eventsColumns[measures + mi][si], [], {\n\t\t\t\t\tuseXMap: false,\n\t\t\t\t});\n\n\t\t\t\tconst basicSys = basicEventSystems[system.index];\n\t\t\t\t//onst nullN = esys.columns.filter(c => !c).length;\n\t\t\t\t//if (nullN)\n\t\t\t\t//\tconsole.log(\"null:\", nullN, esys.columns.length);\n\t\t\t\tesys.columns = esys.columns.map((column, i) => (column ? column : basicSys.columns[i]));\n\n\t\t\t\tconst sysIndex = this.systems.indexOf(system);\n\t\t\t\tconst pageBreak = breakSystemIndices.includes(sysIndex);\n\t\t\t\tconst lastColumn = esys.columns[esys.columns.length - 1];\n\t\t\t\tif (lastColumn) {\n\t\t\t\t\tlastColumn.break = true;\n\t\t\t\t\tlastColumn.pageBreak = pageBreak;\n\t\t\t\t}\n\n\t\t\t\teventSystems.push(esys);\n\t\t\t\tmeasures += system.measureCount;\n\t\t\t}\n\t\t}*/\n\n\t\tconst staves = this.eventSystemsToTermStaves(eventSystems, logger);\n\n\t\t// assign staff basics for columns\n\t\teventSystems.forEach((sys, ri) => {\n\t\t\tsys.columns.forEach((column, mi) => {\n\t\t\t\tcolumn.basics = staves.map((staff) => {\n\t\t\t\t\tconst { timeSignature, timeSigNumeric, keySignature, doubtfulTimesig } = staff.rows[ri][mi];\n\n\t\t\t\t\treturn { timeSignature, timeSigNumeric, keySignature, doubtfulTimesig };\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tconst clusters = null; //this.topology && this.topology.clusters;\n\n\t\tconst measures = [].concat(\n\t\t\t...eventSystems.map((esys) =>\n\t\t\t\tesys.columns.map((column) => {\n\t\t\t\t\tconst measureIndex = column.measureIndex;\n\t\t\t\t\tconst { system, localIndex, left, right } = this.getMeasure(measureIndex);\n\n\t\t\t\t\tconst cluster = clusters && clusters.find((cluster) => cluster.index === measureIndex);\n\n\t\t\t\t\tconst staffYsFull = [];\n\t\t\t\t\tsystem.staves.forEach((staff) => (staffYsFull[staff.index] = staff.top + staff.staffY));\n\n\t\t\t\t\tconst patch = this.patches && this.patches.find((patch) => patch.measureIndex === measureIndex);\n\t\t\t\t\tconst events = patch ? patch.events : SpartitoMeasure.reorderEvents([].concat(...column.rows.map((row) => row.events)), staffYsFull);\n\n\t\t\t\t\tconst barTypes = Object.fromEntries(Object.entries(column.barTypes).map(([k, v]) => [k, v / system.staves.length]));\n\t\t\t\t\tconst indent = localIndex === 0 && system.indent;\n\n\t\t\t\t\treturn new SpartitoMeasure({\n\t\t\t\t\t\tmeasureIndex,\n\t\t\t\t\t\tstaffMask: esys.staffMask,\n\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\tsystemIndex: system.index,\n\t\t\t\t\t\t\tlocalIndex,\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\tright,\n\t\t\t\t\t\t\tstaffYs: system.staves.map((staff) => staff.top + staff.staffY),\n\t\t\t\t\t\t\tstaffYsFull,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t//startX: column.startX,\n\t\t\t\t\t\t//width: column.width,\n\t\t\t\t\t\tduration: patch ? patch.duration : column.duration,\n\t\t\t\t\t\tevents,\n\t\t\t\t\t\tcontexts: column.rows.map((row) => row.contexts),\n\t\t\t\t\t\tmarks: column.marks,\n\t\t\t\t\t\tbreak: column.break,\n\t\t\t\t\t\tpageBreak: column.pageBreak,\n\t\t\t\t\t\tvoltaBegin: column.voltaBegin,\n\t\t\t\t\t\tvoltaEnd: column.voltaEnd,\n\t\t\t\t\t\talternative: column.alternative,\n\t\t\t\t\t\tbarTypes,\n\t\t\t\t\t\tindent,\n\t\t\t\t\t\tbasics: patch ? patch.basics : column.basics,\n\t\t\t\t\t\tmatrixH: cluster && cluster.matrixH,\n\t\t\t\t\t\tmatrixV: cluster && cluster.matrixV,\n\t\t\t\t\t\tvoices: patch ? patch.voices : null,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\n\t\tconst staffLayout = this.staffLayout;\n\t\tconst staffGroups = staffLayout.standaloneGroups.map((ids) => ids.map((id) => staffLayout.staffIds.indexOf(id)));\n\n\t\tthis.spartito = new Spartito({\n\t\t\tstavesCount: this.maxStavesCount,\n\t\t\tstaffGroups,\n\t\t\tmeasures,\n\t\t});\n\n\t\treturn this.spartito;\n\t}\n\n\tmakeMusicSheet(): MusicSheet {\n\t\tconst spartito = this.spartito || this.makeSpartito();\n\n\t\tif (!spartito.regulated) console.warn('[makeMusicSheet]\tspartito not regulated.');\n\n\t\tconst voiceStaves = spartito.makeVoiceStaves();\n\n\t\tconst { title, pageSize, unitSize, staffLayout, paperOptions, headers, instrumentDict } = this;\n\t\tconst measureLayout = this.getMeasureLayout();\n\n\t\treturn {\n\t\t\ttitle,\n\t\t\tpageSize,\n\t\t\tunitSize,\n\t\t\tmeasureLayout,\n\t\t\tstaffLayout,\n\t\t\tpaperOptions,\n\t\t\theaders,\n\t\t\tvoiceStaves,\n\t\t\tinstrumentDict,\n\t\t};\n\t}\n\n\tfindPoint(sid: string): PointPosition {\n\t\tfor (const system of this.systems) {\n\t\t\tfor (let si = 0; si < system.staves.length; ++si) {\n\t\t\t\tconst point = system.staves[si].semantics.find((point) => point.id === sid);\n\t\t\t\tif (point) {\n\t\t\t\t\tconst pageIndex = this.pages.findIndex((page) => page.systems.includes(system));\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpoint,\n\t\t\t\t\t\tpageIndex,\n\t\t\t\t\t\tsystemIndex: system.index,\n\t\t\t\t\t\tstaffIndex: si,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetMeasureSemantics(systemIndex: number, localIndex: number): SemanticPointInMeasure[] {\n\t\tconst system = this.systems[systemIndex];\n\t\tif (!system) return null;\n\n\t\tconst left = localIndex ? system.measureBars[localIndex - 1] : 0;\n\t\tconst right = system.measureBars[localIndex] || system.width;\n\n\t\treturn system.staves\n\t\t\t.map((staff, si) => {\n\t\t\t\tconst staffY = staff.top + staff.staffY;\n\t\t\t\treturn staff.semantics\n\t\t\t\t\t.filter((point) => point.x >= left && point.x < right)\n\t\t\t\t\t.map((point) => {\n\t\t\t\t\t\tconst [y1, y2] = Number.isFinite(point.extension?.y1) ? [point.extension.y1, point.extension.y2] : [point.y, point.y];\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...point,\n\t\t\t\t\t\t\tstaff: si,\n\t\t\t\t\t\t\tsy1: y1 + staffY,\n\t\t\t\t\t\t\tsy2: y2 + staffY,\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t.flat(1);\n\t}\n\n\tmakeTimewiseGraph({ store = false }: { store?: boolean } = {}): TimewiseGraph {\n\t\tif (!this.spartito) return null;\n\n\t\tconst measures = this.spartito.measures\n\t\t\t.filter((measure) => measure.events.length > 0)\n\t\t\t.map((measure) => {\n\t\t\t\tconst points = this.getMeasureSemantics(measure.position.systemIndex, measure.position.localIndex);\n\n\t\t\t\tconst graph = {\n\t\t\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\t\t\tleft: measure.position.left,\n\t\t\t\t\tright: measure.position.right,\n\t\t\t\t\tpoints,\n\t\t\t\t};\n\n\t\t\t\tif (store) measure.graph = graph;\n\n\t\t\t\treturn graph;\n\t\t\t});\n\n\t\treturn { measures };\n\t}\n\n\tgetTokenMap(): Map {\n\t\tconst map = new Map();\n\n\t\tthis.systems.forEach((system) =>\n\t\t\tsystem.staves.forEach((staff) => staff.measures.forEach((measure) => measure.tokens.forEach((token) => map.set(token.id, token))))\n\t\t);\n\n\t\treturn map;\n\t}\n\n\tassemble(confidenceThreshold: number = 1, logger: Logger = new DummyLogger()) {\n\t\tconst ids = new Map();\n\n\t\tconst append = (systemIndex, staffIndex, point) => {\n\t\t\tconst id = hashSemanticPoint(systemIndex, staffIndex, point);\n\t\t\tlogger.assert(!ids.has(id), 'semantic point hash conflicted:', id, point, ids.get(id));\n\n\t\t\tids.set(id, point);\n\t\t};\n\n\t\tthis.pages.forEach((page, index) => (page.index = index));\n\n\t\tlet measureIndex = 0;\n\t\tthis.systems.forEach((system, systemIndex) => {\n\t\t\tsystem.index = systemIndex;\n\t\t\tsystem.headMeasureIndex = measureIndex;\n\t\t\tsystem.prev = this.systems[systemIndex - 1] || null;\n\t\t\tsystem.next = this.systems[systemIndex + 1] || null;\n\n\t\t\tif (system.semantics && system.semantics.length) system.semantics.forEach((point) => append(systemIndex, null, point));\n\n\t\t\tsystem.assemble(confidenceThreshold, logger);\n\t\t\tmeasureIndex += system.measureCount;\n\t\t});\n\n\t\tthis.pages.forEach((page, i) => {\n\t\t\tpage.systems.forEach((system) => (system.pageIndex = i));\n\t\t\tpage.assemble({ textAnnotations: this.textAnnotations }, logger);\n\t\t});\n\t}\n\n\tassembleSystem(system: System, confidenceThreshold: number = 1) {\n\t\tthis.systems.forEach((system, si) => (system.index = si));\n\t\tconst systemIndex = system.index;\n\n\t\tif (system.semantics && system.semantics.length) {\n\t\t\tsystem.semantics.forEach((point) => hashSemanticPoint(systemIndex, null, point));\n\t\t\tsystem.assemble(confidenceThreshold);\n\t\t}\n\t}\n\n\tmarkVoices(staves: VoicesStaff[]): void {\n\t\tconst tokenMap = this.getTokenMap();\n\t\tfor (const token of tokenMap.values()) token.voice = 0;\n\n\t\tconst vis = []\n\t\t\t.concat(...staves.map((staff, s) => (staff.voices || []).map((_, v) => [s, v])))\n\t\t\t.sort(([s1, v1], [s2, v2]) => v1 - v2 || s1 - s2)\n\t\t\t.map(([s, v]) => `${s}|${v}`);\n\n\t\tstaves.forEach((staff, si) =>\n\t\t\t(staff.voices || []).forEach((voice, vi) =>\n\t\t\t\tvoice.measures.forEach((measure) => {\n\t\t\t\t\tconst voiceIndex = vis.indexOf(`${si}|${vi}`);\n\n\t\t\t\t\tconst events = Object.values(measure.tickMap).filter((event) => event instanceof EventTerm) as EventTerm[];\n\t\t\t\t\tevents.forEach((event) => {\n\t\t\t\t\t\tconst notes = event.noteIds ? event.noteIds.map((id) => tokenMap.get(id)).filter(Boolean) : [];\n\t\t\t\t\t\tconst accessories = event.accessories ? event.accessories.map((acc) => tokenMap.get(acc.id)).filter(Boolean) : [];\n\t\t\t\t\t\t//console.log(\"notes:\", si, vi, mi, event.noteIds, notes, accessories);\n\n\t\t\t\t\t\t[...notes, ...accessories].forEach((token) => (token.voice |= 1 << voiceIndex));\n\n\t\t\t\t\t\tif (event.timeWarp) notes.forEach((note) => (note.timeWarped = true));\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\t}\n\n\tasync replaceImageKeys(proc: (x: string | Buffer) => Promise): Promise {\n\t\tawait Promise.all([\n\t\t\t...(this.pages.map(async (page) => {\n\t\t\t\tif (page.source) page.source.url = await proc(page.source.url);\n\t\t\t}) as Promise[]),\n\t\t\t...this.systems.map((system) =>\n\t\t\t\tPromise.all([\n\t\t\t\t\tproc(system.backgroundImage).then((key) => (system.backgroundImage = key)),\n\t\t\t\t\t...(system.staves.map(async (staff) => {\n\t\t\t\t\t\tstaff.backgroundImage = await proc(staff.backgroundImage);\n\t\t\t\t\t\tstaff.maskImage = await proc(staff.maskImage);\n\t\t\t\t\t}) as Promise[]),\n\t\t\t\t])\n\t\t\t),\n\t\t]);\n\t}\n\n\tinferenceStaffLayout(): void {\n\t\t// inference the complete layout\n\t\tconst staffTotal = Math.max(...this.systems.map((system) => system.staves.length), 0);\n\t\tthis.staffLayoutCode = Array(staffTotal).fill('').join(',');\n\n\t\tconst completeSystems = this.systems.filter((system) => system.staves.length === staffTotal && system.bracketsAppearance);\n\t\tif (!completeSystems.length) return; // no enough evidence\n\n\t\tconst candidateCodes = completeSystems\n\t\t\t.map((system) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst layout = staffLayout.parseCode(system.bracketsAppearance);\n\t\t\t\t\tif (layout.staffIds.length !== system.staves.length) return null;\n\n\t\t\t\t\treturn system.bracketsAppearance;\n\t\t\t\t} catch (_) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t\tif (!candidateCodes.length) return; // no valid layout\n\n\t\tconst codeCounting = candidateCodes.reduce((acc, code) => {\n\t\t\tconst count = acc[code] || 0;\n\t\t\tacc[code] = count + 1;\n\t\t\treturn acc;\n\t\t}, {} as { [code: string]: number });\n\t\tconst maxCount = Math.max(...Object.values(codeCounting));\n\t\tconst code = Object.entries(codeCounting).find(([_, count]) => count === maxCount)[0];\n\n\t\t// added connection lines between braces {-}\n\t\tconst connectedCode = code.replace(/\\{,*\\}/g, (match) => match.replace(/,/g, '-'));\n\t\tconst layout = staffLayout.parseCode(connectedCode);\n\n\t\tthis.staffLayoutCode = connectedCode;\n\t\t//console.log(\"complete code:\", code);\n\n\t\t// inference systems' mask\n\t\tlet lastSys: System = null;\n\t\tfor (const system of this.systems) {\n\t\t\tif (lastSys && system.staves.length === lastSys.staves.length && system.bracketsAppearance === lastSys.bracketsAppearance) {\n\t\t\t\tsystem.staffMaskChanged = null;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (system.staves.length < staffTotal && system.bracketsAppearance) {\n\t\t\t\t// validate the system brackets code\n\t\t\t\ttry {\n\t\t\t\t\tif (!staffLayout.parseCode(system.bracketsAppearance)) continue;\n\t\t\t\t} catch (_) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst search = (bits: (0 | 1)[]): number => {\n\t\t\t\t\tif (bits.length > layout.staffIds.length) return null;\n\n\t\t\t\t\tif (bits.reduce((sum, bit) => sum + bit, 0) === system.staves.length) return bitsToMask(bits);\n\n\t\t\t\t\tfor (const bit of [1, 0]) {\n\t\t\t\t\t\tconst bb = [...bits, bit] as (0 | 1)[];\n\t\t\t\t\t\tconst code1 = layout.partialMaskCode(bb);\n\t\t\t\t\t\tif (code1 === system.bracketsAppearance) return bitsToMask(bb);\n\t\t\t\t\t\telse if (system.bracketsAppearance.startsWith(code1)) {\n\t\t\t\t\t\t\tconst result = search(bb);\n\t\t\t\t\t\t\tif (result) return result;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t\tconst mask = search([]);\n\t\t\t\t//console.log(\"mask:\", system.bracketsAppearance, mask.toString(2));\n\n\t\t\t\tsystem.staffMaskChanged = !lastSys || mask !== lastSys.staffMask ? mask : null;\n\t\t\t}\n\n\t\t\tlastSys = system;\n\t\t}\n\t}\n\n\tassignBackgroundForMeasure(measure: SpartitoMeasure): void {\n\t\tmeasure.backgroundImages = [];\n\n\t\tconst system = this.systems[measure.position.systemIndex];\n\t\tif (system.backgroundImage) {\n\t\t\tmeasure.backgroundImages.push({\n\t\t\t\turl: system.backgroundImage,\n\t\t\t\tposition: system.imagePosition,\n\t\t\t\toriginal: true,\n\t\t\t});\n\t\t}\n\n\t\tsystem.staves.forEach((staff) => {\n\t\t\tif (!system.backgroundImage && staff.backgroundImage)\n\t\t\t\tmeasure.backgroundImages.push({\n\t\t\t\t\turl: staff.backgroundImage.toString(),\n\t\t\t\t\tposition: {\n\t\t\t\t\t\t...staff.imagePosition,\n\t\t\t\t\t\ty: staff.imagePosition.y + staff.top,\n\t\t\t\t\t},\n\t\t\t\t\toriginal: true,\n\t\t\t\t});\n\n\t\t\tif (staff.maskImage) {\n\t\t\t\tmeasure.backgroundImages.push({\n\t\t\t\t\turl: staff.maskImage.toString(),\n\t\t\t\t\tposition: {\n\t\t\t\t\t\t...staff.imagePosition,\n\t\t\t\t\t\ty: staff.imagePosition.y + staff.top,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tblackoutFakeNotes(scope: 'patched' | 'perfect' | 'all' = 'patched'): string[] {\n\t\tif (!this.spartito) return;\n\n\t\tlet inScope = (_) => true;\n\t\tswitch (scope) {\n\t\t\tcase 'patched':\n\t\t\t\tinScope = (measure) => measure.patched;\n\t\t\t\tbreak;\n\t\t\tcase 'perfect':\n\t\t\t\tinScope = (measure) => measure.patched || (measure.regulated && evaluateMeasure(measure).perfect);\n\t\t\t\tbreak;\n\t\t}\n\t\tconst measures = this.spartito.measures.filter(inScope);\n\n\t\tconst fakeIds = measures.reduce((ids, measure) => {\n\t\t\tif (!measure.regulated) return;\n\n\t\t\tconst voicedIds = measure.voices.flat(1);\n\t\t\tconst fakeChords = measure.events.filter((event) => !event.rest && !event.grace && !voicedIds.includes(event.id));\n\n\t\t\tfakeChords.forEach((event) => event.noteIds && ids.push(...event.noteIds));\n\n\t\t\treturn ids;\n\t\t}, [] as string[]);\n\t\tconst fakeIdSet = new Set(fakeIds);\n\n\t\tthis.systems.forEach((system) =>\n\t\t\tsystem.staves.forEach((staff) => {\n\t\t\t\tconst blackIds = staff.semantics.filter((point) => fakeIdSet.has(point.id)).map((point) => point.id);\n\t\t\t\tsystem.sidBlackList.push(...blackIds);\n\t\t\t})\n\t\t);\n\n\t\treturn fakeIds;\n\t}\n\n\tgetMeasureLayout(): measureLayout.MeasureLayout {\n\t\tconst code = this.spartito && this.spartito.measureLayoutCode;\n\t\tif (code) {\n\t\t\ttry {\n\t\t\t\treturn measureLayout.parseCode(code);\n\t\t\t} catch (err) {\n\t\t\t\tconsole.debug('invalid measure layout code:', err);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t*splitToSingleScoresGen(): Generator {\n\t\tthis.assemble();\n\t\tconst startSysIndices = this.systems.filter((system) => system.index > 0 && system.indent && system.timeSignatureOnHead).map((system) => system.index);\n\n\t\tif (!startSysIndices.length) {\n\t\t\tyield this.deepCopy();\n\t\t\treturn;\n\t\t}\n\n\t\tconst templateScore = new Score({ ...this, pages: [], topology: undefined, spartito: undefined, patches: undefined });\n\n\t\t// clear temporary objects before deep dopy\n\t\tthis.pages.forEach((page) => {\n\t\t\tdelete page.tokens;\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tdelete system.tokens;\n\t\t\t\tsystem.staves.forEach((staff) => {\n\t\t\t\t\tstaff.measures = [];\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tlet startSysIndex = 0;\n\t\tfor (const endSysIndex of [...startSysIndices, this.systems.length]) {\n\t\t\tconst sysInRange = (system) => system.index >= startSysIndex && system.index < endSysIndex;\n\t\t\tconst pages = this.pages\n\t\t\t\t.filter((page) => page.systems.some(sysInRange))\n\t\t\t\t.map((page) => {\n\t\t\t\t\tconst { systems, ...fields } = page;\n\t\t\t\t\treturn new Page({ ...fields, systems: systems.filter(sysInRange).map((system) => new System({ ...system })) });\n\t\t\t\t});\n\n\t\t\tconst newScore = templateScore.deepCopy();\n\t\t\tnewScore.headers.SubScoreSystem = `${startSysIndex}-${endSysIndex - 1}`;\n\t\t\tnewScore.headers.SubScorePage = `${pages[0].index}-${pages[pages.length - 1].index}`;\n\n\t\t\t//newScore.pages = pages.map((page) => page.deepCopy());\n\t\t\tnewScore.pages = pages;\n\t\t\tnewScore.assemble();\n\t\t\tnewScore.inferenceStaffLayout();\n\n\t\t\tstartSysIndex = endSysIndex;\n\n\t\t\tyield newScore;\n\t\t}\n\t}\n\n\tsplitToSingleScores(): Score[] {\n\t\treturn [...this.splitToSingleScoresGen()];\n\t}\n}\n\nexport { PaperOptions, Score, Page, System, Staff, Measure, MeasureValidation };\nexport type { SemanticPointInMeasure };\n","import { MIDI } from '@k-l-lambda/music-widgets';\n\nimport { Fraction } from './interfaces';\nimport { noteToPitch } from './utils';\nimport { EventTerm, RestType, GraceType, StemBeam, ArpeggioStyle, TermPitch, TremoloLink } from './term';\nimport { SpartitoMeasure } from './spartitoMeasure';\n\n// NOTE: 'JSONEditor.onEditable' determine whether a field is editable, here 'readonly' modifier has no effect to UI\n\ninterface EventUIAgent {\n\treadonly id: number;\n\treadonly duration: number;\n\n\t//ys: number[];\n\tpitches: TermPitch[];\n\trest: RestType;\n\tdivision: number;\n\tdots: number;\n\tstemDirection: string;\n\ttying: boolean;\n\ttied: boolean;\n\tgrace: boolean; //\n\tbeam: StemBeam;\n\ttimeWarp: string; //\n\ttremolo: number;\n\ttremoloLink: TremoloLink;\n\tglissando: boolean;\n\tarpeggioStyle: ArpeggioStyle;\n\ttick: number;\n}\n\ninterface MeasureUIAgent {\n\treadonly measureIndex: number;\n\ttimeSignature: Fraction;\n\tdoubtfulTimesig: boolean;\n\tkeySignature: number;\n\t//readonly events: EventUIAgent[];\n\tduration: number;\n\treadonly voices: number[][];\n}\n\nclass EditableEvent extends EventTerm {\n\tvoice: number;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\t}\n\n\tget agent(): EventUIAgent {\n\t\treturn new Proxy(this as any, {\n\t\t\tget(target, key): any {\n\t\t\t\tconst self = target as any as EditableEvent;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'id':\n\t\t\t\t\tcase 'tick':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\tcase 'rest':\n\t\t\t\t\tcase 'division':\n\t\t\t\t\tcase 'dots':\n\t\t\t\t\tcase 'stemDirection':\n\t\t\t\t\tcase 'beam':\n\t\t\t\t\tcase 'tremolo':\n\t\t\t\t\tcase 'tremoloLink':\n\t\t\t\t\tcase 'arpeggioStyle': {\n\t\t\t\t\t\tconst value = self[key];\n\t\t\t\t\t\treturn value === undefined ? null : value;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'tying':\n\t\t\t\t\tcase 'tied':\n\t\t\t\t\tcase 'glissando': {\n\t\t\t\t\t\tconst value = self[key];\n\t\t\t\t\t\treturn value === undefined ? false : value;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'grace':\n\t\t\t\t\t\treturn !!self.grace;\n\n\t\t\t\t\tcase 'timeWarp':\n\t\t\t\t\t\treturn self.timeWarp ? `${self.timeWarp.numerator}/${self.timeWarp.denominator}` : null;\n\n\t\t\t\t\tcase 'pitches':\n\t\t\t\t\t\treturn self.pitches;\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t},\n\n\t\t\tset: (target, key, value): boolean => {\n\t\t\t\tconst self = target as any as EditableEvent;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'tick':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\tcase 'rest':\n\t\t\t\t\tcase 'division':\n\t\t\t\t\tcase 'dots':\n\t\t\t\t\tcase 'stemDirection':\n\t\t\t\t\tcase 'tying':\n\t\t\t\t\tcase 'tied':\n\t\t\t\t\tcase 'beam':\n\t\t\t\t\tcase 'tremolo':\n\t\t\t\t\tcase 'tremoloLink':\n\t\t\t\t\tcase 'glissando':\n\t\t\t\t\tcase 'arpeggioStyle':\n\t\t\t\t\t\t(self as any)[key] = value;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'grace':\n\t\t\t\t\t\tself.grace = value ? GraceType.Grace : null;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'timeWarp':\n\t\t\t\t\t\tself.timeWarp = null;\n\t\t\t\t\t\tif (value && typeof value === 'string') {\n\t\t\t\t\t\t\tconst captures = value.match(/^(\\d+)\\/(\\d+)/);\n\t\t\t\t\t\t\tif (captures) {\n\t\t\t\t\t\t\t\tself.timeWarp = {\n\t\t\t\t\t\t\t\t\tnumerator: parseInt(captures[1]),\n\t\t\t\t\t\t\t\t\tdenominator: parseInt(captures[2]),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'id':\n\t\t\t\t\tcase 'pitches':\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\townKeys: (): string[] => [\n\t\t\t\t'id',\n\t\t\t\t'duration',\n\t\t\t\t'rest',\n\t\t\t\t'division',\n\t\t\t\t'dots',\n\t\t\t\t'stemDirection',\n\t\t\t\t'tying',\n\t\t\t\t'tied',\n\t\t\t\t'beam',\n\t\t\t\t'timeWarp',\n\t\t\t\t'tremolo',\n\t\t\t\t'tremoloLink',\n\t\t\t\t'glissando',\n\t\t\t\t'arpeggioStyle',\n\t\t\t\t'tick',\n\t\t\t\t'grace',\n\t\t\t\t'pitches',\n\t\t\t],\n\n\t\t\tgetOwnPropertyDescriptor() {\n\t\t\t\treturn { enumerable: true, configurable: true };\n\t\t\t},\n\t\t});\n\t}\n}\n\nclass EditableMeasure extends SpartitoMeasure {\n\tstatic className = 'EditableMeasure';\n\tstatic blackKeys = [];\n\n\tevents: EditableEvent[] = null;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\n\t\tthis.events = data.events;\n\t\tif (this.events?.some((event) => !(event instanceof EditableEvent))) this.events = this.events.map((event) => new EditableEvent(event));\n\n\t\tif (this.voices) this.syncVoiceToEvents();\n\t}\n\n\tsyncVoiceToEvents(): void {\n\t\tthis.events.forEach((event) => (event.voice = -1));\n\t\tthis.voices.forEach((voice, voiceIndex) => {\n\t\t\tvoice.forEach((id) => {\n\t\t\t\tconst event = this.events.find((event) => event.id === id);\n\t\t\t\tif (event) event.voice = voiceIndex;\n\t\t\t\telse console.warn('no event with id:', id, this.events.length);\n\t\t\t});\n\t\t});\n\t}\n\n\tsyncVoiceFromEvents(): void {\n\t\tconst voices: EditableEvent[][] = [];\n\t\tthis.events.forEach((event) => {\n\t\t\tif (event?.voice >= 0) {\n\t\t\t\tvoices[event.voice] = voices[event.voice] || [];\n\t\t\t\tvoices[event.voice].push(event);\n\t\t\t}\n\t\t});\n\n\t\tvoices.forEach((voice) => voice.sort((e1, e2) => e1.tick - e2.tick));\n\n\t\tthis.voices = voices.map((voice) => voice.map((event) => event.id));\n\t}\n\n\tget agent(): MeasureUIAgent {\n\t\treturn new Proxy(this as any, {\n\t\t\tget: (target, key): any => {\n\t\t\t\tconst self = target as any as EditableMeasure;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'measureIndex':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\t\treturn self[key];\n\n\t\t\t\t\tcase 'voices':\n\t\t\t\t\t\treturn self.voices?.map((voice) => voice.join(',')) || null;\n\n\t\t\t\t\tcase 'timeSignature':\n\t\t\t\t\tcase 'keySignature':\n\t\t\t\t\tcase 'doubtfulTimesig':\n\t\t\t\t\t\treturn self.basics[0][key];\n\t\t\t\t\t//case 'events':\n\t\t\t\t\t//\treturn self.events.map(eventUIAgent);\n\t\t\t\t\tcase 'toJSON':\n\t\t\t\t\t\treturn () => ({\n\t\t\t\t\t\t\tmeasureIndex: self.measureIndex,\n\t\t\t\t\t\t\tvoices: self.voices,\n\t\t\t\t\t\t\tduration: self.duration,\n\t\t\t\t\t\t\ttimeSignature: self.basics[0].timeSignature,\n\t\t\t\t\t\t\tkeySignature: self.basics[0].keySignature,\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t},\n\n\t\t\tset: (target, key, value): boolean => {\n\t\t\t\t//console.log('set:', key, value);\n\t\t\t\tconst self = target as any as EditableMeasure;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'timeSignature':\n\t\t\t\t\tcase 'keySignature':\n\t\t\t\t\tcase 'doubtfulTimesig':\n\t\t\t\t\t\t(self.basics[0][key] as any) = value;\n\t\t\t\t\t\tself.basics = self.basics.map(() => self.basics[0]);\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\t\tself.duration = value;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'measureIndex':\n\t\t\t\t\tcase 'voices':\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\townKeys: (): string[] => ['measureIndex', 'timeSignature', 'doubtfulTimesig', 'keySignature', 'duration', 'voices'],\n\n\t\t\tgetOwnPropertyDescriptor() {\n\t\t\t\treturn { enumerable: true, configurable: true };\n\t\t\t},\n\t\t});\n\t}\n\n\tmakeMIDI(bpm: number = 120): MIDI.MidiData {\n\t\tif (!this.regulated) return null;\n\n\t\tconst microsecondsPerBeat = 60e6 / bpm;\n\n\t\tconst header = { formatType: 0, ticksPerBeat: 480 };\n\t\tconst tracks = this.voices.map((ids, vi) => {\n\t\t\tconst events = ids\n\t\t\t\t.map((id) => {\n\t\t\t\t\tconst event = this.events.find((event) => event.id === id);\n\t\t\t\t\tif (event) {\n\t\t\t\t\t\tconst subEvents = event.graceIds ? event.graceIds.map((id) => this.events.find((event) => event.id === id)) : [];\n\n\t\t\t\t\t\treturn [...subEvents, event];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [];\n\t\t\t\t})\n\t\t\t\t.flat(1);\n\n\t\t\tconst startTime = 0;\n\n\t\t\ttype Event = MIDI.MidiEvent & { [key: string]: any };\n\t\t\tconst midiEvents: Event[] = events\n\t\t\t\t.filter((event) => !event.rest && Number.isFinite(event.tick) && event.tick >= 0 && Number.isFinite(event.duration))\n\t\t\t\t.map((event) =>\n\t\t\t\t\tevent.pitches.map((pitch) => [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: event.id,\n\t\t\t\t\t\t\ttime: event.tick,\n\t\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\t\tsubtype: 'noteOn',\n\t\t\t\t\t\t\tchannel: event.staff,\n\t\t\t\t\t\t\tnoteNumber: noteToPitch(pitch),\n\t\t\t\t\t\t\tvelocity: 96,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: event.id,\n\t\t\t\t\t\t\ttime: event.tick + event.duration,\n\t\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\t\tsubtype: 'noteOff',\n\t\t\t\t\t\t\tchannel: event.staff,\n\t\t\t\t\t\t\tnoteNumber: noteToPitch(pitch),\n\t\t\t\t\t\t},\n\t\t\t\t\t])\n\t\t\t\t)\n\t\t\t\t.flat(2);\n\n\t\t\tmidiEvents.sort(function (e1, e2) {\n\t\t\t\treturn e1.time - e2.time;\n\t\t\t});\n\n\t\t\tif (vi === 0) {\n\t\t\t\tmidiEvents.unshift(\n\t\t\t\t\t{\n\t\t\t\t\t\ttime: startTime,\n\t\t\t\t\t\ttype: 'meta',\n\t\t\t\t\t\tsubtype: 'timeSignature',\n\t\t\t\t\t\tnumerator: this.timeSignature.numerator,\n\t\t\t\t\t\tdenominator: this.timeSignature.denominator,\n\t\t\t\t\t\tthirtyseconds: 8,\n\t\t\t\t\t},\n\t\t\t\t\t{ time: startTime, type: 'meta', subtype: 'setTempo', microsecondsPerBeat }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tmidiEvents.forEach((event) => {\n\t\t\t\tevent.ticks = Math.round(event.time - startTime);\n\t\t\t});\n\t\t\tmidiEvents.forEach((event, i) => {\n\t\t\t\tevent.deltaTime = event.ticks - (i > 0 ? midiEvents[i - 1].ticks : 0);\n\t\t\t});\n\n\t\t\tmidiEvents.push({ deltaTime: 0, type: 'meta', subtype: 'endOfTrack' });\n\n\t\t\treturn midiEvents;\n\t\t});\n\n\t\treturn {\n\t\t\theader,\n\t\t\ttracks,\n\t\t};\n\t}\n}\n\nexport { EditableEvent, EditableMeasure };\n","import { RegulationSolution, RegulationSolutionEvent, EventPredisposition } from './interfaces';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { EventCluster, EventElement, EventElementType } from './eventTopology';\nimport { argmax, frac } from './utils';\nimport { WHOLE_DURATION, StemBeam } from './term';\nimport { Logger, DummyLogger } from './logger';\n\ninterface BeadPicker {\n\tn_seq: number;\n\tquota: number;\n\tcost: number; // duration in milliseconds\n\n\tpredictCluster(cluster: EventCluster, tip: number): Promise;\n}\n\nenum BeadType {\n\tPass = 'i',\n\tDivision = 'd',\n\tDots = 'o',\n}\n\nconst DIVISION_NAMES = ['whole', 'half', 'quarter', 'eighth', 'sixteenth', 'thirtysecond', 'sixtyfourth', '128th', '256th'];\n\ninterface BeadNodeInitData {\n\tcluster: EventCluster;\n\telemIndex: number;\n\ttype: BeadType;\n\tpossibilities: number[];\n\tpretentiousness: number;\n}\n\nconst RESIDUE_LOSS_WEIGHT = 0.2;\nconst VOICEN_LOSS_WEIGHT = 0.002;\nconst SPACE_LOSS_WEIGHT = 0.4 / WHOLE_DURATION;\nconst PRETENTIOUSNESS_LOSS_WEIGHT = 0.02;\n\nconst POSSIBILITY_LOW_BOUNDARY = 1e-12;\n\nconst PRETENTIOUSNESS_CLIP = 100;\n\ninterface ClusterEvaluation {\n\ttickErr: number;\n\ttwist: number;\n\tresidue: number;\n\tendTick: number;\n\tfatalError: boolean;\n\tvoiceN: number;\n\tspaceDuration: number;\n\tpretentiousness: number;\n\tloss: number;\n}\n\ninterface ElementState {\n\ttick: number;\n\tdivision: number;\n\tdots: number;\n\tbeam: StemBeam;\n\tstemDirection: string;\n\tgrace: boolean;\n\ttimeWarped: boolean;\n\tfullMeasure: boolean; // full measure rest\n\tfake: boolean;\n\torder: number;\n\tpredisposition: EventPredisposition;\n}\n\ninterface ClusterState {\n\telements: ElementState[];\n}\n\nconst STEM_DIRECTION_OPTIONS = [undefined, 'u', 'd'];\n\nconst BEAM_OPTIONS = [undefined, StemBeam.Open, StemBeam.Continue, StemBeam.Close];\n\nconst saveClusterState = (cluster: EventCluster): ClusterState => ({\n\telements: cluster.elements.map((elem) => ({\n\t\ttick: elem.tick!,\n\t\tdivision: elem.division!,\n\t\tdots: elem.dots!,\n\t\tbeam: elem.beam!,\n\t\tstemDirection: elem.stemDirection!,\n\t\tgrace: elem.grace!,\n\t\ttimeWarped: elem.timeWarped!,\n\t\tfullMeasure: elem.fullMeasure!,\n\t\tfake: elem.fake!,\n\t\torder: elem.order!,\n\t\tpredisposition: elem.predisposition!,\n\t})),\n});\n\nconst restoreClusterState = (cluster: EventCluster, state: ClusterState): void => cluster.elements.forEach((elem, i) => Object.assign(elem, state.elements[i]));\n\nconst measurePretentious = (p) => Math.min(PRETENTIOUSNESS_CLIP, -Math.log(p));\n\ninterface BeadDeductionContext {\n\tpicker: BeadPicker;\n\tlogger: Logger;\n\tptFactor: number; // pretentiousness tolerance factor\n}\n\nclass BeadNode {\n\tcluster: EventCluster;\n\telemIndex: number;\n\ttype: BeadType;\n\tpossibilities: number[];\n\tpretentiousness: number;\n\n\tchildren: Record;\n\taccessCount: number;\n\n\tconstructor(data: BeadNodeInitData) {\n\t\tObject.assign(this, data);\n\n\t\t//this.possibilities = this.possibilities.map((x, i) => (this.type === BeadType.Pass && !i) ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\n\t\tthis.children = {};\n\t\tthis.accessCount = 0;\n\t}\n\n\tnextBranch(): number | null {\n\t\tconst ps = this.possibilities.map((p, i) => p / (this.children[i] ? this.children[i].accessCount + 1 : 1));\n\t\t//const ps = this.possibilities.map((p, i) => p * (this.children[i] ? (2 ** -this.children[i].accessCount) : 1));\n\n\t\tif (ps.every((p) => !p)) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn null;\n\t\t}\n\n\t\treturn argmax(ps);\n\t}\n\n\tget currentElem(): EventElement {\n\t\treturn this.cluster.elements[this.elemIndex];\n\t}\n\n\tbranchID(ni: number): string {\n\t\tswitch (this.type) {\n\t\t\tcase BeadType.Pass:\n\t\t\t\treturn `i_${ni}`;\n\t\t\tcase BeadType.Division:\n\t\t\t\treturn DIVISION_NAMES[ni];\n\t\t\tcase BeadType.Dots:\n\t\t\t\treturn 'o' + '.'.repeat(ni);\n\t\t}\n\n\t\treturn '';\n\t}\n\n\tasync deduce({ picker, logger, ptFactor }: BeadDeductionContext, deep: number = 0): Promise {\n\t\t++this.accessCount;\n\n\t\tconst ni = this.nextBranch()!;\n\t\tlogger.debug(String.fromCodePoint(0x1f349) + ' '.repeat(deep), this.branchID(ni), this.accessCount > 1 ? `[${this.accessCount}]` : '');\n\n\t\tif (!Number.isInteger(ni) || ni < 0) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t}\n\n\t\tthis.pretentiousness += measurePretentious(this.possibilities[ni]);\n\t\tif (this.pretentiousness > PRETENTIOUSNESS_CLIP * ptFactor) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t}\n\n\t\tlet selfEval: null | ClusterEvaluation = null;\n\n\t\tswitch (this.type) {\n\t\t\tcase BeadType.Pass:\n\t\t\t\t{\n\t\t\t\t\tconst tip = this.currentElem.order! + 1;\n\t\t\t\t\tconst element = this.cluster.elements[ni];\n\t\t\t\t\tconsole.assert(element, 'null element:', ni, this.cluster.elements.length);\n\t\t\t\t\tif (element.type === EventElementType.EOS) {\n\t\t\t\t\t\tselfEval = evaluateCluster(this.cluster, tip, this.pretentiousness);\n\t\t\t\t\t\tif (!selfEval.residue || selfEval.fatalError) {\n\t\t\t\t\t\t\tthis.accessCount = Infinity;\n\t\t\t\t\t\t\treturn selfEval!;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.cluster.elements[0].order = tip;\n\t\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\t\tif (!picker.quota) return selfEval;\n\n\t\t\t\t\t\t\tconst possibilities = (await picker.predictCluster(this.cluster, tip + 1)).map((x, i) =>\n\t\t\t\t\t\t\t\tthis.cluster.elements[i].order! < tip + 1 || i === this.cluster.elements.length - 1 ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\t\telemIndex: 0,\n\t\t\t\t\t\t\t\ttype: BeadType.Pass,\n\t\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\telement.order = tip;\n\n\t\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\t\tconsole.assert(element.predisposition, 'no predisposition:', ni, this.possibilities);\n\t\t\t\t\t\t\tconst possibilities = element.predisposition!.divisionVector.map((x) => Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\t\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\t\telemIndex: ni,\n\t\t\t\t\t\t\t\ttype: BeadType.Division,\n\t\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase BeadType.Division:\n\t\t\t\t{\n\t\t\t\t\tthis.currentElem.division = ni;\n\n\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\tconst possibilities = this.currentElem.predisposition!.dotsVector.map((x) => Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\telemIndex: this.elemIndex,\n\t\t\t\t\t\t\ttype: BeadType.Dots,\n\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase BeadType.Dots:\n\t\t\t\t{\n\t\t\t\t\tthis.currentElem.dots = ni;\n\n\t\t\t\t\tselfEval = evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t\t\t\tif (!selfEval.residue || selfEval.fatalError) {\n\t\t\t\t\t\tthis.accessCount = Infinity;\n\t\t\t\t\t\treturn selfEval!;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\tif (!picker.quota) return selfEval;\n\n\t\t\t\t\t\tconst tip = this.currentElem.order! + 1;\n\t\t\t\t\t\tconst possibilities = (await picker.predictCluster(this.cluster, tip)).map((x, i) =>\n\t\t\t\t\t\t\tthis.cluster.elements[i].order! < tip + 1 ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\telemIndex: this.elemIndex,\n\t\t\t\t\t\t\ttype: BeadType.Pass,\n\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst evaluation = await this.children[ni].deduce({ picker, logger, ptFactor }, deep + 1);\n\t\tif (selfEval && evaluation.fatalError) {\n\t\t\tconst tip = this.currentElem.order!;\n\t\t\tthis.cluster.elements.forEach((elem) => {\n\t\t\t\tif (elem.order! > tip) elem.order = undefined;\n\t\t\t});\n\n\t\t\t// clear children data\n\t\t\tthis.cluster.elements.forEach((elem) => (elem.order = elem.order! > this.currentElem.order! ? undefined : elem.order));\n\t\t\tthis.cluster.elements[this.cluster.elements.length - 1].tick = selfEval.endTick;\n\n\t\t\treturn selfEval;\n\t\t}\n\n\t\treturn evaluation;\n\t}\n}\n\nconst estimateElementDuration = (elem: EventElement) => WHOLE_DURATION * 2 ** -elem.division! * (2 - 2 ** -elem.dots!);\n\nconst evaluateCluster = (cluster: EventCluster, tip: number, pretentiousness: number): ClusterEvaluation => {\n\tconst events = cluster.elements.filter(\n\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order) && elem.order! < tip\n\t);\n\tevents.sort((e1, e2) => e1.order! - e2.order!);\n\n\tconst eos = cluster.elements[cluster.elements.length - 1];\n\n\tlet tick = 0;\n\tlet lastOrder = 0;\n\tlet endTick = 0;\n\tlet voiceN = 1;\n\n\t// [x, tick, estimated tick]\n\tconst scales: [number, number, number][] = [[eos.x, cluster.signatureDuration, cluster.signatureDuration]];\n\n\tlet totalDuration = 0;\n\n\t// assign tick for events\n\tevents.forEach((event) => {\n\t\tif (event.order! > lastOrder + 1) {\n\t\t\ttick = 0;\n\t\t\t++voiceN;\n\t\t}\n\n\t\tconst referenceScale = scales.find((s) => s[1] >= tick);\n\t\tif (referenceScale && event.x > referenceScale[0] + 3) {\n\t\t\tconst nearScale = scales.reduce((n, s) => (Math.abs(event.predisposition!.tick - s[2]) < Math.abs(event.predisposition!.tick - n[2]) ? s : n));\n\t\t\tif (Math.abs(nearScale[0] - event.x) < 2) tick = Math.max(tick, nearScale[1]);\n\t\t}\n\n\t\tevent.tick = tick;\n\n\t\tconst si = Math.max(\n\t\t\t0,\n\t\t\tscales.findIndex((s) => s[0] > event.x)\n\t\t);\n\t\tscales.splice(si, 0, [event.x, event.tick, event.predisposition!.tick]);\n\n\t\t//let duration = WHOLE_DURATION * (2 ** -event.division!) * (2 - 2 ** -event.dots!);\n\t\tlet duration = estimateElementDuration(event);\n\t\tif (event.predisposition!.timeWarped > 0.5) duration = (duration * 2) / 3;\n\n\t\ttick += duration;\n\t\ttotalDuration += duration;\n\t\tendTick = Math.max(endTick, tick);\n\t\tlastOrder = event.order!;\n\t});\n\n\t/*const pretentiousness = events.reduce((p, event) => p +\n\t\tmeasurePretentious(event.predisposition!.divisionVector![event.division!]) +\n\t\tmeasurePretentious(event.predisposition!.dotsVector![event.dots!]), 0);*/\n\n\tif (endTick > 0) cluster.elements[cluster.elements.length - 1].tick = endTick;\n\n\tconst xSpan = cluster.elements[cluster.elements.length - 1].pivotX! - cluster.elements[1].pivotX!;\n\tconst tickSpan = Math.max(...events.map((e) => e.tick!), endTick);\n\n\t// tick twist loss\n\tconst eventsXOrder = [...events].sort((e1, e2) => e1.pivotX! - e2.pivotX!);\n\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\tconst e1 = eventsXOrder[i];\n\t\tconst dx = e2.pivotX! - e1.pivotX!;\n\t\tconst dt = e2.tick! - e1.tick!;\n\n\t\tif (!dt) return dx / xSpan;\n\n\t\tconst rate = Math.atan2(dt / tickSpan, dx / xSpan);\n\n\t\t//if (dt < 0)\n\t\t//\tconsole.log(\"minus dt:\", dt, dx, rate);\n\n\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t});\n\t//console.debug(\"tickTwists:\", tickTwists, eventsXOrder);\n\n\tconst twist = Math.max(...tickTwists, 0);\n\n\tconst tickMSE = events.map((event) => (event.tick! - event.predisposition!.tick) ** 2);\n\t//console.debug(\"tickMSE:\", tickMSE.map(Math.sqrt));\n\tconst tickErr = tickMSE.length ? Math.sqrt(tickMSE.reduce((sum, mse) => sum + mse, 0) / tickMSE.length) : 0;\n\t//console.debug(\"tick/twist:\", tickErr / WHOLE_DURATION, twist);\n\n\tconst residueElements = cluster.elements.filter(\n\t\t(elem) =>\n\t\t\t[EventElementType.CHORD, EventElementType.REST].includes(elem.type) &&\n\t\t\t!(Number.isInteger(elem.order) && elem.order! < tip) &&\n\t\t\t!(elem.predisposition && elem.predisposition.fakeP > 0.5)\n\t);\n\tconst residue = residueElements.length;\n\n\tconst fatalError = twist >= 1 || endTick > cluster.signatureDuration;\n\n\t//const spaceDuration = Math.max(0, cluster.signatureDuration - endTick);\n\tconst spaceDuration = Math.max(0, cluster.signatureDuration - totalDuration / voiceN);\n\n\tconst loss =\n\t\ttickErr / WHOLE_DURATION +\n\t\ttwist +\n\t\tresidue * RESIDUE_LOSS_WEIGHT +\n\t\tvoiceN * VOICEN_LOSS_WEIGHT +\n\t\tspaceDuration * SPACE_LOSS_WEIGHT +\n\t\tpretentiousness * PRETENTIOUSNESS_LOSS_WEIGHT;\n\n\treturn {\n\t\ttickErr,\n\t\ttwist,\n\t\tresidue,\n\t\tendTick,\n\t\tfatalError,\n\t\tvoiceN,\n\t\tspaceDuration,\n\t\tpretentiousness,\n\t\tloss,\n\t};\n};\n\nconst solveCluster = async (\n\tcluster: EventCluster,\n\tpicker: BeadPicker,\n\tlogger: Logger,\n\tquota: number = 200,\n\tstopLoss: number = 0,\n\tptFactor: number = 1\n): Promise => {\n\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\tconst suc0 = await picker.predictCluster(cluster, 1);\n\n\tconst root = new BeadNode({ cluster, elemIndex: 0, pretentiousness: 0, type: BeadType.Pass, possibilities: suc0 });\n\n\tlet bestEvaluation: ClusterEvaluation | null = null;\n\tlet bestState: ClusterState | null = null;\n\n\tpicker.quota = quota;\n\twhile (picker.quota) {\n\t\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\n\t\tconst evaluation = await root.deduce({ picker, logger, ptFactor });\n\n\t\tlogger.debug('loss:', evaluation);\n\n\t\tif (!bestEvaluation || evaluation.loss < bestEvaluation.loss) {\n\t\t\tbestEvaluation = evaluation;\n\n\t\t\tcluster.duration = bestEvaluation.endTick;\n\t\t\tbestState = saveClusterState(cluster);\n\n\t\t\tif (Number.isFinite(stopLoss) && bestEvaluation.loss <= stopLoss!) break;\n\t\t}\n\n\t\tif (!Number.isFinite(root.accessCount)) break;\n\t}\n\tlogger.debug('bestEvaluation:', bestEvaluation);\n\n\trestoreClusterState(cluster, bestState!);\n\n\t// solve residue elements\n\tconst fixedEvents = cluster.elements.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order));\n\tconst pendingEvents = cluster.elements.filter(\n\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && !Number.isInteger(elem.order)\n\t);\n\tif (fixedEvents.length) {\n\t\tpendingEvents.forEach((event) => {\n\t\t\t// exclude fake events (includes grace, fullMeasure) from voices\n\t\t\tevent.tick = undefined;\n\n\t\t\tif (event.predisposition!.fakeP < 0.5) {\n\t\t\t\t//const near = fixedEvents.reduce((n, e) => Math.abs(e.predisposition!.tick - event.predisposition!.tick) < Math.abs(n.predisposition!.tick - event.predisposition!.tick) ? e : n);\n\t\t\t\tconst duration = estimateElementDuration(event);\n\t\t\t\tconst candidates = fixedEvents.filter((e) => e.tick! + duration <= bestEvaluation!.endTick);\n\t\t\t\tif (candidates.length) {\n\t\t\t\t\tconst near = candidates.reduce((n, e) => (Math.abs(e.x - event.x) < Math.abs(n.x - event.x) ? e : n));\n\t\t\t\t\tevent.tick = near.tick;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfixedEvents.sort((e1, e2) => e1.order! - e2.order!);\n\n\t// properties\n\t[...fixedEvents, ...pendingEvents].forEach((event) => {\n\t\tevent.grace = !Number.isFinite(event.tick) && event.predisposition!.grace;\n\t\tevent.timeWarped = event.predisposition!.timeWarped > 0.5;\n\t\tevent.fullMeasure = event.predisposition!.fullMeasure > 0.5;\n\t\tevent.stemDirection = STEM_DIRECTION_OPTIONS[argmax(event.predisposition!.stemDirectionVector)];\n\t\tevent.beam = BEAM_OPTIONS[argmax(event.predisposition!.beamVector)];\n\t});\n\n\t// construct matrixH\n\tconst ids = cluster.elements.map((e) => e.index);\n\tconst idx = (id: number): number => ids.indexOf(id);\n\tcluster.matrixH = cluster.elements.map(() => Array(cluster.elements.length).fill(0));\n\tfixedEvents.forEach((event, i) => {\n\t\tconst lastEvent = fixedEvents[i - 1];\n\t\tif (!lastEvent || lastEvent.order! < event.order! - 1) {\n\t\t\tcluster.matrixH![idx(event.index!)][0] = 1;\n\t\t\tif (lastEvent) cluster.matrixH![cluster.elements.length - 1][idx(lastEvent.index!)] = 1;\n\t\t} else {\n\t\t\tconsole.assert(\n\t\t\t\tcluster.matrixH![idx(event.index!)] && Number.isFinite(cluster.matrixH![idx(event.index!)][idx(lastEvent.index!)]),\n\t\t\t\t'matrixH out of range:',\n\t\t\t\tevent.index,\n\t\t\t\tlastEvent.index,\n\t\t\t\tcluster.matrixH!.length\n\t\t\t);\n\n\t\t\tcluster.matrixH![idx(event.index!)][idx(lastEvent.index!)] = 1;\n\t\t}\n\t});\n\tif (!pendingEvents.length && fixedEvents.length) cluster.matrixH![cluster.elements.length - 1][idx(fixedEvents[fixedEvents.length - 1].index!)] = 1;\n\n\treturn bestEvaluation!;\n};\n\ninterface BeadSolverOptions {\n\tpicker: BeadPicker;\n\tstopLoss?: number;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n\tptFactor?: number;\n\tlogger?: Logger;\n}\n\nconst solveMeasure = async (measure: SpartitoMeasure, options: BeadSolverOptions): Promise => {\n\tconst { stopLoss = 0.09, quotaMax = 1000, quotaFactor = 5, ptFactor = 1, logger = new DummyLogger() } = options;\n\n\tlet worstLoss = 0;\n\n\tconst clusters = measure.createClusters();\n\tfor (const cluster of clusters) {\n\t\tconst quota = Math.min(quotaMax, Math.ceil(cluster.elements.length * quotaFactor));\n\t\tlogger.info(`[measure-${measure.measureIndex}]`, quota);\n\t\tconst { loss } = await solveCluster(cluster, options.picker, logger, quota, stopLoss, ptFactor);\n\t\tworstLoss = Math.max(worstLoss, loss);\n\t}\n\n\tconst voices = [] as number[][];\n\n\tconst durations = [] as number[];\n\n\tconst solutionEvents = [] as RegulationSolutionEvent[];\n\n\tclusters.forEach((cluster) => {\n\t\tconst events = cluster.elements.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order));\n\t\tevents.sort((e1, e2) => e1.order! - e2.order!);\n\n\t\tif (!events.length) return;\n\n\t\tlet voice = [] as number[];\n\t\tvoices.push(voice);\n\t\tlet lastOrder = 0;\n\t\tevents.forEach((event) => {\n\t\t\tif (event.fullMeasure || event.grace || event.tremoloCatcher) return;\n\n\t\t\tif (event.order! > lastOrder + 1) {\n\t\t\t\tvoice = [event.index!];\n\t\t\t\tvoices.push(voice);\n\t\t\t} else voice.push(event.index!);\n\n\t\t\tlastOrder = event.order!;\n\t\t});\n\n\t\tlet tipElem = events[events.length - 1];\n\n\t\t// complete voices from pending events\n\t\tconst pendingEvents = cluster.elements.filter(\n\t\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isFinite(elem.tick) && !Number.isInteger(elem.order)\n\t\t);\n\t\twhile (pendingEvents.length) {\n\t\t\tconst ei = pendingEvents.findIndex((e) => e.tick! >= tipElem.tick! + estimateElementDuration(tipElem));\n\t\t\tif (ei >= 0) voice.push(pendingEvents.splice(ei, 1)[0].index!);\n\t\t\telse {\n\t\t\t\ttipElem = pendingEvents.splice(0, 1)[0];\n\t\t\t\tvoice = [tipElem.index!];\n\t\t\t\tvoices.push(voice);\n\t\t\t}\n\t\t}\n\n\t\tif (events.some((elem) => !elem.fullMeasure && Number.isInteger(elem.order))) {\n\t\t\tconst eos = cluster.elements.find((elem) => elem.type === EventElementType.EOS);\n\t\t\tdurations.push(eos!.tick!);\n\t\t}\n\n\t\tconst eventMap = measure.eventMap;\n\n\t\tconst tickSet = cluster.elements.reduce((set, elem) => {\n\t\t\tif (Number.isFinite(elem.tick)) set.add(elem.tick!);\n\t\t\treturn set;\n\t\t}, new Set());\n\t\tconst ticks = Array.from(tickSet).sort((t1, t2) => t1 - t2);\n\n\t\t// fill solutionEvents\n\t\tevents.forEach((elem) => {\n\t\t\tconst event = eventMap[elem.index!];\n\t\t\tif (event) {\n\t\t\t\tsolutionEvents.push({\n\t\t\t\t\tid: event.id!,\n\t\t\t\t\ttick: elem.tick!,\n\t\t\t\t\ttickGroup: ticks.indexOf(elem.tick!),\n\t\t\t\t\tdivision: elem.division !== event.division ? elem.division : undefined,\n\t\t\t\t\tdots: elem.dots !== event.dots ? elem.dots : undefined,\n\t\t\t\t\ttimeWarp: elem.timeWarped ? frac(2, 3) : undefined, // TODO:\n\t\t\t\t\tbeam: elem.beam !== event.beam ? elem.beam : undefined,\n\t\t\t\t\tgrace: elem.grace !== !!event.grace ? elem.grace : undefined,\n\t\t\t\t\tfullMeasure: elem.fullMeasure || undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\n\tconst estimatedDuration = Math.max(...clusters.map((c) => c.estimatedDuration));\n\n\treturn {\n\t\tvoices: voices.filter((voice) => voice.length),\n\t\tduration: Math.max(...durations),\n\t\tevents: solutionEvents,\n\t\tpriority: -worstLoss,\n\t\testimatedDuration,\n\t};\n};\n\ninterface GlimpseMeasureOptions {\n\tpicker: BeadPicker;\n\tresetSignatureForDoubtfulOnly?: boolean;\n}\n\nconst glimpseMeasure = async (measure: SpartitoMeasure, { picker, resetSignatureForDoubtfulOnly }: GlimpseMeasureOptions): Promise => {\n\tconst clusters = measure.createClusters();\n\tconst eventMap = measure.eventMap;\n\n\tfor (const cluster of clusters) {\n\t\tif (!resetSignatureForDoubtfulOnly || measure.doubtfulTimesig) cluster.signatureDuration = 0; // re-estimate measure duration\n\t\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\t\tawait picker.predictCluster(cluster, 1);\n\n\t\tcluster.elements\n\t\t\t.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type))\n\t\t\t.forEach((elem) => {\n\t\t\t\tconst event = eventMap[elem.index!];\n\t\t\t\tevent.predisposition = elem.predisposition!;\n\t\t\t});\n\t}\n\n\tmeasure.estimatedDuration = Math.max(...clusters.map((c) => c.estimatedDuration));\n};\n\nconst estimateMeasure = async (measure: SpartitoMeasure, picker: BeadPicker): Promise =>\n\tglimpseMeasure(measure, { picker, resetSignatureForDoubtfulOnly: true });\n\nexport { BeadPicker, solveCluster, solveMeasure, estimateMeasure, glimpseMeasure };\n","import { EventTerm } from './term';\nimport type { SpartitoMeasure } from './spartitoMeasure';\n\ninterface EventRectification {\n\tid: number;\n\tdivision?: number;\n\tdots?: number;\n}\n\n// Here suppose sum of pvals equal to 1.\nconst multinomial_1 = (pvals: number[]): number => {\n\tconst n = Math.random();\n\n\tlet s = 0;\n\tfor (let i = 0; i < pvals.length; ++i) {\n\t\ts += pvals[i];\n\t\tif (s > n) return i;\n\t}\n\n\treturn pvals.length - 1;\n};\n\nconst looseVector = (ns: number[], factor = 0.9): number[] => {\n\tconst logits = ns.map((n) => Math.log(n) * factor);\n\tconst n2 = logits.map(Math.exp);\n\n\tconst sum = n2.reduce((sum, x) => sum + x, 0);\n\n\treturn n2.map((x) => x / sum);\n};\n\nconst looseEvent = (event: EventTerm): EventTerm => {\n\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return event;\n\n\tconst divisionVector = event.predisposition?.divisionVector ? looseVector(event.predisposition.divisionVector) : null;\n\tconst dotsVector = event.predisposition?.dotsVector ? looseVector(event.predisposition.dotsVector) : null;\n\n\treturn new EventTerm({\n\t\t...event,\n\t\tpredisposition: {\n\t\t\t...event.predisposition,\n\t\t\tdivisionVector,\n\t\t\tdotsVector,\n\t\t},\n\t});\n};\n\nclass MeasureRectification {\n\tevents: EventRectification[];\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\ttoString(): string {\n\t\treturn this.events\n\t\t\t.map((event) => {\n\t\t\t\tif (!event) return '';\n\n\t\t\t\tconst { division = '', dots = '' } = event;\n\t\t\t\treturn `${division}|${dots}`;\n\t\t\t})\n\t\t\t.join(',');\n\t}\n\n\tstatic default(events: EventTerm[]): MeasureRectification {\n\t\treturn new MeasureRectification({\n\t\t\tevents: events.map((event) => {\n\t\t\t\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return null;\n\n\t\t\t\tconst division = event.predisposition.divisionVector ? event.division : undefined;\n\t\t\t\tconst dots = event.predisposition.dotsVector ? event.dots : undefined;\n\n\t\t\t\treturn { id: event.id, division, dots };\n\t\t\t}),\n\t\t});\n\t}\n\n\tstatic roll(events: EventTerm[]): MeasureRectification {\n\t\treturn new MeasureRectification({\n\t\t\tevents: events.map((event) => {\n\t\t\t\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return null;\n\n\t\t\t\tlet division = undefined;\n\t\t\t\tlet dots = undefined;\n\n\t\t\t\tif (event.predisposition.divisionVector) division = multinomial_1(event.predisposition.divisionVector);\n\n\t\t\t\tif (event.predisposition.dotsVector) dots = multinomial_1(event.predisposition.dotsVector);\n\n\t\t\t\treturn { id: event.id, division, dots };\n\t\t\t}),\n\t\t});\n\t}\n}\n\nconst genMeasureRectifications = function* (measure: SpartitoMeasure): Generator {\n\tconst keys = new Set();\n\n\tconst origin = MeasureRectification.default(measure.events);\n\tkeys.add(origin.toString());\n\n\tyield origin;\n\n\tlet stale = 0;\n\tlet events = measure.events;\n\n\twhile (stale < 100) {\n\t\tif (stale && stale % 10 === 0) events = events.map(looseEvent);\n\n\t\tconst rectification = MeasureRectification.roll(events);\n\t\tconst key = rectification.toString();\n\n\t\tif (keys.has(key)) {\n\t\t\t++stale;\n\t\t\tcontinue;\n\t\t}\n\n\t\tstale = 0;\n\n\t\tkeys.add(key);\n\t\tyield rectification;\n\t}\n};\n\nexport { MeasureRectification, genMeasureRectifications };\n","import { WeakLRUCache } from 'weak-lru-cache';\n\nimport { RegulationSolution, SpartitoMeasure } from '../../src/starry';\n\nconst lruCache = new WeakLRUCache();\n\ninterface SolutionStore {\n\tget: (key: string) => Promise;\n\tset: (key: string, val: RegulationSolution) => Promise;\n\tbatchGet: (keys: string[]) => Promise;\n}\n\n// 默认store\nconst DefaultSolutionStore: SolutionStore = {\n\tasync get(key: string) {\n\t\treturn lruCache.getValue(key) as RegulationSolution;\n\t},\n\tasync set(key: string, val: RegulationSolution) {\n\t\tlruCache.setValue(key, val);\n\t},\n\tasync batchGet(keys: string[]) {\n\t\treturn keys.map((key) => lruCache.getValue(key) as RegulationSolution);\n\t},\n};\n\nconst enum MeasureStatus {\n\tDiscard = -1,\n\tSolved = 0,\n\tIssue = 1,\n\tFatal = 2,\n}\n\ninterface IssueMeasure {\n\tscoreId: string;\n\tmeasureIndex: number;\n\tmeasure: SpartitoMeasure;\n\tstatus: MeasureStatus;\n}\n\ntype SaveIssueMeasure = (data: Omit) => void;\n\nexport { SolutionStore, DefaultSolutionStore, MeasureStatus, IssueMeasure, SaveIssueMeasure };\n","import * as starry from '../../src/starry';\nimport { Logger } from './ZeroClient';\nimport { SolutionStore, DefaultSolutionStore, SaveIssueMeasure, MeasureStatus } from './store';\n\ninterface BeadRegulationCounting {\n\tcached: number;\n\tsimple: number;\n\tcomputed: number;\n\ttryTimes: number;\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\ninterface RegulationBeadStat {\n\ttotalCost: number; // in milliseconds\n\tpickerCost: number; // in milliseconds\n\tmeasures: BeadRegulationCounting;\n\tqualityScore: number;\n}\n\ninterface RegulationBeadSummary {\n\tscoreN: number;\n\n\ttotalCost: number; // in milliseconds\n\tpickerCost: number; // in milliseconds\n\tcostPerMeasure: number | null; // in milliseconds\n\tcostPerTime: number | null; // in milliseconds\n\n\tcached: number;\n\tsimple: number;\n\tcomputed: number;\n\ttryTimes: number;\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\ninterface ProgressInfo {\n\tpass: number;\n\tremaining: number;\n\ttotal: number;\n}\n\ninterface RegulateBeadOption {\n\tlogger?: Logger;\n\tpickers: starry.BeadPicker[];\n\tsolutionStore?: SolutionStore;\n\tignoreCache?: boolean;\n\tfreshOnly?: boolean;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n\tonProgress?: (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean, progress: ProgressInfo) => void;\n\tonPassStart?: (pass: number, conditionName: string, pendingCount: number) => void;\n}\n\ninterface MeasureReord {\n\torigin: starry.SpartitoMeasure;\n\tcurrent: starry.SpartitoMeasure;\n\tevaluation?: starry.MeasureEvaluation;\n\tbaseQuality: number;\n\tpicker: starry.BeadPicker;\n}\n\ninterface BeadSolverOptions {\n\tstopLoss: number;\n\tquotaMax: number;\n\tquotaFactor: number;\n\tptFactor: number;\n}\n\nenum PendingCondition {\n\tErrorOnly,\n\tNotFine,\n\tImperfect,\n}\n\nconst isPending = (evaluation: starry.MeasureEvaluation, condition: PendingCondition) => {\n\tswitch (condition) {\n\t\tcase PendingCondition.ErrorOnly:\n\t\t\treturn evaluation.error;\n\n\t\tcase PendingCondition.Imperfect:\n\t\t\treturn !evaluation.perfect;\n\t}\n\n\treturn !evaluation.fine;\n};\n\ntype OnUpdate = (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean) => void;\n\nconst solveMeasureRecords = async (\n\trecords: MeasureReord[],\n\tonUpdate: OnUpdate,\n\tstdout: NodeJS.WritableStream | null,\n\toptions: Partial,\n\tpendingCondition: PendingCondition = PendingCondition.NotFine,\n\tpass: number = 0,\n\tonProgress?: RegulateBeadOption['onProgress']\n): Promise => {\n\tconst pendingRecords = records.filter(({ evaluation }) => !evaluation || isPending(evaluation, pendingCondition));\n\tstdout?.write('.'.repeat(pendingRecords.length));\n\tstdout?.write('\\b'.repeat(pendingRecords.length));\n\n\tconst total = pendingRecords.length;\n\tlet done = 0;\n\n\tfor (const record of pendingRecords) {\n\t\tconst measure = record.current.deepCopy();\n\t\tmeasure.staffGroups = record.current.staffGroups;\n\n\t\tconst solution = await starry.beadSolver.solveMeasure(measure, { picker: record.picker, ...options });\n\t\tmeasure.applySolution(solution);\n\n\t\tconst evaluation = starry.evaluateMeasure(measure);\n\t\tconst better =\n\t\t\t!record.evaluation ||\n\t\t\tevaluation.fine > record.evaluation.fine ||\n\t\t\t(evaluation.qualityScore > record.evaluation.qualityScore && evaluation.fine === record.evaluation.fine);\n\t\tif (better) {\n\t\t\trecord.evaluation = evaluation;\n\t\t\tObject.assign(record.current, measure);\n\t\t}\n\n\t\tonUpdate(record.current, evaluation, better);\n\n\t\tdone++;\n\t\tonProgress?.(record.current, evaluation, better, { pass, remaining: total - done, total });\n\t}\n\n\tif (pendingRecords.length) stdout?.write('\\n');\n\n\treturn pendingRecords.length;\n};\n\nconst regulateWithBeadSolver = async (\n\tscore: starry.Score,\n\t{ logger, pickers, solutionStore = DefaultSolutionStore, ignoreCache, freshOnly, onSaveIssueMeasure, onProgress, onPassStart }: RegulateBeadOption\n): Promise => {\n\tscore.spartito = undefined;\n\tscore.assemble();\n\tconst spartito = score.makeSpartito();\n\n\tspartito.measures.forEach((measure) => score.assignBackgroundForMeasure(measure));\n\n\tconst t0 = Date.now();\n\tlogger?.info(`[regulateWithBeadSolver] begin, measure total: ${spartito.measures.length}.`, ignoreCache ? 'ignoreCache' : '', freshOnly ? 'freshOnly' : '');\n\n\tconst records = spartito.measures\n\t\t.filter((measure) => measure.events?.length && !measure.patched)\n\t\t.map(\n\t\t\t(measure) =>\n\t\t\t\t({\n\t\t\t\t\torigin: measure.deepCopy(),\n\t\t\t\t\tcurrent: measure,\n\t\t\t\t\tevaluation: undefined,\n\t\t\t\t\tbaseQuality: 0,\n\t\t\t\t} as MeasureReord)\n\t\t);\n\n\t// rectify time signature\n\tfor (const measure of spartito.measures.filter((measure) => measure.events?.length)) {\n\t\tconst picker = pickers.find((picker) => picker.n_seq > measure.events.length + 1);\n\t\tif (picker) await starry.beadSolver.estimateMeasure(measure, picker);\n\t}\n\tspartito.rectifyTimeSignatures(logger as any);\n\n\t// zero pickers' cost\n\tpickers.forEach((picker) => (picker.cost = 0));\n\n\tconst counting = {\n\t\tcached: 0,\n\t\tsimple: 0,\n\t\tcomputed: 0,\n\t\ttryTimes: 0,\n\t\tsolved: 0,\n\t\tissue: 0,\n\t\tfatal: 0,\n\t};\n\n\tlogger?.info(`[regulateWithBeadSolver] measures estimation finished.`);\n\n\t// apply solutions\n\tif (solutionStore && !ignoreCache)\n\t\tfor (const record of records) {\n\t\t\tconst solution = await solutionStore.get(record.origin.regulationHash0);\n\t\t\tif (solution) {\n\t\t\t\trecord.current.applySolution(solution);\n\t\t\t\t++counting.cached;\n\n\t\t\t\trecord.evaluation = starry.evaluateMeasure(record.current);\n\t\t\t\trecord.baseQuality = record.evaluation.qualityScore;\n\t\t\t}\n\t\t}\n\n\tlogger?.info('[regulateWithBeadSolver]', `${counting.cached}/${records.length}`, 'solutions loaded.');\n\n\tconst stdout = logger ? null : process.stdout;\n\tif (counting.cached) stdout?.write(`${counting.cached}c`);\n\n\trecords.forEach((record) => {\n\t\tconst picker = pickers.find((picker) => picker.n_seq > record.current.events.length + 1);\n\t\tif (!picker) {\n\t\t\tlogger?.info(`[regulateWithBeadSolver] measure[${record.current.measureIndex}] size out of range:`, record.current.events.length);\n\t\t} else record.picker = picker;\n\t});\n\n\tconst pendingRecords = records.filter((record) => record.picker && (!record.evaluation || (!record.evaluation.fine && !freshOnly))) as (MeasureReord & {\n\t\tevaluation: starry.MeasureEvaluation;\n\t})[];\n\n\t// solve by simple policy\n\tpendingRecords.forEach((record) => {\n\t\tconst measure = record.current.deepCopy();\n\t\tmeasure.staffGroups = record.current.staffGroups;\n\n\t\tmeasure.regulate({ policy: 'simple' });\n\n\t\tconst evaluation = starry.evaluateMeasure(measure);\n\t\tconst better = !record.evaluation || evaluation.qualityScore > record.evaluation.qualityScore;\n\t\tif (better) {\n\t\t\trecord.evaluation = evaluation;\n\t\t\tObject.assign(record.current, measure);\n\n\t\t\tif (evaluation.perfect) {\n\t\t\t\tlogger?.info(`[regulateWithBeadSolver] measure[${record.current.measureIndex}] regulated by simple policy.`);\n\t\t\t\t++counting.simple;\n\t\t\t}\n\t\t}\n\t});\n\tcounting.computed = pendingRecords.length - counting.simple;\n\n\tif (counting.simple) stdout?.write(`${counting.simple}s`);\n\n\tconst onUpdate = (measure, evaluation, better) => {\n\t\tlogger?.info(\n\t\t\t`[regulateWithBeadSolver] measure[${measure.measureIndex}/${spartito.measures.length}] regulated${\n\t\t\t\tbetter ? '+' : '-'\n\t\t\t}: ${evaluation.qualityScore.toFixed(3)}, ${evaluation.fine ? 'solved' : evaluation.error ? 'error' : 'issue'}, ${measure.regulationHash}`\n\t\t);\n\n\t\tstdout?.write(`\\x1b[${evaluation.fine ? '32' : evaluation.error ? '31' : '33'}m${better ? '+' : '-'}\\x1b[0m`);\n\t};\n\n\t// Global progress: total = all measures, remaining = non-fine measures across all passes\n\tconst totalMeasures = spartito.measures.length;\n\tconst computeRemaining = () => pendingRecords.filter((r) => !r.evaluation?.fine).length;\n\tconst wrappedOnProgress = onProgress\n\t\t? (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean, progress: ProgressInfo) => {\n\t\t\t\tonProgress(measure, evaluation, better, { pass: progress.pass, remaining: computeRemaining(), total: totalMeasures });\n\t\t }\n\t\t: undefined;\n\n\tonPassStart?.(1, 'Imperfect', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.05, quotaMax: 200, quotaFactor: 3, ptFactor: 1 },\n\t\tPendingCondition.Imperfect,\n\t\t1,\n\t\twrappedOnProgress\n\t);\n\tonPassStart?.(2, 'NotFine', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.08, quotaMax: 1000, quotaFactor: 20, ptFactor: 1.6 },\n\t\tPendingCondition.NotFine,\n\t\t2,\n\t\twrappedOnProgress\n\t);\n\tonPassStart?.(3, 'ErrorOnly', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.08, quotaMax: 1000, quotaFactor: 40, ptFactor: 3 },\n\t\tPendingCondition.ErrorOnly,\n\t\t3,\n\t\twrappedOnProgress\n\t);\n\n\tpendingRecords.forEach(({ evaluation, baseQuality, current, origin }) => {\n\t\tif (evaluation.fine) ++counting.solved;\n\t\telse if (evaluation.error) ++counting.fatal;\n\t\telse ++counting.issue;\n\n\t\tif (evaluation.qualityScore > baseQuality || !baseQuality) {\n\t\t\tsolutionStore.set(origin.regulationHash0, { ...current.asSolution(origin), priority: -current?.solutionStat?.loss! });\n\t\t\tif (current.regulationHash !== origin.regulationHash0)\n\t\t\t\tsolutionStore.set(current.regulationHash, { ...current.asSolution(), priority: -current?.solutionStat?.loss! });\n\t\t\t//console.log('better:', current.measureIndex, evaluation.qualityScore, baseQuality);\n\t\t}\n\n\t\tif (!evaluation.fine) {\n\t\t\tonSaveIssueMeasure?.({\n\t\t\t\tmeasureIndex: current.measureIndex,\n\t\t\t\tmeasure: new starry.EditableMeasure(current),\n\t\t\t\tstatus: evaluation.error ? MeasureStatus.Fatal : MeasureStatus.Issue,\n\t\t\t});\n\t\t}\n\t});\n\n\tconst t1 = Date.now();\n\tconst pickerCost = pickers.reduce((cost, picker) => cost + picker.cost, 0);\n\n\tconst qualityScore = spartito.qualityScore;\n\tconst totalCost = t1 - t0;\n\n\tlogger?.info('[regulateWithBeadSolver] done in ', totalCost, 'ms, qualityScore:', qualityScore);\n\n\t// zero 'cached' statistics for freshOnly mode\n\tif (freshOnly) counting.cached = 0;\n\n\treturn {\n\t\ttotalCost: t1 - t0,\n\t\tpickerCost,\n\t\tmeasures: counting,\n\t\tqualityScore,\n\t};\n};\n\nconst abstractRegulationBeadStats = (stats: RegulationBeadStat[]): RegulationBeadSummary => {\n\tconst { totalCost, pickerCost, measureN, timeN } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\ttotalCost: sum.totalCost + stat.totalCost,\n\t\t\tpickerCost: sum.pickerCost + stat.pickerCost,\n\t\t\tmeasureN: sum.measureN + stat.measures.computed,\n\t\t\ttimeN: sum.timeN + stat.measures.tryTimes,\n\t\t}),\n\t\t{\n\t\t\ttotalCost: 0,\n\t\t\tpickerCost: 0,\n\t\t\tmeasureN: 0,\n\t\t\ttimeN: 0,\n\t\t}\n\t);\n\n\tconst costPerMeasure = measureN > 0 ? totalCost / measureN : null;\n\tconst costPerTime = timeN > 0 ? totalCost / timeN : null;\n\n\tconst { cached, simple, computed, tryTimes, solved, issue, fatal } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tcached: sum.cached + stat.measures.cached,\n\t\t\tsimple: sum.simple + stat.measures.simple,\n\t\t\tcomputed: sum.computed + stat.measures.computed,\n\t\t\ttryTimes: sum.tryTimes + stat.measures.tryTimes,\n\t\t\tsolved: sum.solved + stat.measures.solved,\n\t\t\tissue: sum.issue + stat.measures.issue,\n\t\t\tfatal: sum.fatal + stat.measures.fatal,\n\t\t}),\n\t\t{ cached: 0, simple: 0, computed: 0, tryTimes: 0, solved: 0, issue: 0, fatal: 0 }\n\t);\n\n\treturn {\n\t\tscoreN: stats.length,\n\t\ttotalCost,\n\t\tpickerCost,\n\t\tcostPerMeasure,\n\t\tcostPerTime,\n\t\tcached,\n\t\tsimple,\n\t\tcomputed,\n\t\ttryTimes,\n\t\tsolved,\n\t\tissue,\n\t\tfatal,\n\t};\n};\n\nexport { regulateWithBeadSolver, abstractRegulationBeadStats, RegulationBeadStat, ProgressInfo };\n","import * as starry from '../../src/starry';\nimport { PyClients } from './predictors';\nimport { Logger } from './ZeroClient';\nimport { SpartitoMeasure, EditableMeasure, evaluateMeasure } from '../../src/starry';\nimport { EquationPolicy } from '../../src/starry/spartitoMeasure';\nimport { genMeasureRectifications } from '../../src/starry/measureRectification';\nimport { SolutionStore, DefaultSolutionStore, SaveIssueMeasure } from './store';\nexport * from './regulationBead';\n\nglobalThis.btoa = globalThis.btoa || ((str) => Buffer.from(str, 'binary').toString('base64'));\n\nconst RECTIFICATION_SEARCH_ITERATIONS = parseInt(process.env.RECTIFICATION_SEARCH_ITERATIONS || '30');\nconst BASE_QUOTA_FACTOR = parseInt(process.env.BASE_QUOTA_FACTOR || '40');\nconst RECTIFICATION_QUOTA_FACTOR = parseInt(process.env.RECTIFICATION_QUOTA_FACTOR || '80');\n\nconst MATRIXH_INTERPOLATION_K = 0.9;\n\ninterface SolveMeasureOptions {\n\tsolver?: (...args: any[]) => any;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n\tsolutionStore?: SolutionStore;\n\tignoreCache?: boolean;\n\tlogger?: Logger;\n}\n\nconst computeQuota = (n: number, factor: number, limit: number) =>\n\tMath.min(Math.ceil((n + 1) * factor * Math.log(n + 2)), Math.ceil(limit * Math.min(1, (24 / (n + 1)) ** 2)));\n\ninterface BaseRegulationStat {\n\tcached: number;\n\tcomputed: number;\n\tsolved: number;\n}\n\nasync function solveMeasures(\n\tmeasures: SpartitoMeasure[],\n\t{ solver, quotaMax = 1000, quotaFactor = BASE_QUOTA_FACTOR, solutionStore = DefaultSolutionStore, ignoreCache = false, logger }: SolveMeasureOptions = {}\n): Promise {\n\tlet cached = 0;\n\tlet solved = 0;\n\n\tlogger?.info(`[solveMeasures] begin, measure total: ${measures.length}.`);\n\n\tawait Promise.all(\n\t\tmeasures.map(async (measure) => {\n\t\t\tif (!ignoreCache) {\n\t\t\t\tconst solution = await solutionStore.get(measure.regulationHash);\n\t\t\t\tif (solution) {\n\t\t\t\t\tmeasure.applySolution(solution);\n\t\t\t\t\t++cached;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst quota = computeQuota(measure.events.length, quotaFactor, quotaMax);\n\n\t\t\tawait measure.regulate({\n\t\t\t\tpolicy: 'equations',\n\t\t\t\tquota,\n\t\t\t\tsolver,\n\t\t\t});\n\n\t\t\tconst stat = evaluateMeasure(measure);\n\t\t\tif (!stat.error) solutionStore.set(measure.regulationHash0, { ...measure.asSolution(), priority: -measure?.solutionStat?.loss! });\n\t\t\tif (stat.perfect) ++solved;\n\n\t\t\tlogger?.info(\n\t\t\t\t`[solveMeasures] measure[${measure.measureIndex}/${measures.length}] regulated: ${stat.perfect ? 'solved' : stat.error ? 'error' : 'issue'}, ${\n\t\t\t\t\tmeasure.regulationHash\n\t\t\t\t}`\n\t\t\t);\n\t\t})\n\t);\n\n\tlogger?.info(`[solveMeasures] ${cached}/${measures.length} cache hit, ${solved} solved.`);\n\n\treturn {\n\t\tcached,\n\t\tcomputed: measures.length - cached,\n\t\tsolved,\n\t};\n}\n\nconst solveMeasuresWithRectifications = async (\n\tmeasure: SpartitoMeasure,\n\t{ solver, quotaMax = 4000 }: SolveMeasureOptions\n): Promise => {\n\tlet best = evaluateMeasure(measure);\n\tlet bestSolution: starry.RegulationSolution = measure.asSolution();\n\tconst quota = computeQuota(measure.events.length, RECTIFICATION_QUOTA_FACTOR, quotaMax);\n\tlet n_rec = 0;\n\n\t// @ts-ignore\n\tfor (const rec of genMeasureRectifications(measure)) {\n\t\tconst solution = await EquationPolicy.regulateMeasureWithRectification(measure, rec, { solver, quota });\n\n\t\tconst testMeasure = measure.deepCopy() as SpartitoMeasure;\n\t\ttestMeasure.applySolution(solution);\n\t\tconst result = evaluateMeasure(testMeasure);\n\n\t\tif (\n\t\t\tresult.perfect > best.perfect ||\n\t\t\tresult.error < best.error ||\n\t\t\t(!result.error && result.perfect >= best.perfect && solution.priority! > bestSolution.priority!)\n\t\t) {\n\t\t\tbest = result;\n\t\t\tbestSolution = solution;\n\t\t}\n\n\t\tif (result.perfect) break;\n\n\t\t++n_rec;\n\t\tif (n_rec > RECTIFICATION_SEARCH_ITERATIONS) break;\n\t}\n\n\treturn bestSolution;\n};\n\ninterface RegulateWithTopoOption {\n\tsolutionStore: SolutionStore;\n\tpyClients: PyClients;\n\tsolver: (...args: any[]) => any;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n}\n\ninterface RegulateMaybeWithTopoOption {\n\tsolutionStore: SolutionStore;\n\tpyClients?: PyClients;\n\tsolver: (...args: any[]) => any;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n}\n\ninterface RegulateSimpleOption {\n\tsolutionStore: SolutionStore;\n\tsolver: (...args: any[]) => any;\n\tlogger?: Logger;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n}\n\ninterface TopoRegulationStat {\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\nasync function doRegulateWithTopo(\n\tscore: starry.Score,\n\t{ pyClients, solver, solutionStore = DefaultSolutionStore, onSaveIssueMeasure }: RegulateWithTopoOption\n): Promise {\n\tpyClients.logger.info(`[RegulateWithTopo] regulate score: ${score.title}, measures: ${score.spartito!.measures.length}`);\n\n\tconst issueMeasures = score.spartito!.measures.filter((measure) => {\n\t\tconst stat = evaluateMeasure(measure);\n\t\treturn !stat.perfect;\n\t});\n\tpyClients.logger.info(`[RegulateWithTopo] basic issues: ${issueMeasures.length}`);\n\n\tif (issueMeasures.length === 0) {\n\t\treturn {\n\t\t\tsolved: 0,\n\t\t\tissue: 0,\n\t\t\tfatal: 0,\n\t\t};\n\t}\n\n\tconst clusters = ([] as starry.EventCluster[]).concat(...issueMeasures.map((measure) => measure.createClusters()));\n\tconst results = await pyClients.predictScoreImages('topo', { clusters });\n\tconsole.assert(results.length === clusters.length, 'prediction number mismatch:', clusters.length, results.length);\n\n\tclusters.forEach((cluster, index) => {\n\t\tconst result = results[index];\n\t\tconsole.assert(result, 'no result for cluster:', cluster.index);\n\n\t\tcluster.assignPrediction(result);\n\t});\n\n\tissueMeasures.forEach((measure) => {\n\t\tconst cs = clusters.filter((c) => c.index === measure.measureIndex);\n\t\tmeasure.applyClusters(cs);\n\n\t\t// intepolate matrixH\n\t\tconst { matrixH } = EquationPolicy.estiamteMeasure(measure);\n\t\tmatrixH.forEach((row, i) =>\n\t\t\trow.forEach((v, j) => {\n\t\t\t\tmeasure.matrixH[i][j] = measure.matrixH[i][j] * MATRIXH_INTERPOLATION_K + v * (1 - MATRIXH_INTERPOLATION_K);\n\t\t\t})\n\t\t);\n\t});\n\n\tconst solvedIndices: number[] = [];\n\tconst errorIndices: number[] = [];\n\n\t// rectification search\n\tawait Promise.all(\n\t\tissueMeasures.map(async (measure) => {\n\t\t\tconst hash = measure.regulationHash0;\n\t\t\tconst solution = await solveMeasuresWithRectifications(measure, { solver });\n\t\t\tif (solution) {\n\t\t\t\tmeasure.applySolution(solution);\n\t\t\t\tsolutionStore.set(hash, solution);\n\t\t\t\tsolutionStore.set(measure.regulationHash, measure.asSolution());\n\t\t\t\tpyClients.logger.info(`[RegulateWithTopo] solutionStore set: ${measure.measureIndex}, ${hash}, ${measure.regulationHash}`);\n\t\t\t}\n\n\t\t\tconst stat = evaluateMeasure(measure);\n\t\t\tonSaveIssueMeasure?.({\n\t\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\t\tmeasure: new EditableMeasure(measure),\n\t\t\t\tstatus: stat.error ? 2 : 1,\n\t\t\t});\n\t\t\tif (stat.perfect) solvedIndices.push(measure.measureIndex);\n\t\t\telse if (stat.error) errorIndices.push(measure.measureIndex);\n\t\t})\n\t);\n\n\tconst n_issues = issueMeasures.length - solvedIndices.length - errorIndices.length;\n\tpyClients.logger.info(`[RegulateWithTopo] score: ${score.title}, solved/issue/fatal: ${solvedIndices.length}/${n_issues}/${errorIndices.length}`);\n\tif (solvedIndices.length) pyClients.logger.info(`[RegulateWithTopo] solved measures: ${solvedIndices.join(', ')}`);\n\tif (errorIndices.length) pyClients.logger.info(`[RegulateWithTopo] error measures: ${errorIndices.join(', ')}`);\n\n\treturn {\n\t\tsolved: solvedIndices.length,\n\t\tissue: n_issues,\n\t\tfatal: errorIndices.length,\n\t};\n}\n\ninterface RegulationStat {\n\tbaseCost: number; // in milliseconds\n\ttopoCost: number; // in milliseconds\n\tbaseMeasures: BaseRegulationStat;\n\ttopoMeasures?: TopoRegulationStat;\n\tqualityScore: number;\n}\n\nconst doRegulate = async (\n\tscore: starry.Score,\n\t{ pyClients, solver, solutionStore = DefaultSolutionStore, onSaveIssueMeasure }: RegulateMaybeWithTopoOption\n): Promise => {\n\tpyClients?.logger?.info(`[doRegulate] score: ${score.title}`);\n\n\tscore.spartito = undefined;\n\tscore.assemble();\n\tconst spartito = score.makeSpartito();\n\n\tspartito.measures.forEach((measure) => score.assignBackgroundForMeasure(measure));\n\n\tconst t0 = Date.now();\n\n\tconst baseMeasures = await solveMeasures(spartito.measures, { solver, quotaMax: 1000, solutionStore, logger: pyClients?.logger });\n\n\tconst t1 = Date.now();\n\n\tconst topoMeasures = pyClients ? await doRegulateWithTopo(score, { pyClients, solver, solutionStore, onSaveIssueMeasure }) : undefined;\n\n\tconst t2 = Date.now();\n\n\treturn {\n\t\tbaseCost: t1 - t0,\n\t\ttopoCost: t2 - t1,\n\t\tbaseMeasures,\n\t\ttopoMeasures,\n\t\tqualityScore: spartito.qualityScore,\n\t};\n};\n\nconst doSimpleRegulate = async (\n\tscore: starry.Score,\n\t{ solver, solutionStore = DefaultSolutionStore, logger, quotaMax = 240, quotaFactor = 16 }: RegulateSimpleOption\n): Promise => {\n\tscore.assemble();\n\tconst spartito = score.spartito || score.makeSpartito();\n\tconst measures = spartito.measures.filter((measure) => !measure.regulated);\n\n\tawait solveMeasures(measures, { solver, quotaMax, quotaFactor, solutionStore, logger });\n\n\tconsole.assert(score.spartito?.regulated, 'doSimpleRegulate: regulation incomplete:', spartito.measures.filter((measure) => !measure.regulated).length);\n};\n\nconst evaluateScoreQuality = async (score: starry.Score, options: RegulateSimpleOption): Promise => {\n\tif (!score.spartito?.regulated) await doSimpleRegulate(score, options);\n\n\treturn score.spartito!.regulated ? score.spartito!.qualityScore : null;\n};\n\ninterface RegulationSummary {\n\tscoreN: number;\n\n\tbaseCostTotal: number; // in milliseconds\n\ttopoCostTotal: number; // in milliseconds\n\tbaseCostPerMeasure: number | null; // in milliseconds\n\ttopoCostPerMeasure: number | null; // in milliseconds\n\n\tcached: number;\n\tbaseComputed: number;\n\tbaseSolved: number;\n\ttopoSolved: number;\n\ttopoIssue: number;\n\ttopoFatal: number;\n}\n\nconst abstractRegulationStats = (stats: RegulationStat[]): RegulationSummary => {\n\tconst { baseCostTotal, topoCostTotal, baseMeasures, topoMeasures } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tbaseCostTotal: sum.baseCostTotal + stat.baseCost,\n\t\t\ttopoCostTotal: sum.topoCostTotal + stat.topoCost,\n\t\t\tbaseMeasures: sum.baseMeasures + stat.baseMeasures.computed,\n\t\t\ttopoMeasures: sum.topoMeasures + (stat.topoMeasures!.solved + stat.topoMeasures!.issue + stat.topoMeasures!.fatal),\n\t\t}),\n\t\t{\n\t\t\tbaseCostTotal: 0,\n\t\t\ttopoCostTotal: 0,\n\t\t\tbaseMeasures: 0,\n\t\t\ttopoMeasures: 0,\n\t\t}\n\t);\n\n\tconst baseCostPerMeasure = baseMeasures > 0 ? baseCostTotal / baseMeasures : null;\n\tconst topoCostPerMeasure = topoMeasures > 0 ? topoCostTotal / topoMeasures : null;\n\n\tconst { cached, baseComputed, baseSolved, topoSolved, topoIssue, topoFatal } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tcached: sum.cached + stat.baseMeasures.cached,\n\t\t\tbaseComputed: sum.baseComputed + stat.baseMeasures.computed,\n\t\t\tbaseSolved: sum.baseSolved + stat.baseMeasures.solved,\n\t\t\ttopoSolved: sum.topoSolved + stat.topoMeasures!.solved,\n\t\t\ttopoIssue: sum.topoIssue + stat.topoMeasures!.issue,\n\t\t\ttopoFatal: sum.topoFatal + stat.topoMeasures!.fatal,\n\t\t}),\n\t\t{ cached: 0, baseComputed: 0, baseSolved: 0, topoSolved: 0, topoIssue: 0, topoFatal: 0 }\n\t);\n\n\treturn {\n\t\tscoreN: stats.length,\n\t\tbaseCostTotal,\n\t\ttopoCostTotal,\n\t\tbaseCostPerMeasure,\n\t\ttopoCostPerMeasure,\n\t\tcached,\n\t\tbaseComputed,\n\t\tbaseSolved,\n\t\ttopoSolved,\n\t\ttopoIssue,\n\t\ttopoFatal,\n\t};\n};\n\nexport { doRegulate, doSimpleRegulate, evaluateScoreQuality, abstractRegulationStats };\n","import SparkMD5 from 'spark-md5';\n//import JSZip from 'jszip';\nimport * as starry from '../../src/starry';\n//import { encodeFindResource } from '../../src/isomorphic/converter';\nimport sharp, { FormatEnum } from 'sharp';\nimport got from 'got';\n//import { Logger } from './ZeroClient';\nimport type { SolutionStore, SaveIssueMeasure } from './store';\nimport { ScoreJSON } from '../../src/isomorphic/types';\n\nconst SYSTEM_MARGIN = 4;\n\nexport const constructSystem = ({ page, backgroundImage, detection, imageSize, position }) => {\n\tconst systemWidth = (detection.phi2 - detection.phi1) / detection.interval;\n\tconst systemHeight = imageSize.height / detection.interval;\n\n\tconst lastSystem = page.systems[page.systems.length - 1];\n\tconst top = position ? position.y : (lastSystem ? lastSystem.top + lastSystem.height : 0) + SYSTEM_MARGIN;\n\tconst left = position ? position.x : SYSTEM_MARGIN;\n\n\tconst stavesTops = [\n\t\t0,\n\t\t...Array(detection.middleRhos.length - 1)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => (detection.middleRhos[i] + detection.middleRhos[i + 1]) / 2 / detection.interval),\n\t];\n\n\tconst measureBars = [systemWidth];\n\n\tconst staves = stavesTops.map(\n\t\t(top, i) =>\n\t\t\tnew starry.Staff({\n\t\t\t\ttop,\n\t\t\t\theight: (stavesTops[i + 1] || systemHeight) - top,\n\t\t\t\tstaffY: detection.middleRhos[i] / detection.interval - top,\n\t\t\t\tmeasureBars,\n\t\t\t})\n\t);\n\n\t//console.log(\"detection:\", detection, options, stavesTops);\n\n\tconst imagePosition = {\n\t\tx: -detection.phi1 / detection.interval,\n\t\ty: 0,\n\t\twidth: imageSize.width / detection.interval,\n\t\theight: imageSize.height / detection.interval,\n\t};\n\n\treturn new starry.System({\n\t\tstaves,\n\t\tleft,\n\t\ttop,\n\t\twidth: systemWidth,\n\t\tbackgroundImage,\n\t\timagePosition,\n\t\tmeasureBars,\n\t});\n};\n\nexport interface ConvertOption {\n\tformat?: keyof FormatEnum;\n\tquality?: number;\n\tmaxHeight?: number;\n}\n\nconst toBuffer = async (url: string | Buffer): Promise => {\n\tif (typeof url === 'string') {\n\t\tif (/^https?:\\/\\//.test(url)) {\n\t\t\treturn (await got(url, { responseType: 'buffer', decompress: true, https: { rejectUnauthorized: false } })).body;\n\t\t}\n\n\t\tif (/^data:image\\//.test(url)) {\n\t\t\treturn Buffer.from(url.split(',')[1], 'base64');\n\t\t}\n\n\t\treturn Buffer.from(url);\n\t}\n\n\treturn url;\n};\n\n/**\n * 转换图片格式,默认webp、最大高度1080,高度小于1080自动不做尺寸变换\n * @param url\n * @param format\n * @param maxHeight\n * @param quality\n */\nexport async function convertImage(url: string | Buffer, { format = 'webp', maxHeight = 1080, quality = 80 }: ConvertOption = {}) {\n\tlet buf = await toBuffer(url);\n\n\tconst webpBuffer = await new Promise((resolve) => {\n\t\tsharp(buf)\n\t\t\t.resize({\n\t\t\t\twidth: maxHeight,\n\t\t\t\theight: maxHeight,\n\t\t\t\tfit: 'inside',\n\t\t\t\twithoutEnlargement: true,\n\t\t\t})\n\t\t\t.toFormat(format, { quality })\n\t\t\t.toBuffer((err, buf) => {\n\t\t\t\tresolve(buf);\n\t\t\t});\n\t});\n\n\tconst md5 = SparkMD5.ArrayBuffer.hash(webpBuffer);\n\n\treturn {\n\t\tbuffer: webpBuffer,\n\t\tfilename: `${md5}.${format}`,\n\t};\n}\n\n/**\n * 替换scoreJson图片地址\n * @param scoreJson\n * @param onReplaceImage\n */\nexport const replaceScoreJsonImages = (scoreJson: ScoreJSON, onReplaceImage: (src: string) => string = (src) => src) => {\n\tconst json = JSON.parse(JSON.stringify(scoreJson));\n\n\tjson.pages.forEach((page) => {\n\t\tpage?.src && (page.src = onReplaceImage(page?.src));\n\t});\n\n\tjson.lines.forEach((system) => {\n\t\tsystem.lineStaves.forEach((line) => {\n\t\t\tline.imgs.forEach((staff) => {\n\t\t\t\tstaff?.src && (staff.src = onReplaceImage(staff.src));\n\t\t\t});\n\t\t});\n\t});\n\n\treturn json;\n};\n\n/**\n * 获取scoreJson图片资源列表\n * @param scoreJson\n */\nexport const getScoreJsonImages = (scoreJson: ScoreJSON) => {\n\treturn [\n\t\t...scoreJson.pages.map((page) => page?.src),\n\t\t...scoreJson.lines\n\t\t\t.map((system) => system.lineStaves.map((staff) => staff.imgs))\n\t\t\t.flat(2)\n\t\t\t.map((staff) => staff?.src)\n\t\t\t.filter(Boolean),\n\t];\n};\n\ninterface ScorePatchesUpdateOptions {\n\tsolutionStore?: SolutionStore;\n}\n\nexport const updateScorePatches = (score: starry.Score, measures: starry.SpartitoMeasure[], options: ScorePatchesUpdateOptions = {}): void => {\n\tconsole.assert(\n\t\tmeasures.every((measure) => measure.validRegulated),\n\t\t'[updateScorePatches] some measures not valid regulated:',\n\t\tmeasures.filter((measure) => !measure.validRegulated)\n\t);\n\n\tscore.patches = measures.map((measure) => measure.createPatch());\n\n\tif (options?.solutionStore) {\n\t\tscore.assemble();\n\t\tconst spartito = score.makeSpartito();\n\n\t\tmeasures.forEach((measure) => {\n\t\t\toptions.solutionStore!.set(measure.regulationHash, { ...measure.asSolution(), priority: 1 });\n\t\t\tif (measure.regulationHash0 !== measure.regulationHash) {\n\t\t\t\tconst originMeasure = spartito.measures.find((m) => m.measureIndex === measure.measureIndex);\n\t\t\t\toptions.solutionStore!.set(measure.regulationHash0, { ...measure.asSolution(originMeasure), priority: 1 });\n\t\t\t}\n\t\t});\n\t}\n};\n\ninterface EditableMeasuresSaveOptions {\n\tstatus?: number;\n\tsolutionStore?: SolutionStore;\n}\n\nexport const saveEditableMeasures = async (\n\tscore: starry.Score,\n\tmeasureIndices: number[],\n\tsaveMeasure: SaveIssueMeasure,\n\t{ status = 2, solutionStore }: EditableMeasuresSaveOptions = {}\n): Promise => {\n\tscore.assemble();\n\tconst spartito = score.spartito || score.makeSpartito();\n\n\tconst measures = measureIndices\n\t\t.map((index) => spartito.measures.find((measure) => measure.measureIndex === index))\n\t\t.filter(Boolean) as starry.SpartitoMeasure[];\n\n\tif (solutionStore) {\n\t\tconst solutions = await solutionStore.batchGet(measures.map((measure) => measure.regulationHash0));\n\t\tmeasures.forEach((measure, i) => {\n\t\t\tconst solution = solutions[i];\n\t\t\tif (solution) measure.applySolution(solution);\n\t\t});\n\t}\n\n\tmeasures.forEach((measure) => {\n\t\tsaveMeasure({\n\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\tmeasure: new starry.EditableMeasure(measure),\n\t\t\tstatus,\n\t\t});\n\t});\n};\n","console.info(`%cstarry-omr%c v1.0.0 2026-02-20T12:54:09.091Z`, 'color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;', 'color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;');\nimport '../../libs/browserComponents';\n\nexport * from '../../libs/predictors';\nexport * from '../../libs/regulation';\nexport * from '../../libs/util';\nexport * as starry from '../../../src/starry';\n"],"names":["eventsModule","events","EventEmitter","Request","pack","unpack","getPortPromise","defaultsDeep","PythonShell","inherits_browserModule","inheritsModule","require$$0","require$$1","util","getPort","sha1","pick","parser","parse","parseCode","grammar","GROUP_N_TO_PITCH","MIDDLE_C","mod7","argmax","Token.TokenClefs","Token.TokenOctshifts","Token.TokenTimesigsC","Token.TokenTimesigsN","MIDI","MidiSequence","Notation","MusicNotation","MidiPlayer","Config","Node","Navigator","Matcher","MidiUtils","require$$2","require$$3","require$$4","undefined","require","EquationSolver.Solver","erf","staffLayout.parseCode","measureLayout.parseCode","WeakLRUCache","starry.beadSolver.solveMeasure","starry.evaluateMeasure","starry.beadSolver.estimateMeasure","starry.EditableMeasure","starry.Staff","starry.System","got","sharp","SparkMD5"],"mappings":"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AAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACnJ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACxG,YAAA,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACnJ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACf,YAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7F,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;YACtD,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACd,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACd,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACd,YAAA,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACb,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;YACtD,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;YACtD,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC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"} \ No newline at end of file +{"version":3,"file":"regulator.js","sources":["../../libs/browserComponents.ts","../../../node_modules/events/events.js","../../libs/async-queue.ts","../../libs/ZeroClient.ts","../../libs/PyProcessor.ts","../../../node_modules/util/support/isBuffer.js","../../../node_modules/util/node_modules/inherits/inherits_browser.js","../../../node_modules/util/node_modules/inherits/inherits.js","../../../node_modules/util/util.js","../../libs/predictors.ts","../../../src/starry/interfaces.ts","../../../src/starry/semanticPoint.ts","../../../src/starry/token.ts","../../../src/starry/aux_/typedJSON.ts","../../../src/measureLayout/measureLayout.ts","../../../src/measureLayout/grammar.jison.js","../../../src/measureLayout/parser.ts","../../../src/staffLayout/staffLayout.ts","../../../src/staffLayout/grammar.jison.js","../../../src/staffLayout/parser.ts","../../../src/starry/logger.ts","../../../src/starry/utils.ts","../../../src/starry/term.ts","../../../src/starry/measureEvaluator.ts","../../../src/starry/semanticGraph.ts","../../../src/starry/scoreComponents.ts","../../../src/starry/semanticTopology.ts","../../../src/performer/types.ts","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/stream.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/midifile.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/streamEx.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/midifileEx.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MIDI/index.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiSequence.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MusicNotation.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiPlayer.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/config.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/node.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/navigator.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/Matcher/index.js","../../../node_modules/@k-l-lambda/music-widgets/source/inc/MidiUtils.js","../../../node_modules/@k-l-lambda/music-widgets/index.js","../../../src/performer/notation.ts","../../../node_modules/crypto-js/core.js","../../../node_modules/crypto-js/sha256.js","../../../src/starry/hashVector.ts","../../../node_modules/matrix-inverse/matrix-inverse.js","../../../src/starry/equationSolver.ts","../../../src/starry/eventTopology.ts","../../../src/starry/patch.ts","../../../src/starry/spartitoMeasure.ts","../../../src/starry/spartito.ts","../../../src/starry/staffContext.ts","../../../src/starry/score.ts","../../../src/starry/editableMeasure.ts","../../../src/starry/beadSolver.ts","../../../src/starry/measureRectification.ts","../../libs/store.ts","../../libs/regulationBead.ts","../../libs/regulation.ts","../../libs/util.ts","../src/regulator.ts"],"sourcesContent":["globalThis.btoa = (str) => Buffer.from(str, 'binary').toString('base64');\nglobalThis.atob = (str) => Buffer.from(str, 'base64').toString('binary');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","import { EventEmitter } from 'events';\n\ninterface DSPromiseOption {\n\ttimeout?: number;\n}\n\nexport function destructPromise(\n\toptions: DSPromiseOption = {}\n): [promise: Promise, resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void] {\n\tconst { timeout } = options;\n\tlet rs: (value: T | PromiseLike) => void;\n\tlet rj: (reason: any) => void;\n\n\treturn [\n\t\tnew Promise((resolve, reject) => {\n\t\t\trs = resolve;\n\t\t\trj = reject;\n\n\t\t\tif (timeout >= 0) setTimeout(rj, timeout, 'timeout');\n\t\t}),\n\t\trs,\n\t\trj,\n\t];\n}\n\ntype AsyncTask = [fn: (data: any) => Promise, payload: any, resolve: (data: any) => void, reject: (reason: any) => void];\n\nexport class AsyncQueue extends EventEmitter {\n\tprivate working = false;\n\n\ttasks: AsyncTask[];\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.working = false;\n\t\tthis.tasks = [];\n\t\tprocess.nextTick(() => {\n\t\t\tthis.emit('idle');\n\t\t});\n\t}\n\n\tprivate async _digest(item: AsyncTask) {\n\t\tthis.working = true;\n\n\t\tconst [taskFn, payload, resolve, reject] = item;\n\t\tawait taskFn(payload).then(resolve, reject);\n\n\t\tif (this.tasks.length > 0) {\n\t\t\tawait this._digest(this.tasks.shift());\n\t\t} else {\n\t\t\tthis.working = false;\n\t\t\tthis.emit('idle');\n\t\t}\n\t}\n\n\t/**\n\t * 添加队列任务\n\t * @param task\n\t * @param options\n\t */\n\taddTask(task: [AsyncTask[0], AsyncTask[1]], { timeout = 600000 }: { timeout?: number } = {}): Promise {\n\t\tconst [promise, resolve, reject] = destructPromise({ timeout });\n\n\t\tif (this.working) {\n\t\t\tthis.tasks.push([...task, resolve, reject]);\n\t\t} else {\n\t\t\tthis._digest([...task, resolve, reject]);\n\t\t}\n\n\t\treturn promise;\n\t}\n}\n","import { pack, unpack } from 'msgpackr';\nimport { Request } from 'zeromq';\nimport { AsyncQueue } from './async-queue';\n\ninterface Response {\n\tcode: number;\n\tmsg: string;\n\tdata?: any;\n}\n\nexport interface Logger {\n\tinfo: (...data: any[]) => void;\n\terror: (...data: any[]) => void;\n}\n\ntype PyArgs = any[];\ntype PyKwargs = Record;\n\nexport default class ZeroClient {\n\tlogger: Logger;\n\tprivate socket: Request;\n\tprivate queue: AsyncQueue = new AsyncQueue();\n\n\tprivate url: string;\n\n\tconstructor(logger: Logger = console) {\n\t\tthis.logger = logger;\n\t}\n\n\tbind(url?: string) {\n\t\turl && (this.url = url);\n\t\tthis.socket = new Request({\n\t\t\tsendTimeout: 15e3,\n\t\t\treceiveTimeout: 300e3,\n\t\t});\n\n\t\tthis.socket.connect(this.url);\n\t}\n\n\tprivate __request(payload) {\n\t\tlet retryTimes = 0;\n\n\t\tconst req = async (data) => {\n\t\t\ttry {\n\t\t\t\tif (this.socket.closed) this.bind();\n\t\t\t\treturn await this.socket.send(pack(data)).then(() => this.socket.receive());\n\t\t\t} catch (err) {\n\t\t\t\tif (retryTimes < 2) {\n\t\t\t\t\tretryTimes++;\n\t\t\t\t\tconsole.log(`请求失败,${err.stack}`);\n\t\t\t\t\tconsole.error(`3s后重试第${retryTimes}次`);\n\t\t\t\t\tthis.socket.close();\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 3000));\n\t\t\t\t\treturn req(data);\n\t\t\t\t} else {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treturn req(payload);\n\t}\n\n\tasync request(method: string, args: PyArgs | PyKwargs = null, kwargs: PyKwargs = null): Promise {\n\t\tconst [args_, kwargs_] = Array.isArray(args) ? [args, kwargs] : [undefined, args];\n\t\tconst msg: any = { method };\n\t\tif (args_) msg.args = args_;\n\t\tif (kwargs_) msg.kwargs = kwargs_;\n\n\t\treturn this.queue.addTask([\n\t\t\tasync (opt) => {\n\t\t\t\tconst [result] = await this.__request(opt);\n\n\t\t\t\tconst obj = unpack(result) as Response;\n\n\t\t\t\tif (obj.code === 0) {\n\t\t\t\t\treturn obj.data;\n\t\t\t\t} else {\n\t\t\t\t\treturn Promise.reject(obj.msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\tmsg,\n\t\t]);\n\t}\n}\n","import { getPortPromise } from 'portfinder';\nimport { Options, PythonShell } from 'python-shell';\nimport { defaultsDeep } from 'lodash';\nimport ZeroClient, { Logger } from './ZeroClient';\n\nexport default class PyProcessor extends ZeroClient {\n\tprivate readonly scriptPath: string;\n\tprivate readonly options: Options;\n\tprivate pyShell: PythonShell;\n\n\tprivate retryCount: number = 0;\n\tprivate retryDelay: number = 3000;\n\n\tconstructor(scriptPath: string, options: Options = {}, logger: Logger = console) {\n\t\tsuper(logger);\n\t\tthis.scriptPath = scriptPath;\n\t\tthis.options = options;\n\t}\n\n\tasync bind(port?: string | number) {\n\t\tconst freePort =\n\t\t\tport ||\n\t\t\t(await getPortPromise({\n\t\t\t\tport: 12022,\n\t\t\t\tstopPort: 12122,\n\t\t\t}));\n\n\t\t// \"./streamPredictor.py\", \"--inspect\"\n\t\tconst options = defaultsDeep(\n\t\t\t{\n\t\t\t\targs: [...(this.options.args || []), '-p', `${freePort}`],\n\t\t\t},\n\t\t\tthis.options\n\t\t);\n\n\t\tthis.logger.info(`[python-shell]: starting python shell. path: ${this.scriptPath}`);\n\n\t\tthis.pyShell = new PythonShell(this.scriptPath, options);\n\n\t\tthis.pyShell.stdout.on('data', (data) => this.logger.info(data));\n\n\t\tthis.pyShell.on('pythonError', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} pythonError:`, err));\n\t\tthis.pyShell.on('stderr', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} stderr:`, err));\n\t\tthis.pyShell.on('error', (err) => this.logger.error(`[python-shell]: ${this.scriptPath} error:`, err));\n\t\tthis.pyShell.on('close', () => {\n\t\t\t// python子进程关闭事件\n\t\t\tif (this.retryCount < 5) {\n\t\t\t\tthis.retryCount++;\n\t\t\t\tthis.logger.info(`[python-shell]: ${this.scriptPath} will retry ${this.retryCount}th time after 3 seconds`);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.bind();\n\t\t\t\t}, this.retryDelay);\n\t\t\t}\n\t\t});\n\n\t\tsuper.bind(`tcp://127.0.0.1:${freePort}`);\n\t}\n}\n","module.exports = function isBuffer(arg) {\n return arg instanceof Buffer;\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","try {\n var util = require('util');\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n module.exports = require('./inherits_browser.js');\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","import ZeroClient, { Logger } from './ZeroClient';\nimport * as starry from '../../src/starry';\nimport PyProcessor from './PyProcessor';\nimport { destructPromise } from './async-queue';\nimport { getPort } from 'portfinder';\nimport util from 'util';\nimport { Options } from 'python-shell';\n\nconst getPortPromise = util.promisify(getPort);\n\nexport interface LayoutResult {\n\tdetection: starry.PageLayout;\n\ttheta: number;\n\tinterval: number;\n\tsourceSize?: {\n\t\twidth: number;\n\t\theight: number;\n\t};\n}\n\nexport interface PredictorInterface {\n\tlayout: (streams: Buffer[]) => LayoutResult[];\n\tlayout$reinforce: (streams: Buffer[], baseLayouts: LayoutResult[]) => LayoutResult[];\n\tgauge: (streams: Buffer[]) => {\n\t\timage: Buffer;\n\t}[];\n\tmask: (streams: Buffer[]) => {\n\t\timage: Buffer;\n\t}[];\n\tsemantic: (streams: Buffer[]) => any[];\n\ttextLoc: (streams: Buffer[]) => any[];\n\ttextOcr: (params: { buffers: Buffer[]; location: any[] }) => any[];\n\tbrackets: (params: { buffers: Buffer[] }) => any[];\n\ttopo: (params: { clusters: starry.EventCluster[] }) => any[];\n\tgaugeRenderer: (params: [Buffer, Buffer, number]) => { buffer: Buffer; size: { width: number; height: number } };\n\tjianpu: (params: { buffers: Buffer[] }) => any[];\n\t// [source: Buffer, gauge: Buffer, baseY: number]\n}\n\ntype PredictorType = keyof PredictorInterface;\n\nexport type PyClientsConstructOptions = Partial>;\n\nexport class PyClients {\n\tclients = new Map>();\n\n\tconstructor(public readonly options: PyClientsConstructOptions, public readonly logger: Logger = console) {}\n\n\tasync getClient(type: PredictorType) {\n\t\tif (this.clients.has(type)) {\n\t\t\treturn this.clients.get(type);\n\t\t}\n\n\t\tconst [promise, resolve, reject] = destructPromise();\n\n\t\tconst opt = this.options[type];\n\n\t\tif (!opt) {\n\t\t\tthrow new Error(`no config for client \\`${type}\\` found`);\n\t\t}\n\n\t\ttry {\n\t\t\tif (typeof opt === 'string') {\n\t\t\t\tconst client = new ZeroClient();\n\t\t\t\tclient.bind(opt);\n\t\t\t\tresolve(client);\n\t\t\t} else {\n\t\t\t\tconst { scriptPath, ...option } = opt;\n\t\t\t\tconst client = new PyProcessor(scriptPath, option, this.logger);\n\t\t\t\tawait client.bind(`${await getPortPromise()}`);\n\t\t\t\tresolve(client);\n\t\t\t}\n\n\t\t\tthis.logger.info(`PyClients: ${type} started`);\n\t\t} catch (err) {\n\t\t\tthis.logger.error(`PyClients: ${type} start fail: ${JSON.stringify(err)}`);\n\t\t\treject(err);\n\t\t}\n\n\t\tthis.clients.set(type, promise);\n\n\t\treturn promise;\n\t}\n\n\tasync checkHost(type: PredictorType): Promise {\n\t\tconst client = await this.getClient(type);\n\n\t\treturn client.request('checkHost');\n\t}\n\n\tasync warmup() {\n\t\tconst opts = Object.keys(this.options) as PredictorType[];\n\t\tawait Promise.all(opts.map((type) => this.getClient(type)));\n\t}\n\n\t/**\n\t * 模型预测\n\t * @param type layout | mask | gauge | semantic\n\t * @param args\n\t */\n\tasync predictScoreImages(type: T, ...args: Parameters): Promise> {\n\t\tconst clientType = type.split('$')[0] as PredictorType;\n\t\tconst client = await this.getClient(clientType);\n\t\tlet res = null;\n\n\t\tthis.logger.info(`[predictor]: ${type} py start..`);\n\t\tconst start = Date.now();\n\n\t\tswitch (type) {\n\t\t\tcase 'layout':\n\t\t\t\tres = await client.request('predictDetection', args);\n\t\t\t\tbreak;\n\t\t\tcase 'layout$reinforce':\n\t\t\t\tres = await client.request('predictReinforce', args);\n\t\t\t\tbreak;\n\t\t\tcase 'gauge':\n\t\t\tcase 'mask':\n\t\t\t\tres = await client.request('predict', args, { by_buffer: true });\n\t\t\t\tbreak;\n\t\t\tcase 'semantic':\n\t\t\tcase 'textLoc':\n\t\t\t\tres = await client.request('predict', args);\n\t\t\t\tbreak;\n\t\t\tcase 'textOcr':\n\t\t\tcase 'brackets':\n\t\t\tcase 'topo':\n\t\t\tcase 'gaugeRenderer':\n\t\t\tcase 'jianpu':\n\t\t\t\tres = await client.request('predict', ...args);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.logger.error(`[predictor]: no predictor ${type}`);\n\t\t}\n\n\t\tthis.logger.info(`[predictor]: ${type} py duration: ${Date.now() - start}ms`);\n\n\t\treturn res;\n\t}\n}\n","import { MetaNotation, TokenPosition } from '../performer';\nimport { Term, EventTerm, ContextedTerm, ChordmodeTerm, MarkTerm, Accessory, GraceType, TremoloLink } from './term';\nimport { HashVector } from './hashVector';\nimport { StaffLayout } from '../staffLayout';\nimport * as measureLayout from '../measureLayout';\n\ninterface Rect {\n\tx: number;\n\ty: number;\n\twidth: number;\n\theight: number;\n}\n\ninterface ChordRect {\n\tx: number;\n\tstemX: number;\n\twidth: number;\n\ttop: number;\n\tbottom: number;\n\tstemDirection: string;\n\ttip?: { x: number; y: number };\n}\n\ninterface VLine {\n\tx: number;\n\ty1: number;\n\ty2: number;\n}\n\ninterface Fraction {\n\tnumerator: number;\n\tdenominator: number;\n}\n\ntype DivisionVecotor = [number, number, number, number, number, number, number, number, number]; // [0, 1, 2, 3, 4, 5, 6, 7, 8]\n\ntype MeasureBarType = null | 'Terminal' | 'Segment' | 'VoltaRight';\n\ninterface EventFeature {\n\tdivisions: DivisionVecotor;\n\tdots: [number, number]; // [1, 2]\n\tbeams: [number, number, number]; // ['Open', 'Continue', 'Close']\n\tstemDirections: [number, number]; // ['u', 'd']\n\tgrace: number;\n\ttremoloCatcher: number;\n}\n\ninterface EventPredisposition {\n\tgrace: boolean;\n\ttimeWarped: number;\n\tfullMeasure: number;\n\tfake: number;\n\tfakeP: number;\n\ttick: number;\n\tdivision: number;\n\tdots: number;\n\tdivisionVector: DivisionVecotor;\n\tdotsVector: [number, number, number]; // [0, 1, 2]\n\tbeamVector: [number, number, number, number]; // [null, open, continue, close]\n\tstemDirectionVector: [number, number, number]; // [null, up, down]\n}\n\ninterface ChordColumn {\n\tleft: number;\n\tright: number;\n\tpivotX: number;\n\tys: number[];\n\tnoteIds: string[]; // order by upwards\n\tdivision: number;\n\tdots: number;\n\trest: boolean;\n\tstemDirection: string;\n\taccessories?: Accessory[];\n\tgrace?: GraceType;\n\ttremolo?: number;\n\ttremoloLink?: TremoloLink;\n\tbeam?: string;\n\ttip?: { x: number; y: number };\n\n\t//stemTipY?: number;\n\n\t// for topology\n\tstaff?: number;\n\tid?: number;\n\tprevId?: number;\n\ttickGroup?: number;\n\n\tfeature?: EventFeature;\n}\n\ninterface EventMeasure {\n\tevents: EventTerm[];\n\tcontexts: ContextedTerm[];\n}\n\ninterface StaffBasic {\n\ttimeSignature: Fraction;\n\ttimeSigNumeric: boolean;\n\tkeySignature: number;\n\tdoubtfulTimesig: boolean;\n}\n\ninterface EventMeasureColumn {\n\tmeasureIndex: number;\n\t//startX: number;\n\t//width: number;\n\n\trows: EventMeasure[]; // [staff]\n\tmarks: MarkTerm[];\n\tduration: number;\n\n\tvoices?: number[][]; // [voice, id]\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbasics?: StaffBasic[]; // [staff]\n\txMap?: Map;\n\tregularLoss?: number;\n\tvoltaBegin: boolean;\n\tvoltaEnd: boolean;\n\talternative: boolean;\n\tbarTypes: Record;\n}\n\ninterface EventSystem {\n\tstaffMask: number;\n\tcolumns: EventMeasureColumn[]; // [measure]\n}\n\ninterface TermMeasure extends Partial {\n\tterms: Term[];\n\tduration: number;\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n}\n\ntype TermRow = TermMeasure[];\n\ninterface TermStaff {\n\trows: TermRow[]; // [system]\n}\n\ninterface Pitch {\n\tnote: number;\n\talter: number;\n}\n\nenum PageLayoutMethod {\n\tByLines = 'ByLines',\n\tByBlocks = 'ByBlocks',\n}\n\ninterface RecognitionSettings {\n\tenabledGauge: boolean; // staves straighten\n\tpageLayoutMethod: PageLayoutMethod;\n\tsemanticConfidenceThreshold: number;\n}\n\ninterface Crop {\n\taspect?: number | undefined;\n\tx?: number | undefined;\n\ty?: number | undefined;\n\twidth?: number | undefined;\n\theight?: number | undefined;\n\tunit?: 'px' | '%' | undefined;\n}\n\n//\t0 2 4\t\t\tr r tx\n//\t1 3 5\t\t\tr r ty\ntype Matrix2x3 = [number, number, number, number, number, number];\n\ninterface SourceImageFile {\n\tname: string;\n\tsize: number;\n\turl: string;\n\tcrop?: Crop;\n\tmatrix: Matrix2x3;\n\tdimensions: {\n\t\twidth: number;\n\t\theight: number;\n\t};\n\tinterval: number;\n\tneedGauge?: boolean;\n}\n\ninterface Area extends Rect {\n\tstaves: {\n\t\tinterval: number;\n\t\tmiddleRhos: number[];\n\t\tphi1: number;\n\t\tphi2: number;\n\t};\n}\n\ninterface PageLayout {\n\tareas: Area[];\n}\n\ninterface MeasureBrief {\n\ttimeSignature: Fraction;\n}\n\ninterface VoiceMeasure {\n\ttickMap: { [key: number]: EventTerm | ChordmodeTerm };\n\tduration: number;\n\n\ttimeSignature?: Fraction;\n\ttimeSigNumeric?: boolean;\n\tkeySignature?: number;\n\n\tcontextedTerms: ContextedTerm[];\n\tmarks: MarkTerm[];\n\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbar?: string;\n\n\tempty?: boolean;\n\n\theadStaff?: number;\n\ttailStaff?: number;\n\n\ttrait?: HashVector;\n\tvoiceIndex?: number;\n}\n\ninterface TermVoice {\n\tmode: string;\n\tmeasures: VoiceMeasure[];\n}\n\ninterface VoicesStaff {\n\tcontext?: string;\n\tname?: string;\n\tvoices: TermVoice[];\n}\n\ninterface PaperOptions {\n\traggedLast: boolean;\n\traggedBottom: boolean;\n\traggedLastBottom: boolean;\n\tslashSystemSeparator: boolean;\n}\n\ninterface MusicHeaders {\n\ttitle: string;\n\tsubtitle: string;\n\tsubsubtitle: string;\n\tcomposer: string;\n\tpoet: string;\n\tarranger: string;\n\topus: string;\n\tcopyright: string;\n\tinstrument: string;\n\tdedication: string;\n\ttagline: string;\n}\n\ninterface MusicSheet {\n\ttitle: string;\n\tpageSize: {\n\t\t// in pixels\n\t\twidth: number;\n\t\theight: number;\n\t};\n\tunitSize: number;\n\tmeasureLayout?: measureLayout.MeasureLayout;\n\tstaffLayout: StaffLayout;\n\tpaperOptions?: Partial;\n\theaders: Partial;\n\n\tvoiceStaves: VoicesStaff[];\n\tinstrumentDict: { [key: string]: string };\n}\n\ninterface Performing {\n\tnotation: MetaNotation;\n\ttokenMap: Map;\n}\n\ntype RegulationPolicy = 'test' | 'simple' | 'equations' | 'advanced';\n\ninterface RegulationOptions {\n\tpolicy?: RegulationPolicy;\n\tquota?: number;\n\t[key: string]: any;\n}\n\ninterface ScoreData {\n\tversion?: number;\n\t[key: string]: any;\n}\n\ninterface AdditionalLineStack {\n\tleft: number;\n\tright: number;\n\tn: number;\n}\n\ninterface RegulationSolutionEvent {\n\tid: number;\n\ttick: number;\n\ttickGroup: number;\n\ttimeWarp: Fraction;\n\tdivision?: number;\n\tdots?: number;\n\tbeam?: string;\n\tgrace?: boolean;\n\tfullMeasure?: boolean;\n}\n\ninterface RegulationSolution {\n\tevents: RegulationSolutionEvent[];\n\tvoices: number[][];\n\tduration: number;\n\tpriority?: number;\n\testimatedDuration?: number;\n\ttimeSignature?: Fraction;\n}\n\ninterface BackgroundImage {\n\turl: string;\n\tposition: Rect;\n\toriginal?: boolean;\n}\n\nenum TextType { //\tLEVEL\t\t\tCHARSET\n\tTitle = 'Title', // page\t\t\t\tgeneral\n\tAuthor = 'Author', // page\t\t\t\tgeneral\n\tTempoText = 'TempoText', // measure\t\t\tspecific vocabulary\n\tTempoNumeral = 'TempoNumeral', // measure\t\t\tsymbolic and numeric\n\tTextualMark = 'TextualMark', // term\t\t\t\tspecific vocabulary\n\tLyric = 'Lyric', // term\t\t\t\tgeneral\n\tInstrument = 'Instrument', // system\t\t\tspecific vocabulary\n\tMeasureNumber = 'MeasureNumber', // system\t\t\tnumeric\n\tTimes = 'Times', // staff\t\t\tnumeric\n\tAlternation1 = 'Alternation1', // measure\t\t\tnumeric\n\tAlternation2 = 'Alternation2', // measure\t\t\tnumeric\n\tChord = 'Chord', // measure\t\t\tspecific domian\n\tPageMargin = 'PageMargin', // page\t\t\t\tgeneral\n\tOther = 'Other', // page\t\t\t\tgeneral\n}\n\nexport {\n\tRect,\n\tChordRect,\n\tVLine,\n\tFraction,\n\tMeasureBarType,\n\tEventFeature,\n\tEventPredisposition,\n\tChordColumn,\n\tEventMeasure,\n\tEventMeasureColumn,\n\tEventSystem,\n\tTermMeasure,\n\tTermRow,\n\tTermStaff,\n\tPitch,\n\tPageLayoutMethod,\n\tRecognitionSettings,\n\tSourceImageFile,\n\tPageLayout,\n\tStaffBasic,\n\tVoiceMeasure,\n\tVoicesStaff,\n\tTermVoice,\n\tMeasureBrief,\n\tAdditionalLineStack,\n\tTextType,\n\tMusicSheet,\n\tPerforming,\n\tRegulationOptions,\n\tScoreData,\n\tMusicHeaders,\n\tMatrix2x3,\n\tRegulationSolutionEvent,\n\tRegulationSolution,\n\tBackgroundImage,\n};\n","import sha1 from 'js-sha1';\n\nenum SemanticType {\n\t// clefs\n\tClefG = 'ClefG',\n\tClefF = 'ClefF',\n\tClefC = 'ClefC',\n\n\t// noteheads\n\tNoteheadS0 = 'NoteheadS0',\n\tNoteheadS1 = 'NoteheadS1',\n\tNoteheadS2 = 'NoteheadS2',\n\tNoteheadS1stemU = 'NoteheadS1stemU',\n\tNoteheadS1stemD = 'NoteheadS1stemD',\n\tNoteheadS2stemU = 'NoteheadS2stemU',\n\tNoteheadS2stemD = 'NoteheadS2stemD',\n\n\tvline_Stem = 'vline_Stem',\n\n\t// flags\n\tFlag3 = 'Flag3',\n\n\t// beams\n\tBeamLeft = 'BeamLeft',\n\tBeamContinue = 'BeamContinue',\n\tBeamRight = 'BeamRight',\n\n\t// tremolos\n\tTremoloLeft = 'TremoloLeft',\n\tTremoloRight = 'TremoloRight',\n\tTremoloMiddle = 'TremoloMiddle',\n\n\t// dots (duration)\n\tDot = 'Dot',\n\n\t// rests\n\tRest0 = 'Rest0',\n\tRest1 = 'Rest1',\n\tRest2 = 'Rest2',\n\tRest3 = 'Rest3',\n\tRest4 = 'Rest4',\n\tRest5 = 'Rest5',\n\tRest6 = 'Rest6',\n\tRest0W = 'Rest0W', // capital 'R' in lilypond\n\tRestM1 = 'RestM1',\n\n\t// accidentals\n\tAccNatural = 'AccNatural',\n\tAccSharp = 'AccSharp',\n\tAccDoublesharp = 'AccDoublesharp',\n\tAccFlat = 'AccFlat',\n\tAccFlatflat = 'AccFlatflat',\n\n\t// volta\n\tvline_VoltaLeft = 'vline_VoltaLeft',\n\tvline_VoltaRight = 'vline_VoltaRight',\n\tVoltaLeft = 'VoltaLeft',\n\tVoltaRight = 'VoltaRight',\n\n\tVoltaAlternativeBegin = 'VoltaAlternativeBegin',\n\t//VoltaAlternativeEnd\t= \"VoltaAlternativeEnd\",\n\n\t// vertical bars\n\tBarMeasure = 'BarMeasure',\n\tvline_BarMeasure = 'vline_BarMeasure',\n\tvline_BarTerminal = 'vline_BarTerminal',\n\tvline_BarSegment = 'vline_BarSegment',\n\n\t// slur & tie\n\tSlurBegin = 'SlurBegin',\n\tSlurEnd = 'SlurEnd',\n\n\t// time signature\n\tTimesigC44 = 'TimesigC44',\n\tTimesigC22 = 'TimesigC22',\n\tTimesigZero = 'TimesigZero',\n\tTimesigOne = 'TimesigOne',\n\tTimesigTwo = 'TimesigTwo',\n\tTimesigThree = 'TimesigThree',\n\tTimesigFour = 'TimesigFour',\n\tTimesigFive = 'TimesigFive',\n\tTimesigSix = 'TimesigSix',\n\tTimesigSeven = 'TimesigSeven',\n\tTimesigEight = 'TimesigEight',\n\tTimesigNine = 'TimesigNine',\n\n\t// octave shifts\n\tOctaveShift8va = 'OctaveShift8va',\n\tOctaveShift8vb = 'OctaveShift8vb',\n\tOctaveShift8 = 'OctaveShift8',\n\tOctaveShift0 = 'OctaveShift0',\n\n\t// numbers\n\tZero = 'Zero',\n\tOne = 'One',\n\tTwo = 'Two',\n\tThree = 'Three',\n\tFour = 'Four',\n\tFive = 'Five',\n\tSix = 'Six',\n\tSeven = 'Seven',\n\tEight = 'Eight',\n\tNine = 'Nine',\n\n\t// dynamics\n\tf = 'f',\n\tp = 'p',\n\tm = 'm',\n\tn = 'n',\n\tr = 'r',\n\ts = 's',\n\tz = 'z',\n\n\tCrescendoBegin = 'CrescendoBegin',\n\tCrescendoEnd = 'CrescendoEnd',\n\tDecrescendoBegin = 'DecrescendoBegin',\n\tDecrescendoEnd = 'DecrescendoEnd',\n\n\t// scripts\n\tScriptFermata = 'ScriptFermata',\n\tScriptShortFermata = 'ScriptShortFermata',\n\tScriptSforzato = 'ScriptSforzato',\n\tScriptStaccato = 'ScriptStaccato',\n\tScriptStaccatissimo = 'ScriptStaccatissimo',\n\tScriptTurn = 'ScriptTurn',\n\tScriptTrill = 'ScriptTrill',\n\tScriptSegno = 'ScriptSegno',\n\tScriptCoda = 'ScriptCoda',\n\tScriptArpeggio = 'ScriptArpeggio',\n\tScriptPrall = 'ScriptPrall',\n\tScriptMordent = 'ScriptMordent',\n\tScriptMarcato = 'ScriptMarcato',\n\tScriptTenuto = 'ScriptTenuto',\n\tScriptPortato = 'ScriptPortato',\n\n\t// pedal\n\tPedalStar = 'PedalStar',\n\tPedalPed = 'PedalPed',\n\n\t// additional annotation\n\tKeyAcc = 'KeyAcc',\n\tTempoNotehead = 'TempoNotehead',\n\tGraceNotehead = 'GraceNotehead',\n\tSignLined = 'SignLined',\n\tSignInterval = 'SignInterval',\n\n\trect_Text = 'rect_Text',\n\trect_Lyric = 'rect_Lyric',\n}\n\nconst glyphSemanticMapping: { [key: string]: string } = {\n\t'rests.1': 'Rest1',\n\t'rests.0o': 'Rest0',\n\t'rests.1o': 'Rest1',\n\t'rests.M1': 'RestM1',\n\t'rests.2': 'Rest2',\n\t'rests.3': 'Rest3',\n\t'rests.4': 'Rest4',\n\t'rests.5': 'Rest5',\n\t'rests.6': 'Rest6',\n\t'accidentals.sharp': 'AccSharp',\n\t'accidentals.doublesharp': 'AccDoublesharp',\n\t'accidentals.natural': 'AccNatural',\n\t'accidentals.flat': 'AccFlat',\n\t'accidentals.flatflat': 'AccFlatflat',\n\t'dots.dot': 'Dot',\n\t'scripts.ufermata': 'ScriptFermata',\n\t'scripts.dfermata': 'ScriptFermata',\n\t'scripts.ushortfermata': 'ScriptShortFermata',\n\t'scripts.dshortfermata': 'ScriptShortFermata',\n\t'scripts.staccato': 'ScriptStaccato',\n\t'scripts.ustaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.dstaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.turn': 'ScriptTurn',\n\t'scripts.trill': 'ScriptTrill',\n\t'scripts.segno': 'ScriptSegno',\n\t'scripts.coda': 'ScriptCoda',\n\t'scripts.arpeggio': 'ScriptArpeggio',\n\t'scripts.prall': 'ScriptPrall',\n\t'scripts.mordent': 'ScriptMordent',\n\t'scripts.umarcato': 'ScriptMarcato',\n\t'scripts.dmarcato': 'ScriptMarcato',\n\t'scripts.uportato': 'ScriptPortato',\n\t'scripts.dportato': 'ScriptPortato',\n\t'scripts.tenuto': 'ScriptTenuto',\n\t'scripts.sforzato': 'ScriptSforzato',\n\t'clefs.C': 'ClefC',\n\t'clefs.F': 'ClefF',\n\t'clefs.G': 'ClefG',\n\t'clefs.F_change': 'ClefF',\n\t'clefs.G_change': 'ClefG',\n\t'timesig.C44': 'TimesigC44',\n\t'timesig.C22': 'TimesigC22',\n\t'pedal.*': 'PedalStar',\n\t'pedal.Ped': 'PedalPed',\n\t'noteheads.s0': 'NoteheadS0',\n\t'noteheads.s1': 'NoteheadS1',\n\t'noteheads.s2': 'NoteheadS2',\n\tf: 'f',\n\tm: 'm',\n\tp: 'p',\n\tr: 'r',\n\ts: 's',\n\tz: 'z',\n};\n\nconst semanticPriorities: { [key: string]: number } = {\n\tClefG: 0,\n\tClefF: 0,\n\tTimesigFour: 0,\n\tTimesigThree: 0,\n\tTimesigTwo: 0,\n\tNoteheadS0: 0,\n\tNoteheadS1: 0,\n\tNoteheadS2: 0,\n\tDot: 0,\n\tvline_BarMeasure: 0,\n\tvline_Stem: 0,\n\tFlag3: 0,\n\n\tTimesigC44: 1,\n\tTimesigC22: 1,\n\tTimesigEight: 1,\n\tTimesigSix: 1,\n\tAccNatural: 1,\n\tAccSharp: 1,\n\tAccFlat: 1,\n\tKeyAcc: 1,\n\tRest0: 1,\n\tRest1: 1,\n\tRest2: 1,\n\tRest3: 1,\n\tRest4: 1,\n\tOctaveShift8: 1,\n\tOctaveShift0: 1,\n\n\tAccDoublesharp: 2,\n\tAccFlatflat: 2,\n\tTimesigOne: 2,\n\tTimesigNine: 2,\n\tRest5: 2,\n\tRest6: 2,\n\tSlurBegin: 2,\n\tSlurEnd: 2,\n\tVoltaLeft: 2,\n\tVoltaRight: 2,\n\t//VoltaAlternativeBegin: 2,\n\tvline_BarTerminal: 2,\n\tvline_BarSegment: 2,\n\tTempoNotehead: 2,\n\tGraceNotehead: 2,\n\tSignLined: 2,\n\tSignInterval: 2,\n\tBeamLeft: 2,\n\tBeamRight: 2,\n\tBeamContinue: 2,\n\tTremoloLeft: 2,\n\tTremoloRight: 2,\n\tTremoloMiddle: 2,\n\tStemTip: 2,\n\tStemHead: 2,\n\n\t//Rest0W: 3,\n\tf: 3,\n\tp: 3,\n\tm: 3,\n\tScriptFermata: 3,\n\tScriptSforzato: 3,\n\tScriptStaccato: 3,\n\tScriptStaccatissimo: 3,\n\tScriptTurn: 3,\n\tScriptTrill: 3,\n\tScriptSegno: 3,\n\tScriptCoda: 3,\n\tScriptArpeggio: 3,\n\tScriptPrall: 3,\n\tScriptMordent: 3,\n\tScriptTenuto: 3,\n\tPedalStar: 3,\n\tPedalPed: 3,\n\tTimesigFive: 3,\n\tTimesigSeven: 3,\n\tTimesigZero: 3,\n\tOne: 3,\n\tTwo: 3,\n\tThree: 3,\n\tFour: 3,\n\tFive: 3,\n\trect_Text: 3,\n\trect_Lyric: 3,\n\tCrescendoBegin: 3,\n\tCrescendoEnd: 3,\n\tDecrescendoBegin: 3,\n\tDecrescendoEnd: 3,\n\n\tRestM1: 4,\n\tClefC: 4,\n\tScriptShortFermata: 4,\n\tScriptMarcato: 4,\n\tScriptPortato: 4,\n\ts: 4,\n\tr: 4,\n\tz: 4,\n\tZero: 4,\n\tSix: 4,\n\tSeven: 4,\n\tEight: 4,\n\tNine: 4,\n};\n\ninterface Position {\n\tx?: number;\n\ty?: number;\n}\n\nconst NOTEHEAD_WIDTHS = {\n\tNoteheadS0: 0.913 * 2,\n\tNoteheadS1: 0.632 * 2,\n\tNoteheadS2: 0.599 * 2,\n};\n\nconst glyphCenters: { [key: string]: Position } = {\n\t//\"clefs.C\": { x: 1.3 },\n\t'clefs.F': { x: 1.06 },\n\t'clefs.G': { x: 1.3 },\n\t'clefs.F_change': { x: 0.87 },\n\t'clefs.G_change': { x: 1.07 },\n\t'timesig.C44': { x: 0.9 },\n\t'timesig.C22': { x: 0.9 },\n\tzero: { x: 0.7, y: -1 },\n\tone: { x: 0.7, y: -1 },\n\ttwo: { x: 0.7, y: -1 },\n\tthree: { x: 0.7, y: -1 },\n\tfour: { x: 0.7, y: -1 },\n\tfive: { x: 0.7, y: -1 },\n\tsix: { x: 0.7, y: -1 },\n\tseven: { x: 0.7, y: -1 },\n\teight: { x: 0.7, y: -1 },\n\tnine: { x: 0.7, y: -1 },\n\t'accidentals.sharp': { x: 0.55 },\n\t'accidentals.doublesharp': { x: 0.5 },\n\t'accidentals.natural': { x: 0.3 },\n\t'accidentals.flat': { x: 0.3 },\n\t'accidentals.flatflat': { x: 0.5 },\n\t'noteheads.s0': { x: NOTEHEAD_WIDTHS.NoteheadS0 / 2 },\n\t'noteheads.s1': { x: NOTEHEAD_WIDTHS.NoteheadS1 / 2 },\n\t'noteheads.s2': { x: NOTEHEAD_WIDTHS.NoteheadS2 / 2 },\n\t'rests.0': { x: 0.75, y: 1 },\n\t'rests.1': { x: 0.75 },\n\t'rests.0o': { x: 0.75, y: 1 },\n\t'rests.1o': { x: 0.75 },\n\t'rests.M1': { x: 0.75, y: 1 },\n\t'rests.2': { x: 0.5 },\n\t'rests.3': { x: 0.5 },\n\t'rests.4': { x: 0.5 },\n\t'rests.5': { x: 0.5 },\n\t'rests.6': { x: 0.5 },\n\tf: { x: 0.6, y: -0.5 },\n\tm: { x: 0.9, y: -0.5 },\n\tp: { x: 0.5, y: -0.5 },\n\tr: { x: 0.5, y: -0.5 },\n\ts: { x: 0.5, y: -0.5 },\n\tz: { x: 0.5, y: -0.5 },\n\t'scripts.trill': { y: -0.5 },\n\t'scripts.segno': { x: 0, y: 0 },\n\t'scripts.coda': { x: 0, y: 0 },\n\t'scripts.arpeggio': { x: 0.5, y: -0.5 },\n\t'pedal.*': { x: 0.78, y: -0.78 },\n\t'pedal.Ped': { x: 1.6, y: -0.7 },\n};\n\ninterface Point {\n\t// in staff unit coordinates\n\tx: number;\n\ty: number;\n\n\tpivotX?: number;\n\n\t// for prediction\n\tconfidence?: number;\n\n\t// sheet token index in page\n\tindex?: number;\n\ttag?: string;\n\n\textension?: {\n\t\ty1?: number;\n\t\ty2?: number;\n\n\t\thref?: string;\n\t\twidth?: number;\n\t\theight?: number;\n\n\t\ttext?: string;\n\t\ttheta?: number;\n\t\ttype?: string;\n\t\ttextFeature?: Record;\n\t};\n}\n\ninterface SemanticPoint extends Point {\n\tid?: string;\n\tsemantic: SemanticType;\n}\n\nconst ONE_D_SEMANTICS = [\n\t'OctaveShift8va',\n\t'OctaveShift8vb',\n\t'OctaveShift8',\n\t'OctaveShift0',\n\t'vline_VoltaLeft',\n\t'vline_VoltaRight',\n\t'VoltaAlternativeBegin',\n\t'vline_BarMeasure',\n\t'vline_BarTerminal',\n\t'vline_BarSegment',\n];\n\nconst SYSTEM_SEMANTIC_TYPES = [\n\tSemanticType.BarMeasure,\n\tSemanticType.vline_BarMeasure,\n\tSemanticType.vline_BarTerminal,\n\tSemanticType.vline_BarSegment,\n\tSemanticType.vline_VoltaLeft,\n\tSemanticType.vline_VoltaRight,\n\tSemanticType.VoltaAlternativeBegin,\n];\n\nconst st = SemanticType;\nconst CONFLICTION_GROUPS = [\n\t[st.NoteheadS0, st.NoteheadS1, st.NoteheadS2],\n\t[st.Zero, st.One, st.Two, st.Three, st.Four, st.Five, st.Six, st.Seven, st.Eight, st.Nine, st.ScriptStaccatissimo],\n\t[\n\t\tst.TimesigZero,\n\t\tst.TimesigOne,\n\t\tst.TimesigTwo,\n\t\tst.TimesigThree,\n\t\tst.TimesigFour,\n\t\tst.TimesigFive,\n\t\tst.TimesigSix,\n\t\tst.TimesigSeven,\n\t\tst.TimesigEight,\n\t\tst.TimesigNine,\n\t],\n\t[st.Rest0, st.Rest1, st.Rest2, st.Rest3, st.Rest4, st.Rest5, st.Rest6, st.Rest0W, st.RestM1],\n\t[st.SignInterval, st.SignLined],\n\t[st.BeamLeft, st.BeamContinue, st.BeamRight],\n];\n\nconst STAMP_SEMANTICS = [\n\tst.ClefG,\n\tst.ClefF,\n\tst.ClefC,\n\tst.NoteheadS0,\n\tst.NoteheadS1,\n\tst.NoteheadS2,\n\tst.Dot,\n\tst.Rest0,\n\tst.Rest1,\n\tst.Rest2,\n\tst.Rest3,\n\tst.Rest4,\n\tst.Rest5,\n\tst.Rest6,\n\tst.RestM1,\n\tst.AccNatural,\n\tst.AccSharp,\n\tst.AccDoublesharp,\n\tst.AccFlat,\n\tst.AccFlatflat,\n\tst.TimesigC44,\n\tst.TimesigC22,\n\tst.TimesigZero,\n\tst.TimesigOne,\n\tst.TimesigTwo,\n\tst.TimesigThree,\n\tst.TimesigFour,\n\tst.TimesigFive,\n\tst.TimesigSix,\n\tst.TimesigSeven,\n\tst.TimesigEight,\n\tst.TimesigNine,\n\tst.One,\n\tst.Two,\n\tst.Three,\n\tst.Four,\n\tst.Five,\n\tst.OctaveShift8,\n\t//st.OctaveShift15,\n\tst.OctaveShift0,\n\tst.f,\n\tst.p,\n\tst.m,\n\tst.n,\n\tst.r,\n\tst.s,\n\tst.z,\n\tst.ScriptFermata,\n\tst.ScriptShortFermata,\n\tst.ScriptSforzato,\n\tst.ScriptStaccato,\n\tst.ScriptStaccatissimo,\n\tst.ScriptTurn,\n\tst.ScriptTrill,\n\tst.ScriptSegno,\n\tst.ScriptCoda,\n\tst.ScriptArpeggio,\n\tst.ScriptPrall,\n\tst.ScriptMordent,\n\tst.ScriptMarcato,\n\tst.ScriptTenuto,\n\tst.ScriptPortato,\n\tst.PedalStar,\n\tst.PedalPed,\n];\n\n// [cx, cy, width, height]\nconst STAMP_RECTS = {\n\tClefG: [-0.0625, -1.125, 3.6, 8.6],\n\tClefF: [0.25, 0.5625, 3.6, 3.8],\n\tClefC: [0.25, 0, 3.25, 4.5],\n\tNoteheadS0: [0.0625, 0, 2.55, 1.4],\n\tNoteheadS1: [0.0625, 0, 1.8, 1.4],\n\tNoteheadS2: [0.0625, -0.0625, 1.65, 1.35],\n\tDot: [0.25, 0, 0.6, 0.6],\n\tRest0: [0, -0.75, 3.25, 0.9],\n\tRest1: [0, -0.25, 3.25, 0.9],\n\tRest2: [-0.0625, -0.1875, 1.6, 3.375],\n\tRest3: [0, 0.0625, 1.2, 2.25],\n\tRest4: [0.0625, 0.5625, 1.65, 3.375],\n\tRest5: [0.0625, 0.0625, 1.95, 4.375],\n\tRest6: [0.0625, 0.5625, 1.95, 5.375],\n\tRestM1: [-0.4375, -1.5, 0.75, 1.2],\n\tAccNatural: [0, 0, 0.9, 3.5],\n\tAccSharp: [0, 0, 1.5, 3.5],\n\tAccDoublesharp: [0, 0, 1.5, 1.5],\n\tAccFlat: [0, -0.5625, 1.2, 3.125],\n\tAccFlatflat: [0.1875, -0.5625, 1.95, 3.125],\n\tTimesigC44: [-0.0625, 0, 2.25, 2.3],\n\tTimesigC22: [-0.0625, 0, 2.25, 3.2],\n\tTimesigZero: [0, 0, 1.8, 2.2],\n\tTimesigOne: [-0.125, 0, 1.5, 2.2],\n\tTimesigTwo: [0, 0, 2.2, 2.2],\n\tTimesigThree: [-0.0625, 0, 1.9, 2.4],\n\tTimesigFour: [0.0625, 0, 1.95, 2.2],\n\tTimesigFive: [0, 0, 1.8, 2.3],\n\tTimesigSix: [0, 0, 2.0, 2.4],\n\tTimesigSeven: [0, 0, 1.8, 2.2],\n\tTimesigEight: [0, 0, 1.9, 2.2],\n\tTimesigNine: [0, 0, 1.9, 2.2],\n\tOne: [-0.0625, 0, 0.75, 1.6],\n\tTwo: [0, 0, 1.2, 1.6],\n\tThree: [0, 0, 1.2, 1.6],\n\tFour: [0, 0, 1.2, 1.6],\n\tFive: [0, 0, 1.2, 1.6],\n\tOctaveShift8: [2.125, -0.1875, 4.75, 3.6],\n\tOctaveShift0: [-0.4, 0, 1.8, 4.2],\n\tf: [0.0625, -0.125, 2.55, 3],\n\tp: [-0.0625, 0.25, 2.55, 2.1],\n\tm: [-0.125, -0.0625, 2.4, 1.35],\n\tn: [-0.3125, -0.0625, 1.95, 1.35],\n\tr: [0, -0.125, 1.5, 1.5],\n\ts: [0, -0.0625, 1.2, 1.35],\n\tz: [0.0625, 0, 1.35, 1.5],\n\tScriptFermata: [0, 0, 3.25, 3.9],\n\tScriptShortFermata: [0, 0, 2.4, 4.95],\n\tScriptSforzato: [-0.0625, 0, 2.5, 1.2],\n\tScriptStaccato: [0, -0.0625, 0.6, 0.45],\n\tScriptStaccatissimo: [0, 0, 1.2, 2.6],\n\tScriptTurn: [0, 0, 2.7, 1.5],\n\tScriptTrill: [-0.125, -0.5, 3, 2.7],\n\tScriptSegno: [0, 0, 2.4, 3.5],\n\tScriptCoda: [0, 0, 2.7, 3.25],\n\tScriptArpeggio: [-0.0625, 0, 1.05, 1.8],\n\tScriptPrall: [0, 0, 2.4, 1.2],\n\tScriptMordent: [0, 0, 2.4, 1.5],\n\tScriptMarcato: [0, 0, 1.2, 2.475],\n\tScriptTenuto: [0, -0.0625, 1.5, 0.15],\n\tScriptPortato: [0, 0, 1.5, 1.65],\n\tPedalStar: [0, 0, 3.2, 3.2],\n\tPedalPed: [0, -0.25, 4.7, 2.4],\n};\n\nconst hashSemanticPoint = (systemIndex: number, staffIndex: number, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x * 10);\n\tconst y = Math.round(point.y * 10);\n\tconst source = `${systemIndex}|${staffIndex}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nconst hashPageSemanticPoint = (pageName: string, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x);\n\tconst y = Math.round(point.y);\n\tconst source = `p-${pageName}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nexport {\n\tSemanticType,\n\tglyphSemanticMapping,\n\tsemanticPriorities,\n\tPoint,\n\tSemanticPoint,\n\tNOTEHEAD_WIDTHS,\n\tglyphCenters,\n\tONE_D_SEMANTICS,\n\tSYSTEM_SEMANTIC_TYPES,\n\tCONFLICTION_GROUPS,\n\tSTAMP_SEMANTICS,\n\tSTAMP_RECTS,\n\thashSemanticPoint,\n\thashPageSemanticPoint,\n};\n","import { TextType } from './interfaces';\nimport { NOTEHEAD_WIDTHS } from './semanticPoint';\n\nenum TokenType {\n\t// clefs\n\tClefG = 'clefs-G', // clefs.G_change\n\tClefF = 'clefs-F', // clefs.F_change\n\tClefC = 'clefs-C', // clefs.C_change\n\n\t// time signature\n\tTimesigC44 = 'timesig-C44',\n\tTimesigC22 = 'timesig-C22',\n\tTimesigZero = 'zero|timesig0',\n\tTimesigOne = 'one|timesig1',\n\tTimesigTwo = 'two|timesig2',\n\tTimesigThree = 'three|timesig3',\n\tTimesigFour = 'four|timesig4',\n\tTimesigFive = 'five|timesig5',\n\tTimesigSix = 'six|timesig6',\n\tTimesigSeven = 'seven|timesig7',\n\tTimesigEight = 'eight|timesig8',\n\tTimesigNine = 'nine|timesig9',\n\n\t// octave shifts\n\tOctaveShift8va = 'octave-a',\n\tOctaveShift8vb = 'octave-b',\n\tOctaveShift0 = 'octave-0',\n\n\t// numbers\n\tZero = 'zero|n0',\n\tOne = 'one|n1',\n\tTwo = 'two|n2',\n\tThree = 'three|n3',\n\tFour = 'four|n4',\n\tFive = 'five|n5',\n\tSix = 'six|n6',\n\tSeven = 'seven|n7',\n\tEight = 'eight|n8',\n\tNine = 'nine|n9',\n\n\t// accidentals\n\tAccNatural = 'accidentals-natural',\n\tAccSharp = 'accidentals-sharp',\n\tAccDoublesharp = 'accidentals-doublesharp',\n\tAccFlat = 'accidentals-flat',\n\tAccFlatflat = 'accidentals-flatflat',\n\tKeyNatural = 'accidentals-natural|key-natural',\n\tKeySharp = 'accidentals-sharp|key-sharp',\n\tKeyFlat = 'accidentals-flat|key-flat',\n\n\t// noteheads\n\tNoteheadS0 = 'noteheads-s0',\n\tNoteheadS1 = 'noteheads-s1',\n\tNoteheadS2 = 'noteheads-s2',\n\tNoteheadS1stemU = 'noteheads-s1|noteheads-s1-u',\n\tNoteheadS1stemD = 'noteheads-s1|noteheads-s1-d',\n\tNoteheadS2stemU = 'noteheads-s2|noteheads-s2-u',\n\tNoteheadS2stemD = 'noteheads-s2|noteheads-s2-d',\n\n\t// rests\n\tRest0 = 'rests-0o',\n\tRest1 = 'rests-1o',\n\tRest2 = 'rests-2',\n\tRest3 = 'rests-3',\n\tRest4 = 'rests-4',\n\tRest5 = 'rests-5',\n\tRest6 = 'rests-6',\n\tRest0W = 'rests-0',\n\tRestM1 = 'rests-M1',\n\n\t// flags\n\tFlag3 = 'flags-u3', // flags.d3\n\tFlag4 = 'flags-u4', // flags.d4\n\tFlag5 = 'flags-u5', // flags.d5\n\tFlag6 = 'flags-u6', // flags.d6\n\tFlag7 = 'flags-u7', // flags.d7\n\tFlag8 = 'flags-u8', // flags.d8\n\n\t// beams\n\tBeamLeft = '|beam-left',\n\tBeamRight = '|beam-right',\n\tBeamContinue = '|beam-continue',\n\n\t// tremolos\n\tTremoloLeft = '|tremolo-left',\n\tTremoloRight = '|tremolo-right',\n\tTremoloMiddle = '|tremolo-middle',\n\n\t// slur & tie\n\tSlurBegin = '|slur-begin',\n\tSlurEnd = '|slur-end',\n\tTieBegin = '|tie-begin',\n\tTieEnd = '|tie-end',\n\n\t// volta\n\tVoltaLeft = '|volta-left',\n\tVoltaRight = '|volta-right',\n\n\tVoltaAlternativeBegin = '|volta-alter-begin',\n\t//VoltaAlternativeEnd = \"|volta-alter-end\",\n\n\t// vertical bars\n\t//BarMeasure = \"|bar-measure\",\n\tBarTerminal = '|bar-terminal',\n\tBarSegment = '|bar-segment',\n\n\t// dots (duration)\n\tDot = '|dot',\n\tDotDot = '|dotdot',\n\n\t// dynamics\n\tf = 'f',\n\tp = 'p',\n\tm = 'm',\n\tr = 'r',\n\ts = 's',\n\tz = 'z',\n\n\t//\n\tWedgeCrescendo = '|wedge-crescendo',\n\tWedgeDiminuendo = '|wedge-diminuendo',\n\tWedgeClose = '|wedge-close',\n\n\tCrescendoBegin = '|wedge-crescendo',\n\tDecrescendoBegin = '|wedge-diminuendo',\n\tCrescendoEnd = '|wedge-close',\n\tDecrescendoEnd = '|wedge-close',\n\n\t// scripts\n\tScriptFermata = 'scripts-ufermata', // scripts.dfermata\n\tScriptShortFermata = 'scripts-ushortfermata', // scripts.dshortfermata\n\tScriptSforzato = 'scripts-sforzato',\n\tScriptStaccato = 'scripts-staccato',\n\tScriptStaccatissimo = 'scripts-ustaccatissimo', // scripts.dstaccatissimo\n\tScriptTurn = 'scripts-turn',\n\tScriptTrill = 'scripts-trill',\n\tScriptSegno = 'scripts-segno',\n\tScriptCoda = 'scripts-coda',\n\tScriptArpeggio = 'scripts-arpeggio',\n\tScriptPrall = 'scripts-prall',\n\tScriptMordent = 'scripts-mordent',\n\tScriptMarcato = 'scripts-umarcato', // scripts.dmarcato\n\tScriptTenuto = 'scripts-tenuto',\n\tScriptPortato = 'scripts-uportato', // scripts.dportato\n\n\t// pedal\n\tPedalStar = 'pedal-star',\n\tPedalPed = 'pedal-Ped',\n\n\tText = '|text',\n\tGraceNotehead = '|grace-notehead',\n}\n\n// alias\nconst tt = TokenType;\n\nexport const TokenTypes = Object.values(TokenType);\nexport const TokenClefs = TokenTypes.filter((t) => /clefs-/.test(t));\nexport const TokenTimesigs = TokenTypes.filter((t) => /timesig/.test(t));\nexport const TokenTimesigsC = TokenTypes.filter((t) => /timesig-/.test(t));\nexport const TokenTimesigsN = TokenTypes.filter((t) => /timesig\\d/.test(t));\nexport const TokenOctshifts = TokenTypes.filter((t) => /octave-/.test(t));\nexport const TokenNumbers = TokenTypes.filter((t) => /n\\d/.test(t));\nexport const TokenAccidentals = TokenTypes.filter((t) => /accidentals-/.test(t));\nexport const TokenNoteheads = TokenTypes.filter((t) => /noteheads-/.test(t));\nexport const TokenBareNoteheads = [tt.NoteheadS0, tt.NoteheadS1, tt.NoteheadS2];\nexport const TokenDirectionalNoteheads = TokenTypes.filter((t) => /noteheads-.+-[ud]/.test(t));\nexport const TokenRests = TokenTypes.filter((t) => /rests-/.test(t));\nexport const TokenFlags = TokenTypes.filter((t) => /flags-/.test(t));\nexport const TokenVolta = TokenTypes.filter((t) => /volta-/.test(t));\nexport const TokenDynamics = TokenTypes.filter((t) => /^[a-z]$/.test(t));\nexport const TokenScripts = TokenTypes.filter((t) => /scripts-/.test(t));\nexport const TokenPedals = TokenTypes.filter((t) => /pedal-/.test(t));\nexport const TokenDots = [tt.Dot, tt.DotDot];\nexport const TokenArcs = [tt.SlurBegin, tt.SlurEnd, tt.TieBegin, tt.TieEnd];\nexport const TokenBeams = TokenTypes.filter((t) => /beam-/.test(t));\nexport const TokenWedges = TokenTypes.filter((t) => /wedge-/.test(t));\n\nexport const TokenAccessories = [\n\t...TokenNumbers,\n\t...TokenDynamics,\n\t...TokenWedges,\n\t...TokenPedals,\n\t...TokenArcs,\n\n\ttt.ScriptFermata,\n\ttt.ScriptShortFermata,\n\ttt.ScriptSforzato,\n\ttt.ScriptStaccato,\n\ttt.ScriptStaccatissimo,\n\ttt.ScriptTurn,\n\ttt.ScriptTrill,\n\ttt.ScriptPrall,\n\ttt.ScriptMordent,\n\ttt.ScriptMarcato,\n\ttt.ScriptTenuto,\n\ttt.ScriptPortato,\n];\n\nexport const TokenDirectionless = [...TokenPedals];\n\nexport const TokenGlyphs = [\n\t...TokenClefs,\n\t...TokenTimesigs,\n\t...TokenNumbers,\n\t...TokenAccidentals,\n\ttt.NoteheadS0,\n\ttt.NoteheadS1,\n\ttt.NoteheadS2,\n\t...TokenRests,\n\t...TokenDynamics,\n\t...TokenScripts,\n\t...TokenPedals,\n\t...TokenDots,\n];\n\nconst TOKEN_Y_ROUND = {} as Record;\nTokenClefs.forEach((t) => (TOKEN_Y_ROUND[t] = 1));\nTokenTimesigsN.forEach((t) => (TOKEN_Y_ROUND[t] = 1));\nTokenAccidentals.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenNoteheads.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenRests.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\nTokenDots.forEach((t) => (TOKEN_Y_ROUND[t] = 0.5));\n\nconst TOKEN_Y_FIXED = {} as Record;\nTokenTimesigsC.forEach((t) => (TOKEN_Y_FIXED[t] = 0));\nTokenVolta.forEach((t) => (TOKEN_Y_FIXED[t] = 0));\n\nclass Token {\n\tstatic className = 'Token';\n\n\tid: string;\n\ttype: TokenType;\n\tx: number;\n\ty: number;\n\tpivotX?: number;\n\n\tconfidence: number;\n\n\ttip?: { x: number; y: number };\n\n\tvoice?: number; // integer, every bit stand for a voice\n\ttimeWarped?: boolean;\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tget typeId(): string {\n\t\treturn this.type.split('|').reverse()[0];\n\t}\n\n\tget isPredicted(): boolean {\n\t\treturn Number.isFinite(this.confidence);\n\t}\n\n\tget isNotehead(): boolean {\n\t\treturn TokenDirectionalNoteheads.includes(this.type) || this.type === TokenType.NoteheadS0;\n\t}\n\n\tget isContexted(): boolean {\n\t\treturn (\n\t\t\tTokenClefs.includes(this.type) || TokenTimesigs.includes(this.type) || TokenOctshifts.includes(this.type) || TokenAccidentals.includes(this.type)\n\t\t);\n\t}\n\n\tget isAccessory(): boolean {\n\t\treturn TokenNumbers.includes(this.type) || TokenDynamics.includes(this.type) || TokenScripts.includes(this.type) || TokenPedals.includes(this.type);\n\t}\n\n\tget division(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn 0;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn 2;\n\n\t\t\tcase tt.Flag3:\n\t\t\t\treturn 3;\n\n\t\t\tcase tt.Flag4:\n\t\t\t\treturn 4;\n\n\t\t\tcase tt.Flag5:\n\t\t\t\treturn 5;\n\n\t\t\tcase tt.Flag6:\n\t\t\t\treturn 6;\n\n\t\t\tcase tt.Flag7:\n\t\t\t\treturn 7;\n\n\t\t\tcase tt.Flag8:\n\t\t\t\treturn 8;\n\n\t\t\tcase tt.RestM1:\n\t\t\t\treturn -1;\n\n\t\t\tcase tt.Rest0:\n\t\t\t\treturn 0;\n\n\t\t\tcase tt.Rest1:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.Rest2:\n\t\t\t\treturn 2;\n\n\t\t\tcase tt.Rest3:\n\t\t\t\treturn 3;\n\n\t\t\tcase tt.Rest4:\n\t\t\t\treturn 4;\n\n\t\t\tcase tt.Rest5:\n\t\t\t\treturn 5;\n\n\t\t\tcase tt.Rest6:\n\t\t\t\treturn 6;\n\n\t\t\t// TODO:\n\t\t\t//case tt.Rest0W:\n\t\t\t//\treturn 0;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget dots(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.Dot:\n\t\t\t\treturn 1;\n\n\t\t\tcase tt.DotDot:\n\t\t\t\treturn 2;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget direction(): 'u' | 'd' | null {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn 'u';\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn 'd';\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget width(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS0;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn NOTEHEAD_WIDTHS.NoteheadS2;\n\t\t}\n\t}\n\n\tget left(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn this.x - this.width / 2;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn this.x - this.width;\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn this.x;\n\t\t}\n\n\t\treturn this.x;\n\t}\n\n\tget right(): number {\n\t\tswitch (this.type) {\n\t\t\tcase tt.NoteheadS0:\n\t\t\t\treturn this.x + this.width / 2;\n\n\t\t\tcase tt.NoteheadS1stemU:\n\t\t\tcase tt.NoteheadS2stemU:\n\t\t\t\treturn this.x;\n\n\t\t\tcase tt.NoteheadS1stemD:\n\t\t\tcase tt.NoteheadS2stemD:\n\t\t\t\treturn this.x + this.width;\n\t\t}\n\n\t\treturn this.x;\n\t}\n\n\tget voiceIndices(): number[] {\n\t\tif (!this.voice || this.voice < 0) return [];\n\n\t\treturn Array(Math.floor(Math.log2(this.voice)) + 1)\n\t\t\t.fill(null)\n\t\t\t.reduce((indices, _, i) => (this.voice & (1 << i) ? [i + 1, ...indices] : indices), []);\n\t}\n}\n\nclass TextToken extends Token {\n\ttextType: TextType;\n\ttext: string;\n\ttextFeature?: Record;\n\twidth_: number;\n\tfontSize: number;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\t\tObject.assign(this, data);\n\t}\n\n\tget width(): number {\n\t\treturn this.width_;\n\t}\n\n\tset width(value: number) {\n\t\tthis.width_ = value;\n\t}\n}\n\nexport { TokenType, Token, TextToken, TOKEN_Y_ROUND, TOKEN_Y_FIXED };\n","import pick from 'lodash/pick';\n\nconst recoverJSON = (json: string | object, classDict): T => {\n\tif (typeof json === 'object') json = JSON.stringify(json);\n\n\treturn JSON.parse(json, (_, value) => {\n\t\tif (value && typeof value === 'object' && value.__prototype) {\n\t\t\tconst Class = classDict[value.__prototype];\n\t\t\tif (Class) {\n\t\t\t\tconst { __prototype, ...fields } = value;\n\t\t\t\treturn new Class(fields);\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t});\n};\n\nconst deepCopy = (o: any, dict: Map = null): any => {\n\tdict = dict || new Map();\n\tif (dict.get(o)) return dict.get(o);\n\n\tif (Array.isArray(o)) {\n\t\tconst result = [];\n\t\tdict.set(o, result);\n\n\t\to.forEach((e) => result.push(deepCopy(e, dict)));\n\n\t\treturn result;\n\t} else if (o && typeof o === 'object') {\n\t\tconst result = {};\n\t\tdict.set(o, result);\n\n\t\tObject.entries(o).forEach(([key, value]) => (result[key] = deepCopy(value, dict)));\n\t\tObject.setPrototypeOf(result, o.__proto__);\n\n\t\treturn result;\n\t}\n\n\treturn o;\n};\n\nclass SimpleClass {\n\tassign(data?: object) {\n\t\tif (data) Object.assign(this, data);\n\t}\n\n\ttoJSON() {\n\t\tconst cls = this.constructor as any;\n\n\t\tconst serializedKeys = cls.serializedKeys || (cls.blackKeys && Object.keys(this).filter((key) => !cls.blackKeys.includes(key)));\n\t\tconst fields = serializedKeys ? pick(this, serializedKeys) : this;\n\n\t\treturn {\n\t\t\t__prototype: cls.className,\n\t\t\t...fields,\n\t\t};\n\t}\n\n\tdeepCopy(): this {\n\t\treturn deepCopy(this);\n\t}\n}\n\nexport { recoverJSON, SimpleClass };\n","import { SimpleClass } from '../starry/aux_/typedJSON';\n\nenum LayoutType {\n\tOrdinary = 'ordinary',\n\tFull = 'full',\n\tConservative = 'conservative',\n\tOnce = 'once',\n}\n\ninterface MeasureLayout {\n\tserialize(type: LayoutType): number[];\n\n\tseq: MeasureSeq;\n\tcode: string;\n}\n\nexport type MeasureSeq = MeasureLayout[];\n\nconst spreadMeasureSeq = (seq: MeasureSeq, type: LayoutType = LayoutType.Ordinary): number[] => [].concat(...seq.map((layout) => layout.serialize(type)));\n\nconst seqToCode = (seq: MeasureSeq, { withBrackets = false }: { withBrackets?: boolean } = {}): string => {\n\t//const code = seq.map(layout => layout.code).join(\", \");\n\tlet code = '';\n\tlet inRange = false;\n\n\tfor (let i = 0; i < seq.length; ++i) {\n\t\tconst middle = seq[i - 1] instanceof SingleMLayout && seq[i] instanceof SingleMLayout && seq[i + 1] instanceof SingleMLayout;\n\t\tif (middle) {\n\t\t\tif (!inRange) {\n\t\t\t\tcode += '..';\n\t\t\t\tinRange = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (i > 0 && !inRange) code += ', ';\n\n\t\t\tinRange = false;\n\n\t\t\tcode += seq[i].code;\n\t\t}\n\t}\n\n\treturn withBrackets ? `[${code}]` : code;\n};\n\nclass SingleMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'SingleMLayout';\n\n\tmeasure: number;\n\n\tstatic from(measure: number) {\n\t\tconst layout = new SingleMLayout();\n\t\tlayout.measure = measure;\n\n\t\treturn layout;\n\t}\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(): number[] {\n\t\treturn [this.measure];\n\t}\n\n\tget seq(): MeasureSeq {\n\t\treturn [this];\n\t}\n\n\tget code(): string {\n\t\treturn this.measure.toString();\n\t}\n}\n\nclass BlockMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'BlockMLayout';\n\n\tseq: MeasureSeq;\n\n\tstatic trimSeq(seq: MeasureSeq): MeasureSeq {\n\t\tconst seq2 = [];\n\t\tfor (const layout of seq) {\n\t\t\tif (layout instanceof BlockMLayout) {\n\t\t\t\tfor (const sub of layout.seq) seq2.push(sub);\n\t\t\t} else seq2.push(layout);\n\t\t}\n\n\t\t// reduce duplicated or backwards single measures\n\t\tconst seq3 = [];\n\t\tlet measure = null;\n\t\tfor (const layout of seq2) {\n\t\t\tif (layout instanceof SingleMLayout) {\n\t\t\t\tif (layout.measure > measure) {\n\t\t\t\t\tseq3.push(layout);\n\t\t\t\t\tmeasure = layout.measure;\n\t\t\t\t}\n\t\t\t} else seq3.push(layout);\n\t\t}\n\n\t\treturn seq3;\n\t}\n\n\tstatic fromSeq(seq: MeasureSeq): BlockMLayout {\n\t\tconst layout = new BlockMLayout();\n\t\tlayout.seq = BlockMLayout.trimSeq(seq);\n\n\t\treturn layout;\n\t}\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\treturn spreadMeasureSeq(this.seq, type);\n\t}\n\n\tget code(): string {\n\t\treturn seqToCode(this.seq, { withBrackets: true });\n\t}\n}\n\nclass VoltaMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'VoltaMLayout';\n\n\ttimes: number;\n\tbody: MeasureSeq;\n\talternates: MeasureSeq[];\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\tconst bodySeq = spreadMeasureSeq(this.body);\n\n\t\tif (this.alternates) {\n\t\t\tconst alternateSeqs = this.alternates.map((seq) => spreadMeasureSeq(seq));\n\t\t\tconst lastAlternateSeq = alternateSeqs[alternateSeqs.length - 1];\n\n\t\t\tswitch (type) {\n\t\t\t\tcase LayoutType.Ordinary:\n\t\t\t\t\treturn bodySeq.concat(...alternateSeqs);\n\n\t\t\t\tcase LayoutType.Conservative:\n\t\t\t\tcase LayoutType.Full: {\n\t\t\t\t\tconst priorSeq = [].concat(\n\t\t\t\t\t\t...Array(this.times - 1)\n\t\t\t\t\t\t\t.fill(null)\n\t\t\t\t\t\t\t.map((_, i) => [...bodySeq, ...alternateSeqs[i % (this.times - 1)]])\n\t\t\t\t\t);\n\n\t\t\t\t\treturn [...priorSeq, ...bodySeq, ...lastAlternateSeq];\n\t\t\t\t}\n\n\t\t\t\tcase LayoutType.Once:\n\t\t\t\t\treturn [...bodySeq, ...lastAlternateSeq];\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (type) {\n\t\t\t\tcase LayoutType.Ordinary:\n\t\t\t\tcase LayoutType.Conservative:\n\t\t\t\tcase LayoutType.Once:\n\t\t\t\t\treturn bodySeq;\n\n\t\t\t\tcase LayoutType.Full:\n\t\t\t\t\treturn [].concat(\n\t\t\t\t\t\t...Array(this.times)\n\t\t\t\t\t\t\t.fill(null)\n\t\t\t\t\t\t\t.map(() => bodySeq)\n\t\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconsole.warn('the current case not handled:', type, this);\n\t}\n\n\tget seq(): MeasureSeq {\n\t\tconst alternates = this.alternates ? this.alternates[this.alternates.length - 1] : [];\n\n\t\treturn [...this.body, ...alternates];\n\t}\n\n\tget code(): string {\n\t\tconst body = seqToCode(this.body, { withBrackets: true });\n\n\t\tlet code = `${this.times}*${body}`;\n\t\tif (this.alternates) code += '{' + this.alternates.map((seq) => seqToCode(seq, { withBrackets: seq.length > 1 })).join(', ') + '}';\n\n\t\treturn code;\n\t}\n}\n\nclass ABAMLayout extends SimpleClass implements MeasureLayout {\n\tstatic className = 'ABAMLayout';\n\n\tmain: MeasureLayout;\n\trest: MeasureSeq;\n\n\tconstructor(data: any = undefined) {\n\t\tsuper();\n\t\tthis.assign(data);\n\t}\n\n\tserialize(type: LayoutType): number[] {\n\t\tconst seqA = this.main.serialize(type);\n\t\tconst seqA_ = spreadMeasureSeq(this.main.seq, LayoutType.Once);\n\t\tconst seqB = spreadMeasureSeq(this.rest, type);\n\n\t\tswitch (type) {\n\t\t\tcase LayoutType.Ordinary: // A B\n\t\t\t\treturn [...seqA, ...seqB];\n\n\t\t\tcase LayoutType.Once: // B A'\n\t\t\t\treturn [...seqB, ...seqA_];\n\n\t\t\tcase LayoutType.Conservative: // A B A'\n\t\t\tcase LayoutType.Full: // A B A'\n\t\t\t\treturn [...seqA, ...seqB, ...seqA_];\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn('the current case not handled:', type, this);\n\t\t}\n\t}\n\n\tget seq(): MeasureSeq {\n\t\treturn [this.main, ...this.rest];\n\t}\n\n\tget code(): string {\n\t\treturn '<' + this.main.code + ', ' + seqToCode(this.rest) + '>';\n\t}\n}\n\nexport { LayoutType, MeasureLayout, SingleMLayout, BlockMLayout, VoltaMLayout, ABAMLayout };\n","// @ts-nocheck\n/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function () {\n\tvar o = function (k, v, o, l) {\n\t\t\tfor (o = o || {}, l = k.length; l--; o[k[l]] = v);\n\t\t\treturn o;\n\t\t},\n\t\t$V0 = [1, 13],\n\t\t$V1 = [1, 16],\n\t\t$V2 = [1, 15],\n\t\t$V3 = [1, 26],\n\t\t$V4 = [1, 29],\n\t\t$V5 = [1, 28],\n\t\t$V6 = [1, 30],\n\t\t$V7 = [5, 13, 22, 27, 29],\n\t\t$V8 = [2, 15],\n\t\t$V9 = [1, 32],\n\t\t$Va = [5, 14, 21, 22, 27, 28, 29];\n\tvar parser = {\n\t\ttrace: function trace() {},\n\t\tyy: {},\n\t\tsymbols_: {\n\t\t\terror: 2,\n\t\t\tstart_symbol: 3,\n\t\t\tmeasure_layout: 4,\n\t\t\tEOF: 5,\n\t\t\tindex_wise_measure_layout: 6,\n\t\t\t'i:': 7,\n\t\t\t's:': 8,\n\t\t\tsegment_wise_measure_layout: 9,\n\t\t\tiw_sequence: 10,\n\t\t\tiw_item: 11,\n\t\t\trange: 12,\n\t\t\t',': 13,\n\t\t\tUNSIGNED: 14,\n\t\t\t'..': 15,\n\t\t\tsingle: 16,\n\t\t\tiw_block_item: 17,\n\t\t\tiw_volta: 18,\n\t\t\tiw_aba: 19,\n\t\t\tiw_block: 20,\n\t\t\t'[': 21,\n\t\t\t']': 22,\n\t\t\t'*': 23,\n\t\t\tiw_optional_alternates: 24,\n\t\t\tiw_alternates: 25,\n\t\t\t'{': 26,\n\t\t\t'}': 27,\n\t\t\t'<': 28,\n\t\t\t'>': 29,\n\t\t\tsw_sequence: 30,\n\t\t\tsw_item: 31,\n\t\t\tsegment: 32,\n\t\t\tsw_block_item: 33,\n\t\t\tsw_volta: 34,\n\t\t\tsw_aba: 35,\n\t\t\tsw_block: 36,\n\t\t\tsw_optional_alternates: 37,\n\t\t\tsw_alternates: 38,\n\t\t\t$accept: 0,\n\t\t\t$end: 1,\n\t\t},\n\t\tterminals_: {\n\t\t\t2: 'error',\n\t\t\t5: 'EOF',\n\t\t\t7: 'i:',\n\t\t\t8: 's:',\n\t\t\t13: ',',\n\t\t\t14: 'UNSIGNED',\n\t\t\t15: '..',\n\t\t\t21: '[',\n\t\t\t22: ']',\n\t\t\t23: '*',\n\t\t\t26: '{',\n\t\t\t27: '}',\n\t\t\t28: '<',\n\t\t\t29: '>',\n\t\t},\n\t\tproductions_: [\n\t\t\t0,\n\t\t\t[3, 2],\n\t\t\t[4, 1],\n\t\t\t[4, 2],\n\t\t\t[4, 2],\n\t\t\t[6, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 3],\n\t\t\t[10, 3],\n\t\t\t[12, 3],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[11, 1],\n\t\t\t[16, 1],\n\t\t\t[17, 1],\n\t\t\t[20, 3],\n\t\t\t[18, 4],\n\t\t\t[24, 0],\n\t\t\t[24, 1],\n\t\t\t[25, 3],\n\t\t\t[19, 5],\n\t\t\t[9, 1],\n\t\t\t[30, 1],\n\t\t\t[30, 2],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[31, 1],\n\t\t\t[32, 1],\n\t\t\t[33, 1],\n\t\t\t[36, 3],\n\t\t\t[34, 4],\n\t\t\t[37, 0],\n\t\t\t[37, 1],\n\t\t\t[38, 3],\n\t\t\t[35, 4],\n\t\t],\n\t\tperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n\t\t\t/* this == yyval */\n\n\t\t\tvar $0 = $$.length - 1;\n\t\t\tswitch (yystate) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tthis.$ = root(null, $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.$ = root('index-wise', $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tthis.$ = root('segment-wise', serialize($$[$0]));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\tcase 23:\n\t\t\t\t\tif ($$[$0].length === 1 && $$[$0][0].__prototype === 'BlockMLayout') this.$ = $$[$0][0];\n\t\t\t\t\telse this.$ = blockLayout($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 6:\n\t\t\t\tcase 24:\n\t\t\t\t\tthis.$ = [$$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 7:\n\t\t\t\tcase 11:\n\t\t\t\tcase 12:\n\t\t\t\tcase 13:\n\t\t\t\tcase 14:\n\t\t\t\tcase 20:\n\t\t\t\tcase 27:\n\t\t\t\tcase 28:\n\t\t\t\tcase 29:\n\t\t\t\tcase 35:\n\t\t\t\t\tthis.$ = $$[$0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\tthis.$ = [...$$[$0 - 2], $$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9:\n\t\t\t\t\tthis.$ = [...$$[$0 - 2], ...$$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 10:\n\t\t\t\t\tthis.$ = range($$[$0 - 2], $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 15:\n\t\t\t\t\tthis.$ = singleLayout($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 16:\n\t\t\t\tcase 31:\n\t\t\t\t\tthis.$ = blockLayout($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 17:\n\t\t\t\tcase 32:\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 18:\n\t\t\t\tcase 33:\n\t\t\t\t\tthis.$ = voltaBlock($$[$0 - 3], $$[$0 - 1], $$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 19:\n\t\t\t\tcase 34:\n\t\t\t\t\tthis.$ = null;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 21:\n\t\t\t\tcase 36:\n\t\t\t\t\tthis.$ = alternates($$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 22:\n\t\t\t\t\tthis.$ = abaBlock($$[$0 - 3], $$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 25:\n\t\t\t\t\tthis.$ = [...$$[$0 - 1], $$[$0]];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 26:\n\t\t\t\t\tthis.$ = blockLayout([$$[$0]]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 30:\n\t\t\t\t\tthis.$ = segment($$[$0]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37:\n\t\t\t\t\tthis.$ = abaBlock($$[$0 - 2], $$[$0 - 1]);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\ttable: [\n\t\t\t{ 3: 1, 4: 2, 6: 3, 7: [1, 4], 8: [1, 5], 10: 6, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 1: [3] },\n\t\t\t{ 5: [1, 17] },\n\t\t\t{ 5: [2, 2] },\n\t\t\t{ 6: 18, 10: 6, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 9: 19, 14: $V3, 21: $V4, 28: $V5, 30: 20, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 5: [2, 5], 13: $V6 },\n\t\t\to($V7, [2, 6]),\n\t\t\to($V7, [2, 7]),\n\t\t\to($V7, [2, 11]),\n\t\t\to($V7, [2, 12]),\n\t\t\to($V7, [2, 13]),\n\t\t\to($V7, [2, 14]),\n\t\t\to($V7, $V8, { 15: [1, 31], 23: $V9 }),\n\t\t\to($V7, [2, 16]),\n\t\t\t{ 11: 33, 14: [1, 34], 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 10: 35, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 1: [2, 1] },\n\t\t\t{ 5: [2, 3] },\n\t\t\t{ 5: [2, 4] },\n\t\t\t{ 5: [2, 23], 14: $V3, 21: $V4, 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($Va, [2, 24]),\n\t\t\to($Va, [2, 26]),\n\t\t\to($Va, [2, 27]),\n\t\t\to($Va, [2, 28]),\n\t\t\to($Va, [2, 29]),\n\t\t\to($Va, [2, 30], { 23: [1, 37] }),\n\t\t\to($Va, [2, 31]),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 31: 38, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 39, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 11: 40, 12: 41, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 14: [1, 42] },\n\t\t\t{ 20: 43, 21: $V1 },\n\t\t\t{ 13: [1, 44] },\n\t\t\t{ 13: $V8, 23: $V9 },\n\t\t\t{ 13: $V6, 22: [1, 45] },\n\t\t\to($Va, [2, 25]),\n\t\t\t{ 21: $V4, 36: 46 },\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 47, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\t{ 14: $V3, 21: $V4, 22: [1, 48], 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($V7, [2, 8]),\n\t\t\to($V7, [2, 9]),\n\t\t\to($V7, [2, 10]),\n\t\t\to($V7, [2, 19], { 24: 49, 25: 50, 26: [1, 51] }),\n\t\t\t{ 10: 52, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\to([5, 13, 22, 26, 27, 29], [2, 17]),\n\t\t\to($Va, [2, 34], { 37: 53, 38: 54, 26: [1, 55] }),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 29: [1, 56], 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to([5, 14, 21, 22, 26, 27, 28, 29], [2, 32]),\n\t\t\to($V7, [2, 18]),\n\t\t\to($V7, [2, 20]),\n\t\t\t{ 10: 57, 11: 7, 12: 8, 14: $V0, 16: 9, 17: 10, 18: 11, 19: 12, 20: 14, 21: $V1, 28: $V2 },\n\t\t\t{ 13: $V6, 29: [1, 58] },\n\t\t\to($Va, [2, 33]),\n\t\t\to($Va, [2, 35]),\n\t\t\t{ 14: $V3, 21: $V4, 28: $V5, 30: 59, 31: 21, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($Va, [2, 37]),\n\t\t\t{ 13: $V6, 27: [1, 60] },\n\t\t\to($V7, [2, 22]),\n\t\t\t{ 14: $V3, 21: $V4, 27: [1, 61], 28: $V5, 31: 36, 32: 22, 33: 23, 34: 24, 35: 25, 36: 27 },\n\t\t\to($V7, [2, 21]),\n\t\t\to($Va, [2, 36]),\n\t\t],\n\t\tdefaultActions: { 3: [2, 2], 17: [2, 1], 18: [2, 3], 19: [2, 4] },\n\t\tparseError: function parseError(str, hash) {\n\t\t\tif (hash.recoverable) {\n\t\t\t\tthis.trace(str);\n\t\t\t} else {\n\t\t\t\tvar error = new Error(str);\n\t\t\t\terror.hash = hash;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tparse: function parse(input) {\n\t\t\tvar self = this,\n\t\t\t\tstack = [0],\n\t\t\t\ttstack = [],\n\t\t\t\tvstack = [null],\n\t\t\t\tlstack = [],\n\t\t\t\ttable = this.table,\n\t\t\t\tyytext = '',\n\t\t\t\tyylineno = 0,\n\t\t\t\tyyleng = 0,\n\t\t\t\trecovering = 0,\n\t\t\t\tTERROR = 2,\n\t\t\t\tEOF = 1;\n\t\t\tvar args = lstack.slice.call(arguments, 1);\n\t\t\tvar lexer = Object.create(this.lexer);\n\t\t\tvar sharedState = { yy: {} };\n\t\t\tfor (var k in this.yy) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n\t\t\t\t\tsharedState.yy[k] = this.yy[k];\n\t\t\t\t}\n\t\t\t}\n\t\t\tlexer.setInput(input, sharedState.yy);\n\t\t\tsharedState.yy.lexer = lexer;\n\t\t\tsharedState.yy.parser = this;\n\t\t\tif (typeof lexer.yylloc == 'undefined') {\n\t\t\t\tlexer.yylloc = {};\n\t\t\t}\n\t\t\tvar yyloc = lexer.yylloc;\n\t\t\tlstack.push(yyloc);\n\t\t\tvar ranges = lexer.options && lexer.options.ranges;\n\t\t\tif (typeof sharedState.yy.parseError === 'function') {\n\t\t\t\tthis.parseError = sharedState.yy.parseError;\n\t\t\t} else {\n\t\t\t\tthis.parseError = Object.getPrototypeOf(this).parseError;\n\t\t\t}\n\t\t\tfunction popStack(n) {\n\t\t\t\tstack.length = stack.length - 2 * n;\n\t\t\t\tvstack.length = vstack.length - n;\n\t\t\t\tlstack.length = lstack.length - n;\n\t\t\t}\n\t\t\t_token_stack: var lex = function () {\n\t\t\t\tvar token;\n\t\t\t\ttoken = lexer.lex() || EOF;\n\t\t\t\tif (typeof token !== 'number') {\n\t\t\t\t\ttoken = self.symbols_[token] || token;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t};\n\t\t\tvar symbol,\n\t\t\t\tpreErrorSymbol,\n\t\t\t\tstate,\n\t\t\t\taction,\n\t\t\t\ta,\n\t\t\t\tr,\n\t\t\t\tyyval = {},\n\t\t\t\tp,\n\t\t\t\tlen,\n\t\t\t\tnewState,\n\t\t\t\texpected;\n\t\t\twhile (true) {\n\t\t\t\tstate = stack[stack.length - 1];\n\t\t\t\tif (this.defaultActions[state]) {\n\t\t\t\t\taction = this.defaultActions[state];\n\t\t\t\t} else {\n\t\t\t\t\tif (symbol === null || typeof symbol == 'undefined') {\n\t\t\t\t\t\tsymbol = lex();\n\t\t\t\t\t}\n\t\t\t\t\taction = table[state] && table[state][symbol];\n\t\t\t\t}\n\t\t\t\tif (typeof action === 'undefined' || !action.length || !action[0]) {\n\t\t\t\t\tvar errStr = '';\n\t\t\t\t\texpected = [];\n\t\t\t\t\tfor (p in table[state]) {\n\t\t\t\t\t\tif (this.terminals_[p] && p > TERROR) {\n\t\t\t\t\t\t\texpected.push(\"'\" + this.terminals_[p] + \"'\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (lexer.showPosition) {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t':\\n' +\n\t\t\t\t\t\t\tlexer.showPosition() +\n\t\t\t\t\t\t\t'\\nExpecting ' +\n\t\t\t\t\t\t\texpected.join(', ') +\n\t\t\t\t\t\t\t\", got '\" +\n\t\t\t\t\t\t\t(this.terminals_[symbol] || symbol) +\n\t\t\t\t\t\t\t\"'\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t': Unexpected ' +\n\t\t\t\t\t\t\t(symbol == EOF ? 'end of input' : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.parseError(errStr, {\n\t\t\t\t\t\ttext: lexer.match,\n\t\t\t\t\t\ttoken: this.terminals_[symbol] || symbol,\n\t\t\t\t\t\tline: lexer.yylineno,\n\t\t\t\t\t\tloc: yyloc,\n\t\t\t\t\t\texpected: expected,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (action[0] instanceof Array && action.length > 1) {\n\t\t\t\t\tthrow new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n\t\t\t\t}\n\t\t\t\tswitch (action[0]) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tstack.push(symbol);\n\t\t\t\t\t\tvstack.push(lexer.yytext);\n\t\t\t\t\t\tlstack.push(lexer.yylloc);\n\t\t\t\t\t\tstack.push(action[1]);\n\t\t\t\t\t\tsymbol = null;\n\t\t\t\t\t\tif (!preErrorSymbol) {\n\t\t\t\t\t\t\tyyleng = lexer.yyleng;\n\t\t\t\t\t\t\tyytext = lexer.yytext;\n\t\t\t\t\t\t\tyylineno = lexer.yylineno;\n\t\t\t\t\t\t\tyyloc = lexer.yylloc;\n\t\t\t\t\t\t\tif (recovering > 0) {\n\t\t\t\t\t\t\t\trecovering--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsymbol = preErrorSymbol;\n\t\t\t\t\t\t\tpreErrorSymbol = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tlen = this.productions_[action[1]][1];\n\t\t\t\t\t\tyyval.$ = vstack[vstack.length - len];\n\t\t\t\t\t\tyyval._$ = {\n\t\t\t\t\t\t\tfirst_line: lstack[lstack.length - (len || 1)].first_line,\n\t\t\t\t\t\t\tlast_line: lstack[lstack.length - 1].last_line,\n\t\t\t\t\t\t\tfirst_column: lstack[lstack.length - (len || 1)].first_column,\n\t\t\t\t\t\t\tlast_column: lstack[lstack.length - 1].last_column,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (ranges) {\n\t\t\t\t\t\t\tyyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tr = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n\t\t\t\t\t\tif (typeof r !== 'undefined') {\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (len) {\n\t\t\t\t\t\t\tstack = stack.slice(0, -1 * len * 2);\n\t\t\t\t\t\t\tvstack = vstack.slice(0, -1 * len);\n\t\t\t\t\t\t\tlstack = lstack.slice(0, -1 * len);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstack.push(this.productions_[action[1]][0]);\n\t\t\t\t\t\tvstack.push(yyval.$);\n\t\t\t\t\t\tlstack.push(yyval._$);\n\t\t\t\t\t\tnewState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n\t\t\t\t\t\tstack.push(newState);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tconst root = (type, data) => ({ __prototype: 'MesaureLayout', type, data });\n\n\tconst singleLayout = (n) => ({ __prototype: 'SingleMLayout', measure: Number(n) });\n\tconst blockLayout = (seq) => ({ __prototype: 'BlockMLayout', seq });\n\tconst voltaBlock = (times, body, alternates) => ({ __prototype: 'VoltaMLayout', times: Number(times), body, alternates });\n\tconst abaBlock = (main, rest) => ({ __prototype: 'ABAMLayout', main, rest });\n\n\tconst segment = (n) => ({ segment: true, length: Number(n) });\n\n\tconst alternates = (items) =>\n\t\titems.map((item) => {\n\t\t\tif (item.__prototype === 'BlockMLayout') return item.seq;\n\n\t\t\treturn [item];\n\t\t});\n\n\tconst range = (start, end) => {\n\t\tstart = Number(start);\n\t\tend = Number(end);\n\n\t\tif (!(end >= start)) throw new Error(`invalid measure range: ${start}..${end}`);\n\n\t\treturn Array(end + 1 - start)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => singleLayout(start + i));\n\t};\n\n\tconst serializeSeq = (item, options) => {\n\t\tif (item.segment) {\n\t\t\tconst index = options.index;\n\t\t\toptions.index += item.length;\n\n\t\t\treturn Array(item.length)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => singleLayout(index + i));\n\t\t}\n\n\t\treturn [serialize(item, options)];\n\t};\n\n\tconst serialize = (item, options = { index: 1 }) => {\n\t\tconst speard = (seq) => [].concat(...seq.map((it) => serializeSeq(it, options)));\n\n\t\tswitch (item.__prototype) {\n\t\t\tcase 'BlockMLayout':\n\t\t\t\titem.seq = speard(item.seq);\n\n\t\t\t\tbreak;\n\t\t\tcase 'VoltaMLayout':\n\t\t\t\titem.body = speard(item.body);\n\t\t\t\titem.alternates = item.alternates && item.alternates.map(speard);\n\n\t\t\t\tbreak;\n\t\t\tcase 'ABAMLayout':\n\t\t\t\titem.main = serialize(item.main, options);\n\t\t\t\titem.rest = speard(item.rest);\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn item;\n\t};\n\t/* generated by jison-lex 0.3.4 */\n\tvar lexer = (function () {\n\t\tvar lexer = {\n\t\t\tEOF: 1,\n\n\t\t\tparseError: function parseError(str, hash) {\n\t\t\t\tif (this.yy.parser) {\n\t\t\t\t\tthis.yy.parser.parseError(str, hash);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(str);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// resets the lexer, sets new input\n\t\t\tsetInput: function (input, yy) {\n\t\t\t\tthis.yy = yy || this.yy || {};\n\t\t\t\tthis._input = input;\n\t\t\t\tthis._more = this._backtrack = this.done = false;\n\t\t\t\tthis.yylineno = this.yyleng = 0;\n\t\t\t\tthis.yytext = this.matched = this.match = '';\n\t\t\t\tthis.conditionStack = ['INITIAL'];\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: 1,\n\t\t\t\t\tfirst_column: 0,\n\t\t\t\t\tlast_line: 1,\n\t\t\t\t\tlast_column: 0,\n\t\t\t\t};\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [0, 0];\n\t\t\t\t}\n\t\t\t\tthis.offset = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// consumes and returns one char from the input\n\t\t\tinput: function () {\n\t\t\t\tvar ch = this._input[0];\n\t\t\t\tthis.yytext += ch;\n\t\t\t\tthis.yyleng++;\n\t\t\t\tthis.offset++;\n\t\t\t\tthis.match += ch;\n\t\t\t\tthis.matched += ch;\n\t\t\t\tvar lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno++;\n\t\t\t\t\tthis.yylloc.last_line++;\n\t\t\t\t} else {\n\t\t\t\t\tthis.yylloc.last_column++;\n\t\t\t\t}\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range[1]++;\n\t\t\t\t}\n\n\t\t\t\tthis._input = this._input.slice(1);\n\t\t\t\treturn ch;\n\t\t\t},\n\n\t\t\t// unshifts one char (or a string) into the input\n\t\t\tunput: function (ch) {\n\t\t\t\tvar len = ch.length;\n\t\t\t\tvar lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n\t\t\t\tthis._input = ch + this._input;\n\t\t\t\tthis.yytext = this.yytext.substr(0, this.yytext.length - len);\n\t\t\t\t//this.yyleng -= len;\n\t\t\t\tthis.offset -= len;\n\t\t\t\tvar oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n\t\t\t\tthis.match = this.match.substr(0, this.match.length - 1);\n\t\t\t\tthis.matched = this.matched.substr(0, this.matched.length - 1);\n\n\t\t\t\tif (lines.length - 1) {\n\t\t\t\t\tthis.yylineno -= lines.length - 1;\n\t\t\t\t}\n\t\t\t\tvar r = this.yylloc.range;\n\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length\n\t\t\t\t\t\t: this.yylloc.first_column - len,\n\t\t\t\t};\n\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [r[0], r[0] + this.yyleng - len];\n\t\t\t\t}\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, caches matched text and appends it on next action\n\t\t\tmore: function () {\n\t\t\t\tthis._more = true;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n\t\t\treject: function () {\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\tthis._backtrack = true;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError(\n\t\t\t\t\t\t'Lexical error on line ' +\n\t\t\t\t\t\t\t(this.yylineno + 1) +\n\t\t\t\t\t\t\t'. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' +\n\t\t\t\t\t\t\tthis.showPosition(),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// retain first n characters of the match\n\t\t\tless: function (n) {\n\t\t\t\tthis.unput(this.match.slice(n));\n\t\t\t},\n\n\t\t\t// displays already matched input, i.e. for error messages\n\t\t\tpastInput: function () {\n\t\t\t\tvar past = this.matched.substr(0, this.matched.length - this.match.length);\n\t\t\t\treturn (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays upcoming input, i.e. for error messages\n\t\t\tupcomingInput: function () {\n\t\t\t\tvar next = this.match;\n\t\t\t\tif (next.length < 20) {\n\t\t\t\t\tnext += this._input.substr(0, 20 - next.length);\n\t\t\t\t}\n\t\t\t\treturn (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays the character position where the lexing error occurred, i.e. for error messages\n\t\t\tshowPosition: function () {\n\t\t\t\tvar pre = this.pastInput();\n\t\t\t\tvar c = new Array(pre.length + 1).join('-');\n\t\t\t\treturn pre + this.upcomingInput() + '\\n' + c + '^';\n\t\t\t},\n\n\t\t\t// test the lexed token: return FALSE when not a match, otherwise return token\n\t\t\ttest_match: function (match, indexed_rule) {\n\t\t\t\tvar token, lines, backup;\n\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t// save context\n\t\t\t\t\tbackup = {\n\t\t\t\t\t\tyylineno: this.yylineno,\n\t\t\t\t\t\tyylloc: {\n\t\t\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\t\t\tlast_line: this.last_line,\n\t\t\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\t\t\tlast_column: this.yylloc.last_column,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tyytext: this.yytext,\n\t\t\t\t\t\tmatch: this.match,\n\t\t\t\t\t\tmatches: this.matches,\n\t\t\t\t\t\tmatched: this.matched,\n\t\t\t\t\t\tyyleng: this.yyleng,\n\t\t\t\t\t\toffset: this.offset,\n\t\t\t\t\t\t_more: this._more,\n\t\t\t\t\t\t_input: this._input,\n\t\t\t\t\t\tyy: this.yy,\n\t\t\t\t\t\tconditionStack: this.conditionStack.slice(0),\n\t\t\t\t\t\tdone: this.done,\n\t\t\t\t\t};\n\t\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\t\tbackup.yylloc.range = this.yylloc.range.slice(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno += lines.length;\n\t\t\t\t}\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.last_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.last_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length\n\t\t\t\t\t\t: this.yylloc.last_column + match[0].length,\n\t\t\t\t};\n\t\t\t\tthis.yytext += match[0];\n\t\t\t\tthis.match += match[0];\n\t\t\t\tthis.matches = match;\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [this.offset, (this.offset += this.yyleng)];\n\t\t\t\t}\n\t\t\t\tthis._more = false;\n\t\t\t\tthis._backtrack = false;\n\t\t\t\tthis._input = this._input.slice(match[0].length);\n\t\t\t\tthis.matched += match[0];\n\t\t\t\ttoken = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\t\t\t\tif (this.done && this._input) {\n\t\t\t\t\tthis.done = false;\n\t\t\t\t}\n\t\t\t\tif (token) {\n\t\t\t\t\treturn token;\n\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t// recover context\n\t\t\t\t\tfor (var k in backup) {\n\t\t\t\t\t\tthis[k] = backup[k];\n\t\t\t\t\t}\n\t\t\t\t\treturn false; // rule action called reject() implying the next rule should be tested instead.\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\t// return next match in input\n\t\t\tnext: function () {\n\t\t\t\tif (this.done) {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t}\n\t\t\t\tif (!this._input) {\n\t\t\t\t\tthis.done = true;\n\t\t\t\t}\n\n\t\t\t\tvar token, match, tempMatch, index;\n\t\t\t\tif (!this._more) {\n\t\t\t\t\tthis.yytext = '';\n\t\t\t\t\tthis.match = '';\n\t\t\t\t}\n\t\t\t\tvar rules = this._currentRules();\n\t\t\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\t\t\ttempMatch = this._input.match(this.rules[rules[i]]);\n\t\t\t\t\tif (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n\t\t\t\t\t\tmatch = tempMatch;\n\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t\t\ttoken = this.test_match(tempMatch, rules[i]);\n\t\t\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\t\t\treturn token;\n\t\t\t\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\t\t\tcontinue; // rule action called reject() implying a rule MISmatch.\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!this.options.flex) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (match) {\n\t\t\t\t\ttoken = this.test_match(match, rules[index]);\n\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\treturn token;\n\t\t\t\t\t}\n\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this._input === '') {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return next match that has a token\n\t\t\tlex: function lex() {\n\t\t\t\tvar r = this.next();\n\t\t\t\tif (r) {\n\t\t\t\t\treturn r;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.lex();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n\t\t\tbegin: function begin(condition) {\n\t\t\t\tthis.conditionStack.push(condition);\n\t\t\t},\n\n\t\t\t// pop the previously active lexer condition state off the condition stack\n\t\t\tpopState: function popState() {\n\t\t\t\tvar n = this.conditionStack.length - 1;\n\t\t\t\tif (n > 0) {\n\t\t\t\t\treturn this.conditionStack.pop();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditionStack[0];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// produce the lexer rule set which is active for the currently active lexer condition state\n\t\t\t_currentRules: function _currentRules() {\n\t\t\t\tif (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n\t\t\t\t\treturn this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditions['INITIAL'].rules;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n\t\t\ttopState: function topState(n) {\n\t\t\t\tn = this.conditionStack.length - 1 - Math.abs(n || 0);\n\t\t\t\tif (n >= 0) {\n\t\t\t\t\treturn this.conditionStack[n];\n\t\t\t\t} else {\n\t\t\t\t\treturn 'INITIAL';\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// alias for begin(condition)\n\t\t\tpushState: function pushState(condition) {\n\t\t\t\tthis.begin(condition);\n\t\t\t},\n\n\t\t\t// return the number of states currently on the stack\n\t\t\tstateStackSize: function stateStackSize() {\n\t\t\t\treturn this.conditionStack.length;\n\t\t\t},\n\t\t\toptions: {},\n\t\t\tperformAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n\t\t\t\tvar YYSTATE = YY_START;\n\t\t\t\tswitch ($avoiding_name_collisions) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn 14;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\treturn 5;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\trules: [/^(?:\\s+)/, /^(?:([*,\\[\\]<>{}]))/, /^(?:(([1-9])([0-9])*))/, /^(?:(([a-z])+):)/, /^(?:\\.\\.)/, /^(?:$)/],\n\t\t\tconditions: { INITIAL: { rules: [0, 1, 2, 3, 4, 5], inclusive: true } },\n\t\t};\n\t\treturn lexer;\n\t})();\n\tparser.lexer = lexer;\n\tfunction Parser() {\n\t\tthis.yy = {};\n\t}\n\tParser.prototype = parser;\n\tparser.Parser = Parser;\n\treturn new Parser();\n})();\n\nexport { parser };\nexport var Parser = parser.Parser;\nexport var parse = function () {\n\treturn parser.parse.apply(parser, arguments);\n};\nexport default { parser: parser, Parser: parser.Parser, parse: parse };\n","import type { MeasureLayout } from './measureLayout';\nimport * as measureLayout from './measureLayout';\nimport grammar from './grammar.jison';\nimport { recoverJSON } from '../starry/aux_/typedJSON';\n\nconst parseCode = (code: string): MeasureLayout => {\n\tconst raw = grammar.parse(code);\n\n\tif (raw?.data) return recoverJSON(raw.data, measureLayout);\n\n\treturn null;\n};\n\nexport { parseCode };\n","export interface RawItem {\n\tid: string;\n\tleftBounds: string[];\n\trightBounds: string[];\n\tconjunction: string;\n}\n\nexport enum StaffGroupType {\n\tDefault,\n\tBrace, // {}\n\tBracket, // <>\n\tSquare, // []\n}\n\nexport enum StaffConjunctionType {\n\tBlank,\n\tDashed,\n\tSolid,\n}\n\ntype StaffID = string;\n\nexport interface StaffGroup {\n\ttype: StaffGroupType;\n\tsubs?: StaffGroup[];\n\tstaff?: StaffID;\n\tlevel?: number;\n\tgrand?: boolean;\n}\n\ninterface StaffGroupTrait {\n\tgroup: StaffGroup;\n\trange: [number, number];\n\tkey: string;\n}\n\nconst singleGroup = (id: string) => ({ type: StaffGroupType.Default, staff: id });\n\nconst BOUNDS_TO_GROUPTYPE: { [bound: string]: StaffGroupType } = {\n\t'{': StaffGroupType.Brace,\n\t'}': StaffGroupType.Brace,\n\t'<': StaffGroupType.Bracket,\n\t'>': StaffGroupType.Bracket,\n\t'[': StaffGroupType.Square,\n\t']': StaffGroupType.Square,\n};\n\nconst OPEN_BOUNDS = '{<[';\nconst CLOSE_BOUNDS = '}>]';\n\nconst CONJUNCTIONS_MAP: { [conj: string]: StaffConjunctionType } = {\n\t',': StaffConjunctionType.Blank,\n\t'-': StaffConjunctionType.Solid,\n\t'.': StaffConjunctionType.Dashed,\n};\n\nconst bracketCode = (type: StaffGroupType, partial: boolean = false): ((inner: string) => string) => {\n\tif (type === StaffGroupType.Default) return (inner) => inner;\n\n\tif (partial) {\n\t\tswitch (type) {\n\t\t\tcase StaffGroupType.Brace:\n\t\t\t\treturn (inner) => `{${inner}`;\n\t\t\tcase StaffGroupType.Bracket:\n\t\t\t\treturn (inner) => `<${inner}`;\n\t\t\tcase StaffGroupType.Square:\n\t\t\t\treturn (inner) => `[${inner}`;\n\t\t\tdefault:\n\t\t\t\treturn (inner) => inner;\n\t\t}\n\t}\n\n\tswitch (type) {\n\t\tcase StaffGroupType.Brace:\n\t\t\treturn (inner) => `{${inner}}`;\n\t\tcase StaffGroupType.Bracket:\n\t\t\treturn (inner) => `<${inner}>`;\n\t\tcase StaffGroupType.Square:\n\t\t\treturn (inner) => `[${inner}]`;\n\t\tdefault:\n\t\t\treturn (inner) => inner;\n\t}\n};\n\nconst randomB64 = (): string => {\n\tconst code = btoa(Math.random().toString().substr(2)).replace(/=/g, '');\n\n\treturn code.split('').reverse().slice(0, 6).join('');\n};\n\nconst makeUniqueName = (set: Set, index: number, prefix?: string): string => {\n\tlet name = prefix;\n\tif (!name) name = index.toString();\n\telse if (set.has(name)) name += '_' + index.toString();\n\n\twhile (set.has(name)) name += '_' + randomB64();\n\n\treturn name;\n};\n\nconst makeGroupsFromRaw = (parent: StaffGroup, seq: string[]): string[] => {\n\tlet remains = seq;\n\twhile (remains.length) {\n\t\tconst word = remains.shift();\n\t\tconst bound = BOUNDS_TO_GROUPTYPE[word];\n\t\tif (bound) {\n\t\t\tif (CLOSE_BOUNDS.includes(word) && bound === parent.type) break;\n\n\t\t\tif (OPEN_BOUNDS.includes(word)) {\n\t\t\t\tconst group = { type: bound, level: Number.isFinite(parent.level) ? parent.level + 1 : 0 };\n\t\t\t\tremains = makeGroupsFromRaw(group, remains);\n\n\t\t\t\tparent.subs = parent.subs || [];\n\t\t\t\tparent.subs.push(group);\n\t\t\t}\n\t\t} else {\n\t\t\tparent.subs = parent.subs || [];\n\t\t\tparent.subs.push(singleGroup(word));\n\t\t}\n\t}\n\n\twhile (parent.type === StaffGroupType.Default && parent.subs && parent.subs.length === 1) {\n\t\tconst sub = parent.subs[0];\n\t\tparent.type = sub.type;\n\t\tparent.subs = sub.subs;\n\t\tparent.staff = sub.staff;\n\t\tparent.level = sub.level;\n\t}\n\n\twhile (parent.subs && parent.subs.length === 1 && parent.subs[0].type === StaffGroupType.Default) {\n\t\tconst sub = parent.subs[0];\n\t\tparent.subs = sub.subs;\n\t\tparent.staff = sub.staff;\n\t}\n\n\tparent.grand = parent.type === StaffGroupType.Brace && parent.subs && parent.subs.every((sub) => sub.staff);\n\n\treturn remains;\n};\n\nconst groupHead = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return groupHead(group.subs[0]);\n};\n\nconst groupTail = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return groupTail(group.subs[group.subs.length - 1]);\n};\n\nexport const groupKey = (group: StaffGroup): string => {\n\tif (group.staff) return group.staff;\n\telse if (group.subs) return `${groupHead(group)}-${groupTail(group)}`;\n};\n\nconst groupDict = (group: StaffGroup, dict: { [key: string]: StaffGroup }): void => {\n\tdict[groupKey(group)] = group;\n\n\tif (group.subs) group.subs.forEach((sub) => groupDict(sub, dict));\n};\n\nexport interface MaskedStaffLayout {\n\tstaffIds: string[];\n\tconjunctions: StaffConjunctionType[];\n\tgroups: StaffGroupTrait[];\n}\n\nclass StaffLayout {\n\tstaffIds: string[];\n\tconjunctions: StaffConjunctionType[];\n\tgroup: StaffGroup;\n\tgroups: StaffGroupTrait[];\n\n\tmaskCache: Map;\n\n\tconstructor(raw: RawItem[]) {\n\t\t// make unique ids\n\t\tconst ids = new Set();\n\t\traw.forEach((item, i) => {\n\t\t\titem.id = makeUniqueName(ids, i + 1, item.id);\n\t\t\tids.add(item.id);\n\t\t});\n\t\tthis.staffIds = raw.map((item) => item.id);\n\t\tthis.conjunctions = raw.slice(0, raw.length - 1).map((item) => (item.conjunction ? CONJUNCTIONS_MAP[item.conjunction] : StaffConjunctionType.Blank));\n\n\t\t// make groups\n\t\tconst seq = [].concat(...raw.map((item) => [...item.leftBounds, item.id, ...item.rightBounds]));\n\t\tthis.group = { type: StaffGroupType.Default };\n\t\tmakeGroupsFromRaw(this.group, seq);\n\n\t\tconst dict = {};\n\t\tgroupDict(this.group, dict);\n\t\tthis.groups = Object.entries(dict).map(([key, group]) => {\n\t\t\tlet ids = key.split('-');\n\t\t\tif (ids.length === 1) ids = [ids[0], ids[0]];\n\t\t\tconst range = ids.map((id) => this.staffIds.indexOf(id));\n\n\t\t\treturn {\n\t\t\t\tgroup,\n\t\t\t\trange,\n\t\t\t\tkey,\n\t\t\t} as StaffGroupTrait;\n\t\t});\n\n\t\tthis.maskCache = new Map();\n\t}\n\n\tget stavesCount(): number {\n\t\tif (!this.staffIds) return null;\n\n\t\treturn this.staffIds.length;\n\t}\n\n\tget partGroups(): StaffGroupTrait[] {\n\t\tconst grands = this.groups.filter((g) => g.group.grand);\n\t\tconst parts = this.groups.filter((g) => {\n\t\t\tif (g.group.grand) return true;\n\n\t\t\tif (g.range[0] === g.range[1]) {\n\t\t\t\tconst index = g.range[0];\n\t\t\t\treturn !grands.some((g) => g.range[0] <= index && g.range[1] >= index);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t\treturn parts;\n\t}\n\n\tget standaloneGroups(): string[][] {\n\t\tconst groups: string[][] = [];\n\t\tconst collect = (group: StaffGroup): void => {\n\t\t\tif (group.grand) groups.push(group.subs.map((sub) => sub.staff));\n\t\t\telse if (group.staff) groups.push([group.staff]);\n\t\t\telse if (group.subs) group.subs.forEach((sub) => collect(sub));\n\t\t};\n\t\tcollect(this.group);\n\n\t\treturn groups;\n\t}\n\n\tconjunctionBetween(upStaff: number, downStaff: number): StaffConjunctionType {\n\t\tif (downStaff <= upStaff) return null;\n\n\t\tlet con = StaffConjunctionType.Solid;\n\t\tfor (let i = upStaff; i < downStaff; i++) con = Math.min(con, this.conjunctions[i]);\n\n\t\treturn con;\n\t}\n\n\tstatic makeMaskLayout(layout: StaffLayout, mask: number): MaskedStaffLayout {\n\t\tconst staffIds = layout.staffIds.filter((_, i) => mask & (1 << i));\n\t\tif (staffIds.length === layout.staffIds.length) {\n\t\t\treturn {\n\t\t\t\tstaffIds: layout.staffIds,\n\t\t\t\tconjunctions: layout.conjunctions,\n\t\t\t\tgroups: layout.groups,\n\t\t\t};\n\t\t}\n\n\t\tconst groups = layout.groups\n\t\t\t.map((g) => ({ ids: layout.staffIds.slice(g.range[0], g.range[1] + 1).filter((id) => staffIds.includes(id)), ...g }))\n\t\t\t.filter(({ ids }) => ids.length)\n\t\t\t.map(\n\t\t\t\t({ ids, ...g }) =>\n\t\t\t\t\t({\n\t\t\t\t\t\tkey: g.key,\n\t\t\t\t\t\tgroup: g.group,\n\t\t\t\t\t\trange: [staffIds.indexOf(ids[0]), staffIds.indexOf(ids[ids.length - 1])],\n\t\t\t\t\t} as StaffGroupTrait)\n\t\t\t);\n\n\t\tconst conjunctions = staffIds.slice(0, staffIds.length - 1).map((id, i) => {\n\t\t\tconst nextId = staffIds[i + 1];\n\t\t\treturn layout.conjunctionBetween(layout.staffIds.indexOf(id), layout.staffIds.indexOf(nextId));\n\t\t});\n\n\t\treturn {\n\t\t\tstaffIds,\n\t\t\tconjunctions,\n\t\t\tgroups,\n\t\t};\n\t}\n\n\tmask(mask: number): MaskedStaffLayout {\n\t\tif (!this.maskCache.get(mask)) this.maskCache.set(mask, StaffLayout.makeMaskLayout(this, mask));\n\n\t\treturn this.maskCache.get(mask);\n\t}\n\n\t// {,}\t*\t1,1\t\t=> {,}\n\t// {,}\t*\t1,x\t\t=> {\n\t// {,}\t*\t0,x\t\t=>\n\t// {,}\t*\t0,1\t\t=> {}\n\tpartialMaskCode(bits: (1 | 0)[], withIds = false): string {\n\t\ttype Attendance = 0 | 1 | null;\n\t\tconst staffStatus = this.staffIds\n\t\t\t.map((_, i) => (i < bits.length ? bits[i] : null))\n\t\t\t.reduce((status, x, i) => {\n\t\t\t\tstatus[this.staffIds[i]] = x;\n\t\t\t\treturn status;\n\t\t\t}, {} as { [id: string]: Attendance });\n\n\t\tconst joinGroup = (group: StaffGroup): [string, boolean] => {\n\t\t\tif (group.staff) return [staffStatus[group.staff] ? group.staff : null, staffStatus[group.staff] === null];\n\n\t\t\tconst subs = group.subs.map((sub) => joinGroup(sub));\n\t\t\tconst subStr = subs\n\t\t\t\t.map((pair) => pair[0])\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(',');\n\t\t\tconst partial = subs.some(([_, partial]) => partial);\n\n\t\t\tconst code = subStr ? bracketCode(group.type, partial)(subStr) : null;\n\n\t\t\treturn [code, partial];\n\t\t};\n\n\t\tlet [code] = joinGroup(this.group);\n\t\tcode = code || '';\n\t\tif (!withIds) code = code.replace(/[_\\w]+/g, '');\n\n\t\treturn code;\n\t}\n}\n\nexport default StaffLayout;\n","// @ts-nocheck\n/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function () {\n\tvar o = function (k, v, o, l) {\n\t\t\tfor (o = o || {}, l = k.length; l--; o[k[l]] = v);\n\t\t\treturn o;\n\t\t},\n\t\t$V0 = [1, 15],\n\t\t$V1 = [1, 16],\n\t\t$V2 = [1, 17],\n\t\t$V3 = [1, 11],\n\t\t$V4 = [1, 12],\n\t\t$V5 = [1, 13],\n\t\t$V6 = [1, 24],\n\t\t$V7 = [1, 25],\n\t\t$V8 = [1, 26],\n\t\t$V9 = [5, 11, 12, 13, 15, 16, 17, 21, 22, 23, 24],\n\t\t$Va = [15, 16, 17, 21, 22, 23, 24],\n\t\t$Vb = [11, 12, 13, 15, 16, 17, 21, 22, 23, 24],\n\t\t$Vc = [5, 11, 12, 13, 21, 22, 23, 24];\n\tvar parser = {\n\t\ttrace: function trace() {},\n\t\tyy: {},\n\t\tsymbols_: {\n\t\t\terror: 2,\n\t\t\tstart_symbol: 3,\n\t\t\tstaff_layout: 4,\n\t\t\tEOF: 5,\n\t\t\tseq: 6,\n\t\t\tseq_id: 7,\n\t\t\tseq_br: 8,\n\t\t\tseq_con: 9,\n\t\t\tbound_left: 10,\n\t\t\t'<': 11,\n\t\t\t'[': 12,\n\t\t\t'{': 13,\n\t\t\tbound_right: 14,\n\t\t\t'>': 15,\n\t\t\t']': 16,\n\t\t\t'}': 17,\n\t\t\tbound_lefts: 18,\n\t\t\tbound_rights: 19,\n\t\t\tconjunction: 20,\n\t\t\t'-': 21,\n\t\t\t',': 22,\n\t\t\t'.': 23,\n\t\t\tID: 24,\n\t\t\tseq_bl: 25,\n\t\t\t$accept: 0,\n\t\t\t$end: 1,\n\t\t},\n\t\tterminals_: { 2: 'error', 5: 'EOF', 11: '<', 12: '[', 13: '{', 15: '>', 16: ']', 17: '}', 21: '-', 22: ',', 23: '.', 24: 'ID' },\n\t\tproductions_: [\n\t\t\t0,\n\t\t\t[3, 2],\n\t\t\t[4, 1],\n\t\t\t[6, 0],\n\t\t\t[6, 1],\n\t\t\t[6, 1],\n\t\t\t[6, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[10, 1],\n\t\t\t[14, 1],\n\t\t\t[14, 1],\n\t\t\t[14, 1],\n\t\t\t[18, 1],\n\t\t\t[18, 2],\n\t\t\t[19, 1],\n\t\t\t[19, 2],\n\t\t\t[20, 1],\n\t\t\t[20, 1],\n\t\t\t[20, 1],\n\t\t\t[7, 1],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[7, 2],\n\t\t\t[25, 1],\n\t\t\t[25, 2],\n\t\t\t[25, 2],\n\t\t\t[25, 2],\n\t\t\t[8, 2],\n\t\t\t[8, 2],\n\t\t\t[8, 2],\n\t\t\t[9, 1],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t\t[9, 2],\n\t\t],\n\t\tperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n\t\t\t/* this == yyval */\n\n\t\t\tvar $0 = $$.length - 1;\n\t\t\tswitch (yystate) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\t$$[$0].next();\n\n\t\t\t\t\tthis.$ = $$[$0].toJSON();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.$ = new Seq();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13:\n\t\t\t\tcase 15:\n\t\t\t\t\tthis.$ = [$$[$0]];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 14:\n\t\t\t\tcase 16:\n\t\t\t\t\tthis.$ = [...$$[$0 - 1], $$[$0]];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 20:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.i($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 21:\n\t\t\t\tcase 23:\n\t\t\t\t\t$$[$0 - 1].next();\n\t\t\t\t\t$$[$0 - 1].tip.i($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 22:\n\t\t\t\tcase 24:\n\t\t\t\t\t$$[$0 - 1].tip.i($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 25:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.bl($$[$0]);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 26:\n\t\t\t\tcase 27:\n\t\t\t\t\t$$[$0 - 1].next();\n\t\t\t\t\t$$[$0 - 1].tip.bl($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 28:\n\t\t\t\t\t$$[$0 - 1].tip.bl($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 29:\n\t\t\t\tcase 30:\n\t\t\t\tcase 31:\n\t\t\t\t\t$$[$0 - 1].tip.br($$[$0]);\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 32:\n\t\t\t\t\tthis.$ = new Seq();\n\t\t\t\t\tthis.$.tip.con($$[$0]);\n\t\t\t\t\tthis.$.next();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 33:\n\t\t\t\tcase 34:\n\t\t\t\tcase 35:\n\t\t\t\tcase 36:\n\t\t\t\t\t$$[$0 - 1].tip.con($$[$0]);\n\t\t\t\t\t$$[$0 - 1].next();\n\n\t\t\t\t\tthis.$ = $$[$0 - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\ttable: [\n\t\t\t{ 3: 1, 4: 2, 5: [2, 3], 6: 3, 7: 4, 8: 5, 9: 6, 10: 14, 11: $V0, 12: $V1, 13: $V2, 18: 10, 20: 9, 21: $V3, 22: $V4, 23: $V5, 24: [1, 7], 25: 8 },\n\t\t\t{ 1: [3] },\n\t\t\t{ 5: [1, 18] },\n\t\t\t{ 5: [2, 2] },\n\t\t\t{ 5: [2, 4], 10: 14, 11: $V0, 12: $V1, 13: $V2, 14: 23, 15: $V6, 16: $V7, 17: $V8, 18: 22, 19: 20, 20: 21, 21: $V3, 22: $V4, 23: $V5, 24: [1, 19] },\n\t\t\t{ 5: [2, 5], 10: 14, 11: $V0, 12: $V1, 13: $V2, 18: 29, 20: 28, 21: $V3, 22: $V4, 23: $V5, 24: [1, 27] },\n\t\t\t{ 5: [2, 6], 10: 14, 11: $V0, 12: $V1, 13: $V2, 14: 23, 15: $V6, 16: $V7, 17: $V8, 18: 33, 19: 31, 20: 32, 21: $V3, 22: $V4, 23: $V5, 24: [1, 30] },\n\t\t\to($V9, [2, 20]),\n\t\t\t{ 14: 23, 15: $V6, 16: $V7, 17: $V8, 19: 35, 20: 36, 21: $V3, 22: $V4, 23: $V5, 24: [1, 34] },\n\t\t\to($V9, [2, 32]),\n\t\t\to($Va, [2, 25], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 17]),\n\t\t\to($V9, [2, 18]),\n\t\t\to($V9, [2, 19]),\n\t\t\to($Vb, [2, 13]),\n\t\t\to($Vb, [2, 7]),\n\t\t\to($Vb, [2, 8]),\n\t\t\to($Vb, [2, 9]),\n\t\t\t{ 1: [2, 1] },\n\t\t\to($V9, [2, 21]),\n\t\t\to($Vc, [2, 29], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 33]),\n\t\t\to($Va, [2, 26], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 15]),\n\t\t\to($V9, [2, 10]),\n\t\t\to($V9, [2, 11]),\n\t\t\to($V9, [2, 12]),\n\t\t\to($V9, [2, 23]),\n\t\t\to($V9, [2, 35]),\n\t\t\to($Va, [2, 27], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 24]),\n\t\t\to($Vc, [2, 31], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 36]),\n\t\t\to($Va, [2, 28], { 10: 37, 11: $V0, 12: $V1, 13: $V2 }),\n\t\t\to($V9, [2, 22]),\n\t\t\to($Vc, [2, 30], { 14: 38, 15: $V6, 16: $V7, 17: $V8 }),\n\t\t\to($V9, [2, 34]),\n\t\t\to($Vb, [2, 14]),\n\t\t\to($V9, [2, 16]),\n\t\t],\n\t\tdefaultActions: { 3: [2, 2], 18: [2, 1] },\n\t\tparseError: function parseError(str, hash) {\n\t\t\tif (hash.recoverable) {\n\t\t\t\tthis.trace(str);\n\t\t\t} else {\n\t\t\t\tvar error = new Error(str);\n\t\t\t\terror.hash = hash;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tparse: function parse(input) {\n\t\t\tvar self = this,\n\t\t\t\tstack = [0],\n\t\t\t\ttstack = [],\n\t\t\t\tvstack = [null],\n\t\t\t\tlstack = [],\n\t\t\t\ttable = this.table,\n\t\t\t\tyytext = '',\n\t\t\t\tyylineno = 0,\n\t\t\t\tyyleng = 0,\n\t\t\t\trecovering = 0,\n\t\t\t\tTERROR = 2,\n\t\t\t\tEOF = 1;\n\t\t\tvar args = lstack.slice.call(arguments, 1);\n\t\t\tvar lexer = Object.create(this.lexer);\n\t\t\tvar sharedState = { yy: {} };\n\t\t\tfor (var k in this.yy) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n\t\t\t\t\tsharedState.yy[k] = this.yy[k];\n\t\t\t\t}\n\t\t\t}\n\t\t\tlexer.setInput(input, sharedState.yy);\n\t\t\tsharedState.yy.lexer = lexer;\n\t\t\tsharedState.yy.parser = this;\n\t\t\tif (typeof lexer.yylloc == 'undefined') {\n\t\t\t\tlexer.yylloc = {};\n\t\t\t}\n\t\t\tvar yyloc = lexer.yylloc;\n\t\t\tlstack.push(yyloc);\n\t\t\tvar ranges = lexer.options && lexer.options.ranges;\n\t\t\tif (typeof sharedState.yy.parseError === 'function') {\n\t\t\t\tthis.parseError = sharedState.yy.parseError;\n\t\t\t} else {\n\t\t\t\tthis.parseError = Object.getPrototypeOf(this).parseError;\n\t\t\t}\n\t\t\tfunction popStack(n) {\n\t\t\t\tstack.length = stack.length - 2 * n;\n\t\t\t\tvstack.length = vstack.length - n;\n\t\t\t\tlstack.length = lstack.length - n;\n\t\t\t}\n\t\t\t_token_stack: var lex = function () {\n\t\t\t\tvar token;\n\t\t\t\ttoken = lexer.lex() || EOF;\n\t\t\t\tif (typeof token !== 'number') {\n\t\t\t\t\ttoken = self.symbols_[token] || token;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t};\n\t\t\tvar symbol,\n\t\t\t\tpreErrorSymbol,\n\t\t\t\tstate,\n\t\t\t\taction,\n\t\t\t\ta,\n\t\t\t\tr,\n\t\t\t\tyyval = {},\n\t\t\t\tp,\n\t\t\t\tlen,\n\t\t\t\tnewState,\n\t\t\t\texpected;\n\t\t\twhile (true) {\n\t\t\t\tstate = stack[stack.length - 1];\n\t\t\t\tif (this.defaultActions[state]) {\n\t\t\t\t\taction = this.defaultActions[state];\n\t\t\t\t} else {\n\t\t\t\t\tif (symbol === null || typeof symbol == 'undefined') {\n\t\t\t\t\t\tsymbol = lex();\n\t\t\t\t\t}\n\t\t\t\t\taction = table[state] && table[state][symbol];\n\t\t\t\t}\n\t\t\t\tif (typeof action === 'undefined' || !action.length || !action[0]) {\n\t\t\t\t\tvar errStr = '';\n\t\t\t\t\texpected = [];\n\t\t\t\t\tfor (p in table[state]) {\n\t\t\t\t\t\tif (this.terminals_[p] && p > TERROR) {\n\t\t\t\t\t\t\texpected.push(\"'\" + this.terminals_[p] + \"'\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (lexer.showPosition) {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t':\\n' +\n\t\t\t\t\t\t\tlexer.showPosition() +\n\t\t\t\t\t\t\t'\\nExpecting ' +\n\t\t\t\t\t\t\texpected.join(', ') +\n\t\t\t\t\t\t\t\", got '\" +\n\t\t\t\t\t\t\t(this.terminals_[symbol] || symbol) +\n\t\t\t\t\t\t\t\"'\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrStr =\n\t\t\t\t\t\t\t'Parse error on line ' +\n\t\t\t\t\t\t\t(yylineno + 1) +\n\t\t\t\t\t\t\t': Unexpected ' +\n\t\t\t\t\t\t\t(symbol == EOF ? 'end of input' : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.parseError(errStr, {\n\t\t\t\t\t\ttext: lexer.match,\n\t\t\t\t\t\ttoken: this.terminals_[symbol] || symbol,\n\t\t\t\t\t\tline: lexer.yylineno,\n\t\t\t\t\t\tloc: yyloc,\n\t\t\t\t\t\texpected: expected,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (action[0] instanceof Array && action.length > 1) {\n\t\t\t\t\tthrow new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n\t\t\t\t}\n\t\t\t\tswitch (action[0]) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tstack.push(symbol);\n\t\t\t\t\t\tvstack.push(lexer.yytext);\n\t\t\t\t\t\tlstack.push(lexer.yylloc);\n\t\t\t\t\t\tstack.push(action[1]);\n\t\t\t\t\t\tsymbol = null;\n\t\t\t\t\t\tif (!preErrorSymbol) {\n\t\t\t\t\t\t\tyyleng = lexer.yyleng;\n\t\t\t\t\t\t\tyytext = lexer.yytext;\n\t\t\t\t\t\t\tyylineno = lexer.yylineno;\n\t\t\t\t\t\t\tyyloc = lexer.yylloc;\n\t\t\t\t\t\t\tif (recovering > 0) {\n\t\t\t\t\t\t\t\trecovering--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsymbol = preErrorSymbol;\n\t\t\t\t\t\t\tpreErrorSymbol = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tlen = this.productions_[action[1]][1];\n\t\t\t\t\t\tyyval.$ = vstack[vstack.length - len];\n\t\t\t\t\t\tyyval._$ = {\n\t\t\t\t\t\t\tfirst_line: lstack[lstack.length - (len || 1)].first_line,\n\t\t\t\t\t\t\tlast_line: lstack[lstack.length - 1].last_line,\n\t\t\t\t\t\t\tfirst_column: lstack[lstack.length - (len || 1)].first_column,\n\t\t\t\t\t\t\tlast_column: lstack[lstack.length - 1].last_column,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (ranges) {\n\t\t\t\t\t\t\tyyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tr = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n\t\t\t\t\t\tif (typeof r !== 'undefined') {\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (len) {\n\t\t\t\t\t\t\tstack = stack.slice(0, -1 * len * 2);\n\t\t\t\t\t\t\tvstack = vstack.slice(0, -1 * len);\n\t\t\t\t\t\t\tlstack = lstack.slice(0, -1 * len);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstack.push(this.productions_[action[1]][0]);\n\t\t\t\t\t\tvstack.push(yyval.$);\n\t\t\t\t\t\tlstack.push(yyval._$);\n\t\t\t\t\t\tnewState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n\t\t\t\t\t\tstack.push(newState);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tclass Item {\n\t\tconstructor() {\n\t\t\tthis.id = null;\n\t\t\tthis.leftBounds = [];\n\t\t\tthis.rightBounds = [];\n\t\t\tthis.conjunction = null;\n\t\t}\n\n\t\ti(id) {\n\t\t\tthis.id = id;\n\t\t\treturn this;\n\t\t}\n\n\t\tbl(leftBounds) {\n\t\t\tthis.leftBounds = leftBounds;\n\t\t\treturn this;\n\t\t}\n\n\t\tbr(rightBounds) {\n\t\t\tthis.rightBounds = rightBounds;\n\t\t\treturn this;\n\t\t}\n\n\t\tcon(conjunction) {\n\t\t\tthis.conjunction = conjunction;\n\t\t\treturn this;\n\t\t}\n\t}\n\n\tclass Seq {\n\t\tconstructor() {\n\t\t\tthis.body = [];\n\t\t\tthis.tip = new Item();\n\t\t}\n\n\t\tnext() {\n\t\t\tthis.body.push(this.tip);\n\t\t\tthis.tip = new Item();\n\t\t\treturn this;\n\t\t}\n\n\t\ttoJSON() {\n\t\t\treturn this.body;\n\t\t}\n\t}\n\t/* generated by jison-lex 0.3.4 */\n\tvar lexer = (function () {\n\t\tvar lexer = {\n\t\t\tEOF: 1,\n\n\t\t\tparseError: function parseError(str, hash) {\n\t\t\t\tif (this.yy.parser) {\n\t\t\t\t\tthis.yy.parser.parseError(str, hash);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(str);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// resets the lexer, sets new input\n\t\t\tsetInput: function (input, yy) {\n\t\t\t\tthis.yy = yy || this.yy || {};\n\t\t\t\tthis._input = input;\n\t\t\t\tthis._more = this._backtrack = this.done = false;\n\t\t\t\tthis.yylineno = this.yyleng = 0;\n\t\t\t\tthis.yytext = this.matched = this.match = '';\n\t\t\t\tthis.conditionStack = ['INITIAL'];\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: 1,\n\t\t\t\t\tfirst_column: 0,\n\t\t\t\t\tlast_line: 1,\n\t\t\t\t\tlast_column: 0,\n\t\t\t\t};\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [0, 0];\n\t\t\t\t}\n\t\t\t\tthis.offset = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// consumes and returns one char from the input\n\t\t\tinput: function () {\n\t\t\t\tvar ch = this._input[0];\n\t\t\t\tthis.yytext += ch;\n\t\t\t\tthis.yyleng++;\n\t\t\t\tthis.offset++;\n\t\t\t\tthis.match += ch;\n\t\t\t\tthis.matched += ch;\n\t\t\t\tvar lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno++;\n\t\t\t\t\tthis.yylloc.last_line++;\n\t\t\t\t} else {\n\t\t\t\t\tthis.yylloc.last_column++;\n\t\t\t\t}\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range[1]++;\n\t\t\t\t}\n\n\t\t\t\tthis._input = this._input.slice(1);\n\t\t\t\treturn ch;\n\t\t\t},\n\n\t\t\t// unshifts one char (or a string) into the input\n\t\t\tunput: function (ch) {\n\t\t\t\tvar len = ch.length;\n\t\t\t\tvar lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n\t\t\t\tthis._input = ch + this._input;\n\t\t\t\tthis.yytext = this.yytext.substr(0, this.yytext.length - len);\n\t\t\t\t//this.yyleng -= len;\n\t\t\t\tthis.offset -= len;\n\t\t\t\tvar oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n\t\t\t\tthis.match = this.match.substr(0, this.match.length - 1);\n\t\t\t\tthis.matched = this.matched.substr(0, this.matched.length - 1);\n\n\t\t\t\tif (lines.length - 1) {\n\t\t\t\t\tthis.yylineno -= lines.length - 1;\n\t\t\t\t}\n\t\t\t\tvar r = this.yylloc.range;\n\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length\n\t\t\t\t\t\t: this.yylloc.first_column - len,\n\t\t\t\t};\n\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [r[0], r[0] + this.yyleng - len];\n\t\t\t\t}\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, caches matched text and appends it on next action\n\t\t\tmore: function () {\n\t\t\t\tthis._more = true;\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n\t\t\treject: function () {\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\tthis._backtrack = true;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError(\n\t\t\t\t\t\t'Lexical error on line ' +\n\t\t\t\t\t\t\t(this.yylineno + 1) +\n\t\t\t\t\t\t\t'. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' +\n\t\t\t\t\t\t\tthis.showPosition(),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// retain first n characters of the match\n\t\t\tless: function (n) {\n\t\t\t\tthis.unput(this.match.slice(n));\n\t\t\t},\n\n\t\t\t// displays already matched input, i.e. for error messages\n\t\t\tpastInput: function () {\n\t\t\t\tvar past = this.matched.substr(0, this.matched.length - this.match.length);\n\t\t\t\treturn (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays upcoming input, i.e. for error messages\n\t\t\tupcomingInput: function () {\n\t\t\t\tvar next = this.match;\n\t\t\t\tif (next.length < 20) {\n\t\t\t\t\tnext += this._input.substr(0, 20 - next.length);\n\t\t\t\t}\n\t\t\t\treturn (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, '');\n\t\t\t},\n\n\t\t\t// displays the character position where the lexing error occurred, i.e. for error messages\n\t\t\tshowPosition: function () {\n\t\t\t\tvar pre = this.pastInput();\n\t\t\t\tvar c = new Array(pre.length + 1).join('-');\n\t\t\t\treturn pre + this.upcomingInput() + '\\n' + c + '^';\n\t\t\t},\n\n\t\t\t// test the lexed token: return FALSE when not a match, otherwise return token\n\t\t\ttest_match: function (match, indexed_rule) {\n\t\t\t\tvar token, lines, backup;\n\n\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t// save context\n\t\t\t\t\tbackup = {\n\t\t\t\t\t\tyylineno: this.yylineno,\n\t\t\t\t\t\tyylloc: {\n\t\t\t\t\t\t\tfirst_line: this.yylloc.first_line,\n\t\t\t\t\t\t\tlast_line: this.last_line,\n\t\t\t\t\t\t\tfirst_column: this.yylloc.first_column,\n\t\t\t\t\t\t\tlast_column: this.yylloc.last_column,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tyytext: this.yytext,\n\t\t\t\t\t\tmatch: this.match,\n\t\t\t\t\t\tmatches: this.matches,\n\t\t\t\t\t\tmatched: this.matched,\n\t\t\t\t\t\tyyleng: this.yyleng,\n\t\t\t\t\t\toffset: this.offset,\n\t\t\t\t\t\t_more: this._more,\n\t\t\t\t\t\t_input: this._input,\n\t\t\t\t\t\tyy: this.yy,\n\t\t\t\t\t\tconditionStack: this.conditionStack.slice(0),\n\t\t\t\t\t\tdone: this.done,\n\t\t\t\t\t};\n\t\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\t\tbackup.yylloc.range = this.yylloc.range.slice(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\t\t\t\tif (lines) {\n\t\t\t\t\tthis.yylineno += lines.length;\n\t\t\t\t}\n\t\t\t\tthis.yylloc = {\n\t\t\t\t\tfirst_line: this.yylloc.last_line,\n\t\t\t\t\tlast_line: this.yylineno + 1,\n\t\t\t\t\tfirst_column: this.yylloc.last_column,\n\t\t\t\t\tlast_column: lines\n\t\t\t\t\t\t? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length\n\t\t\t\t\t\t: this.yylloc.last_column + match[0].length,\n\t\t\t\t};\n\t\t\t\tthis.yytext += match[0];\n\t\t\t\tthis.match += match[0];\n\t\t\t\tthis.matches = match;\n\t\t\t\tthis.yyleng = this.yytext.length;\n\t\t\t\tif (this.options.ranges) {\n\t\t\t\t\tthis.yylloc.range = [this.offset, (this.offset += this.yyleng)];\n\t\t\t\t}\n\t\t\t\tthis._more = false;\n\t\t\t\tthis._backtrack = false;\n\t\t\t\tthis._input = this._input.slice(match[0].length);\n\t\t\t\tthis.matched += match[0];\n\t\t\t\ttoken = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\t\t\t\tif (this.done && this._input) {\n\t\t\t\t\tthis.done = false;\n\t\t\t\t}\n\t\t\t\tif (token) {\n\t\t\t\t\treturn token;\n\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t// recover context\n\t\t\t\t\tfor (var k in backup) {\n\t\t\t\t\t\tthis[k] = backup[k];\n\t\t\t\t\t}\n\t\t\t\t\treturn false; // rule action called reject() implying the next rule should be tested instead.\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\t// return next match in input\n\t\t\tnext: function () {\n\t\t\t\tif (this.done) {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t}\n\t\t\t\tif (!this._input) {\n\t\t\t\t\tthis.done = true;\n\t\t\t\t}\n\n\t\t\t\tvar token, match, tempMatch, index;\n\t\t\t\tif (!this._more) {\n\t\t\t\t\tthis.yytext = '';\n\t\t\t\t\tthis.match = '';\n\t\t\t\t}\n\t\t\t\tvar rules = this._currentRules();\n\t\t\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\t\t\ttempMatch = this._input.match(this.rules[rules[i]]);\n\t\t\t\t\tif (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n\t\t\t\t\t\tmatch = tempMatch;\n\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\tif (this.options.backtrack_lexer) {\n\t\t\t\t\t\t\ttoken = this.test_match(tempMatch, rules[i]);\n\t\t\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\t\t\treturn token;\n\t\t\t\t\t\t\t} else if (this._backtrack) {\n\t\t\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\t\t\tcontinue; // rule action called reject() implying a rule MISmatch.\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!this.options.flex) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (match) {\n\t\t\t\t\ttoken = this.test_match(match, rules[index]);\n\t\t\t\t\tif (token !== false) {\n\t\t\t\t\t\treturn token;\n\t\t\t\t\t}\n\t\t\t\t\t// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this._input === '') {\n\t\t\t\t\treturn this.EOF;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\ttoken: null,\n\t\t\t\t\t\tline: this.yylineno,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return next match that has a token\n\t\t\tlex: function lex() {\n\t\t\t\tvar r = this.next();\n\t\t\t\tif (r) {\n\t\t\t\t\treturn r;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.lex();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n\t\t\tbegin: function begin(condition) {\n\t\t\t\tthis.conditionStack.push(condition);\n\t\t\t},\n\n\t\t\t// pop the previously active lexer condition state off the condition stack\n\t\t\tpopState: function popState() {\n\t\t\t\tvar n = this.conditionStack.length - 1;\n\t\t\t\tif (n > 0) {\n\t\t\t\t\treturn this.conditionStack.pop();\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditionStack[0];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// produce the lexer rule set which is active for the currently active lexer condition state\n\t\t\t_currentRules: function _currentRules() {\n\t\t\t\tif (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n\t\t\t\t\treturn this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.conditions['INITIAL'].rules;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n\t\t\ttopState: function topState(n) {\n\t\t\t\tn = this.conditionStack.length - 1 - Math.abs(n || 0);\n\t\t\t\tif (n >= 0) {\n\t\t\t\t\treturn this.conditionStack[n];\n\t\t\t\t} else {\n\t\t\t\t\treturn 'INITIAL';\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// alias for begin(condition)\n\t\t\tpushState: function pushState(condition) {\n\t\t\t\tthis.begin(condition);\n\t\t\t},\n\n\t\t\t// return the number of states currently on the stack\n\t\t\tstateStackSize: function stateStackSize() {\n\t\t\t\treturn this.conditionStack.length;\n\t\t\t},\n\t\t\toptions: {},\n\t\t\tperformAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n\t\t\t\tvar YYSTATE = YY_START;\n\t\t\t\tswitch ($avoiding_name_collisions) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn yy_.yytext;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn 24;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\treturn 5;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\trules: [/^(?:\\s+)/, /^(?:([-,.\\[\\]<>{}]))/, /^(?:([a-zA-Z_0-9]+))/, /^(?:$)/],\n\t\t\tconditions: { INITIAL: { rules: [0, 1, 2, 3], inclusive: true } },\n\t\t};\n\t\treturn lexer;\n\t})();\n\tparser.lexer = lexer;\n\tfunction Parser() {\n\t\tthis.yy = {};\n\t}\n\tParser.prototype = parser;\n\tparser.Parser = Parser;\n\treturn new Parser();\n})();\n\n// if (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexport { parser };\nexport var Parser = parser.Parser;\nexport var parse = function () {\n\treturn parser.parse.apply(parser, arguments);\n};\nexport default { parser: parser, Parser: parser.Parser, parse: parse };\n","import StaffLayout from './staffLayout';\nimport grammar from './grammar.jison';\n\nconst parseCode = (code: string): StaffLayout => {\n\tconst raw = grammar.parse(code);\n\n\treturn new StaffLayout(raw);\n};\n\nexport { parseCode };\n","interface Logger {\n\tdebug(message?: any, ...optionalParams: any[]): void;\n\tinfo(message?: any, ...optionalParams: any[]): void;\n\twarn(message?: any, ...optionalParams: any[]): void;\n\tgroup(...label: any[]): void;\n\tgroupCollapsed(...label: any[]): void;\n\tgroupEnd(): void;\n\tassert(expr: boolean, ...optionalParams: any[]): void;\n}\n\nclass DummyLogger implements Logger {\n\tdebug(..._: any[]): void {}\n\tgroup(..._: any[]): void {}\n\tgroupCollapsed(..._: any[]): void {}\n\tgroupEnd(): void {}\n\tinfo(..._: any[]): void {}\n\twarn(..._: any[]): void {}\n\tassert(..._: any[]): void {}\n}\n\nexport { Logger, DummyLogger };\n","import { Fraction, Pitch, Matrix2x3 } from './interfaces';\nimport { SemanticPoint, CONFLICTION_GROUPS } from './semanticPoint';\n\ntype Point2D = { x: number; y: number };\ntype PointSegment = Point2D[];\n\nconst POINT_CONFLICTION_DISTANCE = 0.4;\n\nconst roundNumber = (x: number, precision: number, min = -Infinity): number => Math.max(Math.round(x / precision) * precision, min);\n\nconst distance2D = (p1: Point2D, p2: Point2D): number => {\n\tconst dx = p1.x - p2.x;\n\tconst dy = p1.y - p2.y;\n\n\treturn Math.sqrt(dx * dx + dy * dy);\n};\n\nconst trans23 = (point: Point2D, matrix: Matrix2x3): Point2D => ({\n\tx: matrix[0] * point.x + matrix[2] * point.y + matrix[4],\n\ty: matrix[1] * point.x + matrix[3] * point.y + matrix[5],\n});\n\nconst gcd = (a: number, b: number): number => {\n\tif (!(Number.isInteger(a) && Number.isInteger(b))) {\n\t\tconsole.error('non-integer gcd:', a, b);\n\t\treturn 1;\n\t}\n\n\treturn b === 0 ? a : gcd(b, a % b);\n};\n\nconst frac = (numerator: number, denominator: number): Fraction => ({ numerator, denominator });\n\nconst reducedFraction = (n: number, d: number): Fraction => {\n\tn = Math.round(n);\n\td = Math.round(d);\n\n\tconst g = n !== 0 ? gcd(n, d) : d;\n\n\treturn frac(n / g, d / g);\n};\n\nconst printFraction = (f: Fraction): string => `${f.numerator}/${f.denominator}`;\n\nconst fractionMul = (value: number, fraction: Fraction): number => (fraction ? (value * fraction.numerator) / fraction.denominator : value);\n\nconst segmentPoints = (points: Point2D[], axis: 'x' | 'y'): PointSegment[] => {\n\tconst sorted = [...points].sort((p1, p2) => p1[axis] - p2[axis]);\n\n\tlet seg: Point2D[] = null;\n\tlet lastP = null;\n\n\treturn sorted.reduce((segments, p, i) => {\n\t\tif (!lastP) {\n\t\t\tlastP = p;\n\t\t\tseg = [p];\n\t\t} else {\n\t\t\tif (p[axis] - lastP[axis] < POINT_CONFLICTION_DISTANCE) seg.push(p);\n\t\t\telse {\n\t\t\t\tif (seg.length > 1) segments.push(seg);\n\t\t\t\tlastP = p;\n\t\t\t\tseg = [p];\n\t\t\t}\n\t\t}\n\n\t\tif (seg.length > 1 && i === sorted.length - 1) segments.push(seg);\n\n\t\treturn segments;\n\t}, []);\n};\n\nconst filterWeekPoints = (points: SemanticPoint[]): SemanticPoint[] => {\n\t//console.log(\"filterWeekPoints:\", points.map(p => `${p.semantic}, ${p.x}, ${p.y}`));\n\t//console.table(points.map(p => ({ ...p })));\n\n\tif (points.length <= 1) return [];\n\n\tlet rests = points.slice(1);\n\tconst group = CONFLICTION_GROUPS.find((group) => group.includes(points[0].semantic));\n\tif (!group) return filterWeekPoints(rests);\n\n\tconst weeks = rests.filter((p) => group.includes(p.semantic));\n\trests = rests.filter((p) => !group.includes(p.semantic));\n\n\treturn [...weeks, ...filterWeekPoints(rests)];\n};\n\nconst solveOverlapping = (points: SemanticPoint[]): SemanticPoint[] => {\n\tconst pset = new Set(points);\n\n\tconst xClusters = segmentPoints(points, 'x');\n\tconst clusters: SemanticPoint[][] = [].concat(...xClusters.map((c) => segmentPoints(c, 'y')));\n\tclusters.forEach((ps) => ps.sort((p1, p2) => p2.confidence - p1.confidence));\n\n\tclusters.forEach((ps) => {\n\t\tfilterWeekPoints(ps).forEach((p) => pset.delete(p));\n\t});\n\n\treturn Array.from(pset);\n};\n\nconst GROUP_N_TO_PITCH = [0, 2, 4, 5, 7, 9, 11];\nconst MIDDLE_C = 60;\n\nconst mod7 = (x) => {\n\tlet y = x % 7;\n\twhile (y < 0) y += 7;\n\n\treturn y;\n};\n\nconst mod12 = (x) => {\n\tlet y = x % 12;\n\twhile (y < 0) y += 12;\n\n\treturn y;\n};\n\nconst noteToPitch = ({ note, alter }: Pitch): number => {\n\tconst group = Math.floor(note / 7);\n\tconst gn = mod7(note);\n\n\treturn MIDDLE_C + group * 12 + GROUP_N_TO_PITCH[gn] + alter;\n};\n\nconst argmax = (data: number[]): number => {\n\tconst max = Math.max(...data);\n\n\treturn data.indexOf(max);\n};\n\nexport {\n\tPoint2D,\n\troundNumber,\n\tdistance2D,\n\ttrans23,\n\tsolveOverlapping,\n\tgcd,\n\tfrac,\n\treducedFraction,\n\tprintFraction,\n\tfractionMul,\n\tGROUP_N_TO_PITCH,\n\tMIDDLE_C,\n\tmod7,\n\tmod12,\n\tnoteToPitch,\n\targmax,\n};\n","import { Fraction, Pitch, EventFeature, EventPredisposition } from './interfaces';\nimport { gcd, reducedFraction } from './utils';\nimport { TokenType } from './token';\nimport * as Token from './token';\nimport { SimpleClass } from './aux_/typedJSON';\n\nconst WHOLE_DURATION = 128 * 3 * 5;\nconst WHOLE_EXP2 = WHOLE_DURATION / 15;\n\nenum AccessoryDirection {\n\tUp = '^',\n\tDown = '_',\n\tMiddle = '-',\n}\n\nenum GraceType {\n\tGrace = 'grace',\n\tAfterGrace = 'afterGrace',\n\tAcciaccatura = 'acciaccatura',\n\tAppoggiatura = 'appoggiatura',\n\tSlashedGrace = 'slashedGrace',\n}\n\nenum StemBeam {\n\tOpen = 'Open',\n\tClose = 'Close',\n\tContinue = 'Continue',\n}\n\nenum TremoloLink {\n\tPitcher = 'Pitcher',\n\tCatcher = 'Catcher',\n\tPierced = 'Pierced',\n}\n\nenum GlissandoStyle {\n\tNormal = 'normal',\n\tDashedLine = 'dashed-line',\n\tDottedLine = 'dotted-line',\n\tZigzag = 'zigzag',\n\tTrill = 'trill',\n}\n\nenum ArpeggioStyle {\n\tNormal = 'Normal',\n\tBracket = 'Bracket',\n\tParenthesis = 'Parenthesis',\n\tParenthesisDashed = 'ParenthesisDashed',\n\tArrowDown = 'ArrowDown',\n}\n\ninterface Accessory {\n\tdirection?: AccessoryDirection;\n\tparenthesized?: boolean;\n\ttype: TokenType;\n\tid?: string;\n\tx: number;\n}\n\ninterface TermPitch extends Pitch {\n\ttying?: boolean;\n\ttied?: boolean;\n\tparenthesized?: boolean;\n\toctaveShift?: number;\n}\n\nclass Term extends SimpleClass {\n\tx: number;\n\tstaff?: number;\n}\n\ntype RestType = 'r' | 'R' | 's' | null;\n\ninterface DurationalTerm {\n\tdivision: number;\n\tdots: number;\n\tmultiplier?: Fraction;\n}\n\nconst SCALE_NAMES = 'CDEFGAB';\n\nclass EventTerm extends Term implements DurationalTerm {\n\tstatic className = 'EventTerm';\n\n\tleft: number;\n\tright: number;\n\tpivotX: number;\n\n\tsystem: number;\n\troundX: number; // for tick map, scheduler\n\tintX: number; // for measure hash\n\tintY: number;\n\tys: number[]; // order by ascending pitch, low (greater Y) to high (less Y)\n\tpitches?: TermPitch[];\n\trest: RestType;\n\tdivision: number;\n\tdots: number;\n\taccessories: Accessory[];\n\tmultiplier: Fraction;\n\tstemDirection: string;\n\ttying: boolean;\n\ttied: boolean;\n\trepetitionChord: boolean;\n\tgrace?: GraceType;\n\tbeam?: StemBeam;\n\ttimeWarp?: Fraction;\n\tparenthesized?: boolean;\n\ttremolo?: number; // like division, 'number of beams' + 2\n\ttremoloLink?: TremoloLink;\n\tglissando?: boolean;\n\tglissandoStyle?: GlissandoStyle;\n\tarpeggioStyle?: ArpeggioStyle;\n\ttip?: { x: number; y: number };\n\n\ttick: number;\n\n\t// for topology\n\tid?: number;\n\tprevId?: number;\n\ttickGroup?: number;\n\n\tfeature: EventFeature;\n\tpredisposition: EventPredisposition;\n\n\tgraceIds?: number[];\n\tcatcherId?: number; // tremolo catcher event ID for tremolo pitcher event\n\n\tnoteIds?: string[]; // order by upwards\n\n\tstatic space({ tick, duration }: { tick: number; duration: number }): EventTerm {\n\t\tconst term = new EventTerm({\n\t\t\trest: 's',\n\t\t\ttick,\n\t\t\taccessories: [],\n\t\t});\n\t\tterm.duration = Math.round(duration);\n\n\t\treturn term;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tObject.assign(this, data);\n\n\t\tif (Number.isFinite(data.left) && Number.isFinite(data.right)) this.x = (this.left + this.right) / 2;\n\t\tif (!Number.isFinite(this.pivotX)) this.pivotX = this.x;\n\t\t//console.assert(Number.isFinite(this.x), \"EventTerm: invalid x,\", data);\n\t}\n\n\tget alignedTick(): number {\n\t\treturn this.grace ? this.tick + this.duration : this.tick;\n\t}\n\n\tget mainDuration(): number {\n\t\treturn WHOLE_DURATION * 2 ** -this.division * (2 - 2 ** -this.dots);\n\t}\n\n\tget duration(): number {\n\t\tlet value = this.mainDuration;\n\t\tif (this.multiplier) value *= this.multiplier.numerator / this.multiplier.denominator;\n\t\tif (this.timeWarp) value *= this.timeWarp.numerator / this.timeWarp.denominator;\n\n\t\treturn this.grace ? value / 8 : value;\n\t}\n\n\tset duration(value: number) {\n\t\tconsole.assert(Number.isFinite(value), 'invalid duration value:', value);\n\n\t\tconst divider = gcd(value, WHOLE_EXP2);\n\t\tconst division = Math.log2(WHOLE_EXP2 / divider);\n\t\tconst multiplier = reducedFraction(value * 2 ** division, WHOLE_DURATION);\n\n\t\tthis.division = division;\n\t\tthis.dots = 0;\n\n\t\tif (multiplier.numerator !== multiplier.denominator) this.multiplier = multiplier;\n\t\telse this.multiplier = undefined;\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick;\n\t}\n\n\tget times(): string {\n\t\tif (!this.timeWarp) return null;\n\n\t\treturn `${this.timeWarp.numerator}/${this.timeWarp.denominator}`;\n\t}\n\n\tget fullMeasureRest(): boolean {\n\t\treturn this.rest === 'R';\n\t}\n\n\tget tipX(): number {\n\t\treturn this.tip ? this.tip.x : this.x;\n\t}\n\n\tget tipY(): number {\n\t\treturn this.tip ? this.tip.y : this.ys ? this.ys[0] : 0;\n\t}\n\n\tget tremoloCatcher(): boolean {\n\t\treturn this.tremoloLink === TremoloLink.Catcher;\n\t}\n\n\tget scaleChord(): string {\n\t\treturn this.pitches.map((pitch) => SCALE_NAMES[(pitch.note + 700) % 7]).join('');\n\t}\n\n\tget zeroHolder(): boolean {\n\t\treturn !!this.grace || this.tremoloCatcher;\n\t}\n}\n\nenum ContextType {\n\tClef,\n\tKeyAcc,\n\tAcc,\n\tOctaveShift,\n\tTimeSignatureC,\n\tTimeSignatureN,\n}\n\nclass ContextedTerm extends Term {\n\tstatic className = 'ContextedTerm';\n\n\ty: number;\n\ttokenType: TokenType;\n\n\ttick: number;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget type(): ContextType {\n\t\tif (Token.TokenClefs.includes(this.tokenType)) return ContextType.Clef;\n\t\tif (/\\|key-/.test(this.tokenType)) return ContextType.KeyAcc;\n\t\tif (/accidentals-/.test(this.tokenType)) return ContextType.Acc;\n\t\tif (Token.TokenOctshifts.includes(this.tokenType)) return ContextType.OctaveShift;\n\t\tif (Token.TokenTimesigsC.includes(this.tokenType)) return ContextType.TimeSignatureC;\n\t\tif (Token.TokenTimesigsN.includes(this.tokenType)) return ContextType.TimeSignatureN;\n\n\t\treturn null;\n\t}\n\n\tget staffLevel(): boolean {\n\t\treturn [ContextType.OctaveShift, ContextType.Clef, ContextType.KeyAcc].includes(this.type);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick - 0.1;\n\t}\n\n\tget clef(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.ClefG:\n\t\t\t\treturn -this.y - 2;\n\n\t\t\tcase TokenType.ClefF:\n\t\t\t\treturn -this.y + 2;\n\n\t\t\tcase TokenType.ClefC:\n\t\t\t\treturn -this.y;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget alter() {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.AccNatural:\n\t\t\tcase TokenType.KeyNatural:\n\t\t\t\treturn 0;\n\n\t\t\tcase TokenType.AccSharp:\n\t\t\tcase TokenType.KeySharp:\n\t\t\t\treturn 1;\n\n\t\t\tcase TokenType.AccFlat:\n\t\t\tcase TokenType.KeyFlat:\n\t\t\t\treturn -1;\n\n\t\t\tcase TokenType.AccDoublesharp:\n\t\t\t\treturn 2;\n\n\t\t\tcase TokenType.AccFlatflat:\n\t\t\t\treturn -2;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget octaveShift(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.OctaveShift8va:\n\t\t\t\treturn -1;\n\n\t\t\tcase TokenType.OctaveShift0:\n\t\t\t\treturn 0;\n\n\t\t\tcase TokenType.OctaveShift8vb:\n\t\t\t\treturn 1;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget number(): number {\n\t\tswitch (this.tokenType) {\n\t\t\tcase TokenType.TimesigZero:\n\t\t\t\treturn 0;\n\t\t\tcase TokenType.TimesigOne:\n\t\t\t\treturn 1;\n\t\t\tcase TokenType.TimesigTwo:\n\t\t\t\treturn 2;\n\t\t\tcase TokenType.TimesigThree:\n\t\t\t\treturn 3;\n\t\t\tcase TokenType.TimesigFour:\n\t\t\t\treturn 4;\n\t\t\tcase TokenType.TimesigFive:\n\t\t\t\treturn 5;\n\t\t\tcase TokenType.TimesigSix:\n\t\t\t\treturn 6;\n\t\t\tcase TokenType.TimesigSeven:\n\t\t\t\treturn 7;\n\t\t\tcase TokenType.TimesigEight:\n\t\t\t\treturn 8;\n\t\t\tcase TokenType.TimesigNine:\n\t\t\t\treturn 9;\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n//class BreakTerm extends Term {\n//};\n\nclass MarkTerm extends Term {\n\tstatic className = 'MarkTerm';\n\n\ttick: number;\n\n\tget prior(): number {\n\t\treturn this.tick + 0.01;\n\t}\n}\n\nconst MUSIC_NOTES = Array(7)\n\t.fill(0)\n\t.map((_, i) => String.fromCodePoint(0x1d15d + i));\n\nclass TempoTerm extends MarkTerm {\n\tstatic className = 'TempoTerm';\n\n\tduration: string;\n\tbeats: string;\n\n\tstatic fromNumeralText(text: string): TempoTerm {\n\t\tif (/.+=.*\\d+/.test(text)) {\n\t\t\tconst [symbol, value] = text.split('=');\n\t\t\tlet division = MUSIC_NOTES.findIndex((n) => symbol.includes(n));\n\t\t\tdivision = division >= 0 ? division : 2;\n\t\t\tlet duration = (2 ** division).toString();\n\t\t\tif (symbol.includes('.')) duration += '.';\n\n\t\t\treturn new TempoTerm({ tick: 0, duration, beats: value });\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick - 0.01;\n\t}\n\n\t// a whole note equal to 1920\n\tget durationMagnitude(): number {\n\t\tconst [_, den, dot] = this.duration.match(/^(\\d+)(\\.)?$/);\n\t\tconst magnitude = (WHOLE_DURATION / Number(den)) * (dot ? 1.5 : 1);\n\n\t\treturn magnitude;\n\t}\n\n\t// beats per minute, suppose 1 beat = 480 ticks\n\tget bpm(): number {\n\t\tconst [number] = this.beats.match(/\\d+/) || [90];\n\t\tconst beats = Number(number);\n\n\t\treturn (beats * this.durationMagnitude * 4) / WHOLE_DURATION;\n\t}\n\n\tisValid(range = [10, 400]): boolean {\n\t\tconst bpm = this.bpm;\n\n\t\treturn Number.isFinite(this.bpm) && bpm >= range[0] && bpm < range[1];\n\t}\n}\n\nclass GlyphTerm extends MarkTerm {\n\tstatic className = 'GlyphTerm';\n\n\tglyph: string;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass TextTerm extends MarkTerm {\n\tstatic className = 'TextTerm';\n\n\tdirection?: AccessoryDirection;\n\ttext: string;\n\tbold: boolean;\n\titalic: boolean;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass LyricTerm extends MarkTerm {\n\tstatic className = 'LyricTerm';\n\n\ttext: string;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass CommandTerm extends MarkTerm {\n\tstatic className = 'CommandTerm';\n\n\tcommand: string;\n\tparameters: string[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n}\n\nclass ChordmodeTerm extends Term implements DurationalTerm {\n\tstatic className = 'ChordmodeTerm';\n\n\tpitch: Pitch;\n\tbasePitch?: Pitch;\n\tmodifier?: string;\n\n\tdivision: number;\n\tdots: number;\n\tmultiplier: Fraction;\n\n\ttick: number;\n\n\tconstructor(data: any) {\n\t\tsuper();\n\n\t\tObject.assign(this, data);\n\t}\n\n\tget prior(): number {\n\t\treturn this.tick;\n\t}\n\n\tget duration(): number {\n\t\tconst value = WHOLE_DURATION * 2 ** -this.division * (2 - 2 ** -this.dots);\n\t\tif (this.multiplier) return (value * this.multiplier.numerator) / this.multiplier.denominator;\n\n\t\treturn value;\n\t}\n}\n\nexport {\n\tTerm,\n\tEventTerm,\n\tContextedTerm,\n\t//BreakTerm,\n\tMarkTerm,\n\tTempoTerm,\n\tGlyphTerm,\n\tTextTerm,\n\tLyricTerm,\n\tCommandTerm,\n\tChordmodeTerm,\n\tDurationalTerm,\n\tContextType,\n\tGraceType,\n\tTermPitch,\n\tRestType,\n\tGlissandoStyle,\n\tArpeggioStyle,\n\tAccessory,\n\tAccessoryDirection,\n\tWHOLE_DURATION,\n\tStemBeam,\n\tTremoloLink,\n};\n","import { SpartitoMeasure } from './spartitoMeasure';\nimport { StemBeam, WHOLE_DURATION } from './term';\nimport { fractionMul, gcd } from './utils';\n\nexport interface MeasureEvaluation {\n\tevents: number;\n\tvalidEvents: number;\n\tvoiceRugged: boolean;\n\tnullEvents: number;\n\tfakeEvents: number;\n\twarpedEvents: number;\n\tcomplicatedTimewarp: boolean;\n\tspaceTime: number;\n\tsurplusTime: number;\n\tdurationRate: number;\n\tbeamBroken: boolean;\n\tfractionalWarp: boolean;\n\tirregularWarpsN: number;\n\tirregularTick: boolean;\n\ttickTwist: number;\n\ttickOverlapped: boolean;\n\tgraceInVoice: boolean;\n\tgraceN: number;\n\tgraceDominant: boolean;\n\tperfect: boolean;\n\tfine: boolean;\n\terror: boolean;\n\tqualityScore: number;\n}\n\nconst BEAM_STATUS = {\n\t[StemBeam.Open]: 1,\n\t[StemBeam.Continue]: 0,\n\t[StemBeam.Close]: -1,\n};\n\nexport const evaluateMeasure = (measure: SpartitoMeasure): MeasureEvaluation => {\n\tif (!measure.regulated) return undefined;\n\n\tconst eventMap = measure.eventMap;\n\n\tconst events = measure.events.length;\n\tconst validEvents = measure.voices.flat(1).length;\n\tconst warpedEvents = measure.events.filter((e) => e.timeWarp).length;\n\tconst warps = new Set(\n\t\tmeasure.events.filter((e) => e.timeWarp && !(e.rest && e.division === 0)).map((e) => `${e.timeWarp!.numerator}/${e.timeWarp!.denominator}`)\n\t);\n\tconst irregularWarps = new Set(warps);\n\tirregularWarps.delete('2/3');\n\n\tconst fractionalWarp = measure.voices.some((voice) => {\n\t\tconst events = voice.map((id) => eventMap[id]);\n\t\tif (!events.some((e) => e.timeWarp)) return false;\n\n\t\tlet denominator = 0;\n\t\tlet tickSum = 0;\n\t\tlet eventN = 0;\n\t\treturn events.some((event, i) => {\n\t\t\tconst d = event.timeWarp ? event.timeWarp.denominator : 0;\n\t\t\tif (d !== denominator) {\n\t\t\t\tif (denominator > 0 && (tickSum % denominator || eventN < 2)) return true;\n\n\t\t\t\ttickSum = 0;\n\t\t\t\teventN = 0;\n\t\t\t}\n\n\t\t\tdenominator = d;\n\t\t\ttickSum += event.duration;\n\t\t\t++eventN;\n\n\t\t\tif (i === events.length - 1) {\n\t\t\t\tif (denominator > 0 && (tickSum % denominator || eventN < 2)) return true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\t});\n\n\tconst tickOverlapped = measure.voices.some((voice) => {\n\t\tconst events = voice.map((id) => eventMap[id]);\n\t\tlet tick = 0;\n\t\treturn events.some((event) => {\n\t\t\tif (event.grace) return false;\n\n\t\t\tif (event.tick < tick) return true;\n\t\t\ttick = event.tick + event.duration;\n\n\t\t\treturn false;\n\t\t});\n\t});\n\n\tconst fractionalTimes = new Set(measure.events.filter((e) => e.timeWarp && e.timeWarp.denominator > 3).map((e) => e.duration));\n\tconst complicatedTimewarp = fractionalTimes.size > 1;\n\n\tconst literalDuration = fractionMul(WHOLE_DURATION, measure.timeSignature);\n\tconst sigDuration = measure.doubtfulTimesig ? measure.duration : literalDuration;\n\n\tconst inVoiceEvents = measure.voices.flat(1).map((id) => eventMap[id]);\n\n\t// Guard: detect corrupted event data in voices (e.g. missing division, NaN tick)\n\tconst corruptedVoiceEvent = inVoiceEvents.some(\n\t\t(event) =>\n\t\t\t!event ||\n\t\t\t!Number.isFinite(event.tick) ||\n\t\t\t!Number.isFinite(event.division) ||\n\t\t\tevent.division < 0 ||\n\t\t\t!Number.isFinite(event.duration) ||\n\t\t\tevent.duration <= 0\n\t);\n\n\tconst overranged = inVoiceEvents.reduce((over, event) => over || event.tick < 0 || event.tick + event.duration > sigDuration, false);\n\tconst overDuration = measure.duration > literalDuration;\n\tconst graceInVoice = inVoiceEvents.some((event) => event.grace);\n\tconst graceN = measure.events.filter((e) => e.grace).length;\n\tconst graceDominant = graceN >= inVoiceEvents.length;\n\n\tconst irregularTick = inVoiceEvents.some((event) => {\n\t\tlet t = event.tick * 2 ** (event.division + 2);\n\t\tif (event.timeWarp) t *= event.timeWarp.denominator;\n\n\t\tif (!Number.isFinite(t)) return true;\n\n\t\tconst fragment = gcd(Math.round(t), WHOLE_DURATION);\n\t\t//if (fragment < WHOLE_DURATION)\n\t\t//\tconsole.log(\"irregularTick:\", event.tick, fragment);\n\t\treturn fragment < WHOLE_DURATION;\n\t});\n\n\tconst beamStatus = measure.voices!.map((voice) =>\n\t\tvoice.reduce(\n\t\t\t({ status, broken }, ei, evi) => {\n\t\t\t\tconst event = eventMap[ei];\n\t\t\t\tif (event.beam) {\n\t\t\t\t\t// allow an open beam at beginning of a voice\n\t\t\t\t\tif (evi === 0 && [StemBeam.Continue, StemBeam.Close].includes(event.beam)) status = 1;\n\n\t\t\t\t\tstatus += BEAM_STATUS[event.beam];\n\t\t\t\t\tbroken = broken || !(status >= 0 && status <= 1);\n\t\t\t\t} else if (!event.rest) broken = broken || status !== 0;\n\n\t\t\t\treturn { status, broken };\n\t\t\t},\n\t\t\t{ status: 0, broken: false }\n\t\t)\n\t);\n\tconst beamBroken = beamStatus.some(({ broken }) => broken); // allow an open beam at the end of a voice (status == 1)\n\tlet spaceTime = 0;\n\tlet surplusTime = 0;\n\tmeasure.voices!.forEach((voice) => {\n\t\tconst eventDuration = voice.reduce((sum, ei) => sum + eventMap[ei].duration, 0);\n\t\tspaceTime += Math.max(0, measure.duration - eventDuration);\n\t\tsurplusTime += Math.max(0, eventDuration - measure.duration);\n\t});\n\tspaceTime /= WHOLE_DURATION;\n\tconst nullEvents = measure.events.filter(\n\t\t(e) => !e.grace && !e.fullMeasureRest && !e.tremoloCatcher && (!e.predisposition || e.predisposition.fakeP < 0.1) && !Number.isFinite(e.tick)\n\t).length;\n\n\tconst fakeEvents = measure.events.filter(\n\t\t(event) => !event.fullMeasureRest && !event.grace && !event.tremoloCatcher && !inVoiceEvents.includes(event)\n\t).length;\n\n\tconst { voiceRugged } = measure.voices!.flat(1).reduce(\n\t\t(result, ei) => {\n\t\t\tif (!result.voiceRugged) {\n\t\t\t\tif (result.es.has(ei)) return { voiceRugged: true, es: result.es };\n\t\t\t}\n\n\t\t\tresult.es.add(ei);\n\n\t\t\treturn result;\n\t\t},\n\t\t{ voiceRugged: false, es: new Set() }\n\t);\n\n\tconst tickTwist = measure.tickTwist || 0;\n\n\tconst error =\n\t\tcorruptedVoiceEvent ||\n\t\ttickTwist >= 1 ||\n\t\ttickOverlapped ||\n\t\tvoiceRugged ||\n\t\tmeasure.tickRatesInStaves.some((rate) => rate < 0) ||\n\t\tnullEvents > 2 ||\n\t\t!measure.timeSignature ||\n\t\toverranged ||\n\t\tmeasure.duration > sigDuration ||\n\t\tmeasure.events.some((event) => event.timeWarp && event.timeWarp.numerator / event.timeWarp.denominator <= 0.5);\n\tconst perfect =\n\t\t!error &&\n\t\t!overDuration &&\n\t\ttickTwist < 0.2 &&\n\t\t!fractionalWarp &&\n\t\t!irregularWarps.size &&\n\t\t!irregularTick &&\n\t\t!spaceTime &&\n\t\t!surplusTime &&\n\t\t!!measure.voices!.length &&\n\t\t!beamBroken &&\n\t\t!graceInVoice &&\n\t\t!graceDominant &&\n\t\t(measure.duration === sigDuration || (Number.isFinite(measure.estimatedDuration) && measure.estimatedDuration <= sigDuration * 0.75));\n\tconst fine = !error && !overDuration && tickTwist < 0.3 && !fractionalWarp && !irregularTick && !surplusTime && !beamBroken && !graceInVoice;\n\n\tlet expectDuration = Math.min(sigDuration, WHOLE_DURATION * 2);\n\tif (Number.isFinite(measure.estimatedDuration)) expectDuration = Math.max(0, Math.min(expectDuration, measure.estimatedDuration));\n\tconst durationRate = measure.duration / expectDuration;\n\n\tlet qualityScore = 0;\n\tif (measure.patched && !corruptedVoiceEvent) qualityScore = 1;\n\telse if (!error) {\n\t\tconst spaceLoss = Math.tanh(Math.abs(spaceTime / Math.max(1, measure.voices.length)) * 1);\n\n\t\tlet expectDuration = Math.min(sigDuration, WHOLE_DURATION * 2);\n\t\tif (Number.isFinite(measure.estimatedDuration)) expectDuration = Math.max(0, Math.min(expectDuration, measure.estimatedDuration));\n\t\tconst durationLoss = expectDuration ? Math.max(0, 1 - durationRate) ** 2 : 0;\n\t\tconst warpsLoss = Math.tanh(irregularWarps.size);\n\n\t\tqualityScore = (1 - spaceLoss) * (1 - durationLoss) * (1 - warpsLoss) * (1 - tickTwist ** 2);\n\t}\n\n\treturn {\n\t\tevents,\n\t\tvalidEvents,\n\t\tvoiceRugged,\n\t\tnullEvents,\n\t\tfakeEvents,\n\t\twarpedEvents,\n\t\tcomplicatedTimewarp,\n\t\tspaceTime,\n\t\tsurplusTime,\n\t\tdurationRate,\n\t\tbeamBroken,\n\t\tfractionalWarp,\n\t\tirregularWarpsN: irregularWarps.size,\n\t\tirregularTick,\n\t\ttickTwist,\n\t\ttickOverlapped,\n\t\tgraceInVoice,\n\t\tgraceN,\n\t\tgraceDominant,\n\t\tperfect,\n\t\tfine,\n\t\terror,\n\t\tqualityScore,\n\t};\n};\n","//import { staffSvg } from \"@kelvinnxu/lotus\";\n\nimport { SemanticType, SemanticPoint, /*glyphSemanticMapping, glyphCenters,*/ SYSTEM_SEMANTIC_TYPES, Point } from './semanticPoint';\nimport { SimpleClass } from './aux_/typedJSON';\n\nclass SemanticGraph extends SimpleClass {\n\tstatic className = 'SemanticGraph';\n\n\tpoints: SemanticPoint[];\n\n\tconstructor(data?: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\t/*static fromSheetStaff(staff: staffSvg.SheetStaff, hashTable: {[key: string]: any}): SemanticGraph {\n\t\tconst tokens = [].concat(...staff.measures.map(measure => measure.tokens));\n\n\t\tconst voltaRightXs = [];\n\n\t\tconst points = [];\n\t\ttokens.forEach(token => {\n\t\t\tconst def = hashTable[token.hash];\n\n\t\t\tif (token.glyph) {\n\t\t\t\tconst glyph = token.glyph as string;\n\t\t\t\tlet semantic = null;\n\n\t\t\t\tconst isKey = /^\\\\key/.test(token.source) || token.is(\"KEY\");\n\t\t\t\tlet { x: cx = 0, y: cy = 0 } = glyphCenters[glyph] || { x: 0, y: 0 };\n\t\t\t\tif (token.scale2) {\n\t\t\t\t\tcx *= token.scale2.x;\n\t\t\t\t\tcy *= token.scale2.y;\n\t\t\t\t}\n\n\t\t\t\tlet x = token.x + cx;\n\t\t\t\tconst y = token.y + cy;\n\n\t\t\t\tswitch (glyph) {\n\t\t\t\tcase \"rests.0\":\n\t\t\t\t\tif (/^R/.test(token.source))\n\t\t\t\t\t\tsemantic = \"Rest0W\";\n\t\t\t\t\telse\n\t\t\t\t\t\tsemantic = \"Rest0\";\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.flat\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.natural\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accidentals.sharp\":\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t\tif (isKey) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.KeyAcc,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dots.dot\":\n\t\t\t\t\tif (token.is(\"VOLTA\")) {\n\t\t\t\t\t\tx += 0.24;\t// dot glyph center X offset\n\t\t\t\t\t\tif (token.is(\"LEFT\"))\n\t\t\t\t\t\t\tsemantic = SemanticType.VoltaLeft;\n\t\t\t\t\t\telse if (token.is(\"RIGHT\")) {\n\t\t\t\t\t\t\tvoltaRightXs.push(x);\n\t\t\t\t\t\t\tsemantic = SemanticType.VoltaRight;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tsemantic = \"Dot\";\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"zero\":\n\t\t\t\tcase \"one\":\n\t\t\t\tcase \"two\":\n\t\t\t\tcase \"three\":\n\t\t\t\tcase \"four\":\n\t\t\t\tcase \"five\":\n\t\t\t\tcase \"six\":\n\t\t\t\tcase \"seven\":\n\t\t\t\tcase \"eight\":\n\t\t\t\tcase \"nine\": {\n\t\t\t\t\tconst upper = glyph[0].toUpperCase() + glyph.substr(1);\n\t\t\t\t\tsemantic = token.is(\"TIME_SIG\") ? \"Timesig\" + upper : upper;\n\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsemantic = glyphSemanticMapping[glyph];\n\t\t\t\t}\n\n\t\t\t\tif (semantic) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (token.is(\"TEMPO_NOTEHEAD\")) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.TempoNotehead,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// grace noteheads\n\t\t\t\tif (token.is(\"NOTEHEAD\") && Number.isFinite(token.scale) && token.scale < 0.75) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.GraceNotehead,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// semantic from token symbol\n\t\t\tlet semantic = null;\n\t\t\tconst cx = 0;\n\t\t\tlet cy = 0;\n\t\t\tif (token.is(\"OCTAVE\")) {\n\t\t\t\tif (token.is(\"_8\")) {\n\t\t\t\t\tsemantic = SemanticType.OctaveShift8;\n\t\t\t\t\tcy = token.is(\"B\") ? -0.7512 : -0.7256;\n\t\t\t\t}\n\t\t\t\telse if (token.is(\"CLOSE\")) {\n\t\t\t\t\tsemantic = SemanticType.OctaveShift0;\n\t\t\t\t\tcy = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (/^flags/.test(token.glyph)) {\n\t\t\t\tlet direction = 0;\n\t\t\t\tif (/\\.u\\d/.test(token.glyph))\n\t\t\t\t\tdirection = 1;\n\t\t\t\tif (/\\.d\\d/.test(token.glyph))\n\t\t\t\t\tdirection = -1;\n\t\t\t\tif (direction) {\n\t\t\t\t\tconst [n] = token.glyph.match(/\\d+/);\n\t\t\t\t\tconst flagCount = Number(n) - 2;\n\t\t\t\t\t//console.log(\"flags:\", token.glyph, flagCount);\n\t\t\t\t\tfor (let i = 0; i < flagCount; ++i) {\n\t\t\t\t\t\tconst y = token.y + (i + 0.5) * direction;\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic: SemanticType.Flag3,\n\t\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t});\n\t\t\t\t\t\t//console.log(\"flags.1:\", token.x, y);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (token.is(\"SLUR\")) {\n\t\t\t\tconst d = def && def.d;\n\t\t\t\tif (d) {\n\t\t\t\t\tconst numbers = d.match(/-?[\\d.]+/g).map(Number);\n\t\t\t\t\t//console.log(\"slur:\", numbers);\n\t\t\t\t\tconst x1 = token.x + numbers[0];\n\t\t\t\t\tconst y1 = token.y + numbers[1];\n\t\t\t\t\tconst x2 = token.x + numbers[6];\n\t\t\t\t\tconst y2 = token.y + numbers[7];\n\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.SlurBegin,\n\t\t\t\t\t\tx: x1,\n\t\t\t\t\t\ty: y1,\n\t\t\t\t\t});\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.SlurEnd,\n\t\t\t\t\t\tx: x2,\n\t\t\t\t\t\ty: y2,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (token.is(\"NOTE_STEM\")) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.vline_Stem,\n\t\t\t\t\tx: token.x + def.width / 2,\n\t\t\t\t\ty: token.y,\n\t\t\t\t\textension: {\n\t\t\t\t\t\ty1: token.y,\n\t\t\t\t\t\ty2: token.y + token.height,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (token.is(\"TEXT\") || token.is(\"CHORD_TEXT\")) {\n\t\t\t\tif (/\\S/.test(token.text)) {\n\t\t\t\t\t// NOTE: text rect computation is delayed to sheet rendering\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.rect_Text,\n\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\ty: token.y,\n\t\t\t\t\t\textension: {\n\t\t\t\t\t\t\tindex: token.index,\n\t\t\t\t\t\t\ttext: token.text,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (semantic) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic,\n\t\t\t\t\tx: token.x + cx,\n\t\t\t\t\ty: token.y + cy,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// beams\n\t\tconst stems = tokens.filter(token => token.is(\"NOTE_STEM\")).map(stem => ({\n\t\t\tx: stem.x + stem.width / 2,\n\t\t\ty1: stem.y,\n\t\t\ty2: stem.y + stem.height,\n\t\t}));\n\t\tconst beams = tokens.filter(token => token.is(\"NOTETAIL\") && token.is(\"JOINT\"))\n\t\t\t.map(beam => {\n\t\t\t\tconst def = hashTable[beam.hash];\n\t\t\t\tconst points = def && def.points;\n\t\t\t\tif (points) {\n\t\t\t\t\tconst floats = points.split(\" \").map(Number);\n\t\t\t\t\tconst x1 = beam.x + floats[4];\n\t\t\t\t\tconst x2 = beam.x + floats[0];\n\t\t\t\t\tconst y1 = beam.y + (floats[5] + floats[7]) / 2;\n\t\t\t\t\tconst y2 = beam.y + (floats[1] + floats[3]) / 2;\n\t\t\t\t\tconst k = (y2 - y1) / (x2 - x1);\n\n\t\t\t\t\treturn { x1, x2, y1, y2, k, capital: beam.is(\"CAPITAL_BEAM\") };\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}).filter(Boolean);\n\t\t//console.log(\"beams:\", beams);\n\t\tbeams.forEach(beam => {\n\t\t\tconst innerStems = stems.filter(stem => stem.x > beam.x1 - 0.2 && stem.x < beam.x2 + 0.2);\n\t\t\t//console.log(\"innerStems:\", beam, innerStems);\n\n\t\t\tlet lines = 0;\n\t\t\tinnerStems.forEach(stem => {\n\t\t\t\tconst beamY = beam.y1 + (stem.x - beam.x1) * beam.k;\n\t\t\t\t//console.log(\"beamY:\", beamY, Math.min(Math.abs(beamY - beam.y1), Math.abs(beamY - beam.y2)));\n\t\t\t\tif (beamY >= stem.y1 - 0.1 && beamY <= stem.y2 + 0.1) {\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tsemantic: SemanticType.Flag3,\n\t\t\t\t\t\tx: stem.x,\n\t\t\t\t\t\ty: beamY,\n\t\t\t\t\t});\n\n\t\t\t\t\t++lines;\n\n\t\t\t\t\t// beam semantics\n\t\t\t\t\tif (beam.capital) {\n\t\t\t\t\t\tlet semantic = SemanticType.BeamContinue;\n\t\t\t\t\t\tif (Math.abs(stem.x - beam.x1) < 0.2)\n\t\t\t\t\t\t\tsemantic = SemanticType.BeamLeft;\n\t\t\t\t\t\telse if (Math.abs(stem.x - beam.x2) < 0.2)\n\t\t\t\t\t\t\tsemantic = SemanticType.BeamRight;\n\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\t\tx: stem.x,\n\t\t\t\t\t\t\ty: beamY,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!lines)\n\t\t\t\tconsole.warn(\"empty beam:\", beam, innerStems, stems);\n\t\t\t//else if (lines < 2)\n\t\t\t//\tconsole.debug(\"single beam:\", beam, innerStems, stems);\n\t\t});\n\n\t\t// wedges (crescendo & decrescendo)\n\t\tconst crescendos = tokens.filter(token => token.is(\"WEDGE CRESCENDO TOP\"));\n\t\tconst crescendoBottoms = tokens.filter(token => token.is(\"WEDGE CRESCENDO BOTTOM\"));\n\t\tconst decrescendos = tokens.filter(token => token.is(\"WEDGE DECRESCENDO TOP\"));\n\t\tconst decrescendoBottoms = tokens.filter(token => token.is(\"WEDGE DECRESCENDO BOTTOM\"));\n\t\tcrescendos.forEach(line => {\n\t\t\tconst partner = crescendoBottoms.find(b => b.x === line.x && Math.abs(b.y - line.y) < 0.06);\n\n\t\t\tif (partner) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.CrescendoBegin,\n\t\t\t\t\tx: line.x,\n\t\t\t\t\ty: line.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.log(\"unpaired crescendo:\", line, crescendoBottoms);\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.CrescendoEnd,\n\t\t\t\tx: line.x + line.target.x,\n\t\t\t\ty: line.y + line.target.y,\n\t\t\t});\n\t\t});\n\t\tdecrescendos.forEach(line => {\n\t\t\tconst partner = decrescendoBottoms.find(b => b.x + b.target.x === line.x + line.target.x && Math.abs(b.y + b.target.y - (line.y + line.target.y)) < 0.06);\n\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.DecrescendoBegin,\n\t\t\t\tx: line.x,\n\t\t\t\ty: line.y,\n\t\t\t});\n\t\t\tif (partner) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic: SemanticType.DecrescendoEnd,\n\t\t\t\t\tx: line.x + line.target.x,\n\t\t\t\t\ty: line.y + line.target.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.log(\"unpaired decrescendo:\", line, decrescendoBottoms);\n\t\t});\n\n\t\t// TODO: volta alternative\n\n\t\t// measure bars\n\t\tconst measureSeparators = staff.tokens.filter(token => token.is(\"MEASURE_SEPARATOR\"));\n\t\tconst singleBars = [];\n\t\tconst groupBars = [];\n\n\t\tfor (let i = 0; i < measureSeparators.length; ++i) {\n\t\t\tconst bar = measureSeparators[i];\n\t\t\tconst nextBar = measureSeparators[i + 1];\n\t\t\tconst inteval = nextBar ? nextBar.x - bar.x : Infinity;\n\n\t\t\tif (inteval < 1) {\n\t\t\t\tgroupBars.push([bar, nextBar]);\n\t\t\t\t++i;\n\t\t\t}\n\t\t\telse\n\t\t\t\tsingleBars.push(bar);\n\t\t};\n\t\t//console.log(\"bars:\", singleBars, groupBars);\n\n\t\tsingleBars.forEach(bar => {\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.vline_BarMeasure,\n\t\t\t\tx: bar.x + bar.sw / 2,\n\t\t\t\ty: 0,\n\t\t\t\textension: {\n\t\t\t\t\ty1: -2,\n\t\t\t\t\ty2: 2,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tgroupBars.forEach(group => {\n\t\t\tlet x = (group[0].x + group[1].x) / 2;\n\t\t\tconst bold0 = group[0].is(\"BOLD\");\n\t\t\tconst bold1 = group[1].is(\"BOLD\");\n\n\t\t\tlet semantic = null;\n\t\t\tif (!bold0 && bold1) {\n\t\t\t\tx = group[0].x;\n\n\t\t\t\tif (!voltaRightXs.some(vx => x - vx < 2))\n\t\t\t\t\tsemantic = SemanticType.vline_BarTerminal;\n\t\t\t}\n\t\t\telse if (bold0 && !bold1)\n\t\t\t\tx = group[1].x;\n\t\t\telse if (!bold0 && !bold1)\n\t\t\t\tsemantic = SemanticType.vline_BarSegment;\n\n\t\t\t//console.log(\"group:\", group[0].x, group[1].x, x);\n\t\t\tpoints.push({\n\t\t\t\tsemantic: SemanticType.vline_BarMeasure,\n\t\t\t\tx,\n\t\t\t\ty: 0,\n\t\t\t\textension: {\n\t\t\t\t\ty1: -2,\n\t\t\t\t\ty2: 2,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tif (semantic) {\n\t\t\t\tpoints.push({\n\t\t\t\t\tsemantic,\n\t\t\t\t\tx,\n\t\t\t\t\ty: 0,\n\t\t\t\t\textension: {\n\t\t\t\t\t\ty1: -2,\n\t\t\t\t\t\ty2: 2,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst graph = new SemanticGraph();\n\t\tgraph.points = points;\n\n\t\treturn graph;\n\t}*/\n\n\tstatic fromPoints(points: SemanticPoint[] = []): SemanticGraph {\n\t\tconst graph = new SemanticGraph();\n\t\tgraph.points = points;\n\n\t\treturn graph;\n\t}\n\n\tgetLayer(semantic: SemanticType): Point[] {\n\t\treturn this.points.filter((p) => p.semantic === semantic);\n\t}\n\n\tgetConfidentLayer(semantic: SemanticType, threshold: number): Point[] {\n\t\treturn this.points.filter((p) => p.semantic === semantic && (!Number.isFinite(p.confidence) || p.confidence >= threshold));\n\t}\n\n\tgetSystemPoints(): SemanticPoint[] {\n\t\treturn this.points.filter((point) => SYSTEM_SEMANTIC_TYPES.includes(point.semantic));\n\t}\n\n\tgetStaffPoints(): SemanticPoint[] {\n\t\treturn this.points.filter((point) => !SYSTEM_SEMANTIC_TYPES.includes(point.semantic));\n\t}\n\n\toffset(x: number, y: number): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tpoint.x += x;\n\t\t\tpoint.y += y;\n\t\t});\n\t}\n\n\tscale(factor: number): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tpoint.x *= factor;\n\t\t\tpoint.y *= factor;\n\t\t});\n\t}\n\n\t// multipy 3x2 matrix\n\ttransform(matrix: [number, number][]): void {\n\t\tthis.points.forEach((point) => {\n\t\t\tlet x = point.x * matrix[0][0] + point.y * matrix[1][0] + matrix[2][0];\n\t\t\tconst y = point.x * matrix[0][1] + point.y * matrix[1][1] + matrix[2][1];\n\n\t\t\tif (point.extension) {\n\t\t\t\tif (Number.isFinite(point.extension.y1)) {\n\t\t\t\t\tconst y1 = point.x * matrix[0][1] + point.extension.y1 * matrix[1][1] + matrix[2][1];\n\t\t\t\t\tconst y2 = point.x * matrix[0][1] + point.extension.y2 * matrix[1][1] + matrix[2][1];\n\t\t\t\t\tx = point.x * matrix[0][0] + (point.extension.y1 + point.extension.y2) * 0.5 * matrix[1][0] + matrix[2][0];\n\n\t\t\t\t\tpoint.extension.y1 = y1;\n\t\t\t\t\tpoint.extension.y2 = y2;\n\t\t\t\t}\n\n\t\t\t\tif (Number.isFinite(point.extension.width)) {\n\t\t\t\t\tconst scaling = Math.sqrt(matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]);\n\t\t\t\t\tpoint.extension.width *= scaling;\n\t\t\t\t\tpoint.extension.height *= scaling;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpoint.x = x;\n\t\t\tpoint.y = y;\n\t\t});\n\t}\n}\n\nexport { SemanticGraph };\n","import { SimpleClass } from './aux_/typedJSON';\nimport {\n\tAdditionalLineStack,\n\tChordColumn,\n\tChordRect,\n\tEventFeature,\n\tEventMeasureColumn,\n\tEventSystem,\n\tPageLayout,\n\tRect,\n\tSourceImageFile,\n\tTextType,\n\tVLine,\n} from './interfaces';\nimport { DummyLogger, Logger } from './logger';\nimport { SemanticGraph } from './semanticGraph';\nimport { hashPageSemanticPoint, hashSemanticPoint, NOTEHEAD_WIDTHS, SemanticPoint, SemanticType } from './semanticPoint';\nimport { AccessoryDirection, ContextedTerm, ContextType, EventTerm, GraceType, MarkTerm, TempoTerm, TremoloLink } from './term';\nimport {\n\tTextToken,\n\tToken,\n\tTokenAccessories,\n\tTokenBeams,\n\tTokenClefs,\n\tTokenDirectionless,\n\tTokenDots,\n\tTokenFlags,\n\tTokenNoteheads,\n\tTokenRests,\n\tTokenTimesigs,\n\tTokenType,\n\tTOKEN_Y_FIXED,\n\tTOKEN_Y_ROUND,\n} from './token';\nimport { distance2D, roundNumber, solveOverlapping, trans23 } from './utils';\n\ntype ChordsFeeder = (si: number, mi: number) => ChordColumn[];\ntype ColumnProcessor = (column: EventMeasureColumn) => EventMeasureColumn;\n\nconst CHORD_X_TOLERANCE = 0.2;\n//const EVENT_X_TOLERANCE = 0.8;\n\nconst STEM_LENGTH_MAX = 6;\n\nconst INDENT_THRESHOLD = 2;\n\nconst MEASURE_SEMANTICS = [\n\tSemanticType.ClefG,\n\tSemanticType.ClefF,\n\tSemanticType.ClefC,\n\tSemanticType.TimesigC44,\n\tSemanticType.TimesigC22,\n\tSemanticType.TimesigZero,\n\tSemanticType.TimesigOne,\n\tSemanticType.TimesigTwo,\n\tSemanticType.TimesigThree,\n\tSemanticType.TimesigFour,\n\tSemanticType.TimesigFive,\n\tSemanticType.TimesigSix,\n\tSemanticType.TimesigSeven,\n\tSemanticType.TimesigEight,\n\tSemanticType.TimesigNine,\n\tSemanticType.OctaveShift8va,\n\tSemanticType.OctaveShift8vb,\n\tSemanticType.OctaveShift0,\n\tSemanticType.Zero,\n\tSemanticType.One,\n\tSemanticType.Two,\n\tSemanticType.Three,\n\tSemanticType.Four,\n\tSemanticType.Five,\n\tSemanticType.Six,\n\tSemanticType.Seven,\n\tSemanticType.Eight,\n\tSemanticType.Nine,\n\tSemanticType.AccNatural,\n\tSemanticType.AccSharp,\n\tSemanticType.AccDoublesharp,\n\tSemanticType.AccFlat,\n\tSemanticType.AccFlatflat,\n\tSemanticType.NoteheadS0,\n\tSemanticType.NoteheadS1,\n\tSemanticType.NoteheadS2,\n\tSemanticType.NoteheadS1stemU,\n\tSemanticType.NoteheadS1stemD,\n\tSemanticType.NoteheadS2stemU,\n\tSemanticType.NoteheadS2stemD,\n\tSemanticType.Rest0,\n\tSemanticType.Rest1,\n\tSemanticType.Rest2,\n\tSemanticType.Rest3,\n\tSemanticType.Rest4,\n\tSemanticType.Rest5,\n\tSemanticType.Rest6,\n\tSemanticType.Rest0W,\n\tSemanticType.RestM1,\n\tSemanticType.SlurBegin,\n\tSemanticType.SlurEnd,\n\tSemanticType.Dot,\n\tSemanticType.f,\n\tSemanticType.p,\n\tSemanticType.m,\n\tSemanticType.n,\n\tSemanticType.r,\n\tSemanticType.s,\n\tSemanticType.z,\n\tSemanticType.ScriptFermata,\n\tSemanticType.ScriptShortFermata,\n\tSemanticType.ScriptSforzato,\n\tSemanticType.ScriptStaccato,\n\tSemanticType.ScriptStaccatissimo,\n\tSemanticType.ScriptTurn,\n\tSemanticType.ScriptTrill,\n\tSemanticType.ScriptSegno,\n\tSemanticType.ScriptCoda,\n\tSemanticType.ScriptArpeggio,\n\tSemanticType.ScriptPrall,\n\tSemanticType.ScriptMordent,\n\tSemanticType.ScriptMarcato,\n\tSemanticType.ScriptTenuto,\n\tSemanticType.ScriptPortato,\n\tSemanticType.PedalStar,\n\tSemanticType.PedalPed,\n\tSemanticType.GraceNotehead,\n\tSemanticType.BeamLeft,\n\tSemanticType.BeamRight,\n\tSemanticType.BeamContinue,\n\tSemanticType.CrescendoBegin,\n\tSemanticType.CrescendoEnd,\n\tSemanticType.DecrescendoBegin,\n\tSemanticType.DecrescendoEnd,\n\tSemanticType.TremoloLeft,\n\tSemanticType.TremoloRight,\n\tSemanticType.TremoloMiddle,\n];\n\nconst STAFF_LINED_SEMANTICS = [\n\tSemanticType.AccNatural,\n\tSemanticType.AccSharp,\n\tSemanticType.AccDoublesharp,\n\tSemanticType.AccFlat,\n\tSemanticType.AccFlatflat,\n\tSemanticType.NoteheadS0,\n\tSemanticType.NoteheadS1,\n\tSemanticType.NoteheadS2,\n\tSemanticType.NoteheadS1stemU,\n\tSemanticType.NoteheadS1stemD,\n\tSemanticType.NoteheadS2stemU,\n\tSemanticType.NoteheadS2stemD,\n];\n\nconst LINED_INTERVAL_SEMANTICS = [SemanticType.SignLined, SemanticType.SignInterval];\n\nconst NOTEHEAD_FOR_STEM_SEMANTICS = [SemanticType.NoteheadS1, SemanticType.NoteheadS2];\n\nconst KEYACC_CANDIDATE_SEMANTICS = {\n\tAccSharp: TokenType.KeySharp,\n\tAccNatural: TokenType.KeyNatural,\n\tAccFlat: TokenType.KeyFlat,\n};\n\nconst NOTEHEAD_TABLE: { [key: string]: { [key: string]: SemanticType } } = {\n\t[SemanticType.NoteheadS1]: {\n\t\tup: SemanticType.NoteheadS1stemU,\n\t\tdown: SemanticType.NoteheadS1stemD,\n\t},\n\t[SemanticType.NoteheadS2]: {\n\t\tup: SemanticType.NoteheadS2stemU,\n\t\tdown: SemanticType.NoteheadS2stemD,\n\t},\n};\n\nconst REST_SEMANTICS = [\n\tSemanticType.Rest0,\n\tSemanticType.Rest1,\n\tSemanticType.Rest2,\n\tSemanticType.Rest3,\n\tSemanticType.Rest4,\n\tSemanticType.Rest5,\n\tSemanticType.Rest6,\n];\n\nconst TOKEN_TO_STEMBEAM = {\n\t[TokenType.BeamLeft]: 'Open',\n\t[TokenType.BeamRight]: 'Close',\n\t[TokenType.BeamContinue]: 'Continue',\n};\n\nconst TEXT_TYPE_ALIAS = {\n\tAlter1: TextType.Alternation1,\n\tAlter2: TextType.Alternation2,\n};\n\ninterface StaffPosition {\n\ty: number;\n\tradius: number;\n}\n\ninterface TextArea {\n\tscore: number;\n\tcx: number;\n\tcy: number;\n\twidth: number;\n\theight: number;\n\ttext: string;\n\ttype: string;\n\ttheta: number;\n\tfeature_dict: Record;\n}\n\ntype Stem = VLine & { direction: 'u' | 'd' };\n\nconst noteheadsXPivot = (xs: number[], direction: 'u' | 'd' | null): number => {\n\tswitch (xs.length) {\n\t\tcase 0:\n\t\t\treturn undefined;\n\n\t\tcase 1:\n\t\t\treturn xs[0];\n\n\t\tcase 2:\n\t\t\treturn direction === 'u' ? Math.min(...xs) : Math.max(...xs);\n\n\t\tdefault: {\n\t\t\tconst mean = xs.reduce((sum, x) => sum + x, 0) / xs.length;\n\t\t\txs.sort((x1, x2) => Math.abs(x1 - mean) - Math.abs(x2 - mean));\n\n\t\t\treturn noteheadsXPivot(xs.slice(0, xs.length - 1), direction);\n\t\t}\n\t}\n};\n\nconst noteheadsPivot = (nhs: Token[]): number =>\n\tnoteheadsXPivot(\n\t\tnhs.map((nh) => (Number.isFinite(nh.pivotX) ? nh.pivotX : nh.x)),\n\t\tnhs[0].direction\n\t);\n\nclass Measure extends SimpleClass {\n\tstatic className = 'Measure';\n\tstatic blackKeys = ['tokens', 'antiTokens'];\n\n\tleft: number;\n\twidth: number;\n\theight: number;\n\n\talternative: boolean;\n\n\ttokens: Token[];\n\tantiTokens: Token[];\n\n\tbarTypes: Record;\n\n\tconstructor(data?: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.tokens = this.tokens || [];\n\t\tthis.antiTokens = this.antiTokens || [];\n\t\tthis.barTypes = this.barTypes || {};\n\t}\n\n\tget right(): number {\n\t\treturn this.left + this.width;\n\t}\n\n\tget noteheads(): Token[] {\n\t\treturn this.tokens.filter((t) => t.isNotehead).sort((n1, n2) => n1.x - n2.x);\n\t}\n\n\tget chordRects(): ChordRect[] {\n\t\tconst noteheads = this.noteheads.filter((nh) =>\n\t\t\t[TokenType.NoteheadS0, TokenType.NoteheadS1stemU, TokenType.NoteheadS2stemU, TokenType.NoteheadS1stemD, TokenType.NoteheadS2stemD].includes(nh.type)\n\t\t);\n\n\t\tlet nulN = 0;\n\n\t\tconst nhmap: Record = noteheads.reduce((map, nh) => {\n\t\t\tconst tip = nh.tip ? `${nh.tip.x}|${nh.tip.y}` : `nul${nulN}`;\n\t\t\tlet key = `${nh.type}|${tip}`;\n\n\t\t\tif (!nh.tip && map[key]) {\n\t\t\t\tif (!map[key].some((hh) => Math.abs(hh.x - nh.x) < NOTEHEAD_WIDTHS.NoteheadS0)) {\n\t\t\t\t\t++nulN;\n\t\t\t\t\tkey = `${nh.type}|nul${nulN}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmap[key] = map[key] || [];\n\t\t\tmap[key].push(nh);\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn Object.values(nhmap).map((nhs) => {\n\t\t\tconst left = Math.min(...nhs.map((nh) => nh.x));\n\t\t\tconst right = Math.max(...nhs.map((nh) => nh.x));\n\t\t\tconst top = Math.min(...nhs.map((nh) => nh.y));\n\t\t\tconst bottom = Math.max(...nhs.map((nh) => nh.y));\n\n\t\t\tconst nh0 = nhs[0];\n\n\t\t\tconst stemX = nh0 && nh0.tip ? nh0.tip.x : left;\n\n\t\t\tlet x = left;\n\t\t\tlet width = right - left;\n\t\t\tlet stemDirection = null;\n\n\t\t\tswitch (nh0.type) {\n\t\t\t\tcase TokenType.NoteheadS0:\n\t\t\t\t\tx -= NOTEHEAD_WIDTHS.NoteheadS0 / 2;\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS0;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase TokenType.NoteheadS1stemU:\n\t\t\t\tcase TokenType.NoteheadS2stemU:\n\t\t\t\t\tstemDirection = 'u';\n\t\t\t\t\tx -= NOTEHEAD_WIDTHS.NoteheadS1;\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase TokenType.NoteheadS1stemD:\n\t\t\t\tcase TokenType.NoteheadS2stemD:\n\t\t\t\t\tstemDirection = 'd';\n\t\t\t\t\twidth += NOTEHEAD_WIDTHS.NoteheadS1;\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tx,\n\t\t\t\twidth,\n\t\t\t\tstemX,\n\t\t\t\tstemDirection,\n\t\t\t\ttop,\n\t\t\t\tbottom,\n\t\t\t\ttip: nh0.tip,\n\t\t\t};\n\t\t});\n\t}\n\n\tget timeWarped(): boolean {\n\t\treturn this.tokens && this.tokens.some((token) => token.timeWarped);\n\t}\n\n\tget additionalLines(): AdditionalLineStack[] {\n\t\tconst chords = this.getChords();\n\t\tconst up = chords\n\t\t\t.filter((chord) => chord.ys.some((y) => y <= -3))\n\t\t\t.map((chord) => ({\n\t\t\t\tleft: chord.left,\n\t\t\t\tright: chord.right,\n\t\t\t\tn: Math.ceil(Math.min(...chord.ys)) + 2,\n\t\t\t}));\n\t\tconst down = chords\n\t\t\t.filter((chord) => chord.ys.some((y) => y >= 3))\n\t\t\t.map((chord) => ({\n\t\t\t\tleft: chord.left,\n\t\t\t\tright: chord.right,\n\t\t\t\tn: Math.floor(Math.max(...chord.ys)) - 2,\n\t\t\t}));\n\n\t\treturn [...up, ...down].map((stack) => ({\n\t\t\tleft: stack.left - 0.28,\n\t\t\tright: stack.right + 0.28,\n\t\t\tn: stack.n,\n\t\t}));\n\t}\n\n\tgetChords(): ChordColumn[] {\n\t\tconst flags = this.tokens.filter((t) => TokenFlags.includes(t.type));\n\t\tconst dots = this.tokens.filter((t) => TokenDots.includes(t.type));\n\t\tconst beams = this.tokens.filter((t) => TokenBeams.includes(t.type));\n\n\t\tconst chordRcs = this.chordRects\n\t\t\t.map((rect) => {\n\t\t\t\tconst noteheads = this.noteheads.filter(\n\t\t\t\t\t(nh) =>\n\t\t\t\t\t\tnh.direction === rect.stemDirection &&\n\t\t\t\t\t\tnh.left >= rect.x &&\n\t\t\t\t\t\tnh.right <= rect.x + rect.width + CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tnh.y >= rect.top &&\n\t\t\t\t\t\tnh.y <= rect.bottom\n\t\t\t\t);\n\t\t\t\tnoteheads.sort((n1, n2) => n2.y - n1.y);\n\t\t\t\tconst ys = noteheads.map((nh) => nh.y);\n\t\t\t\tconst noteIds = noteheads.map((nh) => nh.id);\n\n\t\t\t\tconst division = noteheads.reduce((d, nh) => Math.max(d, nh.division), 0);\n\n\t\t\t\treturn {\n\t\t\t\t\trect,\n\t\t\t\t\tleft: rect.x,\n\t\t\t\t\tright: rect.x + rect.width,\n\t\t\t\t\tpivotX: noteheadsPivot(noteheads),\n\t\t\t\t\tys,\n\t\t\t\t\ttip: rect.tip,\n\t\t\t\t\tnoteIds,\n\t\t\t\t\tdivision,\n\t\t\t\t\tdots: null,\n\t\t\t\t\trest: false,\n\t\t\t\t\tstemDirection: rect.stemDirection,\n\t\t\t\t\tbeam: null,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.sort((c1, c2) => c2.left - c1.left);\n\n\t\tconst accs = new Set();\n\n\t\tconst chords = chordRcs.map(({ rect, ...chord }) => {\n\t\t\tif (chord.division >= 1) {\n\t\t\t\t// NOTE: notehead-s1 may have flags too\n\t\t\t\tconst flagRange = [rect.bottom, rect.top];\n\t\t\t\tswitch (rect.stemDirection) {\n\t\t\t\t\tcase 'u':\n\t\t\t\t\t\tflagRange[0] = rect.tip ? rect.tip.y - 0.2 : rect.top - STEM_LENGTH_MAX - 0.5;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tflagRange[1] = rect.tip ? rect.tip.y + 0.2 : rect.bottom + STEM_LENGTH_MAX + 0.5;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst nearbyFlags = flags.filter(\n\t\t\t\t\t(flag) =>\n\t\t\t\t\t\t!accs.has(flag.id) &&\n\t\t\t\t\t\tflag.x > rect.stemX - CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tflag.x < rect.stemX + CHORD_X_TOLERANCE &&\n\t\t\t\t\t\tflag.y > flagRange[0] &&\n\t\t\t\t\t\tflag.y < flagRange[1]\n\t\t\t\t);\n\t\t\t\tchord.division = nearbyFlags.reduce((d, flag) => Math.max(d, flag.division), chord.division);\n\n\t\t\t\tnearbyFlags.forEach((flag) => accs.add(flag.id));\n\n\t\t\t\tif (chord.division >= 3) {\n\t\t\t\t\tconst beamToken = rect.tip && beams.find((t) => Math.abs(rect.tip.x - t.x) < 0.3 && Math.abs(rect.tip.y - t.y) < 0.7);\n\t\t\t\t\tif (beamToken) chord.beam = TOKEN_TO_STEMBEAM[beamToken.type];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst nearbyDots = dots.filter(\n\t\t\t\t(dot) =>\n\t\t\t\t\t!accs.has(dot.id) &&\n\t\t\t\t\tdot.x > rect.x + rect.width - 0.2 &&\n\t\t\t\t\tdot.x < rect.x + rect.width + 1.2 &&\n\t\t\t\t\tdot.y > rect.top - 1 &&\n\t\t\t\t\tdot.y <= rect.bottom + 0.5\n\t\t\t);\n\t\t\tchord.dots = nearbyDots.reduce((v, dot) => Math.max(v, dot.dots), 0);\n\n\t\t\tnearbyDots.forEach((dot) => accs.add(dot.id));\n\n\t\t\treturn chord;\n\t\t});\n\n\t\tchords.reverse();\n\n\t\treturn chords;\n\t}\n\n\tgetRests(): ChordColumn[] {\n\t\tconst rests = this.tokens.filter((t) => TokenRests.includes(t.type));\n\t\tconst dots = this.tokens.filter((t) => TokenDots.includes(t.type));\n\n\t\treturn rests.map((rest) => {\n\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > rest.x + 0.5 && dot.x < rest.x + 2 && dot.y > rest.y - 1 && dot.y < rest.y + 0.5);\n\t\t\tconst dotValue = nearbyDots.reduce((v, dot) => Math.max(v, dot.dots), 0);\n\n\t\t\treturn {\n\t\t\t\tleft: rest.x - 0.75,\n\t\t\t\tright: rest.x + 0.75,\n\t\t\t\tpivotX: rest.x,\n\t\t\t\trest: true,\n\t\t\t\tys: [rest.y],\n\t\t\t\tnoteIds: [rest.id],\n\t\t\t\tdots: dotValue,\n\t\t\t\tdivision: rest.division,\n\t\t\t\tstemDirection: null,\n\t\t\t};\n\t\t});\n\t}\n\n\tgetEvents(): ChordColumn[] {\n\t\treturn [...this.getChords(), ...this.getRests()].sort((e1, e2) => e1.left - e2.left);\n\t}\n\n\tgetContexts(fields = {}): ContextedTerm[] {\n\t\treturn this.tokens\n\t\t\t.filter((t) => t.isContexted)\n\t\t\t.sort((n1, n2) => n1.x - n2.x)\n\t\t\t.map(\n\t\t\t\t(token) =>\n\t\t\t\t\tnew ContextedTerm({\n\t\t\t\t\t\tx: token.x,\n\t\t\t\t\t\ty: token.y,\n\t\t\t\t\t\ttokenType: token.type,\n\t\t\t\t\t\t...fields,\n\t\t\t\t\t})\n\t\t\t);\n\t}\n\n\tassignAccessoriesOnEvents(events: ChordColumn[]): void {\n\t\tevents.forEach((event) => (event.accessories = event.accessories || []));\n\n\t\tconst accessories = this.tokens.filter((token) => TokenAccessories.includes(token.type));\n\t\t//console.log(\"accessories:\", accessories);\n\t\taccessories.forEach((accessory) => {\n\t\t\tconst relatedEvents = events.filter((event) => accessory.x > event.left - 1 && accessory.x < event.right + 1);\n\n\t\t\tif (relatedEvents.length > 0) {\n\t\t\t\tlet owner = relatedEvents[0];\n\t\t\t\tif (relatedEvents.length > 1) {\n\t\t\t\t\towner = relatedEvents\n\t\t\t\t\t\t.map((event) => ({ event, d: Math.min(...event.ys.map((y) => Math.abs(y - accessory.y))) }))\n\t\t\t\t\t\t.sort(({ d: d1 }, { d: d2 }) => d1 - d2)\n\t\t\t\t\t\t.map(({ event }) => event)[0];\n\t\t\t\t}\n\t\t\t\t//console.log(\"relatedEvents:\", accessory, owner);\n\n\t\t\t\tlet direction = accessory.y > Math.max(...owner.ys) ? AccessoryDirection.Down : AccessoryDirection.Up;\n\t\t\t\tif (TokenDirectionless.includes(accessory.type)) direction = null;\n\n\t\t\t\towner.accessories.push({\n\t\t\t\t\ttype: accessory.type,\n\t\t\t\t\tid: accessory.id,\n\t\t\t\t\tdirection,\n\t\t\t\t\tx: accessory.x - owner.left,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"alone accessory:\", accessory.type);\n\t\t});\n\n\t\t// arpeggio\n\t\tconst sortEvents = [...events];\n\t\tsortEvents.sort((e1, e2) => e1.left - e2.left);\n\n\t\tconst arpeggios = this.tokens.filter((token) => token.type === TokenType.ScriptArpeggio);\n\t\tarpeggios.forEach((arpeggio) => {\n\t\t\tconst owner = sortEvents.find(\n\t\t\t\t(event) => arpeggio.x < event.left && event.ys.some((y) => y < arpeggio.y + 0.25) && event.ys.some((y) => y > arpeggio.y)\n\t\t\t);\n\t\t\t//const owner = sortEvents.find(event => event.left - leftMost.left < 2 && event.ys.some(y => Math.abs(y - arpeggio.y + 0.25) < 0.5));\n\t\t\tif (owner) {\n\t\t\t\towner.accessories.push({\n\t\t\t\t\ttype: TokenType.ScriptArpeggio,\n\t\t\t\t\tid: arpeggio.id,\n\t\t\t\t\tx: arpeggio.x - owner.left,\n\t\t\t\t});\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"alone arpeggio:\", arpeggio);\n\t\t});\n\n\t\t// grace noteheads\n\t\tconst graceNhs = this.tokens.filter((token) => token.type === TokenType.GraceNotehead);\n\t\tgraceNhs.forEach((grace) => {\n\t\t\tconst event = events.find((event) => grace.x > event.left && grace.x < event.right && event.ys.some((y) => Math.abs(grace.y - y) < 0.4));\n\t\t\tif (event) event.grace = GraceType.Grace;\n\t\t});\n\n\t\t// tremolos\n\t\tconst tremolsLs = this.tokens.filter((token) => token.type === TokenType.TremoloLeft);\n\t\tconst tremolsRs = this.tokens.filter((token) => token.type === TokenType.TremoloRight);\n\t\tconst tremolsMs = this.tokens.filter((token) => token.type === TokenType.TremoloMiddle);\n\n\t\tconst tevents = events\n\t\t\t.filter((event) => !event.rest)\n\t\t\t.map((event) => {\n\t\t\t\tconst ys = [...event.ys];\n\t\t\t\tif (event.tip) ys.push(event.tip.y);\n\t\t\t\telse {\n\t\t\t\t\tys.push(event.ys[0] + 2);\n\t\t\t\t\tys.push(event.ys[event.ys.length - 1] - 2);\n\t\t\t\t}\n\n\t\t\t\tconst stemL = event.tip ? event.tip.x : event.left;\n\t\t\t\tconst stemR = event.tip ? event.tip.x : event.right;\n\n\t\t\t\treturn {\n\t\t\t\t\tevent,\n\t\t\t\t\ttop: Math.min(...ys),\n\t\t\t\t\tbottom: Math.max(...ys),\n\t\t\t\t\tstemL,\n\t\t\t\t\tstemR,\n\t\t\t\t};\n\t\t\t});\n\n\t\ttremolsMs.forEach((tm) => {\n\t\t\tconst te = tevents.find((te) => {\n\t\t\t\tif (te.event.tip) return tm.y > te.top && tm.y < te.bottom && Math.abs(tm.x - te.event.tip.x) < 0.3;\n\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t}\n\t\t});\n\t\ttremolsLs.forEach((tl) => {\n\t\t\tconst te = tevents.find((te) => tl.y > te.top && tl.y < te.bottom && tl.x > te.stemR && tl.x < te.stemR + 1.6);\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t\tte.event.tremoloLink = TremoloLink.Pitcher;\n\t\t\t}\n\t\t});\n\t\ttremolsRs.forEach((tr) => {\n\t\t\tconst te = tevents.find((te) => tr.y > te.top && tr.y < te.bottom && tr.x < te.stemL && tr.x > te.stemL - 1.6);\n\t\t\tif (te) {\n\t\t\t\tte.event.tremolo = te.event.tremolo || 2;\n\t\t\t\t++te.event.tremolo;\n\t\t\t\tte.event.tremoloLink = TremoloLink.Catcher;\n\t\t\t}\n\t\t});\n\t}\n\n\tassignFeaturesOnEvents(events: ChordColumn[], semantics: SemanticPoint[]): void {\n\t\tconst points = semantics.filter((point) => point.x > this.left && point.x < this.right);\n\t\tconst rests = points.filter((point) => REST_SEMANTICS.includes(point.semantic));\n\t\tconst flags = points.filter((point) => point.semantic === SemanticType.Flag3);\n\t\tconst dotPs = points.filter((point) => point.semantic === SemanticType.Dot);\n\t\tconst beamLs = points.filter((points) => points.semantic === SemanticType.BeamLeft);\n\t\tconst beamMs = points.filter((points) => points.semantic === SemanticType.BeamContinue);\n\t\tconst beamRs = points.filter((points) => points.semantic === SemanticType.BeamRight);\n\t\tconst gracePs = points.filter((point) => point.semantic === SemanticType.GraceNotehead);\n\t\tconst tremoloRs = points.filter((point) => point.semantic === SemanticType.TremoloRight);\n\t\tconst stems = points.filter((point) => point.semantic === SemanticType.vline_Stem);\n\t\tconst s0 = points.filter((point) => point.semantic === SemanticType.NoteheadS0);\n\t\tconst s1 = points.filter((point) => point.semantic === SemanticType.NoteheadS1);\n\t\tconst s2 = points.filter((point) => point.semantic === SemanticType.NoteheadS2);\n\n\t\tevents.forEach((event) => {\n\t\t\tconst cx = event.tip ? event.tip.x : (event.left + event.right) / 2;\n\t\t\tconst top = event.tip ? Math.min(event.tip.y, event.ys[event.ys.length - 1]) : event.ys[event.ys.length - 1];\n\t\t\tconst bottom = event.tip ? Math.max(event.tip.y, event.ys[0]) : event.ys[0];\n\t\t\tconst stemL = event.tip ? event.tip.x : event.left;\n\n\t\t\tconst divisions = [0, 0, 0, 0, 0, 0, 0];\n\t\t\tif (event.rest) {\n\t\t\t\tconst i_rests = rests.filter((point) => distance2D(point, { x: cx, y: event.ys[0] }) < 0.5);\n\t\t\t\ti_rests.forEach((r) => {\n\t\t\t\t\tconst d = REST_SEMANTICS.indexOf(r.semantic);\n\t\t\t\t\tdivisions[d] = Math.max(divisions[d], r.confidence);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst nhs = [s0, s1, s2]\n\t\t\t\t\t.map((ss) => ss.filter((nh) => nh.x > event.left && nh.x < event.right && nh.y > top - 0.25 && nh.y < bottom + 0.25))\n\t\t\t\t\t.map((ss) => Math.max(0, ...ss.map((nh) => nh.confidence)));\n\n\t\t\t\tconst i_flags = flags.filter((flag) => flag.y > top - 0.2 && flag.y < bottom + 0.2 && Math.abs(flag.x - cx) < 0.2);\n\t\t\t\ti_flags.sort((f1, f2) => f2.confidence - f1.confidence);\n\n\t\t\t\tdivisions[0] = nhs[0];\n\t\t\t\tdivisions[1] = nhs[1];\n\t\t\t\tdivisions[2] = nhs[2];\n\t\t\t\tArray(divisions.length - 3)\n\t\t\t\t\t.fill(0)\n\t\t\t\t\t.forEach((_, i) => (divisions[3 + i] = i_flags[i] ? i_flags[i].confidence : 0));\n\t\t\t}\n\n\t\t\tconst i_dots = dotPs.filter((dot) => dot.x > cx && dot.x < event.right + 2.6);\n\t\t\tconst dots2 = i_dots.filter((dot) => i_dots.some((d) => dot.x > d.x && Math.abs(dot.y - d.y) < 0.2));\n\t\t\tconst dots = [Math.max(0, ...i_dots.map((dot) => dot.confidence)), Math.max(0, ...dots2.map((dot) => dot.confidence))];\n\n\t\t\tconst beams = [beamLs, beamMs, beamRs]\n\t\t\t\t.map((bs) => bs.filter((b) => Math.abs(b.x - cx) < 0.2 && b.y > top - 0.2 && b.y < bottom + 0.2))\n\t\t\t\t.map((bs) => Math.max(0, ...bs.map((b) => b.confidence)));\n\n\t\t\tconst u_stems = stems.filter((stem) => distance2D({ x: cx, y: event.ys[0] }, { x: stem.x, y: stem.extension.y2 }) < 0.5);\n\t\t\tconst d_stems = stems.filter((stem) => distance2D({ x: cx, y: event.ys[event.ys.length - 1] }, { x: stem.x, y: stem.extension.y1 }) < 0.5);\n\t\t\tconst stemDirections = [Math.max(0, ...u_stems.map((stem) => stem.confidence)), Math.max(0, ...d_stems.map((stem) => stem.confidence))];\n\n\t\t\tconst graces = gracePs.filter((grace) => Math.abs(grace.x - cx) < 0.6 && event.ys.some((y) => Math.abs(grace.y - y) < 0.4));\n\t\t\tconst grace = Math.max(0, ...graces.map((grace) => grace.confidence));\n\n\t\t\tconst tremolos =\n\t\t\t\tevent.division === 0\n\t\t\t\t\t? tremoloRs.filter((tremolo) => tremolo.x > event.left - 2 && tremolo.x < event.right)\n\t\t\t\t\t: tremoloRs.filter((tremolo) => tremolo.y > top - 0.04 && tremolo.y < bottom + 0.04 && tremolo.x > stemL - 2 && tremolo.x < stemL);\n\t\t\tconst tremoloCatcher = Math.max(0, ...tremolos.map((tremolo) => tremolo.confidence));\n\n\t\t\tevent.feature = {\n\t\t\t\tdivisions,\n\t\t\t\tdots,\n\t\t\t\tbeams,\n\t\t\t\tstemDirections,\n\t\t\t\tgrace,\n\t\t\t\ttremoloCatcher,\n\t\t\t} as EventFeature;\n\t\t});\n\t}\n}\n\nclass Staff extends SimpleClass {\n\tstatic className = 'Staff';\n\tstatic blackKeys = ['index', 'semanticTop', 'semanticBttom'];\n\n\tindex?: number; // staff index in full staff layout\n\n\t// in units\n\ttop: number;\n\theight: number;\n\tstaffY: number;\n\n\tsemanticTop: number;\n\tsemanticBottom: number;\n\n\tbackgroundImage: string | Buffer;\n\tmaskImage: string | Buffer;\n\timagePosition: Rect;\n\n\tmeasures: Measure[];\n\n\tsemantics: SemanticPoint[];\n\n\tconstructor({ measureCount = null, measureBars = null, ...data }: Record = {}) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.height = this.height || 10;\n\t\tthis.staffY = this.staffY || 5;\n\n\t\tif (measureBars) {\n\t\t\tlet left = 0;\n\t\t\tthis.measures = measureBars.map((endX) => {\n\t\t\t\tconst measure = new Measure({ left, width: endX - left, height: this.height });\n\t\t\t\tleft = endX;\n\n\t\t\t\treturn measure;\n\t\t\t});\n\t\t} else if (measureCount)\n\t\t\tthis.measures = Array(measureCount)\n\t\t\t\t.fill(null)\n\t\t\t\t.map(() => new Measure());\n\t\telse this.measures = [];\n\t}\n\n\t// relative to staffY\n\tget noteRange(): { top: number; bottom: number } {\n\t\tconst noteheads: Token[] = [].concat(...this.measures.map((measure) => measure.noteheads));\n\t\tconst ys = noteheads.map((note) => note.y);\n\t\tconst top = Math.min(-2, ...ys);\n\t\tconst bottom = Math.max(2, ...ys);\n\n\t\treturn { top, bottom };\n\t}\n\n\tget additionalLines(): AdditionalLineStack[] {\n\t\treturn [].concat(...this.measures.map((measure) => measure.additionalLines));\n\t}\n\n\trearrangeMeasures(measureBars: number[]): void {\n\t\tif (!measureBars.length) {\n\t\t\tconsole.warn('rearrangeMeasures error, measureBars are empty.');\n\t\t\treturn;\n\t\t}\n\n\t\tconst tokens = this.measures?.map((measure) => measure.tokens).flat(1) || [];\n\n\t\tlet left = 0;\n\t\tthis.measures = measureBars.map((endX) => {\n\t\t\tconst measure = new Measure({ left, width: endX - left, height: this.height });\n\t\t\tleft = endX;\n\n\t\t\treturn measure;\n\t\t});\n\n\t\tthis.reassignTokens(tokens);\n\t}\n\n\treassignTokens(tokens: Token[] = null): void {\n\t\tif (!tokens) tokens = [].concat(...this.measures.map((measure) => measure.tokens));\n\n\t\tthis.measures.forEach((measure) => (measure.tokens = []));\n\n\t\ttokens.forEach((token) => {\n\t\t\tfor (const measure of this.measures) {\n\t\t\t\tif (token.x < measure.right) {\n\t\t\t\t\tmeasure.tokens.push(token);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tassignSemantics(graph: SemanticGraph): void {\n\t\tthis.semantics = graph.getStaffPoints();\n\t}\n\n\t// generate tokens from semantics\n\tassemble(threshold: number, system: System, logger: Logger = new DummyLogger()): void {\n\t\tif (!this.semantics) return;\n\n\t\tlet points = system.qualifiedSemantics(this.semantics, threshold);\n\t\tpoints = solveOverlapping(points);\n\n\t\t// tempo noteheads\n\t\tconst tempoNhs = points.filter((point) => point.semantic === SemanticType.TempoNotehead);\n\t\ttempoNhs.forEach((tempoNh) => {\n\t\t\tconst index = points.findIndex((point) => /^Notehead/.test(point.semantic) && distance2D(tempoNh, point) < 0.3);\n\t\t\t//console.log(\"temponh:\", tempoNh, index, points[index]);\n\t\t\tif (index >= 0) points.splice(index, 1);\n\t\t\t// TODO: construct tempo term\n\t\t});\n\n\t\tconst antiP = (id: string): SemanticPoint | null => {\n\t\t\tif (system.displacementSemantics?.[id]) return this.semantics.find((p) => p.id === id);\n\n\t\t\treturn null;\n\t\t};\n\n\t\tpoints.filter((point) => MEASURE_SEMANTICS.includes(point.semantic)).forEach((point) => this.appendPoint(point, { points }));\n\n\t\t// noteheads with stem from noteheads & stems\n\t\tconst stems: Stem[] = points\n\t\t\t.filter((point) => point.semantic === SemanticType.vline_Stem)\n\t\t\t.filter((stem) => stem.extension.y2 - stem.extension.y1 > 1.5) // exclude too short stems\n\t\t\t.map((p) => ({\n\t\t\t\tx: p.x,\n\t\t\t\ty1: p.extension.y1,\n\t\t\t\ty2: p.extension.y2,\n\t\t\t\tdirection: null,\n\t\t\t}));\n\t\tconst noteheads = points.filter(\n\t\t\t(point) => NOTEHEAD_FOR_STEM_SEMANTICS.includes(point.semantic) && point.y > this.semanticTop && point.y < this.semanticBottom\n\t\t);\n\t\tconst rootNhs = new Set();\n\n\t\t// for 2nd degree chord notes\n\t\tconst nhOffsetX = (nh: SemanticPoint, stem: Stem, down: boolean): number => {\n\t\t\tif ((down ? 1 : 0) ^ (nh.x < stem.x ? 1 : 0)) return 0;\n\n\t\t\tconst offset = NOTEHEAD_WIDTHS[nh.semantic];\n\n\t\t\treturn down ? -offset : offset;\n\t\t};\n\n\t\t// find root noteheads on stem\n\t\tstems.forEach((stem) => {\n\t\t\tconst attachedHeads = noteheads.filter(\n\t\t\t\t(nh) =>\n\t\t\t\t\tMath.abs(nh.x - stem.x) - NOTEHEAD_WIDTHS[nh.semantic] / 2 < 0.32 &&\n\t\t\t\t\tMath.abs(nh.x - stem.x) - NOTEHEAD_WIDTHS[nh.semantic] / 2 > -0.44 && // for grace noteheads, more close to their stem\n\t\t\t\t\tnh.y > stem.y1 - 0.5 &&\n\t\t\t\t\tnh.y < stem.y2 + 0.5 &&\n\t\t\t\t\t!(nh.x > stem.x && nh.y > stem.y2) &&\n\t\t\t\t\t!(nh.x < stem.x && nh.y < stem.y1)\n\t\t\t);\n\t\t\t//if (stem.x===102.0625 && stem.y2===1.875)\n\t\t\t//\tdebugger;\n\t\t\tif (attachedHeads.length) {\n\t\t\t\tattachedHeads.sort((n1, n2) => n1.y - n2.y);\n\n\t\t\t\tconst topDist = Math.min(...attachedHeads.map((nh) => nh.y - stem.y1));\n\t\t\t\tconst bottomDist = Math.min(...attachedHeads.map((nh) => stem.y2 - nh.y));\n\t\t\t\tif (Math.min(topDist, bottomDist) > 0.5) return; // no root notehead on this stem\n\n\t\t\t\tconst down = topDist < bottomDist;\n\t\t\t\tstem.direction = down ? 'd' : 'u';\n\n\t\t\t\tif (!down) attachedHeads.reverse();\n\t\t\t\tconst root = attachedHeads[0];\n\n\t\t\t\tconst semantic = down ? NOTEHEAD_TABLE[root.semantic].down : NOTEHEAD_TABLE[root.semantic].up;\n\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: root.id,\n\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\tx: stem.x + nhOffsetX(root, stem, down),\n\t\t\t\t\t\ty: root.y,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\tconfidence: root.confidence,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttip: { x: stem.x, y: down ? stem.y2 : stem.y1 },\n\t\t\t\t\t\tantiPoint: antiP(root.id),\n\t\t\t\t\t\tpoints,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\trootNhs.add(root.id);\n\t\t\t}\n\t\t});\n\n\t\t// non-root noteheads\n\t\tnoteheads\n\t\t\t.filter((nh) => !rootNhs.has(nh.id))\n\t\t\t.forEach((nh) => {\n\t\t\t\tconst nearStems = stems\n\t\t\t\t\t.filter((stem) => Math.abs(stem.x - nh.x) < 2 && nh.y > stem.y1 && nh.y < stem.y2)\n\t\t\t\t\t.sort((s1, s2) => Math.abs(s1.x - nh.x) - Math.abs(s2.x - nh.x));\n\t\t\t\tconst stem = nearStems[0];\n\t\t\t\tif (stem) {\n\t\t\t\t\tconst down = stem.direction === 'd';\n\t\t\t\t\tconst semantic = down ? NOTEHEAD_TABLE[nh.semantic].down : NOTEHEAD_TABLE[nh.semantic].up;\n\n\t\t\t\t\tthis.appendPoint(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: nh.id,\n\t\t\t\t\t\t\tsemantic,\n\t\t\t\t\t\t\tx: stem.x + nhOffsetX(nh, stem, down),\n\t\t\t\t\t\t\ty: nh.y,\n\t\t\t\t\t\t\tpivotX: nh.x,\n\t\t\t\t\t\t\tconfidence: nh.confidence,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttip: { x: stem.x, y: down ? stem.y2 : stem.y1 },\n\t\t\t\t\t\t\tantiPoint: antiP(nh.id),\n\t\t\t\t\t\t\tpoints,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else logger.debug('isolated notehead:', system.index, this.index, nh);\n\t\t\t});\n\n\t\t// group flags\n\t\tconst flags = points.filter((point) => point.semantic === SemanticType.Flag3);\n\t\tflags.sort((f1, f2) => f1.x - f2.x);\n\t\tthis.appendFlags(flags, stems);\n\n\t\t// group dots\n\t\tconst dots = points\n\t\t\t.filter((point) => point.semantic === SemanticType.Dot)\n\t\t\t.map((dot) => {\n\t\t\t\tconst y = roundNumber(dot.y, 0.5);\n\t\t\t\treturn { x: dot.x, y };\n\t\t\t});\n\t\tconst dotLines: { [key: number]: SemanticPoint[] } = dots.reduce((table, dot) => {\n\t\t\ttable[dot.y] = table[dot.y] || [];\n\t\t\ttable[dot.y].push(dot);\n\t\t\treturn table;\n\t\t}, {});\n\t\tObject.entries(dotLines).forEach(([sy, line]) => {\n\t\t\tconst y = Number(sy);\n\t\t\tif (line.length > 1) {\n\t\t\t\tline.sort((d1, d2) => d1.x - d2.x);\n\t\t\t\tfor (let i = 0; i < line.length - 1; i++) {\n\t\t\t\t\tconst dot = line[i];\n\t\t\t\t\tif (line.find((d) => d.x > dot.x && d.x - dot.x < 1.2)) {\n\t\t\t\t\t\tthis.appendPoint(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: dot.id,\n\t\t\t\t\t\t\t\tx: dot.x,\n\t\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\t\tconfidence: dot.confidence,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: TokenType.DotDot, antiPoint: antiP(dot.id), points }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// pair key accidentals\n\t\tconst keyaccs = points.filter((point) => point.semantic === SemanticType.KeyAcc);\n\t\tconst accs = points.filter((point) => KEYACC_CANDIDATE_SEMANTICS[point.semantic]);\n\t\taccs.forEach((acc) => {\n\t\t\tif (keyaccs.some((key) => Math.abs(acc.x - key.x) < 0.5 && Math.abs(acc.y - key.y) < 1)) {\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: acc.id,\n\t\t\t\t\t\tx: acc.x,\n\t\t\t\t\t\ty: acc.y,\n\t\t\t\t\t\tconfidence: acc.confidence,\n\t\t\t\t\t},\n\t\t\t\t\t{ type: KEYACC_CANDIDATE_SEMANTICS[acc.semantic], points }\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\t// octave shift heads\n\t\tconst octs = points.filter((point) => point.semantic === SemanticType.OctaveShift8);\n\t\tocts.forEach((oct) => {\n\t\t\tconst type = oct.y < 0 ? TokenType.OctaveShift8va : TokenType.OctaveShift8vb;\n\t\t\tthis.appendPoint(\n\t\t\t\t{\n\t\t\t\t\tid: oct.id,\n\t\t\t\t\tx: oct.x,\n\t\t\t\t\ty: oct.y,\n\t\t\t\t\tconfidence: oct.confidence,\n\t\t\t\t},\n\t\t\t\t{ type, points }\n\t\t\t);\n\t\t});\n\n\t\t// group volta dots\n\t\tconst voltaDots = this.semantics.filter((point) => [SemanticType.VoltaLeft, SemanticType.VoltaRight].includes(point.semantic));\n\t\tvoltaDots.sort((d1, d2) => d1.x - d2.x);\n\t\tconst voltaGroups: Record> = voltaDots.reduce(\n\t\t\t(groups, dot) => {\n\t\t\t\tconst group = groups[dot.semantic];\n\t\t\t\tconst xs = Array.from(Object.keys(group)).map(Number);\n\t\t\t\tconst x = xs.find((x) => dot.x < x + 0.2) || dot.x;\n\n\t\t\t\tgroup[x] = groups[dot.semantic][x] || [];\n\t\t\t\tgroup[x].push(dot);\n\n\t\t\t\treturn groups;\n\t\t\t},\n\t\t\t{ [SemanticType.VoltaLeft]: {}, [SemanticType.VoltaRight]: {} }\n\t\t);\n\t\tfor (const [type, group] of Object.entries(voltaGroups)) {\n\t\t\tObject.values(group).forEach((dots) => {\n\t\t\t\tif (dots.length > 1) {\n\t\t\t\t\tconst confidence = dots.reduce((sum, dot) => sum + dot.confidence, 0);\n\t\t\t\t\tif (dots[0].y * dots[1].y < 0 && confidence >= threshold * 2) this.appendPoint(dots[0], { type: TokenType[type] });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tappendPoint(\n\t\tpoint: Partial,\n\t\t{ type, points = null, antiPoint, ...fields }: { type?: TokenType; antiPoint?: SemanticPoint; [key: string]: any } = {}\n\t): void {\n\t\t//console.log(\"appendPoint.0:\", point, point.x, point.y);\n\t\tconst x = point.x;\n\t\tconst measure = this.measures.find((measure) => x < measure.left + measure.width);\n\t\tif (!measure)\n\t\t\t// drop tokens out of measures range\n\t\t\treturn;\n\n\t\t// lined or interval\n\t\tlet lined = false;\n\t\tlet interval = false;\n\t\tif (STAFF_LINED_SEMANTICS.includes(point.semantic)) {\n\t\t\tconsole.assert(points, 'argument of points for this semantic is required:', point.semantic);\n\t\t\tconst signs = points.filter((p) => LINED_INTERVAL_SEMANTICS.includes(p.semantic) && Math.abs(p.y - point.y) < 0.2 && Math.abs(p.x - point.x) < 1.2);\n\t\t\tif (signs.some((s) => s.semantic === SemanticType.SignLined)) lined = true;\n\t\t\telse if (signs.some((s) => s.semantic === SemanticType.SignInterval)) interval = true;\n\t\t}\n\n\t\ttype = type || TokenType[point.semantic];\n\t\tconst fixedY = TOKEN_Y_FIXED[type];\n\t\tlet roundY = TOKEN_Y_ROUND[type];\n\n\t\tif (lined || interval) roundY = Math.max(roundY, 1);\n\n\t\tlet y = point.y;\n\t\tif (Number.isFinite(fixedY)) y = fixedY;\n\t\telse if (roundY) {\n\t\t\tif (interval) y = roundNumber(y + 0.5, roundY) - 0.5;\n\t\t\telse y = roundNumber(y, roundY);\n\t\t}\n\t\t//if (lined || interval)\n\t\t//\tconsole.log(\"round sign:\", point.semantic, y, lined, interval);\n\n\t\tconst holder = measure.tokens.find((token) => token.type === type && Math.abs(token.x - x) < 0.1 && Math.abs(token.y - y) < 0.1);\n\t\tif (holder) {\n\t\t\tif (Number.isFinite(holder.confidence) && holder.confidence < point.confidence) {\n\t\t\t\tholder.x = x;\n\t\t\t\tholder.y = y;\n\t\t\t\tholder.confidence = point.confidence;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// exlude clef out of pitch range\n\t\tif (TokenClefs.includes(type)) {\n\t\t\tif (Math.abs(y) > 3) return;\n\t\t}\n\n\t\t// TODO: exclude overlapped pair by a token prior table\n\n\t\tmeasure.tokens.push(\n\t\t\tnew Token({\n\t\t\t\tid: point.id,\n\t\t\t\ttype,\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\tpivotX: point.pivotX,\n\t\t\t\tconfidence: point.confidence,\n\t\t\t\t...fields,\n\t\t\t})\n\t\t);\n\n\t\tif (antiPoint) {\n\t\t\tmeasure.antiTokens.push(\n\t\t\t\tnew Token({\n\t\t\t\t\tid: antiPoint.id,\n\t\t\t\t\ttype,\n\t\t\t\t\tx,\n\t\t\t\t\ty: antiPoint.y,\n\t\t\t\t\tconfidence: antiPoint.confidence,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\n\tappendFlags(flags: SemanticPoint[], stems: Stem[]): void {\n\t\t//console.log(\"flags:\", flags);\n\t\tconst stemGroups = stems\n\t\t\t.map((stem) => ({\n\t\t\t\t...stem,\n\t\t\t\tflags: flags.filter((flag) => Math.abs(flag.x - stem.x) < 0.3 && flag.y > stem.y1 - 0.5 && flag.y < stem.y2 + 0.5),\n\t\t\t}))\n\t\t\t.filter((group) => group.flags.length);\n\n\t\tstemGroups.forEach((group) => {\n\t\t\tconst mainFlag = group.flags.reduce((main, flag) => (main && main.confidence > flag.confidence ? main : flag), null);\n\n\t\t\t//const upDistance = mainFlag.y - group.y1;\n\t\t\t//const downDistance = group.y2 - mainFlag.y;\n\t\t\t//const downward = downDistance < upDistance;\n\t\t\tconst downward = group.direction === 'd';\n\n\t\t\tconst tailY = downward ? Math.min(group.y2, group.y1 + STEM_LENGTH_MAX) : Math.max(group.y1, group.y2 - STEM_LENGTH_MAX);\n\n\t\t\tconst flagTips = group.flags.map((flag) => ({\n\t\t\t\ttip: (tailY - flag.y) * (downward ? 1 : -1),\n\t\t\t\tconfidence: flag.confidence,\n\t\t\t}));\n\t\t\tconst count = flagTips.filter((f) => f.tip < 2 || f.confidence > mainFlag.confidence * 0.7).length;\n\n\t\t\tconst type = TokenFlags[count - 1];\n\t\t\tif (type) {\n\t\t\t\tthis.appendPoint(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: group.flags[0].id,\n\t\t\t\t\t\tx: group.x,\n\t\t\t\t\t\ty: tailY,\n\t\t\t\t\t\tconfidence: Math.min(...group.flags.map((flag) => flag.confidence)),\n\t\t\t\t\t},\n\t\t\t\t\t{ type }\n\t\t\t\t);\n\t\t\t\t//console.log(\"flag:\", type);\n\t\t\t}\n\t\t});\n\t}\n\n\tclearTokens(): void {\n\t\tthis.measures.forEach((measure) => (measure.tokens = []));\n\t\tthis.semantics = [];\n\t}\n\n\tclearPredictedTokens(): void {\n\t\tthis.measures.forEach((measure) => (measure.tokens = measure.tokens.filter((token) => !token.isPredicted)));\n\t}\n}\n\nclass System extends SimpleClass {\n\tstatic className = 'System';\n\tstatic blackKeys = ['index', 'pageIndex', 'prev', 'next', 'headMeasureIndex', 'tokens', 'indent'];\n\n\tindex?: number;\n\tpageIndex?: number;\n\tprev?: System;\n\tnext?: System;\n\theadMeasureIndex?: number; // zero based\n\n\t// in units\n\tleft: number;\n\ttop: number;\n\twidth: number;\n\tindent: boolean;\n\n\tmeasureCount: number;\n\tstaves: Staff[];\n\n\tmeasureBars: number[];\n\n\tbackgroundImage: string;\n\timagePosition: Rect;\n\n\tsemantics: SemanticPoint[];\n\ttokens?: Token[];\n\n\tsidBlackList: string[];\n\tsidWhiteList: string[];\n\n\tdisplacementSemantics?: { [id: string]: Partial };\n\n\tstaffMaskChanged: number;\n\tbracketsAppearance: string; // the staff layout code by prediction\n\n\tconstructor({ stavesCount, ...fields }: any) {\n\t\tsuper();\n\t\tsuper.assign(fields);\n\n\t\tif (!this.measureBars) {\n\t\t\tconst HEAD_WIDTH = 5;\n\t\t\tconst segmentLength = (this.width - HEAD_WIDTH) / this.measureCount;\n\t\t\tthis.measureBars = Array(this.measureCount)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => HEAD_WIDTH + segmentLength * (i + 1));\n\t\t}\n\n\t\tif (!fields.staves && stavesCount)\n\t\t\tthis.staves = Array(stavesCount)\n\t\t\t\t.fill(null)\n\t\t\t\t.map(() => new Staff({ measureBars: this.measureBars }));\n\n\t\tthis.arrangePosition();\n\n\t\tthis.measureCount = this.measureCount || this.measureBars.length;\n\n\t\tthis.sidBlackList = this.sidBlackList || [];\n\t\tthis.sidWhiteList = this.sidWhiteList || [];\n\t}\n\n\tget noteRange(): { top: number; bottom: number } {\n\t\tif (!this.staves.length) return null;\n\n\t\tconst staffTop = this.staves[0];\n\t\tconst staffBottom = this.staves[this.staves.length - 1];\n\n\t\treturn {\n\t\t\ttop: staffTop.top + staffTop.staffY + staffTop.noteRange.top,\n\t\t\tbottom: staffBottom.top + staffBottom.staffY + staffBottom.noteRange.bottom,\n\t\t};\n\t}\n\n\tget staffPositions(): StaffPosition[] {\n\t\treturn this.staves.map((staff) => ({\n\t\t\ty: staff.top + staff.staffY,\n\t\t\tradius: 2,\n\t\t}));\n\t}\n\n\tget staffMask(): number {\n\t\tif (this.staffMaskChanged) return this.staffMaskChanged;\n\n\t\tif (this.prev && this.staves.length === this.prev.staves.length) return this.prev.staffMask;\n\n\t\treturn 2 ** this.staves.length - 1;\n\t}\n\n\tget staffTop(): number {\n\t\tconst positions = this.staffPositions;\n\t\treturn positions.length ? positions[0].y - positions[0].radius : 0;\n\t}\n\n\tget staffBottom(): number {\n\t\tconst positions = this.staffPositions;\n\t\treturn positions.length ? positions[positions.length - 1].y + positions[positions.length - 1].radius : 0;\n\t}\n\n\tarrangePosition(): void {\n\t\tlet y = 0;\n\t\tfor (const staff of this.staves) {\n\t\t\tif (Number.isFinite(staff.top)) break;\n\n\t\t\tstaff.top = y;\n\t\t\ty += staff.height;\n\t\t}\n\t}\n\n\ttidyMeasureBars(): void {\n\t\tthis.measureBars = this.measureBars.filter((x) => x > 1);\n\t\tthis.measureBars.sort((b1, b2) => b1 - b2);\n\n\t\tconst restWidth = this.width - this.measureBars[this.measureBars.length - 1];\n\t\tif (restWidth > 12) this.measureBars.push(this.width);\n\t\telse if (restWidth < 2) this.measureBars[this.measureBars.length - 1] = this.width;\n\n\t\tthis.measureBars = this.measureBars.filter((x, i) => i < 1 || x - this.measureBars[i - 1] > 4);\n\t}\n\n\trearrangeMeasures(): void {\n\t\tthis.measureCount = this.measureBars.length;\n\t\tthis.staves.forEach((staff) => staff.rearrangeMeasures(this.measureBars));\n\t}\n\n\tget height(): number {\n\t\treturn this.staves.reduce((height, staff) => height + staff.height, 0);\n\t}\n\n\tget connectionLine(): { top: number; bottom: number } {\n\t\tconst staffHead = this.staves[0];\n\t\tconst staffTail = this.staves[this.staves.length - 1];\n\n\t\treturn (\n\t\t\tstaffHead && {\n\t\t\t\ttop: staffHead.top + staffHead.staffY - 2,\n\t\t\t\tbottom: staffTail.top + staffTail.staffY + 2,\n\t\t\t}\n\t\t);\n\t}\n\n\tget middleY(): number {\n\t\tif (!this.staves.length) return 0;\n\n\t\tconst sum = this.staves.reduce((sum, staff) => sum + staff.top + staff.staffY, 0);\n\n\t\treturn sum / this.staves.length;\n\t}\n\n\tget timeSignatureOnHead(): boolean {\n\t\treturn this.staves.some((staff) => staff.measures[0]?.tokens.some((token) => TokenTimesigs.includes(token.type)));\n\t}\n\n\t// an array staff or null on every position of full staff layout\n\tgetStaffArray(stavesCount: number): Staff[] {\n\t\tlet si = 0;\n\n\t\treturn Array(stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, i) => {\n\t\t\t\tconst on = this.staffMask & (1 << i);\n\t\t\t\tconst staff = on ? this.staves[si++] : null;\n\t\t\t\tconsole.assert(!on || staff, 'system staves count is less than staff mask declared:', this.staves.length, this.staffMask.toString(2));\n\n\t\t\t\treturn staff;\n\t\t\t});\n\t}\n\n\t// measureIndex: the local measure index\n\tgetMarksInMeasure(measureIndex: number): MarkTerm[] {\n\t\tconsole.assert(measureIndex < this.measureBars.length, 'measure index out of range:', measureIndex, this.measureBars.length);\n\n\t\tconst left = measureIndex > 0 ? this.measureBars[measureIndex - 1] : 0;\n\t\tconst right = this.measureBars[measureIndex];\n\n\t\tconst tempoTokens = (this.tokens ?? []).filter(\n\t\t\t(token) => token.x >= left && token.x < right && token instanceof TextToken && token.textType === TextType.TempoNumeral\n\t\t) as TextToken[];\n\n\t\treturn [...tempoTokens.map((token) => TempoTerm.fromNumeralText(token.text)).filter(Boolean)];\n\t}\n\n\tgetEvents(stavesCount: number): EventSystem {\n\t\tconsole.assert(Number.isInteger(this.headMeasureIndex), 'invalid headMeasureIndex:', this.headMeasureIndex);\n\n\t\t// Empty system (no measureBars / no staves with measures): return empty result\n\t\tif (!this.measureBars?.length && this.staves.every((s) => !s.measures?.length)) {\n\t\t\treturn { staffMask: this.staffMask, columns: [] };\n\t\t}\n\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: [] as EventTerm[],\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure) => {\n\t\t\t\tconst events = measure.getEvents();\n\t\t\t\tmeasure.assignAccessoriesOnEvents(events);\n\t\t\t\tmeasure.assignFeaturesOnEvents(events, staff.semantics);\n\n\t\t\t\treturn {\n\t\t\t\t\tevents: events.map(\n\t\t\t\t\t\t(event) =>\n\t\t\t\t\t\t\tnew EventTerm({\n\t\t\t\t\t\t\t\tstaff: staff.index,\n\t\t\t\t\t\t\t\tsystem: this.index,\n\t\t\t\t\t\t\t\t...event,\n\t\t\t\t\t\t\t\trest: event.rest ? 'r' : null,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t\tcontexts: measure.getContexts({ staff: staff.index }),\n\t\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\t\talternative: measure.alternative,\n\t\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\n\t\t// supplement time signatures for empty staves\n\t\tfor (let mi = 0; mi < this.measureCount; ++mi) {\n\t\t\tconst tsRows = rows.map((row) => row[mi]?.contexts?.filter((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type)));\n\t\t\tconst timeSigs = tsRows.find((row) => row?.length);\n\t\t\tif (timeSigs) {\n\t\t\t\trows.forEach((row) => {\n\t\t\t\t\tif (row[mi] && !row[mi].contexts.length && !row[mi].events.length) row[mi].contexts.push(...timeSigs);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//onst measureStartXs = [0, ...this.measureBars];\n\n\t\tconst columns = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map(\n\t\t\t\t(_, i): EventMeasureColumn => ({\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + i,\n\t\t\t\t\t//startX: measureStartXs[i],\n\t\t\t\t\t//width: measureWidths[i],\n\t\t\t\t\trows: rows.map((row) => row[i]),\n\t\t\t\t\tmarks: this.getMarksInMeasure(i),\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\tvoltaBegin: rows.some((row) => row[i]?.voltaBegin),\n\t\t\t\t\tvoltaEnd: rows.some((row) => row[i]?.voltaEnd),\n\t\t\t\t\talternative: rows.some((row) => row[i]?.alternative),\n\t\t\t\t\tbarTypes: rows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row[i]?.barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t);\n\t\t//columns.forEach(computeMeasureTicks);\n\n\t\t// assign id on column events\n\t\tcolumns.forEach((column) => {\n\t\t\tconst events = [].concat(...column.rows.filter(Boolean).map((row) => row.events));\n\t\t\tevents.forEach((event, i) => (event.id = i + 1));\n\t\t});\n\n\t\tconst lastColumn = columns[columns.length - 1];\n\t\tif (lastColumn) lastColumn.break = true;\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\tgetEventsFunctional(stavesCount: number, ev: ChordsFeeder, processors: ColumnProcessor[] = [], { useXMap = false } = {}): EventSystem {\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff, si) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: [] as EventTerm[],\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure, mi) => {\n\t\t\t\tconst events = ev(si, mi);\n\n\t\t\t\treturn (\n\t\t\t\t\tevents && {\n\t\t\t\t\t\tevents: events.map(\n\t\t\t\t\t\t\t(event) =>\n\t\t\t\t\t\t\t\tnew EventTerm({\n\t\t\t\t\t\t\t\t\tsystem: this.index,\n\t\t\t\t\t\t\t\t\t...event,\n\t\t\t\t\t\t\t\t\trest: event.rest ? 'r' : null,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcontexts: measure.getContexts({ staff: si }),\n\t\t\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\t\t\talternative: measure.alternative,\n\t\t\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//const measureStartXs = [0, ...this.measureBars];\n\n\t\t// [measure, staff]\n\t\tconst columns: EventMeasureColumn[] = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, mi) => {\n\t\t\t\tconst localRows = rows.map((row) => row[mi]);\n\t\t\t\tif (localRows.some((row) => !row)) return null;\n\n\t\t\t\tlet xMap: Map = null;\n\t\t\t\tif (useXMap) {\n\t\t\t\t\tconst events: EventTerm[] = [].concat(...localRows.map((row) => row.events));\n\t\t\t\t\tconst groupMap: { [group: number]: EventTerm[] } = events.reduce((map, event) => {\n\t\t\t\t\t\tif (Number.isFinite(event.tickGroup)) map[event.tickGroup] = map[event.tickGroup] || [];\n\t\t\t\t\t\tmap[event.tickGroup].push(event);\n\n\t\t\t\t\t\treturn map;\n\t\t\t\t\t}, {});\n\n\t\t\t\t\txMap = Object.values(groupMap).reduce((map, events) => {\n\t\t\t\t\t\tconst x = Math.min(...events.map((event) => (event.left + event.right) / 2));\n\t\t\t\t\t\tmap.set(x, events);\n\n\t\t\t\t\t\treturn map;\n\t\t\t\t\t}, new Map());\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + mi,\n\t\t\t\t\t//startX: measureStartXs[mi],\n\t\t\t\t\t//width: measureWidths[mi],\n\t\t\t\t\trows: localRows, // [staff]\n\t\t\t\t\tmarks: this.getMarksInMeasure(mi),\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\txMap,\n\t\t\t\t\tvoltaBegin: localRows.some((row) => row.voltaBegin),\n\t\t\t\t\tvoltaEnd: localRows.some((row) => row.voltaEnd),\n\t\t\t\t\talternative: localRows.some((row) => row.alternative),\n\t\t\t\t\tbarTypes: localRows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row.barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t});\n\t\tprocessors.forEach((proc) => columns.forEach(proc));\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\t// get EventSystem contains only contexted terms\n\tgetContexts(stavesCount: number): EventSystem {\n\t\tconst staves = this.getStaffArray(stavesCount);\n\n\t\t// [staff, measure]\n\t\tconst rows = staves.map((staff) => {\n\t\t\tif (!staff) {\n\t\t\t\treturn Array(this.measureCount)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => ({\n\t\t\t\t\t\tevents: null,\n\t\t\t\t\t\tcontexts: [] as ContextedTerm[],\n\t\t\t\t\t\tvoltaBegin: false,\n\t\t\t\t\t\tvoltaEnd: false,\n\t\t\t\t\t\talternative: false,\n\t\t\t\t\t\tbarTypes: {},\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn staff.measures.map((measure) => ({\n\t\t\t\tevents: null,\n\t\t\t\tcontexts: measure.getContexts(),\n\t\t\t\tvoltaBegin: measure.tokens.some((token) => token.type === TokenType.VoltaLeft),\n\t\t\t\tvoltaEnd: measure.tokens.some((token) => token.type === TokenType.VoltaRight),\n\t\t\t\talternative: rows.some((row) => row.alternative),\n\t\t\t\tbarTypes: measure.barTypes,\n\t\t\t}));\n\t\t});\n\n\t\t// supplement time signatures for empty staves\n\t\tfor (let mi = 0; mi < this.measureCount; ++mi) {\n\t\t\tconst tsRows = rows.map((row) => row[mi]?.contexts.filter((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type)));\n\t\t\tconst timeSigs = tsRows.find((row) => row?.length);\n\t\t\tif (timeSigs) {\n\t\t\t\trows.forEach((row) => {\n\t\t\t\t\tif (!row[mi].contexts.length) row[mi].contexts.push(...timeSigs);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t//const measureWidths = this.staves[0].measures.map(measure => measure.width);\n\t\t//const measureStartXs = [0, ...this.measureBars];\n\n\t\tconst columns = Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map(\n\t\t\t\t(_, i): EventMeasureColumn => ({\n\t\t\t\t\tmeasureIndex: this.headMeasureIndex + i,\n\t\t\t\t\t//startX: measureStartXs[i],\n\t\t\t\t\t//width: measureWidths[i],\n\t\t\t\t\trows: rows.map((row) => row[i]),\n\t\t\t\t\tmarks: [],\n\t\t\t\t\t//xToTick: {},\n\t\t\t\t\tduration: 0,\n\t\t\t\t\tvoltaBegin: rows.some((row) => row[i].voltaBegin),\n\t\t\t\t\tvoltaEnd: rows.some((row) => row[i].voltaEnd),\n\t\t\t\t\talternative: rows.some((row) => row.alternative),\n\t\t\t\t\tbarTypes: rows.reduce(\n\t\t\t\t\t\t(ts, row) => ({\n\t\t\t\t\t\t\t...ts,\n\t\t\t\t\t\t\t...row[i].barTypes,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{} as Record\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t);\n\n\t\treturn {\n\t\t\tstaffMask: this.staffMask,\n\t\t\tcolumns,\n\t\t};\n\t}\n\n\tassignSemantics(staffIndex: number, graph: SemanticGraph): void {\n\t\tconst staff = this.staves[staffIndex];\n\t\tconsole.assert(staff, 'staff is null:', staffIndex, this.staves);\n\t\tconst oy = staff.top + staff.staffY;\n\n\t\tgraph.getSystemPoints().forEach((point) => {\n\t\t\tconst p = { ...point };\n\t\t\tp.y += oy;\n\n\t\t\tif (p.extension) {\n\t\t\t\tp.extension = { ...p.extension };\n\t\t\t\tif (Number.isFinite(p.extension.y1)) {\n\t\t\t\t\tp.extension.y1 += oy;\n\t\t\t\t\tp.extension.y2 += oy;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.semantics.push(p);\n\t\t});\n\t}\n\n\t// generate tokens from semantics\n\tassemble(threshold: number, logger: Logger = new DummyLogger()): void {\n\t\t//console.log(\"System.assignSemantics:\", graph);\n\t\tthis.measureBars = [];\n\n\t\tif (!this.semantics) return;\n\n\t\tconst graph = SemanticGraph.fromPoints(this.semantics);\n\n\t\tconst bars = graph.getConfidentLayer(SemanticType.vline_BarMeasure, threshold);\n\t\tbars.sort((b1, b2) => b1.x - b2.x);\n\n\t\tconst staffTop = this.staffTop;\n\t\tconst staffBottom = this.staffBottom;\n\n\t\tconst MERGE_WINDOW = 0.4;\n\t\tlet lastX = 0;\n\t\tconst barColumns: { [key: number]: number } = bars.reduce((columns, bar) => {\n\t\t\tconst confidence = Number.isFinite(bar.confidence) ? Math.tanh(bar.confidence) : 1;\n\n\t\t\tconst x = bar.x - lastX > MERGE_WINDOW ? bar.x : lastX;\n\t\t\tlastX = bar.x;\n\t\t\tlet intensity = columns[x] || 0;\n\t\t\tintensity += (Math.min(bar.extension.y2, staffBottom) - Math.max(bar.extension.y1, staffTop)) * confidence;\n\n\t\t\tif (bar.x !== x) delete columns[x];\n\t\t\tcolumns[bar.x] = intensity;\n\n\t\t\treturn columns;\n\t\t}, {});\n\t\tconst barXs: number[] = Object.entries(barColumns)\n\t\t\t.filter(([x, intensity]) => (void x, intensity > 3 * this.staves.length))\n\t\t\t.map(([x]) => Number(x));\n\t\t// Include bar positions from whitelisted semantic points\n\t\tif (this.sidWhiteList.length) {\n\t\t\tfor (const bar of bars) {\n\t\t\t\tif (this.sidWhiteList.includes((bar as SemanticPoint).id) && !barXs.some((x) => Math.abs(x - bar.x) <= 2)) {\n\t\t\t\t\tbarXs.push(bar.x);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbarXs.sort((x1, x2) => x1 - x2);\n\t\tbarXs.forEach((x, i) => {\n\t\t\tif (i <= 0 || x - barXs[i - 1] > 2) this.measureBars.push(x);\n\t\t});\n\n\t\tif (!this.measureBars.length) this.measureBars.push(this.width);\n\n\t\tthis.tidyMeasureBars();\n\t\tthis.rearrangeMeasures();\n\n\t\t// measure bar type\n\t\tconst typeBars = this.semantics.filter((point) => [SemanticType.vline_BarTerminal, SemanticType.vline_BarSegment].includes(point.semantic));\n\t\ttypeBars.forEach((bar) => {\n\t\t\tconst measure = this.staves[0].measures.find((measure) => bar.x > measure.right - 2 && bar.x < measure.right + 1);\n\t\t\tif (measure) {\n\t\t\t\tconst type = bar.semantic.replace(/^vline_Bar/, '');\n\t\t\t\tmeasure.barTypes[type] = measure.barTypes[type] || 0;\n\t\t\t\tmeasure.barTypes[type] += bar.confidence;\n\t\t\t}\n\t\t});\n\n\t\tlet staffIndex = 0;\n\t\tconst staffMask = this.staffMask;\n\t\tthis.staves.forEach((staff, si) => {\n\t\t\t// staff index\n\t\t\twhile (!(staffMask & (1 << staffIndex))) ++staffIndex;\n\t\t\tstaff.index = staffIndex++;\n\n\t\t\t// assign semantic boundaries\n\t\t\tif (si === 0) staff.semanticTop = -staff.staffY;\n\t\t\telse {\n\t\t\t\tconst prevStaff = this.staves[si - 1];\n\t\t\t\tstaff.semanticTop = prevStaff.top + prevStaff.staffY + 3 - (staff.top + staff.staffY);\n\t\t\t}\n\n\t\t\tif (si < this.staves.length - 1) {\n\t\t\t\tconst nextStaff = this.staves[si + 1];\n\t\t\t\tstaff.semanticBottom = nextStaff.top + nextStaff.staffY - 3 - (staff.top + staff.staffY);\n\t\t\t} else staff.semanticBottom = this.height - (staff.top + staff.staffY);\n\n\t\t\tif (staff.semantics && staff.semantics.length) {\n\t\t\t\tstaff.semantics.forEach((point) => hashSemanticPoint(this.index, si, point));\n\n\t\t\t\tstaff.clearPredictedTokens();\n\t\t\t\tstaff.assemble(threshold, this, logger);\n\t\t\t}\n\t\t});\n\t}\n\n\tqualifiedSemantics(semantics: SemanticPoint[], threshold: number = 1): SemanticPoint[] {\n\t\treturn semantics\n\t\t\t.filter(\n\t\t\t\t(p) => this.sidWhiteList.includes(p.id) || (!this.sidBlackList.includes(p.id) && (p.confidence >= threshold || !Number.isFinite(p.confidence)))\n\t\t\t)\n\t\t\t.map((point) => {\n\t\t\t\t// displace semantic point\n\t\t\t\tif (this.displacementSemantics && this.displacementSemantics[point.id]) return { ...point, ...this.displacementSemantics[point.id] };\n\n\t\t\t\treturn point;\n\t\t\t});\n\t}\n\n\tclearTokens(): void {\n\t\tthis.staves.forEach((staff) => staff.clearTokens());\n\t\tthis.semantics = [];\n\t}\n\n\tnewPoint(staffIndex: number, data: SemanticPoint, threshold: number = 1): SemanticPoint {\n\t\tconst staff = this.staves[staffIndex];\n\t\tconsole.assert(staff, 'staff index out of bound:', staffIndex, this.staves.length);\n\n\t\tconst { semantic, x, y, confidence = 0, extension = null } = data;\n\t\tconst point = { semantic, x, y, confidence, extension };\n\t\tif (!point.extension) delete point.extension;\n\n\t\thashSemanticPoint(this.index, staffIndex, point);\n\t\tstaff.semantics.push(point);\n\t\tstaff.clearPredictedTokens();\n\t\tstaff.assemble(threshold, this);\n\n\t\treturn point;\n\t}\n\n\tappendToken(token: TextToken): void {\n\t\tthis.tokens.push(token);\n\n\t\tswitch (token.textType) {\n\t\t\tcase TextType.TempoNumeral:\n\t\t\t\t{\n\t\t\t\t\t// remove noteheads in text area\n\t\t\t\t\tconst staff = this.staves[0];\n\t\t\t\t\tif (staff) {\n\t\t\t\t\t\tconst oy = staff.top + staff.staffY;\n\t\t\t\t\t\tstaff.measures.forEach((measure) => {\n\t\t\t\t\t\t\tmeasure.tokens = measure.tokens.filter(\n\t\t\t\t\t\t\t\t(t) =>\n\t\t\t\t\t\t\t\t\t!TokenNoteheads.includes(t.type) ||\n\t\t\t\t\t\t\t\t\tMath.abs(t.x - token.x) > token.width / 2 ||\n\t\t\t\t\t\t\t\t\tMath.abs(oy + t.y - token.y) > token.fontSize / 2\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase TextType.Alternation1:\n\t\t\tcase TextType.Alternation2:\n\t\t\t\t//console.log(\"appendToken:\", token, this.staves[0].measures);\n\t\t\t\tthis.staves[0].measures.forEach((measure) => {\n\t\t\t\t\tconst overlap = Math.min(measure.left + measure.width, token.x + token.width / 2) - Math.max(measure.left, token.x - token.width / 2);\n\t\t\t\t\tmeasure.alternative = measure.alternative || overlap / measure.width > 0.5;\n\t\t\t\t});\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nclass Page extends SimpleClass {\n\tstatic className = 'Page';\n\tstatic blackKeys = ['index', 'tokens'];\n\n\tindex?: number;\n\n\t// in units\n\twidth: number;\n\theight: number;\n\n\tsystems: System[];\n\n\tsource: SourceImageFile;\n\tlayout?: PageLayout;\n\n\tsemantics: SemanticPoint[];\n\ttokens?: Token[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.systems = this.systems || [];\n\n\t\tif (this.source) {\n\t\t\tthis.source.matrix = this.source.matrix || [1, 0, 0, 1, 0, 0];\n\t\t}\n\t}\n\n\tget sidBlackList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidBlackList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget sidWhiteList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidWhiteList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tclearTokens(): void {\n\t\tthis.semantics = null;\n\t\tthis.tokens = null;\n\n\t\tthis.systems.forEach((system) => (system.tokens = null));\n\t}\n\n\tassignTexts(areas: TextArea[], [imageHeight, imageWidth]: [number, number]): void {\n\t\tconst interval = this.source && this.source.interval ? this.source.interval * (imageHeight / this.source.dimensions.height) : imageHeight / this.height;\n\n\t\tthis.semantics = areas.map((area) => {\n\t\t\tconst p = {\n\t\t\t\tx: (area.cx - imageWidth / 2) / interval,\n\t\t\t\ty: (area.cy - imageHeight / 2) / interval,\n\t\t\t};\n\t\t\tconst rp = this.source && this.source.matrix ? trans23(p, this.source.matrix) : p;\n\n\t\t\treturn {\n\t\t\t\tconfidence: area.score,\n\t\t\t\tx: rp.x + this.width / 2,\n\t\t\t\ty: rp.y + this.height / 2,\n\t\t\t\tsemantic: SemanticType.rect_Text,\n\t\t\t\textension: {\n\t\t\t\t\ttext: area.text,\n\t\t\t\t\ttype: area.type,\n\t\t\t\t\twidth: area.width / interval,\n\t\t\t\t\theight: area.height / interval,\n\t\t\t\t\ttheta: area.theta,\n\t\t\t\t\ttextFeature: area.feature_dict,\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tassemble({ textAnnotations = null }: { textAnnotations?: { [id: string]: string } } = {}, logger: Logger = new DummyLogger()): void {\n\t\tthis.tokens = [];\n\t\tthis.systems.forEach((system) => (system.tokens = []));\n\n\t\t// compute system indent\n\t\tif (this.systems.length) {\n\t\t\tconst sysXs = this.systems.map((system) => system.left);\n\t\t\tconst middleX = sysXs[Math.floor((sysXs.length - 1) / 2)];\n\t\t\tthis.systems.forEach((system) => (system.indent = system.left > middleX + INDENT_THRESHOLD));\n\t\t}\n\n\t\tif (this.semantics) {\n\t\t\tconst pageName = this.source ? this.source.name : this.index.toString();\n\n\t\t\tthis.semantics.forEach((point) => {\n\t\t\t\thashPageSemanticPoint(pageName, point);\n\n\t\t\t\tconst fields = {\n\t\t\t\t\tid: point.id,\n\t\t\t\t\ttype: TokenType.Text,\n\t\t\t\t\tconfidence: point.confidence,\n\t\t\t\t\ttextType: TEXT_TYPE_ALIAS[point.extension.type] || point.extension.type,\n\t\t\t\t\ttext: (textAnnotations && textAnnotations[point.id]) || point.extension.text,\n\t\t\t\t\ttextFeasure: point.extension.textFeature,\n\t\t\t\t\twidth: point.extension.width,\n\t\t\t\t\tfontSize: point.extension.height,\n\t\t\t\t};\n\n\t\t\t\tswitch (point.semantic) {\n\t\t\t\t\tcase SemanticType.rect_Text:\n\t\t\t\t\t\tswitch (fields.textType) {\n\t\t\t\t\t\t\t// page tokens\n\t\t\t\t\t\t\tcase TextType.Title:\n\t\t\t\t\t\t\tcase TextType.Author:\n\t\t\t\t\t\t\tcase TextType.PageMargin:\n\t\t\t\t\t\t\tcase TextType.Other:\n\t\t\t\t\t\t\t\tthis.tokens.push(\n\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\tx: point.x,\n\t\t\t\t\t\t\t\t\t\ty: point.y,\n\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// tokens on the top of system\n\t\t\t\t\t\t\tcase TextType.TempoNumeral:\n\t\t\t\t\t\t\tcase TextType.Chord:\n\t\t\t\t\t\t\tcase TextType.MeasureNumber:\n\t\t\t\t\t\t\tcase TextType.Instrument:\n\t\t\t\t\t\t\tcase TextType.Alternation1:\n\t\t\t\t\t\t\tcase TextType.Alternation2:\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconst system = this.systems.find((system) => system.top + system.staffTop > point.y);\n\t\t\t\t\t\t\t\t\tif (system) {\n\t\t\t\t\t\t\t\t\t\tsystem.appendToken(\n\t\t\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\t\t\tx: point.x - system.left,\n\t\t\t\t\t\t\t\t\t\t\t\ty: point.y - system.top,\n\t\t\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// tokens in staff\n\t\t\t\t\t\t\tcase TextType.TextualMark:\n\t\t\t\t\t\t\tcase TextType.Times:\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconst system = [...this.systems].reverse().find((system) => system.top < point.y);\n\t\t\t\t\t\t\t\t\tif (system) {\n\t\t\t\t\t\t\t\t\t\tconst sy = point.y - (system.top + system.staffTop);\n\t\t\t\t\t\t\t\t\t\tconst sx = point.x - system.left;\n\t\t\t\t\t\t\t\t\t\tconst staff = system.staves.find((staff) => sy >= staff.top && sy < staff.top + staff.height);\n\t\t\t\t\t\t\t\t\t\tif (staff) {\n\t\t\t\t\t\t\t\t\t\t\tconst measure = staff.measures.find((measure) => sx >= measure.left && sx < measure.left + measure.width);\n\t\t\t\t\t\t\t\t\t\t\tif (measure) {\n\t\t\t\t\t\t\t\t\t\t\t\tmeasure.tokens.push(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew TextToken({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tx: sx,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ty: sy,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...fields,\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\nexport { Measure, Staff, System, Page };\n","import { ChordColumn, Fraction } from './interfaces';\nimport { GraceType } from './term';\nimport { roundNumber } from './utils';\nimport { SimpleClass } from './aux_/typedJSON';\n\nenum SemanticElementType {\n\tBOS,\n\tPAD,\n\n\tNoteheadS0,\n\tNoteheadS1,\n\tNoteheadS2,\n\tNoteheadGrace,\n\tvline_Stem,\n\tFlag3,\n\tBeamLeft,\n\tBeamContinue,\n\tBeamRight,\n\tDot,\n\tRest0,\n\tRest1,\n\tRest2,\n\tRest3,\n\tRest4,\n\tRest5,\n\tRest6,\n\n\t// measure time signature denominators & numerators\n\tTimeD2,\n\tTimeD4,\n\tTimeD8,\n\tTimeN1,\n\tTimeN2,\n\tTimeN3,\n\tTimeN4,\n\tTimeN5,\n\tTimeN6,\n\tTimeN7,\n\tTimeN8,\n\tTimeN9,\n\tTimeN10,\n\tTimeN11,\n\tTimeN12,\n}\n\nconst TIME_SIG_DENOMINATORS = Object.fromEntries([2, 4, 8].map((n) => [n, SemanticElementType[`TimeD${n}`]]));\nconst TIME_SIG_NUMERATORS = Object.fromEntries(\n\tArray(12)\n\t\t.fill(null)\n\t\t.map((_, i) => i + 1)\n\t\t.map((n) => [n, SemanticElementType[`TimeN${n}`]])\n);\n\nconst et = SemanticElementType;\n\nconst ELEMENT_TOKEN_NAMES = {\n\t[et.BOS]: 'BOS',\n\t[et.NoteheadS0]: 'noteheads-s0',\n\t[et.NoteheadS1]: 'noteheads-s1',\n\t[et.NoteheadS2]: 'noteheads-s2',\n\t[et.NoteheadGrace]: 'GraceNotehead',\n\t[et.Flag3]: 'flags-u3',\n\t[et.BeamLeft]: 'BeamLeft',\n\t[et.BeamContinue]: 'BeamContinue',\n\t[et.BeamRight]: 'BeamRight',\n\t[et.Dot]: 'dot',\n\t[et.Rest0]: 'rests-0o',\n\t[et.Rest1]: 'rests-1o',\n\t[et.Rest2]: 'rests-2',\n\t[et.Rest3]: 'rests-3',\n\t[et.Rest4]: 'rests-4',\n\t[et.Rest5]: 'rests-5',\n\t[et.Rest6]: 'rests-6',\n};\n\nconst NOTEHEAD_BASE_DIVISION = {\n\t[et.NoteheadS0]: 0,\n\t[et.NoteheadS1]: 1,\n\t[et.NoteheadS2]: 2,\n\t[et.NoteheadGrace]: 2,\n};\n\nconst NOTEHEAD_ELEMENT_TYPES = [et.NoteheadS0, et.NoteheadS1, et.NoteheadS2, et.NoteheadGrace];\n\nconst REST_ELEMENT_TYPES = [et.Rest0, et.Rest1, et.Rest2, et.Rest3, et.Rest4, et.Rest5, et.Rest6];\n\nconst BEAM_ELEMENT_TYPES = [et.BeamLeft, et.BeamContinue, et.BeamRight];\n\nconst NOTE_ELEMENT_TYPES = [...NOTEHEAD_ELEMENT_TYPES, ...REST_ELEMENT_TYPES];\n\nconst SOURCE_ELEMENT_TYPES = [...NOTEHEAD_ELEMENT_TYPES, ...REST_ELEMENT_TYPES, et.vline_Stem];\n\nconst TARGET_ELEMENT_TYPES = [et.BOS, et.NoteheadS0, et.vline_Stem, ...REST_ELEMENT_TYPES];\n\nconst ROOT_NOTE_ELEMENT_TYPES = [...NOTE_ELEMENT_TYPES, et.vline_Stem];\n\nconst ELEMENT_TO_STEMBEAM = {\n\t[et.BeamLeft]: 'Open',\n\t[et.BeamRight]: 'Close',\n};\n\ninterface SemanticElement {\n\ttype: SemanticElementType;\n\tstaff: number;\n\tx: number;\n\ty1: number;\n\ty2: number;\n\n\tindex?: number;\n\ttick?: number;\n\tid?: string;\n}\n\ntype Matrix = number[][];\n\nconst metaElem = (type: SemanticElementType): SemanticElement => ({\n\ttype,\n\tstaff: -1,\n\tx: 0,\n\ty1: 0,\n\ty2: 0,\n});\n\nconst BOS_ELEMENT = metaElem(SemanticElementType.BOS);\n\nconst fractionToElems = (fraction: Fraction): SemanticElement[] => [\n\tmetaElem(TIME_SIG_NUMERATORS[fraction.numerator]),\n\tmetaElem(TIME_SIG_DENOMINATORS[fraction.denominator]),\n];\n\nconst argmax = (data: number[], mask: boolean[]): number => {\n\tconst values = data.filter((_, i) => mask[i]);\n\tconst max = Math.max(...values);\n\n\treturn data.findIndex((x) => x === max);\n};\n\nclass SemanticCluster extends SimpleClass {\n\tindex?: number;\n\n\telements: SemanticElement[];\n\tmatrixH?: Matrix; // matrix N x N\n\t_matrixV?: Matrix; // matrix N x N\n\tgroupsV?: number[][]; // ids array\n\tmasks?: [boolean[], boolean[], boolean[]]; // the masks for: [jointer source, jointer target, V]\n\n\tstatic elementToJSON(elem: SemanticElement): object {\n\t\tconst result: any = {\n\t\t\ttype: elem.type,\n\t\t\tstaff: elem.staff,\n\t\t\tx: elem.x,\n\t\t\ty1: elem.y1,\n\t\t\ty2: elem.y2,\n\t\t};\n\n\t\tif (elem.id) result.id = elem.id;\n\n\t\treturn result;\n\t}\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\tget sourceMask(): boolean[] {\n\t\treturn this.elements.map((elem) => SOURCE_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget targetMask(): boolean[] {\n\t\treturn this.elements.map((elem) => TARGET_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget vMask(): boolean[] {\n\t\treturn this.elements.map((elem) => ROOT_NOTE_ELEMENT_TYPES.includes(elem.type));\n\t}\n\n\tget compactMatrixH(): Matrix {\n\t\tif (!this.matrixH) return null;\n\n\t\tconst sourceMask = this.sourceMask;\n\t\tconst targetMask = this.targetMask;\n\n\t\treturn this.matrixH.filter((_, i) => sourceMask[i]).map((row) => row.filter((_, j) => targetMask[j]));\n\t}\n\n\tset compactMatrixH(value: Matrix) {\n\t\tthis.matrixH = expandMatrixByMasks([].concat(...value), [this.sourceMask, this.targetMask]);\n\t}\n\n\tget compactMatrixV(): number[] {\n\t\tif (!this._matrixV) return null;\n\n\t\tconst vMask = this.vMask;\n\n\t\tconst matrix = this._matrixV.filter((_, i) => vMask[i]).map((row) => row.filter((_, j) => vMask[j]));\n\n\t\treturn [].concat(...matrix.map((row, i) => row.slice(0, i)));\n\t}\n\n\tset compactMatrixV(value: number[]) {\n\t\tthis.matrixV = value && expandMatrixByMaskTriu(value, this.vMask);\n\t}\n\n\tget matrixV(): Matrix {\n\t\treturn this.groupsV && matrixFromGroups(this.elements.length, this.groupsV);\n\t}\n\n\tset matrixV(value: Matrix) {\n\t\tif (!value) {\n\t\t\tthis.groupsV = null;\n\t\t\tthis._matrixV = value;\n\t\t\treturn;\n\t\t}\n\n\t\tconst THRESHOLD = 0.5;\n\n\t\tconst groups: number[][] = [];\n\t\tconst vMask = value.map((row, i) => row.some(Number.isFinite) || value.some((row) => Number.isFinite(row[i])));\n\n\t\tvalue.forEach((row, i) => {\n\t\t\tif (vMask[i]) {\n\t\t\t\tlet found = false;\n\n\t\t\t\tfor (let j = 0; j < i; ++j) {\n\t\t\t\t\tconst cell = row[j];\n\t\t\t\t\tif (cell >= THRESHOLD) {\n\t\t\t\t\t\tconst g = groups.findIndex((group) => group.includes(j));\n\t\t\t\t\t\tgroups[g].push(i);\n\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!found) groups.push([i]);\n\t\t\t}\n\t\t});\n\n\t\tthis.groupsV = groups;\n\t\tthis._matrixV = value;\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\t__prototype: 'SemanticCluster',\n\t\t\tindex: this.index,\n\t\t\telements: this.elements.map(SemanticCluster.elementToJSON),\n\t\t\tcompactMatrixH: this.compactMatrixH,\n\t\t\tcompactMatrixV: this.compactMatrixV,\n\t\t\t//groupsV: this.groupsV,\n\t\t};\n\t}\n\n\tstatic mapMatrix(matrix: number[][], x2i: number[], i2x: number[]): number[][] {\n\t\tconst rows = x2i.reduce((rows, i, x) => {\n\t\t\tif (rows[i]) rows[i] = rows[i].map((v, xi) => (v + matrix[x][xi] ? 1 : 0));\n\t\t\telse rows[i] = matrix[x];\n\n\t\t\treturn rows;\n\t\t}, [] as number[][]);\n\n\t\treturn rows.map((row) => i2x.map((x) => row[x]));\n\t}\n\n\tmergeOverlapping() {\n\t\tconst overlaps = this.overlappedNoteheads();\n\t\tif (overlaps.length) {\n\t\t\tconst x2i = this.elements.map((_, index) => {\n\t\t\t\tconst pair = overlaps.find((ij) => index === ij[1]);\n\t\t\t\tconst i = pair ? pair[0] : index;\n\n\t\t\t\treturn i - overlaps.filter((ij) => ij[1] < i).length;\n\t\t\t});\n\t\t\tconst i2x = Array(this.elements.length - overlaps.length)\n\t\t\t\t.fill(null)\n\t\t\t\t.map((_, i) => x2i.findIndex((ii) => ii === i));\n\n\t\t\tthis.elements = i2x.map((x) => this.elements[x]);\n\t\t\tconsole.assert(this.elements.every(Boolean), 'null element found:', this, x2i, i2x);\n\n\t\t\tthis.matrixH = SemanticCluster.mapMatrix(this.matrixH, x2i, i2x);\n\t\t\tthis.groupsV = this.groupsV.map((group) => Array.from(new Set(group.map((x) => x2i[x]))));\n\t\t}\n\t}\n\n\toverlappedNoteheads(): [number, number][] {\n\t\tconst indices = [];\n\n\t\tconst noteheads = this.elements.filter((elem) => NOTEHEAD_ELEMENT_TYPES.includes(elem.type));\n\t\tfor (let i = 0; i < noteheads.length; ++i) {\n\t\t\tconst nh1 = noteheads[i];\n\t\t\tfor (let j = i + 1; j < noteheads.length; ++j) {\n\t\t\t\tconst nh2 = noteheads[j];\n\t\t\t\tif ((nh1.x - nh2.x) * (nh1.x - nh2.x) + (nh1.y1 - nh2.y1) * (nh1.y1 - nh2.y1) < 0.2 ** 2) indices.push([nh1.index, nh2.index]);\n\t\t\t}\n\t\t}\n\n\t\treturn indices;\n\t}\n\n\tgetEvents(): ChordColumn[] {\n\t\tconsole.assert(this.matrixH, '[SemanticCluster.getEvents]\tmatrixH is null.');\n\n\t\tconst NOTE_STEM_CONFIDENCE = 0.5;\n\n\t\tconst ids = Array(this.elements.length)\n\t\t\t.fill(null)\n\t\t\t.map((_, index) => index);\n\n\t\tconst targetMask = this.masks ? this.masks[1] : ids.map((id) => TARGET_ELEMENT_TYPES.includes(this.elements[id].type));\n\n\t\t//const stems = ids.filter(i => this.elements[i].type === et.vline_Stem);\n\t\tconst stemMasks = ids.map((id) => this.elements[id].type === et.vline_Stem && this.elements[id].y2 - this.elements[id].y1 > 2); // TODO: sift out too short stems by rectification model\n\t\tconst stemNotes = ids.filter((i) => [et.NoteheadS1, et.NoteheadS2, et.NoteheadGrace].includes(this.elements[i].type));\n\t\tconst s0s = ids.filter((i) => this.elements[i].type === et.NoteheadS0);\n\t\tconst subS0Masks = ids.map(() => false);\n\n\t\t// root elements: top NoteheadS0, Rests, stem with noteheads\n\t\tconst stemMap: { [stem: number]: number[] } = {};\n\t\tstemNotes.forEach((id) => {\n\t\t\tconst note = this.elements[id];\n\t\t\tconst stems = ids\n\t\t\t\t.filter((i) => stemMasks[i])\n\t\t\t\t.filter((stemId) => this.elements[stemId].y1 - 0.5 < note.y1 && this.elements[stemId].y2 + 0.5 > note.y1) // filter by stem Y range\n\t\t\t\t.sort((i1, i2) => this.matrixH[id][i2] - this.matrixH[id][i1]) // sort by confidence\n\t\t\t\t.slice(0, 2)\n\t\t\t\t.filter((i, ii) => ii === 0 || this.matrixH[id][i] >= NOTE_STEM_CONFIDENCE);\n\t\t\tstems.forEach((stem) => {\n\t\t\t\tstemMap[stem] = stemMap[stem] || [];\n\t\t\t\tstemMap[stem].push(id);\n\t\t\t});\n\t\t});\n\n\t\ts0s.forEach((id) => {\n\t\t\tconst s0 = this.elements[id];\n\t\t\tconst prevId = argmax(this.matrixH[id], targetMask);\n\t\t\tconst prev = this.elements[prevId];\n\t\t\tif (prev.type === et.NoteheadS0 && Math.abs(s0.x - prev.x) < 2.6) {\n\t\t\t\tsubS0Masks[id] = true;\n\t\t\t\tstemMap[prevId] = stemMap[prevId] || [prevId];\n\t\t\t\tstemMap[prevId].push(id);\n\t\t\t} else stemMap[id] = stemMap[id] || [id];\n\t\t});\n\n\t\t// setup linkings\n\t\tconst linkings: { [key: number]: number } = {};\n\n\t\tconst roots = ids.filter((id) => stemMap[id] || REST_ELEMENT_TYPES.includes(this.elements[id].type));\n\t\troots.sort((i1, i2) => this.elements[i1].x - this.elements[i2].x); // traverse roots from left to right later\n\n\t\tconst parentMasks = ids.map((id) => id === et.BOS);\n\t\troots.forEach((id) => {\n\t\t\tconst parentId = argmax(this.matrixH[id], parentMasks);\n\t\t\tlinkings[id] = parentId;\n\n\t\t\tif (parentId && !REST_ELEMENT_TYPES.includes(this.elements[parentId].type)) parentMasks[parentId] = false;\n\n\t\t\tparentMasks[id] = true;\n\t\t});\n\t\t//console.log(\"topology:\", stemMap, linkings);\n\n\t\tconst dots = this.elements.filter((elem) => elem.type === et.Dot);\n\t\tconst flags = this.elements.filter((elem) => elem.type === et.Flag3);\n\t\tconst beams = this.elements.filter((elem) => BEAM_ELEMENT_TYPES.includes(elem.type));\n\n\t\tconst groupsV = this.groupsV;\n\n\t\treturn roots\n\t\t\t.map((rootId): ChordColumn => {\n\t\t\t\tconst root = this.elements[rootId];\n\n\t\t\t\tconst tickGroup = groupsV ? groupsV.findIndex((group) => group.includes(rootId)) : null;\n\n\t\t\t\tif (REST_ELEMENT_TYPES.includes(root.type)) {\n\t\t\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > root.x + 0.5 && dot.x < root.x + 0.75 + 1.2 && dot.y1 > root.y1 - 1 && dot.y1 < root.y1);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tleft: root.x - 0.75,\n\t\t\t\t\t\tright: root.x + 0.75,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\trest: true,\n\t\t\t\t\t\tys: [root.y1],\n\t\t\t\t\t\tnoteIds: [root.id],\n\t\t\t\t\t\tdots: nearbyDots.length,\n\t\t\t\t\t\tdivision: root.type - et.Rest0,\n\t\t\t\t\t\tstemDirection: null,\n\t\t\t\t\t\tid: rootId,\n\t\t\t\t\t\tprevId: linkings[rootId],\n\t\t\t\t\t\tstaff: root.staff,\n\t\t\t\t\t\ttickGroup,\n\t\t\t\t\t};\n\t\t\t\t} else if (stemMap[rootId]) {\n\t\t\t\t\tconst subNotes = stemMap[rootId].map((id) => this.elements[id]);\n\t\t\t\t\tconst left = Math.min(...subNotes.map((n) => n.x - 0.7));\n\t\t\t\t\tconst right = Math.max(...subNotes.map((n) => n.x + 0.7));\n\t\t\t\t\tsubNotes.sort((n1, n2) => n2.y1 - n1.y1);\n\n\t\t\t\t\tconst ys = subNotes.map((note) => note.y1);\n\n\t\t\t\t\tconst noteIds = subNotes.map((note) => note.id);\n\n\t\t\t\t\tconst top = ys[0];\n\t\t\t\t\tconst bottom = ys[ys.length - 1];\n\n\t\t\t\t\tconst nearbyDots = dots.filter((dot) => dot.x > right && dot.x < right + 1.2 && dot.y1 > top - 1 && dot.y1 < bottom + 0.5);\n\t\t\t\t\tconst dotGroups: { [key: number]: SemanticElement[] } = nearbyDots.reduce((groups, dot) => {\n\t\t\t\t\t\tconst y = roundNumber(dot.y1, 0.5);\n\t\t\t\t\t\tgroups[y] = groups[y] || [];\n\t\t\t\t\t\tgroups[y].push(dot);\n\n\t\t\t\t\t\treturn groups;\n\t\t\t\t\t}, {});\n\t\t\t\t\tconst dotValue = Math.max(...Object.values(dotGroups).map((group) => group.length), 0);\n\n\t\t\t\t\tlet division = NOTEHEAD_BASE_DIVISION[subNotes[0].type];\n\n\t\t\t\t\tlet stemDirection = null;\n\t\t\t\t\tlet beam: string = null;\n\t\t\t\t\tlet tip = null;\n\t\t\t\t\tif (root.type === et.vline_Stem) {\n\t\t\t\t\t\tconst topTip = top - root.y1;\n\t\t\t\t\t\tconst bottomTip = root.y2 - bottom;\n\t\t\t\t\t\tstemDirection = topTip > bottomTip ? 'u' : 'd';\n\n\t\t\t\t\t\ttip = { x: root.x, y: stemDirection === 'u' ? root.y1 : root.y2 };\n\n\t\t\t\t\t\tif (division === 2) {\n\t\t\t\t\t\t\tconst flagRange = stemDirection === 'u' ? [root.y1 - 0.4, root.y2 - 1] : [root.y1 + 1, root.y2 + 0.4];\n\t\t\t\t\t\t\tconst nearbyFlags = flags.filter((flag) => Math.abs(flag.x - root.x) < 0.2 && flag.y1 > flagRange[0] && flag.y1 < flagRange[1]);\n\t\t\t\t\t\t\tdivision += nearbyFlags.length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//const tipY = stemDirection === \"u\" ? root.y1 : root.y2;\n\t\t\t\t\t\tconst tipRange = stemDirection === 'u' ? [root.y1 - 0.2, root.y1 + 0.9] : [root.y2 - 0.9, root.y2 + 0.2];\n\t\t\t\t\t\tconst beamElem = beams.find((beam) => Math.abs(beam.x - root.x) < 0.2 && beam.y1 > tipRange[0] && beam.y1 < tipRange[1]);\n\t\t\t\t\t\tbeam = beamElem ? ELEMENT_TO_STEMBEAM[beamElem.type] : null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst grace = subNotes[0].type === SemanticElementType.NoteheadGrace ? GraceType.Grace : null;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\tright,\n\t\t\t\t\t\tpivotX: root.x,\n\t\t\t\t\t\tys,\n\t\t\t\t\t\ttip,\n\t\t\t\t\t\tnoteIds,\n\t\t\t\t\t\tdivision,\n\t\t\t\t\t\tdots: dotValue,\n\t\t\t\t\t\trest: false,\n\t\t\t\t\t\tstemDirection,\n\t\t\t\t\t\tbeam,\n\t\t\t\t\t\tid: rootId,\n\t\t\t\t\t\tprevId: linkings[rootId],\n\t\t\t\t\t\tstaff: subNotes[0].staff,\n\t\t\t\t\t\tgrace,\n\t\t\t\t\t\ttickGroup,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t}\n}\n\ninterface SemanticClusterSetData {\n\tvocab?: string[];\n\tclusters: SemanticCluster[];\n}\n\nclass SemanticClusterSet {\n\tclusters: SemanticCluster[];\n\n\tconstructor(data?: SemanticClusterSetData) {\n\t\tif (data) {\n\t\t\tthis.clusters = data.clusters;\n\n\t\t\t// upgrade vocab\n\t\t\tif (data.vocab) {\n\t\t\t\tconst converts = data.vocab\n\t\t\t\t\t.map((name, i) => [i, SemanticElementType[name]])\n\t\t\t\t\t.filter(([x, y]) => x !== y)\n\t\t\t\t\t.reduce((table, [x, y]) => ((table[x] = y), table), {});\n\t\t\t\tthis.clusters.forEach((connection) =>\n\t\t\t\t\tconnection.elements.forEach((elem) => {\n\t\t\t\t\t\tif (Number.isFinite(converts[elem.type])) elem.type = converts[elem.type];\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\ttoJSON() {\n\t\tconst vocab = Object.entries(SemanticElementType)\n\t\t\t.filter((entry) => Number.isFinite(entry[1]))\n\t\t\t.map((entry) => entry[0]);\n\n\t\treturn {\n\t\t\t__prototype: 'SemanticClusterSet',\n\t\t\tvocab,\n\t\t\tclusters: this.clusters.map((c) => c.toJSON()),\n\t\t};\n\t}\n}\n\nconst expandMatrixByMasks = (matrix: number[], masks: [boolean[], boolean[]]): Matrix => {\n\tconst gen = function* (): Generator {\n\t\tfor (const x of matrix) yield x;\n\t};\n\tconst iter = gen();\n\n\tconst [maskSrc, maskTar] = masks;\n\n\treturn maskSrc.map((src) => maskTar.map((tar) => (src && tar ? iter.next().value : null)));\n};\n\nconst expandMatrixByMaskTriu = (matrix: number[], mask: boolean[]): Matrix => {\n\tconst gen = function* (): Generator {\n\t\tfor (const x of matrix) yield x;\n\t};\n\tconst iter = gen();\n\n\treturn mask.map((row, i) => mask.map((column, j) => (row && column && j < i ? iter.next().value : null)));\n};\n\nconst matrixFromGroups = (len: number, groups: number[][]): Matrix => {\n\tconst groupIds = Array(len)\n\t\t.fill(null)\n\t\t.map((_, i) => groups.findIndex((group) => group.includes(i)));\n\n\treturn Array(len)\n\t\t.fill(null)\n\t\t.map((_, i) =>\n\t\t\tArray(len)\n\t\t\t\t.fill(null)\n\t\t\t\t.map((_, j) => {\n\t\t\t\t\tif (j >= i) return null;\n\n\t\t\t\t\tconst id1 = groupIds[i];\n\t\t\t\t\tconst id2 = groupIds[j];\n\n\t\t\t\t\tif (id1 < 0 || id2 < 0) return null;\n\n\t\t\t\t\treturn id1 === id2 ? 1 : 0;\n\t\t\t\t})\n\t\t);\n};\n\nexport {\n\tSemanticElementType,\n\tSemanticElement,\n\tSemanticCluster,\n\tSemanticClusterSet,\n\tELEMENT_TOKEN_NAMES,\n\tNOTEHEAD_ELEMENT_TYPES,\n\tNOTE_ELEMENT_TYPES,\n\tBOS_ELEMENT,\n\tfractionToElems,\n\texpandMatrixByMasks,\n\texpandMatrixByMaskTriu,\n\tmatrixFromGroups,\n};\n","import { MusicNotation } from '@k-l-lambda/music-widgets';\n\n// implicit note (from expressive marks) types\nenum ImplicitType {\n\tNone = 0,\n\n\tMordent = 'mordent',\n\tPrall = 'prall',\n\tTurn = 'turn',\n\tTrill = 'trill',\n\tTremolo = 'tremolo',\n\tArpeggio = 'arpeggio',\n}\n\ninterface ChordPosition {\n\tindex: number;\n\tcount: number;\n}\n\nclass TokenPosition {\n\tsystem?: number;\n\tmeasure?: number;\n\tx: number;\n\tendX?: number;\n}\n\ninterface Note extends MusicNotation.Note {\n\tchordPosition?: ChordPosition;\n\tmeasure?: number;\n}\n\ninterface Notation {\n\tnotes: Note[];\n\tendTick: number;\n}\n\ninterface SheetPosition {\n\tsystem: number;\n\tx: number;\n}\n\nexport { ChordPosition, ImplicitType, TokenPosition, Note, Notation, SheetPosition };\n","\n/* Wrapper for accessing buffer through sequential reads */\n\n\n\nmodule.exports = class Stream {\n\tconstructor (buffer) {\n\t\tthis.array = new Uint8Array(buffer);\n\t\tthis.position = 0;\n\t}\n\n\n\teof () {\n\t\treturn this.position >= this.array.length;\n\t}\n\n\n\tread (length) {\n\t\tconst result = this.array.slice(this.position, this.position + length);\n\t\tthis.position += length;\n\n\t\treturn result;\n\t}\n\n\n\treadString (length) {\n\t\tconst data = Array.from(this.read(length));\n\n\t\treturn data.map(c => String.fromCharCode(c)).join(\"\");\n\t}\n\n\n\t// read a big-endian 32-bit integer\n\treadInt32 () {\n\t\tconst result = (\n\t\t\t(this.array[this.position] << 24) +\n\t\t\t(this.array[this.position + 1] << 16) +\n\t\t\t(this.array[this.position + 2] << 8) +\n\t\t\tthis.array[this.position + 3]);\n\t\tthis.position += 4;\n\n\t\treturn result;\n\t}\n\n\n\t// read a big-endian 16-bit integer\n\treadInt16 () {\n\t\tconst result = (\n\t\t\t(this.array[this.position] << 8) +\n\t\t\tthis.array[this.position + 1]);\n\t\tthis.position += 2;\n\n\t\treturn result;\n\t}\n\n\n\t// read an 8-bit integer\n\treadInt8 (signed) {\n\t\tlet result = this.array[this.position];\n\t\tif (signed && result > 127)\n\t\t\tresult -= 256;\n\t\tthis.position += 1;\n\n\t\treturn result;\n\t}\n\n\n\t/* read a MIDI-style variable-length integer\n\t\t(big-endian value in groups of 7 bits,\n\t\twith top bit set to signify that another byte follows)\n\t*/\n\treadVarInt () {\n\t\tlet result = 0;\n\t\twhile (true) {\n\t\t\tconst b = this.readInt8();\n\t\t\tif (b & 0x80) {\n\t\t\t\tresult += (b & 0x7f);\n\t\t\t\tresult <<= 7;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// b is the last byte\n\t\t\t\treturn result + b;\n\t\t\t}\n\t\t}\n\t}\n};\n","/*\nclass to parse the .mid file format\n(depends on stream.js)\n*/\n\nconst Stream = require(\"./stream.js\");\n\n\n\nmodule.exports = function MidiFile (data) {\n\tfunction readChunk (stream) {\n\t\tconst id = stream.readString(4);\n\t\tconst length = stream.readInt32();\n\n\t\treturn {\n\t\t\tid,\n\t\t\tlength,\n\t\t\tdata: stream.read(length),\n\t\t};\n\t}\n\n\tlet lastEventTypeByte;\n\n\tfunction readEvent (stream) {\n\t\tconst event = {};\n\t\tevent.deltaTime = stream.readVarInt();\n\t\tlet eventTypeByte = stream.readInt8();\n\t\tif ((eventTypeByte & 0xf0) === 0xf0) {\n\t\t\t// system / meta event\n\t\t\tif (eventTypeByte === 0xff) {\n\t\t\t\t// meta event\n\t\t\t\tevent.type = \"meta\";\n\t\t\t\tconst subtypeByte = stream.readInt8();\n\t\t\t\tconst length = stream.readVarInt();\n\n\t\t\t\tswitch (subtypeByte) {\n\t\t\t\tcase 0x00:\n\t\t\t\t\tevent.subtype = \"sequenceNumber\";\n\t\t\t\t\tif (length !== 2)\n\t\t\t\t\t\tthrow new Error(\"Expected length for sequenceNumber event is 2, got \" + length);\n\t\t\t\t\tevent.number = stream.readInt16();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x01:\n\t\t\t\t\tevent.subtype = \"text\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x02:\n\t\t\t\t\tevent.subtype = \"copyrightNotice\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tevent.subtype = \"trackName\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x04:\n\t\t\t\t\tevent.subtype = \"instrumentName\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x05:\n\t\t\t\t\tevent.subtype = \"lyrics\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x06:\n\t\t\t\t\tevent.subtype = \"marker\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x07:\n\t\t\t\t\tevent.subtype = \"cuePoint\";\n\t\t\t\t\tevent.text = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x20:\n\t\t\t\t\tevent.subtype = \"midiChannelPrefix\";\n\t\t\t\t\tif (length !== 1)\n\t\t\t\t\t\tthrow new Error(\"Expected length for midiChannelPrefix event is 1, got \" + length);\n\t\t\t\t\tevent.channel = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x2f:\n\t\t\t\t\tevent.subtype = \"endOfTrack\";\n\t\t\t\t\tif (length !== 0)\n\t\t\t\t\t\tthrow new Error(\"Expected length for endOfTrack event is 0, got \" + length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x51:\n\t\t\t\t\tevent.subtype = \"setTempo\";\n\t\t\t\t\tif (length !== 3)\n\t\t\t\t\t\tthrow new Error(\"Expected length for setTempo event is 3, got \" + length);\n\t\t\t\t\tevent.microsecondsPerBeat = (\n\t\t\t\t\t\t(stream.readInt8() << 16) +\n\t\t\t\t\t\t\t(stream.readInt8() << 8) +\n\t\t\t\t\t\t\tstream.readInt8()\n\t\t\t\t\t);\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x54:\n\t\t\t\t\tevent.subtype = \"smpteOffset\";\n\t\t\t\t\tif (length !== 5)\n\t\t\t\t\t\tthrow new Error(\"Expected length for smpteOffset event is 5, got \" + length);\n\t\t\t\t\tconst hourByte = stream.readInt8();\n\t\t\t\t\tevent.frameRate = {\n\t\t\t\t\t\t0x00: 24, 0x20: 25, 0x40: 29, 0x60: 30,\n\t\t\t\t\t}[hourByte & 0x60];\n\t\t\t\t\tevent.hour = hourByte & 0x1f;\n\t\t\t\t\tevent.min = stream.readInt8();\n\t\t\t\t\tevent.sec = stream.readInt8();\n\t\t\t\t\tevent.frame = stream.readInt8();\n\t\t\t\t\tevent.subframe = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x58:\n\t\t\t\t\tevent.subtype = \"timeSignature\";\n\t\t\t\t\tif (length !== 4)\n\t\t\t\t\t\tthrow new Error(\"Expected length for timeSignature event is 4, got \" + length);\n\t\t\t\t\tevent.numerator = stream.readInt8();\n\t\t\t\t\tevent.denominator = Math.pow(2, stream.readInt8());\n\t\t\t\t\tevent.metronome = stream.readInt8();\n\t\t\t\t\tevent.thirtyseconds = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x59:\n\t\t\t\t\tevent.subtype = \"keySignature\";\n\t\t\t\t\tif (length !== 2)\n\t\t\t\t\t\tthrow new Error(\"Expected length for keySignature event is 2, got \" + length);\n\t\t\t\t\tevent.key = stream.readInt8(true);\n\t\t\t\t\tevent.scale = stream.readInt8();\n\n\t\t\t\t\treturn event;\n\t\t\t\tcase 0x7f:\n\t\t\t\t\tevent.subtype = \"sequencerSpecific\";\n\t\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\tdefault:\n\t\t\t\t\t// console.log(\"Unrecognised meta event subtype: \" + subtypeByte);\n\t\t\t\t\tevent.subtype = \"unknown\";\n\t\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\t\treturn event;\n\t\t\t\t}\n\n\t\t\t\t//event.data = stream.readString(length);\n\t\t\t\t//return event;\n\t\t\t}\n\t\t\telse if (eventTypeByte === 0xf0) {\n\t\t\t\tevent.type = \"sysEx\";\n\t\t\t\tconst length = stream.readVarInt();\n\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\treturn event;\n\t\t\t}\n\t\t\telse if (eventTypeByte === 0xf7) {\n\t\t\t\tevent.type = \"dividedSysEx\";\n\t\t\t\tconst length = stream.readVarInt();\n\t\t\t\tevent.data = stream.readString(length);\n\n\t\t\t\treturn event;\n\t\t\t}\n\t\t\telse\n\t\t\t\tthrow new Error(\"Unrecognised MIDI event type byte: \" + eventTypeByte);\n\t\t}\n\t\telse {\n\t\t\t/* channel event */\n\t\t\tlet param1;\n\t\t\tif ((eventTypeByte & 0x80) === 0) {\n\t\t\t\t/* running status - reuse lastEventTypeByte as the event type.\n\t\t\t\t\teventTypeByte is actually the first parameter\n\t\t\t\t*/\n\t\t\t\tparam1 = eventTypeByte;\n\t\t\t\teventTypeByte = lastEventTypeByte;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparam1 = stream.readInt8();\n\t\t\t\tlastEventTypeByte = eventTypeByte;\n\t\t\t}\n\n\t\t\tconst eventType = eventTypeByte >> 4;\n\t\t\tevent.channel = eventTypeByte & 0x0f;\n\t\t\tevent.type = \"channel\";\n\n\t\t\tswitch (eventType) {\n\t\t\tcase 0x08:\n\t\t\t\tevent.subtype = \"noteOff\";\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.velocity = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x09:\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.velocity = stream.readInt8();\n\t\t\t\tif (event.velocity === 0)\n\t\t\t\t\tevent.subtype = \"noteOff\";\n\t\t\t\telse\n\t\t\t\t\tevent.subtype = \"noteOn\";\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0a:\n\t\t\t\tevent.subtype = \"noteAftertouch\";\n\t\t\t\tevent.noteNumber = param1;\n\t\t\t\tevent.amount = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0b:\n\t\t\t\tevent.subtype = \"controller\";\n\t\t\t\tevent.controllerType = param1;\n\t\t\t\tevent.value = stream.readInt8();\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0c:\n\t\t\t\tevent.subtype = \"programChange\";\n\t\t\t\tevent.programNumber = param1;\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0d:\n\t\t\t\tevent.subtype = \"channelAftertouch\";\n\t\t\t\tevent.amount = param1;\n\n\t\t\t\treturn event;\n\t\t\tcase 0x0e:\n\t\t\t\tevent.subtype = \"pitchBend\";\n\t\t\t\tevent.value = param1 + (stream.readInt8() << 7);\n\n\t\t\t\treturn event;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Unrecognised MIDI event type: \" + eventType);\n\n\t\t\t\t/*\n\t\t\t\tconsole.log(\"Unrecognised MIDI event type: \" + eventType);\n\t\t\t\tstream.readInt8();\n\t\t\t\tevent.subtype = 'unknown';\n\t\t\t\treturn event;\n\t\t\t\t*/\n\t\t\t}\n\t\t}\n\t}\n\n\n\tlet source = data;\n\tif (typeof data === \"string\")\n\t\tsource = data.split(\"\").map(c => c.charCodeAt(0));\n\n\tconst stream = new Stream(source);\n\tconst headerChunk = readChunk(stream);\n\tif (headerChunk.id !== \"MThd\" || headerChunk.length !== 6)\n\t\tthrow new Error(\"Bad .mid file - header not found\");\n\n\tconst headerStream = new Stream(headerChunk.data);\n\tconst formatType = headerStream.readInt16();\n\tconst trackCount = headerStream.readInt16();\n\tconst timeDivision = headerStream.readInt16();\n\n\tlet ticksPerBeat;\n\tif (timeDivision & 0x8000)\n\t\tthrow new Error(\"Expressing time division in SMTPE frames is not supported yet\");\n\telse\n\t\tticksPerBeat = timeDivision;\n\n\n\tconst header = {\n\t\tformatType,\n\t\ttrackCount,\n\t\tticksPerBeat,\n\t};\n\tconst tracks = [];\n\tfor (let i = 0; i < header.trackCount; i++) {\n\t\ttracks[i] = [];\n\t\tconst trackChunk = readChunk(stream);\n\t\tif (trackChunk.id !== \"MTrk\")\n\t\t\tthrow new Error(\"Unexpected chunk - expected MTrk, got \" + trackChunk.id);\n\n\t\tconst trackStream = new Stream(trackChunk.data);\n\t\twhile (!trackStream.eof()) {\n\t\t\tconst event = readEvent(trackStream);\n\t\t\ttracks[i].push(event);\n\t\t}\n\t}\n\n\treturn {\n\t\theader,\n\t\ttracks,\n\t};\n};\n","\r\n/* Wrapper for accessing strings through sequential writes */\r\n\r\n\r\n\r\nmodule.exports = class OStream {\r\n\tconstructor () {\r\n\t\tthis.buffer = \"\";\r\n\t}\r\n\r\n\twrite (str) {\r\n\t\tthis.buffer += str;\r\n\t}\r\n\r\n\t/* write a big-endian 32-bit integer */\r\n\twriteInt32 (i) {\r\n\t\tthis.buffer += String.fromCharCode((i >> 24) & 0xff) + String.fromCharCode((i >> 16) & 0xff) +\r\n\t\t\tString.fromCharCode((i >> 8) & 0xff) + String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write a big-endian 16-bit integer */\r\n\twriteInt16 (i) {\r\n\t\tthis.buffer += String.fromCharCode((i >> 8) & 0xff) + String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write an 8-bit integer */\r\n\twriteInt8 (i) {\r\n\t\tthis.buffer += String.fromCharCode(i & 0xff);\r\n\t}\r\n\r\n\t/* write a MIDI-style variable-length integer\r\n\t\t(big-endian value in groups of 7 bits,\r\n\t\twith top bit set to signify that another byte follows)\r\n\t*/\r\n\twriteVarInt (i) {\r\n\t\tif (i < 0)\r\n\t\t\tthrow new Error(\"OStream.writeVarInt minus number: \" + i);\r\n\r\n\t\tconst b = i & 0x7f;\r\n\t\ti >>= 7;\r\n\t\tlet str = String.fromCharCode(b);\r\n\r\n\t\twhile (i) {\r\n\t\t\tconst b = i & 0x7f;\r\n\t\t\ti >>= 7;\r\n\t\t\tstr = String.fromCharCode(b | 0x80) + str;\r\n\t\t}\r\n\r\n\t\tthis.buffer += str;\r\n\t}\r\n\r\n\tgetBuffer () {\r\n\t\treturn this.buffer;\r\n\t}\r\n\r\n\tgetArrayBuffer () {\r\n\t\treturn Uint8Array.from(this.buffer.split(\"\").map(c => c.charCodeAt(0))).buffer;\r\n\t}\r\n};\r\n","/*\r\nclass to encode the .mid file format\r\n(depends on streamEx.js)\r\n*/\r\n\r\nconst OStream = require(\"./streamEx.js\");\r\n\r\n\r\n\r\nmodule.exports = function OMidiFile ({ header, tracks }) {\r\n\tfunction writeChunk (stream, id, data) {\r\n\t\tconsole.assert(id.length === 4, \"chunk id must be 4 byte\");\r\n\r\n\t\tstream.write(id);\r\n\t\tstream.writeInt32(data.length);\r\n\t\tstream.write(data);\r\n\t}\r\n\r\n\tfunction writeEvent (stream, event) {\r\n\t\tif (event.subtype === \"unknown\")\r\n\t\t\treturn;\r\n\r\n\t\tstream.writeVarInt(event.deltaTime);\r\n\r\n\t\tswitch (event.type) {\r\n\t\tcase \"meta\":\r\n\t\t\tstream.writeInt8(0xff);\r\n\r\n\t\t\tswitch (event.subtype) {\r\n\t\t\tcase \"sequenceNumber\":\r\n\t\t\t\tstream.writeInt8(0x00);\r\n\t\t\t\tstream.writeVarInt(2);\r\n\r\n\t\t\t\tstream.writeInt16(event.number);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"text\":\r\n\t\t\t\tstream.writeInt8(0x01);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"copyrightNotice\":\r\n\t\t\t\tstream.writeInt8(0x02);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"trackName\":\r\n\t\t\t\tstream.writeInt8(0x03);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"instrumentName\":\r\n\t\t\t\tstream.writeInt8(0x04);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"lyrics\":\r\n\t\t\t\tstream.writeInt8(0x05);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"marker\":\r\n\t\t\t\tstream.writeInt8(0x06);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"cuePoint\":\r\n\t\t\t\tstream.writeInt8(0x07);\r\n\t\t\t\tstream.writeVarInt(event.text.length);\r\n\r\n\t\t\t\tstream.write(event.text);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"midiChannelPrefix\":\r\n\t\t\t\tstream.writeInt8(0x20);\r\n\t\t\t\tstream.writeVarInt(1);\r\n\r\n\t\t\t\tstream.writeInt8(event.channel);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"endOfTrack\":\r\n\t\t\t\tstream.writeInt8(0x2f);\r\n\t\t\t\tstream.writeVarInt(0);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"setTempo\":\r\n\t\t\t\tstream.writeInt8(0x51);\r\n\t\t\t\tstream.writeVarInt(3);\r\n\r\n\t\t\t\tstream.writeInt8((event.microsecondsPerBeat >> 16) & 0xff);\r\n\t\t\t\tstream.writeInt8((event.microsecondsPerBeat >> 8) & 0xff);\r\n\t\t\t\tstream.writeInt8(event.microsecondsPerBeat & 0xff);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"smpteOffset\":\r\n\t\t\t\tstream.writeInt8(0x54);\r\n\t\t\t\tstream.writeVarInt(5);\r\n\r\n\t\t\t\tvar frameByte = { 24: 0x00, 25: 0x20, 29: 0x40, 30: 0x60 }[event.frameRate];\r\n\t\t\t\tstream.writeInt8(event.hour | frameByte);\r\n\t\t\t\tstream.writeInt8(event.min);\r\n\t\t\t\tstream.writeInt8(event.sec);\r\n\t\t\t\tstream.writeInt8(event.frame);\r\n\t\t\t\tstream.writeInt8(event.subframe);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"timeSignature\":\r\n\t\t\t\tstream.writeInt8(0x58);\r\n\t\t\t\tstream.writeVarInt(4);\r\n\r\n\t\t\t\tstream.writeInt8(event.numerator);\r\n\t\t\t\tstream.writeInt8(Math.log2(event.denominator));\r\n\t\t\t\tstream.writeInt8(event.metronome);\r\n\t\t\t\tstream.writeInt8(event.thirtyseconds);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"keySignature\":\r\n\t\t\t\tstream.writeInt8(0x59);\r\n\t\t\t\tstream.writeVarInt(2);\r\n\r\n\t\t\t\tstream.writeInt8(event.key);\r\n\t\t\t\tstream.writeInt8(event.scale);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"sequencerSpecific\":\r\n\t\t\t\tstream.writeInt8(0x7f);\r\n\t\t\t\tstream.writeVarInt(event.data.length);\r\n\r\n\t\t\t\tstream.write(event.data);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"unhandled event subtype:\" + event.subtype);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"sysEx\":\r\n\t\t\tstream.writeInt8(0xf0);\r\n\t\t\tstream.writeVarInt(event.data.length);\r\n\t\t\tstream.write(event.data);\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"dividedSysEx\":\r\n\t\t\tstream.writeInt8(0xf7);\r\n\t\t\tstream.writeVarInt(event.data.length);\r\n\t\t\tstream.write(event.data);\r\n\r\n\t\t\tbreak;\r\n\t\tcase \"channel\":\r\n\t\t\tswitch (event.subtype) {\r\n\t\t\tcase \"noteOn\":\r\n\t\t\t\tstream.writeInt8(0x90 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.velocity);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"noteOff\":\r\n\t\t\t\tstream.writeInt8(0x80 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.velocity ? event.velocity : 0);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"noteAftertouch\":\r\n\t\t\t\tstream.writeInt8(0xa0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.noteNumber);\r\n\t\t\t\tstream.writeInt8(event.amount);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"controller\":\r\n\t\t\t\tstream.writeInt8(0xb0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.controllerType);\r\n\t\t\t\tstream.writeInt8(event.value);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"programChange\":\r\n\t\t\t\tstream.writeInt8(0xc0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.programNumber);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"channelAftertouch\":\r\n\t\t\t\tstream.writeInt8(0xd0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.amount);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pitchBend\":\r\n\t\t\t\tstream.writeInt8(0xe0 | event.channel);\r\n\t\t\t\tstream.writeInt8(event.value & 0xff);\r\n\t\t\t\tstream.writeInt8((event.value >> 7) & 0xff);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"unhandled event subtype:\" + event.subtype);\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"unhandled event type:\" + event.type);\r\n\t\t}\r\n\t}\r\n\r\n\tconst stream = new OStream();\r\n\r\n\tconst headerChunk = new OStream();\r\n\theaderChunk.writeInt16(header.formatType);\r\n\theaderChunk.writeInt16(tracks.length);\r\n\theaderChunk.writeInt16(header.ticksPerBeat);\r\n\r\n\twriteChunk(stream, \"MThd\", headerChunk.getBuffer());\r\n\r\n\tfor (let i = 0; i < tracks.length; ++i) {\r\n\t\tconst trackChunk = new OStream();\r\n\r\n\t\tfor (let ei = 0; ei < tracks[i].length; ++ei)\r\n\t\t\twriteEvent(trackChunk, tracks[i][ei]);\r\n\r\n\t\twriteChunk(stream, \"MTrk\", trackChunk.getBuffer());\r\n\t}\r\n\r\n\treturn stream.getArrayBuffer();\r\n};\r\n","\nmodule.exports = {\n\tparseMidiData: require(\"./midifile.js\"),\n\tencodeMidiFile: require(\"./midifileEx.js\"),\n};\n","\nconst midiToSequence = (midiFile, {timeWarp = 1} = {}) => {\n\tconst trackStates = [];\n\tlet beatsPerMinute = 120;\n\tconst ticksPerBeat = midiFile.header.ticksPerBeat;\n\n\tfor (let i = 0; i < midiFile.tracks.length; i++) {\n\t\ttrackStates[i] = {\n\t\t\tnextEventIndex: 0,\n\t\t\tticksToNextEvent: (\n\t\t\t\tmidiFile.tracks[i].length ?\n\t\t\t\t\tmidiFile.tracks[i][0].deltaTime :\n\t\t\t\t\tnull\n\t\t\t),\n\t\t};\n\t}\n\n\tfunction getNextEvent () {\n\t\tlet ticksToNextEvent = null;\n\t\tlet nextEventTrack = null;\n\t\tlet nextEventIndex = null;\n\n\t\tfor (let i = 0; i < trackStates.length; i++) {\n\t\t\tif (\n\t\t\t\ttrackStates[i].ticksToNextEvent != null\n\t\t\t\t&& (ticksToNextEvent == null || trackStates[i].ticksToNextEvent < ticksToNextEvent)\n\t\t\t) {\n\t\t\t\tticksToNextEvent = trackStates[i].ticksToNextEvent;\n\t\t\t\tnextEventTrack = i;\n\t\t\t\tnextEventIndex = trackStates[i].nextEventIndex;\n\t\t\t}\n\t\t}\n\t\tif (nextEventTrack != null) {\n\t\t\t/* consume event from that track */\n\t\t\tconst nextEvent = midiFile.tracks[nextEventTrack][nextEventIndex];\n\t\t\tif (midiFile.tracks[nextEventTrack][nextEventIndex + 1]) \n\t\t\t\ttrackStates[nextEventTrack].ticksToNextEvent += midiFile.tracks[nextEventTrack][nextEventIndex + 1].deltaTime;\n\t\t\telse \n\t\t\t\ttrackStates[nextEventTrack].ticksToNextEvent = null;\n\n\t\t\ttrackStates[nextEventTrack].nextEventIndex += 1;\n\t\t\t/* advance timings on all tracks by ticksToNextEvent */\n\t\t\tfor (let i = 0; i < trackStates.length; i++) {\n\t\t\t\tif (trackStates[i].ticksToNextEvent != null) \n\t\t\t\t\ttrackStates[i].ticksToNextEvent -= ticksToNextEvent;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tticksToEvent: ticksToNextEvent,\n\t\t\t\tevent: nextEvent,\n\t\t\t\ttrack: nextEventTrack,\n\t\t\t};\n\t\t}\n\t\telse \n\t\t\treturn null;\n\t\t\n\t};\n\t//\n\tlet midiEvent;\n\tconst events = [];\n\t//\n\tfunction processEvents () {\n\t\tfunction processNext () {\n\t\t\tlet secondsToGenerate = 0;\n\t\t\tif (midiEvent.ticksToEvent > 0) {\n\t\t\t\tconst beatsToGenerate = midiEvent.ticksToEvent / ticksPerBeat;\n\t\t\t\tsecondsToGenerate = beatsToGenerate / (beatsPerMinute / 60);\n\t\t\t}\n\n\t\t\t// beatsPerMinute must be changed after secondsToGenerate calculation\n\t\t\tif ( midiEvent.event.type == \"meta\" && midiEvent.event.subtype == \"setTempo\" ) {\n\t\t\t\t// tempo change events can occur anywhere in the middle and affect events that follow\n\t\t\t\tbeatsPerMinute = 60e+6 / midiEvent.event.microsecondsPerBeat;\n\t\t\t}\n\n\t\t\tconst time = (secondsToGenerate * 1000 * timeWarp) || 0;\n\t\t\tevents.push([ midiEvent, time ]);\n\t\t\tmidiEvent = getNextEvent();\n\t\t};\n\t\t//\n\t\tif (midiEvent = getNextEvent()) {\n\t\t\twhile (midiEvent)\n\t\t\t\tprocessNext();\n\t\t}\n\t};\n\n\tprocessEvents();\n\n\treturn events;\n};\n\n\nconst trimSequence = seq => {\n\tconst status = new Map();\n\n\treturn seq.filter(([{event, ticksToEvent}]) => {\n\t\tif (ticksToEvent > 0)\n\t\t\tstatus.clear();\n\n\t\tif (event.type !== \"channel\")\n\t\t\treturn true;\n\n\t\tconst key = `${event.subtype}|${event.channel}|${event.noteNumber}`;\n\n\t\tif (status.get(key)) {\n\t\t\t//console.debug(\"event trimmed:\", event, ticksToEvent);\n\t\t\treturn false;\n\t\t}\n\n\t\tstatus.set(key, event);\n\n\t\treturn true;\n\t});\n};\n\n\nconst fixOverlapNotes = seq => {\n\tconst noteMap = new Map();\n\tconst overlapMap = new Map();\n\tconst swaps = [];\n\n\tlet leapIndex = -1;\n\n\tseq.forEach(([{event, ticksToEvent}], index) => {\n\t\tif (ticksToEvent > 0)\n\t\t\tleapIndex = index;\n\n\t\tif (event.type !== \"channel\")\n\t\t\treturn;\n\n\t\tconst key = `${event.channel}|${event.noteNumber}`;\n\n\t\tswitch (event.subtype) {\n\t\tcase \"noteOn\":\n\t\t\tif (noteMap.get(key))\n\t\t\t\toverlapMap.set(key, leapIndex);\n\t\t\telse\n\t\t\t\tnoteMap.set(key, leapIndex);\n\n\t\t\tbreak;\n\t\tcase \"noteOff\":\n\t\t\tif (overlapMap.get(key)) {\n\t\t\t\tswaps.push([overlapMap.get(key), index]);\n\t\t\t\toverlapMap.delete(key);\n\t\t\t}\n\t\t\telse\n\t\t\t\tnoteMap.delete(key);\n\n\t\t\tbreak;\n\t\t}\n\t});\n\n\t// shift overlapped swaps\n\tswaps.forEach((swap, i) => {\n\t\tfor (let ii = i - 1; ii >= 0; --ii) {\n\t\t\tconst pre = swaps[ii];\n\t\t\tif (pre[1] < swap[0])\n\t\t\t\tbreak;\n\n\t\t\tif (swap[0] > pre[0])\n\t\t\t\t++swap[0];\n\t\t}\n\t});\n\n\t//console.debug(\"swaps:\", swaps);\n\tswaps.forEach(([front, back]) => {\n\t\tif (back >= seq.length - 1 || front < 0)\n\t\t\treturn;\n\n\t\tconst offEvent = seq[back];\n\t\tconst nextEvent = seq[back + 1];\n\t\tconst leapEvent = seq[front];\n\n\t\tif (!leapEvent[0].ticksToEvent) {\n\t\t\tconsole.warn(\"invalid front index:\", front, back, leapEvent);\n\t\t\treturn;\n\t\t}\n\n\t\t// ms per tick\n\t\tconst tempo = leapEvent[1] / leapEvent[0].ticksToEvent;\n\n\t\tnextEvent[1] += offEvent[1];\n\t\tnextEvent[0].ticksToEvent += offEvent[0].ticksToEvent;\n\n\t\toffEvent[0].ticksToEvent = leapEvent[0].ticksToEvent - 1;\n\t\tleapEvent[0].ticksToEvent = 1;\n\n\t\toffEvent[1] = offEvent[0].ticksToEvent * tempo;\n\t\tleapEvent[1] = leapEvent[0].ticksToEvent * tempo;\n\t\t//console.debug(\"swap:\", [front, back], offEvent, nextEvent, leapEvent);\n\n\t\tseq.splice(back, 1);\n\t\tseq.splice(front, 0, offEvent);\n\t});\n\n\treturn seq;\n};\n\n\n\nmodule.exports = {\n\tmidiToSequence,\n\ttrimSequence,\n\tfixOverlapNotes,\n};\n","\nconst MidiSequence = require(\"./MidiSequence.js\");\n\n\n\nconst PedalControllerTypes = {\n\t64: \"Sustain\",\n\t65: \"Portamento\",\n\t66: \"Sostenuto\",\n\t67: \"Soft\",\n};\n\n\n\nclass Notation {\n\tstatic parseMidi (data, {fixOverlap = true} = {}) {\n\t\tconst channelStatus = [];\n\t\tconst pedalStatus = {};\n\t\tconst pedals = {};\n\t\tconst channels = [];\n\t\tconst bars = [];\n\t\tlet time = 0;\n\t\tlet millisecondsPerBeat = 600000 / 120;\n\t\tlet beats = 0;\n\t\tlet numerator = 4;\n\t\tlet barIndex = 0;\n\t\tconst keyRange = {};\n\t\tlet rawTicks = 0;\n\t\tlet ticks = 0;\n\t\tlet correspondences;\n\t\tconst tempos = [];\n\n\t\tconst ticksPerBeat = data.header.ticksPerBeat;\n\n\t\tlet rawEvents = MidiSequence.midiToSequence(data);\n\n\t\tif (fixOverlap)\n\t\t\trawEvents = MidiSequence.trimSequence(MidiSequence.fixOverlapNotes(rawEvents));\n\n\t\tconst events = rawEvents.map(d => ({\n\t\t\tdata: d[0].event,\n\t\t\ttrack: d[0].track,\n\t\t\tdeltaTime: d[1],\n\t\t\tdeltaTicks: d[0].ticksToEvent,\n\t\t}));\n\n\t\tlet index = 0;\n\n\t\tconst ticksNormal = 1;\n\n\t\tfor (const ev of events) {\n\t\t\trawTicks += ev.deltaTicks;\n\t\t\tticks = Math.round(rawTicks * ticksNormal);\n\n\t\t\tif (ev.deltaTicks > 0) {\n\t\t\t\t// append bars\n\t\t\t\tconst deltaBeats = ev.deltaTicks / ticksPerBeat;\n\t\t\t\tfor (let b = Math.ceil(beats); b < beats + deltaBeats; ++b) {\n\t\t\t\t\tconst t = time + (b - beats) * millisecondsPerBeat;\n\t\t\t\t\tbars.push({time: t, index: barIndex % numerator});\n\n\t\t\t\t\t++barIndex;\n\t\t\t\t}\n\n\t\t\t\tbeats += deltaBeats;\n\t\t\t}\n\n\t\t\ttime += ev.deltaTime;\n\n\t\t\t//const ticksTime = beats * millisecondsPerBeat;\n\t\t\t//console.log(\"time:\", time, ticksTime, ticksTime - time);\n\n\t\t\tev.time = time;\n\t\t\tev.ticks = ticks;\n\n\t\t\tconst event = ev.data;\n\t\t\tswitch (event.type) {\n\t\t\tcase \"channel\":\n\t\t\t\t//channelStatus[event.channel] = channelStatus[event.channel] || [];\n\n\t\t\t\tswitch (event.subtype) {\n\t\t\t\tcase \"noteOn\":\n\t\t\t\t\t{\n\t\t\t\t\t\tconst pitch = event.noteNumber;\n\t\t\t\t\t\t//channelStatus[event.channel][pitch] = {\n\t\t\t\t\t\tchannelStatus.push({\n\t\t\t\t\t\t\tchannel: event.channel,\n\t\t\t\t\t\t\tpitch,\n\t\t\t\t\t\t\tstartTick: ticks,\n\t\t\t\t\t\t\tstart: time,\n\t\t\t\t\t\t\tvelocity: event.velocity,\n\t\t\t\t\t\t\tbeats: beats,\n\t\t\t\t\t\t\ttrack: ev.track,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tkeyRange.low = Math.min(keyRange.low || pitch, pitch);\n\n\t\t\t\t\t\tev.index = index;\n\t\t\t\t\t\t++index;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"noteOff\":\n\t\t\t\t\t{\n\t\t\t\t\t\tconst pitch = event.noteNumber;\n\n\t\t\t\t\t\tchannels[event.channel] = channels[event.channel] || [];\n\n\t\t\t\t\t\tconst statusIndex = channelStatus.findIndex(status => status.channel == event.channel && status.pitch == pitch);\n\t\t\t\t\t\tif (statusIndex >= 0) {\n\t\t\t\t\t\t\tconst status = channelStatus.splice(statusIndex, 1)[0];\n\n\t\t\t\t\t\t\tchannels[event.channel].push({\n\t\t\t\t\t\t\t\tchannel: event.channel,\n\t\t\t\t\t\t\t\tstartTick: status.startTick,\n\t\t\t\t\t\t\t\tendTick: ticks,\n\t\t\t\t\t\t\t\tpitch,\n\t\t\t\t\t\t\t\tstart: status.start,\n\t\t\t\t\t\t\t\tduration: time - status.start,\n\t\t\t\t\t\t\t\tvelocity: status.velocity,\n\t\t\t\t\t\t\t\tbeats: status.beats,\n\t\t\t\t\t\t\t\ttrack: status.track,\n\t\t\t\t\t\t\t\tfinger: status.finger,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tconsole.debug(\"unexpected noteOff: \", time, event);\n\n\t\t\t\t\t\tkeyRange.high = Math.max(keyRange.high || pitch, pitch);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"controller\":\n\t\t\t\t\tswitch (event.controllerType) {\n\t\t\t\t\t// pedal controllers\n\t\t\t\t\tcase 64:\n\t\t\t\t\tcase 65:\n\t\t\t\t\tcase 66:\n\t\t\t\t\tcase 67:\n\t\t\t\t\t\tconst pedalType = PedalControllerTypes[event.controllerType];\n\n\t\t\t\t\t\tpedalStatus[event.channel] = pedalStatus[event.channel] || {};\n\t\t\t\t\t\tpedals[event.channel] = pedals[event.channel] || [];\n\n\t\t\t\t\t\tconst status = pedalStatus[event.channel][pedalType];\n\n\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\tpedals[event.channel].push({type: pedalType, start: status.start, duration: time - status.start, value: status.value});\n\t\t\t\t\t\tpedalStatus[event.channel][pedalType] = {start: time, value: event.value};\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase \"meta\":\n\t\t\t\tswitch (event.subtype) {\n\t\t\t\tcase \"setTempo\":\n\t\t\t\t\tmillisecondsPerBeat = event.microsecondsPerBeat / 1000;\n\t\t\t\t\t//beats = Math.round(beats);\n\t\t\t\t\t//console.assert(Number.isFinite(time), \"invalid time:\", time);\n\t\t\t\t\ttempos.push({tempo: event.microsecondsPerBeat, tick: ticks, time});\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"timeSignature\":\n\t\t\t\t\tnumerator = event.numerator;\n\t\t\t\t\tbarIndex = 0;\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tif (!correspondences && /^find-corres:/.test(event.text)) {\n\t\t\t\t\t\tconst captures = event.text.match(/:([\\d\\,-]+)/);\n\t\t\t\t\t\tconst str = captures && captures[1] || \"\";\n\t\t\t\t\t\tcorrespondences = str.split(\",\").map(s => Number(s));\n\t\t\t\t\t}\n\t\t\t\t\telse if (/fingering\\(.*\\)/.test(event.text)) {\n\t\t\t\t\t\tconst [_, fingers] = event.text.match(/\\((.+)\\)/);\n\t\t\t\t\t\tconst finger = Number(fingers);\n\t\t\t\t\t\tif (!Number.isNaN(finger)) {\n\t\t\t\t\t\t\tconst status = channelStatus[channelStatus.length - 1];\n\t\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\t\tstatus.finger = finger;\n\n\t\t\t\t\t\t\tconst event = events.find(e => e.index == index - 1);\n\t\t\t\t\t\t\tif (event)\n\t\t\t\t\t\t\t\tevent.data.finger = finger;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"copyrightNotice\":\n\t\t\t\t\tconsole.log(\"MIDI copyright:\", event.text);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tchannelStatus.forEach(status => {\n\t\t\tconsole.debug(\"unclosed noteOn event at\", status.startTick, status);\n\n\t\t\tchannels[status.channel].push({\n\t\t\t\tstartTick: status.startTick,\n\t\t\t\tendTick: ticks,\n\t\t\t\tpitch: status.pitch,\n\t\t\t\tstart: status.start,\n\t\t\t\tduration: time - status.start,\n\t\t\t\tvelocity: status.velocity,\n\t\t\t\tbeats: status.beats,\n\t\t\t\ttrack: status.track,\n\t\t\t\tfinger: status.finger,\n\t\t\t});\n\t\t});\n\n\t\treturn new Notation({\n\t\t\tchannels,\n\t\t\tkeyRange,\n\t\t\tpedals,\n\t\t\tbars,\n\t\t\tendTime: time,\n\t\t\tendTick: ticks,\n\t\t\tcorrespondences,\n\t\t\tevents,\n\t\t\ttempos,\n\t\t\tticksPerBeat,\n\t\t\tmeta: {},\n\t\t});\n\t}\n\n\n\tconstructor (fields) {\n\t\tObject.assign(this, fields);\n\n\t\t// channels to notes\n\t\tthis.notes = [];\n\t\tfor (const channel of this.channels) {\n\t\t\tif (channel) {\n\t\t\t\tfor (const note of channel)\n\t\t\t\t\tthis.notes.push(note);\n\t\t\t}\n\t\t}\n\t\tthis.notes.sort(function (n1, n2) {\n\t\t\treturn n1.start - n2.start;\n\t\t});\n\n\t\tfor (const i in this.notes)\n\t\t\tthis.notes[i].index = Number(i);\n\n\n\t\t// duration\n\t\tthis.duration = this.notes.length > 0 ? (this.endTime - this.notes[0].start) : 0,\n\n\t\t//this.endSoftIndex = this.notes.length ? this.notes[this.notes.length - 1].softIndex : 0;\n\n\n\t\t// pitch map\n\t\tthis.pitchMap = [];\n\t\tfor (const c in this.channels) {\n\t\t\tfor (const n in this.channels[c]) {\n\t\t\t\tconst pitch = this.channels[c][n].pitch;\n\t\t\t\tthis.pitchMap[pitch] = this.pitchMap[pitch] || [];\n\n\t\t\t\tthis.pitchMap[pitch].push(this.channels[c][n]);\n\t\t\t}\n\t\t}\n\n\t\tthis.pitchMap.forEach(notes => notes.sort((n1, n2) => n1.start - n2.start));\n\n\n\t\t/*// setup measure notes index\n\t\tif (this.measures) {\n\t\t\tconst measure_list = [];\n\n\t\t\tlet last_measure = null;\n\t\t\tconst measure_entries = Object.entries(this.measures).sort((e1, e2) => Number(e1[0]) - Number(e2[0]));\n\t\t\tfor (const [t, measure] of measure_entries) {\n\t\t\t\t//console.log(\"measure time:\", Number(t));\n\t\t\t\tmeasure.startTick = Number(t);\n\t\t\t\tmeasure.notes = [];\n\n\t\t\t\tif (last_measure)\n\t\t\t\t\tlast_measure.endTick = measure.startTick;\n\n\t\t\t\tconst m = measure.measure;\n\t\t\t\tmeasure_list[m] = measure_list[m] || [];\n\t\t\t\tmeasure_list[m].push(measure);\n\n\t\t\t\tlast_measure = measure;\n\t\t\t}\n\t\t\tif (last_measure)\n\t\t\t\tlast_measure.endTick = this.notes[this.notes.length - 1].endTick;\n\t\t\tfor (const i in this.notes) {\n\t\t\t\tconst note = this.notes[i];\n\t\t\t\tfor (const t in this.measures) {\n\t\t\t\t\tconst measure = this.measures[t];\n\t\t\t\t\tif (note.startTick >= measure.startTick && note.startTick < measure.endTick || note.endTick > measure.startTick && note.endTick <= measure.endTick)\n\t\t\t\t\t\tmeasure.notes.push(note);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.measure_list = measure_list;\n\t\t}*/\n\n\n\t\t// prepare beats info\n\t\tif (this.meta.beatInfos) {\n\t\t\tfor (let i = 0; i < this.meta.beatInfos.length; ++i) {\n\t\t\t\tconst info = this.meta.beatInfos[i];\n\t\t\t\tif (i > 0) {\n\t\t\t\t\tconst lastInfo = this.meta.beatInfos[i - 1];\n\t\t\t\t\tinfo.beatIndex = lastInfo.beatIndex + Math.ceil((info.tick - lastInfo.tick) / this.ticksPerBeat);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tinfo.beatIndex = 0;\n\t\t\t}\n\t\t}\n\n\n\t\t// compute tempos tick -> time\n\t\t{\n\t\t\tlet time = 0;\n\t\t\tlet ticks = 0;\n\t\t\tlet tempo = 500000;\n\t\t\tfor (const entry of this.tempos) {\n\t\t\t\tconst deltaTicks = entry.tick - ticks;\n\t\t\t\ttime += (tempo / 1000) * deltaTicks / this.ticksPerBeat;\n\n\t\t\t\tticks = entry.tick;\n\t\t\t\ttempo = entry.tempo;\n\n\t\t\t\tentry.time = time;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfindChordBySoftindex (softIndex, radius = 0.8) {\n\t\treturn this.notes.filter(note => Math.abs(note.softIndex - softIndex) < radius);\n\t}\n\n\n\taverageTempo (tickRange) {\n\t\ttickRange = tickRange || {from: 0, to: this.endtick};\n\n\t\tconsole.assert(this.tempos, \"no tempos.\");\n\t\tconsole.assert(tickRange.to > tickRange.from, \"range is invalid:\", tickRange);\n\n\t\tconst span = index => {\n\t\t\tconst from = Math.max(tickRange.from, this.tempos[index].tick);\n\t\t\tconst to = (index < this.tempos.length - 1) ? Math.min(this.tempos[index + 1].tick, tickRange.to) : tickRange.to;\n\n\t\t\treturn Math.max(0, to - from);\n\t\t};\n\n\t\tconst tempo_sum = this.tempos.reduce((sum, tempo, index) => sum + tempo.tempo * span(index), 0);\n\n\t\tconst average = tempo_sum / (tickRange.to - tickRange.from);\n\n\t\t// convert microseconds per beat to beats per minute\n\t\treturn 60e+6 / average;\n\t}\n\n\n\tticksToTime (tick) {\n\t\tconsole.assert(Number.isFinite(tick), \"invalid tick value:\", tick);\n\t\tconsole.assert(this.tempos && this.tempos.length, \"no tempos.\");\n\n\t\tconst next_tempo_index = this.tempos.findIndex(tempo => tempo.tick > tick);\n\t\tconst tempo_index = next_tempo_index < 0 ? this.tempos.length - 1 : Math.max(next_tempo_index - 1, 0);\n\n\t\tconst tempo = this.tempos[tempo_index];\n\n\t\treturn tempo.time + (tick - tempo.tick) * tempo.tempo * 1e-3 / this.ticksPerBeat;\n\t}\n\n\n\ttimeToTicks (time) {\n\t\tconsole.assert(Number.isFinite(time), \"invalid time value:\", time);\n\t\tconsole.assert(this.tempos && this.tempos.length, \"no tempos.\");\n\n\t\tconst next_tempo_index = this.tempos.findIndex(tempo => tempo.time > time);\n\t\tconst tempo_index = next_tempo_index < 0 ? this.tempos.length - 1 : Math.max(next_tempo_index - 1, 0);\n\n\t\tconst tempo = this.tempos[tempo_index];\n\n\t\treturn tempo.tick + (time - tempo.time) * this.ticksPerBeat / (tempo.tempo * 1e-3);\n\t}\n\n\n\ttickRangeToTimeRange (tickRange) {\n\t\tconsole.assert(tickRange.to >= tickRange.from, \"invalid tick range:\", tickRange);\n\n\t\treturn {\n\t\t\tfrom: this.ticksToTime(tickRange.from),\n\t\t\tto: this.ticksToTime(tickRange.to),\n\t\t};\n\t}\n\n\n\t/*getMeasureRange (measureRange) {\n\t\tconsole.assert(Number.isInteger(measureRange.start) && Number.isInteger(measureRange.end), \"invalid measure range:\", measureRange);\n\t\tconsole.assert(this.measure_list && this.measure_list[measureRange.start] && this.measure_list[measureRange.end], \"no measure data for specific index:\", this.measure_list, measureRange);\n\n\t\tconst startMeasure = this.measure_list[measureRange.start][0];\n\t\tlet endMeasure = null;\n\t\tfor (const measure of this.measure_list[measureRange.end]) {\n\t\t\tif (measure.endTick > startMeasure.startTick) {\n\t\t\t\tendMeasure = measure;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// there no path between start measure and end measure.\n\t\tif (!endMeasure)\n\t\t\treturn null;\n\n\t\tconst tickRange = {from: startMeasure.startTick, to: endMeasure.endTick, duration: endMeasure.endTick - startMeasure.startTick};\n\t\tconst timeRange = this.tickRangeToTimeRange(tickRange);\n\t\ttimeRange.duration = timeRange.to - timeRange.from;\n\n\t\treturn {\n\t\t\ttickRange,\n\t\t\ttimeRange,\n\t\t};\n\t}*/\n\n\n\tscaleTempo ({factor, headTempo}) {\n\t\tconsole.assert(this.tempos && this.tempos.length, \"[Notation.scaleTempo] tempos is empty.\");\n\n\t\tif (headTempo)\n\t\t\tfactor = headTempo / this.tempos[0].tempo;\n\n\t\tconsole.assert(Number.isFinite(factor) && factor > 0, \"[Notation.scaleTempo] invalid factor:\", factor);\n\n\t\tthis.tempos.forEach(tempo => {\n\t\t\ttempo.tempo *= factor;\n\t\t\ttempo.time *= factor;\n\t\t});\n\t\tthis.events.forEach(event => {\n\t\t\tevent.deltaTime *= factor;\n\t\t\tevent.time *= factor;\n\t\t});\n\t\tthis.notes.forEach(note => {\n\t\t\tnote.start *= factor;\n\t\t\tnote.duration *= factor;\n\t\t});\n\n\t\tthis.endTime *= factor;\n\t}\n};\n\n\n\nmodule.exports = {\n\tNotation,\n};\n","\nconst { Notation } = require(\"./MusicNotation.js\");\n\n\n\n//const msDelay = ms => new Promise(resolve => setTimeout(resolve, ms));\nconst animationDelay = () => new Promise(resolve => requestAnimationFrame(resolve));\n\n\nclass MidiPlayer {\n\tconstructor (midiData, {cacheSpan = 600, onMidi, onPlayFinish, onTurnCursor} = {}) {\n\t\tthis.cacheSpan = cacheSpan;\n\t\tthis.onMidi = onMidi;\n\t\tthis.onPlayFinish = onPlayFinish;\n\t\tthis.onTurnCursor = onTurnCursor;\n\n\t\tlet notation;\n\t\tif (midiData.notes && Number.isFinite(midiData.endTime))\n\t\t\tnotation = midiData;\n\t\telse\n\t\t\tnotation = Notation.parseMidi(midiData);\n\n\t\tthis.notation = notation;\n\t\tthis.events = notation.events;\n\t\t//console.log(\"events:\", this.events);\n\n\t\tthis.isPlaying = false;\n\t\tthis.progressTime = 0;\n\t\tthis.startTime = performance.now();\n\t\tthis.duration = notation.endTime;\n\t\tthis.cursorTurnDelta = 0;\n\n\t\tconsole.assert(notation.tempos && notation.tempos.length, \"[MidiPlayer] invalid notation, tempos is empty.\");\n\t}\n\n\n\tdispose () {\n\t\tthis.isPlaying = false;\n\t\tthis.progressTime = 0;\n\t}\n\n\n\tget progressTicks () {\n\t\treturn this.notation.timeToTicks(this.progressTime);\n\t}\n\n\n\tset progressTicks (value) {\n\t\tthis.progressTime = this.notation.ticksToTime(value);\n\n\t\tif (this.onTurnCursor)\n\t\t\tthis.onTurnCursor(this.progressTime);\n\t}\n\n\n\tasync play ({nextFrame = animationDelay} = {}) {\n\t\tif (this.progressTime >= this.duration)\n\t\t\tthis.progressTime = 0;\n\n\t\tlet now = performance.now();\n\t\tthis.startTime = now - this.progressTime;\n\n\t\tthis.isPlaying = true;\n\n\t\tlet currentEventIndex = this.events.findIndex(event => event.time >= now - this.startTime);\n\n\t\twhile (this.isPlaying) {\n\t\t\tfor (; currentEventIndex < this.events.length; ++currentEventIndex) {\n\t\t\t\tconst event = this.events[currentEventIndex];\n\t\t\t\t//console.log(\"play event:\", currentEventIndex, event.time, this.progressTime + this.cacheSpan);\n\t\t\t\tif (!event || event.time > this.progressTime + this.cacheSpan)\n\t\t\t\t\tbreak;\n\n\t\t\t\tif (event.data.type === \"channel\" && this.startTime + event.time >= now)\n\t\t\t\t\tif (this.onMidi)\n\t\t\t\t\t\tthis.onMidi(event.data, this.startTime + event.time);\n\t\t\t}\n\n\t\t\tawait nextFrame();\n\n\t\t\tif (!this.isPlaying)\n\t\t\t\tbreak;\n\n\t\t\tif (this.cursorTurnDelta !== 0) {\n\t\t\t\tconst backturn = this.cursorTurnDelta < 0;\n\n\t\t\t\tthis.startTime -= this.cursorTurnDelta;\n\t\t\t\tthis.cursorTurnDelta = 0;\n\n\t\t\t\tif (backturn) {\n\t\t\t\t\tfor (; currentEventIndex > 0; --currentEventIndex) {\n\t\t\t\t\t\tconst eventTime = this.events[currentEventIndex].time;\n\t\t\t\t\t\tif (this.startTime + eventTime < now)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnow = performance.now();\n\n\t\t\tthis.progressTime = now - this.startTime;\n\n\t\t\tif (this.progressTime > this.duration) {\n\t\t\t\tthis.isPlaying = false;\n\n\t\t\t\tif (this.onPlayFinish)\n\t\t\t\t\tthis.onPlayFinish();\n\t\t\t}\n\t\t}\n\t}\n\n\n\tpause () {\n\t\tthis.isPlaying = false;\n\t}\n\n\n\tturnCursor (time) {\n\t\t//console.log(\"onTurnCursor:\", time, oldTime);\n\t\tif (this.isPlaying)\n\t\t\tthis.cursorTurnDelta += time - this.progressTime;\n\t\telse\n\t\t\tthis.progressTime = time;\n\n\t\tif (this.onTurnCursor)\n\t\t\tthis.onTurnCursor(time);\n\t}\n};\n\n\n\nmodule.exports = MidiPlayer;\n","\nmodule.exports = {\n\tCostStepAttenuation: 0.6,\n\tSkipDeep: 3,\n\tPriorDistanceSigmoidFactor: 0.1,\n\tPriorValueSigmoidFactor: 0.12,\n\n\tSkipCost: 0.5,\n\tLagOffsetCost: 1,\n\tLeadOffsetCost: 1.6,\n\tZeroOffsetCost: 0.58,\n\n\tRelocationThreshold: 6,\n};\n","\nconst {pick} = require(\"lodash\");\n\nconst Config = require(\"./config.js\");\n\n\n\nclass Node {\n\tconstructor (s_note, c_note) {\n\t\tthis.s_note = s_note;\n\t\tthis.c_note = c_note;\n\n\t\tconsole.assert(this.s_note.softIndex != null, \"s_note softIndex is null\");\n\t\tthis.offset = this.s_note.softIndex - this.c_note.softIndex;\n\n\t\tthis._prev = null;\n\t\tthis._totalCost = 0;\n\t\tthis._value = 0;\n\t\tthis.cacheDirty = true;\n\n\t\t//this.evaluatePrev(Node.Zero);\n\t}\n\n\n\tget prev () {\n\t\treturn this._prev;\n\t}\n\n\n\tset prev (value) {\n\t\tif (value != this._prev) {\n\t\t\tthis._prev = value;\n\t\t\tthis.cacheDirty = true;\n\t\t}\n\t}\n\n\n\tget si () {\n\t\treturn this.s_note.index;\n\t}\n\n\n\tget ci () {\n\t\treturn this.c_note.index;\n\t}\n\n\n\tget root () {\n\t\treturn this.prev.root || this;\n\t}\n\n\n\tget rootSi () {\n\t\treturn !this.prev.zero ? this.prev.rootSi : this.si;\n\t}\n\n\n\tget id () {\n\t\treturn `${this.s_note.index},${this.c_note.index}`;\n\t}\n\n\n\tstatic cost (prev, skip, self) {\n\t\treturn prev * Config.CostStepAttenuation + Math.tanh(skip * Config.SkipCost) + Math.tanh(self * 0.5);\n\t}\n\n\n\tupdateCache () {\n\t\tif (this.cacheDirty) {\n\t\t\tthis._totalCost = Node.cost(this.prev.totalCost, this.si - this.prev.si - 1, this.selfCost);\n\t\t\tthis._value = this.prev.value + 1 - Math.tanh(this.selfCost * 0.5);\n\n\t\t\tthis.cacheDirty = false;\n\t\t}\n\t}\n\n\n\tget totalCost () {\n\t\tthis.updateCache();\n\n\t\treturn this._totalCost;\n\t}\n\n\n\tget value () {\n\t\tthis.updateCache();\n\n\t\treturn this._value;\n\t}\n\n\n\tget deep () {\n\t\treturn this.prev.deep + 1;\n\t}\n\n\n\tget path () {\n\t\tconst path = [];\n\t\tfor (let node = this; !node.zero; node = node.prev) {\n\t\t\tpath[node.si] = node.ci;\n\t\t}\n\n\t\tfor (let i = 0; i < path.length; ++i)\n\t\t\tif (typeof path[i] != \"number\")\n\t\t\t\tpath[i] = -1;\n\n\t\treturn path;\n\t}\n\n\n\tdump () {\n\t\treturn pick(this, [\"id\", \"si\", \"ci\", \"rootSi\", \"value\", \"deep\", \"rootSi\", \"offset\", \"prior\", \"selfCost\", \"totalCost\"]);\n\t}\n\n\n\tevaluatePrev (node) {\n\t\tconst cost = this.evaluatePrevCost(node);\n\n\t\tconsole.assert(this.si - node.si >= 1, \"node index error:\", this, node/*, {get [Symbol.toStringTag]() {debugger}}*/);\n\t\t//if (this.si - node.si < 1)\n\t\t//\tdebugger;\n\n\t\tconst totalCost = Node.cost(node.totalCost, this.si - node.si - 1, cost);\n\n\t\tif (!this.prev || totalCost < this.totalCost) {\n\t\t\tthis.prev = node;\n\t\t\tthis.selfCost = cost;\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\tevaluatePrevCost (node) {\n\t\tlet cost = 0;\n\n\t\tif (node.offset != null) {\n\t\t\tconst bias = this.offset - node.offset;\n\t\t\tconst costCoeff = node.zero ? Config.ZeroOffsetCost : (bias > 0 ? Config.LagOffsetCost : Config.LeadOffsetCost);\n\t\t\tcost += (bias * costCoeff) ** 2;\n\t\t}\n\n\t\treturn cost;\n\t}\n\n\n\tpriorByOffset (offset) {\n\t\tconst distance = Math.abs(this.offset - offset) / 1;//(this.s_note.deltaSi + 0.04);\n\n\t\treturn Math.tanh(this.value * Config.PriorValueSigmoidFactor) - Math.tanh(distance * Config.PriorDistanceSigmoidFactor);\n\t\t//return Math.log(this.value) * Math.tanh(4 / distance);\n\t\t//return this.value - distance;\n\t}\n\n\n\tstatic zero () {\n\t\treturn {\n\t\t\tzero: true,\n\t\t\ttotalCost: 0,\n\t\t\tvalue: 0,\n\t\t\tsi: -1,\n\t\t\tci: -1,\n\t\t\tdeep: 0,\n\t\t\toffset: 0,\n\t\t};\n\t}\n};\n\n\n\nmodule.exports = Node;\n","\nconst Config = require(\"./config.js\");\nconst Node = require(\"./node.js\");\n\n\n\nclass Navigator {\n\tconstructor (criterion, sample, options = {}) {\n\t\tthis.criterion = criterion;\n\t\tthis.sample = sample;\n\n\t\tthis.getCursorOffset = options.getCursorOffset || (() => null);\n\t\tthis.outOfPage = options.outOfPage;\n\n\t\tthis.bestNode = null;\n\t\tthis.fineCursor = null;\n\n\t\tthis.breakingSI = sample.notes.length - 1;\n\n\t\tthis.zeroNode = Node.zero();\n\t\tthis.zeroNode.offset = this.getCursorOffset() || 0;\n\n\t\tthis.relocationThreshold = options.relocationThreshold || Config.RelocationThreshold;\n\t}\n\n\n\tstep (index) {\n\t\t//console.log(\"step:\", this.zeroNode.offset);\n\t\tconst note = this.sample.notes[index];\n\n\t\tif (note.matches.length > 0) {\n\t\t\t//console.log(\"zeroNode.offset:\", index, this.zeroNode.offset);\n\t\t\tnote.matches.forEach(node => {\n\t\t\t\tnode.evaluatePrev(this.zeroNode);\n\t\t\t\t//console.log(\"node:\", node, node.evaluatePrevCost(this.zeroNode), node.offset, this.zeroNode.offset);\n\n\t\t\t\tfor (let si = index - 1; si >= Math.max(this.breakingSI + 1, index - Config.SkipDeep); --si) {\n\t\t\t\t\t//const skipCost = Config.SkipCost * (index - 1 - si);\n\n\t\t\t\t\tconst prevNote = this.sample.notes[si];\n\t\t\t\t\tconsole.assert(prevNote, \"prevNote is null:\", si, index, this.sample.notes);\n\t\t\t\t\tprevNote.matches.forEach(prevNode => {\n\t\t\t\t\t\tconst bias = node.offset - prevNode.offset;\n\t\t\t\t\t\tif (/*prevNode.totalCost + skipCost < node.totalCost\n\t\t\t\t\t\t\t&&*/ (bias < 2 / Config.LagOffsetCost && bias > -2 / Config.LeadOffsetCost))\n\t\t\t\t\t\t\tnode.evaluatePrev(prevNode);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tnode.prior = node.totalCost > 1.99 ? -1 : node.priorByOffset(this.zeroNode.offset);\n\n\t\t\t\tif (node.prior > 0 && this.outOfPage) {\n\t\t\t\t\tconst tick = this.criterion.notes[node.ci].startTick;\n\t\t\t\t\tif (this.outOfPage(tick))\n\t\t\t\t\t\tnode.prior -= 0.7;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tnote.matches.sort((c1, c2) => c2.prior - c1.prior);\n\t\t\tthis.cursors = note.matches;\n\t\t\t//console.log(\"navigator cursors:\", this.cursors);\n\n\t\t\tlet fineCursor = null;\n\t\t\tconst nullLength = this.nullSteps(index);\n\n\t\t\tconst cursor = this.cursors[0];\n\t\t\tif (cursor && cursor.totalCost < 1) {\n\t\t\t\t//console.log(\"nullLength:\", nullLength, nullLength * Math.log(cursor.value / 4));\n\t\t\t\tif (cursor.prior > 0 || (cursor.totalCost < 0.4 && Math.log(Math.max(nullLength * cursor.value, 1e-3)) > this.relocationThreshold)) {\n\t\t\t\t\tthis.zeroNode.offset = cursor.offset;\n\n\t\t\t\t\tfineCursor = cursor;\n\n\t\t\t\t\tif (!this.bestNode || cursor.value > this.bestNode.value)\n\t\t\t\t\t\tthis.bestNode = cursor;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (fineCursor)\n\t\t\t\tthis.fineCursor = fineCursor;\n\t\t\telse {\n\t\t\t\tif (!this.resetCursor(index, {breaking: false/*nullLength > Config.SkipDeep*/})) {\n\t\t\t\t\tthis.zeroNode.offset += note.deltaSi * Math.tanh(nullLength);\n\t\t\t\t\tconsole.assert(!Number.isNaN(this.zeroNode.offset), \"zeroNode.offset is NaN.\", note.deltaSi, nullLength);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t\tthis.cursors = [];\n\t}\n\n\n\tpath ({fromIndex = 0, toIndex = this.sample.notes.length - 1} = {}) {\n\t\tconst path = [];\n\n\t\tlet offset = null;\n\n\t\tfor (let si = toIndex; si >= fromIndex;) {\n\t\t\tconst note = this.sample.notes[si];\n\n\t\t\tif (!note.matches.length || note.matches[0].prior < -0.01 || note.matches[0].totalCost >= 1) {\n\t\t\t\t//if (note.matches.length)\n\t\t\t\t//\tconsole.log(\"path -1:\", si, note.matches[0].prior, note.matches[0].totalCost);\n\t\t\t\tpath[si] = -1;\n\t\t\t\t--si;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// sort nodes by backwards heuristic offset\n\t\t\tif (offset != null) {\n\t\t\t\tnote.matches.forEach(node => node.backPrior = (node.totalCost < 1.99 ? node.priorByOffset(offset) : -1));\n\t\t\t\tnote.matches.sort((n1, n2) => n2.backPrior - n1.backPrior);\n\t\t\t}\n\n\t\t\tconst node = note.matches[0];\n\t\t\tnode.path.forEach((ci, si) => path[si] = ci);\n\t\t\t//console.log(\"node path:\", si, node.path);\n\n\t\t\toffset = node.root.offset;\n\n\t\t\tsi = node.rootSi - 1;\n\t\t}\n\n\t\tconsole.assert(path.length == toIndex + 1, \"path length error:\", path, fromIndex, toIndex + 1,\n\t\t\tthis.sample.notes.length, this.sample.notes.length ? this.sample.notes[this.sample.notes.length - 1].index : null);\n\n\t\treturn path;\n\t}\n\n\n\tnullSteps (index) {\n\t\treturn index - (this.fineCursor ? this.fineCursor.si : -1) - 1;\n\t}\n\n\n\tresetCursor (index, {breaking = true} = {}) {\n\t\tif (breaking)\n\t\t\tthis.breakingSI = index;\n\n\t\tconst cursorOffset = this.getCursorOffset();\n\t\tif (cursorOffset != null) {\n\t\t\t//console.log(\"cursorOffset:\", cursorOffset);\n\n\t\t\tthis.zeroNode.offset = cursorOffset;\n\t\t\t//this.breaking = this.nullSteps(index) > Config.SkipDeep;\n\t\t\t//if (this.breaking)\t// trivial zero node si resets result in focus path interruption\n\t\t\tthis.zeroNode.si = index;\n\t\t\tthis.fineCursor = null;\n\n\t\t\tconsole.assert(!Number.isNaN(this.zeroNode.offset), \"zeroNode.offset is NaN.\", cursorOffset);\n\t\t\t//console.log(\"cursor offset reset:\", cursorOffset);\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\tget relocationTendency () {\n\t\tconst cursor = this.cursors && this.cursors[0];\n\t\tif (!cursor)\n\t\t\treturn null;\n\n\t\tconst nullLength = this.nullSteps(cursor.si);\n\t\tif (nullLength <= 0)\n\t\t\treturn 0;\n\n\t\treturn Math.log(Math.max(nullLength * cursor.value, 1e-3)) / this.relocationThreshold;\n\t}\n};\n\n\n\nmodule.exports = Navigator;\n","\nconst Node = require(\"./node.js\");\nconst Navigator = require(\"./navigator.js\");\n\n\n\nconst HEART_BEAT = 800;\t// in ms\nconst SIMULTANEOUS_INTERVAL = HEART_BEAT * 0.24;\n\n\nconst normalizeInterval = interval => Math.tanh(interval / SIMULTANEOUS_INTERVAL);\n\n\n// greater softIndexFactor make 'harder' soft index\nconst makeNoteSoftIndex = function (notes, index, {softIndexFactor = 1} = {}) {\n\tindex = Number(index);\n\n\tconst note = notes[index];\n\n\t// make soft index\n\tif (index > 0) {\n\t\tconst lastNote = notes[index - 1];\n\n\t\tconsole.assert(note.start != null, \"note.start is null\", note);\n\t\tconsole.assert(lastNote.start != null, \"lastNote.start is null\", lastNote);\n\n\t\tnote.deltaSi = normalizeInterval((note.start - lastNote.start) * softIndexFactor);\n\t\tnote.softIndex = lastNote.softIndex + note.deltaSi;\n\n\t\tconsole.assert(!Number.isNaN(note.deltaSi), \"note.deltaSi is NaN.\", note.start, lastNote.start);\n\t}\n\telse {\n\t\tnote.softIndex = 0;\n\t\tnote.deltaSi = 0;\n\t}\n};\n\n\nconst makeMatchNodes = function (note, criterion, zeroNode = Node.zero()) {\n\tnote.matches = [];\n\n\tconst targetList = criterion.pitchMap[note.pitch];\n\tif (targetList) {\n\t\tfor (const targetNote of targetList) {\n\t\t\tconst node = new Node(note, targetNote);\n\t\t\tif (zeroNode)\n\t\t\t\tnode.evaluatePrev(zeroNode);\n\n\t\t\tnote.matches.push(node);\n\t\t}\n\t}\n};\n\n\nconst genNotationContext = function (notation, {softIndexFactor = 1} = {}) {\n\tfor (let i = 0; i < notation.notes.length; ++i)\n\t\tmakeNoteSoftIndex(notation.notes, i, {softIndexFactor});\n};\n\n\nconst runNavigation = async function(criterion, sample, onStep) {\n\tconst navigator = new Navigator(criterion, sample);\n\tnavigator.resetCursor(-1);\n\n\tfor (let i = 0; i < sample.notes.length; ++i) {\n\t\tnavigator.step(i);\n\n\t\tconst next = await (onStep && onStep(i, navigator));\n\t\tif (next === Symbol.for(\"end\")) {\n\t\t\tconsole.log(\"Navigation interrupted.\");\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t//console.log(\"Navigation accomplished.\");\n\n\treturn navigator;\n};\n\n\n\nmodule.exports = {\n\tnormalizeInterval,\n\tmakeNoteSoftIndex,\n\tmakeMatchNodes,\n\tgenNotationContext,\n\trunNavigation,\n\tNavigator,\n\tNode,\n};\n","\nconst MIDI = require(\"./MIDI\");\n\n\n\nconst trackDeltaToAbs = events => {\n\tlet tick = 0;\n\n\tevents.forEach(event => {\n\t\ttick += event.deltaTime;\n\t\tevent.tick = tick;\n\t});\n};\n\n\nconst trackAbsToDelta = events => {\n\tlet lastTick = 0;\n\n\tevents.sort((e1, e2) => e1.tick - e2.tick).forEach(event => {\n\t\tevent.deltaTime = event.tick - lastTick;\n\t\tlastTick = event.tick;\n\t});\n};\n\n\nconst sliceTrack = (track, startTick, endTick) => {\n\ttrackDeltaToAbs(track);\n\n\tconst events = [];\n\tconst status = {};\n\n\ttrack.forEach(event => {\n\t\tif (event.tick >= startTick && event.tick <= endTick && event.subtype !== \"endOfTrack\")\n\t\t\tevents.push({\n\t\t\t\t...event,\n\t\t\t\ttick: event.tick - startTick,\n\t\t\t});\n\t\telse if (event.tick < startTick) {\n\t\t\tswitch (event.type) {\n\t\t\tcase \"meta\":\n\t\t\t\tstatus[event.subtype] = event;\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\n\tObject.values(status).forEach(event => events.push({\n\t\t...event,\n\t\ttick: 0,\n\t}));\n\n\tevents.push({\n\t\ttick: endTick - startTick,\n\t\ttype: \"meta\",\n\t\tsubtype: \"endOfTrack\",\n\t});\n\n\ttrackAbsToDelta(events);\n\n\treturn events;\n};\n\n\nconst sliceMidi = (midi, startTick, endTick) => ({\n\theader: midi.header,\n\ttracks: midi.tracks.map(track => sliceTrack(track, startTick, endTick)),\n});\n\n\nconst TICKS_PER_BEATS = 480;\n\nconst EXCLUDE_MIDI_EVENT_SUBTYPES = [\n\t\"endOfTrack\", \"trackName\",\n\t\"noteOn\", \"noteOff\",\n];\n\n\nfunction encodeToMIDIData(notation, {startTime, unclosedNoteDuration = 30e+3} = {}) {\n\tnotation.microsecondsPerBeat = notation.microsecondsPerBeat || 500000;\n\n\tconst ticksPerBeat = TICKS_PER_BEATS;\n\tconst msToTicks = ticksPerBeat * 1000 / notation.microsecondsPerBeat;\n\n\tconst header = { formatType: 0, ticksPerBeat };\n\tconst track = [];\n\n\tif (!Number.isFinite(startTime)) {\n\t\tif (!notation.notes || !notation.notes[0])\n\t\t\tthrow new Error(\"encodeToMidiData: no start time specificed\");\n\n\t\tstartTime = notation.notes[0].start;\n\t}\n\n\ttrack.push({ time: startTime, type: \"meta\", subtype: \"copyrightNotice\", text: `Composed by MusicWdigets. BUILT on ${new Date(Number(process.env.VUE_APP_BUILD_TIME)).toDateString()}` });\n\n\tconst containsTempo = notation.events && notation.events.find(event => event.subtype == \"setTempo\");\n\tif (!containsTempo) {\n\t\ttrack.push({ time: startTime, type: \"meta\", subtype: \"timeSignature\", numerator: 4, denominator: 4, thirtyseconds: 8 });\n\t\ttrack.push({ time: startTime, type: \"meta\", subtype: \"setTempo\", microsecondsPerBeat: notation.microsecondsPerBeat });\n\t}\n\n\t//if (notation.correspondences)\n\t//\ttrack.push({ time: startTime, type: \"meta\", subtype: \"text\", text: \"find-corres:\" + notation.correspondences.join(\",\") });\n\n\tlet endTime = startTime || 0;\n\n\tif (notation.notes) {\n\t\tfor (const note of notation.notes) {\n\t\t\ttrack.push({\n\t\t\t\ttime: note.start,\n\t\t\t\ttype: \"channel\",\n\t\t\t\tsubtype: \"noteOn\",\n\t\t\t\tchannel: note.channel || 0,\n\t\t\t\tnoteNumber: note.pitch,\n\t\t\t\tvelocity: note.velocity,\n\t\t\t\tfinger: note.finger,\n\t\t\t});\n\n\t\t\tendTime = Math.max(endTime, note.start);\n\n\t\t\tif (Number.isFinite(unclosedNoteDuration))\n\t\t\t\tnote.duration = note.duration || unclosedNoteDuration;\n\t\t\tif (note.duration) {\n\t\t\t\ttrack.push({\n\t\t\t\t\ttime: note.start + note.duration,\n\t\t\t\t\ttype: \"channel\",\n\t\t\t\t\tsubtype: \"noteOff\",\n\t\t\t\t\tchannel: note.channel || 0,\n\t\t\t\t\tnoteNumber: note.pitch,\n\t\t\t\t\tvelocity: 0,\n\t\t\t\t});\n\n\t\t\t\tendTime = Math.max(endTime, note.start + note.duration);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (notation.events) {\n\t\tconst events = notation.events.filter(event => !EXCLUDE_MIDI_EVENT_SUBTYPES.includes(event.data.subtype));\n\t\tfor (const event of events) {\n\t\t\ttrack.push({\n\t\t\t\ttime: event.time,\n\t\t\t\t...event.data,\n\t\t\t});\n\n\t\t\tendTime = Math.max(endTime, event.time);\n\t\t}\n\t}\n\n\ttrack.push({ time: endTime + 100, type: \"meta\", subtype: \"endOfTrack\" });\n\n\ttrack.sort(function (e1, e2) { return e1.time - e2.time; });\n\n\t// append finger event after every noteOn event\n\ttrack.map((event, index) => ({event, index}))\n\t\t.filter(({event}) => event.subtype == \"noteOn\" && event.finger != null)\n\t\t.reverse()\n\t\t.forEach(({event, index}) => track.splice(index + 1, 0, {\n\t\t\ttime: event.time,\n\t\t\ttype: \"meta\",\n\t\t\tsubtype: \"text\",\n\t\t\ttext: `fingering(${event.finger})`,\n\t\t}));\n\n\ttrack.forEach(event => event.ticks = Math.round((event.time - startTime) * msToTicks));\n\ttrack.forEach((event, i) => event.deltaTime = (event.ticks - (i > 0 ? track[i - 1].ticks : 0)));\n\n\treturn {header, tracks: [track]};\n};\n\n\nfunction encodeToMIDI(notation, options) {\n\tconst data = encodeToMIDIData(notation, options);\n\treturn MIDI.encodeMidiFile(data);\n};\n\n\n\nmodule.exports = {\n\tsliceMidi,\n\tencodeToMIDIData,\n\tencodeToMIDI,\n};\n","\nconst MIDI = require(\"./source/inc/MIDI\");\nconst MusicNotation = require(\"./source/inc/MusicNotation\");\nconst MidiPlayer = require(\"./source/inc/MidiPlayer.js\");\nconst Matcher = require(\"./source/inc/Matcher\");\nconst MidiUtils = require(\"./source/inc/MidiUtils.js\");\n\n\n\nmodule.exports = {\n\tMIDI,\n\tMusicNotation,\n\tMidiPlayer,\n\tMatcher,\n\tMidiUtils,\n};\n","import pick from 'lodash/pick';\n\nimport { MusicNotation, MIDI } from '@k-l-lambda/music-widgets';\n\n//import {MeasureLayout, LayoutType} from\nimport { ImplicitType, ChordPosition } from './types';\n\nconst WHOLE_DURATION_MAGNITUDE = 1920;\nconst TICKS_PER_BEAT = WHOLE_DURATION_MAGNITUDE / 4;\n\ninterface Fraction {\n\tnumerator: number;\n\tdenominator: number;\n}\n\ninterface StaffNoteProperties {\n\trest: boolean;\n\ttied: boolean;\n\toverlapped: boolean;\n\timplicitType: ImplicitType;\n\tafterGrace: boolean;\n\tchordPosition: ChordPosition;\n\tdivision: number;\n\n\tcontextIndex: number;\n\tstaffTrack: number;\n}\n\ninterface MetaNote extends MusicNotation.Note, Partial {\n\tid: string;\n\tmeasure: number;\n\tendTick: number;\n}\n\ninterface SubNote {\n\tstartTick: number;\n\tendTick: number;\n\tpitch: number;\n\tvelocity?: number;\n}\n\ninterface MeasureNote extends Partial {\n\ttick: number;\n\tpitch: number;\n\tduration: number;\n\tchordPosition: ChordPosition;\n\tstaff: number;\n\n\ttrack: number;\n\tchannel: number;\n\tid: string;\n\tids: string[];\n\n\tsubNotes: SubNote[];\n}\n\ninterface MeasureEvent {\n\tdata: any;\n\ttrack: number;\n\tticks?: number;\n}\n\ninterface Measure {\n\ttick: number;\n\tduration: number;\n\n\tnotes: MeasureNote[];\n\tevents?: MeasureEvent[];\n\ttimeSignature?: Fraction;\n\tkeySignature?: number;\n}\n\ninterface PerformOptions {\n\twithRestTied?: boolean;\n}\n\ninterface MidiEvent extends MIDI.MidiEvent {\n\tticks?: number;\n\tmeasure?: number;\n\tids?: string[];\n\tstaffTrack?: number;\n\tstaff?: number;\n}\ntype MidiTrack = MidiEvent[];\n\nconst EXTRA_NOTE_FIELDS = ['rest', 'tied', 'overlapped', 'implicitType', 'afterGrace', 'contextIndex', 'staffTrack', 'chordPosition', 'division'];\nconst COMMON_NOTE_FIELDS = ['id', 'ids', 'pitch', 'velocity', 'track', 'channel', ...EXTRA_NOTE_FIELDS];\n\nclass MetaNotation {\n\t//pitchContextGroup: PitchContextTable[];\n\t//measureLayout: MeasureLayout;\n\tmeasures: Measure[];\n\n\ttrackNames: string[];\n\tidTrackMap: { [key: string]: number };\n\n\tripe: boolean = false;\n\n\tstatic fromAbsoluteNotes(notes: MetaNote[], measureHeads: number[], data?: Partial): MetaNotation {\n\t\tconst notation = new MetaNotation(data);\n\n\t\tnotation.measures = Array(measureHeads.length)\n\t\t\t.fill(null)\n\t\t\t.map((__, i) => {\n\t\t\t\tconst tick = measureHeads[i];\n\t\t\t\tconst duration = measureHeads[i + 1] ? measureHeads[i + 1] - tick : 0;\n\n\t\t\t\tconst mnotes = notes\n\t\t\t\t\t.filter((note) => note.measure === i + 1)\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(note) =>\n\t\t\t\t\t\t\t({\n\t\t\t\t\t\t\t\ttick: note.startTick - tick,\n\t\t\t\t\t\t\t\tduration: note.endTick - note.startTick,\n\t\t\t\t\t\t\t\t...pick(note, COMMON_NOTE_FIELDS),\n\t\t\t\t\t\t\t\tsubNotes: [],\n\t\t\t\t\t\t\t} as MeasureNote)\n\t\t\t\t\t);\n\n\t\t\t\t// reduce note data size\n\t\t\t\tmnotes.forEach((mn) =>\n\t\t\t\t\t['rest', 'tied', 'implicitType', 'afterGrace'].forEach((field) => {\n\t\t\t\t\t\tif (!mn[field]) delete mn[field];\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration,\n\t\t\t\t\tnotes: mnotes,\n\t\t\t\t};\n\t\t\t});\n\n\t\tnotation.idTrackMap = notes.reduce((map, note) => {\n\t\t\tif (note.id) map[note.id] = note.track;\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn notation;\n\t}\n\n\tstatic performAbsoluteNotes(abNotes: MetaNote[], { withRestTied = false }: PerformOptions = {}): MusicNotation.Note[] {\n\t\tconst notes = abNotes\n\t\t\t.filter((note) => (withRestTied || (!note.rest && !note.tied)) && !note.overlapped)\n\t\t\t.map((note) => ({\n\t\t\t\tmeasure: note.measure,\n\t\t\t\tchannel: note.channel,\n\t\t\t\ttrack: note.track,\n\t\t\t\tstart: note.start,\n\t\t\t\tstartTick: note.startTick,\n\t\t\t\tendTick: note.endTick,\n\t\t\t\tpitch: note.pitch,\n\t\t\t\tduration: note.duration,\n\t\t\t\tvelocity: note.velocity || 127,\n\t\t\t\tid: note.id,\n\t\t\t\tids: note.ids,\n\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\tcontextIndex: note.contextIndex,\n\t\t\t\timplicitType: note.implicitType,\n\t\t\t\tchordPosition: note.chordPosition,\n\t\t\t}));\n\n\t\tconst noteMap = notes.reduce((map, note) => {\n\t\t\tconst key = `${note.channel}|${note.start}|${note.pitch}`;\n\t\t\tconst priorNote = map[key];\n\t\t\tif (priorNote) priorNote.ids.push(...note.ids);\n\t\t\telse map[key] = note;\n\n\t\t\treturn map;\n\t\t}, {});\n\n\t\treturn Object.values(noteMap);\n\t}\n\n\tconstructor(data?: Partial) {\n\t\tif (data) Object.assign(this, data);\n\t}\n\n\t/*get ordinaryMeasureIndices (): number[] {\n\t\tif (this.measureLayout)\n\t\t\treturn this.measureLayout.serialize(LayoutType.Ordinary);\n\n\t\treturn Array(this.measures.length).fill(null).map((_, i) => i + 1);\n\t}*/\n\n\t// In Lilypond 2.20.0, minus tick value at the head of a track result in MIDI event time bias,\n\t//\tSo store the bias values to correct MIDI time from lilyond.\n\tget trackTickBias(): { [key: string]: number } {\n\t\tconst headMeasure = this.measures[0];\n\t\treturn this.trackNames.reduce((map, name, track) => {\n\t\t\tmap[name] = 0;\n\t\t\tif (headMeasure) {\n\t\t\t\tconst note = headMeasure.notes.find((note) => note.track === track);\n\t\t\t\tif (note) map[name] = Math.min(note.tick, 0);\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget idSet(): Set {\n\t\treturn this.measures.reduce(\n\t\t\t(set, measure) => (measure.notes.filter((note) => !note.rest).forEach((note) => note.ids.forEach((id) => set.add(id))), set),\n\t\t\tnew Set()\n\t\t);\n\t}\n\n\ttoJSON() {\n\t\treturn {\n\t\t\t__prototype: 'LilyNotation',\n\t\t\t//pitchContextGroup: this.pitchContextGroup,\n\t\t\t//measureLayout: this.measureLayout,\n\t\t\tmeasures: this.measures,\n\t\t\tidTrackMap: this.idTrackMap,\n\t\t\ttrackNames: this.trackNames,\n\t\t\tripe: this.ripe,\n\t\t};\n\t}\n\n\ttoAbsoluteNotes(measureIndices: number[] /*= this.ordinaryMeasureIndices*/): MetaNote[] {\n\t\tlet measureTick = 0;\n\t\tconst measureNotes: MetaNote[][] = measureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\n\t\t\tconst notes = measure.notes.map((mnote) => {\n\t\t\t\treturn {\n\t\t\t\t\tstartTick: measureTick + mnote.tick,\n\t\t\t\t\tendTick: measureTick + mnote.tick + mnote.duration,\n\t\t\t\t\tstart: measureTick + mnote.tick,\n\t\t\t\t\tduration: mnote.duration,\n\t\t\t\t\tmeasure: index,\n\t\t\t\t\t...pick(mnote, COMMON_NOTE_FIELDS),\n\t\t\t\t} as MetaNote;\n\t\t\t});\n\n\t\t\tmeasureTick += measure.duration;\n\n\t\t\treturn notes;\n\t\t});\n\n\t\treturn [].concat(...measureNotes);\n\t}\n\n\t/*getMeasureIndices (type: LayoutType) {\n\t\treturn this.measureLayout.serialize(type);\n\t}*/\n\n\ttoPerformingNotation(measureIndices: number[] /*= this.ordinaryMeasureIndices*/, options: PerformOptions = {}): MusicNotation.Notation {\n\t\t//console.debug(\"toPerformingNotation:\", this, measureIndices);\n\t\tconst abNotes = this.toAbsoluteNotes(measureIndices);\n\t\tconst notes = MetaNotation.performAbsoluteNotes(abNotes, options);\n\n\t\t//const lastNote = notes[notes.length - 1];\n\t\tconst endTime = Math.max(...notes.map((note) => note.start + note.duration));\n\n\t\tconst endTick = measureIndices.reduce((tick, index) => tick + this.measures[index - 1].duration, 0);\n\n\t\tconst notation = new MusicNotation.Notation({\n\t\t\tticksPerBeat: TICKS_PER_BEAT,\n\t\t\tmeta: {},\n\t\t\ttempos: [], // TODO\n\t\t\tchannels: [notes],\n\t\t\tendTime,\n\t\t\tendTick,\n\t\t});\n\n\t\treturn notation;\n\t}\n\n\ttoPerformingMIDI(measureIndices: number[], { trackList }: { trackList?: boolean[] } = {}): MIDI.MidiData & { zeroTick: number } {\n\t\tif (!measureIndices.length) return null;\n\n\t\t// to avoid begin minus tick\n\t\tconst zeroTick = -Math.min(0, ...(this.measures[0]?.events.map((e) => e.ticks) || []), ...(this.measures[0]?.notes.map((note) => note.tick) || []));\n\n\t\tlet measureTick = zeroTick;\n\t\tconst measureEvents: MeasureEvent[][] = measureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\n\t\t\tconst events = measure.events.map((mevent) => ({\n\t\t\t\tticks: measureTick + mevent.ticks,\n\t\t\t\ttrack: mevent.track,\n\t\t\t\tdata: {\n\t\t\t\t\t...mevent.data,\n\t\t\t\t\tmeasure: index,\n\t\t\t\t},\n\t\t\t}));\n\n\t\t\tmeasureTick += measure.duration;\n\n\t\t\treturn events;\n\t\t});\n\n\t\tconst eventPriority = (event: MidiEvent): number => event.ticks + (event.subtype === 'noteOff' ? -1e-8 : 0);\n\n\t\tconst tracks: MidiTrack[] = [].concat(...measureEvents).reduce((tracks, mevent) => {\n\t\t\ttracks[mevent.track] = tracks[mevent.track] || [];\n\t\t\ttracks[mevent.track].push({\n\t\t\t\tticks: mevent.ticks,\n\t\t\t\t...mevent.data,\n\t\t\t});\n\n\t\t\treturn tracks;\n\t\t}, []);\n\n\t\ttracks[0] = tracks[0] || [];\n\t\t/*tracks[0].push({\n\t\t\tticks: 0,\n\t\t\ttype: \"meta\",\n\t\t\tsubtype: \"text\",\n\t\t\ttext: `${npmPackage.name} ${npmPackage.version}`,\n\t\t});*/\n\n\t\t// append note events\n\t\tmeasureTick = zeroTick;\n\t\tmeasureIndices.map((index) => {\n\t\t\tconst measure = this.measures[index - 1];\n\t\t\tconsole.assert(!!measure, 'invalid measure index:', index, this.measures.length);\n\t\t\tif (!Number.isFinite(measure.duration)) return;\n\n\t\t\tmeasure.notes.forEach((note) => {\n\t\t\t\tif (trackList && !trackList[note.track]) return;\n\n\t\t\t\tif (note.rest) return;\n\n\t\t\t\tconst tick = measureTick + note.tick;\n\n\t\t\t\tconst track = (tracks[note.track] = tracks[note.track] || []);\n\n\t\t\t\tnote.subNotes.forEach((subnote) => {\n\t\t\t\t\ttrack.push({\n\t\t\t\t\t\tticks: tick + subnote.startTick,\n\t\t\t\t\t\tmeasure: index,\n\t\t\t\t\t\tids: note.ids,\n\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\tsubtype: 'noteOn',\n\t\t\t\t\t\tchannel: note.channel,\n\t\t\t\t\t\tnoteNumber: subnote.pitch,\n\t\t\t\t\t\tvelocity: subnote.velocity,\n\t\t\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\t\t\tstaff: note.staff,\n\t\t\t\t\t});\n\n\t\t\t\t\ttrack.push({\n\t\t\t\t\t\tticks: tick + subnote.endTick,\n\t\t\t\t\t\tmeasure: index,\n\t\t\t\t\t\tids: note.ids,\n\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\tsubtype: 'noteOff',\n\t\t\t\t\t\tchannel: note.channel,\n\t\t\t\t\t\tnoteNumber: subnote.pitch,\n\t\t\t\t\t\tvelocity: 0,\n\t\t\t\t\t\tstaffTrack: note.staffTrack,\n\t\t\t\t\t\tstaff: note.staff,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tmeasureTick += measure.duration;\n\t\t});\n\n\t\tconst finalTick = measureTick;\n\n\t\t// ensure no empty track\n\t\tfor (let t = 0; t < tracks.length; ++t) tracks[t] = tracks[t] || [];\n\n\t\t// sort & make deltaTime\n\t\ttracks.forEach((events) => {\n\t\t\tevents.sort((e1, e2) => eventPriority(e1) - eventPriority(e2));\n\n\t\t\tlet ticks = 0;\n\t\t\tevents.forEach((event) => {\n\t\t\t\tevent.deltaTime = event.ticks - ticks;\n\t\t\t\tif (!Number.isFinite(event.deltaTime)) event.deltaTime = 0;\n\t\t\t\telse ticks = event.ticks;\n\t\t\t});\n\n\t\t\tevents.push({ deltaTime: Math.max(finalTick - ticks, 0), type: 'meta', subtype: 'endOfTrack' });\n\t\t});\n\n\t\treturn {\n\t\t\theader: {\n\t\t\t\tformatType: 0,\n\t\t\t\tticksPerBeat: TICKS_PER_BEAT,\n\t\t\t},\n\t\t\ttracks,\n\t\t\tzeroTick,\n\t\t};\n\t}\n\n\ttoPerformingNotationWithEvents(measureIndices: number[], options: { trackList?: boolean[] } = {}): MusicNotation.Notation {\n\t\tif (!measureIndices.length) return null;\n\n\t\tconst { zeroTick, ...midi } = this.toPerformingMIDI(measureIndices, options);\n\t\tconst notation = MusicNotation.Notation.parseMidi(midi);\n\n\t\tassignNotationNoteDataFromEvents(notation);\n\n\t\tlet tick = zeroTick;\n\n\t\tnotation.measures = measureIndices.map((index) => {\n\t\t\tconst startTick = tick;\n\t\t\ttick += this.measures[index - 1].duration;\n\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tstartTick,\n\t\t\t\tendTick: tick,\n\t\t\t};\n\t\t});\n\n\t\treturn notation;\n\t}\n\n\t// find the MIDI event of setTempo in measures data, and change the value of microsecondsPerBeat\n\tsetTempo(bpm: number): boolean {\n\t\tlet found = false;\n\t\tfor (const measure of this.measures) {\n\t\t\tfor (const event of measure.events) {\n\t\t\t\tif (event.data.subtype === 'setTempo') {\n\t\t\t\t\tevent.data.microsecondsPerBeat = 60e6 / bpm;\n\t\t\t\t\tfound = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn found;\n\t}\n}\n\nconst assignNotationNoteDataFromEvents = (midiNotation: MusicNotation.NotationData, fields = ['ids', 'measure', 'staffTrack']) => {\n\tconst noteId = (channel: number, pitch: number, tick: number): string => `${channel}|${pitch}|${tick}`;\n\n\tconst noteMap = midiNotation.notes.reduce((map, note) => {\n\t\tmap[noteId(note.channel, note.pitch, note.startTick)] = note;\n\n\t\treturn map;\n\t}, {});\n\n\tmidiNotation.events.forEach((event) => {\n\t\tif (event.data.subtype === 'noteOn') {\n\t\t\tconst id = noteId(event.data.channel, event.data.noteNumber, event.ticks);\n\t\t\tconst note = noteMap[id];\n\t\t\tconsole.assert(!!note, 'cannot find note of', id);\n\n\t\t\tif (note) Object.assign(note, pick(event.data, fields));\n\t\t}\n\t});\n};\n\nexport { MetaNote, MetaNotation, MidiEvent };\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","import _SHA256 from 'crypto-js/sha256';\n\nconst SHA256 = (source: string): Uint8Array => {\n\tconst { words, sigBytes } = _SHA256(source);\n\tconst uwords = words.map((x) => (x < 0 ? x + 0x100000000 : x));\n\tconst word_len = sigBytes / words.length;\n\n\treturn new Uint8Array(sigBytes).map((_, i) => (uwords[Math.floor(i / word_len)] >> ((3 - (i % word_len)) * 8)) & 0xff);\n};\n\ntype Hash = Uint8Array;\nconst HASH_LEN = 256;\n\nclass HashVector {\n\tfields: number[];\n\n\tstatic fromHash(hash: Hash): HashVector {\n\t\tconst fields = [];\n\t\tfor (const byte of hash) {\n\t\t\tfor (let b = 0; b < 8; ++b) fields.push((byte >> b) & 1 ? 1 : -1);\n\t\t}\n\n\t\treturn new HashVector(fields);\n\t}\n\n\tstatic fromString(source: string): HashVector {\n\t\tconst hash = SHA256(source);\n\t\treturn HashVector.fromHash(hash);\n\t}\n\n\tstatic fromWords(words: string[]): HashVector {\n\t\tconst vs = words.map((word) => HashVector.fromString(word));\n\t\treturn vs.reduce((sum, v) => sum.add(v), HashVector.zero);\n\t}\n\n\tstatic concat(...vectors: HashVector[]): HashVector {\n\t\tconst fields = vectors.map((v) => v.fields).flat(1);\n\n\t\treturn new HashVector(fields);\n\t}\n\n\tconstructor(fields: number[] | null = null) {\n\t\tthis.fields = fields || Array(HASH_LEN).fill(0);\n\t}\n\n\tget length(): number {\n\t\treturn this.fields.length;\n\t}\n\n\ttoHash(): Hash {\n\t\treturn Uint8Array.from(\n\t\t\tArray(this.length / 8)\n\t\t\t\t.fill(0)\n\t\t\t\t.map((_, i) => {\n\t\t\t\t\tconst bits = this.fields.slice(i * 8, (i + 1) * 8);\n\n\t\t\t\t\treturn bits.reduce((byte, bit, b) => byte | ((bit > 0 ? 1 : 0) << b), 0);\n\t\t\t\t})\n\t\t) as Hash;\n\t}\n\n\tadd(vec: HashVector): this {\n\t\tthis.fields.forEach((value, i) => (this.fields[i] = value + vec.fields[i]));\n\n\t\treturn this;\n\t}\n\n\tscale(factor: number): this {\n\t\tthis.fields = this.fields.map((value) => value * factor);\n\n\t\treturn this;\n\t}\n\n\tsub(crop: number): HashVector {\n\t\tconst fields = crop > 0 ? this.fields.slice(0, crop) : this.fields.slice(crop);\n\t\treturn new HashVector(fields);\n\t}\n\n\tstatic get zero(): HashVector {\n\t\treturn new HashVector();\n\t}\n}\n\nconst odds = (byte: number): number => {\n\tlet result = 0;\n\tfor (let b = byte; b > 0; b >>= 1) {\n\t\tif (b % 2) ++result;\n\t}\n\n\treturn result;\n};\nconst ODDS = Array(2 ** 8)\n\t.fill(0)\n\t.map((_, i) => odds(i));\nconst ODDS_HEX = ODDS.reduce((table, odd, i) => ({ ...table, [('0' + i.toString(16)).slice(-2)]: odd }), {});\n\nconst countOnes = (hash: Hash): number => hash.reduce((sum, byte) => sum + ODDS[byte], 0);\n\nconst xorHashes = (hash1: Hash, hash2: Hash): Hash => hash1.map((byte, i) => byte ^ hash2[i]) as Hash;\n\nconst cosHashes = (hash1: Hash, hash2: Hash): number => {\n\tconst len = hash1.length * 8;\n\n\tconst xor = xorHashes(hash1, hash2);\n\tconst ones = countOnes(xor);\n\n\treturn (len - ones * 2) / len;\n};\n\nconst cosBigInts = (hash1: bigint, hash2: bigint, len: number = HASH_LEN): number => {\n\tconst xor = hash1 ^ hash2;\n\tconst xor_hex = '0'.repeat(len / 4) + xor.toString(16);\n\n\tconst ones = Array(len / 8)\n\t\t.fill(0)\n\t\t.reduce((ones, _, i) => ones + ODDS_HEX[xor_hex.slice((i + 1) * -2, i ? i * -2 : undefined)], 0);\n\n\treturn (len - ones * 2) / len;\n};\n\nconst i2hex = (i) => ('0' + i.toString(16)).slice(-2);\nconst hashToHex = (hash: Hash): string => Array.from(hash).map(i2hex).join('');\n\nconst hexToHash = (hex: string): Hash =>\n\tUint8Array.from(\n\t\tArray(hex.length / 2)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => hex.substring(i * 2, (i + 1) * 2))\n\t\t\t.map((x) => parseInt(x, 16))\n\t);\n\nconst hashToBigInt = (hash: Hash): bigint => {\n\t// __NOT_FOR_BROWSER_\n\treturn Array.from(hash).reduce((r, x) => r * 0x100n + BigInt(x), 0n);\n\t/*\n\t// _NOT_FOR_BROWSER__\n\tthrow new Error('BigInt not supported');\n\t//*/\n};\n\nconst hashFromWords = (words: string[]): Hash => HashVector.fromWords(words).toHash();\n\nexport { Hash, HashVector, cosHashes, cosBigInts, hashToHex, hexToHash, hashToBigInt, hashFromWords };\n","var Sylvester = {}\n\nSylvester.Matrix = function () {}\n\nSylvester.Matrix.create = function (elements) {\n var M = new Sylvester.Matrix()\n return M.setElements(elements)\n}\n\nSylvester.Matrix.I = function (n) {\n var els = [],\n i = n,\n j\n while (i--) {\n j = n\n els[i] = []\n while (j--) {\n els[i][j] = i === j ? 1 : 0\n }\n }\n return Sylvester.Matrix.create(els)\n}\n\nSylvester.Matrix.prototype = {\n dup: function () {\n return Sylvester.Matrix.create(this.elements)\n },\n\n isSquare: function () {\n var cols = this.elements.length === 0 ? 0 : this.elements[0].length\n return this.elements.length === cols\n },\n\n toRightTriangular: function () {\n if (this.elements.length === 0) return Sylvester.Matrix.create([])\n var M = this.dup(),\n els\n var n = this.elements.length,\n i,\n j,\n np = this.elements[0].length,\n p\n for (i = 0; i < n; i++) {\n if (M.elements[i][i] === 0) {\n for (j = i + 1; j < n; j++) {\n if (M.elements[j][i] !== 0) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[i][p] + M.elements[j][p])\n }\n M.elements[i] = els\n break\n }\n }\n }\n if (M.elements[i][i] !== 0) {\n for (j = i + 1; j < n; j++) {\n var multiplier = M.elements[j][i] / M.elements[i][i]\n els = []\n for (p = 0; p < np; p++) {\n // Elements with column numbers up to an including the number of the\n // row that we're subtracting can safely be set straight to zero,\n // since that's the point of this routine and it avoids having to\n // loop over and correct rounding errors later\n els.push(\n p <= i ? 0 : M.elements[j][p] - M.elements[i][p] * multiplier\n )\n }\n M.elements[j] = els\n }\n }\n }\n return M\n },\n\n determinant: function () {\n if (this.elements.length === 0) {\n return 1\n }\n if (!this.isSquare()) {\n return null\n }\n var M = this.toRightTriangular()\n var det = M.elements[0][0],\n n = M.elements.length\n for (var i = 1; i < n; i++) {\n det = det * M.elements[i][i]\n }\n return det\n },\n\n isSingular: function () {\n return this.isSquare() && this.determinant() === 0\n },\n\n augment: function (matrix) {\n if (this.elements.length === 0) {\n return this.dup()\n }\n var M = matrix.elements || matrix\n if (typeof M[0][0] === 'undefined') {\n M = Sylvester.Matrix.create(M).elements\n }\n var T = this.dup(),\n cols = T.elements[0].length\n var i = T.elements.length,\n nj = M[0].length,\n j\n if (i !== M.length) {\n return null\n }\n while (i--) {\n j = nj\n while (j--) {\n T.elements[i][cols + j] = M[i][j]\n }\n }\n return T\n },\n\n inverse: function () {\n if (this.elements.length === 0) {\n return null\n }\n if (!this.isSquare() || this.isSingular()) {\n return null\n }\n var n = this.elements.length,\n i = n,\n j\n var M = this.augment(Sylvester.Matrix.I(n)).toRightTriangular()\n var np = M.elements[0].length,\n p,\n els,\n divisor\n var inverse_elements = [],\n new_element\n // Sylvester.Matrix is non-singular so there will be no zeros on the\n // diagonal. Cycle through rows from last to first.\n while (i--) {\n // First, normalise diagonal elements to 1\n els = []\n inverse_elements[i] = []\n divisor = M.elements[i][i]\n for (p = 0; p < np; p++) {\n new_element = M.elements[i][p] / divisor\n els.push(new_element)\n // Shuffle off the current row of the right hand side into the results\n // array as it will not be modified by later runs through this loop\n if (p >= n) {\n inverse_elements[i].push(new_element)\n }\n }\n M.elements[i] = els\n // Then, subtract this row from those above it to give the identity matrix\n // on the left hand side\n j = i\n while (j--) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[j][p] - M.elements[i][p] * M.elements[j][i])\n }\n M.elements[j] = els\n }\n }\n return Sylvester.Matrix.create(inverse_elements)\n },\n\n setElements: function (els) {\n var i,\n j,\n elements = els.elements || els\n if (elements[0] && typeof elements[0][0] !== 'undefined') {\n i = elements.length\n this.elements = []\n while (i--) {\n j = elements[i].length\n this.elements[i] = []\n while (j--) {\n this.elements[i][j] = elements[i][j]\n }\n }\n return this\n }\n var n = elements.length\n this.elements = []\n for (i = 0; i < n; i++) {\n this.elements.push([elements[i]])\n }\n return this\n },\n}\n\nmodule.exports = function (elements) {\n const mat = Sylvester.Matrix.create(elements).inverse()\n if (mat !== null) {\n return mat.elements\n } else {\n return null\n }\n}\n","import matrixInverse from 'matrix-inverse';\n\nimport { Fraction } from './interfaces';\nimport { fractionMul, reducedFraction, roundNumber } from './utils';\nimport { Logger, DummyLogger } from './logger';\n\ntype Matrix = number[][];\ntype EventID = number;\ntype Time = number;\ntype EventSet = Set;\ntype Equation = number[];\n\nconst EOM = -1; // end event id of measure\n\n//const GREAT_NUMBER = 16 * 9 * 5 * 7 * 11 * 13 * 17 * 19 * 23;\nconst GREAT_NUMBER = 1920;\n\nconst DURATION_MULTIPLIER = 128 * 3 * 5 * 7 * 11 * 13;\n\nconst floatToFrac = (x: number): Fraction => {\n\tconst n = Math.round(x * GREAT_NUMBER);\n\n\treturn reducedFraction(n, GREAT_NUMBER);\n};\n\nconst floatToTimeWarp = (x: number): Fraction => {\n\tif (x === 1) return null;\n\n\treturn floatToFrac(x);\n};\n\ninterface Stage {\n\tevents: EventID[];\n\tindex?: number;\n\ttick?: Time;\n}\n\nenum ActionType {\n\tPLACE,\n\tVERTICAL,\n\tHORIZONTAL,\n}\n\nclass Action {\n\ttype: ActionType;\n\te1: EventID;\n\te2?: EventID;\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tstatic P(e: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.PLACE,\n\t\t\te1: e,\n\t\t});\n\t}\n\n\tstatic V(e1: EventID, e2: EventID, order: number = 1): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.VERTICAL,\n\t\t\te1: order > 0 ? e1 : e2,\n\t\t\te2: order > 0 ? e2 : e1,\n\t\t});\n\t}\n\n\tstatic H(e1: EventID, e2: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.HORIZONTAL,\n\t\t\te1,\n\t\t\te2,\n\t\t});\n\t}\n\n\tget id(): string {\n\t\tswitch (this.type) {\n\t\t\tcase ActionType.PLACE:\n\t\t\t\treturn this.e1.toString();\n\n\t\t\tcase ActionType.VERTICAL:\n\t\t\t\treturn `${this.e1}|${this.e2}`;\n\n\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\treturn `${this.e1}-${this.e2 >= 0 ? this.e2 : '.'}`;\n\t\t}\n\t}\n\n\tget events(): EventID[] {\n\t\treturn [this.e1, this.e2].filter(Number.isFinite);\n\t}\n}\n\ninterface Quota {\n\tcredits: number;\n}\n\ninterface BasicEvent {\n\tid: EventID;\n\tconfidence: number;\n\tshrinkness: number; // the possibility of time warp\n\tx: number;\n\tstaff?: number;\n\tduration: Time;\n}\n\ninterface Event extends BasicEvent {\n\tlowWarp: number;\n}\n\ninterface EventResult {\n\tid: EventID;\n\ttick: Time;\n\tendTick: Time;\n\ttickGroup: number;\n\ttimeWarp?: Fraction;\n}\n\ninterface Environment {\n\tevents: BasicEvent[];\n\texpectedDuration: Time;\n\tmeasureShrinkness: number;\n\tendX: number;\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n}\n\ninterface Solution {\n\tevents: EventResult[];\n\tvoices: EventID[][];\n\tduration: number;\n\n\tloss?: number;\n\tactions?: string;\n\tcredits?: number;\n\ttimes?: number;\n}\n\ninterface Status {\n\tactionAccessing: Map;\n\teventMap: { [id: number]: Event };\n\teventTendencies: number[];\n\tmatrixH: Matrix; // matrix N+1 x N\t\t[right][left]\n\tmatrixV: Matrix; // matrix N x N\n}\n\ninterface NodeBranch {\n\taction: Action;\n\tpossibility: number;\n}\n\ntype Path = EventID[];\n\ninterface InbalanceEquations {\n\tones: boolean[];\n\tinbalances: Equation[];\n}\n\ninterface SolverOptions {\n\tquota?: number;\n\tlogger?: Logger;\n}\n\nclass StageMatrix {\n\tmatrix: EventSet[][];\n\n\tstatic fromNode(node: PathNode, status: Status): StageMatrix {\n\t\tconst matrix = Array(node.stages.length)\n\t\t\t.fill(null)\n\t\t\t.map(() =>\n\t\t\t\tArray(node.stages.length)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => new Set())\n\t\t\t);\n\n\t\tnode.actions\n\t\t\t.filter((action) => action.type === ActionType.HORIZONTAL)\n\t\t\t.forEach((action) => {\n\t\t\t\tconst stage1 = node.stages.findIndex((stage) => stage.events.includes(action.e1));\n\t\t\t\tconst stage2 = node.stages.findIndex((stage) => stage.events.includes(action.e2));\n\t\t\t\tconsole.assert(stage1 >= 0 && stage2 >= 0, 'invalid stages for H action:', node.id, node.stages, action);\n\n\t\t\t\tmatrix[stage1][stage2].add(action.e1);\n\t\t\t});\n\t\tmatrix[0][node.stages.length - 1].add(0); // the entire measure edge\n\n\t\tconst stagedEvents = node.stagedEvents;\n\t\tconst endHs = status.matrixH[status.matrixH.length - 1].filter((_, i) => !stagedEvents.has(i));\n\t\tconst endHP = Math.max(0, Math.max(...endHs) - 0.01);\n\n\t\tconst hActions = node.actions.filter((action) => action.type === ActionType.HORIZONTAL);\n\n\t\tconst pendingHeads = Object.keys(status.eventMap)\n\t\t\t.map(Number)\n\t\t\t.filter((eid) => !hActions.find((action) => action.e2 === eid));\n\n\t\t// edges to end stage\n\t\tnode.stages.forEach((stage) => {\n\t\t\tstage.events.forEach((eid) => {\n\t\t\t\tif (eid > 0) {\n\t\t\t\t\tconst act = hActions.find((action) => action.e1 === eid);\n\t\t\t\t\tif (!act && status.matrixH[status.matrixH.length - 1][eid] >= endHP) {\n\t\t\t\t\t\tif (!pendingHeads.some((id) => status.matrixH[id][eid] > 0)) matrix[stage.index][node.stages.length - 1].add(eid);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn new StageMatrix({ matrix });\n\t}\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tpathOf(x: number, y: number, target: number, ei: number = 0): Path {\n\t\tif (this.matrix[x][y].size) {\n\t\t\tconst eid = [...this.matrix[x][y]][ei];\n\t\t\tif (y === target) return [eid];\n\n\t\t\tfor (let yy = y + 1; yy <= target; ++yy) {\n\t\t\t\tconst sub = this.pathOf(y, yy, target);\n\t\t\t\tif (sub) return [eid, ...sub];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfindDoublePath(s1: number, s2: number): [Path, Path] {\n\t\tconst paths = [];\n\t\tfor (let t = s2; t >= s1 + 1; --t) {\n\t\t\tfor (let ei = 0; ei < this.matrix[s1][t].size; ++ei) {\n\t\t\t\tconst path = this.pathOf(s1, t, s2, ei);\n\t\t\t\tif (path) {\n\t\t\t\t\tpaths.push(path);\n\t\t\t\t\tif (paths.length === 2) return [paths[0], paths[1]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\treducePath(path: Path): void {\n\t\tthis.matrix.forEach((column) => column.forEach((set) => path.forEach((id) => set.delete(id))));\n\t}\n\n\ttoEquations(eventCount: number): Equation[] {\n\t\tconst equations: Equation[] = [];\n\n\t\tfor (let d = 1; d < this.matrix.length; d++) {\n\t\t\tfor (let s1 = 0; s1 < this.matrix.length - d; s1++) {\n\t\t\t\tconst s2 = s1 + d;\n\n\t\t\t\twhile (true) {\n\t\t\t\t\t// find closed loop from s1 to s2\n\t\t\t\t\tconst paths = this.findDoublePath(s1, s2);\n\t\t\t\t\tif (paths) {\n\t\t\t\t\t\tconst [path1, path2] = paths;\n\t\t\t\t\t\tconst equation = Array(eventCount).fill(0);\n\t\t\t\t\t\tpath1.forEach((eid) => (equation[eid] = 1));\n\t\t\t\t\t\tpath2.forEach((eid) => (equation[eid] = -1));\n\t\t\t\t\t\tequations.push(equation);\n\n\t\t\t\t\t\tthis.reducePath(path1.length > path2.length ? path1 : path2);\n\t\t\t\t\t} else break;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn equations;\n\t}\n}\n\nclass PathNode {\n\tlogger: Logger;\n\n\tparent: PathNode;\n\taction: Action;\n\tpossibility: number;\n\tchildren: PathNode[];\n\n\tstages: Stage[];\n\t//stageMatrix: StageMatrix;\n\tconstraints: Equation[];\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\n\t\tconsole.assert(this.logger, 'logger is null:', data);\n\t}\n\n\tget actions(): Action[] {\n\t\tconst last = this.parent ? this.parent.actions : [];\n\t\treturn this.action ? [...last, this.action] : last;\n\t}\n\n\tget id(): string {\n\t\tconst actionIds = this.actions.map((action) => action.id).sort();\n\t\treturn actionIds.join(' ');\n\t}\n\n\tget stagedEvents(): Set {\n\t\tconst set = new Set();\n\t\tif (this.stages) this.stages.forEach((stage) => stage.events.forEach((eid) => eid >= 0 && set.add(eid)));\n\n\t\treturn set;\n\t}\n\n\tlike(ids: string): boolean {\n\t\tconst actionIds = ids.split(' ').sort();\n\t\treturn actionIds.join(' ') === this.id;\n\t}\n\n\tconstructStages(status: Status): void {\n\t\tthis.stages = [{ events: [EOM] }];\n\n\t\tfor (const action of this.actions) {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase ActionType.PLACE:\n\t\t\t\t\tthis.stages.unshift({ events: [action.e1] });\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.VERTICAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid V action:', this.stages, action);\n\n\t\t\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\t\t\tstage1.events.push(...stage2.events);\n\t\t\t\t\t\t\tstage2.events = null;\n\t\t\t\t\t\t\tthis.stages = this.stages.filter((stage) => stage.events);\n\t\t\t\t\t\t} else if (!stage1) stage2.events.unshift(action.e1);\n\t\t\t\t\t\telse if (!stage2) stage1.events.push(action.e2);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid H action:', this.stages, action);\n\n\t\t\t\t\t\tconst newStage = (eid) => {\n\t\t\t\t\t\t\tconsole.assert(status.eventMap[eid], 'invalid event id:', action.id, eid, status.eventMap);\n\t\t\t\t\t\t\tconst x = status.eventMap[eid].x;\n\n\t\t\t\t\t\t\tconst stage = this.stages.find(\n\t\t\t\t\t\t\t\t(s) => s.events.some((e) => e > 0 && status.eventMap[e].x <= x) && s.events.some((e) => e > 0 && status.eventMap[e].x >= x)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (stage) stage.events.push(eid);\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconst newStage = { events: [eid] };\n\t\t\t\t\t\t\t\tconst si = this.stages.findIndex((s) => s.events[0] === EOM || status.eventMap[s.events[0]].x >= x);\n\t\t\t\t\t\t\t\tthis.stages.splice(si, 0, newStage);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (!stage1) newStage(action.e1);\n\t\t\t\t\t\tif (!stage2) newStage(action.e2);\n\n\t\t\t\t\t\t/*if (this.stages.some((s, si) => si < this.stages.length - 2\n\t\t\t\t\t&& s.events.some(e1 => this.stages[si + 1].events.some(e2 => status.eventMap[e2].x <= status.eventMap[e1].x))))\n\t\t\t\t\tdebugger;*/\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.stages.forEach((stage, i) => (stage.index = i));\n\t}\n\n\tconstructConstraints(status: Status): void {\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst stageMatrix = StageMatrix.fromNode(this, status);\n\t\tconst equations = stageMatrix.toEquations(eventCount);\n\n\t\tconst factors = Array(eventCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, id) => status.eventMap[id].duration);\n\t\tthis.constraints = equations.map((equation) => equation.map((it, i) => it * factors[i]));\n\t}\n\n\tinbalancesConstraints(status: Status): InbalanceEquations {\n\t\tconsole.assert(this.constraints, 'constraints not constructed.');\n\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst ones = Array(eventCount).fill(true);\n\t\tconst fixed = Array(eventCount).fill(false);\n\n\t\tconst inbalances: Equation[] = [];\n\n\t\tfor (const constraint of this.constraints) {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum !== 0) {\n\t\t\t\tconst c = sum < 0 ? constraint.map((it) => -it) : constraint;\n\t\t\t\tif (c[0] > 0) continue; // entire measure edge usually is larger than others, no effect\n\n\t\t\t\tinbalances.push(c);\n\n\t\t\t\t// set ones for tight items\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tfixed[i] = fixed[i] || it < 0;\n\t\t\t\t\tif (it) ones[i] = it < 0 || fixed[i];\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// pick out influenced equations\n\t\tthis.constraints.forEach((constraint) => {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum === 0 && !constraint[0]) {\n\t\t\t\tif (constraint.some((it, i) => it && !ones[i])) {\n\t\t\t\t\tconstraint.forEach((it, i) => it && (ones[i] = false));\n\t\t\t\t\tinbalances.push(constraint);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn { ones, inbalances };\n\t}\n\n\tsolveEquations({ ones, inbalances }: InbalanceEquations): number[] {\n\t\tif (!inbalances.length) return ones.map(() => 1);\n\n\t\tconst xis = ones\n\t\t\t.map((fixed, i) => ({ fixed, i }))\n\t\t\t.filter(({ fixed }) => !fixed)\n\t\t\t.map(({ i }) => i)\n\t\t\t.filter((i) => inbalances.some((items) => items[i] !== 0));\n\t\tif (!xis.length) return ones.map(() => 1);\n\n\t\tconst factors = xis.map((i) => Math.abs(inbalances.find((items) => items[i] !== 0)[i]));\n\n\t\ttype Line = { line: number[]; bias: number };\n\n\t\tconst equationMap = new Map();\n\t\tlet conflicted = false;\n\n\t\tconst lines: Line[] = inbalances\n\t\t\t.map((items) => {\n\t\t\t\tconst line = items.filter((_, i) => xis.includes(i));\n\t\t\t\tconst bias = -items.reduce((sum, it, i) => sum + (xis.includes(i) ? 0 : it), 0);\n\n\t\t\t\treturn { line, bias };\n\t\t\t\t// remove duplicated equations\n\t\t\t})\n\t\t\t.filter(({ line, bias }) => {\n\t\t\t\tif (line.every((it) => it === 0)) return false;\n\n\t\t\t\tconst id = line.join(',');\n\t\t\t\tif (equationMap.has(id)) {\n\t\t\t\t\tconflicted = equationMap.get(id) !== bias;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tequationMap.set(id, bias);\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tif (conflicted) return null;\n\n\t\tconst squareLines = lines.slice(0, xis.length);\n\t\tconst restLines = lines.slice(xis.length);\n\t\tif (squareLines.length < xis.length) {\n\t\t\tconst candidateLines = [];\n\t\t\tfor (let i1 = 0; i1 < xis.length - 1; ++i1) {\n\t\t\t\tconst i2 = i1 + 1;\n\t\t\t\tconst line = {\n\t\t\t\t\tline: xis.map((_, i) => (i === i1 ? 1 : i === i2 ? -1 : 0)),\n\t\t\t\t\tbias: 0,\n\t\t\t\t\tprior: (factors[i1] + factors[i2]) / DURATION_MULTIPLIER,\n\t\t\t\t};\n\t\t\t\tif (squareLines.some((sl) => sl.line[i1] && sl.line[i2])) line.prior -= 10;\n\t\t\t\tif (squareLines.some((sl) => sl.line.filter(Number).length === 1 && (sl.line[i1] || sl.line[i2]))) line.prior += 1;\n\t\t\t\tcandidateLines.push(line);\n\t\t\t}\n\t\t\tcandidateLines.sort((c1, c2) => c1.prior - c2.prior);\n\n\t\t\tsquareLines.push(...candidateLines.slice(0, xis.length - squareLines.length));\n\t\t}\n\t\t//console.assert(squareLines.length, \"squareLines is empty.\", lines, xis, equationMap, inbalances);\n\n\t\tconst matrix = squareLines.map(({ line }) => line);\n\t\tconst bias = squareLines.map(({ bias }) => bias);\n\n\t\tconst invert = matrixInverse(matrix);\n\t\tif (!invert) {\n\t\t\tthis.logger.warn('null invert:', matrix);\n\t\t\t//debugger;\n\t\t\treturn null;\n\t\t}\n\t\tconst solution = invert.map((row) => row.reduce((sum, it, i) => sum + it * bias[i], 0));\n\t\t//console.log(\"solution:\", matrix, invert, solution);\n\n\t\tif (restLines.length) {\n\t\t\tif (restLines.some((line) => Math.abs(line.line.reduce((sum, it, i) => sum + it * solution[i], 0)) > 1e-3)) {\n\t\t\t\t//console.debug(\"rest lines not satisfied:\", restLines, solution);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tconst result = ones.map(() => 1);\n\t\txis.forEach((xi, i) => (result[xi] = solution[i]));\n\n\t\treturn result;\n\t}\n\n\toptimallySolve(status: Status): number[] {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 1-2 9|1 2-3 3-4 9-10 4-5 5-6 6-7 7-8 8-. 12|6 11-12 10-11\"))\n\t\t//\tdebugger;\n\n\t\tconst shrinknesses = ones.map((fixed, id) => (fixed ? -1 : roundNumber(status.eventMap[id].shrinkness, 0.01)));\n\t\tconst shrinkMap = shrinknesses.reduce((map, shrinkness, id) => {\n\t\t\tif (shrinkness >= 0) {\n\t\t\t\tmap[shrinkness] = map[shrinkness] || [];\n\t\t\t\tmap[shrinkness].push(id);\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t\tconst groups = Object.entries(shrinkMap)\n\t\t\t.sort((p1, p2) => Number(p2[0]) - Number(p1[0]))\n\t\t\t.map((pair) => pair[1]);\n\t\t//console.log(\"groups:\", groups, shrinknesses);\n\n\t\tfor (let released = 1; released < groups.length; ++released) {\n\t\t\tconst releasedIds = [].concat(...groups.slice(0, released));\n\t\t\tconst fixed = ones.map((_, id) => !releasedIds.includes(id));\n\t\t\tconst warps = this.solveEquations({ ones: fixed, inbalances });\n\n\t\t\tif (warps && warps.every((it, i) => it <= 1 && it > status.eventMap[i].lowWarp)) return warps;\n\t\t}\n\n\t\treturn this.solveEquations({ ones, inbalances });\n\t}\n\n\tisConflicted(status: Status): boolean {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 8|2 8-9 3|9 2-3 3-4 10|4 4-5 5|11 11-12 6|12 5-6 10-11 9-10 6-7\"))\n\t\t//\tdebugger;\n\n\t\tfor (const c of inbalances) {\n\t\t\t// sum with low warps\n\t\t\tconst lowSum = c.reduce((sum, it, i) => sum + it * (ones[i] || it <= 0 ? 1 : status.eventMap[i].lowWarp), 0);\n\n\t\t\tif (lowSum >= 0) {\n\t\t\t\t// mark events' broken tendency\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tif (it) status.eventTendencies[i] += it > 0 ? 1 : -1;\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (!inbalances.length) return false;\n\n\t\tconst timeWarps = this.solveEquations({ ones, inbalances });\n\t\tif (!timeWarps) return true;\n\n\t\treturn !timeWarps.every((it, i) => it > status.eventMap[i].lowWarp && it <= 1);\n\t}\n\n\tgetSolution(status: Status): Solution {\n\t\tconst actionKey = (action) =>\n\t\t\tstatus.eventMap[action.e2]\n\t\t\t\t? status.eventMap[action.e2].x + Math.abs(status.eventMap[action.e2].x - status.eventMap[action.e1].x) * 0.06\n\t\t\t\t: status.eventMap[action.e1].x + 1e4;\n\t\tconst hacts = this.actions.filter((action) => action.type === ActionType.HORIZONTAL).sort((a1, a2) => actionKey(a1) - actionKey(a2));\n\t\tconst hmap = hacts.reduce((map, act) => ({ ...map, [act.e1]: act.e2 }), {});\n\t\tconst startEs = new Set([...Object.keys(hmap)].map(Number));\n\t\thacts.forEach((act) => startEs.delete(act.e2));\n\t\tthis.stages[0].events.forEach((eid) => eid > 0 && startEs.add(eid));\n\n\t\tlet voices = [...startEs].map((se) => {\n\t\t\tconst voice = [se];\n\n\t\t\tlet x = se;\n\t\t\twhile (hmap[x]) {\n\t\t\t\tx = hmap[x];\n\t\t\t\tif (x < 0 || voice.includes(x)) break;\n\n\t\t\t\tvoice.push(x);\n\t\t\t}\n\n\t\t\treturn voice;\n\t\t});\n\n\t\tconst events: EventResult[] = Object.values(status.eventMap)\n\t\t\t.filter((e) => e.id > 0)\n\t\t\t.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\ttick: null,\n\t\t\t\tendTick: null,\n\t\t\t\ttickGroup: null,\n\t\t\t\ttimeWarp: null,\n\t\t\t}));\n\t\tconst eventMap: { [id: number]: EventResult } = events\n\t\t\t.filter((e) => voices.some((voice) => voice.includes(e.id)) || hacts.some((act) => [act.e1, act.e2].includes(e.id)))\n\t\t\t.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.stages.forEach((stage, si) => stage.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tickGroup = si)));\n\n\t\tthis.stages[0].tick = 0;\n\t\tthis.stages[0].events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = 0));\n\n\t\t// solve time warps\n\t\tconst timeWarps = this.optimallySolve(status);\n\t\tevents.forEach((e) => (e.timeWarp = floatToTimeWarp(timeWarps[e.id])));\n\n\t\t//if (this.like(\"1 12|1 1-2 9|2 2-3 13|3 3-4 4-5 10|5 14|10 10-11 8-9 14-15 15|6 6-7 7-. 13-14 5-6 12-13 9-10\"))\n\t\t//\tdebugger;\n\n\t\t// solve stage ticks\n\t\tconst estages = this.stages.slice(0, this.stages.length - 1);\n\t\tconst solveStages = (): boolean => {\n\t\t\tif (estages.every((stage) => Number.isFinite(stage.tick))) return false;\n\n\t\t\tlet changed = false;\n\n\t\t\t// forward\n\t\t\thacts.forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (Number.isFinite(stage1.tick) && !Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage2.tick = stage1.tick + fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage2.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage2.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// backward\n\t\t\t[...hacts].reverse().forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (!Number.isFinite(stage1.tick) && Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage1.tick = stage2.tick - fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage1.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage1.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn changed;\n\t\t};\n\t\twhile (solveStages());\n\n\t\tconsole.assert(\n\t\t\testages.every((stage) => Number.isFinite(stage.tick)),\n\t\t\t'stage ticks not all solved:',\n\t\t\tthis.stages,\n\t\t\tthis.id\n\t\t);\n\t\tevents\n\t\t\t.filter((event) => Number.isFinite(event.tick))\n\t\t\t.forEach((event) => (event.endTick = event.tick + fractionMul(status.eventMap[event.id].duration, event.timeWarp)));\n\n\t\t// clip out of bound events\n\t\tconst measureDuration = status.eventMap[0].duration;\n\t\tvoices.forEach((voice) => {\n\t\t\tconst outEI = voice.findIndex((eid) => eventMap[eid].endTick > measureDuration);\n\t\t\tif (outEI >= 0) {\n\t\t\t\tconst es = voice.splice(outEI, voice.length - outEI);\n\t\t\t\tes.forEach((eid) => {\n\t\t\t\t\teventMap[eid].tick = null;\n\t\t\t\t\teventMap[eid].endTick = null;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tvoices = voices.filter((voice) => voice.length);\n\n\t\tconst duration = Math.max(0, ...events.map((e) => e.endTick).filter(Number.isFinite));\n\t\t//console.log(\"getSolution:\", this);\n\t\tthis.logger.debug(String.fromCodePoint(0x1f34e), this.id, timeWarps);\n\n\t\treturn {\n\t\t\tvoices,\n\t\t\tevents,\n\t\t\tduration,\n\t\t\tactions: this.actions.map((action) => action.id).join(' '),\n\t\t};\n\t}\n\n\tdeduce(status: Status, quota: Quota): Solution {\n\t\tif (!this.stages) this.constructStages(status);\n\t\t//console.log(\"deduce:\", status);\n\n\t\t// increase access counting\n\t\tconst access = status.actionAccessing.get(this.id) || { times: 0 };\n\t\t++access.times;\n\t\tstatus.actionAccessing.set(this.id, access);\n\n\t\tthis.constructConstraints(status);\n\t\t//console.log(\"constraints:\", this.id, this.stages, this.constraints);\n\n\t\tif (this.isConflicted(status)) {\n\t\t\taccess.closed = true;\n\t\t\tthis.logger.info(this.action.id, '\\u274c');\n\t\t\treturn null;\n\t\t}\n\n\t\t//const newStatus = status;\n\t\tthis.logger.group(this.action && this.action.id);\n\n\t\tif (quota.credits > 0) {\n\t\t\t--quota.credits;\n\n\t\t\tif (!this.children) this.expand(status);\n\n\t\t\tthis.children = this.children.filter((node) => !status.actionAccessing.get(node.id) || !status.actionAccessing.get(node.id).closed);\n\t\t\tif (this.children.length) {\n\t\t\t\tconst p = (node: PathNode): number => node.possibility / ((status.actionAccessing.get(node.id) || { times: 0 }).times + 1);\n\t\t\t\tthis.children.sort((n1, n2) => p(n2) - p(n1));\n\n\t\t\t\tfor (const child of this.children) {\n\t\t\t\t\tconst solution = child.deduce(status, quota);\n\t\t\t\t\tif (solution) {\n\t\t\t\t\t\tthis.logger.groupEnd();\n\t\t\t\t\t\treturn solution;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (quota.credits <= 0) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"got the leaf:\", this, status);\n\t\t} else this.logger.debug('quota exhausted.');\n\n\t\tthis.logger.groupEnd();\n\n\t\taccess.closed = true;\n\n\t\treturn this.getSolution(status);\n\t}\n\n\texpand(status: Status): void {\n\t\t//this.action.events.forEach(eid => status.pendingEvents.delete(eid));\n\t\tthis.constructStages(status);\n\n\t\tconst { eventMap, matrixV, matrixH } = status;\n\t\tconst stagedEvents = this.stagedEvents;\n\n\t\tconst branches: NodeBranch[] = [];\n\t\tconst appendBranch = (branch: NodeBranch): void => {\n\t\t\tif (!this.actions.some((a) => a.id === branch.action.id) && !branches.some((b) => b.action.id === branch.action.id)) {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(branch.action.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(branch.action.e2));\n\t\t\t\tif (stage1 === stage2 || (stage1 && stage2 && stage1.index >= stage2.index)) return;\n\n\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\t\tif (stage2.index - stage1.index > 1) return;\n\t\t\t\t\t\tif (this.actions.some((a) => stage1.events.includes(a.e1) && stage2.events.includes(a.e2))) return;\n\t\t\t\t\t} else if (branch.action.type === ActionType.HORIZONTAL) {\n\t\t\t\t\t\tif (stage1.index > stage2.index) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tbranch.action.type === ActionType.HORIZONTAL &&\n\t\t\t\t\tthis.actions.some(\n\t\t\t\t\t\t(a) =>\n\t\t\t\t\t\t\ta.type === ActionType.HORIZONTAL &&\n\t\t\t\t\t\t\t(a.e1 === branch.action.e1 || a.e2 === branch.action.e2 || (a.e1 === branch.action.e2 && a.e2 === branch.action.e1))\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\treturn;\n\n\t\t\t\t// exclude 2 too far away events by vertical\n\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\tif (stage1) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage1.events.map((e) => matrixV[branch.action.e2][e]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (stage2) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage2.events.map((e) => matrixV[e][branch.action.e1]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbranches.push(branch);\n\t\t\t}\n\t\t};\n\n\t\tfor (const eid of stagedEvents) {\n\t\t\tif (eid < 0) continue;\n\n\t\t\tmatrixV[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0 && eid !== id) appendBranch({ action: Action.V(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixV.forEach((ps, id) => {\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.V(eid, id), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH.forEach((ps, id) => {\n\t\t\t\tid = id >= Object.keys(eventMap).length ? -1 : id;\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(eid, id), possibility: p });\n\t\t\t});\n\t\t}\n\n\t\t// If branches not contains extending actions, clear it.\n\t\t//\tBecause pure inner vertical action may be harmful\n\t\tif (\n\t\t\t!branches.some(\n\t\t\t\t(branch) =>\n\t\t\t\t\t[ActionType.HORIZONTAL, ActionType.PLACE].includes(branch.action.type) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e1) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e2)\n\t\t\t)\n\t\t) {\n\t\t\tthis.children = [];\n\t\t\treturn;\n\t\t}\n\n\t\t//console.table(branches.map(b => [b.action.id, b.possibility]));\n\t\t//console.log(\"branches:\", branches.map(b => b.action.id).join(\", \"), \"\\n\", this.actions.map(a => a.id).join(\", \"));\n\t\tthis.children = branches.map((branch) => new PathNode({ logger: this.logger, parent: this, ...branch }));\n\t}\n}\n\nclass Solver {\n\tquota: number;\n\tlogger: Logger;\n\n\tevents: Event[];\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n\txSpan: number;\n\n\teventMap: { [id: number]: Event };\n\tactionAccessing: Map;\n\n\tpathRoot: PathNode;\n\n\tconstructor(env: Environment, { quota = 1000, logger = new DummyLogger() }: SolverOptions = {}) {\n\t\tthis.quota = quota;\n\t\tthis.logger = logger;\n\n\t\tconst event0 = {\n\t\t\tid: 0,\n\t\t\tx: 0,\n\t\t\tconfidence: 1,\n\t\t\tshrinkness: env.measureShrinkness,\n\t\t\tduration: env.expectedDuration,\n\t\t\tlowWarp: 0,\n\t\t};\n\n\t\tthis.events = [\n\t\t\tevent0,\n\t\t\t...env.events.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\tx: e.x,\n\t\t\t\tconfidence: e.confidence,\n\t\t\t\tshrinkness: e.shrinkness,\n\t\t\t\tstaff: e.staff,\n\t\t\t\tduration: e.duration,\n\t\t\t\tlowWarp: 0.5,\n\t\t\t})),\n\t\t];\n\t\tthis.eventMap = this.events.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.matrixH = env.matrixH;\n\t\tthis.matrixV = env.matrixV;\n\n\t\tthis.xSpan = env.endX - Math.min(env.endX - 1, ...env.events.map((e) => e.x));\n\n\t\tthis.actionAccessing = new Map();\n\t}\n\n\tsolve(): Solution {\n\t\t// construct path root\n\t\tthis.pathRoot = new PathNode({\n\t\t\tlogger: this.logger,\n\t\t\taction: null,\n\t\t});\n\t\tthis.pathRoot.children = this.events.slice(1).map(\n\t\t\t(event) =>\n\t\t\t\tnew PathNode({\n\t\t\t\t\tlogger: this.logger,\n\t\t\t\t\tparent: this.pathRoot,\n\t\t\t\t\taction: Action.P(event.id),\n\t\t\t\t\tpossibility: this.matrixV[event.id].reduce((sum, p) => sum + p, 0),\n\t\t\t\t})\n\t\t);\n\n\t\tlet bestSolution: Solution = null;\n\n\t\tthis.logger.groupCollapsed('solve');\n\n\t\tconst eventTendencies = Array(this.events.length).fill(0);\n\n\t\tconst quota = { credits: this.quota, times: 0 };\n\t\twhile (quota.credits > 0) {\n\t\t\t++quota.times;\n\n\t\t\tconst status = {\n\t\t\t\teventMap: this.eventMap,\n\t\t\t\tmatrixH: this.matrixH,\n\t\t\t\tmatrixV: this.matrixV,\n\t\t\t\tactionAccessing: this.actionAccessing,\n\t\t\t\teventTendencies,\n\t\t\t};\n\n\t\t\tconst solution = this.pathRoot.deduce(status, quota);\n\t\t\tsolution.credits = this.quota - quota.credits;\n\t\t\tsolution.times = quota.times;\n\t\t\tthis.evaluateSolution(solution);\n\t\t\tthis.logger.debug('loss:', solution.loss);\n\n\t\t\tbestSolution = !bestSolution || solution.loss < bestSolution.loss ? solution : bestSolution;\n\t\t\tif (!bestSolution.loss) break;\n\n\t\t\t// check if searching tree traversed\n\t\t\tif (this.actionAccessing.get('').closed) break;\n\t\t}\n\n\t\tthis.logger.groupEnd();\n\t\tthis.logger.debug('solution', bestSolution && bestSolution.loss, bestSolution);\n\t\tthis.logger.debug('cost:', this.quota - quota.credits);\n\n\t\tthis.logger.debug(\n\t\t\t'eventTendencies:',\n\t\t\teventTendencies.map((t) => t / quota.times)\n\t\t);\n\n\t\treturn bestSolution;\n\t}\n\n\tevaluateSolution(solution: Solution): void {\n\t\tsolution.loss = 0;\n\n\t\ttype EventR = Event & EventResult;\n\t\tconst eventMap: Record = solution.events.reduce((map, e) => ({ ...map, [e.id]: { ...e, ...this.eventMap[e.id] } }), {});\n\n\t\t/*// minus tick\n\t\tconst minuses = solution.events.filter((e) => e.tick < 0).length;\n\t\tsolution.loss += minuses * 1000;*/\n\n\t\t// minus tick rates penalty\n\t\tconst events = solution.events.filter((event) => Number.isFinite(event.tick)).map((event) => eventMap[event.id]);\n\t\tconst sevents: Record = events.reduce((map, event) => {\n\t\t\tmap[event.staff] = map[event.staff] || [];\n\t\t\tmap[event.staff].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\t\tObject.values(sevents).forEach((es) => {\n\t\t\tconst ses = es.sort((e1, e2) => e1.x - e2.x).slice(0, es.length - 1);\n\t\t\tses.forEach((e1, i) => {\n\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\tif (e2.tick < e1.tick) solution.loss += 1000;\n\t\t\t});\n\t\t});\n\n\t\tconst times = new Map();\n\t\tsolution.events.forEach((event) => {\n\t\t\tif (!Number.isFinite(event.tick) || solution.voices.every((voice) => !voice.includes(event.id)))\n\t\t\t\tsolution.loss += 100 * eventMap[event.id].confidence;\n\n\t\t\tif (event.timeWarp) {\n\t\t\t\tconst { numerator, denominator } = event.timeWarp;\n\t\t\t\tconst shrinkness = eventMap[event.id].shrinkness;\n\t\t\t\ttimes.set(numerator, Math.max(times.get(numerator) || 0, 1 - shrinkness));\n\t\t\t\ttimes.set(denominator, Math.max(times.get(denominator) || 0, 1 - shrinkness));\n\t\t\t}\n\t\t});\n\n\t\t// partial measure penalty\n\t\tconst partialFrac = reducedFraction(solution.duration, this.eventMap[0].duration);\n\t\ttimes.set(partialFrac.numerator, Math.max(times.get(partialFrac.numerator) || 0, 1 - this.eventMap[0].shrinkness));\n\t\ttimes.set(partialFrac.denominator, Math.max(times.get(partialFrac.denominator) || 0, 1 - this.eventMap[0].shrinkness));\n\n\t\tfor (const [n, weight] of times.entries()) {\n\t\t\tif (n > 1) solution.loss += Math.log(n) * weight;\n\t\t}\n\n\t\tlet spaceTime = 0;\n\t\tlet staffAlters = 0;\n\t\tsolution.voices.forEach((voice) => {\n\t\t\tconsole.assert(eventMap[voice[0]], 'invalid voice:', voice, Object.keys(eventMap));\n\n\t\t\tconst start = Math.abs(eventMap[voice[0]].tick); // abs: penalty for minus start\n\t\t\tconst end = eventMap[voice[voice.length - 1]].endTick;\n\n\t\t\tspaceTime += Math.max(0, start + solution.duration - end);\n\n\t\t\t// staff alternation penalty\n\t\t\tlet staff = null;\n\t\t\tvoice.forEach((id) => {\n\t\t\t\tconst event = eventMap[id];\n\t\t\t\tif (event.staff !== staff) {\n\t\t\t\t\tif (staff !== null) ++staffAlters;\n\t\t\t\t\tstaff = event.staff;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tsolution.loss += (spaceTime * 10) / DURATION_MULTIPLIER;\n\t\tsolution.loss += 5 ** staffAlters - 1;\n\n\t\t// tick twist\n\t\tconst eventsXOrder = [...events].sort((e1, e2) => e1.x - e2.x);\n\t\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\t\tconst e1 = eventsXOrder[i];\n\t\t\tconst dx = e2.x - e1.x;\n\t\t\tconst dt = e2.tick - e1.tick;\n\n\t\t\tif (!dt) return dx / this.xSpan;\n\n\t\t\tconst rate = Math.atan2(dt / solution.duration, dx / this.xSpan);\n\n\t\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t\t});\n\t\tconst tickTwist = Math.max(...tickTwists, 0);\n\t\tsolution.loss += tickTwist ** 2;\n\n\t\tconsole.assert(solution.loss >= 0, 'Invalid solution loss!!!', solution.loss, times, spaceTime, staffAlters);\n\t\tif (solution.loss < 0) solution.loss = Infinity;\n\t}\n}\n\nexport { SolverOptions, Solver };\n","import { EventFeature, BackgroundImage, EventPredisposition } from './interfaces';\nimport { StemBeam } from './term';\nimport { SimpleClass } from './aux_/typedJSON';\n\nenum EventElementType {\n\tPAD,\n\tBOS,\n\tEOS,\n\n\tCHORD,\n\tREST,\n}\n\ninterface EventElement {\n\thref?: string;\n\tdisposed?: boolean;\n\tindex?: number;\n\tvoice?: number;\n\n\ttype: EventElementType;\n\tstaff: number;\n\tx: number;\n\ty1: number;\n\ty2: number;\n\tfeature: EventFeature;\n\tpivotX?: number;\n\theadY?: number;\n\n\t// targets\n\ttick?: number;\n\tdivision?: number;\n\tdots?: number;\n\tbeam?: StemBeam;\n\tstemDirection?: string;\n\tgrace?: boolean;\n\ttremoloCatcher?: boolean;\n\ttimeWarped?: boolean;\n\tfullMeasure?: boolean; // full measure rest\n\tfake?: boolean;\n\n\torder?: number;\n\n\tpredisposition?: EventPredisposition;\n}\n\ntype Matrix = number[][];\n\ninterface Annotation {\n\tloss: number;\n\tgrant: boolean;\n\tpatched: boolean; // from manually solved measure\n}\n\nclass EventCluster extends SimpleClass {\n\tstatic className = 'EventCluster';\n\tstatic blackKeys = ['id'];\n\n\tid?: string; // for db access\n\tindex?: number;\n\tduration?: number;\n\tstaffY0?: number; // the first staff top + staffY\n\n\tsignatureDuration: number;\n\telements: EventElement[];\n\tmatrixH?: Matrix; // matrix N x N, [next][prev]\n\n\tbackgroundImages?: BackgroundImage[];\n\n\tannotation?: Annotation;\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\tget regular(): boolean {\n\t\treturn (\n\t\t\tthis.elements.some((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && !elem.fake) &&\n\t\t\tthis.elements.every((elem) => [elem.x, elem.y1, elem.y2, elem.tick].every(Number.isFinite)) &&\n\t\t\tthis.elements\n\t\t\t\t.slice(1)\n\t\t\t\t.every(\n\t\t\t\t\t(elem, ei) =>\n\t\t\t\t\t\telem.fake ||\n\t\t\t\t\t\tthis.elements[ei].fake ||\n\t\t\t\t\t\telem.grace ||\n\t\t\t\t\t\tthis.elements[ei].grace ||\n\t\t\t\t\t\telem.fullMeasure ||\n\t\t\t\t\t\tthis.elements[ei].fullMeasure ||\n\t\t\t\t\t\telem.tick <= this.elements[ei].tick ||\n\t\t\t\t\t\telem.x > this.elements[ei].x\n\t\t\t\t)\n\t\t);\n\t}\n\n\tget grant(): boolean {\n\t\treturn this.annotation && this.annotation.grant;\n\t}\n\n\tget feature(): Partial {\n\t\treturn {\n\t\t\tindex: this.index,\n\t\t\telements: this.elements,\n\t\t};\n\t}\n\n\tget estimatedDuration(): number {\n\t\tconst endElem = this.elements.find((elem) => elem.type === EventElementType.EOS);\n\n\t\tconst tick = endElem?.predisposition ? endElem.predisposition?.tick : endElem?.tick;\n\n\t\treturn Number.isFinite(tick) ? tick : this.duration;\n\t}\n\n\tassignPrediction(prediction: any): void {\n\t\tconsole.assert(prediction.index === this.index, 'index mismatch:', prediction.index, this.index);\n\n\t\tthis.matrixH = prediction.matrixH;\n\t\tprediction.elements.forEach((pe) => {\n\t\t\tconst { index, ...predisposition } = pe;\n\t\t\tconst elem = this.elements.find((elem) => elem.index === index);\n\t\t\tconsole.assert(elem, 'element not found:', index);\n\n\t\t\tif (elem) elem.predisposition = predisposition;\n\t\t});\n\t}\n}\n\nclass EventClusterSet extends SimpleClass {\n\tstatic className = 'EventClusterSet';\n\n\tname?: string;\n\n\tclusters: EventCluster[];\n\n\tconstructor(data: object) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\t}\n\n\ttrimIrregular(): number {\n\t\tlet ir = 0;\n\n\t\tthis.clusters = this.clusters.filter((cluster) => {\n\t\t\tconst regular = cluster.regular;\n\t\t\tif (!regular) {\n\t\t\t\tconsole.debug('irregular cluster:', cluster);\n\t\t\t\t++ir;\n\t\t\t}\n\n\t\t\treturn regular;\n\t\t});\n\n\t\tif (ir) console.debug('Irregular clusters trimmed:', `${ir}/${this.clusters.length + ir}`);\n\t\telse console.debug(`The EventClusterSet (${this.clusters.length}) is fine.`);\n\n\t\treturn ir;\n\t}\n}\n\nexport { EventElementType, EventElement, EventCluster, EventClusterSet };\n","import { SimpleClass } from './aux_/typedJSON';\nimport { StaffBasic } from './interfaces';\nimport { ContextedTerm, EventTerm, MarkTerm } from './term';\n\nclass PatchMeasure extends SimpleClass {\n\tstatic className = 'PatchMeasure';\n\n\tmeasureIndex: number;\n\tstaffMask: number;\n\tbasic: StaffBasic;\n\n\t//points: SemanticPoint[];\n\tevents: EventTerm[];\n\tcontexts: ContextedTerm[][]; // [staff]\n\tmarks: MarkTerm[];\n\tvoices: number[][]; // [voice, id]\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tObject.assign(this, data);\n\t}\n\n\tget staffN(): number {\n\t\treturn Math.floor(Math.log2(this.staffMask)) + 1;\n\t}\n\n\tget basics(): StaffBasic[] {\n\t\treturn Array(this.staffN).fill(this.basic);\n\t}\n\n\tget duration(): number {\n\t\treturn Math.max(\n\t\t\t0,\n\t\t\t...(this.voices || []).map((ids) => {\n\t\t\t\tconst events = ids.map((id) => this.events.find((e) => e.id === id));\n\n\t\t\t\treturn events.reduce((duration, event) => duration + event.duration, 0);\n\t\t\t})\n\t\t);\n\t}\n}\n\nexport { PatchMeasure };\n","import sha1 from 'js-sha1';\nimport erf from 'math-erf';\n\nimport { SimpleClass } from './aux_/typedJSON';\nimport * as EquationSolver from './equationSolver';\nimport { EventCluster, EventElement, EventElementType } from './eventTopology';\nimport {\n\tBackgroundImage,\n\tEventMeasure,\n\tFraction,\n\tMeasureBarType,\n\tRegulationOptions,\n\tRegulationSolution,\n\tRegulationSolutionEvent,\n\tStaffBasic,\n} from './interfaces';\nimport type { MeasureRectification } from './measureRectification';\nimport { PatchMeasure } from './patch';\nimport { NOTEHEAD_WIDTHS } from './semanticPoint';\nimport { ContextedTerm, ContextType, EventTerm, GraceType, MarkTerm, StemBeam, TremoloLink, WHOLE_DURATION } from './term';\nimport type { GraphMeasure } from './timewiseGraph';\nimport { argmax, frac, fractionMul, roundNumber } from './utils';\n\nnamespace SimplePolicy {\n\tconst constructXMap = (measure: SpartitoMeasure): Map => {\n\t\tconst xMap = new Map();\n\n\t\t// mark full measure rests\n\t\tmeasure.rows.forEach((row) => {\n\t\t\tif (row.events.length === 1) {\n\t\t\t\tconst event = row.events[0];\n\t\t\t\tif (event.rest && event.division === 0) event.rest = 'R';\n\t\t\t}\n\t\t});\n\n\t\tmeasure.events.forEach((event) => {\n\t\t\tconst x = Math.round(event.pivotX * 10) / 10;\n\t\t\tlet key = 0;\n\t\t\tif (event.fullMeasureRest) key = Math.min(x, ...xMap.keys());\n\t\t\telse {\n\t\t\t\tkey =\n\t\t\t\t\t[...xMap.keys()].find((k) => {\n\t\t\t\t\t\t// check if the event is aligned with the current chord\n\t\t\t\t\t\tconst es = xMap.get(k);\n\t\t\t\t\t\tconst left = Math.min(...es.map((e) => e.left));\n\t\t\t\t\t\tconst right = Math.max(...es.map((e) => e.right));\n\n\t\t\t\t\t\tconst overlaySize = Math.min(right, event.right) - Math.max(left, event.left);\n\n\t\t\t\t\t\treturn overlaySize > NOTEHEAD_WIDTHS.NoteheadS1 * 0.62;\n\t\t\t\t\t}) || x;\n\t\t\t}\n\t\t\tevent.roundX = key;\n\n\t\t\tconst es = xMap.get(key) || [];\n\t\t\txMap.set(key, es);\n\n\t\t\tes.push(event);\n\t\t});\n\n\t\treturn xMap;\n\t};\n\n\texport const computeMeasureTicks = (measure: SpartitoMeasure): void => {\n\t\tconst xMap = constructXMap(measure);\n\n\t\tlet tick = 0;\n\t\tconst ts = new Set([tick]);\n\t\tconst eventGroups = [...xMap.entries()].sort(([x1], [x2]) => x1 - x2); //.map(entry => entry[1]);\n\t\tfor (const [x, events] of eventGroups) {\n\t\t\tvoid x;\n\n\t\t\tevents.forEach((event: EventTerm) => {\n\t\t\t\tif (event.predisposition) {\n\t\t\t\t\tevent.rest = event.rest && event.predisposition.fullMeasure > 0.5 ? 'R' : event.rest;\n\t\t\t\t\tevent.grace = event.predisposition.grace ? GraceType.Grace : null;\n\t\t\t\t\tevent.division = argmax(event.predisposition.divisionVector);\n\t\t\t\t\tevent.dots = argmax(event.predisposition.dotsVector);\n\t\t\t\t\tif (event.predisposition.timeWarped > 0.5) event.timeWarp = frac(2, 3);\n\t\t\t\t}\n\n\t\t\t\tif (event.fullMeasureRest) event.tick = 0;\n\t\t\t\telse {\n\t\t\t\t\tif (event.zeroHolder) tick -= event.duration;\n\n\t\t\t\t\tif (!event.zeroHolder && event.predisposition && Number.isInteger(event.predisposition.tick)) event.tick = event.predisposition.tick;\n\t\t\t\t\telse event.tick = tick;\n\t\t\t\t\tts.add(event.tick + event.duration);\n\t\t\t\t}\n\t\t\t\t//console.log(\"append tick:\", event.tick + event.duration, event);\n\t\t\t});\n\t\t\tts.delete(tick);\n\n\t\t\t//column.xToTick[x] = tick;\n\n\t\t\tif (ts.size) tick = Math.min(...ts);\n\t\t}\n\n\t\tif (Number.isInteger(measure.estimatedDuration)) measure.duration = measure.estimatedDuration;\n\t\telse measure.duration = Math.max(...ts, 0);\n\t};\n\n\texport const computeMeasureVoices = (measure: SpartitoMeasure): void => {\n\t\tmeasure.voices = [];\n\t\tfor (const row of measure.rows) {\n\t\t\tconst events = row.events.filter(\n\t\t\t\t(event) => !event.grace && !event.tremoloCatcher && !event.fullMeasureRest && !(event.predisposition && event.predisposition.fake > 0.5)\n\t\t\t);\n\t\t\tconst eventSet = new Set(events);\n\n\t\t\twhile (eventSet.size) {\n\t\t\t\tlet tick = 0;\n\n\t\t\t\tconst voice = [];\n\t\t\t\tconst pushEvent = (e: EventTerm) => {\n\t\t\t\t\tvoice.push(e.id);\n\t\t\t\t\tif (!e.zeroHolder) tick += e.duration;\n\t\t\t\t\teventSet.delete(e);\n\t\t\t\t};\n\n\t\t\t\tconst e0 = events.find((e) => eventSet.has(e));\n\t\t\t\tif (e0.alignedTick > 0) {\n\t\t\t\t\t//voice.tickMap[tick] = EventTerm.space({ tick, duration: e0.alignedTick });\n\t\t\t\t\ttick = e0.alignedTick;\n\t\t\t\t}\n\t\t\t\tpushEvent(e0);\n\n\t\t\t\twhile (true) {\n\t\t\t\t\t// TODO: consider slur pair\n\t\t\t\t\tconst e = events.find((e) => eventSet.has(e) && e.alignedTick === tick);\n\t\t\t\t\tif (!e) break;\n\n\t\t\t\t\tpushEvent(e);\n\t\t\t\t}\n\n\t\t\t\t//if (tick < measure.duration)\n\t\t\t\t//\tvoice.tickMap[tick] = EventTerm.space({ tick, duration: staff.duration - tick });\n\n\t\t\t\tmeasure.voices.push(voice);\n\t\t\t}\n\t\t}\n\t};\n}\n\nconst solveGraceEvents = (measure: SpartitoMeasure): void => {\n\tconst graceEvents = measure.events.filter((event) => event.grace /*&& !Number.isFinite(event.tick)*/);\n\tif (!graceEvents.length) return;\n\n\tconst tickMap = measure.tickMap;\n\tconst staffMap = [...tickMap.entries()].reduce((smap, [tick, events]) => {\n\t\tevents.forEach((event) => {\n\t\t\tif (!event.grace) {\n\t\t\t\tsmap[event.staff] = smap[event.staff] || {};\n\n\t\t\t\tconst oldEvent = smap[event.staff][tick];\n\t\t\t\tsmap[event.staff][tick] = !oldEvent || oldEvent.x > event.x ? event : oldEvent;\n\t\t\t}\n\t\t});\n\n\t\treturn smap;\n\t}, {} as { [staff: number]: { [tick: number]: EventTerm } });\n\n\ttype Position = { tick: number; preTick: number; graces: EventTerm[]; event: EventTerm };\n\tconst staffPositions = Object.entries(staffMap).reduce((map, [staff, emap]) => {\n\t\tmap[staff] = Object.entries(emap)\n\t\t\t.map(([t, event]) => ({ event, tick: Number(t), preTick: -240, graces: [] }))\n\t\t\t.sort((p1, p2) => p1.event.x - p2.event.x);\n\t\tmap[staff].push({ tick: measure.duration, event: measure.endEvent, preTick: 0, graces: [] }); // terminal bar\n\n\t\tlet tick = 0;\n\t\tmap[staff].forEach((position) => {\n\t\t\tif (position.tick > tick) {\n\t\t\t\tposition.preTick = tick;\n\t\t\t\ttick = position.tick;\n\t\t\t}\n\t\t});\n\n\t\treturn map;\n\t}, {} as { [staff: number]: Position[] });\n\n\t// append grace events into positions\n\tgraceEvents.forEach((event) => {\n\t\tconst staff = staffPositions[event.staff];\n\t\tif (staff) {\n\t\t\tconst position = staff.find((p) => p.event.x > event.x);\n\t\t\tif (position) position.graces.push(event);\n\t\t\tevent.roundX = event.x;\n\t\t\t//if (position.tick >= measure.duration)\n\t\t\t//\tevent.grace = GraceType.AfterGrace;\n\t\t}\n\t});\n\n\tObject.values(staffPositions).forEach((staff) =>\n\t\tstaff.forEach((position) => {\n\t\t\tif (position.graces.length) {\n\t\t\t\tposition.event.graceIds = position.graces.map((e) => e.id);\n\n\t\t\t\tconst totalDuration = position.graces.reduce((t, e) => t + e.duration, 0);\n\t\t\t\tconst duration = Math.min(totalDuration, position.tick - position.preTick);\n\t\t\t\tconst warp = duration / totalDuration;\n\n\t\t\t\tlet tick = position.tick;\n\t\t\t\t[...position.graces].reverse().forEach((event) => {\n\t\t\t\t\tevent.tick = Math.round(tick - event.duration * warp);\n\t\t\t\t\ttick = event.tick;\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t);\n};\n\nconst solveTremoloPairs = (measure: SpartitoMeasure): void => {\n\tconst catchers = measure.events.filter((event) => event.tremoloCatcher && !event.grace);\n\tconst pitchers = measure.events.filter((event) => event.tremoloLink === TremoloLink.Pitcher && !event.grace);\n\n\tcatchers.forEach((catcher) => {\n\t\tlet candidates = pitchers.filter((event) => event.division === catcher.division && event.x < catcher.x);\n\t\tif (!candidates.length)\n\t\t\tcandidates = measure.events.filter(\n\t\t\t\t(event) =>\n\t\t\t\t\tNumber.isFinite(event.tick) &&\n\t\t\t\t\t!event.grace &&\n\t\t\t\t\t!event.rest &&\n\t\t\t\t\tevent.division === catcher.division &&\n\t\t\t\t\tevent.dots === catcher.dots &&\n\t\t\t\t\tevent.x < catcher.x\n\t\t\t);\n\t\tcandidates.sort((c1, c2) => c2.x - c1.x);\n\t\tif (candidates.length) {\n\t\t\tconst pitcher = candidates[0];\n\t\t\tpitcher.catcherId = catcher.id;\n\t\t\tconst tremolo = Math.max(pitcher.tremolo || 3, catcher.tremolo || 3);\n\t\t\tpitcher.tremolo = tremolo;\n\t\t\tcatcher.tremolo = tremolo;\n\n\t\t\tif (!catcher.tick) catcher.tick = pitcher.tick + pitcher.duration / 2;\n\n\t\t\tconst pi = pitchers.indexOf(pitcher);\n\t\t\tif (pi >= 0) pitchers.splice(pi, 1);\n\t\t}\n\t});\n};\n\nnamespace EquationPolicy {\n\ttype EventID = number;\n\ttype Time = number;\n\n\tconst DURATION_MULTIPLIER = 128 * 3 * 5 * 7 * 11 * 13;\n\n\tconst CHORDS_SEAM_SIGMA = 0.6;\n\tconst NEIGHBOR_CHORDS_SIGMA = 1.6;\n\tconst Y_DECAY_SIGMA = 16;\n\tconst STAFF_DECAY_FACTOR = 2;\n\tconst STEM_DIRECTION_DECAY = 0.9;\n\tconst ILL_BEAMS_PENALTY = 0.2;\n\n\tconst INVERT_SQRT2 = 0.7071067811865475;\n\n\tconst MATRIX_H_WEIGHT = 3;\n\n\tconst FINE_BEAMS = [\n\t\t[null, null],\n\t\t[null, StemBeam.Open],\n\t\t[StemBeam.Open, StemBeam.Continue],\n\t\t[StemBeam.Open, StemBeam.Close],\n\t\t[StemBeam.Continue, StemBeam.Continue],\n\t\t[StemBeam.Continue, StemBeam.Close],\n\t\t[StemBeam.Close, null],\n\t\t[StemBeam.Close, StemBeam.Open],\n\t].map((bb) => bb.join('-'));\n\n\tinterface Event {\n\t\tid: EventID;\n\t\tstaff: number;\n\t\tx: number;\n\t\ty: number;\n\t\tduration: Time;\n\t\tconfidence: number;\n\t\tshrinkness: number;\n\t}\n\n\texport interface StaffGroup {\n\t\tevents: Event[];\n\t\texpectedDuration: Time;\n\t\tmeasureShrinkness: number;\n\t\tendX: number;\n\t\tmatrixH: Matrix;\n\t\tmatrixV: Matrix;\n\n\t\tids?: EventID[];\n\t}\n\n\tinterface EventResult {\n\t\tid: EventID;\n\t\ttick: Time;\n\t\tendTick: Time;\n\t\ttickGroup: number;\n\t\ttimeWarp?: Fraction;\n\t}\n\n\texport interface StaffGroupSolution {\n\t\tevents: EventResult[];\n\t\tvoices: EventID[][];\n\t\tduration: number;\n\n\t\tloss?: number;\n\t\tcredits?: number;\n\t\ttimes?: number;\n\t}\n\n\texport interface RegulatorOptions extends EquationSolver.SolverOptions {\n\t\tsolver?: (staffGroup: StaffGroup, options: EquationSolver.SolverOptions) => Promise;\n\t}\n\n\tconst solveStaffGroup = (staffGroup: StaffGroup, options: EquationSolver.SolverOptions): StaffGroupSolution => {\n\t\tif (!staffGroup.events.length) {\n\t\t\treturn {\n\t\t\t\tevents: [],\n\t\t\t\tvoices: [],\n\t\t\t\tduration: 0,\n\t\t\t};\n\t\t}\n\n\t\tconst solver = new EquationSolver.Solver(staffGroup, options);\n\n\t\treturn solver.solve();\n\t};\n\n\texport const estiamteMeasure = (measure: SpartitoMeasure): StaffGroup => {\n\t\tconst allEvents = measure.events\n\t\t\t.filter((event) => !event.zeroHolder)\n\t\t\t.map((event) => ({\n\t\t\t\tid: event.id,\n\t\t\t\tstaff: event.staff,\n\t\t\t\tx: event.x,\n\t\t\t\ttickEstimated: event.predisposition && Number.isFinite(event.predisposition.tick) ? event.predisposition.tick : event.x,\n\t\t\t\ttipX: event.tipX,\n\t\t\t\ty: event.tipY + event.staff * 100, // TODO: refine y by event term tipY\n\t\t\t\tduration: (event.mainDuration * DURATION_MULTIPLIER) / WHOLE_DURATION,\n\t\t\t\tdivision: event.division,\n\t\t\t\tdots: event.dots,\n\t\t\t\tstemDirection: event.stemDirection,\n\t\t\t\tbeam: event.beam,\n\t\t\t\trest: event.rest,\n\t\t\t\t// the possibility of full measure rest\n\t\t\t\tpR: event.rest === 'R' ? 1 : event.rest === 'r' && event.division === 0 ? Math.tanh(event.x - measure.eventStartX) : 0,\n\t\t\t\tfakeP: event.predisposition ? event.predisposition.fakeP || 0 : 0,\n\t\t\t\tshrinkness: event.predisposition ? event.predisposition.timeWarped : null,\n\t\t\t}));\n\t\tlet expectedDuration = (DURATION_MULTIPLIER * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\texpectedDuration = Math.max(expectedDuration, roundNumber(measure.estimatedDuration, DURATION_MULTIPLIER / 4));\n\n\t\tconst staffGroupMap = measure.staffGroups.reduce((map, staves, group) => {\n\t\t\tstaves.forEach((staff) => (map[staff] = group));\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst ids = [0, ...allEvents.map((e) => e.id)]; // compact ids\n\t\tconst ievents = allEvents.map((e) => ({\n\t\t\t...e,\n\t\t\tid: ids.indexOf(e.id),\n\t\t\tx: e.x - measure.startX,\n\t\t\tconfidence: (1 - e.pR) * (1 - e.fakeP),\n\t\t\tshrinkness: Number.isFinite(e.shrinkness) ? e.shrinkness : Math.tanh((e.division - e.dots * 0.1) / 4),\n\t\t\tstaffGroup: staffGroupMap[e.staff],\n\t\t}));\n\n\t\t// estimate topology matrices\n\t\tconst matrixH = Array(ids.length + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\t\tconst matrixV = Array(ids.length)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\n\t\t//const hp = (dx: number): number => 1 - erf(((dx / NEIGHBOR_CHORDS_SIGMA) ** 0.6) * INVERT_SQRT2);\n\t\tconst hp = (dx: number): number => erf(dx / NEIGHBOR_CHORDS_SIGMA) * erf(NEIGHBOR_CHORDS_SIGMA / dx);\n\n\t\tfor (const e1 of ievents) {\n\t\t\tfor (const e2 of ievents) {\n\t\t\t\tmatrixV[e1.id][e2.id] =\n\t\t\t\t\te1 !== e2 && e1.tickEstimated >= e2.tickEstimated ? 1 - erf(((e1.tickEstimated - e2.tickEstimated) * INVERT_SQRT2) / CHORDS_SEAM_SIGMA) : 0;\n\n\t\t\t\tif (e1.staffGroup !== e2.staffGroup) matrixH[e1.id][e2.id] = 0;\n\t\t\t\t// prohibit voice crossing staff groups\n\t\t\t\telse if (e1.x <= e2.x) matrixH[e1.id][e2.id] = 0;\n\t\t\t\telse {\n\t\t\t\t\tconst staffDecay = Math.exp(-Math.abs(e1.staff - e2.staff) * STAFF_DECAY_FACTOR);\n\t\t\t\t\tconst yDecay = e1.staff === e2.staff ? Math.exp(-Math.abs(e1.y - e2.y) / Y_DECAY_SIGMA) : 1;\n\t\t\t\t\tconst dx = e1.x - e2.x;\n\t\t\t\t\tconst dtx = e1.tipX - e2.tipX;\n\t\t\t\t\tmatrixH[e1.id][e2.id] = (staffDecay * yDecay * Math.min(hp(dx), hp(dtx))) ** (1 / MATRIX_H_WEIGHT);\n\t\t\t\t}\n\n\t\t\t\t// weaken full measure rest connections\n\t\t\t\tconst nR = (1 - e1.pR) * (1 - e2.pR);\n\t\t\t\tmatrixV[e1.id][e2.id] *= nR;\n\t\t\t\tmatrixH[e1.id][e2.id] *= nR;\n\n\t\t\t\tif (matrixV[e1.id][e2.id] < 1e-2) matrixV[e1.id][e2.id] = 0;\n\n\t\t\t\t// weaken inconsistent stem directions\n\t\t\t\tif (e1.stemDirection && e2.stemDirection && e1.stemDirection !== e2.stemDirection) matrixH[e1.id][e2.id] *= STEM_DIRECTION_DECAY;\n\n\t\t\t\t// ill beams penalty\n\t\t\t\tif (!e1.rest && !e2.rest && !FINE_BEAMS.includes([e2.beam, e1.beam].join('-'))) matrixH[e1.id][e2.id] *= ILL_BEAMS_PENALTY;\n\t\t\t}\n\n\t\t\t// H possibility of e1 and end of measure\n\t\t\tmatrixH[ids.length][e1.id] = hp(measure.width - e1.x) ** (1 / MATRIX_H_WEIGHT);\n\t\t}\n\n\t\treturn {\n\t\t\tids,\n\t\t\tevents: ievents,\n\t\t\texpectedDuration,\n\t\t\tmeasureShrinkness: 0,\n\t\t\tendX: measure.position.right,\n\t\t\tmatrixH,\n\t\t\tmatrixV,\n\t\t};\n\t};\n\n\texport const regulateMeasure = async (measure: SpartitoMeasure, { solver = null, ...options }: RegulatorOptions): Promise => {\n\t\tconst env = estiamteMeasure(measure);\n\t\tconst { ids, matrixH, matrixV } = env;\n\n\t\t// copy matrices values from measure topology data\n\t\tif (measure.matrixH) {\n\t\t\tconsole.assert(\n\t\t\t\tmeasure.matrixH.length > ids[ids.length - 1] && measure.matrixH[0].length > ids[ids.length - 1],\n\t\t\t\t'matrix shape mismatch:',\n\t\t\t\tids.length,\n\t\t\t\t`${measure.matrixH.length}x${measure.matrixH[0].length}`,\n\t\t\t\t`${matrixH.length}x${matrixH[0].length}`\n\t\t\t);\n\t\t\tfor (let i = 0; i < ids.length + 1; i++) {\n\t\t\t\tconst ii = i < ids.length ? ids[i] : measure.matrixH.length - 1;\n\t\t\t\tfor (let j = 1; j < ids.length; j++) matrixH[i][j] = measure.matrixH[ii][ids[j]];\n\t\t\t}\n\t\t}\n\t\tif (measure.matrixV) {\n\t\t\tmatrixV.forEach((row, i) =>\n\t\t\t\trow.forEach((_, j) => {\n\t\t\t\t\tconst mp = measure.matrixV[ids[i]][ids[j]];\n\t\t\t\t\tif (Number.isFinite(mp)) matrixV[i][j] = mp;\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\tenv.measureShrinkness = Math.tanh(Math.log(Math.min(1, measure.estimatedDuration / measure.duration)) * -3);\n\n\t\tif (options.logger) options.logger.info('--- MEASURE', measure.measureIndex, '---', env);\n\n\t\tconst solution = solver ? await solver(env, options) : solveStaffGroup(env, options);\n\t\tconst resultEvents = solution.events.map((e) => ({\n\t\t\t...e,\n\t\t\tid: env.ids[e.id], // decode compact ids\n\t\t}));\n\t\tresultEvents.forEach((e) => {\n\t\t\tconst event = measure.events.find((e0) => e0.id === e.id);\n\t\t\tevent.tick = Number.isFinite(e.tick) ? Math.round((e.tick * WHOLE_DURATION) / DURATION_MULTIPLIER) : null;\n\t\t\tevent.tickGroup = e.tickGroup;\n\t\t\tevent.timeWarp = e.timeWarp;\n\t\t});\n\n\t\tmeasure.duration = Math.round((solution.duration * WHOLE_DURATION) / DURATION_MULTIPLIER);\n\t\tmeasure.voices = solution.voices.map((voice) => voice.map((id) => env.ids[id]));\n\n\t\tmeasure.solutionStat = {\n\t\t\tloss: solution.loss,\n\t\t\tsolverCredits: solution.credits,\n\t\t\tsolverTimes: solution.times,\n\t\t};\n\n\t\t// full measure rests\n\t\tmeasure.events.forEach((event) => {\n\t\t\tconst result = resultEvents.find((e) => e.id === event.id);\n\t\t\tif (!result) return;\n\t\t\telse if (!Number.isFinite(result.tick) && event.rest === 'r' && event.division === 0) {\n\t\t\t\tevent.tick = 0;\n\t\t\t\tevent.tickGroup = 0;\n\t\t\t\tevent.rest = 'R';\n\t\t\t\tevent.duration = measure.duration;\n\t\t\t\tmeasure.voices.push([event.id]);\n\t\t\t} else if (event.rest === 'R') {\n\t\t\t\tevent.tick = 0;\n\t\t\t\tevent.tickGroup = 0;\n\t\t\t\tevent.duration = measure.duration;\n\t\t\t\tmeasure.voices.push([event.id]);\n\t\t\t}\n\t\t});\n\t};\n\n\texport const regulateMeasureWithRectification = async (\n\t\tmeasure: SpartitoMeasure,\n\t\trectification: MeasureRectification,\n\t\t{ solver = null, ...options }: RegulatorOptions\n\t): Promise => {\n\t\tconst allEvents = measure.events\n\t\t\t.filter((event) => !event.zeroHolder)\n\t\t\t.map((event) => {\n\t\t\t\tconst re = rectification.events.find((e) => e && e.id === event.id);\n\t\t\t\tconst division = Number.isFinite(re?.division) ? re.division : event.division;\n\t\t\t\tconst dots = Number.isFinite(re?.dots) ? re.dots : event.dots;\n\t\t\t\tconst duration = DURATION_MULTIPLIER * 2 ** -division * (2 - 2 ** -dots);\n\n\t\t\t\treturn {\n\t\t\t\t\tid: event.id,\n\t\t\t\t\tstaff: event.staff,\n\t\t\t\t\tx: event.x,\n\t\t\t\t\ttickEstimated: event.predisposition?.tick,\n\t\t\t\t\ty: event.tipY + event.staff * 100, // TODO: refine y by event term tipY\n\t\t\t\t\tduration,\n\t\t\t\t\t// the possibility of full measure rest\n\t\t\t\t\tpR: event.rest === 'R' ? 1 : event.rest === 'r' && event.division === 0 ? Math.tanh(event.x - measure.eventStartX) : 0,\n\t\t\t\t\tfakeP: event.predisposition ? event.predisposition.fakeP || 0 : 0,\n\t\t\t\t\tshrinkness: event.predisposition?.timeWarped || 0,\n\t\t\t\t};\n\t\t\t});\n\t\tlet expectedDuration = (DURATION_MULTIPLIER * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\t\tif (Number.isFinite(measure.estimatedDuration))\n\t\t\texpectedDuration = Math.max(expectedDuration, roundNumber(measure.estimatedDuration, DURATION_MULTIPLIER / 4));\n\n\t\tconst staffGroupMap = measure.staffGroups.reduce((map, staves, group) => {\n\t\t\tstaves.forEach((staff) => (map[staff] = group));\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst ids = [0, ...allEvents.map((e) => e.id)]; // compact ids\n\t\tconst ievents = allEvents.map((e) => ({\n\t\t\t...e,\n\t\t\tid: ids.indexOf(e.id),\n\t\t\tx: e.x - measure.startX,\n\t\t\tconfidence: (1 - e.pR) * (1 - e.fakeP),\n\t\t\tshrinkness: e.shrinkness,\n\t\t\tstaffGroup: staffGroupMap[e.staff],\n\t\t}));\n\n\t\t// estimate topology matrices\n\t\tconst matrixH = Array(ids.length + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\t\tconst matrixV = Array(ids.length)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(ids.length).fill(0));\n\n\t\tfor (const e1 of ievents) {\n\t\t\tfor (const e2 of ievents) {\n\t\t\t\tmatrixV[e1.id][e2.id] =\n\t\t\t\t\te1 !== e2 && e1.tickEstimated >= e2.tickEstimated ? 1 - erf(((e1.tickEstimated - e2.tickEstimated) * INVERT_SQRT2) / CHORDS_SEAM_SIGMA) : 0;\n\n\t\t\t\t// weaken full measure rest connections\n\t\t\t\tconst nR = (1 - e1.pR) * (1 - e2.pR);\n\t\t\t\tmatrixV[e1.id][e2.id] *= nR;\n\n\t\t\t\tif (matrixV[e1.id][e2.id] < 1e-2) matrixV[e1.id][e2.id] = 0;\n\t\t\t}\n\t\t}\n\n\t\t// copy matrices values from measure topology data\n\t\tconsole.assert(\n\t\t\tmeasure.matrixH && measure.matrixH.length > ids[ids.length - 1] && measure.matrixH[0].length > ids[ids.length - 1],\n\t\t\t'matrix shape mismatch:',\n\t\t\tids.length,\n\t\t\t`${measure.matrixH.length}x${measure.matrixH[0].length}`,\n\t\t\t`${matrixH.length}x${matrixH[0].length}`\n\t\t);\n\t\tfor (let i = 0; i < ids.length + 1; i++) {\n\t\t\tconst ii = i < ids.length ? ids[i] : measure.matrixH.length - 1;\n\t\t\tfor (let j = 1; j < ids.length; j++) matrixH[i][j] = measure.matrixH[ii][ids[j]];\n\t\t}\n\n\t\tlet measureShrinkness = 0;\n\t\tif (Number.isFinite(measure.estimatedDuration)) measureShrinkness = Math.tanh(Math.log(Math.min(1, measure.estimatedDuration / measure.duration)) * -3);\n\n\t\tconst env = {\n\t\t\tids,\n\t\t\tevents: ievents,\n\t\t\texpectedDuration,\n\t\t\tmeasureShrinkness,\n\t\t\tendX: measure.position.right,\n\t\t\tmatrixH,\n\t\t\tmatrixV,\n\t\t};\n\t\tconst solution = solver ? await solver(env, options) : solveStaffGroup(env, options);\n\n\t\tconst priority = -solution.loss;\n\n\t\tconst events = solution.events.map(({ id, tick, tickGroup, timeWarp }) => {\n\t\t\tconst re = rectification.events.find((e) => e && e.id === id);\n\t\t\tconst tickN = Number.isFinite(tick) ? Math.round((tick * WHOLE_DURATION) / DURATION_MULTIPLIER) : tick;\n\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\ttick: tickN,\n\t\t\t\ttickGroup,\n\t\t\t\ttimeWarp,\n\t\t\t\tdivision: re?.division,\n\t\t\t\tdots: re?.dots,\n\t\t\t};\n\t\t});\n\n\t\tconst duration = Math.round((solution.duration * WHOLE_DURATION) / DURATION_MULTIPLIER);\n\n\t\treturn {\n\t\t\tevents,\n\t\t\tvoices: solution.voices,\n\t\t\tduration,\n\t\t\tpriority,\n\t\t};\n\t};\n}\n\ntype Matrix = number[][];\n\ntype TickMap = Map;\n\ninterface SolutionStatistics {\n\tloss?: number;\n\tsolverCredits?: number;\n\tsolverTimes?: number;\n}\n\nclass SpartitoMeasure extends SimpleClass {\n\tstatic className = 'SpartitoMeasure';\n\tstatic blackKeys = ['staffGroups', 'solutionStat', 'measureNumber', 'deposit'];\n\n\tmeasureIndex: number;\n\tstaffMask: number;\n\tstaffGroups: number[][];\n\toriginalRegulationHash?: string;\n\tmeasureNumber?: number; // count from the last indent measure, head partial measure is zero, skip empty measures\n\n\tpatched: boolean;\n\tdiscard: boolean;\n\n\tposition: {\n\t\tsystemIndex: number;\n\t\tlocalIndex: number; // the measure local index in its system\n\t\tleft: number;\n\t\tright: number;\n\t\tstaffYs?: number[];\n\t\tstaffYsFull?: number[];\n\t};\n\n\tbackgroundImages: BackgroundImage[];\n\n\tevents: EventTerm[];\n\tendEvent: Partial; // the placeholder for end tick\n\tcontexts: ContextedTerm[][]; // [staff]\n\tmarks: MarkTerm[];\n\tduration: number;\n\n\tvoices?: number[][]; // [voice, id]\n\tbreak?: boolean;\n\tpageBreak?: boolean;\n\tbasics?: StaffBasic[]; // [staff]\n\tvoltaBegin: boolean;\n\tvoltaEnd: boolean;\n\talternative: boolean;\n\tbarTypes: Record;\n\tindent: boolean;\n\n\tsolutionStat?: SolutionStatistics;\n\n\tmatrixH: Matrix; // matrix N x N\t\t[right][left]\n\tmatrixV: Matrix; // matrix N x N\n\testimatedDuration: number;\n\n\tgraph: GraphMeasure;\n\n\tdeposit: Record;\n\n\tstatic reorderEvents(events: EventTerm[], staffYsFull: number[]): EventTerm[] {\n\t\tconst HALF_NOTEHEAD = 0.7;\n\n\t\tconst ys = [];\n\n\t\tconst es = events.map((e) => ({\n\t\t\tid: e.id,\n\t\t\tstaff: e.staff,\n\t\t\tx: e.x / HALF_NOTEHEAD,\n\t\t\trx: 0,\n\t\t\try: staffYsFull[e.staff] + e.tipY,\n\t\t\ttipY: e.tipY,\n\t\t\tprior: 0,\n\t\t}));\n\t\tes.sort((e1, e2) => e1.x - e2.x);\n\t\tes.slice(1).forEach((e, i) => {\n\t\t\tconst dx = Math.min(Math.round(e.x - es[i].x), 2);\n\t\t\te.rx = es[i].rx + dx;\n\t\t});\n\t\tes.forEach((e) => {\n\t\t\te.prior = e.staff * 1e4 + e.rx + e.tipY * 0.01;\n\n\t\t\tif (!ys.includes(e.ry)) ys.push(e.ry);\n\t\t});\n\t\tes.sort((e1, e2) => e1.prior - e2.prior);\n\t\tys.sort((y1, y2) => y1 - y2);\n\n\t\tlet yi = 0;\n\t\tconst yis = ys.map((y, i) => {\n\t\t\tif (!i || ys[i] - ys[i - 1] < 0.5) return yi;\n\n\t\t\t++yi;\n\t\t\treturn yi;\n\t\t});\n\n\t\tconst result = es.map((e) => new EventTerm({ ...events.find((ev) => ev.id === e.id), intX: e.rx, intY: yis[ys.indexOf(e.ry)] }));\n\t\tresult.forEach((e, i) => (e.id = i + 1));\n\n\t\treturn result;\n\t}\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tif (!this.originalRegulationHash && !this.regulated) this.originalRegulationHash = this.regulationHash;\n\n\t\tthis.barTypes = this.barTypes || {};\n\n\t\t// Ensure postRegulate runs for measures deserialized with voices (e.g. from patches/JSON)\n\t\t// to set endEvent and roundX needed for playback cursor positioning.\n\t\tif (this.regulated && this.position) this.postRegulate();\n\t}\n\n\tget timeSignature(): Fraction {\n\t\treturn this.basics && this.basics[0].timeSignature;\n\t}\n\n\tget keySignature(): number {\n\t\treturn this.basics && this.basics[0].keySignature;\n\t}\n\n\tget timeSignatureChanged(): boolean {\n\t\treturn this.contexts.filter(Boolean)[0].some((term) => [ContextType.TimeSignatureC, ContextType.TimeSignatureN].includes(term.type));\n\t}\n\n\tget doubtfulTimesig(): boolean {\n\t\treturn this.basics && this.basics[0].doubtfulTimesig;\n\t}\n\n\tget regulated(): boolean {\n\t\treturn !!this.voices;\n\t}\n\n\tget validRegulated(): boolean {\n\t\tif (!this.voices) return false;\n\n\t\treturn this.voices.flat(1).every((id) => Number.isFinite(this.events.find((e) => e.id === id)?.tick));\n\t}\n\n\tget rows(): EventMeasure[] {\n\t\treturn this.contexts.map((contexts, si) => {\n\t\t\tconst events = this.events.filter((e) => e.staff === si);\n\n\t\t\treturn {\n\t\t\t\tevents,\n\t\t\t\tcontexts,\n\t\t\t};\n\t\t});\n\t}\n\n\tget eventStartX(): number {\n\t\treturn this.events.length ? Math.min(...this.events.map((e) => e.x)) : this.startX;\n\t}\n\n\tget startX(): number {\n\t\treturn this.position.left;\n\t}\n\n\tget width(): number {\n\t\treturn this.position.right - this.position.left;\n\t}\n\n\tget tickMap(): TickMap {\n\t\treturn this.events\n\t\t\t.concat([this.endEvent as EventTerm])\n\t\t\t.filter(Boolean)\n\t\t\t.reduce((map, event) => {\n\t\t\t\tif (Number.isFinite(event.tick)) {\n\t\t\t\t\tif (!map.has(event.tick)) map.set(event.tick, []);\n\n\t\t\t\t\tmap.get(event.tick).push(event);\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}, new Map());\n\t}\n\n\tget tickToX(): { [tick: number]: number } {\n\t\treturn [...this.tickMap.entries()].reduce((map, [tick, events]) => {\n\t\t\tevents = events.filter((e) => !e.fullMeasureRest && !e.grace);\n\t\t\tif (events.length) {\n\t\t\t\tconst x = Math.min(...events.map((e) => e.x));\n\t\t\t\tmap[tick] = x;\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget tickRates(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest);\n\t\tevents.sort((e1, e2) => e1.x - e2.x);\n\n\t\treturn events.slice(0, events.length - 1).map((e1, i) => {\n\t\t\tconst e2 = events[i + 1];\n\n\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t});\n\t}\n\n\tget tickRatesInStaves(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest && !event.grace);\n\t\tconst sevents: Record = events.reduce((map, event) => {\n\t\t\tmap[event.staff] = map[event.staff] || [];\n\t\t\tmap[event.staff].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst rates = Object.values(sevents).map((es) =>\n\t\t\tes\n\t\t\t\t.sort((e1, e2) => e1.x - e2.x)\n\t\t\t\t.slice(0, es.length - 1)\n\t\t\t\t.map((e1, i) => {\n\t\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t\t\t})\n\t\t);\n\n\t\treturn [].concat(...rates);\n\t}\n\n\tget tickRatesInGroups(): number[] {\n\t\tconst events = this.events.filter((event) => Number.isFinite(event.tick) && !event.fullMeasureRest);\n\t\tconst gevents: Record = events.reduce((map, event) => {\n\t\t\tconst groupIndex = this.staffGroups.findIndex((group) => group.includes(event.staff));\n\t\t\tmap[groupIndex] = map[groupIndex] || [];\n\t\t\tmap[groupIndex].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst rates = Object.values(gevents).map((es) =>\n\t\t\tes\n\t\t\t\t.sort((e1, e2) => e1.x - e2.x)\n\t\t\t\t.slice(0, es.length - 1)\n\t\t\t\t.map((e1, i) => {\n\t\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\t\treturn (e2.tick - e1.tick) / Math.max(e2.x - e1.x, 1e-3);\n\t\t\t\t})\n\t\t);\n\n\t\treturn [].concat(...rates);\n\t}\n\n\tget tickTwist(): number {\n\t\tif (!this.duration || !this.staffGroups) return undefined;\n\n\t\tconst events = this.events.filter(\n\t\t\t(event) => Number.isFinite(event.tick) && !event.fullMeasureRest && !event.grace && !event.tremoloCatcher && !(event.rest && event.division === 0)\n\t\t); // ignore rest0\n\t\tconst gevents: Record = events.reduce((map, event) => {\n\t\t\tconst groupIndex = this.staffGroups.findIndex((group) => group.includes(event.staff));\n\t\t\tmap[groupIndex] = map[groupIndex] || [];\n\t\t\tmap[groupIndex].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\n\t\tconst twists = Object.values(gevents).map((es) => {\n\t\t\tconst eventsXOrder = [...es].sort((e1, e2) => e1.pivotX - e2.pivotX);\n\t\t\tconst xSpan = this.position.right - eventsXOrder[0].x;\n\t\t\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\t\t\tconst e1 = eventsXOrder[i];\n\t\t\t\tconst dx = e2.pivotX - e1.pivotX;\n\t\t\t\tconst dt = e2.tick! - e1.tick!;\n\n\t\t\t\tif (!dt) return dx / xSpan;\n\n\t\t\t\tconst rate = Math.atan2(dt / this.duration, dx / xSpan);\n\n\t\t\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t\t\t});\n\n\t\t\treturn Math.max(0, ...tickTwists);\n\t\t});\n\n\t\treturn Math.max(0, ...twists);\n\t}\n\n\tget eventMap(): Record {\n\t\treturn this.events.reduce((map, event) => {\n\t\t\tmap[event.id] = event;\n\t\t\treturn map;\n\t\t}, {});\n\t}\n\n\tget empty(): boolean {\n\t\treturn !this.events?.length || !this.voices?.length;\n\t}\n\n\tget hasIllEvent(): boolean {\n\t\tconst voicedEventIds = this.voices.flat(1);\n\t\tconst eventMap = this.eventMap;\n\t\treturn (\n\t\t\tthis.regulated &&\n\t\t\tvoicedEventIds.some((id) => {\n\t\t\t\tconst event = eventMap[id];\n\t\t\t\treturn !event.zeroHolder && !Number.isFinite(event.tick) && !event.fullMeasureRest;\n\t\t\t})\n\t\t);\n\t}\n\n\tget brief(): string {\n\t\tconst timesig = `${this.timeSignature.numerator}/${this.timeSignature.denominator}`;\n\t\tconst eventBrieves = this.events.map((e) =>\n\t\t\t[\n\t\t\t\te.staff,\n\t\t\t\te.intX,\n\t\t\t\tMath.round(e.tip ? e.tip.y : e.ys?.[0] ?? 0),\n\t\t\t\te.fullMeasureRest ? 0 : e.division,\n\t\t\t\te.fullMeasureRest ? 0 : e.dots,\n\t\t\t\te.rest ? 'r' : '',\n\t\t\t\te.grace || '',\n\t\t\t\te.stemDirection,\n\t\t\t\te.beam || '',\n\t\t\t].join('|')\n\t\t);\n\n\t\treturn [timesig, ...eventBrieves].join('\\n');\n\t}\n\n\tget regulationHash(): string {\n\t\treturn sha1(this.brief);\n\t}\n\n\t// prefer use originalRegulationHash\n\tget regulationHash0(): string {\n\t\treturn this.originalRegulationHash || this.regulationHash;\n\t}\n\n\tget regulationHashes(): string[] {\n\t\treturn Array.from(new Set([this.originalRegulationHash, this.regulationHash].filter(Boolean)));\n\t}\n\n\tget featureWords(): string[][] | null {\n\t\tif (!this.regulated || !this.voices || !this.voices.length) return null;\n\n\t\tconst invalid = this.tickRatesInStaves.some((rate) => rate < 0);\n\n\t\tconst mainEvents = this.events.filter((event) => !event.zeroHolder && !event.rest);\n\n\t\tconst ys = mainEvents\n\t\t\t.map((event) => event.ys)\n\t\t\t.flat(1)\n\t\t\t.map((y) => `Y${-y * 2}`);\n\t\tconst uys = Array.from(new Set(ys));\n\t\tif (this.keySignature) uys.push(`K${this.keySignature}`);\n\n\t\tconst voices = this.voices\n\t\t\t.map((ids) => ids.map((id) => this.events.find((e) => e.id === id)).filter((event) => !event.zeroHolder && !event.rest))\n\t\t\t.filter((voice) => voice.length);\n\n\t\tconst melodies = invalid ? [] : voices.map((es) => es.map((e) => e.scaleChord).join('-'));\n\n\t\tconst rhythm = invalid ? [] : voices.map((es) => es.map((e) => e.division).join(''));\n\t\tif (this.timeSignature) rhythm.push(`T${this.timeSignature.numerator}/${this.timeSignature.denominator}`);\n\n\t\treturn [uys, melodies, rhythm];\n\t}\n\n\tget barType(): MeasureBarType {\n\t\tif (this.voltaEnd) return 'VoltaRight';\n\n\t\tconst typeEntris = Object.entries(this.barTypes).sort((e1, e2) => e2[1] - e1[1]);\n\t\tif (typeEntris[0] && typeEntris[0][1] >= 1) return typeEntris[0][0] as MeasureBarType;\n\n\t\treturn null;\n\t}\n\n\tget partialDuration(): boolean {\n\t\tif (!Number.isFinite(this.duration)) return false;\n\n\t\tconst signatureDuration = fractionMul(WHOLE_DURATION, this.timeSignature);\n\n\t\treturn this.duration < signatureDuration;\n\t}\n\n\tpostRegulate(): void {\n\t\tthis.endEvent = new EventTerm({ tick: this.duration, x: this.position.right });\n\n\t\tthis.updateRoundX();\n\t\tsolveGraceEvents(this);\n\t\tsolveTremoloPairs(this);\n\t\tthis.updateContextTick();\n\t}\n\n\tupdateRoundX(): void {\n\t\tconst tickToX = this.tickToX;\n\t\tif (tickToX)\n\t\t\tthis.events.forEach((event) => {\n\t\t\t\tconst x = tickToX[event.tick];\n\t\t\t\tif (Number.isFinite(x)) event.roundX = x;\n\t\t\t});\n\t}\n\n\tupdateContextTick(): void {\n\t\tif (!this.staffGroups) return;\n\t\tconst contexts = this.contexts.flat(1);\n\t\tthis.staffGroups.flat(1).forEach((staffIndex) => {\n\t\t\tconst terms = [...this.events.filter((e) => e.staff === staffIndex), ...contexts.filter((c) => c.staff === staffIndex)];\n\t\t\tterms.sort((t1, t2) => t2.x - t1.x); // order by x from right to left\n\n\t\t\tlet tick = this.duration;\n\t\t\tterms.forEach((term) => {\n\t\t\t\tif (term instanceof EventTerm) {\n\t\t\t\t\tif (!term.fullMeasureRest && !term.zeroHolder) tick = term.tick;\n\t\t\t\t} else if (term instanceof ContextedTerm) term.tick = tick;\n\t\t\t});\n\t\t});\n\t}\n\n\tasSolution(ref: SpartitoMeasure = undefined): RegulationSolution {\n\t\tif (!this.regulated) return null;\n\n\t\t//let timeSignature = undefined;\n\t\t//if (ref && printFraction(ref.timeSignature) !== printFraction(this.timeSignature)) timeSignature = this.timeSignature;\n\n\t\treturn {\n\t\t\t//timeSignature,\n\t\t\tevents: this.events.map((e) => {\n\t\t\t\tconst se = {\n\t\t\t\t\tid: e.id,\n\t\t\t\t\ttick: e.tick,\n\t\t\t\t\ttickGroup: e.tickGroup,\n\t\t\t\t\ttimeWarp: e.timeWarp,\n\t\t\t\t} as RegulationSolutionEvent;\n\n\t\t\t\tif (ref) {\n\t\t\t\t\tconst refEvent = ref.events.find((re) => re.id === e.id);\n\t\t\t\t\tif (refEvent) {\n\t\t\t\t\t\tif (e.division !== refEvent.division) se.division = e.division;\n\t\t\t\t\t\tif (e.dots !== refEvent.dots) se.dots = e.dots;\n\t\t\t\t\t\tif (e.grace !== refEvent.grace) se.grace = !!e.grace;\n\t\t\t\t\t\tif (e.beam !== refEvent.beam) se.beam = e.beam;\n\t\t\t\t\t\tif (e.fullMeasureRest !== refEvent.fullMeasureRest) se.fullMeasure = e.fullMeasureRest;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn se;\n\t\t\t}),\n\t\t\tvoices: this.voices,\n\t\t\tduration: this.duration,\n\t\t\tpriority: -this.solutionStat?.loss,\n\t\t};\n\t}\n\n\tapplySolution(solution: RegulationSolution): void {\n\t\tif (solution.timeSignature) {\n\t\t\tthis.basics.forEach((basic) => {\n\t\t\t\tbasic.timeSignature = solution.timeSignature;\n\t\t\t\tbasic.doubtfulTimesig = false;\n\t\t\t});\n\t\t}\n\n\t\tthis.voices = solution.voices;\n\t\tthis.duration = solution.duration;\n\t\tthis.events.forEach((event) => {\n\t\t\tevent.timeWarp = null;\n\t\t\tevent.tick = null;\n\t\t\tevent.tickGroup = null;\n\n\t\t\tconst se = solution.events?.find((e) => e.id === event.id);\n\t\t\tif (se) {\n\t\t\t\tevent.tick = se.tick;\n\t\t\t\tevent.timeWarp = se.timeWarp;\n\t\t\t\tevent.tickGroup = se.tickGroup;\n\n\t\t\t\tif (Number.isFinite(se.division)) event.division = se.division;\n\t\t\t\tif (Number.isFinite(se.dots)) event.dots = se.dots;\n\t\t\t\tif (se.beam !== undefined) event.beam = se.beam as StemBeam;\n\t\t\t\tif (se.grace !== undefined) event.grace = se.grace ? GraceType.Grace : undefined;\n\t\t\t\tif (se.fullMeasure) event.rest = 'R';\n\t\t\t}\n\t\t});\n\n\t\tif (Number.isFinite(solution.priority)) this.solutionStat = { loss: -solution.priority };\n\n\t\tthis.postRegulate();\n\t}\n\n\tcleanupRegulation(): void {\n\t\tthis.voices = null;\n\t\tthis.duration = null;\n\t\tthis.events.forEach((event) => {\n\t\t\tevent.tick = null;\n\t\t\tevent.tickGroup = null;\n\t\t\tevent.timeWarp = null;\n\t\t});\n\t}\n\n\tregulateTest(): void {\n\t\tthis.duration = 0;\n\t\tthis.voices = this.rows.map((row) => row.events.map((e) => e.id));\n\t\tthis.voices.forEach((ids) => {\n\t\t\tlet tick = 0;\n\t\t\tconst events = ids.map((id) => this.events.find((e) => e.id === id));\n\t\t\tevents.forEach((e, index) => {\n\t\t\t\te.tickGroup = index;\n\t\t\t\te.tick = tick;\n\n\t\t\t\ttick += e.duration;\n\t\t\t});\n\n\t\t\tthis.duration = Math.max(this.duration, tick);\n\t\t});\n\t}\n\n\tregulateSimple(): void {\n\t\tSimplePolicy.computeMeasureTicks(this);\n\t\tSimplePolicy.computeMeasureVoices(this);\n\t}\n\n\tasync regulateEquations(options: EquationPolicy.RegulatorOptions): Promise {\n\t\tawait EquationPolicy.regulateMeasure(this, options);\n\t}\n\n\t// compute event.tick, event.tickGroup, event.timeWarp, voices, duration\n\tasync regulate({ policy = 'advanced', ...options }: RegulationOptions = {}): Promise {\n\t\tswitch (policy) {\n\t\t\tcase 'test':\n\t\t\t\tthis.regulateTest();\n\n\t\t\t\tbreak;\n\t\t\tcase 'equations':\n\t\t\tcase 'advanced':\n\t\t\t\tawait this.regulateEquations(options);\n\n\t\t\t\tbreak;\n\t\t\tcase 'simple':\n\t\t\tdefault:\n\t\t\t\tthis.regulateSimple();\n\t\t}\n\n\t\tthis.postRegulate();\n\t}\n\n\tcreatePatch(): PatchMeasure {\n\t\treturn new PatchMeasure({\n\t\t\tmeasureIndex: this.measureIndex,\n\t\t\tstaffMask: this.staffMask,\n\t\t\tbasic: this.basics[0],\n\t\t\t//points: [],\n\t\t\tevents: this.events,\n\t\t\tcontexts: this.contexts,\n\t\t\tmarks: this.marks,\n\t\t\tvoices: this.voices,\n\t\t});\n\t}\n\n\tcreateClusters(): EventCluster[] {\n\t\tconst trueEventIds = this.voices && new Set(this.voices.flat(1));\n\n\t\treturn this.staffGroups\n\t\t\t.filter((idx) => idx.length)\n\t\t\t.map((staffIndices) => {\n\t\t\t\tconst staffY0 = this.position.staffYs[0];\n\t\t\t\tconst staffYn = (n) => this.position.staffYs[staffIndices.indexOf(n)] - staffY0;\n\n\t\t\t\tconst events = this.events.filter((event) => staffIndices.includes(event.staff));\n\t\t\t\tif (!events.length) return null;\n\n\t\t\t\tconst elements: EventElement[] = events.map((event) => ({\n\t\t\t\t\tindex: event.id,\n\t\t\t\t\tvoice: (this.voices || []).findIndex((voice) => voice.includes(event.id)),\n\t\t\t\t\ttype: event.rest ? EventElementType.REST : EventElementType.CHORD,\n\t\t\t\t\tstaff: staffIndices.indexOf(event.staff),\n\t\t\t\t\tx: event.tipX,\n\t\t\t\t\tpivotX: event.pivotX,\n\t\t\t\t\ty1: staffYn(event.staff) + (event.stemDirection === 'u' ? event.tipY : event.ys[event.ys.length - 1]),\n\t\t\t\t\ty2: staffYn(event.staff) + (event.stemDirection === 'u' ? event.ys[0] : event.tipY),\n\t\t\t\t\theadY: event.stemDirection === 'u' ? event.ys[0] : event.ys[event.ys.length - 1],\n\t\t\t\t\tfeature: event.feature,\n\t\t\t\t\tdivision: event.division,\n\t\t\t\t\tdots: event.dots,\n\t\t\t\t\tbeam: event.beam || null,\n\t\t\t\t\tstemDirection: event.stemDirection,\n\t\t\t\t\tgrace: !!event.grace,\n\t\t\t\t\ttremoloCatcher: event.tremoloCatcher,\n\t\t\t\t\ttimeWarped: !!event.timeWarp,\n\t\t\t\t\tfullMeasure: event.fullMeasureRest,\n\t\t\t\t\ttick: event.tick || 0,\n\t\t\t\t\tfake: !event.fullMeasureRest && !event.grace && this.voices && !trueEventIds.has(event.id), // tremoloCatcher deemed as fake\n\t\t\t\t}));\n\t\t\t\tif (!elements.some((elem) => !elem.fake)) return null;\n\n\t\t\t\tconst signatureDuration = fractionMul(WHOLE_DURATION, this.timeSignature);\n\n\t\t\t\t// BOS & EOS\n\t\t\t\telements.unshift({\n\t\t\t\t\tindex: 0,\n\t\t\t\t\ttype: EventElementType.BOS,\n\t\t\t\t\tstaff: null,\n\t\t\t\t\tdivision: null,\n\t\t\t\t\tbeam: null,\n\t\t\t\t\tdots: null,\n\t\t\t\t\tstemDirection: null,\n\t\t\t\t\tgrace: false,\n\t\t\t\t\ttremoloCatcher: false,\n\t\t\t\t\tfullMeasure: false,\n\t\t\t\t\tx: this.position.left,\n\t\t\t\t\tpivotX: this.position.left,\n\t\t\t\t\ty1: 0,\n\t\t\t\t\ty2: 0,\n\t\t\t\t\theadY: 0,\n\t\t\t\t\tfeature: null,\n\t\t\t\t\ttimeWarped: this.duration < signatureDuration,\n\t\t\t\t\ttick: 0,\n\t\t\t\t\tfake: false,\n\t\t\t\t});\n\t\t\t\telements.push({\n\t\t\t\t\tindex: -1,\n\t\t\t\t\ttype: EventElementType.EOS,\n\t\t\t\t\tstaff: null,\n\t\t\t\t\tdivision: null,\n\t\t\t\t\tbeam: null,\n\t\t\t\t\tdots: null,\n\t\t\t\t\tstemDirection: null,\n\t\t\t\t\tgrace: false,\n\t\t\t\t\ttremoloCatcher: false,\n\t\t\t\t\tfullMeasure: false,\n\t\t\t\t\tx: this.position.right,\n\t\t\t\t\tpivotX: this.position.right,\n\t\t\t\t\ty1: 0,\n\t\t\t\t\ty2: 0,\n\t\t\t\t\theadY: 0,\n\t\t\t\t\tfeature: null,\n\t\t\t\t\ttimeWarped: false,\n\t\t\t\t\ttick: this.duration,\n\t\t\t\t\tfake: false,\n\t\t\t\t});\n\n\t\t\t\tlet matrixH = null;\n\t\t\t\tif (this.voices) {\n\t\t\t\t\tmatrixH = elements.map(() => elements.map(() => 0));\n\n\t\t\t\t\tthis.voices.forEach((voice) => {\n\t\t\t\t\t\tlet tar = 0;\n\t\t\t\t\t\tvoice.forEach((id) => {\n\t\t\t\t\t\t\tconst src = elements.findIndex((e) => e.index === id);\n\t\t\t\t\t\t\tif (src > 0 && tar >= 0) matrixH[src][tar] = 1;\n\t\t\t\t\t\t\ttar = src;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (tar >= 0) matrixH[elements.length - 1][tar] = 1;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst annotation = { ...this.solutionStat, patched: this.patched };\n\n\t\t\t\tconst backgroundImages =\n\t\t\t\t\tthis.backgroundImages &&\n\t\t\t\t\tthis.backgroundImages.map(({ url, position }) => ({\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t...position,\n\t\t\t\t\t\t\ty: position.y - staffY0,\n\t\t\t\t\t\t},\n\t\t\t\t\t}));\n\n\t\t\t\treturn new EventCluster({\n\t\t\t\t\tindex: this.measureIndex,\n\t\t\t\t\tduration: this.duration,\n\t\t\t\t\tsignatureDuration,\n\t\t\t\t\tstaffY0,\n\t\t\t\t\telements,\n\t\t\t\t\tmatrixH,\n\t\t\t\t\tannotation,\n\t\t\t\t\tbackgroundImages,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t}\n\n\tapplyClusters(clusters: EventCluster[]): void {\n\t\tconst id_max = this.events.reduce((max, event) => Math.max(max, event.id), 0) + 1;\n\t\tthis.matrixH = Array(id_max + 1)\n\t\t\t.fill(null)\n\t\t\t.map(() => Array(id_max).fill(0));\n\n\t\tclusters.forEach((cluster) => {\n\t\t\tconst ids = cluster.elements.map((e) => e.index);\n\t\t\tconsole.assert(cluster.matrixH.length === ids.length - 1, 'unexpected matrixH size:', cluster.matrixH.length, ids.length);\n\n\t\t\tfor (let is = 1; is < ids.length; ++is) {\n\t\t\t\tfor (let it = 0; it < ids.length - 1; ++it) {\n\t\t\t\t\tconst srcId = ids[is] < 0 ? id_max : ids[is];\n\t\t\t\t\tconst tarId = ids[it];\n\n\t\t\t\t\tthis.matrixH[srcId][tarId] = cluster.matrixH[is - 1][it];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// event predisposition\n\t\t\tcluster.elements.forEach((elem) => {\n\t\t\t\tconst event = this.events.find((event) => event.id === elem.index);\n\t\t\t\tif (event) {\n\t\t\t\t\tevent.predisposition = elem.predisposition;\n\t\t\t\t\tif (event.predisposition.grace !== undefined) event.grace = event.predisposition.grace ? GraceType.Grace : null;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t// estimated measure duration\n\t\tthis.estimatedDuration = clusters.reduce((sum, cluster) => sum + cluster.estimatedDuration, 0) / clusters.length;\n\t}\n}\n\nexport { SpartitoMeasure, EquationPolicy };\n","import { MetaNotation, TokenPosition } from '../performer';\nimport { SimpleClass } from './aux_/typedJSON';\nimport { cosHashes, Hash, hashToBigInt, hashToHex, HashVector } from './hashVector';\nimport { Performing, RegulationOptions, TermMeasure, TermVoice, VoiceMeasure, VoicesStaff } from './interfaces';\nimport { DummyLogger, Logger } from './logger';\nimport { evaluateMeasure } from './measureEvaluator';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { ContextedTerm, EventTerm, TempoTerm, TermPitch, WHOLE_DURATION } from './term';\nimport { TokenType } from './token';\nimport { argmax, frac, fractionMul, noteToPitch, printFraction, reducedFraction } from './utils';\n\nexport const emptyVoiceFromStaffMeasure = (staff: TermMeasure, chiefVoice: boolean = false): VoiceMeasure => {\n\treturn {\n\t\tempty: true,\n\t\tduration: staff.duration,\n\t\ttickMap: {\n\t\t\t[0]: EventTerm.space({ duration: staff.duration, tick: 0 }),\n\t\t},\n\t\ttimeSignature: staff.timeSignature,\n\t\ttimeSigNumeric: staff.timeSigNumeric,\n\t\tkeySignature: staff.keySignature,\n\t\tcontextedTerms: staff.terms.filter((term) => term instanceof ContextedTerm && (!term.staffLevel || chiefVoice)) as ContextedTerm[],\n\t\tmarks: [],\n\t};\n};\n\nconst removeEmptyMeasuresInVoicesStaves = (staves: VoicesStaff[]): void => {\n\t//console.assert(staves[0] && staves[0].voices[0], 'voices is empty:', staves);\n\tif (!(staves[0] && staves[0].voices[0])) {\n\t\tconsole.warn('empty voices:', staves);\n\t\treturn;\n\t}\n\n\tconst measureCount = staves[0].voices[0].measures.length;\n\tconst measureEmpties = Array(measureCount)\n\t\t.fill(null)\n\t\t.map((_, m) => {\n\t\t\tfor (const staff of staves) {\n\t\t\t\tfor (const voice of staff.voices) {\n\t\t\t\t\tconst measure = voice.measures[m];\n\t\t\t\t\tif (!measure.empty) return false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\tmeasureEmpties.forEach((empty, m) => {\n\t\tif (empty) {\n\t\t\tstaves.forEach((staff) =>\n\t\t\t\tstaff.voices.forEach((voice) => {\n\t\t\t\t\tconst measure = voice.measures[m];\n\t\t\t\t\tmeasure.tickMap = {};\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t});\n};\n\nconst markingTiesInVoice = (voice: TermVoice) => {\n\tconst events = [].concat(...voice.measures.map((m) => Object.values(m.tickMap).filter((event) => event instanceof EventTerm)));\n\t//console.log(\"events:\", events);\n\n\tfor (let i = 1; i < events.length; ++i) {\n\t\tconst event0 = events[i - 1];\n\t\tconst event1 = events[i];\n\t\tif (!event0.rest && !event1.rest) {\n\t\t\tif (event0.accessories.some((acc) => acc.type === TokenType.SlurBegin) && event1.accessories.some((acc) => acc.type === TokenType.SlurEnd)) {\n\t\t\t\tconst pitches = event0.pitches.filter((p0) => event1.pitches.some((p1) => p1.note === p0.note && p1.alter === p0.alter));\n\t\t\t\tif (pitches.length > 0) {\n\t\t\t\t\tevent0.tying = true;\n\t\t\t\t\tevent1.tied = true;\n\n\t\t\t\t\tpitches.forEach((p0) => {\n\t\t\t\t\t\tp0.tying = true;\n\t\t\t\t\t\tconst p1 = event1.pitches.find((p1) => p1.note === p0.note && p1.alter === p0.alter);\n\t\t\t\t\t\tp1.tied = true;\n\t\t\t\t\t});\n\n\t\t\t\t\t// remove slurs from accessories\n\t\t\t\t\tpitches.forEach(() => {\n\t\t\t\t\t\tconst si0 = event0.accessories.findIndex((acc) => acc.type === TokenType.SlurBegin);\n\t\t\t\t\t\tif (si0 >= 0) event0.accessories.splice(si0, 1);\n\n\t\t\t\t\t\tconst si1 = event1.accessories.findIndex((acc) => acc.type === TokenType.SlurEnd);\n\t\t\t\t\t\tif (si1 >= 0) event1.accessories.splice(si1, 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nclass Spartito extends SimpleClass {\n\tstatic className = 'Spartito';\n\n\tstavesCount: number;\n\tstaffGroups: number[][];\n\tmeasures: SpartitoMeasure[];\n\n\ttags: string[];\n\n\tconstructor(data: any) {\n\t\tsuper();\n\t\tsuper.assign(data);\n\n\t\tthis.measures.forEach((measure) => (measure.staffGroups = this.staffGroups));\n\t}\n\n\tget regulated(): boolean {\n\t\treturn this.measures.every((m) => m.regulated);\n\t}\n\n\tget solidMeasureCount(): number {\n\t\treturn this.measures.filter((measure) => !measure.empty).length;\n\t}\n\n\tget measureIndexMapping(): number[] {\n\t\tlet n = 0;\n\t\treturn this.measures.map((measure) => {\n\t\t\treturn !measure.empty ? n++ : null;\n\t\t});\n\t}\n\n\tget headBPM(): number {\n\t\tfor (const measure of this.measures) {\n\t\t\tif (measure.marks) {\n\t\t\t\tconst tempoMark = measure.marks.find((mark) => mark instanceof TempoTerm && mark.isValid()) as TempoTerm;\n\t\t\t\tif (tempoMark) return tempoMark.bpm;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget measureLayoutCode(): string {\n\t\tconst ms = this.measures\n\t\t\t.filter((measure) => !measure.empty)\n\t\t\t.map((measure, i) => ({\n\t\t\t\tindex: i + 1,\n\t\t\t\tvb: measure.voltaBegin,\n\t\t\t\tve: measure.voltaEnd,\n\t\t\t\talter: measure.alternative,\n\t\t\t\tleftSign: '',\n\t\t\t\trightSign: '',\n\t\t\t}));\n\t\tms.forEach((m, i) => {\n\t\t\tif (m.vb) {\n\t\t\t\tconst nextI = ms.slice(i + 1).findIndex((mm) => mm.vb);\n\t\t\t\tconst nextVBI = nextI >= 0 ? i + nextI : ms.length;\n\t\t\t\tif (ms.slice(i, nextVBI - 1).some((mm) => mm.ve))\n\t\t\t\t\t// check if volta range closed\n\t\t\t\t\tm.leftSign = '2*[';\n\t\t\t}\n\n\t\t\tif (m.ve) {\n\t\t\t\tconst pms = ms.slice(0, i + 1).reverse();\n\t\t\t\tconst lastVEI = pms.slice(1).findIndex((mm) => mm.ve);\n\t\t\t\tif (lastVEI >= 0) {\n\t\t\t\t\tif (!pms.slice(1, lastVEI + 1).some((mm) => mm.vb))\n\t\t\t\t\t\t// ignore unclosed right volta\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m.alter) {\n\t\t\t\t\tconst lastMI = pms.findIndex((m) => !m.alter);\n\t\t\t\t\tif (lastMI > 0) {\n\t\t\t\t\t\tpms[lastMI].rightSign = ']';\n\t\t\t\t\t\tpms[lastMI - 1].leftSign = '{[';\n\n\t\t\t\t\t\tm.rightSign = '],';\n\n\t\t\t\t\t\tif (ms[i + 1]) ms[i + 1].rightSign = '},';\n\t\t\t\t\t}\n\t\t\t\t} else m.rightSign = '],';\n\n\t\t\t\tif (!pms.some((m) => m.vb)) ms[0].leftSign = '2*[';\n\t\t\t}\n\t\t});\n\n\t\treturn ms\n\t\t\t.map((m) => m.leftSign + m.index.toString() + m.rightSign + (m.rightSign ? '' : ','))\n\t\t\t.join(' ')\n\t\t\t.replace(/,$/, '');\n\t}\n\n\tget qualityScore(): number {\n\t\tconst measures = this.measures.filter((measure) => !measure.empty);\n\t\tconst qss = measures.map(evaluateMeasure).map((e) => e.qualityScore);\n\t\tconst sum = qss.reduce((a, b) => a + b, 0);\n\t\t//console.log('qss:', qss);\n\n\t\treturn measures.length ? sum / measures.length : null;\n\t}\n\n\tdumpEvaluations(): void {\n\t\tconst es = this.measures.filter((measure) => !measure.empty).map((m) => ({ measureIndex: m.measureIndex, ...evaluateMeasure(m) }));\n\t\tconst qss = es.map((e) => e.qualityScore);\n\t\tconst sum = qss.reduce((a, b) => a + b, 0);\n\t\tconsole.log('qualityScore:', sum / es.length);\n\n\t\tconsole.table(es);\n\t}\n\n\tregulate(options: RegulationOptions = {}): void {\n\t\tthis.measures.forEach((m) => m.regulated || m.regulate(options));\n\t}\n\n\tcleanupRegulation(): void {\n\t\tthis.measures.forEach((m) => (m.voices = null));\n\t}\n\n\t// measures' estimatedDuration should be valid\n\trectifyTimeSignatures(logger: Logger = new DummyLogger()): void {\n\t\tconst mis = this.measures\n\t\t\t.map((measure, index) => ({ measure, index }))\n\t\t\t.filter(({ measure, index }) => !index || measure.timeSignatureChanged)\n\t\t\t.map(({ index }) => index);\n\t\tconst segments = mis\n\t\t\t.map((index, si) => this.measures.slice(index, si < mis.length - 1 ? mis[si + 1] : this.measures.length))\n\t\t\t.map((ms) => ms.filter((m) => m.estimatedDuration > 0))\n\t\t\t.filter((seg) => seg.length >= 3 || seg.some((measure) => measure.doubtfulTimesig));\n\t\t//console.log(\"segments:\", segments.map(ms => ms.map(m => m.measureIndex)));\n\n\t\tsegments.forEach((measures) => {\n\t\t\tif (measures[0].patched) {\n\t\t\t\t// rectify according to patched head measure\n\t\t\t\tconst newTimeSignature = measures[0].timeSignature;\n\t\t\t\tconst measuresToFix = measures\n\t\t\t\t\t.slice(1)\n\t\t\t\t\t.filter((measure) => !measure.patched && printFraction(measure.timeSignature) !== printFraction(newTimeSignature));\n\t\t\t\tif (measuresToFix.length) {\n\t\t\t\t\tconst originTimeSignature = measuresToFix[0].timeSignature;\n\t\t\t\t\tmeasuresToFix.forEach((measure) => measure.basics.forEach((basic) => (basic.timeSignature = newTimeSignature)));\n\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t'[rectifyTimeSignatures]\ttimesignator overwrote by patched head:',\n\t\t\t\t\t\t`${printFraction(originTimeSignature)} -> ${printFraction(newTimeSignature)}`,\n\t\t\t\t\t\tmeasuresToFix.map((m) => m.measureIndex)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst originTimeSignature = measures[0].timeSignature;\n\t\t\tconst regularD = Number.isInteger(Math.log2(originTimeSignature.denominator));\n\n\t\t\tlet denominator = regularD ? 4 : 8;\n\t\t\tif (regularD) denominator = Math.max(denominator, measures[0].timeSignature.denominator);\n\n\t\t\tconst numerators = measures.map((measure) => Math.round((measure.estimatedDuration * denominator) / WHOLE_DURATION));\n\t\t\tconst countings = Object.entries(numerators.reduce((c, n) => ((c[n] = (c[n] || 0) + 1), c), {} as Record)).sort(\n\t\t\t\t(p1, p2) => p2[1] - p1[1]\n\t\t\t);\n\t\t\tconst peakCount = countings[0][1];\n\t\t\tconst candidateNumerators = countings.filter(([_, c]) => c > peakCount * 0.6);\n\t\t\tconst bestCounting = candidateNumerators.reduce((best, c) => (Number(c[0]) > Number(best[0]) ? c : best));\n\t\t\tif (bestCounting[1] > 1) {\n\t\t\t\t//console.log(\"countings:\", countings, bestCounting[0]);\n\t\t\t\tlet numerator = Number(bestCounting[0]);\n\t\t\t\tif (!regularD || originTimeSignature.denominator * numerator !== originTimeSignature.numerator * denominator) {\n\t\t\t\t\tif (regularD && denominator !== originTimeSignature.denominator) {\n\t\t\t\t\t\tconst reducedN = (numerator * originTimeSignature.denominator) / denominator;\n\t\t\t\t\t\tif (Number.isInteger(reducedN)) {\n\t\t\t\t\t\t\tnumerator = reducedN;\n\t\t\t\t\t\t\tdenominator = originTimeSignature.denominator;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst measuresToFix = measures.filter((measure) => !measure.patched);\n\n\t\t\t\t\tconst newTimeSignature = frac(numerator, denominator);\n\t\t\t\t\tmeasuresToFix.forEach((measure) => measure.basics.forEach((basic) => (basic.timeSignature = newTimeSignature)));\n\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t'[rectifyTimeSignatures]\ttimesignator overwrote by estimation:',\n\t\t\t\t\t\t`${printFraction(originTimeSignature)} -> ${numerator}/${denominator}`,\n\t\t\t\t\t\tmeasuresToFix.map((m) => m.measureIndex)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tmakeVoiceStaves(): VoicesStaff[] {\n\t\tthis.regulate();\n\n\t\tconst voiceCount = Math.max(...this.measures.map((measure) => measure.voices.length));\n\t\tif (!voiceCount || !Number.isFinite(voiceCount)) return null;\n\n\t\t// mark tied pitches for patched measues\n\t\tthis.measures\n\t\t\t.filter((measure) => measure.patched)\n\t\t\t.forEach((measure) => {\n\t\t\t\tmeasure.events.forEach((event) => {\n\t\t\t\t\tif (event.tied) event.pitches.forEach((pitch) => (pitch.tied = true));\n\t\t\t\t});\n\t\t\t});\n\n\t\t// Move courtesy clefs to the next measure.\n\t\t// A courtesy clef that appears after all events on its staff announces the\n\t\t// clef change for the next measure rather than applying to the current one.\n\t\tfor (let mi = 0; mi < this.measures.length - 1; mi++) {\n\t\t\tconst measure = this.measures[mi];\n\t\t\tconst nextMeasure = this.measures[mi + 1];\n\t\t\tif (!measure.contexts || !nextMeasure?.contexts) continue;\n\n\t\t\tfor (let si = 0; si < measure.contexts.length; si++) {\n\t\t\t\tconst ctxList = measure.contexts[si];\n\t\t\t\tif (!ctxList) continue;\n\n\t\t\t\tconst staffEvents = measure.events?.filter((e: any) => e.staff === si) || [];\n\t\t\t\tconst maxEventX = staffEvents.reduce((max: number, e: any) => Math.max(max, e.x || 0), -Infinity);\n\t\t\t\tif (!Number.isFinite(maxEventX)) continue;\n\n\t\t\t\tconst deferred: ContextedTerm[] = [];\n\t\t\t\tmeasure.contexts[si] = ctxList.filter((term) => {\n\t\t\t\t\tif (term.type === 0 /* ContextType.Clef */ && term.x > maxEventX) {\n\t\t\t\t\t\tdeferred.push(term);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (deferred.length > 0 && nextMeasure.contexts[si]) {\n\t\t\t\t\tdeferred.forEach((term) => (term.tick = 0));\n\t\t\t\t\tnextMeasure.contexts[si] = [...deferred, ...nextMeasure.contexts[si]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// [measure, voice]\n\t\tconst measures: VoiceMeasure[][] = this.measures.map((measure /*, mi*/) => {\n\t\t\tconsole.assert(measure.validRegulated, '[makeVoiceStaves] measure is invalid:', measure);\n\n\t\t\tconst eventMap: { [key: number]: EventTerm } = {};\n\t\t\tmeasure.events.forEach((event) => (eventMap[event.id] = event));\n\n\t\t\tconst leftStaves = new Set(\n\t\t\t\tArray(measure.contexts.length)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map((_, i) => i)\n\t\t\t);\n\n\t\t\tlet bar = null;\n\t\t\tif (measure.barType) {\n\t\t\t\tswitch (measure.barType) {\n\t\t\t\t\tcase 'Segment':\n\t\t\t\t\t\tbar = '||';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Terminal':\n\t\t\t\t\t\tbar = '|.';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst voices: VoiceMeasure[] = measure.voices.map((ids /*, vi*/) => {\n\t\t\t\tconst events = ids.map((id) => eventMap[id]);\n\t\t\t\tevents.sort((e1, e2) => e1.tick - e2.tick);\n\n\t\t\t\tconst tickMap = {};\n\t\t\t\tlet tick = 0;\n\t\t\t\tlet lastEvent = null;\n\t\t\t\tfor (const event of events) {\n\t\t\t\t\tif (!Number.isFinite(event?.tick)) {\n\t\t\t\t\t\tconsole.warn('invalid event tick:', event);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (event.tick > tick) tickMap[tick] = EventTerm.space({ tick, duration: event.tick - tick });\n\t\t\t\t\telse if (!event.grace && event.tick < tick && lastEvent)\n\t\t\t\t\t\tlastEvent.timeWarp = reducedFraction(event.tick - lastEvent.tick, lastEvent.duration);\n\t\t\t\t\t//console.log(\"timewarp:\", event.tick - lastEvent.tick, lastEvent.duration, lastEvent.timeWarp);\n\n\t\t\t\t\ttickMap[event.tick] = event;\n\n\t\t\t\t\tif (!event.zeroHolder) {\n\t\t\t\t\t\ttick = Math.round(event.tick + event.duration);\n\t\t\t\t\t\tlastEvent = event;\n\n\t\t\t\t\t\t// sub grace events\n\t\t\t\t\t\tif (event.graceIds) {\n\t\t\t\t\t\t\tevent.graceIds.forEach((id) => {\n\t\t\t\t\t\t\t\tconst grace = measure.eventMap[id];\n\t\t\t\t\t\t\t\tif (grace) tickMap[grace.tick] = grace;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (measure.endEvent && measure.endEvent.graceIds) {\n\t\t\t\t\tmeasure.endEvent.graceIds.forEach((id) => {\n\t\t\t\t\t\tconst grace = measure.eventMap[id];\n\t\t\t\t\t\tif (grace && (!lastEvent || grace.staff === lastEvent.staff)) tickMap[grace.tick] = grace;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (tick < measure.duration) tickMap[tick] = EventTerm.space({ tick, duration: measure.duration - tick });\n\t\t\t\telse if (tick > measure.duration && Number.isFinite(measure.duration))\n\t\t\t\t\t//console.warn(\"duration out of range:\", tick, column.duration, mi, vi);\n\t\t\t\t\tlastEvent.timeWarp = reducedFraction(measure.duration - lastEvent.tick, lastEvent.duration);\n\n\t\t\t\tconsole.assert(\n\t\t\t\t\t!lastEvent || !lastEvent.timeWarp || (Number.isInteger(lastEvent.timeWarp.numerator) && Number.isInteger(lastEvent.timeWarp.denominator)),\n\t\t\t\t\t'invalid time warp:',\n\t\t\t\t\tlastEvent\n\t\t\t\t);\n\n\t\t\t\tconst staffIndex = events[0] ? events[0].staff : 0;\n\t\t\t\tleftStaves.delete(staffIndex);\n\t\t\t\tconst basic = measure.basics[staffIndex];\n\n\t\t\t\t//const row = measure.rows[staffIndex];\n\t\t\t\tconst contextedTerms = measure.contexts[staffIndex];\n\n\t\t\t\tconst tailEvent = events[events.length - 1];\n\t\t\t\tconst tailStaff = tailEvent ? tailEvent.staff : 0;\n\n\t\t\t\t// TODO: modify full measure rests duration\n\n\t\t\t\treturn {\n\t\t\t\t\ttickMap,\n\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\t...basic,\n\t\t\t\t\t// TODO: consider staff altered voice\n\t\t\t\t\tcontextedTerms,\n\t\t\t\t\tmarks: [],\n\t\t\t\t\tbreak: measure.break,\n\t\t\t\t\tpageBreak: measure.pageBreak,\n\t\t\t\t\theadStaff: staffIndex,\n\t\t\t\t\ttailStaff,\n\t\t\t\t\tbar,\n\t\t\t\t};\n\t\t\t});\n\n\t\t\twhile (voices.length < voiceCount) {\n\t\t\t\tconst staffIndex = leftStaves.values().next().value || 0;\n\t\t\t\tleftStaves.delete(staffIndex);\n\n\t\t\t\tconst basic = measure.basics[staffIndex];\n\t\t\t\tconst terms = measure.contexts[staffIndex];\n\n\t\t\t\tconst chiefVoice = voices.every((voice) => voice.headStaff !== staffIndex);\n\n\t\t\t\tconst voice = emptyVoiceFromStaffMeasure(\n\t\t\t\t\t{\n\t\t\t\t\t\tterms,\n\t\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\t\t...basic,\n\t\t\t\t\t\tbreak: measure.break,\n\t\t\t\t\t\tpageBreak: measure.pageBreak,\n\t\t\t\t\t},\n\t\t\t\t\tchiefVoice\n\t\t\t\t);\n\t\t\t\tvoice.headStaff = staffIndex;\n\t\t\t\tvoice.tailStaff = staffIndex;\n\t\t\t\tvoices.push(voice);\n\t\t\t}\n\n\t\t\treturn voices;\n\t\t});\n\n\t\t// compute traits for voice-measures\n\t\tmeasures.forEach((voices) =>\n\t\t\tvoices.forEach((measure) => {\n\t\t\t\tconst words = [];\n\n\t\t\t\tif (!measure.empty) {\n\t\t\t\t\twords.push(`s${measure.headStaff}`);\n\t\t\t\t\twords.push(`s${measure.tailStaff}`);\n\t\t\t\t}\n\n\t\t\t\tObject.values(measure.tickMap).forEach((event) => {\n\t\t\t\t\tif (event instanceof EventTerm) {\n\t\t\t\t\t\twords.push(`s${event.staff}`);\n\n\t\t\t\t\t\tif (event.stemDirection) {\n\t\t\t\t\t\t\tconst sd = `st${event.staff}-${event.stemDirection}`;\n\t\t\t\t\t\t\twords.push(sd, sd);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (event.grace) words.push(`gd${event.mainDuration}`);\n\t\t\t\t\t\telse words.push(`d${event.mainDuration}`);\n\n\t\t\t\t\t\tif (event.rest) words.push('r-' + event.rest);\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tevent.pitches.forEach((pitch) => {\n\t\t\t\t\t\t\t\twords.push(`p1-${pitch.note}`);\n\t\t\t\t\t\t\t\twords.push(`p8-${Math.round(pitch.note / 8)}`);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tmeasure.trait = HashVector.fromWords(words);\n\t\t\t})\n\t\t);\n\t\t//console.log(\"measure traits:\");\n\t\t//console.table(measures.map(voices => voices.map(measure => hashToHex(measure.trait.toHash()))));\n\n\t\tconst staffToGroup: Record = this.staffGroups\n\t\t\t.flat(1)\n\t\t\t.reduce((map, si) => ((map[si] = this.staffGroups.findIndex((group) => group.includes(si))), map), {});\n\n\t\t// sort voices to connect voices between neighhoring measures\n\t\tconst voiceTraits = Array(voiceCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, index) => ({ vector: HashVector.zero, index, weight: 0, headStaff: null }));\n\t\tmeasures.forEach((voices, mi) => {\n\t\t\tvoiceTraits.sort((v1, v2) => v2.weight - v1.weight);\n\n\t\t\tconst leftVoices = new Set(voices);\n\t\t\tvoiceTraits.forEach((voiceTrait) => {\n\t\t\t\tconst vs = [...leftVoices];\n\t\t\t\tlet measure = vs[0];\n\t\t\t\tif (mi > 0 && vs.length > 1) {\n\t\t\t\t\tconst consistencies = vs.map((measure) =>\n\t\t\t\t\t\tstaffToGroup[measure.headStaff] === staffToGroup[voiceTrait.headStaff]\n\t\t\t\t\t\t\t? cosHashes(voiceTrait.vector.toHash(), measure.trait.toHash())\n\t\t\t\t\t\t\t: -1\n\t\t\t\t\t);\n\t\t\t\t\tmeasure = vs[argmax(consistencies)];\n\t\t\t\t}\n\t\t\t\tleftVoices.delete(measure);\n\n\t\t\t\tmeasure.voiceIndex = voiceTrait.index;\n\t\t\t\tvoiceTrait.vector.scale(0.4).add(measure.trait);\n\n\t\t\t\tvoiceTrait.weight = Object.keys(measure.tickMap).length;\n\n\t\t\t\tif (mi === 0) voiceTrait.headStaff = measure.headStaff;\n\t\t\t});\n\n\t\t\tvoices.sort((m1, m2) => m1.voiceIndex - m2.voiceIndex);\n\t\t});\n\n\t\t//const staffTraits = Array(this.stavesCount).fill(null).map((_, si) => HashVector.fromString(`s${si}`).toHash());\n\t\tconst staffVoiceIndices = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map(() => []);\n\t\tvoiceTraits.forEach((trait) => {\n\t\t\t//const consistencies = staffTraits.map(staff => cosHashes(trait.vector.toHash(), staff));\n\t\t\t//staffVoiceIndices[argmax(consistencies)].push(trait.index);\n\t\t\tstaffVoiceIndices[trait.headStaff].push(trait.index);\n\t\t});\n\n\t\tconst staves = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, si) => {\n\t\t\t\tif (!measures[0]) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvoices: [],\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t//const voiceIndicies = measures[0].map((voice, vi) => ({ voice, vi })).filter(({ voice }) => voice.headStaff === si).map(({ vi }) => vi);\n\t\t\t\tconst voiceIndicies = staffVoiceIndices[si];\n\n\t\t\t\tconst voices = voiceIndicies.map((vi): TermVoice => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmode: 'relative',\n\t\t\t\t\t\tmeasures: measures.map((m) => m[vi]),\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\treturn { voices };\n\t\t\t});\n\n\t\tremoveEmptyMeasuresInVoicesStaves(staves);\n\t\tstaves.forEach((staff) => staff.voices.forEach(markingTiesInVoice));\n\n\t\treturn staves;\n\t}\n\n\tperform(): Performing {\n\t\tconst staves = this.makeVoiceStaves();\n\t\tif (!staves) return null;\n\n\t\tconst tokenMap = new Map();\n\n\t\t// TODO: store staff channels in score\n\t\tconst staffToChannel = Array(this.stavesCount)\n\t\t\t.fill(null)\n\t\t\t.reduce((map, _, i) => {\n\t\t\t\tmap[i] = i;\n\t\t\t\treturn map;\n\t\t\t}, {});\n\n\t\tconst voiceChannels = [].concat(...staves.map((staff, si) => staff.voices.map(() => staffToChannel[si])));\n\n\t\tlet hasTempo = false;\n\n\t\tlet nextTick = 0;\n\t\tlet events0 = null;\n\t\tconst measures = this.measures\n\t\t\t.filter((measure) => !measure.empty)\n\t\t\t.map((measure) => {\n\t\t\t\tconst { systemIndex, right: endX } = measure.position;\n\t\t\t\tconst measureIndex = measure.measureIndex;\n\n\t\t\t\tconst voices: VoiceMeasure[] = [].concat(...staves.map((staff) => staff.voices.map((voice) => voice.measures[measureIndex])));\n\t\t\t\tconst voice0 = voices[0];\n\t\t\t\tconst tick = nextTick;\n\n\t\t\t\t//const signatureDuration = (WHOLE_DURATION * voice0.timeSignature.numerator) / voice0.timeSignature.denominator;\n\n\t\t\t\tnextTick += voice0.duration;\n\n\t\t\t\tconst notes = [].concat(\n\t\t\t\t\t...voices.map((measure, vi) => {\n\t\t\t\t\t\tconst tickFactor = 1; //measure.duration ? signatureDuration / measure.duration : 1;\n\n\t\t\t\t\t\tconst channel = voiceChannels[vi];\n\n\t\t\t\t\t\tconst chords = Object.values(measure.tickMap)\n\t\t\t\t\t\t\t.filter((term) => term instanceof EventTerm && !term.rest)\n\t\t\t\t\t\t\t.map((term: EventTerm) => {\n\t\t\t\t\t\t\t\tconst duration = Math.round(term.duration * tickFactor);\n\t\t\t\t\t\t\t\tconsole.assert(Number.isFinite(term.tick), 'invalid event term tick:', term);\n\t\t\t\t\t\t\t\tconsole.assert(Number.isFinite(duration), 'invalid event term duration:', term);\n\n\t\t\t\t\t\t\t\tif (term.tick >= 0) {\n\t\t\t\t\t\t\t\t\t// exclude minus tick tokens\n\t\t\t\t\t\t\t\t\tterm.noteIds.forEach((id) => {\n\t\t\t\t\t\t\t\t\t\ttokenMap.set(id, {\n\t\t\t\t\t\t\t\t\t\t\tsystem: systemIndex,\n\t\t\t\t\t\t\t\t\t\t\tmeasure: measureIndex,\n\t\t\t\t\t\t\t\t\t\t\tx: term.roundX,\n\t\t\t\t\t\t\t\t\t\t\tendX,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst part = this.staffGroups.findIndex((group) => group.includes(term.staff));\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttick: Math.round(term.tick * tickFactor),\n\t\t\t\t\t\t\t\t\tduration,\n\t\t\t\t\t\t\t\t\tpitches: term.pitches,\n\t\t\t\t\t\t\t\t\tnoteIds: term.noteIds,\n\t\t\t\t\t\t\t\t\tpart,\n\t\t\t\t\t\t\t\t\tstaff: term.staff,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn [].concat(\n\t\t\t\t\t\t\t...chords.map((chord) => {\n\t\t\t\t\t\t\t\t// exclude repeated pitches\n\t\t\t\t\t\t\t\tconst pitchMap: { [pitch: number]: TermPitch } = chord.pitches.reduce((map, pitch) => {\n\t\t\t\t\t\t\t\t\tmap[noteToPitch(pitch)] = pitch;\n\t\t\t\t\t\t\t\t\treturn map;\n\t\t\t\t\t\t\t\t}, {});\n\t\t\t\t\t\t\t\tconst pitches = Object.values(pitchMap).sort((p1, p2) => p1.note - p2.note);\n\n\t\t\t\t\t\t\t\treturn pitches\n\t\t\t\t\t\t\t\t\t.filter((pitch) => !pitch.tied)\n\t\t\t\t\t\t\t\t\t.map((pitch, i) => {\n\t\t\t\t\t\t\t\t\t\tconst pitchValue = noteToPitch(pitch);\n\t\t\t\t\t\t\t\t\t\tconst id = chord.noteIds && chord.noteIds[i];\n\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\ttick: chord.tick,\n\t\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\t\tduration: chord.duration,\n\t\t\t\t\t\t\t\t\t\t\tchordPosition: {\n\t\t\t\t\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\t\t\t\t\tcount: chord.pitches.length,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\ttied: pitch.tied,\n\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\tids: [id],\n\t\t\t\t\t\t\t\t\t\t\ttrack: chord.part,\n\t\t\t\t\t\t\t\t\t\t\tstaff: chord.staff,\n\t\t\t\t\t\t\t\t\t\t\tchannel,\n\t\t\t\t\t\t\t\t\t\t\tsubNotes: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tstartTick: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tendTick: chord.duration,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvelocity: 127,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst events = [];\n\t\t\t\tevents0 = events0 || events;\n\n\t\t\t\tif (measure.marks)\n\t\t\t\t\tmeasure.marks.forEach((mark) => {\n\t\t\t\t\t\tif (mark instanceof TempoTerm) {\n\t\t\t\t\t\t\tconst bpm = mark.bpm;\n\t\t\t\t\t\t\tif (mark.isValid()) {\n\t\t\t\t\t\t\t\tconst es = hasTempo ? events : events0; // set the first tempo to the beginning of the track\n\t\t\t\t\t\t\t\tconst tick = hasTempo ? mark.tick : 0;\n\t\t\t\t\t\t\t\tes.push({\n\t\t\t\t\t\t\t\t\ttrack: 0,\n\t\t\t\t\t\t\t\t\tticks: tick,\n\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\ttype: 'meta',\n\t\t\t\t\t\t\t\t\t\tsubtype: 'setTempo',\n\t\t\t\t\t\t\t\t\t\tmicrosecondsPerBeat: Math.round(60e6 / bpm),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\thasTempo = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\tconst basic = measure.basics[0];\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration: measure.duration,\n\t\t\t\t\tnotes,\n\t\t\t\t\tevents,\n\t\t\t\t\ttimeSignature: basic && basic.timeSignature,\n\t\t\t\t\tkeySignature: basic && basic.keySignature,\n\t\t\t\t};\n\t\t\t});\n\n\t\tif (!hasTempo) {\n\t\t\tmeasures[0].events.push({\n\t\t\t\ttrack: 0,\n\t\t\t\tticks: 0,\n\t\t\t\tdata: {\n\t\t\t\t\ttype: 'meta',\n\t\t\t\t\tsubtype: 'setTempo',\n\t\t\t\t\tmicrosecondsPerBeat: 0.5e6, // TODO\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst notation = new MetaNotation({ measures });\n\n\t\treturn {\n\t\t\tnotation,\n\t\t\ttokenMap,\n\t\t};\n\t}\n\n\tperformByEstimation(): Performing {\n\t\tconst tokenMap = new Map();\n\t\tlet nextTick = 0;\n\n\t\tconst measures = this.measures\n\t\t\t.filter((measure) => measure.events.some((event) => event.predisposition))\n\t\t\t.map((measure) => {\n\t\t\t\tconst tick = nextTick;\n\t\t\t\tconst duration = Math.round(measure.estimatedDuration || fractionMul(WHOLE_DURATION, measure.timeSignature));\n\t\t\t\tconst basic = measure.basics[0];\n\n\t\t\t\tnextTick += duration;\n\n\t\t\t\tconst { systemIndex, right: endX } = measure.position;\n\t\t\t\tconst measureIndex = measure.measureIndex;\n\n\t\t\t\tconst chords = measure.events.filter((event) => event.predisposition && event.predisposition.fake < 0.5 && !event.rest);\n\t\t\t\tconst notes = chords\n\t\t\t\t\t.map((chord) => {\n\t\t\t\t\t\tconst noteTick = Math.round(chord.predisposition.tick);\n\n\t\t\t\t\t\tchord.noteIds.forEach((id) => {\n\t\t\t\t\t\t\ttokenMap.set(id, {\n\t\t\t\t\t\t\t\tsystem: systemIndex,\n\t\t\t\t\t\t\t\tmeasure: measureIndex,\n\t\t\t\t\t\t\t\tx: chord.roundX,\n\t\t\t\t\t\t\t\tendX,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn chord.pitches.map((pitch, i) => {\n\t\t\t\t\t\t\tconst pitchValue = noteToPitch(pitch);\n\t\t\t\t\t\t\tconst id = chord.noteIds && chord.noteIds[i];\n\t\t\t\t\t\t\tconst part = this.staffGroups.findIndex((group) => group.includes(chord.staff));\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttick: noteTick,\n\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\tduration: chord.duration,\n\t\t\t\t\t\t\t\tchordPosition: {\n\t\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\t\tcount: chord.pitches.length,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ttied: pitch.tied,\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\tids: [id],\n\t\t\t\t\t\t\t\ttrack: part,\n\t\t\t\t\t\t\t\tstaff: chord.staff,\n\t\t\t\t\t\t\t\tchannel: 0,\n\t\t\t\t\t\t\t\tsubNotes: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tstartTick: 0,\n\t\t\t\t\t\t\t\t\t\tendTick: chord.duration,\n\t\t\t\t\t\t\t\t\t\tpitch: pitchValue,\n\t\t\t\t\t\t\t\t\t\tvelocity: 127,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.flat(1);\n\n\t\t\t\treturn {\n\t\t\t\t\ttick,\n\t\t\t\t\tduration,\n\t\t\t\t\tnotes,\n\t\t\t\t\tevents: [],\n\t\t\t\t\ttimeSignature: basic && basic.timeSignature,\n\t\t\t\t\tkeySignature: basic && basic.keySignature,\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst notation = new MetaNotation({ measures });\n\n\t\treturn {\n\t\t\tnotation,\n\t\t\ttokenMap,\n\t\t};\n\t}\n\n\tfeatureHash(): Hash {\n\t\tconst headMeasures = this.measures.slice(0, 16);\n\t\tconst measureWords = headMeasures.map((measure) => measure.featureWords);\n\n\t\tconst levels = [1, 4, 16].map((len) => {\n\t\t\tconst meaures = measureWords.slice(0, len).filter(Boolean);\n\t\t\tconst ys = meaures.map((words) => words[0]).flat(1);\n\t\t\tconst melodies = meaures.map((words) => words[1]).flat(1);\n\t\t\tconst rhythm = meaures.map((words) => words[2]).flat(1);\n\n\t\t\tconst [vecY, vecMelody, vecRhythm] = [ys, melodies, rhythm].map(HashVector.fromWords);\n\n\t\t\treturn HashVector.concat(vecY, vecMelody.sub(128), vecRhythm.sub(128));\n\t\t});\n\n\t\treturn HashVector.concat(...levels).toHash();\n\t}\n\n\tfeatureHashHex(): string {\n\t\treturn hashToHex(this.featureHash());\n\t}\n\n\tfeatureHashBigInt(): bigint {\n\t\treturn hashToBigInt(this.featureHash());\n\t}\n\n\tassignMeasureNumbers(): void {\n\t\tlet n = null as any;\n\t\tfor (const measure of this.measures) {\n\t\t\tif (!measure.discard && !measure.events.length) continue;\n\n\t\t\tif (measure.indent) n = null;\n\n\t\t\tif (!Number.isFinite(n)) n = measure.partialDuration ? 0 : 1;\n\n\t\t\tmeasure.measureNumber = n++;\n\t\t}\n\t}\n}\n\nexport { SpartitoMeasure, Spartito };\n","import { Fraction } from './interfaces';\nimport { ContextedTerm, ContextType } from './term';\nimport { Logger, DummyLogger } from './logger';\n\nconst GROUP_N_TO_PITCH = [0, 2, 4, 5, 7, 9, 11];\nconst MIDDLE_C = 60;\n\nexport const mod7 = (x) => {\n\tlet y = x % 7;\n\twhile (y < 0) y += 7;\n\n\treturn y;\n};\n\nconst mod12 = (x) => {\n\tlet y = x % 12;\n\twhile (y < 0) y += 12;\n\n\treturn y;\n};\n\nconst PHONETS = 'CDEFGAB';\n\nconst ALTER_NAMES = {\n\t[-2]: '\\u266D\\u266D',\n\t[-1]: '\\u266D',\n\t[0]: '\\u266E',\n\t[1]: '\\u266F',\n\t[2]: '\\uD834\\uDD2A',\n};\n\n/*\n\tCoordinates:\n\n\t\tnote:\n\t\t\tzero: the middle C line (maybe altered)\n\t\t\tpositive: high (right on piano keyboard)\n\t\t\tunit: a step in scales of the current staff key\n\n\t\tstaff Y:\n\t\t\tzero: the third (middle) line among 5 staff lines\n\t\t\tpositive: down\n\t\t\tunit: a interval between 2 neighbor staff lines\n*/\n\nexport default class StaffContext {\n\tlogger: Logger = new DummyLogger();\n\n\tclef: number = -3;\n\tkeyAlters: number[] = [];\n\toctaveShift: number = 0;\n\talters: number[] = [];\n\n\ttimeSignature: Fraction = {\n\t\tnumerator: 4,\n\t\tdenominator: 4,\n\t};\n\ttimeSigNumeric: boolean = false;\n\ttimeSigNumSet: boolean = false;\n\ttimeSigDenSet: boolean = false;\n\tdoubtingTimesig: boolean = true;\n\n\tchange(term: ContextedTerm) {\n\t\tswitch (term.type) {\n\t\t\tcase ContextType.Clef:\n\t\t\t\tthis.clef = term.clef;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.KeyAcc:\n\t\t\t\tthis.keyAlters[mod7(this.yToNote(term.y))] = term.alter;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.Acc:\n\t\t\t\tthis.alters[this.yToNote(term.y)] = term.alter;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.OctaveShift:\n\t\t\t\tthis.octaveShift = term.octaveShift;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.TimeSignatureC:\n\t\t\t\tthis.timeSigNumeric = false;\n\t\t\t\tswitch (term.tokenType) {\n\t\t\t\t\tcase 'timesig-C44':\n\t\t\t\t\t\tthis.timeSignature.numerator = 4;\n\t\t\t\t\t\tthis.timeSignature.denominator = 4;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'timesig-C22':\n\t\t\t\t\t\tthis.timeSignature.numerator = 2;\n\t\t\t\t\t\tthis.timeSignature.denominator = 2;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tthis.doubtingTimesig = this.partialTimeSignature;\n\n\t\t\t\tbreak;\n\t\t\tcase ContextType.TimeSignatureN:\n\t\t\t\tthis.timeSigNumeric = true;\n\t\t\t\tswitch (term.y) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tif (this.timeSigDenSet) this.timeSignature.denominator = this.timeSignature.denominator * 10 + term.number;\n\t\t\t\t\t\telse this.timeSignature.denominator = term.number;\n\n\t\t\t\t\t\tthis.timeSigDenSet = true;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase -1:\n\t\t\t\t\t\tif (this.timeSigNumSet) this.timeSignature.numerator = this.timeSignature.numerator * 10 + term.number;\n\t\t\t\t\t\telse this.timeSignature.numerator = term.number;\n\n\t\t\t\t\t\tthis.timeSigNumSet = true;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.logger.warn('unexpected time signature Y:', term.y);\n\t\t\t\t}\n\t\t\t\tthis.doubtingTimesig = this.partialTimeSignature;\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tresetMeasure() {\n\t\tthis.alters = [];\n\n\t\tthis.timeSigNumSet = false;\n\t\tthis.timeSigDenSet = false;\n\t}\n\n\tresetSystem() {\n\t\tthis.keyAlters = [];\n\t}\n\n\tget keySignature(): number {\n\t\treturn this.keyAlters.filter((a) => Number.isInteger(a)).reduce((sum, a) => sum + a, 0);\n\t}\n\n\tget partialTimeSignature(): boolean {\n\t\treturn !this.timeSigNumSet !== !this.timeSigDenSet;\n\t}\n\n\tnoteToY(note: number): number {\n\t\treturn -note / 2 - this.clef - this.octaveShift * 3.5;\n\t}\n\n\tpitchToNote(pitch: number, { preferredAlter = null } = {}): { note: number; alter: number } {\n\t\tif (!preferredAlter) preferredAlter = this.keySignature < 0 ? -1 : 1;\n\n\t\tconst group = Math.floor((pitch - MIDDLE_C) / 12);\n\t\tconst gp = mod12(pitch);\n\t\tconst alteredGp = GROUP_N_TO_PITCH.includes(gp) ? gp : mod12(gp - preferredAlter);\n\t\tconst gn = GROUP_N_TO_PITCH.indexOf(alteredGp);\n\t\tthis.logger.assert(gn >= 0, 'invalid preferredAlter:', pitch, preferredAlter, alteredGp);\n\n\t\tconst naturalNote = group * 7 + gn;\n\n\t\tconst alterValue = gp - alteredGp;\n\t\tconst keyAlterValue = this.keyAlters[gn] || 0;\n\t\tconst onAcc = Number.isInteger(this.alters[naturalNote]);\n\n\t\tconst alter = onAcc ? alterValue : alterValue === keyAlterValue ? null : alterValue;\n\n\t\treturn { note: naturalNote, alter };\n\t}\n\n\tpitchToY(pitch: number, { preferredAlter = null } = {}): { y: number; alter: number } {\n\t\tconst { note, alter } = this.pitchToNote(pitch, { preferredAlter });\n\t\tconst y = this.noteToY(note);\n\n\t\treturn { y, alter };\n\t}\n\n\tyToNote(y: number): number {\n\t\tthis.logger.assert(Number.isInteger(y * 2), 'invalid y:', y);\n\n\t\treturn (-y - this.octaveShift * 3.5 - this.clef) * 2;\n\t}\n\n\talterOnNote(note: number): number {\n\t\tif (Number.isInteger(this.alters[note])) return this.alters[note];\n\n\t\tconst gn = mod7(note);\n\t\tif (Number.isInteger(this.keyAlters[gn])) return this.keyAlters[gn];\n\n\t\treturn 0;\n\t}\n\n\tnoteToPitch(note: number): number {\n\t\tconst group = Math.floor(note / 7);\n\t\tconst gn = mod7(note);\n\n\t\tconst pitch = MIDDLE_C + group * 12 + GROUP_N_TO_PITCH[gn] + this.alterOnNote(note);\n\t\tif (!Number.isFinite(pitch)) {\n\t\t\tthis.logger.warn('invalid pitch value:', pitch, note, group, gn);\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn pitch;\n\t}\n\n\tyToPitch(y: number): number {\n\t\treturn this.noteToPitch(this.yToNote(y));\n\t}\n\n\tyToPitchName(y: number): string {\n\t\tconst note = this.yToNote(y);\n\t\tconst group = Math.floor(note / 7);\n\t\tconst gn = mod7(note);\n\n\t\tlet alter = this.alterOnNote(note);\n\t\tif (!alter && !Number.isInteger(this.alters[note])) alter = null;\n\n\t\treturn `${ALTER_NAMES[alter] ? ALTER_NAMES[alter] : ''}${PHONETS[gn]}${group + 4}`;\n\t}\n}\n","import sha1 from 'js-sha1';\n\nimport * as measureLayout from '../measureLayout';\nimport * as staffLayout from '../staffLayout';\nimport { SimpleClass } from './aux_/typedJSON';\nimport { EventSystem, MeasureBrief, MusicSheet, RecognitionSettings, ScoreData, TermMeasure, TermStaff, VoicesStaff } from './interfaces';\nimport { DummyLogger, Logger } from './logger';\nimport { evaluateMeasure } from './measureEvaluator';\nimport { PatchMeasure } from './patch';\nimport { Measure, Page, Staff, System } from './scoreComponents';\nimport { hashSemanticPoint, SemanticPoint, SemanticType } from './semanticPoint';\nimport { BOS_ELEMENT, fractionToElems, SemanticCluster, SemanticElement, SemanticElementType } from './semanticTopology';\nimport { Spartito, SpartitoMeasure } from './spartito';\nimport StaffContext from './staffContext';\nimport { ContextedTerm, ContextType, EventTerm, WHOLE_DURATION } from './term';\nimport type { SemanticPointInMeasure } from './timewiseGraph';\nimport { TimewiseGraph } from './timewiseGraph';\nimport { Token, TokenType } from './token';\nimport { distance2D, solveOverlapping } from './utils';\n\nexport const VERSION = 14;\n\ninterface Topology {\n\tclusters: SemanticCluster[];\n}\n\ninterface PaperOptions {\n\traggedLast: boolean;\n\traggedBottom: boolean;\n\traggedLastBottom: boolean;\n}\n\nconst GRAND_STAFF_LAYOUT = '{-}';\n\nconst processStaffContext = (staff: TermStaff, logger: Logger = new DummyLogger()): void => {\n\tconst context = new StaffContext();\n\tcontext.logger = logger;\n\n\tfor (const row of staff.rows) {\n\t\tfor (const measure of row) {\n\t\t\tconst startEvent = measure.terms.find((term) => term instanceof EventTerm) as EventTerm;\n\t\t\tlet tick = startEvent ? Math.min(startEvent.tick, 0) : 0;\n\n\t\t\tmeasure.terms.forEach((term) => {\n\t\t\t\tif (term instanceof ContextedTerm) {\n\t\t\t\t\tterm.tick = tick; // TODO: not working here because measure not regulated yet\n\t\t\t\t\tcontext.change(term);\n\t\t\t\t} else if (term instanceof EventTerm) {\n\t\t\t\t\tconst endTick = term.tick + (term.duration || 0);\n\t\t\t\t\tif (endTick > tick) tick = endTick;\n\n\t\t\t\t\tif (term.ys) {\n\t\t\t\t\t\tterm.pitches = term.ys.map((y) => {\n\t\t\t\t\t\t\tconst note = context.yToNote(y);\n\t\t\t\t\t\t\tconst alter = context.alterOnNote(note);\n\n\t\t\t\t\t\t\treturn { note, alter, octaveShift: context.octaveShift };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeasure.timeSignature = { ...context.timeSignature };\n\t\t\tmeasure.timeSigNumeric = context.timeSigNumeric;\n\t\t\tmeasure.doubtfulTimesig =\n\t\t\t\tcontext.doubtingTimesig ||\n\t\t\t\t!Number.isInteger(Math.log2(measure.timeSignature.denominator)) ||\n\t\t\t\tmeasure.timeSignature.numerator <= measure.timeSignature.denominator / 4;\n\n\t\t\tmeasure.keySignature = context.keySignature;\n\n\t\t\t// fill empty measure duration\n\t\t\tif (measure.duration === 0) measure.duration = (WHOLE_DURATION * measure.timeSignature.numerator) / measure.timeSignature.denominator;\n\n\t\t\tcontext.resetMeasure();\n\t\t}\n\n\t\tcontext.resetSystem();\n\t}\n};\n\nconst upgradeScoreData = (data: ScoreData): ScoreData => {\n\tif (data.version < 3) {\n\t\tconst { version, stavesCount, layoutTemplate, ...fields } = data;\n\t\tvoid version;\n\t\tvoid layoutTemplate;\n\n\t\tlet staffLayoutCode =\n\t\t\tstavesCount > 1\n\t\t\t\t? Array(stavesCount - 1)\n\t\t\t\t\t\t.fill(',')\n\t\t\t\t\t\t.join('')\n\t\t\t\t: '';\n\n\t\t// use graph staff by default for 2 staves score\n\t\tif (stavesCount === 2) staffLayoutCode = '{-}';\n\n\t\tdata = {\n\t\t\tversion: 3,\n\t\t\tstaffLayoutCode,\n\t\t\t...fields,\n\t\t};\n\t}\n\n\tif (data.version < 8) {\n\t\t// upgrade system measure bar semantics\n\t\tdata.pages.forEach((page) => {\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tif (system.semantics) {\n\t\t\t\t\tconst bars = system.semantics.filter((point) => point.semantic === SemanticType.vline_BarMeasure);\n\n\t\t\t\t\tsystem.semantics = [].concat(\n\t\t\t\t\t\t...system.staves.map((staff) => {\n\t\t\t\t\t\t\tconst oy = staff.top + staff.staffY;\n\n\t\t\t\t\t\t\treturn bars.map((point) => ({\n\t\t\t\t\t\t\t\t...point,\n\t\t\t\t\t\t\t\ty: point.y + oy,\n\t\t\t\t\t\t\t\textension: {\n\t\t\t\t\t\t\t\t\t...point.extension,\n\t\t\t\t\t\t\t\t\ty1: point.extension.y1 + oy,\n\t\t\t\t\t\t\t\t\ty2: point.extension.y2 + oy,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tdata.version = 8;\n\t}\n\n\tif (data.version < 9) {\n\t\t// remove old format spartito\n\t\tdata.spartito = null;\n\n\t\tdata.version = 9;\n\t}\n\n\treturn data;\n};\n\nconst bitsToMask = (bits: number[]): number => bits.reduce((mask, bit, i) => (bit ? mask | (1 << i) : mask), 0);\n\ninterface PointPosition {\n\tpoint: SemanticPoint;\n\tpageIndex: number;\n\tsystemIndex: number;\n\tstaffIndex: number;\n}\n\ninterface MeasureValidation {\n\ttickMap: { [tick: number]: number };\n}\n\ninterface Size {\n\twidth: number;\n\theight: number;\n}\n\nclass Score extends SimpleClass {\n\tstatic className = 'Score';\n\n\tversion = VERSION;\n\n\ttitle: string;\n\t// in pixels\n\tpageSize: Size;\n\tunitSize: number;\n\tstaffLayoutCode: string;\n\n\tpaperOptions?: Partial;\n\n\theaders: { [key: string]: string };\n\n\ttextAnnotations: { [id: string]: string };\n\n\ttags?: string[];\n\n\tinstrumentDict: { [key: string]: string };\n\n\tpages: Page[];\n\ttopology: Topology;\n\tspartito?: Spartito;\n\n\tpatches?: PatchMeasure[];\n\n\tsettings: RecognitionSettings;\n\n\tconstructor(data: ScoreData) {\n\t\tsuper();\n\t\tsuper.assign(upgradeScoreData(data));\n\n\t\tthis.pages = this.pages || [];\n\t\tthis.headers = this.headers || {};\n\t\tthis.instrumentDict = this.instrumentDict || {};\n\n\t\tthis.pageSize = this.pageSize || {\n\t\t\t// A4 paper\n\t\t\twidth: 794,\n\t\t\theight: 1122,\n\t\t};\n\n\t\tthis.unitSize = this.unitSize || null;\n\n\t\tthis.staffLayoutCode = this.staffLayoutCode || (this.maxStavesCount === 2 ? GRAND_STAFF_LAYOUT : Array(this.maxStavesCount).fill('').join(','));\n\t}\n\n\tget systems(): System[] {\n\t\treturn [].concat(...this.pages.map((page) => page.systems));\n\t}\n\n\tget measureCount(): number {\n\t\treturn this.systems.reduce((sum, system) => sum + (system.measureCount || 0), 0);\n\t}\n\n\tget imageKeys(): string[] {\n\t\treturn [\n\t\t\t...this.pages.map((page) => page.source?.url),\n\t\t\t...this.systems.map((system) => system.backgroundImage),\n\t\t\t...[].concat(\n\t\t\t\t...this.systems.map((system) =>\n\t\t\t\t\t[...system.staves.map((staff) => staff.backgroundImage), ...system.staves.map((staff) => staff.maskImage)].filter(Boolean)\n\t\t\t\t)\n\t\t\t),\n\t\t].filter(Boolean);\n\t}\n\n\tget breakSystemIndices(): number[] {\n\t\tconst indices = [];\n\t\tlet systemCount = 0;\n\t\tthis.pages.forEach((page, i) => {\n\t\t\tif (i < this.pages.length - 1) {\n\t\t\t\tsystemCount += page.systems.length;\n\t\t\t\tindices.push(systemCount - 1);\n\t\t\t}\n\t\t});\n\n\t\treturn indices;\n\t}\n\n\tget staffLayout(): staffLayout.StaffLayout {\n\t\treturn staffLayout.parseCode(this.staffLayoutCode);\n\t}\n\n\tget measureLayoutCode(): string {\n\t\treturn this.spartito?.measureLayoutCode;\n\t}\n\n\tget maxStavesCount(): number {\n\t\treturn Math.max(...this.systems.map((system) => system.staves.length), 0);\n\t}\n\n\tget sidBlackList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidBlackList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget sidWhiteList(): Set {\n\t\tconst ids = [].concat(...this.systems.map((system) => system.sidWhiteList));\n\n\t\treturn new Set(ids);\n\t}\n\n\tget semanticHash(): string {\n\t\tconst ids = [].concat(\n\t\t\t...this.systems.map((system) =>\n\t\t\t\t[].concat(...system.staves.map((staff) => (staff.semantics ? system.qualifiedSemantics(staff.semantics).map((s) => s.id) : [])))\n\t\t\t)\n\t\t);\n\t\treturn sha1(ids.join(''));\n\t}\n\n\teventSystemsToTermStaves(eventSystems: EventSystem[], logger: Logger = new DummyLogger()): TermStaff[] {\n\t\t// [staff]\n\t\tconst termStaves: TermStaff[] = Array(this.maxStavesCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, staffIndex): TermStaff => {\n\t\t\t\treturn {\n\t\t\t\t\t// [system, measure]\n\t\t\t\t\trows: eventSystems.map((sys, i) =>\n\t\t\t\t\t\tsys.columns.map((column, ii): TermMeasure => {\n\t\t\t\t\t\t\tconst measure = column.rows[staffIndex];\n\t\t\t\t\t\t\tconsole.assert(measure, '[eventSystemsToTermStaves] measure is null:', staffIndex, column.rows);\n\n\t\t\t\t\t\t\tconst contexts = measure.contexts;\n\n\t\t\t\t\t\t\t// prepend octave shift 0 at begin of every system\n\t\t\t\t\t\t\tif (ii === 0) {\n\t\t\t\t\t\t\t\tif (!contexts.some((term) => term.type === ContextType.OctaveShift)) {\n\t\t\t\t\t\t\t\t\tcontexts.unshift(\n\t\t\t\t\t\t\t\t\t\tnew ContextedTerm({\n\t\t\t\t\t\t\t\t\t\t\tstaff: staffIndex,\n\t\t\t\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\t\t\t\t\ttokenType: TokenType.OctaveShift0,\n\t\t\t\t\t\t\t\t\t\t\ttick: 0,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst terms = [...(measure.events || []), ...contexts].sort((t1, t2) => t1.x - t2.x);\n\n\t\t\t\t\t\t\tconst pageBreak = staffIndex === 0 && ii === sys.columns.length - 1 && this.breakSystemIndices.includes(i);\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tterms,\n\t\t\t\t\t\t\t\t//xToTick: column.xToTick,\n\t\t\t\t\t\t\t\tduration: column.duration,\n\t\t\t\t\t\t\t\tpageBreak,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t});\n\t\ttermStaves.forEach((staff) => processStaffContext(staff, logger));\n\n\t\treturn termStaves;\n\t}\n\n\tresetPageLayout(parameters: { unitSize?: number; pageSize?: Size }) {\n\t\tconst { unitSize = this.unitSize, pageSize = this.pageSize } = parameters;\n\n\t\tconst newCenter = {\n\t\t\tx: (pageSize.width * 0.5) / unitSize,\n\t\t\ty: (pageSize.height * 0.5) / unitSize,\n\t\t};\n\n\t\tthis.pages.forEach((page) => {\n\t\t\tconst offsetX = newCenter.x - page.width / 2;\n\t\t\tconst offsetY = newCenter.y - page.height / 2;\n\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tsystem.left += offsetX;\n\t\t\t\tsystem.top += offsetY;\n\t\t\t});\n\n\t\t\tif (page.semantics) {\n\t\t\t\tpage.semantics.forEach((point) => {\n\t\t\t\t\tpoint.x += offsetX;\n\t\t\t\t\tpoint.y += offsetY;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tpage.width = pageSize.width / unitSize;\n\t\t\tpage.height = pageSize.height / unitSize;\n\n\t\t\tpage.assemble({ textAnnotations: this.textAnnotations });\n\t\t});\n\n\t\tthis.unitSize = unitSize;\n\t\tthis.pageSize = pageSize;\n\t}\n\n\tgetMeasure(measureIndex: number): {\n\t\tmeasureIndex: number;\n\t\tsystem: System;\n\t\tlocalIndex: number;\n\t\tleft: number;\n\t\tright: number;\n\t\tmeasures: Measure[];\n\t} {\n\t\tlet index = measureIndex;\n\t\tfor (const system of this.systems) {\n\t\t\tif (index < system.measureCount) {\n\t\t\t\tconst staff = system.staves[0];\n\t\t\t\tconst measure = staff.measures[index];\n\t\t\t\tconsole.assert(measure, 'measure is null:', system.measureCount, index, staff.measures);\n\t\t\t\tconst measures = system.getStaffArray(this.maxStavesCount).map((staff) => staff && staff.measures[index]);\n\n\t\t\t\treturn {\n\t\t\t\t\tmeasureIndex,\n\t\t\t\t\tsystem,\n\t\t\t\t\tlocalIndex: index,\n\t\t\t\t\tleft: measure.left,\n\t\t\t\t\tright: measure.right,\n\t\t\t\t\tmeasures,\n\t\t\t\t};\n\t\t\t}\n\t\t\tindex -= system.measureCount;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetRawCluster(measureIndex: number, threshold: number, { timeSignature }: Partial = {}): SemanticCluster {\n\t\tconst position = this.getMeasure(measureIndex);\n\t\tif (!position) return null;\n\n\t\tconst { system, left, right } = position;\n\t\t//console.log(\"measure:\", system, left, right);\n\n\t\tconst elements: SemanticElement[] = [BOS_ELEMENT];\n\n\t\tif (timeSignature) elements.push(...fractionToElems(timeSignature));\n\n\t\tconst systemY0 = system.staves[0].top + system.staves[0].staffY - 2;\n\n\t\tsystem.staves.forEach((staff) => {\n\t\t\tlet points = system.qualifiedSemantics(staff.semantics, threshold).filter((point) => point.x > left && point.x < right);\n\t\t\tpoints = solveOverlapping(points);\n\n\t\t\t// exlude tempo noteheads\n\t\t\tconst tempoNhs = points.filter((point) => point.semantic === SemanticType.TempoNotehead);\n\t\t\ttempoNhs.forEach((tempoNh) => {\n\t\t\t\tconst index = points.findIndex((point) => /^Notehead/.test(point.semantic) && distance2D(tempoNh, point) < 0.3);\n\t\t\t\tif (index >= 0) points.splice(index, 1);\n\t\t\t});\n\n\t\t\tconst y0 = staff.top + staff.staffY - systemY0;\n\n\t\t\tpoints.forEach((point) => {\n\t\t\t\tconst type = SemanticElementType[point.semantic];\n\t\t\t\tif (type) {\n\t\t\t\t\tlet y1 = point.y;\n\t\t\t\t\tlet y2 = point.y;\n\t\t\t\t\tif (type === SemanticElementType.vline_Stem) {\n\t\t\t\t\t\ty1 = point.extension.y1;\n\t\t\t\t\t\ty2 = point.extension.y2;\n\t\t\t\t\t}\n\n\t\t\t\t\telements.push({\n\t\t\t\t\t\tid: point.id,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tstaff: staff.index,\n\t\t\t\t\t\tx: point.x - left,\n\t\t\t\t\t\ty1: y1 + y0,\n\t\t\t\t\t\ty2: y2 + y0,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn new SemanticCluster({\n\t\t\tindex: measureIndex,\n\t\t\telements,\n\t\t});\n\t}\n\n\tgetRawClusters(threshold: number = 1): SemanticCluster[] {\n\t\t//const times = this.getMeasuresTime();\n\n\t\treturn Array(this.measureCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, mi) => this.getRawCluster(mi, threshold /*, times[mi]*/));\n\t}\n\n\tmakeSpartito(logger: Logger = new DummyLogger()): Spartito {\n\t\tlet eventSystems: EventSystem[] = this.systems.map((system) => system.getEvents(this.maxStavesCount));\n\n\t\t/*if (this.topology) {\n\t\t\tconst clusters = this.topology.clusters;\n\n\t\t\t// [measure, staff, event]\n\t\t\tconst eventsColumns: ChordColumn[][][] = clusters\n\t\t\t\t.filter((cluster) => cluster.index < this.measureCount)\n\t\t\t\t.reduce((columns, cluster) => {\n\t\t\t\t\tconst { system, measures } = this.getMeasure(cluster.index);\n\t\t\t\t\tconst events = cluster.getEvents();\n\n\t\t\t\t\tconst systemY0 = system.staves[0].top + system.staves[0].staffY - 2;\n\t\t\t\t\tconst x0 = measures.filter(Boolean)[0].left;\n\n\t\t\t\t\tconst staves = system.getStaffArray(this.maxStavesCount);\n\n\t\t\t\t\t// translate by staff & measure relative offset\n\t\t\t\t\tevents.forEach((event) => {\n\t\t\t\t\t\tconst staff = staves[event.staff];\n\t\t\t\t\t\tconst y0 = staff.top + staff.staffY - systemY0;\n\t\t\t\t\t\tevent.ys = event.ys.map((y) => roundNumber(y - y0, 0.5));\n\n\t\t\t\t\t\tevent.left += x0;\n\t\t\t\t\t\tevent.right += x0;\n\t\t\t\t\t});\n\n\t\t\t\t\tconst column = measures.map((measure, staffIndex) => {\n\t\t\t\t\t\tif (!measure) return [];\n\n\t\t\t\t\t\t//console.log(\"m:\", mi, \"s:\", staffIndex);\n\t\t\t\t\t\tconst localEvents = events.filter((event) => event.staff === staffIndex);\n\t\t\t\t\t\t//measure.assignModifiersOnEvents(localEvents);\n\t\t\t\t\t\tmeasure.assignAccessoriesOnEvents(localEvents);\n\n\t\t\t\t\t\treturn localEvents;\n\t\t\t\t\t});\n\n\t\t\t\t\tcolumns[cluster.index] = column;\n\n\t\t\t\t\treturn columns;\n\t\t\t\t}, []);\n\n\t\t\tconst breakSystemIndices = this.breakSystemIndices;\n\n\t\t\tconst basicEventSystems = eventSystems;\n\t\t\teventSystems = [];\n\n\t\t\tlet measures = 0;\n\t\t\tfor (const system of this.systems) {\n\t\t\t\tconst esys = system.getEventsFunctional(this.maxStavesCount, (si, mi) => eventsColumns[measures + mi] && eventsColumns[measures + mi][si], [], {\n\t\t\t\t\tuseXMap: false,\n\t\t\t\t});\n\n\t\t\t\tconst basicSys = basicEventSystems[system.index];\n\t\t\t\t//onst nullN = esys.columns.filter(c => !c).length;\n\t\t\t\t//if (nullN)\n\t\t\t\t//\tconsole.log(\"null:\", nullN, esys.columns.length);\n\t\t\t\tesys.columns = esys.columns.map((column, i) => (column ? column : basicSys.columns[i]));\n\n\t\t\t\tconst sysIndex = this.systems.indexOf(system);\n\t\t\t\tconst pageBreak = breakSystemIndices.includes(sysIndex);\n\t\t\t\tconst lastColumn = esys.columns[esys.columns.length - 1];\n\t\t\t\tif (lastColumn) {\n\t\t\t\t\tlastColumn.break = true;\n\t\t\t\t\tlastColumn.pageBreak = pageBreak;\n\t\t\t\t}\n\n\t\t\t\teventSystems.push(esys);\n\t\t\t\tmeasures += system.measureCount;\n\t\t\t}\n\t\t}*/\n\n\t\tconst staves = this.eventSystemsToTermStaves(eventSystems, logger);\n\n\t\t// assign staff basics for columns\n\t\teventSystems.forEach((sys, ri) => {\n\t\t\tsys.columns.forEach((column, mi) => {\n\t\t\t\tcolumn.basics = staves.map((staff) => {\n\t\t\t\t\tconst { timeSignature, timeSigNumeric, keySignature, doubtfulTimesig } = staff.rows[ri][mi];\n\n\t\t\t\t\treturn { timeSignature, timeSigNumeric, keySignature, doubtfulTimesig };\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tconst clusters = null; //this.topology && this.topology.clusters;\n\n\t\tconst measures = [].concat(\n\t\t\t...eventSystems.map((esys) =>\n\t\t\t\tesys.columns.map((column) => {\n\t\t\t\t\tconst measureIndex = column.measureIndex;\n\t\t\t\t\tconst { system, localIndex, left, right } = this.getMeasure(measureIndex);\n\n\t\t\t\t\tconst cluster = clusters && clusters.find((cluster) => cluster.index === measureIndex);\n\n\t\t\t\t\tconst staffYsFull = [];\n\t\t\t\t\tsystem.staves.forEach((staff) => (staffYsFull[staff.index] = staff.top + staff.staffY));\n\n\t\t\t\t\tconst patch = this.patches && this.patches.find((patch) => patch.measureIndex === measureIndex);\n\t\t\t\t\tconst events = patch ? patch.events : SpartitoMeasure.reorderEvents([].concat(...column.rows.map((row) => row.events)), staffYsFull);\n\n\t\t\t\t\tconst barTypes = Object.fromEntries(Object.entries(column.barTypes).map(([k, v]) => [k, v / system.staves.length]));\n\t\t\t\t\tconst indent = localIndex === 0 && system.indent;\n\n\t\t\t\t\treturn new SpartitoMeasure({\n\t\t\t\t\t\tmeasureIndex,\n\t\t\t\t\t\tstaffMask: esys.staffMask,\n\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\tsystemIndex: system.index,\n\t\t\t\t\t\t\tlocalIndex,\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\tright,\n\t\t\t\t\t\t\tstaffYs: system.staves.map((staff) => staff.top + staff.staffY),\n\t\t\t\t\t\t\tstaffYsFull,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t//startX: column.startX,\n\t\t\t\t\t\t//width: column.width,\n\t\t\t\t\t\tduration: patch ? patch.duration : column.duration,\n\t\t\t\t\t\tevents,\n\t\t\t\t\t\tcontexts: column.rows.map((row) => row.contexts),\n\t\t\t\t\t\tmarks: column.marks,\n\t\t\t\t\t\tbreak: column.break,\n\t\t\t\t\t\tpageBreak: column.pageBreak,\n\t\t\t\t\t\tvoltaBegin: column.voltaBegin,\n\t\t\t\t\t\tvoltaEnd: column.voltaEnd,\n\t\t\t\t\t\talternative: column.alternative,\n\t\t\t\t\t\tbarTypes,\n\t\t\t\t\t\tindent,\n\t\t\t\t\t\tbasics: patch ? patch.basics : column.basics,\n\t\t\t\t\t\tmatrixH: cluster && cluster.matrixH,\n\t\t\t\t\t\tmatrixV: cluster && cluster.matrixV,\n\t\t\t\t\t\tvoices: patch ? patch.voices : null,\n\t\t\t\t\t\tpatched: !!patch,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\n\t\tconst staffLayout = this.staffLayout;\n\t\tconst staffGroups = staffLayout.standaloneGroups.map((ids) => ids.map((id) => staffLayout.staffIds.indexOf(id)));\n\n\t\tthis.spartito = new Spartito({\n\t\t\tstavesCount: this.maxStavesCount,\n\t\t\tstaffGroups,\n\t\t\tmeasures,\n\t\t});\n\n\t\treturn this.spartito;\n\t}\n\n\tmakeMusicSheet(): MusicSheet {\n\t\tconst spartito = this.spartito || this.makeSpartito();\n\n\t\tif (!spartito.regulated) console.warn('[makeMusicSheet]\tspartito not regulated.');\n\n\t\tconst voiceStaves = spartito.makeVoiceStaves();\n\n\t\tconst { title, pageSize, unitSize, staffLayout, paperOptions, headers, instrumentDict } = this;\n\t\tconst measureLayout = this.getMeasureLayout();\n\n\t\treturn {\n\t\t\ttitle,\n\t\t\tpageSize,\n\t\t\tunitSize,\n\t\t\tmeasureLayout,\n\t\t\tstaffLayout,\n\t\t\tpaperOptions,\n\t\t\theaders,\n\t\t\tvoiceStaves,\n\t\t\tinstrumentDict,\n\t\t};\n\t}\n\n\tfindPoint(sid: string): PointPosition {\n\t\tfor (const system of this.systems) {\n\t\t\tfor (let si = 0; si < system.staves.length; ++si) {\n\t\t\t\tconst point = system.staves[si].semantics.find((point) => point.id === sid);\n\t\t\t\tif (point) {\n\t\t\t\t\tconst pageIndex = this.pages.findIndex((page) => page.systems.includes(system));\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpoint,\n\t\t\t\t\t\tpageIndex,\n\t\t\t\t\t\tsystemIndex: system.index,\n\t\t\t\t\t\tstaffIndex: si,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetMeasureSemantics(systemIndex: number, localIndex: number): SemanticPointInMeasure[] {\n\t\tconst system = this.systems[systemIndex];\n\t\tif (!system) return null;\n\n\t\tconst left = localIndex ? system.measureBars[localIndex - 1] : 0;\n\t\tconst right = system.measureBars[localIndex] || system.width;\n\n\t\treturn system.staves\n\t\t\t.map((staff, si) => {\n\t\t\t\tconst staffY = staff.top + staff.staffY;\n\t\t\t\treturn staff.semantics\n\t\t\t\t\t.filter((point) => point.x >= left && point.x < right)\n\t\t\t\t\t.map((point) => {\n\t\t\t\t\t\tconst [y1, y2] = Number.isFinite(point.extension?.y1) ? [point.extension.y1, point.extension.y2] : [point.y, point.y];\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...point,\n\t\t\t\t\t\t\tstaff: si,\n\t\t\t\t\t\t\tsy1: y1 + staffY,\n\t\t\t\t\t\t\tsy2: y2 + staffY,\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t.flat(1);\n\t}\n\n\tmakeTimewiseGraph({ store = false }: { store?: boolean } = {}): TimewiseGraph {\n\t\tif (!this.spartito) return null;\n\n\t\tconst measures = this.spartito.measures\n\t\t\t.filter((measure) => measure.events.length > 0)\n\t\t\t.map((measure) => {\n\t\t\t\tconst points = this.getMeasureSemantics(measure.position.systemIndex, measure.position.localIndex);\n\n\t\t\t\tconst graph = {\n\t\t\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\t\t\tleft: measure.position.left,\n\t\t\t\t\tright: measure.position.right,\n\t\t\t\t\tpoints,\n\t\t\t\t};\n\n\t\t\t\tif (store) measure.graph = graph;\n\n\t\t\t\treturn graph;\n\t\t\t});\n\n\t\treturn { measures };\n\t}\n\n\tgetTokenMap(): Map {\n\t\tconst map = new Map();\n\n\t\tthis.systems.forEach((system) =>\n\t\t\tsystem.staves.forEach((staff) => staff.measures.forEach((measure) => measure.tokens.forEach((token) => map.set(token.id, token))))\n\t\t);\n\n\t\treturn map;\n\t}\n\n\tassemble(confidenceThreshold: number = 1, logger: Logger = new DummyLogger()) {\n\t\tconst ids = new Map();\n\n\t\tconst append = (systemIndex, staffIndex, point) => {\n\t\t\tconst id = hashSemanticPoint(systemIndex, staffIndex, point);\n\t\t\tlogger.assert(!ids.has(id), 'semantic point hash conflicted:', id, point, ids.get(id));\n\n\t\t\tids.set(id, point);\n\t\t};\n\n\t\tthis.pages.forEach((page, index) => (page.index = index));\n\n\t\tlet measureIndex = 0;\n\t\tthis.systems.forEach((system, systemIndex) => {\n\t\t\tsystem.index = systemIndex;\n\t\t\tsystem.headMeasureIndex = measureIndex;\n\t\t\tsystem.prev = this.systems[systemIndex - 1] || null;\n\t\t\tsystem.next = this.systems[systemIndex + 1] || null;\n\n\t\t\tif (system.semantics && system.semantics.length) system.semantics.forEach((point) => append(systemIndex, null, point));\n\n\t\t\tsystem.assemble(confidenceThreshold, logger);\n\t\t\tmeasureIndex += system.measureCount;\n\t\t});\n\n\t\tthis.pages.forEach((page, i) => {\n\t\t\tpage.systems.forEach((system) => (system.pageIndex = i));\n\t\t\tpage.assemble({ textAnnotations: this.textAnnotations }, logger);\n\t\t});\n\t}\n\n\tassembleSystem(system: System, confidenceThreshold: number = 1) {\n\t\tthis.systems.forEach((system, si) => (system.index = si));\n\t\tconst systemIndex = system.index;\n\n\t\tif (system.semantics && system.semantics.length) {\n\t\t\tsystem.semantics.forEach((point) => hashSemanticPoint(systemIndex, null, point));\n\t\t\tsystem.assemble(confidenceThreshold);\n\t\t}\n\t}\n\n\tmarkVoices(staves: VoicesStaff[]): void {\n\t\tconst tokenMap = this.getTokenMap();\n\t\tfor (const token of tokenMap.values()) token.voice = 0;\n\n\t\tconst vis = []\n\t\t\t.concat(...staves.map((staff, s) => (staff.voices || []).map((_, v) => [s, v])))\n\t\t\t.sort(([s1, v1], [s2, v2]) => v1 - v2 || s1 - s2)\n\t\t\t.map(([s, v]) => `${s}|${v}`);\n\n\t\tstaves.forEach((staff, si) =>\n\t\t\t(staff.voices || []).forEach((voice, vi) =>\n\t\t\t\tvoice.measures.forEach((measure) => {\n\t\t\t\t\tconst voiceIndex = vis.indexOf(`${si}|${vi}`);\n\n\t\t\t\t\tconst events = Object.values(measure.tickMap).filter((event) => event instanceof EventTerm) as EventTerm[];\n\t\t\t\t\tevents.forEach((event) => {\n\t\t\t\t\t\tconst notes = event.noteIds ? event.noteIds.map((id) => tokenMap.get(id)).filter(Boolean) : [];\n\t\t\t\t\t\tconst accessories = event.accessories ? event.accessories.map((acc) => tokenMap.get(acc.id)).filter(Boolean) : [];\n\t\t\t\t\t\t//console.log(\"notes:\", si, vi, mi, event.noteIds, notes, accessories);\n\n\t\t\t\t\t\t[...notes, ...accessories].forEach((token) => (token.voice |= 1 << voiceIndex));\n\n\t\t\t\t\t\tif (event.timeWarp) notes.forEach((note) => (note.timeWarped = true));\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\t}\n\n\tasync replaceImageKeys(proc: (x: string | Buffer) => Promise): Promise {\n\t\tawait Promise.all([\n\t\t\t...(this.pages.map(async (page) => {\n\t\t\t\tif (page.source) page.source.url = await proc(page.source.url);\n\t\t\t}) as Promise[]),\n\t\t\t...this.systems.map((system) =>\n\t\t\t\tPromise.all([\n\t\t\t\t\tproc(system.backgroundImage).then((key) => (system.backgroundImage = key)),\n\t\t\t\t\t...(system.staves.map(async (staff) => {\n\t\t\t\t\t\tstaff.backgroundImage = await proc(staff.backgroundImage);\n\t\t\t\t\t\tstaff.maskImage = await proc(staff.maskImage);\n\t\t\t\t\t}) as Promise[]),\n\t\t\t\t])\n\t\t\t),\n\t\t]);\n\t}\n\n\tinferenceStaffLayout(): void {\n\t\t// inference the complete layout\n\t\tconst staffTotal = Math.max(...this.systems.map((system) => system.staves.length), 0);\n\t\tthis.staffLayoutCode = Array(staffTotal).fill('').join(',');\n\n\t\tconst completeSystems = this.systems.filter((system) => system.staves.length === staffTotal && system.bracketsAppearance);\n\t\tif (!completeSystems.length) return; // no enough evidence\n\n\t\tconst candidateCodes = completeSystems\n\t\t\t.map((system) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst layout = staffLayout.parseCode(system.bracketsAppearance);\n\t\t\t\t\tif (layout.staffIds.length !== system.staves.length) return null;\n\n\t\t\t\t\treturn system.bracketsAppearance;\n\t\t\t\t} catch (_) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.filter(Boolean);\n\t\tif (!candidateCodes.length) return; // no valid layout\n\n\t\tconst codeCounting = candidateCodes.reduce((acc, code) => {\n\t\t\tconst count = acc[code] || 0;\n\t\t\tacc[code] = count + 1;\n\t\t\treturn acc;\n\t\t}, {} as { [code: string]: number });\n\t\tconst maxCount = Math.max(...Object.values(codeCounting));\n\t\tconst code = Object.entries(codeCounting).find(([_, count]) => count === maxCount)[0];\n\n\t\t// added connection lines between braces {-}\n\t\tconst connectedCode = code.replace(/\\{,*\\}/g, (match) => match.replace(/,/g, '-'));\n\t\tconst layout = staffLayout.parseCode(connectedCode);\n\n\t\tthis.staffLayoutCode = connectedCode;\n\t\t//console.log(\"complete code:\", code);\n\n\t\t// inference systems' mask\n\t\tlet lastSys: System = null;\n\t\tfor (const system of this.systems) {\n\t\t\tif (lastSys && system.staves.length === lastSys.staves.length && system.bracketsAppearance === lastSys.bracketsAppearance) {\n\t\t\t\tsystem.staffMaskChanged = null;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (system.staves.length < staffTotal && system.bracketsAppearance) {\n\t\t\t\t// validate the system brackets code\n\t\t\t\ttry {\n\t\t\t\t\tif (!staffLayout.parseCode(system.bracketsAppearance)) continue;\n\t\t\t\t} catch (_) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst search = (bits: (0 | 1)[]): number => {\n\t\t\t\t\tif (bits.length > layout.staffIds.length) return null;\n\n\t\t\t\t\tif (bits.reduce((sum, bit) => sum + bit, 0) === system.staves.length) return bitsToMask(bits);\n\n\t\t\t\t\tfor (const bit of [1, 0]) {\n\t\t\t\t\t\tconst bb = [...bits, bit] as (0 | 1)[];\n\t\t\t\t\t\tconst code1 = layout.partialMaskCode(bb);\n\t\t\t\t\t\tif (code1 === system.bracketsAppearance) return bitsToMask(bb);\n\t\t\t\t\t\telse if (system.bracketsAppearance.startsWith(code1)) {\n\t\t\t\t\t\t\tconst result = search(bb);\n\t\t\t\t\t\t\tif (result) return result;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t\tconst mask = search([]);\n\t\t\t\t//console.log(\"mask:\", system.bracketsAppearance, mask.toString(2));\n\n\t\t\t\tsystem.staffMaskChanged = !lastSys || mask !== lastSys.staffMask ? mask : null;\n\t\t\t}\n\n\t\t\tlastSys = system;\n\t\t}\n\t}\n\n\tassignBackgroundForMeasure(measure: SpartitoMeasure): void {\n\t\tmeasure.backgroundImages = [];\n\n\t\tconst system = this.systems[measure.position.systemIndex];\n\t\tif (system.backgroundImage) {\n\t\t\tmeasure.backgroundImages.push({\n\t\t\t\turl: system.backgroundImage,\n\t\t\t\tposition: system.imagePosition,\n\t\t\t\toriginal: true,\n\t\t\t});\n\t\t}\n\n\t\tsystem.staves.forEach((staff) => {\n\t\t\tif (!system.backgroundImage && staff.backgroundImage)\n\t\t\t\tmeasure.backgroundImages.push({\n\t\t\t\t\turl: staff.backgroundImage.toString(),\n\t\t\t\t\tposition: {\n\t\t\t\t\t\t...staff.imagePosition,\n\t\t\t\t\t\ty: staff.imagePosition.y + staff.top,\n\t\t\t\t\t},\n\t\t\t\t\toriginal: true,\n\t\t\t\t});\n\n\t\t\tif (staff.maskImage) {\n\t\t\t\tmeasure.backgroundImages.push({\n\t\t\t\t\turl: staff.maskImage.toString(),\n\t\t\t\t\tposition: {\n\t\t\t\t\t\t...staff.imagePosition,\n\t\t\t\t\t\ty: staff.imagePosition.y + staff.top,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tblackoutFakeNotes(scope: 'patched' | 'perfect' | 'all' = 'patched'): string[] {\n\t\tif (!this.spartito) return;\n\n\t\tlet inScope = (_) => true;\n\t\tswitch (scope) {\n\t\t\tcase 'patched':\n\t\t\t\tinScope = (measure) => measure.patched;\n\t\t\t\tbreak;\n\t\t\tcase 'perfect':\n\t\t\t\tinScope = (measure) => measure.patched || (measure.regulated && evaluateMeasure(measure).perfect);\n\t\t\t\tbreak;\n\t\t}\n\t\tconst measures = this.spartito.measures.filter(inScope);\n\n\t\tconst fakeIds = measures.reduce((ids, measure) => {\n\t\t\tif (!measure.regulated) return;\n\n\t\t\tconst voicedIds = measure.voices.flat(1);\n\t\t\tconst fakeChords = measure.events.filter((event) => !event.rest && !event.grace && !voicedIds.includes(event.id));\n\n\t\t\tfakeChords.forEach((event) => event.noteIds && ids.push(...event.noteIds));\n\n\t\t\treturn ids;\n\t\t}, [] as string[]);\n\t\tconst fakeIdSet = new Set(fakeIds);\n\n\t\tthis.systems.forEach((system) =>\n\t\t\tsystem.staves.forEach((staff) => {\n\t\t\t\tconst blackIds = staff.semantics.filter((point) => fakeIdSet.has(point.id)).map((point) => point.id);\n\t\t\t\tsystem.sidBlackList.push(...blackIds);\n\t\t\t})\n\t\t);\n\n\t\treturn fakeIds;\n\t}\n\n\tgetMeasureLayout(): measureLayout.MeasureLayout {\n\t\tconst code = this.spartito && this.spartito.measureLayoutCode;\n\t\tif (code) {\n\t\t\ttry {\n\t\t\t\treturn measureLayout.parseCode(code);\n\t\t\t} catch (err) {\n\t\t\t\tconsole.debug('invalid measure layout code:', err);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t*splitToSingleScoresGen(): Generator {\n\t\tthis.assemble();\n\t\tconst startSysIndices = this.systems.filter((system) => system.index > 0 && system.indent && system.timeSignatureOnHead).map((system) => system.index);\n\n\t\tif (!startSysIndices.length) {\n\t\t\tyield this.deepCopy();\n\t\t\treturn;\n\t\t}\n\n\t\tconst templateScore = new Score({ ...this, pages: [], topology: undefined, spartito: undefined, patches: undefined });\n\n\t\t// clear temporary objects before deep dopy\n\t\tthis.pages.forEach((page) => {\n\t\t\tdelete page.tokens;\n\t\t\tpage.systems.forEach((system) => {\n\t\t\t\tdelete system.tokens;\n\t\t\t\tsystem.staves.forEach((staff) => {\n\t\t\t\t\tstaff.measures = [];\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tlet startSysIndex = 0;\n\t\tfor (const endSysIndex of [...startSysIndices, this.systems.length]) {\n\t\t\tconst sysInRange = (system) => system.index >= startSysIndex && system.index < endSysIndex;\n\t\t\tconst pages = this.pages\n\t\t\t\t.filter((page) => page.systems.some(sysInRange))\n\t\t\t\t.map((page) => {\n\t\t\t\t\tconst { systems, ...fields } = page;\n\t\t\t\t\treturn new Page({ ...fields, systems: systems.filter(sysInRange).map((system) => new System({ ...system })) });\n\t\t\t\t});\n\n\t\t\tconst newScore = templateScore.deepCopy();\n\t\t\tnewScore.headers.SubScoreSystem = `${startSysIndex}-${endSysIndex - 1}`;\n\t\t\tnewScore.headers.SubScorePage = `${pages[0].index}-${pages[pages.length - 1].index}`;\n\n\t\t\t//newScore.pages = pages.map((page) => page.deepCopy());\n\t\t\tnewScore.pages = pages;\n\t\t\tnewScore.assemble();\n\t\t\tnewScore.inferenceStaffLayout();\n\n\t\t\tstartSysIndex = endSysIndex;\n\n\t\t\tyield newScore;\n\t\t}\n\t}\n\n\tsplitToSingleScores(): Score[] {\n\t\treturn [...this.splitToSingleScoresGen()];\n\t}\n}\n\nexport { PaperOptions, Score, Page, System, Staff, Measure, MeasureValidation };\nexport type { SemanticPointInMeasure };\n","import { MIDI } from '@k-l-lambda/music-widgets';\n\nimport { Fraction } from './interfaces';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { ArpeggioStyle, EventTerm, GraceType, RestType, StemBeam, TermPitch, TremoloLink } from './term';\nimport { noteToPitch } from './utils';\n\n// NOTE: 'JSONEditor.onEditable' determine whether a field is editable, here 'readonly' modifier has no effect to UI\n\ninterface EventUIAgent {\n\treadonly id: number;\n\treadonly duration: number;\n\n\t//ys: number[];\n\tpitches: TermPitch[];\n\trest: RestType;\n\tdivision: number;\n\tdots: number;\n\tstemDirection: string;\n\ttying: boolean;\n\ttied: boolean;\n\tgrace: boolean; //\n\tbeam: StemBeam;\n\ttimeWarp: string; //\n\ttremolo: number;\n\ttremoloLink: TremoloLink;\n\tglissando: boolean;\n\tarpeggioStyle: ArpeggioStyle;\n\ttick: number;\n}\n\ninterface MeasureUIAgent {\n\treadonly measureIndex: number;\n\ttimeSignature: Fraction;\n\tdoubtfulTimesig: boolean;\n\tkeySignature: number;\n\t//readonly events: EventUIAgent[];\n\tduration: number;\n\treadonly voices: number[][];\n}\n\nclass EditableEvent extends EventTerm {\n\tvoice: number;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\t}\n\n\tget agent(): EventUIAgent {\n\t\treturn new Proxy(this as any, {\n\t\t\tget(target, key): any {\n\t\t\t\tconst self = target as any as EditableEvent;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'id':\n\t\t\t\t\tcase 'tick':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\tcase 'rest':\n\t\t\t\t\tcase 'division':\n\t\t\t\t\tcase 'dots':\n\t\t\t\t\tcase 'stemDirection':\n\t\t\t\t\tcase 'beam':\n\t\t\t\t\tcase 'tremolo':\n\t\t\t\t\tcase 'tremoloLink':\n\t\t\t\t\tcase 'arpeggioStyle': {\n\t\t\t\t\t\tconst value = self[key];\n\t\t\t\t\t\treturn value === undefined ? null : value;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'tying':\n\t\t\t\t\tcase 'tied':\n\t\t\t\t\tcase 'glissando': {\n\t\t\t\t\t\tconst value = self[key];\n\t\t\t\t\t\treturn value === undefined ? false : value;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'grace':\n\t\t\t\t\t\treturn !!self.grace;\n\n\t\t\t\t\tcase 'timeWarp':\n\t\t\t\t\t\treturn self.timeWarp ? `${self.timeWarp.numerator}/${self.timeWarp.denominator}` : null;\n\n\t\t\t\t\tcase 'multiplier':\n\t\t\t\t\t\treturn self.multiplier ? `${self.multiplier.numerator}/${self.multiplier.denominator}` : null;\n\n\t\t\t\t\tcase 'pitches':\n\t\t\t\t\t\treturn self.pitches;\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t},\n\n\t\t\tset: (target, key, value): boolean => {\n\t\t\t\tconst self = target as any as EditableEvent;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'tick':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\tcase 'rest':\n\t\t\t\t\tcase 'division':\n\t\t\t\t\tcase 'dots':\n\t\t\t\t\tcase 'stemDirection':\n\t\t\t\t\tcase 'tying':\n\t\t\t\t\tcase 'tied':\n\t\t\t\t\tcase 'beam':\n\t\t\t\t\tcase 'tremolo':\n\t\t\t\t\tcase 'tremoloLink':\n\t\t\t\t\tcase 'glissando':\n\t\t\t\t\tcase 'arpeggioStyle':\n\t\t\t\t\t\t(self as any)[key] = value;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'grace':\n\t\t\t\t\t\tself.grace = value ? GraceType.Grace : null;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'timeWarp':\n\t\t\t\t\t\tself.timeWarp = null;\n\t\t\t\t\t\tif (value && typeof value === 'string') {\n\t\t\t\t\t\t\tconst captures = value.match(/^(\\d+)\\/(\\d+)/);\n\t\t\t\t\t\t\tif (captures) {\n\t\t\t\t\t\t\t\tself.timeWarp = {\n\t\t\t\t\t\t\t\t\tnumerator: parseInt(captures[1]),\n\t\t\t\t\t\t\t\t\tdenominator: parseInt(captures[2]),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'multiplier':\n\t\t\t\t\t\tself.multiplier = null;\n\t\t\t\t\t\tif (value && typeof value === 'string') {\n\t\t\t\t\t\t\tconst captures = value.match(/^(\\d+)\\/(\\d+)/);\n\t\t\t\t\t\t\tif (captures) {\n\t\t\t\t\t\t\t\tself.multiplier = {\n\t\t\t\t\t\t\t\t\tnumerator: parseInt(captures[1]),\n\t\t\t\t\t\t\t\t\tdenominator: parseInt(captures[2]),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'id':\n\t\t\t\t\tcase 'pitches':\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\townKeys: (): string[] => [\n\t\t\t\t'id',\n\t\t\t\t'duration',\n\t\t\t\t'rest',\n\t\t\t\t'division',\n\t\t\t\t'dots',\n\t\t\t\t'stemDirection',\n\t\t\t\t'tying',\n\t\t\t\t'tied',\n\t\t\t\t'beam',\n\t\t\t\t'timeWarp',\n\t\t\t\t'multiplier',\n\t\t\t\t'tremolo',\n\t\t\t\t'tremoloLink',\n\t\t\t\t'glissando',\n\t\t\t\t'arpeggioStyle',\n\t\t\t\t'tick',\n\t\t\t\t'grace',\n\t\t\t\t'pitches',\n\t\t\t],\n\n\t\t\tgetOwnPropertyDescriptor() {\n\t\t\t\treturn { enumerable: true, configurable: true };\n\t\t\t},\n\t\t});\n\t}\n}\n\nclass EditableMeasure extends SpartitoMeasure {\n\tstatic className = 'EditableMeasure';\n\tstatic blackKeys = [];\n\n\tevents: EditableEvent[] = null;\n\n\tconstructor(data: any) {\n\t\tsuper(data);\n\n\t\tthis.events = data.events;\n\t\tif (this.events?.some((event) => !(event instanceof EditableEvent))) this.events = this.events.map((event) => new EditableEvent(event));\n\n\t\tif (this.voices) this.syncVoiceToEvents();\n\t}\n\n\tsyncVoiceToEvents(): void {\n\t\tthis.events.forEach((event) => (event.voice = -1));\n\t\tthis.voices.forEach((voice, voiceIndex) => {\n\t\t\tvoice.forEach((id) => {\n\t\t\t\tconst event = this.events.find((event) => event.id === id);\n\t\t\t\tif (event) event.voice = voiceIndex;\n\t\t\t\telse console.warn('no event with id:', id, this.events.length);\n\t\t\t});\n\t\t});\n\t}\n\n\tsyncVoiceFromEvents(): void {\n\t\tconst voices: EditableEvent[][] = [];\n\t\tthis.events.forEach((event) => {\n\t\t\tif (event?.voice >= 0) {\n\t\t\t\tvoices[event.voice] = voices[event.voice] || [];\n\t\t\t\tvoices[event.voice].push(event);\n\t\t\t}\n\t\t});\n\n\t\tvoices.forEach((voice) => voice.sort((e1, e2) => e1.tick - e2.tick));\n\n\t\tthis.voices = voices.map((voice) => voice.map((event) => event.id));\n\t}\n\n\tget agent(): MeasureUIAgent {\n\t\treturn new Proxy(this as any, {\n\t\t\tget: (target, key): any => {\n\t\t\t\tconst self = target as any as EditableMeasure;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'measureIndex':\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\t\treturn self[key];\n\n\t\t\t\t\tcase 'voices':\n\t\t\t\t\t\treturn self.voices?.map((voice) => voice.join(',')) || null;\n\n\t\t\t\t\tcase 'timeSignature':\n\t\t\t\t\tcase 'keySignature':\n\t\t\t\t\tcase 'doubtfulTimesig':\n\t\t\t\t\t\treturn self.basics[0][key];\n\t\t\t\t\t//case 'events':\n\t\t\t\t\t//\treturn self.events.map(eventUIAgent);\n\t\t\t\t\tcase 'toJSON':\n\t\t\t\t\t\treturn () => ({\n\t\t\t\t\t\t\tmeasureIndex: self.measureIndex,\n\t\t\t\t\t\t\tvoices: self.voices,\n\t\t\t\t\t\t\tduration: self.duration,\n\t\t\t\t\t\t\ttimeSignature: self.basics[0].timeSignature,\n\t\t\t\t\t\t\tkeySignature: self.basics[0].keySignature,\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t},\n\n\t\t\tset: (target, key, value): boolean => {\n\t\t\t\t//console.log('set:', key, value);\n\t\t\t\tconst self = target as any as EditableMeasure;\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'timeSignature':\n\t\t\t\t\tcase 'keySignature':\n\t\t\t\t\tcase 'doubtfulTimesig':\n\t\t\t\t\t\t(self.basics[0][key] as any) = value;\n\t\t\t\t\t\tself.basics = self.basics.map(() => self.basics[0]);\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'duration':\n\t\t\t\t\t\tself.duration = value;\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase 'measureIndex':\n\t\t\t\t\tcase 'voices':\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\townKeys: (): string[] => ['measureIndex', 'timeSignature', 'doubtfulTimesig', 'keySignature', 'duration', 'voices'],\n\n\t\t\tgetOwnPropertyDescriptor() {\n\t\t\t\treturn { enumerable: true, configurable: true };\n\t\t\t},\n\t\t});\n\t}\n\n\tmakeMIDI(bpm: number = 120): MIDI.MidiData {\n\t\tif (!this.regulated) return null;\n\n\t\tconst microsecondsPerBeat = 60e6 / bpm;\n\n\t\tconst header = { formatType: 0, ticksPerBeat: 480 };\n\t\tconst tracks = this.voices.map((ids, vi) => {\n\t\t\tconst events = ids\n\t\t\t\t.map((id) => {\n\t\t\t\t\tconst event = this.events.find((event) => event.id === id);\n\t\t\t\t\tif (event) {\n\t\t\t\t\t\tconst subEvents = event.graceIds ? event.graceIds.map((id) => this.events.find((event) => event.id === id)) : [];\n\n\t\t\t\t\t\treturn [...subEvents, event];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [];\n\t\t\t\t})\n\t\t\t\t.flat(1);\n\n\t\t\tconst startTime = 0;\n\n\t\t\ttype Event = MIDI.MidiEvent & { [key: string]: any };\n\t\t\tconst midiEvents: Event[] = events\n\t\t\t\t.filter((event) => !event.rest && Number.isFinite(event.tick) && event.tick >= 0 && Number.isFinite(event.duration))\n\t\t\t\t.map((event) =>\n\t\t\t\t\tevent.pitches.map((pitch) => [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: event.id,\n\t\t\t\t\t\t\ttime: event.tick,\n\t\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\t\tsubtype: 'noteOn',\n\t\t\t\t\t\t\tchannel: event.staff,\n\t\t\t\t\t\t\tnoteNumber: noteToPitch(pitch),\n\t\t\t\t\t\t\tvelocity: 96,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: event.id,\n\t\t\t\t\t\t\ttime: event.tick + event.duration,\n\t\t\t\t\t\t\ttype: 'channel',\n\t\t\t\t\t\t\tsubtype: 'noteOff',\n\t\t\t\t\t\t\tchannel: event.staff,\n\t\t\t\t\t\t\tnoteNumber: noteToPitch(pitch),\n\t\t\t\t\t\t},\n\t\t\t\t\t])\n\t\t\t\t)\n\t\t\t\t.flat(2);\n\n\t\t\tmidiEvents.sort(function (e1, e2) {\n\t\t\t\treturn e1.time - e2.time;\n\t\t\t});\n\n\t\t\tif (vi === 0) {\n\t\t\t\tmidiEvents.unshift(\n\t\t\t\t\t{\n\t\t\t\t\t\ttime: startTime,\n\t\t\t\t\t\ttype: 'meta',\n\t\t\t\t\t\tsubtype: 'timeSignature',\n\t\t\t\t\t\tnumerator: this.timeSignature.numerator,\n\t\t\t\t\t\tdenominator: this.timeSignature.denominator,\n\t\t\t\t\t\tthirtyseconds: 8,\n\t\t\t\t\t},\n\t\t\t\t\t{ time: startTime, type: 'meta', subtype: 'setTempo', microsecondsPerBeat }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tmidiEvents.forEach((event) => {\n\t\t\t\tevent.ticks = Math.round(event.time - startTime);\n\t\t\t});\n\t\t\tmidiEvents.forEach((event, i) => {\n\t\t\t\tevent.deltaTime = event.ticks - (i > 0 ? midiEvents[i - 1].ticks : 0);\n\t\t\t});\n\n\t\t\tmidiEvents.push({ deltaTime: 0, type: 'meta', subtype: 'endOfTrack' });\n\n\t\t\treturn midiEvents;\n\t\t});\n\n\t\treturn {\n\t\t\theader,\n\t\t\ttracks,\n\t\t};\n\t}\n}\n\nexport { EditableEvent, EditableMeasure };\n","import { RegulationSolution, RegulationSolutionEvent, EventPredisposition } from './interfaces';\nimport { SpartitoMeasure } from './spartitoMeasure';\nimport { EventCluster, EventElement, EventElementType } from './eventTopology';\nimport { argmax, frac } from './utils';\nimport { WHOLE_DURATION, StemBeam } from './term';\nimport { Logger, DummyLogger } from './logger';\n\ninterface BeadPicker {\n\tn_seq: number;\n\tquota: number;\n\tcost: number; // duration in milliseconds\n\n\tpredictCluster(cluster: EventCluster, tip: number): Promise;\n}\n\nenum BeadType {\n\tPass = 'i',\n\tDivision = 'd',\n\tDots = 'o',\n}\n\nconst DIVISION_NAMES = ['whole', 'half', 'quarter', 'eighth', 'sixteenth', 'thirtysecond', 'sixtyfourth', '128th', '256th'];\n\ninterface BeadNodeInitData {\n\tcluster: EventCluster;\n\telemIndex: number;\n\ttype: BeadType;\n\tpossibilities: number[];\n\tpretentiousness: number;\n}\n\nconst RESIDUE_LOSS_WEIGHT = 0.2;\nconst VOICEN_LOSS_WEIGHT = 0.002;\nconst SPACE_LOSS_WEIGHT = 0.4 / WHOLE_DURATION;\nconst PRETENTIOUSNESS_LOSS_WEIGHT = 0.02;\n\nconst POSSIBILITY_LOW_BOUNDARY = 1e-12;\n\nconst PRETENTIOUSNESS_CLIP = 100;\n\ninterface ClusterEvaluation {\n\ttickErr: number;\n\ttwist: number;\n\tresidue: number;\n\tendTick: number;\n\tfatalError: boolean;\n\tvoiceN: number;\n\tspaceDuration: number;\n\tpretentiousness: number;\n\tloss: number;\n}\n\ninterface ElementState {\n\ttick: number;\n\tdivision: number;\n\tdots: number;\n\tbeam: StemBeam;\n\tstemDirection: string;\n\tgrace: boolean;\n\ttimeWarped: boolean;\n\tfullMeasure: boolean; // full measure rest\n\tfake: boolean;\n\torder: number;\n\tpredisposition: EventPredisposition;\n}\n\ninterface ClusterState {\n\telements: ElementState[];\n}\n\nconst STEM_DIRECTION_OPTIONS = [undefined, 'u', 'd'];\n\nconst BEAM_OPTIONS = [undefined, StemBeam.Open, StemBeam.Continue, StemBeam.Close];\n\nconst saveClusterState = (cluster: EventCluster): ClusterState => ({\n\telements: cluster.elements.map((elem) => ({\n\t\ttick: elem.tick!,\n\t\tdivision: elem.division!,\n\t\tdots: elem.dots!,\n\t\tbeam: elem.beam!,\n\t\tstemDirection: elem.stemDirection!,\n\t\tgrace: elem.grace!,\n\t\ttimeWarped: elem.timeWarped!,\n\t\tfullMeasure: elem.fullMeasure!,\n\t\tfake: elem.fake!,\n\t\torder: elem.order!,\n\t\tpredisposition: elem.predisposition!,\n\t})),\n});\n\nconst restoreClusterState = (cluster: EventCluster, state: ClusterState): void => cluster.elements.forEach((elem, i) => Object.assign(elem, state.elements[i]));\n\nconst measurePretentious = (p) => Math.min(PRETENTIOUSNESS_CLIP, -Math.log(p));\n\ninterface BeadDeductionContext {\n\tpicker: BeadPicker;\n\tlogger: Logger;\n\tptFactor: number; // pretentiousness tolerance factor\n}\n\nclass BeadNode {\n\tcluster: EventCluster;\n\telemIndex: number;\n\ttype: BeadType;\n\tpossibilities: number[];\n\tpretentiousness: number;\n\n\tchildren: Record;\n\taccessCount: number;\n\n\tconstructor(data: BeadNodeInitData) {\n\t\tObject.assign(this, data);\n\n\t\t//this.possibilities = this.possibilities.map((x, i) => (this.type === BeadType.Pass && !i) ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\n\t\tthis.children = {};\n\t\tthis.accessCount = 0;\n\t}\n\n\tnextBranch(): number | null {\n\t\tconst ps = this.possibilities.map((p, i) => p / (this.children[i] ? this.children[i].accessCount + 1 : 1));\n\t\t//const ps = this.possibilities.map((p, i) => p * (this.children[i] ? (2 ** -this.children[i].accessCount) : 1));\n\n\t\tif (ps.every((p) => !p)) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn null;\n\t\t}\n\n\t\treturn argmax(ps);\n\t}\n\n\tget currentElem(): EventElement {\n\t\treturn this.cluster.elements[this.elemIndex];\n\t}\n\n\tbranchID(ni: number): string {\n\t\tswitch (this.type) {\n\t\t\tcase BeadType.Pass:\n\t\t\t\treturn `i_${ni}`;\n\t\t\tcase BeadType.Division:\n\t\t\t\treturn DIVISION_NAMES[ni];\n\t\t\tcase BeadType.Dots:\n\t\t\t\treturn 'o' + '.'.repeat(ni);\n\t\t}\n\n\t\treturn '';\n\t}\n\n\tasync deduce({ picker, logger, ptFactor }: BeadDeductionContext, deep: number = 0): Promise {\n\t\t++this.accessCount;\n\n\t\tconst ni = this.nextBranch()!;\n\t\tlogger.debug(String.fromCodePoint(0x1f349) + ' '.repeat(deep), this.branchID(ni), this.accessCount > 1 ? `[${this.accessCount}]` : '');\n\n\t\tif (!Number.isInteger(ni) || ni < 0) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t}\n\n\t\tthis.pretentiousness += measurePretentious(this.possibilities[ni]);\n\t\tif (this.pretentiousness > PRETENTIOUSNESS_CLIP * ptFactor) {\n\t\t\tthis.accessCount = Infinity;\n\t\t\treturn evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t}\n\n\t\tlet selfEval: null | ClusterEvaluation = null;\n\n\t\tswitch (this.type) {\n\t\t\tcase BeadType.Pass:\n\t\t\t\t{\n\t\t\t\t\tconst tip = this.currentElem.order! + 1;\n\t\t\t\t\tconst element = this.cluster.elements[ni];\n\t\t\t\t\tconsole.assert(element, 'null element:', ni, this.cluster.elements.length);\n\t\t\t\t\tif (element.type === EventElementType.EOS) {\n\t\t\t\t\t\tselfEval = evaluateCluster(this.cluster, tip, this.pretentiousness);\n\t\t\t\t\t\tif (!selfEval.residue || selfEval.fatalError) {\n\t\t\t\t\t\t\tthis.accessCount = Infinity;\n\t\t\t\t\t\t\treturn selfEval!;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.cluster.elements[0].order = tip;\n\t\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\t\tif (!picker.quota) return selfEval;\n\n\t\t\t\t\t\t\tconst possibilities = (await picker.predictCluster(this.cluster, tip + 1)).map((x, i) =>\n\t\t\t\t\t\t\t\tthis.cluster.elements[i].order! < tip + 1 || i === this.cluster.elements.length - 1 ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\t\telemIndex: 0,\n\t\t\t\t\t\t\t\ttype: BeadType.Pass,\n\t\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\telement.order = tip;\n\n\t\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\t\tconsole.assert(element.predisposition, 'no predisposition:', ni, this.possibilities);\n\t\t\t\t\t\t\tconst possibilities = element.predisposition!.divisionVector.map((x) => Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\t\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\t\telemIndex: ni,\n\t\t\t\t\t\t\t\ttype: BeadType.Division,\n\t\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase BeadType.Division:\n\t\t\t\t{\n\t\t\t\t\tthis.currentElem.division = ni;\n\n\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\tconst possibilities = this.currentElem.predisposition!.dotsVector.map((x) => Math.max(POSSIBILITY_LOW_BOUNDARY, x));\n\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\telemIndex: this.elemIndex,\n\t\t\t\t\t\t\ttype: BeadType.Dots,\n\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase BeadType.Dots:\n\t\t\t\t{\n\t\t\t\t\tthis.currentElem.dots = ni;\n\n\t\t\t\t\tselfEval = evaluateCluster(this.cluster, this.currentElem.order! + 1, this.pretentiousness);\n\t\t\t\t\tif (!selfEval.residue || selfEval.fatalError) {\n\t\t\t\t\t\tthis.accessCount = Infinity;\n\t\t\t\t\t\treturn selfEval!;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.children[ni]) {\n\t\t\t\t\t\tif (!picker.quota) return selfEval;\n\n\t\t\t\t\t\tconst tip = this.currentElem.order! + 1;\n\t\t\t\t\t\tconst possibilities = (await picker.predictCluster(this.cluster, tip)).map((x, i) =>\n\t\t\t\t\t\t\tthis.cluster.elements[i].order! < tip + 1 ? 0 : Math.max(POSSIBILITY_LOW_BOUNDARY, x)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.children[ni] = new BeadNode({\n\t\t\t\t\t\t\tcluster: this.cluster,\n\t\t\t\t\t\t\telemIndex: this.elemIndex,\n\t\t\t\t\t\t\ttype: BeadType.Pass,\n\t\t\t\t\t\t\tpossibilities,\n\t\t\t\t\t\t\tpretentiousness: this.pretentiousness,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst evaluation = await this.children[ni].deduce({ picker, logger, ptFactor }, deep + 1);\n\t\tif (selfEval && evaluation.fatalError) {\n\t\t\tconst tip = this.currentElem.order!;\n\t\t\tthis.cluster.elements.forEach((elem) => {\n\t\t\t\tif (elem.order! > tip) elem.order = undefined;\n\t\t\t});\n\n\t\t\t// clear children data\n\t\t\tthis.cluster.elements.forEach((elem) => (elem.order = elem.order! > this.currentElem.order! ? undefined : elem.order));\n\t\t\tthis.cluster.elements[this.cluster.elements.length - 1].tick = selfEval.endTick;\n\n\t\t\treturn selfEval;\n\t\t}\n\n\t\treturn evaluation;\n\t}\n}\n\nconst estimateElementDuration = (elem: EventElement) => WHOLE_DURATION * 2 ** -elem.division! * (2 - 2 ** -elem.dots!);\n\nconst evaluateCluster = (cluster: EventCluster, tip: number, pretentiousness: number): ClusterEvaluation => {\n\tconst events = cluster.elements.filter(\n\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order) && elem.order! < tip\n\t);\n\tevents.sort((e1, e2) => e1.order! - e2.order!);\n\n\tconst eos = cluster.elements[cluster.elements.length - 1];\n\n\tlet tick = 0;\n\tlet lastOrder = 0;\n\tlet endTick = 0;\n\tlet voiceN = 1;\n\n\t// [x, tick, estimated tick]\n\tconst scales: [number, number, number][] = [[eos.x, cluster.signatureDuration, cluster.signatureDuration]];\n\n\tlet totalDuration = 0;\n\n\t// assign tick for events\n\tevents.forEach((event) => {\n\t\tif (event.order! > lastOrder + 1) {\n\t\t\ttick = 0;\n\t\t\t++voiceN;\n\t\t}\n\n\t\tconst referenceScale = scales.find((s) => s[1] >= tick);\n\t\tif (referenceScale && event.x > referenceScale[0] + 3) {\n\t\t\tconst nearScale = scales.reduce((n, s) => (Math.abs(event.predisposition!.tick - s[2]) < Math.abs(event.predisposition!.tick - n[2]) ? s : n));\n\t\t\tif (Math.abs(nearScale[0] - event.x) < 2) tick = Math.max(tick, nearScale[1]);\n\t\t}\n\n\t\tevent.tick = tick;\n\n\t\tconst si = Math.max(\n\t\t\t0,\n\t\t\tscales.findIndex((s) => s[0] > event.x)\n\t\t);\n\t\tscales.splice(si, 0, [event.x, event.tick, event.predisposition!.tick]);\n\n\t\t//let duration = WHOLE_DURATION * (2 ** -event.division!) * (2 - 2 ** -event.dots!);\n\t\tlet duration = estimateElementDuration(event);\n\t\tif (event.predisposition!.timeWarped > 0.5) duration = (duration * 2) / 3;\n\n\t\ttick += duration;\n\t\ttotalDuration += duration;\n\t\tendTick = Math.max(endTick, tick);\n\t\tlastOrder = event.order!;\n\t});\n\n\t/*const pretentiousness = events.reduce((p, event) => p +\n\t\tmeasurePretentious(event.predisposition!.divisionVector![event.division!]) +\n\t\tmeasurePretentious(event.predisposition!.dotsVector![event.dots!]), 0);*/\n\n\tif (endTick > 0) cluster.elements[cluster.elements.length - 1].tick = endTick;\n\n\tconst xSpan = cluster.elements[cluster.elements.length - 1].pivotX! - cluster.elements[1].pivotX!;\n\tconst tickSpan = Math.max(...events.map((e) => e.tick!), endTick);\n\n\t// tick twist loss\n\tconst eventsXOrder = [...events].sort((e1, e2) => e1.pivotX! - e2.pivotX!);\n\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\tconst e1 = eventsXOrder[i];\n\t\tconst dx = e2.pivotX! - e1.pivotX!;\n\t\tconst dt = e2.tick! - e1.tick!;\n\n\t\tif (!dt) return dx / xSpan;\n\n\t\tconst rate = Math.atan2(dt / tickSpan, dx / xSpan);\n\n\t\t//if (dt < 0)\n\t\t//\tconsole.log(\"minus dt:\", dt, dx, rate);\n\n\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t});\n\t//console.debug(\"tickTwists:\", tickTwists, eventsXOrder);\n\n\tconst twist = Math.max(...tickTwists, 0);\n\n\tconst tickMSE = events.map((event) => (event.tick! - event.predisposition!.tick) ** 2);\n\t//console.debug(\"tickMSE:\", tickMSE.map(Math.sqrt));\n\tconst tickErr = tickMSE.length ? Math.sqrt(tickMSE.reduce((sum, mse) => sum + mse, 0) / tickMSE.length) : 0;\n\t//console.debug(\"tick/twist:\", tickErr / WHOLE_DURATION, twist);\n\n\tconst residueElements = cluster.elements.filter(\n\t\t(elem) =>\n\t\t\t[EventElementType.CHORD, EventElementType.REST].includes(elem.type) &&\n\t\t\t!(Number.isInteger(elem.order) && elem.order! < tip) &&\n\t\t\t!(elem.predisposition && elem.predisposition.fakeP > 0.5)\n\t);\n\tconst residue = residueElements.length;\n\n\tconst fatalError = twist >= 1 || endTick > cluster.signatureDuration;\n\n\t//const spaceDuration = Math.max(0, cluster.signatureDuration - endTick);\n\tconst spaceDuration = Math.max(0, cluster.signatureDuration - totalDuration / voiceN);\n\n\tconst loss =\n\t\ttickErr / WHOLE_DURATION +\n\t\ttwist +\n\t\tresidue * RESIDUE_LOSS_WEIGHT +\n\t\tvoiceN * VOICEN_LOSS_WEIGHT +\n\t\tspaceDuration * SPACE_LOSS_WEIGHT +\n\t\tpretentiousness * PRETENTIOUSNESS_LOSS_WEIGHT;\n\n\treturn {\n\t\ttickErr,\n\t\ttwist,\n\t\tresidue,\n\t\tendTick,\n\t\tfatalError,\n\t\tvoiceN,\n\t\tspaceDuration,\n\t\tpretentiousness,\n\t\tloss,\n\t};\n};\n\nconst solveCluster = async (\n\tcluster: EventCluster,\n\tpicker: BeadPicker,\n\tlogger: Logger,\n\tquota: number = 200,\n\tstopLoss: number = 0,\n\tptFactor: number = 1\n): Promise => {\n\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\tconst suc0 = await picker.predictCluster(cluster, 1);\n\n\tconst root = new BeadNode({ cluster, elemIndex: 0, pretentiousness: 0, type: BeadType.Pass, possibilities: suc0 });\n\n\tlet bestEvaluation: ClusterEvaluation | null = null;\n\tlet bestState: ClusterState | null = null;\n\n\tpicker.quota = quota;\n\twhile (picker.quota) {\n\t\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\n\t\tconst evaluation = await root.deduce({ picker, logger, ptFactor });\n\n\t\tlogger.debug('loss:', evaluation);\n\n\t\tif (!bestEvaluation || evaluation.loss < bestEvaluation.loss) {\n\t\t\tbestEvaluation = evaluation;\n\n\t\t\tcluster.duration = bestEvaluation.endTick;\n\t\t\tbestState = saveClusterState(cluster);\n\n\t\t\tif (Number.isFinite(stopLoss) && bestEvaluation.loss <= stopLoss!) break;\n\t\t}\n\n\t\tif (!Number.isFinite(root.accessCount)) break;\n\t}\n\tlogger.debug('bestEvaluation:', bestEvaluation);\n\n\trestoreClusterState(cluster, bestState!);\n\n\t// solve residue elements\n\tconst fixedEvents = cluster.elements.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order));\n\tconst pendingEvents = cluster.elements.filter(\n\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && !Number.isInteger(elem.order)\n\t);\n\tif (fixedEvents.length) {\n\t\tpendingEvents.forEach((event) => {\n\t\t\t// exclude fake events (includes grace, fullMeasure) from voices\n\t\t\tevent.tick = undefined;\n\n\t\t\tif (event.predisposition!.fakeP < 0.5) {\n\t\t\t\t//const near = fixedEvents.reduce((n, e) => Math.abs(e.predisposition!.tick - event.predisposition!.tick) < Math.abs(n.predisposition!.tick - event.predisposition!.tick) ? e : n);\n\t\t\t\tconst duration = estimateElementDuration(event);\n\t\t\t\tconst candidates = fixedEvents.filter((e) => e.tick! + duration <= bestEvaluation!.endTick);\n\t\t\t\tif (candidates.length) {\n\t\t\t\t\tconst near = candidates.reduce((n, e) => (Math.abs(e.x - event.x) < Math.abs(n.x - event.x) ? e : n));\n\t\t\t\t\tevent.tick = near.tick;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfixedEvents.sort((e1, e2) => e1.order! - e2.order!);\n\n\t// properties\n\t[...fixedEvents, ...pendingEvents].forEach((event) => {\n\t\tevent.grace = !Number.isFinite(event.tick) && event.predisposition!.grace;\n\t\tevent.timeWarped = event.predisposition!.timeWarped > 0.5;\n\t\tevent.fullMeasure = event.predisposition!.fullMeasure > 0.5;\n\t\tevent.stemDirection = STEM_DIRECTION_OPTIONS[argmax(event.predisposition!.stemDirectionVector)];\n\t\tevent.beam = BEAM_OPTIONS[argmax(event.predisposition!.beamVector)];\n\t});\n\n\t// construct matrixH\n\tconst ids = cluster.elements.map((e) => e.index);\n\tconst idx = (id: number): number => ids.indexOf(id);\n\tcluster.matrixH = cluster.elements.map(() => Array(cluster.elements.length).fill(0));\n\tfixedEvents.forEach((event, i) => {\n\t\tconst lastEvent = fixedEvents[i - 1];\n\t\tif (!lastEvent || lastEvent.order! < event.order! - 1) {\n\t\t\tcluster.matrixH![idx(event.index!)][0] = 1;\n\t\t\tif (lastEvent) cluster.matrixH![cluster.elements.length - 1][idx(lastEvent.index!)] = 1;\n\t\t} else {\n\t\t\tconsole.assert(\n\t\t\t\tcluster.matrixH![idx(event.index!)] && Number.isFinite(cluster.matrixH![idx(event.index!)][idx(lastEvent.index!)]),\n\t\t\t\t'matrixH out of range:',\n\t\t\t\tevent.index,\n\t\t\t\tlastEvent.index,\n\t\t\t\tcluster.matrixH!.length\n\t\t\t);\n\n\t\t\tcluster.matrixH![idx(event.index!)][idx(lastEvent.index!)] = 1;\n\t\t}\n\t});\n\tif (!pendingEvents.length && fixedEvents.length) cluster.matrixH![cluster.elements.length - 1][idx(fixedEvents[fixedEvents.length - 1].index!)] = 1;\n\n\treturn bestEvaluation!;\n};\n\ninterface BeadSolverOptions {\n\tpicker: BeadPicker;\n\tstopLoss?: number;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n\tptFactor?: number;\n\tlogger?: Logger;\n}\n\nconst solveMeasure = async (measure: SpartitoMeasure, options: BeadSolverOptions): Promise => {\n\tconst { stopLoss = 0.09, quotaMax = 1000, quotaFactor = 5, ptFactor = 1, logger = new DummyLogger() } = options;\n\n\tlet worstLoss = 0;\n\n\tconst clusters = measure.createClusters();\n\tfor (const cluster of clusters) {\n\t\tconst quota = Math.min(quotaMax, Math.ceil(cluster.elements.length * quotaFactor));\n\t\tlogger.info(`[measure-${measure.measureIndex}]`, quota);\n\t\tconst { loss } = await solveCluster(cluster, options.picker, logger, quota, stopLoss, ptFactor);\n\t\tworstLoss = Math.max(worstLoss, loss);\n\t}\n\n\tconst voices = [] as number[][];\n\n\tconst durations = [] as number[];\n\n\tconst solutionEvents = [] as RegulationSolutionEvent[];\n\n\tclusters.forEach((cluster) => {\n\t\tconst events = cluster.elements.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isInteger(elem.order));\n\t\tevents.sort((e1, e2) => e1.order! - e2.order!);\n\n\t\tif (!events.length) return;\n\n\t\tlet voice = [] as number[];\n\t\tvoices.push(voice);\n\t\tlet lastOrder = 0;\n\t\tevents.forEach((event) => {\n\t\t\tif (event.fullMeasure || event.grace || event.tremoloCatcher) return;\n\n\t\t\tif (event.order! > lastOrder + 1) {\n\t\t\t\tvoice = [event.index!];\n\t\t\t\tvoices.push(voice);\n\t\t\t} else voice.push(event.index!);\n\n\t\t\tlastOrder = event.order!;\n\t\t});\n\n\t\tlet tipElem = events[events.length - 1];\n\n\t\t// complete voices from pending events\n\t\tconst pendingEvents = cluster.elements.filter(\n\t\t\t(elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type) && Number.isFinite(elem.tick) && !Number.isInteger(elem.order)\n\t\t);\n\t\twhile (pendingEvents.length) {\n\t\t\tconst ei = pendingEvents.findIndex((e) => e.tick! >= tipElem.tick! + estimateElementDuration(tipElem));\n\t\t\tif (ei >= 0) voice.push(pendingEvents.splice(ei, 1)[0].index!);\n\t\t\telse {\n\t\t\t\ttipElem = pendingEvents.splice(0, 1)[0];\n\t\t\t\tvoice = [tipElem.index!];\n\t\t\t\tvoices.push(voice);\n\t\t\t}\n\t\t}\n\n\t\tif (events.some((elem) => !elem.fullMeasure && Number.isInteger(elem.order))) {\n\t\t\tconst eos = cluster.elements.find((elem) => elem.type === EventElementType.EOS);\n\t\t\tdurations.push(eos!.tick!);\n\t\t}\n\n\t\tconst eventMap = measure.eventMap;\n\n\t\tconst tickSet = cluster.elements.reduce((set, elem) => {\n\t\t\tif (Number.isFinite(elem.tick)) set.add(elem.tick!);\n\t\t\treturn set;\n\t\t}, new Set());\n\t\tconst ticks = Array.from(tickSet).sort((t1, t2) => t1 - t2);\n\n\t\t// fill solutionEvents\n\t\tevents.forEach((elem) => {\n\t\t\tconst event = eventMap[elem.index!];\n\t\t\tif (event) {\n\t\t\t\tsolutionEvents.push({\n\t\t\t\t\tid: event.id!,\n\t\t\t\t\ttick: elem.tick!,\n\t\t\t\t\ttickGroup: ticks.indexOf(elem.tick!),\n\t\t\t\t\tdivision: elem.division !== event.division ? elem.division : undefined,\n\t\t\t\t\tdots: elem.dots !== event.dots ? elem.dots : undefined,\n\t\t\t\t\ttimeWarp: elem.timeWarped ? frac(2, 3) : undefined, // TODO:\n\t\t\t\t\tbeam: elem.beam !== event.beam ? elem.beam : undefined,\n\t\t\t\t\tgrace: elem.grace !== !!event.grace ? elem.grace : undefined,\n\t\t\t\t\tfullMeasure: elem.fullMeasure || undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\n\tconst estimatedDuration = Math.max(...clusters.map((c) => c.estimatedDuration));\n\n\treturn {\n\t\tvoices: voices.filter((voice) => voice.length),\n\t\tduration: Math.max(...durations),\n\t\tevents: solutionEvents,\n\t\tpriority: -worstLoss,\n\t\testimatedDuration,\n\t};\n};\n\ninterface GlimpseMeasureOptions {\n\tpicker: BeadPicker;\n\tresetSignatureForDoubtfulOnly?: boolean;\n}\n\nconst glimpseMeasure = async (measure: SpartitoMeasure, { picker, resetSignatureForDoubtfulOnly }: GlimpseMeasureOptions): Promise => {\n\tconst clusters = measure.createClusters();\n\tconst eventMap = measure.eventMap;\n\n\tfor (const cluster of clusters) {\n\t\tif (!resetSignatureForDoubtfulOnly || measure.doubtfulTimesig) cluster.signatureDuration = 0; // re-estimate measure duration\n\t\tcluster.elements.forEach((elem, i) => (elem.order = i ? undefined : 0));\n\t\tawait picker.predictCluster(cluster, 1);\n\n\t\tcluster.elements\n\t\t\t.filter((elem) => [EventElementType.CHORD, EventElementType.REST].includes(elem.type))\n\t\t\t.forEach((elem) => {\n\t\t\t\tconst event = eventMap[elem.index!];\n\t\t\t\tevent.predisposition = elem.predisposition!;\n\t\t\t});\n\t}\n\n\tmeasure.estimatedDuration = Math.max(...clusters.map((c) => c.estimatedDuration));\n};\n\nconst estimateMeasure = async (measure: SpartitoMeasure, picker: BeadPicker): Promise =>\n\tglimpseMeasure(measure, { picker, resetSignatureForDoubtfulOnly: true });\n\nexport { BeadPicker, solveCluster, solveMeasure, estimateMeasure, glimpseMeasure };\n","import { EventTerm } from './term';\nimport type { SpartitoMeasure } from './spartitoMeasure';\n\ninterface EventRectification {\n\tid: number;\n\tdivision?: number;\n\tdots?: number;\n}\n\n// Here suppose sum of pvals equal to 1.\nconst multinomial_1 = (pvals: number[]): number => {\n\tconst n = Math.random();\n\n\tlet s = 0;\n\tfor (let i = 0; i < pvals.length; ++i) {\n\t\ts += pvals[i];\n\t\tif (s > n) return i;\n\t}\n\n\treturn pvals.length - 1;\n};\n\nconst looseVector = (ns: number[], factor = 0.9): number[] => {\n\tconst logits = ns.map((n) => Math.log(n) * factor);\n\tconst n2 = logits.map(Math.exp);\n\n\tconst sum = n2.reduce((sum, x) => sum + x, 0);\n\n\treturn n2.map((x) => x / sum);\n};\n\nconst looseEvent = (event: EventTerm): EventTerm => {\n\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return event;\n\n\tconst divisionVector = event.predisposition?.divisionVector ? looseVector(event.predisposition.divisionVector) : null;\n\tconst dotsVector = event.predisposition?.dotsVector ? looseVector(event.predisposition.dotsVector) : null;\n\n\treturn new EventTerm({\n\t\t...event,\n\t\tpredisposition: {\n\t\t\t...event.predisposition,\n\t\t\tdivisionVector,\n\t\t\tdotsVector,\n\t\t},\n\t});\n};\n\nclass MeasureRectification {\n\tevents: EventRectification[];\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\ttoString(): string {\n\t\treturn this.events\n\t\t\t.map((event) => {\n\t\t\t\tif (!event) return '';\n\n\t\t\t\tconst { division = '', dots = '' } = event;\n\t\t\t\treturn `${division}|${dots}`;\n\t\t\t})\n\t\t\t.join(',');\n\t}\n\n\tstatic default(events: EventTerm[]): MeasureRectification {\n\t\treturn new MeasureRectification({\n\t\t\tevents: events.map((event) => {\n\t\t\t\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return null;\n\n\t\t\t\tconst division = event.predisposition.divisionVector ? event.division : undefined;\n\t\t\t\tconst dots = event.predisposition.dotsVector ? event.dots : undefined;\n\n\t\t\t\treturn { id: event.id, division, dots };\n\t\t\t}),\n\t\t});\n\t}\n\n\tstatic roll(events: EventTerm[]): MeasureRectification {\n\t\treturn new MeasureRectification({\n\t\t\tevents: events.map((event) => {\n\t\t\t\tif (!event.predisposition?.divisionVector && !event.predisposition?.dotsVector) return null;\n\n\t\t\t\tlet division = undefined;\n\t\t\t\tlet dots = undefined;\n\n\t\t\t\tif (event.predisposition.divisionVector) division = multinomial_1(event.predisposition.divisionVector);\n\n\t\t\t\tif (event.predisposition.dotsVector) dots = multinomial_1(event.predisposition.dotsVector);\n\n\t\t\t\treturn { id: event.id, division, dots };\n\t\t\t}),\n\t\t});\n\t}\n}\n\nconst genMeasureRectifications = function* (measure: SpartitoMeasure): Generator {\n\tconst keys = new Set();\n\n\tconst origin = MeasureRectification.default(measure.events);\n\tkeys.add(origin.toString());\n\n\tyield origin;\n\n\tlet stale = 0;\n\tlet events = measure.events;\n\n\twhile (stale < 100) {\n\t\tif (stale && stale % 10 === 0) events = events.map(looseEvent);\n\n\t\tconst rectification = MeasureRectification.roll(events);\n\t\tconst key = rectification.toString();\n\n\t\tif (keys.has(key)) {\n\t\t\t++stale;\n\t\t\tcontinue;\n\t\t}\n\n\t\tstale = 0;\n\n\t\tkeys.add(key);\n\t\tyield rectification;\n\t}\n};\n\nexport { MeasureRectification, genMeasureRectifications };\n","import { WeakLRUCache } from 'weak-lru-cache';\n\nimport { RegulationSolution, SpartitoMeasure } from '../../src/starry';\n\nconst lruCache = new WeakLRUCache();\n\ninterface SolutionStore {\n\tget: (key: string) => Promise;\n\tset: (key: string, val: RegulationSolution) => Promise;\n\tbatchGet: (keys: string[]) => Promise;\n}\n\n// 默认store\nconst DefaultSolutionStore: SolutionStore = {\n\tasync get(key: string) {\n\t\treturn lruCache.getValue(key) as RegulationSolution;\n\t},\n\tasync set(key: string, val: RegulationSolution) {\n\t\tlruCache.setValue(key, val);\n\t},\n\tasync batchGet(keys: string[]) {\n\t\treturn keys.map((key) => lruCache.getValue(key) as RegulationSolution);\n\t},\n};\n\nconst enum MeasureStatus {\n\tDiscard = -1,\n\tSolved = 0,\n\tIssue = 1,\n\tFatal = 2,\n}\n\ninterface IssueMeasure {\n\tscoreId: string;\n\tmeasureIndex: number;\n\tmeasure: SpartitoMeasure;\n\tstatus: MeasureStatus;\n}\n\ntype SaveIssueMeasure = (data: Omit) => void;\n\nexport { SolutionStore, DefaultSolutionStore, MeasureStatus, IssueMeasure, SaveIssueMeasure };\n","import * as starry from '../../src/starry';\nimport { Logger } from './ZeroClient';\nimport { SolutionStore, DefaultSolutionStore, SaveIssueMeasure, MeasureStatus } from './store';\n\ninterface BeadRegulationCounting {\n\tcached: number;\n\tsimple: number;\n\tcomputed: number;\n\ttryTimes: number;\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\ninterface RegulationBeadStat {\n\ttotalCost: number; // in milliseconds\n\tpickerCost: number; // in milliseconds\n\tmeasures: BeadRegulationCounting;\n\tqualityScore: number;\n}\n\ninterface RegulationBeadSummary {\n\tscoreN: number;\n\n\ttotalCost: number; // in milliseconds\n\tpickerCost: number; // in milliseconds\n\tcostPerMeasure: number | null; // in milliseconds\n\tcostPerTime: number | null; // in milliseconds\n\n\tcached: number;\n\tsimple: number;\n\tcomputed: number;\n\ttryTimes: number;\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\ninterface ProgressInfo {\n\tpass: number;\n\tremaining: number;\n\ttotal: number;\n}\n\ninterface RegulateBeadOption {\n\tlogger?: Logger;\n\tpickers: starry.BeadPicker[];\n\tsolutionStore?: SolutionStore;\n\tignoreCache?: boolean;\n\tfreshOnly?: boolean;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n\tonProgress?: (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean, progress: ProgressInfo) => void;\n\tonPassStart?: (pass: number, conditionName: string, pendingCount: number) => void;\n}\n\ninterface MeasureReord {\n\torigin: starry.SpartitoMeasure;\n\tcurrent: starry.SpartitoMeasure;\n\tevaluation?: starry.MeasureEvaluation;\n\tbaseQuality: number;\n\tpicker: starry.BeadPicker;\n}\n\ninterface BeadSolverOptions {\n\tstopLoss: number;\n\tquotaMax: number;\n\tquotaFactor: number;\n\tptFactor: number;\n}\n\nenum PendingCondition {\n\tErrorOnly,\n\tNotFine,\n\tImperfect,\n}\n\nconst isPending = (evaluation: starry.MeasureEvaluation, condition: PendingCondition) => {\n\tswitch (condition) {\n\t\tcase PendingCondition.ErrorOnly:\n\t\t\treturn evaluation.error;\n\n\t\tcase PendingCondition.Imperfect:\n\t\t\treturn !evaluation.perfect;\n\t}\n\n\treturn !evaluation.fine;\n};\n\ntype OnUpdate = (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean) => void;\n\nconst solveMeasureRecords = async (\n\trecords: MeasureReord[],\n\tonUpdate: OnUpdate,\n\tstdout: NodeJS.WritableStream | null,\n\toptions: Partial,\n\tpendingCondition: PendingCondition = PendingCondition.NotFine,\n\tpass: number = 0,\n\tonProgress?: RegulateBeadOption['onProgress']\n): Promise => {\n\tconst pendingRecords = records.filter(({ evaluation }) => !evaluation || isPending(evaluation, pendingCondition));\n\tstdout?.write('.'.repeat(pendingRecords.length));\n\tstdout?.write('\\b'.repeat(pendingRecords.length));\n\n\tconst total = pendingRecords.length;\n\tlet done = 0;\n\n\tfor (const record of pendingRecords) {\n\t\tconst measure = record.current.deepCopy();\n\t\tmeasure.staffGroups = record.current.staffGroups;\n\n\t\tconst solution = await starry.beadSolver.solveMeasure(measure, { picker: record.picker, ...options });\n\t\tmeasure.applySolution(solution);\n\n\t\tconst evaluation = starry.evaluateMeasure(measure);\n\t\tconst better =\n\t\t\t!record.evaluation ||\n\t\t\tevaluation.fine > record.evaluation.fine ||\n\t\t\t(evaluation.qualityScore > record.evaluation.qualityScore && evaluation.fine === record.evaluation.fine);\n\t\tif (better) {\n\t\t\trecord.evaluation = evaluation;\n\t\t\tObject.assign(record.current, measure);\n\t\t}\n\n\t\tonUpdate(record.current, evaluation, better);\n\n\t\tdone++;\n\t\tonProgress?.(record.current, evaluation, better, { pass, remaining: total - done, total });\n\t}\n\n\tif (pendingRecords.length) stdout?.write('\\n');\n\n\treturn pendingRecords.length;\n};\n\nconst regulateWithBeadSolver = async (\n\tscore: starry.Score,\n\t{ logger, pickers, solutionStore = DefaultSolutionStore, ignoreCache, freshOnly, onSaveIssueMeasure, onProgress, onPassStart }: RegulateBeadOption\n): Promise => {\n\tscore.spartito = undefined;\n\tscore.assemble();\n\tconst spartito = score.makeSpartito();\n\n\tspartito.measures.forEach((measure) => score.assignBackgroundForMeasure(measure));\n\n\tconst t0 = Date.now();\n\tlogger?.info(`[regulateWithBeadSolver] begin, measure total: ${spartito.measures.length}.`, ignoreCache ? 'ignoreCache' : '', freshOnly ? 'freshOnly' : '');\n\n\tconst records = spartito.measures\n\t\t.filter((measure) => measure.events?.length && !measure.patched)\n\t\t.map(\n\t\t\t(measure) =>\n\t\t\t\t({\n\t\t\t\t\torigin: measure.deepCopy(),\n\t\t\t\t\tcurrent: measure,\n\t\t\t\t\tevaluation: undefined,\n\t\t\t\t\tbaseQuality: 0,\n\t\t\t\t} as MeasureReord)\n\t\t);\n\n\t// rectify time signature\n\tfor (const measure of spartito.measures.filter((measure) => measure.events?.length)) {\n\t\tconst picker = pickers.find((picker) => picker.n_seq > measure.events.length + 1);\n\t\tif (picker) await starry.beadSolver.estimateMeasure(measure, picker);\n\t}\n\tspartito.rectifyTimeSignatures(logger as any);\n\n\t// zero pickers' cost\n\tpickers.forEach((picker) => (picker.cost = 0));\n\n\tconst counting = {\n\t\tcached: 0,\n\t\tsimple: 0,\n\t\tcomputed: 0,\n\t\ttryTimes: 0,\n\t\tsolved: 0,\n\t\tissue: 0,\n\t\tfatal: 0,\n\t};\n\n\tlogger?.info(`[regulateWithBeadSolver] measures estimation finished.`);\n\n\t// apply solutions\n\tif (solutionStore && !ignoreCache)\n\t\tfor (const record of records) {\n\t\t\tconst solution = await solutionStore.get(record.origin.regulationHash0);\n\t\t\tif (solution) {\n\t\t\t\trecord.current.applySolution(solution);\n\t\t\t\t++counting.cached;\n\n\t\t\t\trecord.evaluation = starry.evaluateMeasure(record.current);\n\t\t\t\trecord.baseQuality = record.evaluation.qualityScore;\n\t\t\t}\n\t\t}\n\n\tlogger?.info('[regulateWithBeadSolver]', `${counting.cached}/${records.length}`, 'solutions loaded.');\n\n\tconst stdout = logger ? null : process.stdout;\n\tif (counting.cached) stdout?.write(`${counting.cached}c`);\n\n\trecords.forEach((record) => {\n\t\tconst picker = pickers.find((picker) => picker.n_seq > record.current.events.length + 1);\n\t\tif (!picker) {\n\t\t\tlogger?.info(`[regulateWithBeadSolver] measure[${record.current.measureIndex}] size out of range:`, record.current.events.length);\n\t\t} else record.picker = picker;\n\t});\n\n\tconst pendingRecords = records.filter((record) => record.picker && (!record.evaluation || (!record.evaluation.fine && !freshOnly))) as (MeasureReord & {\n\t\tevaluation: starry.MeasureEvaluation;\n\t})[];\n\n\t// solve by simple policy\n\tpendingRecords.forEach((record) => {\n\t\tconst measure = record.current.deepCopy();\n\t\tmeasure.staffGroups = record.current.staffGroups;\n\n\t\tmeasure.regulate({ policy: 'simple' });\n\n\t\tconst evaluation = starry.evaluateMeasure(measure);\n\t\tconst better = !record.evaluation || evaluation.qualityScore > record.evaluation.qualityScore;\n\t\tif (better) {\n\t\t\trecord.evaluation = evaluation;\n\t\t\tObject.assign(record.current, measure);\n\n\t\t\tif (evaluation.perfect) {\n\t\t\t\tlogger?.info(`[regulateWithBeadSolver] measure[${record.current.measureIndex}] regulated by simple policy.`);\n\t\t\t\t++counting.simple;\n\t\t\t}\n\t\t}\n\t});\n\tcounting.computed = pendingRecords.length - counting.simple;\n\n\tif (counting.simple) stdout?.write(`${counting.simple}s`);\n\n\tconst onUpdate = (measure, evaluation, better) => {\n\t\tlogger?.info(\n\t\t\t`[regulateWithBeadSolver] measure[${measure.measureIndex}/${spartito.measures.length}] regulated${\n\t\t\t\tbetter ? '+' : '-'\n\t\t\t}: ${evaluation.qualityScore.toFixed(3)}, ${evaluation.fine ? 'solved' : evaluation.error ? 'error' : 'issue'}, ${measure.regulationHash}`\n\t\t);\n\n\t\tstdout?.write(`\\x1b[${evaluation.fine ? '32' : evaluation.error ? '31' : '33'}m${better ? '+' : '-'}\\x1b[0m`);\n\t};\n\n\t// Global progress: total = all measures, remaining = non-fine measures across all passes\n\tconst totalMeasures = spartito.measures.length;\n\tconst computeRemaining = () => pendingRecords.filter((r) => !r.evaluation?.fine).length;\n\tconst wrappedOnProgress = onProgress\n\t\t? (measure: starry.SpartitoMeasure, evaluation: starry.MeasureEvaluation, better: boolean, progress: ProgressInfo) => {\n\t\t\t\tonProgress(measure, evaluation, better, { pass: progress.pass, remaining: computeRemaining(), total: totalMeasures });\n\t\t }\n\t\t: undefined;\n\n\tonPassStart?.(1, 'Imperfect', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.05, quotaMax: 200, quotaFactor: 3, ptFactor: 1 },\n\t\tPendingCondition.Imperfect,\n\t\t1,\n\t\twrappedOnProgress\n\t);\n\tonPassStart?.(2, 'NotFine', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.08, quotaMax: 1000, quotaFactor: 20, ptFactor: 1.6 },\n\t\tPendingCondition.NotFine,\n\t\t2,\n\t\twrappedOnProgress\n\t);\n\tonPassStart?.(3, 'ErrorOnly', computeRemaining());\n\tcounting.tryTimes += await solveMeasureRecords(\n\t\tpendingRecords,\n\t\tonUpdate,\n\t\tstdout,\n\t\t{ stopLoss: 0.08, quotaMax: 1000, quotaFactor: 40, ptFactor: 3 },\n\t\tPendingCondition.ErrorOnly,\n\t\t3,\n\t\twrappedOnProgress\n\t);\n\n\tpendingRecords.forEach(({ evaluation, baseQuality, current, origin }) => {\n\t\tif (evaluation.fine) ++counting.solved;\n\t\telse if (evaluation.error) ++counting.fatal;\n\t\telse ++counting.issue;\n\n\t\tif (evaluation.qualityScore > baseQuality || !baseQuality) {\n\t\t\tsolutionStore.set(origin.regulationHash0, { ...current.asSolution(origin), priority: -current?.solutionStat?.loss! });\n\t\t\tif (current.regulationHash !== origin.regulationHash0)\n\t\t\t\tsolutionStore.set(current.regulationHash, { ...current.asSolution(), priority: -current?.solutionStat?.loss! });\n\t\t\t//console.log('better:', current.measureIndex, evaluation.qualityScore, baseQuality);\n\t\t}\n\n\t\tif (!evaluation.fine) {\n\t\t\tonSaveIssueMeasure?.({\n\t\t\t\tmeasureIndex: current.measureIndex,\n\t\t\t\tmeasure: new starry.EditableMeasure(current),\n\t\t\t\tstatus: evaluation.error ? MeasureStatus.Fatal : MeasureStatus.Issue,\n\t\t\t});\n\t\t}\n\t});\n\n\tconst t1 = Date.now();\n\tconst pickerCost = pickers.reduce((cost, picker) => cost + picker.cost, 0);\n\n\tconst qualityScore = spartito.qualityScore;\n\tconst totalCost = t1 - t0;\n\n\tlogger?.info('[regulateWithBeadSolver] done in ', totalCost, 'ms, qualityScore:', qualityScore);\n\n\t// zero 'cached' statistics for freshOnly mode\n\tif (freshOnly) counting.cached = 0;\n\n\treturn {\n\t\ttotalCost: t1 - t0,\n\t\tpickerCost,\n\t\tmeasures: counting,\n\t\tqualityScore,\n\t};\n};\n\nconst abstractRegulationBeadStats = (stats: RegulationBeadStat[]): RegulationBeadSummary => {\n\tconst { totalCost, pickerCost, measureN, timeN } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\ttotalCost: sum.totalCost + stat.totalCost,\n\t\t\tpickerCost: sum.pickerCost + stat.pickerCost,\n\t\t\tmeasureN: sum.measureN + stat.measures.computed,\n\t\t\ttimeN: sum.timeN + stat.measures.tryTimes,\n\t\t}),\n\t\t{\n\t\t\ttotalCost: 0,\n\t\t\tpickerCost: 0,\n\t\t\tmeasureN: 0,\n\t\t\ttimeN: 0,\n\t\t}\n\t);\n\n\tconst costPerMeasure = measureN > 0 ? totalCost / measureN : null;\n\tconst costPerTime = timeN > 0 ? totalCost / timeN : null;\n\n\tconst { cached, simple, computed, tryTimes, solved, issue, fatal } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tcached: sum.cached + stat.measures.cached,\n\t\t\tsimple: sum.simple + stat.measures.simple,\n\t\t\tcomputed: sum.computed + stat.measures.computed,\n\t\t\ttryTimes: sum.tryTimes + stat.measures.tryTimes,\n\t\t\tsolved: sum.solved + stat.measures.solved,\n\t\t\tissue: sum.issue + stat.measures.issue,\n\t\t\tfatal: sum.fatal + stat.measures.fatal,\n\t\t}),\n\t\t{ cached: 0, simple: 0, computed: 0, tryTimes: 0, solved: 0, issue: 0, fatal: 0 }\n\t);\n\n\treturn {\n\t\tscoreN: stats.length,\n\t\ttotalCost,\n\t\tpickerCost,\n\t\tcostPerMeasure,\n\t\tcostPerTime,\n\t\tcached,\n\t\tsimple,\n\t\tcomputed,\n\t\ttryTimes,\n\t\tsolved,\n\t\tissue,\n\t\tfatal,\n\t};\n};\n\nexport { regulateWithBeadSolver, abstractRegulationBeadStats, RegulationBeadStat, ProgressInfo };\n","import * as starry from '../../src/starry';\nimport { PyClients } from './predictors';\nimport { Logger } from './ZeroClient';\nimport { SpartitoMeasure, EditableMeasure, evaluateMeasure } from '../../src/starry';\nimport { EquationPolicy } from '../../src/starry/spartitoMeasure';\nimport { genMeasureRectifications } from '../../src/starry/measureRectification';\nimport { SolutionStore, DefaultSolutionStore, SaveIssueMeasure } from './store';\nexport * from './regulationBead';\n\nglobalThis.btoa = globalThis.btoa || ((str) => Buffer.from(str, 'binary').toString('base64'));\n\nconst RECTIFICATION_SEARCH_ITERATIONS = parseInt(process.env.RECTIFICATION_SEARCH_ITERATIONS || '30');\nconst BASE_QUOTA_FACTOR = parseInt(process.env.BASE_QUOTA_FACTOR || '40');\nconst RECTIFICATION_QUOTA_FACTOR = parseInt(process.env.RECTIFICATION_QUOTA_FACTOR || '80');\n\nconst MATRIXH_INTERPOLATION_K = 0.9;\n\ninterface SolveMeasureOptions {\n\tsolver?: (...args: any[]) => any;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n\tsolutionStore?: SolutionStore;\n\tignoreCache?: boolean;\n\tlogger?: Logger;\n}\n\nconst computeQuota = (n: number, factor: number, limit: number) =>\n\tMath.min(Math.ceil((n + 1) * factor * Math.log(n + 2)), Math.ceil(limit * Math.min(1, (24 / (n + 1)) ** 2)));\n\ninterface BaseRegulationStat {\n\tcached: number;\n\tcomputed: number;\n\tsolved: number;\n}\n\nasync function solveMeasures(\n\tmeasures: SpartitoMeasure[],\n\t{ solver, quotaMax = 1000, quotaFactor = BASE_QUOTA_FACTOR, solutionStore = DefaultSolutionStore, ignoreCache = false, logger }: SolveMeasureOptions = {}\n): Promise {\n\tlet cached = 0;\n\tlet solved = 0;\n\n\tlogger?.info(`[solveMeasures] begin, measure total: ${measures.length}.`);\n\n\tawait Promise.all(\n\t\tmeasures.map(async (measure) => {\n\t\t\tif (!ignoreCache) {\n\t\t\t\tconst solution = await solutionStore.get(measure.regulationHash);\n\t\t\t\tif (solution) {\n\t\t\t\t\tmeasure.applySolution(solution);\n\t\t\t\t\t++cached;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst quota = computeQuota(measure.events.length, quotaFactor, quotaMax);\n\n\t\t\tawait measure.regulate({\n\t\t\t\tpolicy: 'equations',\n\t\t\t\tquota,\n\t\t\t\tsolver,\n\t\t\t});\n\n\t\t\tconst stat = evaluateMeasure(measure);\n\t\t\tif (!stat.error) solutionStore.set(measure.regulationHash0, { ...measure.asSolution(), priority: -measure?.solutionStat?.loss! });\n\t\t\tif (stat.perfect) ++solved;\n\n\t\t\tlogger?.info(\n\t\t\t\t`[solveMeasures] measure[${measure.measureIndex}/${measures.length}] regulated: ${stat.perfect ? 'solved' : stat.error ? 'error' : 'issue'}, ${\n\t\t\t\t\tmeasure.regulationHash\n\t\t\t\t}`\n\t\t\t);\n\t\t})\n\t);\n\n\tlogger?.info(`[solveMeasures] ${cached}/${measures.length} cache hit, ${solved} solved.`);\n\n\treturn {\n\t\tcached,\n\t\tcomputed: measures.length - cached,\n\t\tsolved,\n\t};\n}\n\nconst solveMeasuresWithRectifications = async (\n\tmeasure: SpartitoMeasure,\n\t{ solver, quotaMax = 4000 }: SolveMeasureOptions\n): Promise => {\n\tlet best = evaluateMeasure(measure);\n\tlet bestSolution: starry.RegulationSolution = measure.asSolution();\n\tconst quota = computeQuota(measure.events.length, RECTIFICATION_QUOTA_FACTOR, quotaMax);\n\tlet n_rec = 0;\n\n\t// @ts-ignore\n\tfor (const rec of genMeasureRectifications(measure)) {\n\t\tconst solution = await EquationPolicy.regulateMeasureWithRectification(measure, rec, { solver, quota });\n\n\t\tconst testMeasure = measure.deepCopy() as SpartitoMeasure;\n\t\ttestMeasure.applySolution(solution);\n\t\tconst result = evaluateMeasure(testMeasure);\n\n\t\tif (\n\t\t\tresult.perfect > best.perfect ||\n\t\t\tresult.error < best.error ||\n\t\t\t(!result.error && result.perfect >= best.perfect && solution.priority! > bestSolution.priority!)\n\t\t) {\n\t\t\tbest = result;\n\t\t\tbestSolution = solution;\n\t\t}\n\n\t\tif (result.perfect) break;\n\n\t\t++n_rec;\n\t\tif (n_rec > RECTIFICATION_SEARCH_ITERATIONS) break;\n\t}\n\n\treturn bestSolution;\n};\n\ninterface RegulateWithTopoOption {\n\tsolutionStore: SolutionStore;\n\tpyClients: PyClients;\n\tsolver: (...args: any[]) => any;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n}\n\ninterface RegulateMaybeWithTopoOption {\n\tsolutionStore: SolutionStore;\n\tpyClients?: PyClients;\n\tsolver: (...args: any[]) => any;\n\tonSaveIssueMeasure?: SaveIssueMeasure;\n}\n\ninterface RegulateSimpleOption {\n\tsolutionStore: SolutionStore;\n\tsolver: (...args: any[]) => any;\n\tlogger?: Logger;\n\tquotaMax?: number;\n\tquotaFactor?: number;\n}\n\ninterface TopoRegulationStat {\n\tsolved: number;\n\tissue: number;\n\tfatal: number;\n}\n\nasync function doRegulateWithTopo(\n\tscore: starry.Score,\n\t{ pyClients, solver, solutionStore = DefaultSolutionStore, onSaveIssueMeasure }: RegulateWithTopoOption\n): Promise {\n\tpyClients.logger.info(`[RegulateWithTopo] regulate score: ${score.title}, measures: ${score.spartito!.measures.length}`);\n\n\tconst issueMeasures = score.spartito!.measures.filter((measure) => {\n\t\tconst stat = evaluateMeasure(measure);\n\t\treturn !stat.perfect;\n\t});\n\tpyClients.logger.info(`[RegulateWithTopo] basic issues: ${issueMeasures.length}`);\n\n\tif (issueMeasures.length === 0) {\n\t\treturn {\n\t\t\tsolved: 0,\n\t\t\tissue: 0,\n\t\t\tfatal: 0,\n\t\t};\n\t}\n\n\tconst clusters = ([] as starry.EventCluster[]).concat(...issueMeasures.map((measure) => measure.createClusters()));\n\tconst results = await pyClients.predictScoreImages('topo', { clusters });\n\tconsole.assert(results.length === clusters.length, 'prediction number mismatch:', clusters.length, results.length);\n\n\tclusters.forEach((cluster, index) => {\n\t\tconst result = results[index];\n\t\tconsole.assert(result, 'no result for cluster:', cluster.index);\n\n\t\tcluster.assignPrediction(result);\n\t});\n\n\tissueMeasures.forEach((measure) => {\n\t\tconst cs = clusters.filter((c) => c.index === measure.measureIndex);\n\t\tmeasure.applyClusters(cs);\n\n\t\t// intepolate matrixH\n\t\tconst { matrixH } = EquationPolicy.estiamteMeasure(measure);\n\t\tmatrixH.forEach((row, i) =>\n\t\t\trow.forEach((v, j) => {\n\t\t\t\tmeasure.matrixH[i][j] = measure.matrixH[i][j] * MATRIXH_INTERPOLATION_K + v * (1 - MATRIXH_INTERPOLATION_K);\n\t\t\t})\n\t\t);\n\t});\n\n\tconst solvedIndices: number[] = [];\n\tconst errorIndices: number[] = [];\n\n\t// rectification search\n\tawait Promise.all(\n\t\tissueMeasures.map(async (measure) => {\n\t\t\tconst hash = measure.regulationHash0;\n\t\t\tconst solution = await solveMeasuresWithRectifications(measure, { solver });\n\t\t\tif (solution) {\n\t\t\t\tmeasure.applySolution(solution);\n\t\t\t\tsolutionStore.set(hash, solution);\n\t\t\t\tsolutionStore.set(measure.regulationHash, measure.asSolution());\n\t\t\t\tpyClients.logger.info(`[RegulateWithTopo] solutionStore set: ${measure.measureIndex}, ${hash}, ${measure.regulationHash}`);\n\t\t\t}\n\n\t\t\tconst stat = evaluateMeasure(measure);\n\t\t\tonSaveIssueMeasure?.({\n\t\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\t\tmeasure: new EditableMeasure(measure),\n\t\t\t\tstatus: stat.error ? 2 : 1,\n\t\t\t});\n\t\t\tif (stat.perfect) solvedIndices.push(measure.measureIndex);\n\t\t\telse if (stat.error) errorIndices.push(measure.measureIndex);\n\t\t})\n\t);\n\n\tconst n_issues = issueMeasures.length - solvedIndices.length - errorIndices.length;\n\tpyClients.logger.info(`[RegulateWithTopo] score: ${score.title}, solved/issue/fatal: ${solvedIndices.length}/${n_issues}/${errorIndices.length}`);\n\tif (solvedIndices.length) pyClients.logger.info(`[RegulateWithTopo] solved measures: ${solvedIndices.join(', ')}`);\n\tif (errorIndices.length) pyClients.logger.info(`[RegulateWithTopo] error measures: ${errorIndices.join(', ')}`);\n\n\treturn {\n\t\tsolved: solvedIndices.length,\n\t\tissue: n_issues,\n\t\tfatal: errorIndices.length,\n\t};\n}\n\ninterface RegulationStat {\n\tbaseCost: number; // in milliseconds\n\ttopoCost: number; // in milliseconds\n\tbaseMeasures: BaseRegulationStat;\n\ttopoMeasures?: TopoRegulationStat;\n\tqualityScore: number;\n}\n\nconst doRegulate = async (\n\tscore: starry.Score,\n\t{ pyClients, solver, solutionStore = DefaultSolutionStore, onSaveIssueMeasure }: RegulateMaybeWithTopoOption\n): Promise => {\n\tpyClients?.logger?.info(`[doRegulate] score: ${score.title}`);\n\n\tscore.spartito = undefined;\n\tscore.assemble();\n\tconst spartito = score.makeSpartito();\n\n\tspartito.measures.forEach((measure) => score.assignBackgroundForMeasure(measure));\n\n\tconst t0 = Date.now();\n\n\tconst baseMeasures = await solveMeasures(spartito.measures, { solver, quotaMax: 1000, solutionStore, logger: pyClients?.logger });\n\n\tconst t1 = Date.now();\n\n\tconst topoMeasures = pyClients ? await doRegulateWithTopo(score, { pyClients, solver, solutionStore, onSaveIssueMeasure }) : undefined;\n\n\tconst t2 = Date.now();\n\n\treturn {\n\t\tbaseCost: t1 - t0,\n\t\ttopoCost: t2 - t1,\n\t\tbaseMeasures,\n\t\ttopoMeasures,\n\t\tqualityScore: spartito.qualityScore,\n\t};\n};\n\nconst doSimpleRegulate = async (\n\tscore: starry.Score,\n\t{ solver, solutionStore = DefaultSolutionStore, logger, quotaMax = 240, quotaFactor = 16 }: RegulateSimpleOption\n): Promise => {\n\tscore.assemble();\n\tconst spartito = score.spartito || score.makeSpartito();\n\tconst measures = spartito.measures.filter((measure) => !measure.regulated);\n\n\tawait solveMeasures(measures, { solver, quotaMax, quotaFactor, solutionStore, logger });\n\n\tconsole.assert(score.spartito?.regulated, 'doSimpleRegulate: regulation incomplete:', spartito.measures.filter((measure) => !measure.regulated).length);\n};\n\nconst evaluateScoreQuality = async (score: starry.Score, options: RegulateSimpleOption): Promise => {\n\tif (!score.spartito?.regulated) await doSimpleRegulate(score, options);\n\n\treturn score.spartito!.regulated ? score.spartito!.qualityScore : null;\n};\n\ninterface RegulationSummary {\n\tscoreN: number;\n\n\tbaseCostTotal: number; // in milliseconds\n\ttopoCostTotal: number; // in milliseconds\n\tbaseCostPerMeasure: number | null; // in milliseconds\n\ttopoCostPerMeasure: number | null; // in milliseconds\n\n\tcached: number;\n\tbaseComputed: number;\n\tbaseSolved: number;\n\ttopoSolved: number;\n\ttopoIssue: number;\n\ttopoFatal: number;\n}\n\nconst abstractRegulationStats = (stats: RegulationStat[]): RegulationSummary => {\n\tconst { baseCostTotal, topoCostTotal, baseMeasures, topoMeasures } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tbaseCostTotal: sum.baseCostTotal + stat.baseCost,\n\t\t\ttopoCostTotal: sum.topoCostTotal + stat.topoCost,\n\t\t\tbaseMeasures: sum.baseMeasures + stat.baseMeasures.computed,\n\t\t\ttopoMeasures: sum.topoMeasures + (stat.topoMeasures!.solved + stat.topoMeasures!.issue + stat.topoMeasures!.fatal),\n\t\t}),\n\t\t{\n\t\t\tbaseCostTotal: 0,\n\t\t\ttopoCostTotal: 0,\n\t\t\tbaseMeasures: 0,\n\t\t\ttopoMeasures: 0,\n\t\t}\n\t);\n\n\tconst baseCostPerMeasure = baseMeasures > 0 ? baseCostTotal / baseMeasures : null;\n\tconst topoCostPerMeasure = topoMeasures > 0 ? topoCostTotal / topoMeasures : null;\n\n\tconst { cached, baseComputed, baseSolved, topoSolved, topoIssue, topoFatal } = stats.reduce(\n\t\t(sum, stat) => ({\n\t\t\tcached: sum.cached + stat.baseMeasures.cached,\n\t\t\tbaseComputed: sum.baseComputed + stat.baseMeasures.computed,\n\t\t\tbaseSolved: sum.baseSolved + stat.baseMeasures.solved,\n\t\t\ttopoSolved: sum.topoSolved + stat.topoMeasures!.solved,\n\t\t\ttopoIssue: sum.topoIssue + stat.topoMeasures!.issue,\n\t\t\ttopoFatal: sum.topoFatal + stat.topoMeasures!.fatal,\n\t\t}),\n\t\t{ cached: 0, baseComputed: 0, baseSolved: 0, topoSolved: 0, topoIssue: 0, topoFatal: 0 }\n\t);\n\n\treturn {\n\t\tscoreN: stats.length,\n\t\tbaseCostTotal,\n\t\ttopoCostTotal,\n\t\tbaseCostPerMeasure,\n\t\ttopoCostPerMeasure,\n\t\tcached,\n\t\tbaseComputed,\n\t\tbaseSolved,\n\t\ttopoSolved,\n\t\ttopoIssue,\n\t\ttopoFatal,\n\t};\n};\n\nexport { doRegulate, doSimpleRegulate, evaluateScoreQuality, abstractRegulationStats };\n","import SparkMD5 from 'spark-md5';\n//import JSZip from 'jszip';\nimport * as starry from '../../src/starry';\n//import { encodeFindResource } from '../../src/isomorphic/converter';\nimport sharp, { FormatEnum } from 'sharp';\nimport got from 'got';\n//import { Logger } from './ZeroClient';\nimport type { SolutionStore, SaveIssueMeasure } from './store';\nimport { ScoreJSON } from '../../src/isomorphic/types';\n\nconst SYSTEM_MARGIN = 4;\n\nexport const constructSystem = ({ page, backgroundImage, detection, imageSize, position }) => {\n\tconst systemWidth = (detection.phi2 - detection.phi1) / detection.interval;\n\tconst systemHeight = imageSize.height / detection.interval;\n\n\tconst lastSystem = page.systems[page.systems.length - 1];\n\tconst top = position ? position.y : (lastSystem ? lastSystem.top + lastSystem.height : 0) + SYSTEM_MARGIN;\n\tconst left = position ? position.x : SYSTEM_MARGIN;\n\n\tconst stavesTops = [\n\t\t0,\n\t\t...Array(detection.middleRhos.length - 1)\n\t\t\t.fill(0)\n\t\t\t.map((_, i) => (detection.middleRhos[i] + detection.middleRhos[i + 1]) / 2 / detection.interval),\n\t];\n\n\tconst measureBars = [systemWidth];\n\n\tconst staves = stavesTops.map(\n\t\t(top, i) =>\n\t\t\tnew starry.Staff({\n\t\t\t\ttop,\n\t\t\t\theight: (stavesTops[i + 1] || systemHeight) - top,\n\t\t\t\tstaffY: detection.middleRhos[i] / detection.interval - top,\n\t\t\t\tmeasureBars,\n\t\t\t})\n\t);\n\n\t//console.log(\"detection:\", detection, options, stavesTops);\n\n\tconst imagePosition = {\n\t\tx: -detection.phi1 / detection.interval,\n\t\ty: 0,\n\t\twidth: imageSize.width / detection.interval,\n\t\theight: imageSize.height / detection.interval,\n\t};\n\n\treturn new starry.System({\n\t\tstaves,\n\t\tleft,\n\t\ttop,\n\t\twidth: systemWidth,\n\t\tbackgroundImage,\n\t\timagePosition,\n\t\tmeasureBars,\n\t});\n};\n\nexport interface ConvertOption {\n\tformat?: keyof FormatEnum;\n\tquality?: number;\n\tmaxHeight?: number;\n}\n\nconst toBuffer = async (url: string | Buffer): Promise => {\n\tif (typeof url === 'string') {\n\t\tif (/^https?:\\/\\//.test(url)) {\n\t\t\treturn (await got(url, { responseType: 'buffer', decompress: true, https: { rejectUnauthorized: false } })).body;\n\t\t}\n\n\t\tif (/^data:image\\//.test(url)) {\n\t\t\treturn Buffer.from(url.split(',')[1], 'base64');\n\t\t}\n\n\t\treturn Buffer.from(url);\n\t}\n\n\treturn url;\n};\n\n/**\n * 转换图片格式,默认webp、最大高度1080,高度小于1080自动不做尺寸变换\n * @param url\n * @param format\n * @param maxHeight\n * @param quality\n */\nexport async function convertImage(url: string | Buffer, { format = 'webp', maxHeight = 1080, quality = 80 }: ConvertOption = {}) {\n\tlet buf = await toBuffer(url);\n\n\tconst webpBuffer = await new Promise((resolve) => {\n\t\tsharp(buf)\n\t\t\t.resize({\n\t\t\t\twidth: maxHeight,\n\t\t\t\theight: maxHeight,\n\t\t\t\tfit: 'inside',\n\t\t\t\twithoutEnlargement: true,\n\t\t\t})\n\t\t\t.toFormat(format, { quality })\n\t\t\t.toBuffer((err, buf) => {\n\t\t\t\tresolve(buf);\n\t\t\t});\n\t});\n\n\tconst md5 = SparkMD5.ArrayBuffer.hash(webpBuffer);\n\n\treturn {\n\t\tbuffer: webpBuffer,\n\t\tfilename: `${md5}.${format}`,\n\t};\n}\n\n/**\n * 替换scoreJson图片地址\n * @param scoreJson\n * @param onReplaceImage\n */\nexport const replaceScoreJsonImages = (scoreJson: ScoreJSON, onReplaceImage: (src: string) => string = (src) => src) => {\n\tconst json = JSON.parse(JSON.stringify(scoreJson));\n\n\tjson.pages.forEach((page) => {\n\t\tpage?.src && (page.src = onReplaceImage(page?.src));\n\t});\n\n\tjson.lines.forEach((system) => {\n\t\tsystem.lineStaves.forEach((line) => {\n\t\t\tline.imgs.forEach((staff) => {\n\t\t\t\tstaff?.src && (staff.src = onReplaceImage(staff.src));\n\t\t\t});\n\t\t});\n\t});\n\n\treturn json;\n};\n\n/**\n * 获取scoreJson图片资源列表\n * @param scoreJson\n */\nexport const getScoreJsonImages = (scoreJson: ScoreJSON) => {\n\treturn [\n\t\t...scoreJson.pages.map((page) => page?.src),\n\t\t...scoreJson.lines\n\t\t\t.map((system) => system.lineStaves.map((staff) => staff.imgs))\n\t\t\t.flat(2)\n\t\t\t.map((staff) => staff?.src)\n\t\t\t.filter(Boolean),\n\t];\n};\n\ninterface ScorePatchesUpdateOptions {\n\tsolutionStore?: SolutionStore;\n}\n\nexport const updateScorePatches = (score: starry.Score, measures: starry.SpartitoMeasure[], options: ScorePatchesUpdateOptions = {}): void => {\n\tconsole.assert(\n\t\tmeasures.every((measure) => measure.validRegulated),\n\t\t'[updateScorePatches] some measures not valid regulated:',\n\t\tmeasures.filter((measure) => !measure.validRegulated)\n\t);\n\n\tscore.patches = measures.map((measure) => measure.createPatch());\n\n\tif (options?.solutionStore) {\n\t\tscore.assemble();\n\t\tconst spartito = score.makeSpartito();\n\n\t\tmeasures.forEach((measure) => {\n\t\t\toptions.solutionStore!.set(measure.regulationHash, { ...measure.asSolution(), priority: 1 });\n\t\t\tif (measure.regulationHash0 !== measure.regulationHash) {\n\t\t\t\tconst originMeasure = spartito.measures.find((m) => m.measureIndex === measure.measureIndex);\n\t\t\t\toptions.solutionStore!.set(measure.regulationHash0, { ...measure.asSolution(originMeasure), priority: 1 });\n\t\t\t}\n\t\t});\n\t}\n};\n\ninterface EditableMeasuresSaveOptions {\n\tstatus?: number;\n\tsolutionStore?: SolutionStore;\n}\n\nexport const saveEditableMeasures = async (\n\tscore: starry.Score,\n\tmeasureIndices: number[],\n\tsaveMeasure: SaveIssueMeasure,\n\t{ status = 2, solutionStore }: EditableMeasuresSaveOptions = {}\n): Promise => {\n\tscore.assemble();\n\tconst spartito = score.spartito || score.makeSpartito();\n\n\tconst measures = measureIndices\n\t\t.map((index) => spartito.measures.find((measure) => measure.measureIndex === index))\n\t\t.filter(Boolean) as starry.SpartitoMeasure[];\n\n\tif (solutionStore) {\n\t\tconst solutions = await solutionStore.batchGet(measures.map((measure) => measure.regulationHash0));\n\t\tmeasures.forEach((measure, i) => {\n\t\t\tconst solution = solutions[i];\n\t\t\tif (solution) measure.applySolution(solution);\n\t\t});\n\t}\n\n\tmeasures.forEach((measure) => {\n\t\tsaveMeasure({\n\t\t\tmeasureIndex: measure.measureIndex,\n\t\t\tmeasure: new starry.EditableMeasure(measure),\n\t\t\tstatus,\n\t\t});\n\t});\n};\n","console.info(`%cstarry-omr%c v1.0.0 2026-04-23T11:21:15.791Z`, 'color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;', 'color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;');\nimport '../../libs/browserComponents';\n\nexport * from '../../libs/predictors';\nexport * from '../../libs/regulation';\nexport * from '../../libs/util';\nexport * as starry from '../../../src/starry';\n"],"names":["eventsModule","events","EventEmitter","Request","pack","unpack","getPortPromise","defaultsDeep","PythonShell","inherits_browserModule","inheritsModule","require$$0","require$$1","util","getPort","sha1","pick","parser","parse","parseCode","grammar","GROUP_N_TO_PITCH","MIDDLE_C","mod7","argmax","Token.TokenClefs","Token.TokenOctshifts","Token.TokenTimesigsC","Token.TokenTimesigsN","MIDI","MidiSequence","Notation","MusicNotation","MidiPlayer","Config","Node","Navigator","Matcher","MidiUtils","require$$2","require$$3","require$$4","undefined","require","EquationSolver.Solver","erf","staffLayout.parseCode","measureLayout.parseCode","WeakLRUCache","starry.beadSolver.solveMeasure","starry.evaluateMeasure","starry.beadSolver.estimateMeasure","starry.EditableMeasure","starry.Staff","starry.System","got","sharp","SparkMD5"],"mappings":"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AAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACnJ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACxG,YAAA,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACnJ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACf,YAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7F,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;YACtD,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACd,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACd,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACd,YAAA,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACb,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;YACtD,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;YACtD,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE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"} \ No newline at end of file diff --git a/backend/omr/dist/worker.js b/backend/omr/dist/worker.js index 26d98548089b9c7749e58ef2f48112ef0ccc19b4..50f6b4bea0a17b063518bc96c7bd172c802ae48f 100644 --- a/backend/omr/dist/worker.js +++ b/backend/omr/dist/worker.js @@ -1,11 +1,11 @@ -(function(){"use strict";var environment$2={exports:{}},requireFoolWebpack$1=eval("typeof require !== 'undefined' ? require : function (module) { throw new Error('Module \" + module + \" not found.') }"),requireFoolWebpack_1=requireFoolWebpack$1;function Promise$2(e,t){var r=this;if(!(this instanceof Promise$2))throw new SyntaxError("Constructor must be called with the new operator");if("function"!=typeof e)throw new SyntaxError("Function parameter handler(resolve, reject) missing");var n=[],s=[];this.resolved=!1,this.rejected=!1,this.pending=!0;var i=function(e,t){n.push(e),s.push(t)};this.then=function(e,t){return new Promise$2(function(r,n){var s=e?_then(e,r,n):r,o=t?_then(t,r,n):n;i(s,o)},r)};var o=function(e){return r.resolved=!0,r.rejected=!1,r.pending=!1,n.forEach(function(t){t(e)}),i=function(t,r){t(e)},o=a=function(){},r},a=function(e){return r.resolved=!1,r.rejected=!0,r.pending=!1,s.forEach(function(t){t(e)}),i=function(t,r){r(e)},o=a=function(){},r};this.cancel=function(){return t?t.cancel():a(new CancellationError),r},this.timeout=function(e){if(t)t.timeout(e);else{var n=setTimeout(function(){a(new TimeoutError("Promise timed out after "+e+" ms"))},e);r.always(function(){clearTimeout(n)})}return r},e(function(e){o(e)},function(e){a(e)})}function _then(e,t,r){return function(n){try{var s=e(n);s&&"function"==typeof s.then&&"function"==typeof s.catch?s.then(t,r):t(s)}catch(e){r(e)}}}function CancellationError(e){this.message=e||"promise cancelled",this.stack=(new Error).stack}function TimeoutError(e){this.message=e||"timeout exceeded",this.stack=(new Error).stack}!function(e){var t=requireFoolWebpack_1,r=function(e){return void 0!==e&&null!=e.versions&&null!=e.versions.node};e.exports.isNode=r,e.exports.platform="undefined"!=typeof process&&r(process)?"node":"browser";var n=function(e){try{return t(e)}catch(e){return null}}("worker_threads");e.exports.isMainThread="node"===e.exports.platform?(!n||n.isMainThread)&&!process.connected:"undefined"!=typeof Window,e.exports.cpus="browser"===e.exports.platform?self.navigator.hardwareConcurrency:t("os").cpus().length}(environment$2),Promise$2.prototype.catch=function(e){return this.then(null,e)},Promise$2.prototype.always=function(e){return this.then(e,e)},Promise$2.all=function(e){return new Promise$2(function(t,r){var n=e.length,s=[];n?e.forEach(function(e,i){e.then(function(e){s[i]=e,0==--n&&t(s)},function(e){n=0,r(e)})}):t(s)})},Promise$2.defer=function(){var e={};return e.promise=new Promise$2(function(t,r){e.resolve=t,e.reject=r}),e},CancellationError.prototype=new Error,CancellationError.prototype.constructor=Error,CancellationError.prototype.name="CancellationError",Promise$2.CancellationError=CancellationError,TimeoutError.prototype=new Error,TimeoutError.prototype.constructor=Error,TimeoutError.prototype.name="TimeoutError",Promise$2.TimeoutError=TimeoutError;var _Promise=Promise$2,WorkerHandler$1={exports:{}},embeddedWorker='!function(){var __webpack_modules__={577:function(e){e.exports=function(e,r){this.message=e,this.transfer=r}}},__webpack_module_cache__={};function __webpack_require__(e){var r=__webpack_module_cache__[e];return void 0!==r||(r=__webpack_module_cache__[e]={exports:{}},__webpack_modules__[e](r,r.exports,__webpack_require__)),r.exports}var __webpack_exports__={};!function(){var exports=__webpack_exports__,__webpack_unused_export__;function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var Transfer=__webpack_require__(577),requireFoolWebpack=eval("typeof require !== \'undefined\' ? require : function (module) { throw new Error(\'Module \\" + module + \\" not found.\') }"),TERMINATE_METHOD_ID="__workerpool-terminate__",worker={exit:function(){}},WorkerThreads,parentPort;if("undefined"!=typeof self&&"function"==typeof postMessage&&"function"==typeof addEventListener)worker.on=function(e,r){addEventListener(e,function(e){r(e.data)})},worker.send=function(e){postMessage(e)};else{if("undefined"==typeof process)throw new Error("Script must be executed as a worker");try{WorkerThreads=requireFoolWebpack("worker_threads")}catch(error){if("object"!==_typeof(error)||null===error||"MODULE_NOT_FOUND"!==error.code)throw error}WorkerThreads&&null!==WorkerThreads.parentPort?(parentPort=WorkerThreads.parentPort,worker.send=parentPort.postMessage.bind(parentPort),worker.on=parentPort.on.bind(parentPort)):(worker.on=process.on.bind(process),worker.send=function(e){process.send(e)},worker.on("disconnect",function(){process.exit(1)})),worker.exit=process.exit.bind(process)}function convertError(o){return Object.getOwnPropertyNames(o).reduce(function(e,r){return Object.defineProperty(e,r,{value:o[r],enumerable:!0})},{})}function isPromise(e){return e&&"function"==typeof e.then&&"function"==typeof e.catch}worker.methods={},worker.methods.run=function(e,r){e=new Function("return ("+e+").apply(null, arguments);");return e.apply(e,r)},worker.methods.methods=function(){return Object.keys(worker.methods)},worker.terminationHandler=void 0,worker.cleanupAndExit=function(e){function r(){worker.exit(e)}if(!worker.terminationHandler)return r();var o=worker.terminationHandler(e);isPromise(o)?o.then(r,r):r()};var currentRequestId=null;worker.on("message",function(r){if(r===TERMINATE_METHOD_ID)return worker.cleanupAndExit(0);try{var e=worker.methods[r.method];if(!e)throw new Error(\'Unknown method "\'+r.method+\'"\');currentRequestId=r.id;var o=e.apply(e,r.params);isPromise(o)?o.then(function(e){e instanceof Transfer?worker.send({id:r.id,result:e.message,error:null},e.transfer):worker.send({id:r.id,result:e,error:null}),currentRequestId=null}).catch(function(e){worker.send({id:r.id,result:null,error:convertError(e)}),currentRequestId=null}):(o instanceof Transfer?worker.send({id:r.id,result:o.message,error:null},o.transfer):worker.send({id:r.id,result:o,error:null}),currentRequestId=null)}catch(e){worker.send({id:r.id,result:null,error:convertError(e)})}}),worker.register=function(e,r){if(e)for(var o in e)e.hasOwnProperty(o)&&(worker.methods[o]=e[o]);r&&(worker.terminationHandler=r.onTerminate),worker.send("ready")},worker.emit=function(e){currentRequestId&&(e instanceof Transfer?worker.send({id:currentRequestId,isEvent:!0,payload:e.message},e.transfer):worker.send({id:currentRequestId,isEvent:!0,payload:e}))},__webpack_unused_export__=worker.register,worker.emit}()}();',Promise$1=_Promise,environment$1=environment$2.exports,requireFoolWebpack=requireFoolWebpack_1,TERMINATE_METHOD_ID="__workerpool-terminate__";function ensureWorkerThreads(){var e=tryRequireWorkerThreads();if(!e)throw new Error("WorkerPool: workerType = 'thread' is not supported, Node >= 11.7.0 required");return e}function ensureWebWorker(){if("function"!=typeof Worker&&("object"!=typeof Worker||"function"!=typeof Worker.prototype.constructor))throw new Error("WorkerPool: Web Workers not supported")}function tryRequireWorkerThreads(){try{return requireFoolWebpack("worker_threads")}catch(e){if("object"==typeof e&&null!==e&&"MODULE_NOT_FOUND"===e.code)return null;throw e}}function getDefaultWorker(){if("browser"===environment$1.platform){if("undefined"==typeof Blob)throw new Error("Blob not supported by the browser");if(!window.URL||"function"!=typeof window.URL.createObjectURL)throw new Error("URL.createObjectURL not supported by the browser");var e=new Blob([embeddedWorker],{type:"text/javascript"});return window.URL.createObjectURL(e)}return __dirname+"/worker.js"}function setupWorker(e,t){if("web"===t.workerType)return ensureWebWorker(),setupBrowserWorker(e,t.workerOpts,Worker);if("thread"===t.workerType)return setupWorkerThreadWorker(e,r=ensureWorkerThreads(),t.workerThreadOpts);if("process"!==t.workerType&&t.workerType){if("browser"===environment$1.platform)return ensureWebWorker(),setupBrowserWorker(e,t.workerOpts,Worker);var r=tryRequireWorkerThreads();return r?setupWorkerThreadWorker(e,r,t.workerThreadOpts):setupProcessWorker(e,resolveForkOptions(t),requireFoolWebpack("child_process"))}return setupProcessWorker(e,resolveForkOptions(t),requireFoolWebpack("child_process"))}function setupBrowserWorker(e,t,r){var n=new r(e,t);return n.isBrowserWorker=!0,n.on=function(e,t){this.addEventListener(e,function(e){t(e.data)})},n.send=function(e,t){this.postMessage(e,t)},n}function setupWorkerThreadWorker(e,t,r){var n=new t.Worker(e,{stdout:!1,stderr:!1,...r});return n.isWorkerThread=!0,n.send=function(e,t){this.postMessage(e,t)},n.kill=function(){return this.terminate(),!0},n.disconnect=function(){this.terminate()},n}function setupProcessWorker(e,t,r){var n=r.fork(e,t.forkArgs,t.forkOpts),s=n.send;return n.send=function(e){return s.call(n,e)},n.isChildProcess=!0,n}function resolveForkOptions(e){e=e||{};var t=process.execArgv.join(" "),r=-1!==t.indexOf("--inspect"),n=-1!==t.indexOf("--debug-brk"),s=[];return r&&(s.push("--inspect="+e.debugPort),n&&s.push("--debug-brk")),process.execArgv.forEach(function(e){e.indexOf("--max-old-space-size")>-1&&s.push(e)}),Object.assign({},e,{forkArgs:e.forkArgs,forkOpts:Object.assign({},e.forkOpts,{execArgv:(e.forkOpts&&e.forkOpts.execArgv||[]).concat(s)})})}function objectToError(e){for(var t=new Error(""),r=Object.keys(e),n=0;n0},WorkerHandler.prototype.terminate=function(e,t){var r=this;if(e){for(var n in this.processing)void 0!==this.processing[n]&&this.processing[n].resolver.reject(new Error("Worker terminated"));this.processing=Object.create(null)}if("function"==typeof t&&(this.terminationHandler=t),this.busy())this.terminating=!0;else{var s=function(e){if(r.terminated=!0,r.cleaning=!1,null!=r.worker&&r.worker.removeAllListeners&&r.worker.removeAllListeners("message"),r.worker=null,r.terminating=!1,r.terminationHandler)r.terminationHandler(e,r);else if(e)throw e};if(this.worker){if("function"==typeof this.worker.kill){if(this.worker.killed)return void s(new Error("worker already killed!"));var i=setTimeout(function(){r.worker&&r.worker.kill()},this.workerTerminateTimeout);return this.worker.once("exit",function(){clearTimeout(i),r.worker&&(r.worker.killed=!0),s()}),this.worker.ready?this.worker.send(TERMINATE_METHOD_ID):this.requestQueue.push({message:TERMINATE_METHOD_ID}),void(this.cleaning=!0)}if("function"!=typeof this.worker.terminate)throw new Error("Failed to terminate worker");this.worker.terminate(),this.worker.killed=!0}s()}},WorkerHandler.prototype.terminateAndNotify=function(e,t){var r=Promise$1.defer();return t&&r.promise.timeout(t),this.terminate(e,function(e,t){e?r.reject(e):r.resolve(t)}),r.promise},WorkerHandler$1.exports=WorkerHandler,WorkerHandler$1.exports._tryRequireWorkerThreads=tryRequireWorkerThreads,WorkerHandler$1.exports._setupProcessWorker=setupProcessWorker,WorkerHandler$1.exports._setupBrowserWorker=setupBrowserWorker,WorkerHandler$1.exports._setupWorkerThreadWorker=setupWorkerThreadWorker,WorkerHandler$1.exports.ensureWorkerThreads=ensureWorkerThreads;var worker$1={};function Transfer(e,t){this.message=e,this.transfer=t}var transfer=Transfer;(function(exports){var Transfer=transfer,requireFoolWebpack=eval("typeof require !== 'undefined' ? require : function (module) { throw new Error('Module \" + module + \" not found.') }"),TERMINATE_METHOD_ID="__workerpool-terminate__",worker={exit:function(){}};if("undefined"!=typeof self&&"function"==typeof postMessage&&"function"==typeof addEventListener)worker.on=function(e,t){addEventListener(e,function(e){t(e.data)})},worker.send=function(e){postMessage(e)};else{if("undefined"==typeof process)throw new Error("Script must be executed as a worker");var WorkerThreads;try{WorkerThreads=requireFoolWebpack("worker_threads")}catch(e){if("object"!=typeof e||null===e||"MODULE_NOT_FOUND"!==e.code)throw e}if(WorkerThreads&&null!==WorkerThreads.parentPort){var parentPort=WorkerThreads.parentPort;worker.send=parentPort.postMessage.bind(parentPort),worker.on=parentPort.on.bind(parentPort),worker.exit=process.exit.bind(process)}else worker.on=process.on.bind(process),worker.send=function(e){process.send(e)},worker.on("disconnect",function(){process.exit(1)}),worker.exit=process.exit.bind(process)}function convertError(e){return Object.getOwnPropertyNames(e).reduce(function(t,r){return Object.defineProperty(t,r,{value:e[r],enumerable:!0})},{})}function isPromise(e){return e&&"function"==typeof e.then&&"function"==typeof e.catch}worker.methods={},worker.methods.run=function(e,t){var r=new Function("return ("+e+").apply(null, arguments);");return r.apply(r,t)},worker.methods.methods=function(){return Object.keys(worker.methods)},worker.terminationHandler=void 0,worker.cleanupAndExit=function(e){var t=function(){worker.exit(e)};if(!worker.terminationHandler)return t();var r=worker.terminationHandler(e);isPromise(r)?r.then(t,t):t()};var currentRequestId=null;worker.on("message",function(e){if(e===TERMINATE_METHOD_ID)return worker.cleanupAndExit(0);try{var t=worker.methods[e.method];if(!t)throw new Error('Unknown method "'+e.method+'"');currentRequestId=e.id;var r=t.apply(t,e.params);isPromise(r)?r.then(function(t){t instanceof Transfer?worker.send({id:e.id,result:t.message,error:null},t.transfer):worker.send({id:e.id,result:t,error:null}),currentRequestId=null}).catch(function(t){worker.send({id:e.id,result:null,error:convertError(t)}),currentRequestId=null}):(r instanceof Transfer?worker.send({id:e.id,result:r.message,error:null},r.transfer):worker.send({id:e.id,result:r,error:null}),currentRequestId=null)}catch(t){worker.send({id:e.id,result:null,error:convertError(t)})}}),worker.register=function(e,t){if(e)for(var r in e)e.hasOwnProperty(r)&&(worker.methods[r]=e[r]);t&&(worker.terminationHandler=t.onTerminate),worker.send("ready")},worker.emit=function(e){if(currentRequestId){if(e instanceof Transfer)return void worker.send({id:currentRequestId,isEvent:!0,payload:e.message},e.transfer);worker.send({id:currentRequestId,isEvent:!0,payload:e})}},exports.add=worker.register,exports.emit=worker.emit})(worker$1);var environment=environment$2.exports,worker=function(e,t){var r=worker$1;r.add(e,t)};environment.platform,environment.isMainThread,environment.cpus;var Sylvester={Matrix:function(){}};Sylvester.Matrix.create=function(e){return(new Sylvester.Matrix).setElements(e)},Sylvester.Matrix.I=function(e){for(var t,r=[],n=e;n--;)for(t=e,r[n]=[];t--;)r[n][t]=n===t?1:0;return Sylvester.Matrix.create(r)},Sylvester.Matrix.prototype={dup:function(){return Sylvester.Matrix.create(this.elements)},isSquare:function(){var e=0===this.elements.length?0:this.elements[0].length;return this.elements.length===e},toRightTriangular:function(){if(0===this.elements.length)return Sylvester.Matrix.create([]);var e,t,r,n,s=this.dup(),i=this.elements.length,o=this.elements[0].length;for(t=0;t=i&&l[o].push(s);for(a.elements[o]=r,e=o;e--;){for(r=[],t=0;t=r&&h[o].push(n);for(a.elements[o]=s,t=o;t--;){for(s=[],e=0;e>2]|=e[s]<>2]|=r<>2]|=(192|r>>6)<>2]|=(128|63&r)<=57344?(o[n>>2]|=(224|r>>12)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<>2]|=(240|r>>18)<>2]|=(128|r>>12&63)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<=64?(this.block=o[16],this.start=n-64,this.hash(),this.hashed=!0):this.start=n}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296|0,this.bytes=this.bytes%4294967296),this}},Sha1.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex;e[16]=this.block,e[t>>2]|=EXTRA[3&t],this.block=e[16],t>=56&&(this.hashed||this.hash(),e[0]=this.block,e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.hBytes<<3|this.bytes>>>29,e[15]=this.bytes<<3,this.hash()}},Sha1.prototype.hash=function(){var e,t,r=this.h0,n=this.h1,s=this.h2,i=this.h3,o=this.h4,a=this.blocks;for(e=16;e<80;++e)t=a[e-3]^a[e-8]^a[e-14]^a[e-16],a[e]=t<<1|t>>>31;for(e=0;e<20;e+=5)r=(t=(n=(t=(s=(t=(i=(t=(o=(t=r<<5|r>>>27)+(n&s|~n&i)+o+1518500249+a[e]|0)<<5|o>>>27)+(r&(n=n<<30|n>>>2)|~r&s)+i+1518500249+a[e+1]|0)<<5|i>>>27)+(o&(r=r<<30|r>>>2)|~o&n)+s+1518500249+a[e+2]|0)<<5|s>>>27)+(i&(o=o<<30|o>>>2)|~i&r)+n+1518500249+a[e+3]|0)<<5|n>>>27)+(s&(i=i<<30|i>>>2)|~s&o)+r+1518500249+a[e+4]|0,s=s<<30|s>>>2;for(;e<40;e+=5)r=(t=(n=(t=(s=(t=(i=(t=(o=(t=r<<5|r>>>27)+(n^s^i)+o+1859775393+a[e]|0)<<5|o>>>27)+(r^(n=n<<30|n>>>2)^s)+i+1859775393+a[e+1]|0)<<5|i>>>27)+(o^(r=r<<30|r>>>2)^n)+s+1859775393+a[e+2]|0)<<5|s>>>27)+(i^(o=o<<30|o>>>2)^r)+n+1859775393+a[e+3]|0)<<5|n>>>27)+(s^(i=i<<30|i>>>2)^o)+r+1859775393+a[e+4]|0,s=s<<30|s>>>2;for(;e<60;e+=5)r=(t=(n=(t=(s=(t=(i=(t=(o=(t=r<<5|r>>>27)+(n&s|n&i|s&i)+o-1894007588+a[e]|0)<<5|o>>>27)+(r&(n=n<<30|n>>>2)|r&s|n&s)+i-1894007588+a[e+1]|0)<<5|i>>>27)+(o&(r=r<<30|r>>>2)|o&n|r&n)+s-1894007588+a[e+2]|0)<<5|s>>>27)+(i&(o=o<<30|o>>>2)|i&r|o&r)+n-1894007588+a[e+3]|0)<<5|n>>>27)+(s&(i=i<<30|i>>>2)|s&o|i&o)+r-1894007588+a[e+4]|0,s=s<<30|s>>>2;for(;e<80;e+=5)r=(t=(n=(t=(s=(t=(i=(t=(o=(t=r<<5|r>>>27)+(n^s^i)+o-899497514+a[e]|0)<<5|o>>>27)+(r^(n=n<<30|n>>>2)^s)+i-899497514+a[e+1]|0)<<5|i>>>27)+(o^(r=r<<30|r>>>2)^n)+s-899497514+a[e+2]|0)<<5|s>>>27)+(i^(o=o<<30|o>>>2)^r)+n-899497514+a[e+3]|0)<<5|n>>>27)+(s^(i=i<<30|i>>>2)^o)+r-899497514+a[e+4]|0,s=s<<30|s>>>2;this.h0=this.h0+r|0,this.h1=this.h1+n|0,this.h2=this.h2+s|0,this.h3=this.h3+i|0,this.h4=this.h4+o|0},Sha1.prototype.hex=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,s=this.h4;return HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[s>>28&15]+HEX_CHARS[s>>24&15]+HEX_CHARS[s>>20&15]+HEX_CHARS[s>>16&15]+HEX_CHARS[s>>12&15]+HEX_CHARS[s>>8&15]+HEX_CHARS[s>>4&15]+HEX_CHARS[15&s]},Sha1.prototype.toString=Sha1.prototype.hex,Sha1.prototype.digest=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,s=this.h4;return[e>>24&255,e>>16&255,e>>8&255,255&e,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,s>>24&255,s>>16&255,s>>8&255,255&s]},Sha1.prototype.array=Sha1.prototype.digest,Sha1.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(20),t=new DataView(e);return t.setUint32(0,this.h0),t.setUint32(4,this.h1),t.setUint32(8,this.h2),t.setUint32(12,this.h3),t.setUint32(16,this.h4),e};var exports=createMethod();COMMON_JS?module.exports=exports:root.sha1=exports})()})(sha1),function(e){e.ClefG="ClefG",e.ClefF="ClefF",e.ClefC="ClefC",e.NoteheadS0="NoteheadS0",e.NoteheadS1="NoteheadS1",e.NoteheadS2="NoteheadS2",e.NoteheadS1stemU="NoteheadS1stemU",e.NoteheadS1stemD="NoteheadS1stemD",e.NoteheadS2stemU="NoteheadS2stemU",e.NoteheadS2stemD="NoteheadS2stemD",e.vline_Stem="vline_Stem",e.Flag3="Flag3",e.BeamLeft="BeamLeft",e.BeamContinue="BeamContinue",e.BeamRight="BeamRight",e.TremoloLeft="TremoloLeft",e.TremoloRight="TremoloRight",e.TremoloMiddle="TremoloMiddle",e.Dot="Dot",e.Rest0="Rest0",e.Rest1="Rest1",e.Rest2="Rest2",e.Rest3="Rest3",e.Rest4="Rest4",e.Rest5="Rest5",e.Rest6="Rest6",e.Rest0W="Rest0W",e.RestM1="RestM1",e.AccNatural="AccNatural",e.AccSharp="AccSharp",e.AccDoublesharp="AccDoublesharp",e.AccFlat="AccFlat",e.AccFlatflat="AccFlatflat",e.vline_VoltaLeft="vline_VoltaLeft",e.vline_VoltaRight="vline_VoltaRight",e.VoltaLeft="VoltaLeft",e.VoltaRight="VoltaRight",e.VoltaAlternativeBegin="VoltaAlternativeBegin",e.BarMeasure="BarMeasure",e.vline_BarMeasure="vline_BarMeasure",e.vline_BarTerminal="vline_BarTerminal",e.vline_BarSegment="vline_BarSegment",e.SlurBegin="SlurBegin",e.SlurEnd="SlurEnd",e.TimesigC44="TimesigC44",e.TimesigC22="TimesigC22",e.TimesigZero="TimesigZero",e.TimesigOne="TimesigOne",e.TimesigTwo="TimesigTwo",e.TimesigThree="TimesigThree",e.TimesigFour="TimesigFour",e.TimesigFive="TimesigFive",e.TimesigSix="TimesigSix",e.TimesigSeven="TimesigSeven",e.TimesigEight="TimesigEight",e.TimesigNine="TimesigNine",e.OctaveShift8va="OctaveShift8va",e.OctaveShift8vb="OctaveShift8vb",e.OctaveShift8="OctaveShift8",e.OctaveShift0="OctaveShift0",e.Zero="Zero",e.One="One",e.Two="Two",e.Three="Three",e.Four="Four",e.Five="Five",e.Six="Six",e.Seven="Seven",e.Eight="Eight",e.Nine="Nine",e.f="f",e.p="p",e.m="m",e.n="n",e.r="r",e.s="s",e.z="z",e.CrescendoBegin="CrescendoBegin",e.CrescendoEnd="CrescendoEnd",e.DecrescendoBegin="DecrescendoBegin",e.DecrescendoEnd="DecrescendoEnd",e.ScriptFermata="ScriptFermata",e.ScriptShortFermata="ScriptShortFermata",e.ScriptSforzato="ScriptSforzato",e.ScriptStaccato="ScriptStaccato",e.ScriptStaccatissimo="ScriptStaccatissimo",e.ScriptTurn="ScriptTurn",e.ScriptTrill="ScriptTrill",e.ScriptSegno="ScriptSegno",e.ScriptCoda="ScriptCoda",e.ScriptArpeggio="ScriptArpeggio",e.ScriptPrall="ScriptPrall",e.ScriptMordent="ScriptMordent",e.ScriptMarcato="ScriptMarcato",e.ScriptTenuto="ScriptTenuto",e.ScriptPortato="ScriptPortato",e.PedalStar="PedalStar",e.PedalPed="PedalPed",e.KeyAcc="KeyAcc",e.TempoNotehead="TempoNotehead",e.GraceNotehead="GraceNotehead",e.SignLined="SignLined",e.SignInterval="SignInterval",e.rect_Text="rect_Text",e.rect_Lyric="rect_Lyric"}(SemanticType||(SemanticType={})),SemanticType.BarMeasure,SemanticType.vline_BarMeasure,SemanticType.vline_BarTerminal,SemanticType.vline_BarSegment,SemanticType.vline_VoltaLeft,SemanticType.vline_VoltaRight,SemanticType.VoltaAlternativeBegin;const st=SemanticType;st.NoteheadS0,st.NoteheadS1,st.NoteheadS2,st.Zero,st.One,st.Two,st.Three,st.Four,st.Five,st.Six,st.Seven,st.Eight,st.Nine,st.ScriptStaccatissimo,st.TimesigZero,st.TimesigOne,st.TimesigTwo,st.TimesigThree,st.TimesigFour,st.TimesigFive,st.TimesigSix,st.TimesigSeven,st.TimesigEight,st.TimesigNine,st.Rest0,st.Rest1,st.Rest2,st.Rest3,st.Rest4,st.Rest5,st.Rest6,st.Rest0W,st.RestM1,st.SignInterval,st.SignLined,st.BeamLeft,st.BeamContinue,st.BeamRight,st.ClefG,st.ClefF,st.ClefC,st.NoteheadS0,st.NoteheadS1,st.NoteheadS2,st.Dot,st.Rest0,st.Rest1,st.Rest2,st.Rest3,st.Rest4,st.Rest5,st.Rest6,st.RestM1,st.AccNatural,st.AccSharp,st.AccDoublesharp,st.AccFlat,st.AccFlatflat,st.TimesigC44,st.TimesigC22,st.TimesigZero,st.TimesigOne,st.TimesigTwo,st.TimesigThree,st.TimesigFour,st.TimesigFive,st.TimesigSix,st.TimesigSeven,st.TimesigEight,st.TimesigNine,st.One,st.Two,st.Three,st.Four,st.Five,st.OctaveShift8,st.OctaveShift0,st.f,st.p,st.m,st.n,st.r,st.s,st.z,st.ScriptFermata,st.ScriptShortFermata,st.ScriptSforzato,st.ScriptStaccato,st.ScriptStaccatissimo,st.ScriptTurn,st.ScriptTrill,st.ScriptSegno,st.ScriptCoda,st.ScriptArpeggio,st.ScriptPrall,st.ScriptMordent,st.ScriptMarcato,st.ScriptTenuto,st.ScriptPortato,st.PedalStar,st.PedalPed;const roundNumber=(e,t,r=-1/0)=>Math.max(Math.round(e/t)*t,r),gcd=(e,t)=>Number.isInteger(e)&&Number.isInteger(t)?0===t?e:gcd(t,e%t):(console.error("non-integer gcd:",e,t),1),frac=(e,t)=>({numerator:e,denominator:t}),reducedFraction=(e,t)=>{e=Math.round(e),t=Math.round(t);const r=0!==e?gcd(e,t):t;return frac(e/r,t/r)},fractionMul=(e,t)=>t?e*t.numerator/t.denominator:e;class DummyLogger{debug(...e){}group(...e){}groupCollapsed(...e){}groupEnd(){}info(...e){}warn(...e){}assert(...e){}}const EOM=-1,GREAT_NUMBER=1920,DURATION_MULTIPLIER=1921920,floatToFrac=e=>{const t=Math.round(e*GREAT_NUMBER);return reducedFraction(t,GREAT_NUMBER)},floatToTimeWarp=e=>1===e?null:floatToFrac(e);var ActionType;!function(e){e[e.PLACE=0]="PLACE",e[e.VERTICAL=1]="VERTICAL",e[e.HORIZONTAL=2]="HORIZONTAL"}(ActionType||(ActionType={}));class Action{constructor(e){Object.assign(this,e)}static P(e){return new Action({type:ActionType.PLACE,e1:e})}static V(e,t,r=1){return new Action({type:ActionType.VERTICAL,e1:r>0?e:t,e2:r>0?t:e})}static H(e,t){return new Action({type:ActionType.HORIZONTAL,e1:e,e2:t})}get id(){switch(this.type){case ActionType.PLACE:return this.e1.toString();case ActionType.VERTICAL:return`${this.e1}|${this.e2}`;case ActionType.HORIZONTAL:return`${this.e1}-${this.e2>=0?this.e2:"."}`}}get events(){return[this.e1,this.e2].filter(Number.isFinite)}}class StageMatrix{static fromNode(e,t){const r=Array(e.stages.length).fill(null).map(()=>Array(e.stages.length).fill(null).map(()=>new Set));e.actions.filter(e=>e.type===ActionType.HORIZONTAL).forEach(t=>{const n=e.stages.findIndex(e=>e.events.includes(t.e1)),s=e.stages.findIndex(e=>e.events.includes(t.e2));console.assert(n>=0&&s>=0,"invalid stages for H action:",e.id,e.stages,t),r[n][s].add(t.e1)}),r[0][e.stages.length-1].add(0);const n=e.stagedEvents,s=t.matrixH[t.matrixH.length-1].filter((e,t)=>!n.has(t)),i=Math.max(0,Math.max(...s)-.01),o=e.actions.filter(e=>e.type===ActionType.HORIZONTAL),a=Object.keys(t.eventMap).map(Number).filter(e=>!o.find(t=>t.e2===e));return e.stages.forEach(n=>{n.events.forEach(s=>{if(s>0){!o.find(e=>e.e1===s)&&t.matrixH[t.matrixH.length-1][s]>=i&&(a.some(e=>t.matrixH[e][s]>0)||r[n.index][e.stages.length-1].add(s))}})}),new StageMatrix({matrix:r})}constructor(e){Object.assign(this,e)}pathOf(e,t,r,n=0){if(this.matrix[e][t].size){const s=[...this.matrix[e][t]][n];if(t===r)return[s];for(let e=t+1;e<=r;++e){const n=this.pathOf(t,e,r);if(n)return[s,...n]}}return null}findDoublePath(e,t){const r=[];for(let n=t;n>=e+1;--n)for(let s=0;st.forEach(t=>e.forEach(e=>t.delete(e))))}toEquations(e){const t=[];for(let r=1;ri[e]=1),s.forEach(e=>i[e]=-1),t.push(i),this.reducePath(n.length>s.length?n:s)}}}return t}}class PathNode{constructor(e){Object.assign(this,e),console.assert(this.logger,"logger is null:",e)}get actions(){const e=this.parent?this.parent.actions:[];return this.action?[...e,this.action]:e}get id(){return this.actions.map(e=>e.id).sort().join(" ")}get stagedEvents(){const e=new Set;return this.stages&&this.stages.forEach(t=>t.events.forEach(t=>t>=0&&e.add(t))),e}like(e){return e.split(" ").sort().join(" ")===this.id}constructStages(e){this.stages=[{events:[EOM]}];for(const t of this.actions)switch(t.type){case ActionType.PLACE:this.stages.unshift({events:[t.e1]});break;case ActionType.VERTICAL:{const e=this.stages.find(e=>e.events.includes(t.e1)),r=this.stages.find(e=>e.events.includes(t.e2));console.assert(e||r,"invalid V action:",this.stages,t),e&&r?(e.events.push(...r.events),r.events=null,this.stages=this.stages.filter(e=>e.events)):e?r||e.events.push(t.e2):r.events.unshift(t.e1)}break;case ActionType.HORIZONTAL:{const r=this.stages.find(e=>e.events.includes(t.e1)),n=this.stages.find(e=>e.events.includes(t.e2));console.assert(r||n,"invalid H action:",this.stages,t);const s=r=>{console.assert(e.eventMap[r],"invalid event id:",t.id,r,e.eventMap);const n=e.eventMap[r].x,s=this.stages.find(t=>t.events.some(t=>t>0&&e.eventMap[t].x<=n)&&t.events.some(t=>t>0&&e.eventMap[t].x>=n));if(s)s.events.push(r);else{const t={events:[r]},s=this.stages.findIndex(t=>t.events[0]===EOM||e.eventMap[t.events[0]].x>=n);this.stages.splice(s,0,t)}};r||s(t.e1),n||s(t.e2)}}this.stages.forEach((e,t)=>e.index=t)}constructConstraints(e){const t=Object.keys(e.eventMap).length,r=StageMatrix.fromNode(this,e).toEquations(t),n=Array(t).fill(null).map((t,r)=>e.eventMap[r].duration);this.constraints=r.map(e=>e.map((e,t)=>e*n[t]))}inbalancesConstraints(e){console.assert(this.constraints,"constraints not constructed.");const t=Object.keys(e.eventMap).length,r=Array(t).fill(!0),n=Array(t).fill(!1),s=[];for(const e of this.constraints){const t=e.reduce((e,t)=>e+t,0);if(0!==t){const i=t<0?e.map(e=>-e):e;if(i[0]>0)continue;s.push(i),i.forEach((e,t)=>{n[t]=n[t]||e<0,e&&(r[t]=e<0||n[t])})}}return this.constraints.forEach(e=>{0!==e.reduce((e,t)=>e+t,0)||e[0]||e.some((e,t)=>e&&!r[t])&&(e.forEach((e,t)=>e&&(r[t]=!1)),s.push(e))}),{ones:r,inbalances:s}}solveEquations({ones:e,inbalances:t}){if(!t.length)return e.map(()=>1);const r=e.map((e,t)=>({fixed:e,i:t})).filter(({fixed:e})=>!e).map(({i:e})=>e).filter(e=>t.some(t=>0!==t[e]));if(!r.length)return e.map(()=>1);const n=r.map(e=>Math.abs(t.find(t=>0!==t[e])[e])),s=new Map;let i=!1;const o=t.map(e=>({line:e.filter((e,t)=>r.includes(t)),bias:-e.reduce((e,t,n)=>e+(r.includes(n)?0:t),0)})).filter(({line:e,bias:t})=>{if(e.every(e=>0===e))return!1;const r=e.join(",");return s.has(r)?(i=s.get(r)!==t,!1):(s.set(r,t),!0)});if(i)return null;const a=o.slice(0,r.length),c=o.slice(r.length);if(a.lengthr===t?1:r===s?-1:0),bias:0,prior:(n[t]+n[s])/DURATION_MULTIPLIER};a.some(e=>e.line[t]&&e.line[s])&&(i.prior-=10),a.some(e=>1===e.line.filter(Number).length&&(e.line[t]||e.line[s]))&&(i.prior+=1),e.push(i)}e.sort((e,t)=>e.prior-t.prior),a.push(...e.slice(0,r.length-a.length))}const l=a.map(({line:e})=>e),u=a.map(({bias:e})=>e),h=matrixInverse(l);if(!h)return this.logger.warn("null invert:",l),null;const d=h.map(e=>e.reduce((e,t,r)=>e+t*u[r],0));if(c.length&&c.some(e=>Math.abs(e.line.reduce((e,t,r)=>e+t*d[r],0))>.001))return null;const f=e.map(()=>1);return r.forEach((e,t)=>f[e]=d[t]),f}optimallySolve(e){const{ones:t,inbalances:r}=this.inbalancesConstraints(e),n=t.map((t,r)=>t?-1:roundNumber(e.eventMap[r].shrinkness,.01)).reduce((e,t,r)=>(t>=0&&(e[t]=e[t]||[],e[t].push(r)),e),{}),s=Object.entries(n).sort((e,t)=>Number(t[0])-Number(e[0])).map(e=>e[1]);for(let n=1;n!i.includes(t)),a=this.solveEquations({ones:o,inbalances:r});if(a&&a.every((t,r)=>t<=1&&t>e.eventMap[r].lowWarp))return a}return this.solveEquations({ones:t,inbalances:r})}isConflicted(e){const{ones:t,inbalances:r}=this.inbalancesConstraints(e);for(const n of r){if(n.reduce((r,n,s)=>r+n*(t[s]||n<=0?1:e.eventMap[s].lowWarp),0)>=0)return n.forEach((t,r)=>{t&&(e.eventTendencies[r]+=t>0?1:-1)}),!0}if(!r.length)return!1;const n=this.solveEquations({ones:t,inbalances:r});return!n||!n.every((t,r)=>t>e.eventMap[r].lowWarp&&t<=1)}getSolution(e){const t=t=>e.eventMap[t.e2]?e.eventMap[t.e2].x+.06*Math.abs(e.eventMap[t.e2].x-e.eventMap[t.e1].x):e.eventMap[t.e1].x+1e4,r=this.actions.filter(e=>e.type===ActionType.HORIZONTAL).sort((e,r)=>t(e)-t(r)),n=r.reduce((e,t)=>({...e,[t.e1]:t.e2}),{}),s=new Set([...Object.keys(n)].map(Number));r.forEach(e=>s.delete(e.e2)),this.stages[0].events.forEach(e=>e>0&&s.add(e));let i=[...s].map(e=>{const t=[e];let r=e;for(;n[r]&&(r=n[r],!(r<0||t.includes(r)));)t.push(r);return t});const o=Object.values(e.eventMap).filter(e=>e.id>0).map(e=>({id:e.id,tick:null,endTick:null,tickGroup:null,timeWarp:null})),a=o.filter(e=>i.some(t=>t.includes(e.id))||r.some(t=>[t.e1,t.e2].includes(e.id))).reduce((e,t)=>({...e,[t.id]:t}),{});this.stages.forEach((e,t)=>e.events.forEach(e=>a[e]&&(a[e].tickGroup=t))),this.stages[0].tick=0,this.stages[0].events.forEach(e=>a[e]&&(a[e].tick=0));const c=this.optimallySolve(e);o.forEach(e=>e.timeWarp=floatToTimeWarp(c[e.id]));const l=this.stages.slice(0,this.stages.length-1),u=()=>{if(l.every(e=>Number.isFinite(e.tick)))return!1;let t=!1;return r.forEach(r=>{const n=this.stages.find(e=>e.events.includes(r.e1)),s=this.stages.find(e=>e.events.includes(r.e2));Number.isFinite(n.tick)&&!Number.isFinite(s.tick)&&(s.tick=n.tick+fractionMul(e.eventMap[r.e1].duration,a[r.e1].timeWarp),s.events.forEach(e=>a[e]&&(a[e].tick=s.tick)),t=!0)}),[...r].reverse().forEach(r=>{const n=this.stages.find(e=>e.events.includes(r.e1)),s=this.stages.find(e=>e.events.includes(r.e2));!Number.isFinite(n.tick)&&Number.isFinite(s.tick)&&(n.tick=s.tick-fractionMul(e.eventMap[r.e1].duration,a[r.e1].timeWarp),n.events.forEach(e=>a[e]&&(a[e].tick=n.tick)),t=!0)}),t};for(;u(););console.assert(l.every(e=>Number.isFinite(e.tick)),"stage ticks not all solved:",this.stages,this.id),o.filter(e=>Number.isFinite(e.tick)).forEach(t=>t.endTick=t.tick+fractionMul(e.eventMap[t.id].duration,t.timeWarp));const h=e.eventMap[0].duration;i.forEach(e=>{const t=e.findIndex(e=>a[e].endTick>h);if(t>=0){e.splice(t,e.length-t).forEach(e=>{a[e].tick=null,a[e].endTick=null})}}),i=i.filter(e=>e.length);const d=Math.max(0,...o.map(e=>e.endTick).filter(Number.isFinite));return this.logger.debug(String.fromCodePoint(127822),this.id,c),{voices:i,events:o,duration:d,actions:this.actions.map(e=>e.id).join(" ")}}deduce(e,t){this.stages||this.constructStages(e);const r=e.actionAccessing.get(this.id)||{times:0};if(++r.times,e.actionAccessing.set(this.id,r),this.constructConstraints(e),this.isConflicted(e))return r.closed=!0,this.logger.info(this.action.id,"❌"),null;if(this.logger.group(this.action&&this.action.id),t.credits>0){if(--t.credits,this.children||this.expand(e),this.children=this.children.filter(t=>!e.actionAccessing.get(t.id)||!e.actionAccessing.get(t.id).closed),this.children.length){const r=t=>t.possibility/((e.actionAccessing.get(t.id)||{times:0}).times+1);this.children.sort((e,t)=>r(t)-r(e));for(const r of this.children){const n=r.deduce(e,t);if(n)return this.logger.groupEnd(),n;if(t.credits<=0)break}}}else this.logger.debug("quota exhausted.");return this.logger.groupEnd(),r.closed=!0,this.getSolution(e)}expand(e){this.constructStages(e);const{eventMap:t,matrixV:r,matrixH:n}=e,s=this.stagedEvents,i=[],o=e=>{if(!this.actions.some(t=>t.id===e.action.id)&&!i.some(t=>t.action.id===e.action.id)){const t=this.stages.find(t=>t.events.includes(e.action.e1)),n=this.stages.find(t=>t.events.includes(e.action.e2));if(t===n||t&&n&&t.index>=n.index)return;if(t&&n)if(e.action.type===ActionType.VERTICAL){if(n.index-t.index>1)return;if(this.actions.some(e=>t.events.includes(e.e1)&&n.events.includes(e.e2)))return}else if(e.action.type===ActionType.HORIZONTAL&&t.index>n.index)return;if(e.action.type===ActionType.HORIZONTAL&&this.actions.some(t=>t.type===ActionType.HORIZONTAL&&(t.e1===e.action.e1||t.e2===e.action.e2||t.e1===e.action.e2&&t.e2===e.action.e1)))return;if(e.action.type===ActionType.VERTICAL){if(t&&(e.possibility=Math.min(e.possibility,...t.events.map(t=>r[e.action.e2][t])),e.possibility<=0))return;if(n&&(e.possibility=Math.min(e.possibility,...n.events.map(t=>r[t][e.action.e1])),e.possibility<=0))return}i.push(e)}};for(const e of s)e<0||(r[e].forEach((t,r)=>{t>0&&e!==r&&o({action:Action.V(r,e),possibility:t})}),r.forEach((t,r)=>{const n=t[e];n>0&&o({action:Action.V(e,r),possibility:n})}),n[e].forEach((t,r)=>{t>0&&o({action:Action.H(r,e),possibility:t})}),n.forEach((r,n)=>{n=n>=Object.keys(t).length?-1:n;const s=r[e];s>0&&o({action:Action.H(e,n),possibility:s})}));i.some(e=>[ActionType.HORIZONTAL,ActionType.PLACE].includes(e.action.type)||!s.has(e.action.e1)||!s.has(e.action.e2))?this.children=i.map(e=>new PathNode({logger:this.logger,parent:this,...e})):this.children=[]}}class Solver{constructor(e,{quota:t=1e3,logger:r=new DummyLogger}={}){this.quota=t,this.logger=r;const n={id:0,x:0,confidence:1,shrinkness:e.measureShrinkness,duration:e.expectedDuration,lowWarp:0};this.events=[n,...e.events.map(e=>({id:e.id,x:e.x,confidence:e.confidence,shrinkness:e.shrinkness,staff:e.staff,duration:e.duration,lowWarp:.5}))],this.eventMap=this.events.reduce((e,t)=>({...e,[t.id]:t}),{}),this.matrixH=e.matrixH,this.matrixV=e.matrixV,this.xSpan=e.endX-Math.min(e.endX-1,...e.events.map(e=>e.x)),this.actionAccessing=new Map}solve(){this.pathRoot=new PathNode({logger:this.logger,action:null}),this.pathRoot.children=this.events.slice(1).map(e=>new PathNode({logger:this.logger,parent:this.pathRoot,action:Action.P(e.id),possibility:this.matrixV[e.id].reduce((e,t)=>e+t,0)}));let e=null;this.logger.groupCollapsed("solve");const t=Array(this.events.length).fill(0),r={credits:this.quota,times:0};for(;r.credits>0;){++r.times;const n={eventMap:this.eventMap,matrixH:this.matrixH,matrixV:this.matrixV,actionAccessing:this.actionAccessing,eventTendencies:t},s=this.pathRoot.deduce(n,r);if(s.credits=this.quota-r.credits,s.times=r.times,this.evaluateSolution(s),this.logger.debug("loss:",s.loss),e=!e||s.losse/r.times)),e}evaluateSolution(e){e.loss=0;const t=e.events.reduce((e,t)=>({...e,[t.id]:{...t,...this.eventMap[t.id]}}),{}),r=e.events.filter(e=>Number.isFinite(e.tick)).map(e=>t[e.id]),n=r.reduce((e,t)=>(e[t.staff]=e[t.staff]||[],e[t.staff].push(t),e),{});Object.values(n).forEach(t=>{t.sort((e,t)=>e.x-t.x).slice(0,t.length-1).forEach((r,n)=>{t[n+1].tick{if(Number.isFinite(r.tick)&&!e.voices.every(e=>!e.includes(r.id))||(e.loss+=100*t[r.id].confidence),r.timeWarp){const{numerator:e,denominator:n}=r.timeWarp,i=t[r.id].shrinkness;s.set(e,Math.max(s.get(e)||0,1-i)),s.set(n,Math.max(s.get(n)||0,1-i))}});const i=reducedFraction(e.duration,this.eventMap[0].duration);s.set(i.numerator,Math.max(s.get(i.numerator)||0,1-this.eventMap[0].shrinkness)),s.set(i.denominator,Math.max(s.get(i.denominator)||0,1-this.eventMap[0].shrinkness));for(const[t,r]of s.entries())t>1&&(e.loss+=Math.log(t)*r);let o=0,a=0;e.voices.forEach(r=>{console.assert(t[r[0]],"invalid voice:",r,Object.keys(t));const n=Math.abs(t[r[0]].tick),s=t[r[r.length-1]].endTick;o+=Math.max(0,n+e.duration-s);let i=null;r.forEach(e=>{const r=t[e];r.staff!==i&&(null!==i&&++a,i=r.staff)})}),e.loss+=10*o/DURATION_MULTIPLIER,e.loss+=5**a-1;const c=[...r].sort((e,t)=>e.x-t.x),l=c.slice(1).map((t,r)=>{const n=c[r],s=t.x-n.x,i=t.tick-n.tick;if(!i)return s/this.xSpan;return(4*Math.atan2(i/e.duration,s/this.xSpan)/Math.PI-1)**2}),u=Math.max(...l,0);e.loss+=u**2,console.assert(e.loss>=0,"Invalid solution loss!!!",e.loss,s,o,a),e.loss<0&&(e.loss=1/0)}}const solveStaffGroup=(e,t)=>{if(!e.events.length)return{events:[],voices:[],duration:0};return new Solver(e,t).solve()};worker({solveStaffGroup:solveStaffGroup}),console.info("%cstarry-omr%c v1.0.0 2026-02-20T12:54:03.964Z","color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;","color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;")})(); + * [js-sha1]{@link https://github.com/emn178/js-sha1} + * + * @version 0.6.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ +(function(module){(function(){var root="object"==typeof window?window:{},NODE_JS=!root.JS_SHA1_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;NODE_JS&&(root=global);var COMMON_JS=!root.JS_SHA1_NO_COMMON_JS&&module.exports,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],OUTPUT_TYPES=["hex","array","digest","arrayBuffer"],blocks=[],createOutputMethod=function(t){return function(e){return new Sha1(!0).update(e)[t]()}},createMethod=function(){var t=createOutputMethod("hex");NODE_JS&&(t=nodeWrap(t)),t.create=function(){return new Sha1},t.update=function(e){return t.create().update(e)};for(var e=0;e>2]|=t[n]<>2]|=s<>2]|=(192|s>>6)<>2]|=(128|63&s)<=57344?(o[i>>2]|=(224|s>>12)<>2]|=(128|s>>6&63)<>2]|=(128|63&s)<>2]|=(240|s>>18)<>2]|=(128|s>>12&63)<>2]|=(128|s>>6&63)<>2]|=(128|63&s)<=64?(this.block=o[16],this.start=i-64,this.hash(),this.hashed=!0):this.start=i}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296|0,this.bytes=this.bytes%4294967296),this}},Sha1.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[16]=this.block,t[e>>2]|=EXTRA[3&e],this.block=t[16],e>=56&&(this.hashed||this.hash(),t[0]=this.block,t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.hBytes<<3|this.bytes>>>29,t[15]=this.bytes<<3,this.hash()}},Sha1.prototype.hash=function(){var t,e,s=this.h0,i=this.h1,n=this.h2,r=this.h3,o=this.h4,a=this.blocks;for(t=16;t<80;++t)e=a[t-3]^a[t-8]^a[t-14]^a[t-16],a[t]=e<<1|e>>>31;for(t=0;t<20;t+=5)s=(e=(i=(e=(n=(e=(r=(e=(o=(e=s<<5|s>>>27)+(i&n|~i&r)+o+1518500249+a[t]|0)<<5|o>>>27)+(s&(i=i<<30|i>>>2)|~s&n)+r+1518500249+a[t+1]|0)<<5|r>>>27)+(o&(s=s<<30|s>>>2)|~o&i)+n+1518500249+a[t+2]|0)<<5|n>>>27)+(r&(o=o<<30|o>>>2)|~r&s)+i+1518500249+a[t+3]|0)<<5|i>>>27)+(n&(r=r<<30|r>>>2)|~n&o)+s+1518500249+a[t+4]|0,n=n<<30|n>>>2;for(;t<40;t+=5)s=(e=(i=(e=(n=(e=(r=(e=(o=(e=s<<5|s>>>27)+(i^n^r)+o+1859775393+a[t]|0)<<5|o>>>27)+(s^(i=i<<30|i>>>2)^n)+r+1859775393+a[t+1]|0)<<5|r>>>27)+(o^(s=s<<30|s>>>2)^i)+n+1859775393+a[t+2]|0)<<5|n>>>27)+(r^(o=o<<30|o>>>2)^s)+i+1859775393+a[t+3]|0)<<5|i>>>27)+(n^(r=r<<30|r>>>2)^o)+s+1859775393+a[t+4]|0,n=n<<30|n>>>2;for(;t<60;t+=5)s=(e=(i=(e=(n=(e=(r=(e=(o=(e=s<<5|s>>>27)+(i&n|i&r|n&r)+o-1894007588+a[t]|0)<<5|o>>>27)+(s&(i=i<<30|i>>>2)|s&n|i&n)+r-1894007588+a[t+1]|0)<<5|r>>>27)+(o&(s=s<<30|s>>>2)|o&i|s&i)+n-1894007588+a[t+2]|0)<<5|n>>>27)+(r&(o=o<<30|o>>>2)|r&s|o&s)+i-1894007588+a[t+3]|0)<<5|i>>>27)+(n&(r=r<<30|r>>>2)|n&o|r&o)+s-1894007588+a[t+4]|0,n=n<<30|n>>>2;for(;t<80;t+=5)s=(e=(i=(e=(n=(e=(r=(e=(o=(e=s<<5|s>>>27)+(i^n^r)+o-899497514+a[t]|0)<<5|o>>>27)+(s^(i=i<<30|i>>>2)^n)+r-899497514+a[t+1]|0)<<5|r>>>27)+(o^(s=s<<30|s>>>2)^i)+n-899497514+a[t+2]|0)<<5|n>>>27)+(r^(o=o<<30|o>>>2)^s)+i-899497514+a[t+3]|0)<<5|i>>>27)+(n^(r=r<<30|r>>>2)^o)+s-899497514+a[t+4]|0,n=n<<30|n>>>2;this.h0=this.h0+s|0,this.h1=this.h1+i|0,this.h2=this.h2+n|0,this.h3=this.h3+r|0,this.h4=this.h4+o|0},Sha1.prototype.hex=function(){this.finalize();var t=this.h0,e=this.h1,s=this.h2,i=this.h3,n=this.h4;return HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[s>>28&15]+HEX_CHARS[s>>24&15]+HEX_CHARS[s>>20&15]+HEX_CHARS[s>>16&15]+HEX_CHARS[s>>12&15]+HEX_CHARS[s>>8&15]+HEX_CHARS[s>>4&15]+HEX_CHARS[15&s]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[15&i]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]},Sha1.prototype.toString=Sha1.prototype.hex,Sha1.prototype.digest=function(){this.finalize();var t=this.h0,e=this.h1,s=this.h2,i=this.h3,n=this.h4;return[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,s>>24&255,s>>16&255,s>>8&255,255&s,i>>24&255,i>>16&255,i>>8&255,255&i,n>>24&255,n>>16&255,n>>8&255,255&n]},Sha1.prototype.array=Sha1.prototype.digest,Sha1.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(20),e=new DataView(t);return e.setUint32(0,this.h0),e.setUint32(4,this.h1),e.setUint32(8,this.h2),e.setUint32(12,this.h3),e.setUint32(16,this.h4),t};var exports=createMethod();COMMON_JS?module.exports=exports:root.sha1=exports})()})(sha1),function(t){t.ClefG="ClefG",t.ClefF="ClefF",t.ClefC="ClefC",t.NoteheadS0="NoteheadS0",t.NoteheadS1="NoteheadS1",t.NoteheadS2="NoteheadS2",t.NoteheadS1stemU="NoteheadS1stemU",t.NoteheadS1stemD="NoteheadS1stemD",t.NoteheadS2stemU="NoteheadS2stemU",t.NoteheadS2stemD="NoteheadS2stemD",t.vline_Stem="vline_Stem",t.Flag3="Flag3",t.BeamLeft="BeamLeft",t.BeamContinue="BeamContinue",t.BeamRight="BeamRight",t.TremoloLeft="TremoloLeft",t.TremoloRight="TremoloRight",t.TremoloMiddle="TremoloMiddle",t.Dot="Dot",t.Rest0="Rest0",t.Rest1="Rest1",t.Rest2="Rest2",t.Rest3="Rest3",t.Rest4="Rest4",t.Rest5="Rest5",t.Rest6="Rest6",t.Rest0W="Rest0W",t.RestM1="RestM1",t.AccNatural="AccNatural",t.AccSharp="AccSharp",t.AccDoublesharp="AccDoublesharp",t.AccFlat="AccFlat",t.AccFlatflat="AccFlatflat",t.vline_VoltaLeft="vline_VoltaLeft",t.vline_VoltaRight="vline_VoltaRight",t.VoltaLeft="VoltaLeft",t.VoltaRight="VoltaRight",t.VoltaAlternativeBegin="VoltaAlternativeBegin",t.BarMeasure="BarMeasure",t.vline_BarMeasure="vline_BarMeasure",t.vline_BarTerminal="vline_BarTerminal",t.vline_BarSegment="vline_BarSegment",t.SlurBegin="SlurBegin",t.SlurEnd="SlurEnd",t.TimesigC44="TimesigC44",t.TimesigC22="TimesigC22",t.TimesigZero="TimesigZero",t.TimesigOne="TimesigOne",t.TimesigTwo="TimesigTwo",t.TimesigThree="TimesigThree",t.TimesigFour="TimesigFour",t.TimesigFive="TimesigFive",t.TimesigSix="TimesigSix",t.TimesigSeven="TimesigSeven",t.TimesigEight="TimesigEight",t.TimesigNine="TimesigNine",t.OctaveShift8va="OctaveShift8va",t.OctaveShift8vb="OctaveShift8vb",t.OctaveShift8="OctaveShift8",t.OctaveShift0="OctaveShift0",t.Zero="Zero",t.One="One",t.Two="Two",t.Three="Three",t.Four="Four",t.Five="Five",t.Six="Six",t.Seven="Seven",t.Eight="Eight",t.Nine="Nine",t.f="f",t.p="p",t.m="m",t.n="n",t.r="r",t.s="s",t.z="z",t.CrescendoBegin="CrescendoBegin",t.CrescendoEnd="CrescendoEnd",t.DecrescendoBegin="DecrescendoBegin",t.DecrescendoEnd="DecrescendoEnd",t.ScriptFermata="ScriptFermata",t.ScriptShortFermata="ScriptShortFermata",t.ScriptSforzato="ScriptSforzato",t.ScriptStaccato="ScriptStaccato",t.ScriptStaccatissimo="ScriptStaccatissimo",t.ScriptTurn="ScriptTurn",t.ScriptTrill="ScriptTrill",t.ScriptSegno="ScriptSegno",t.ScriptCoda="ScriptCoda",t.ScriptArpeggio="ScriptArpeggio",t.ScriptPrall="ScriptPrall",t.ScriptMordent="ScriptMordent",t.ScriptMarcato="ScriptMarcato",t.ScriptTenuto="ScriptTenuto",t.ScriptPortato="ScriptPortato",t.PedalStar="PedalStar",t.PedalPed="PedalPed",t.KeyAcc="KeyAcc",t.TempoNotehead="TempoNotehead",t.GraceNotehead="GraceNotehead",t.SignLined="SignLined",t.SignInterval="SignInterval",t.rect_Text="rect_Text",t.rect_Lyric="rect_Lyric"}(SemanticType||(SemanticType={})),SemanticType.BarMeasure,SemanticType.vline_BarMeasure,SemanticType.vline_BarTerminal,SemanticType.vline_BarSegment,SemanticType.vline_VoltaLeft,SemanticType.vline_VoltaRight,SemanticType.VoltaAlternativeBegin;const st=SemanticType;st.NoteheadS0,st.NoteheadS1,st.NoteheadS2,st.Zero,st.One,st.Two,st.Three,st.Four,st.Five,st.Six,st.Seven,st.Eight,st.Nine,st.ScriptStaccatissimo,st.TimesigZero,st.TimesigOne,st.TimesigTwo,st.TimesigThree,st.TimesigFour,st.TimesigFive,st.TimesigSix,st.TimesigSeven,st.TimesigEight,st.TimesigNine,st.Rest0,st.Rest1,st.Rest2,st.Rest3,st.Rest4,st.Rest5,st.Rest6,st.Rest0W,st.RestM1,st.SignInterval,st.SignLined,st.BeamLeft,st.BeamContinue,st.BeamRight,st.ClefG,st.ClefF,st.ClefC,st.NoteheadS0,st.NoteheadS1,st.NoteheadS2,st.Dot,st.Rest0,st.Rest1,st.Rest2,st.Rest3,st.Rest4,st.Rest5,st.Rest6,st.RestM1,st.AccNatural,st.AccSharp,st.AccDoublesharp,st.AccFlat,st.AccFlatflat,st.TimesigC44,st.TimesigC22,st.TimesigZero,st.TimesigOne,st.TimesigTwo,st.TimesigThree,st.TimesigFour,st.TimesigFive,st.TimesigSix,st.TimesigSeven,st.TimesigEight,st.TimesigNine,st.One,st.Two,st.Three,st.Four,st.Five,st.OctaveShift8,st.OctaveShift0,st.f,st.p,st.m,st.n,st.r,st.s,st.z,st.ScriptFermata,st.ScriptShortFermata,st.ScriptSforzato,st.ScriptStaccato,st.ScriptStaccatissimo,st.ScriptTurn,st.ScriptTrill,st.ScriptSegno,st.ScriptCoda,st.ScriptArpeggio,st.ScriptPrall,st.ScriptMordent,st.ScriptMarcato,st.ScriptTenuto,st.ScriptPortato,st.PedalStar,st.PedalPed;const roundNumber=(t,e,s=-1/0)=>Math.max(Math.round(t/e)*e,s),gcd=(t,e)=>Number.isInteger(t)&&Number.isInteger(e)?0===e?t:gcd(e,t%e):(console.error("non-integer gcd:",t,e),1),frac=(t,e)=>({numerator:t,denominator:e}),reducedFraction=(t,e)=>{t=Math.round(t),e=Math.round(e);const s=0!==t?gcd(t,e):e;return frac(t/s,e/s)},fractionMul=(t,e)=>e?t*e.numerator/e.denominator:t;class DummyLogger{debug(...t){}group(...t){}groupCollapsed(...t){}groupEnd(){}info(...t){}warn(...t){}assert(...t){}}const EOM=-1,GREAT_NUMBER=1920,DURATION_MULTIPLIER=1921920,floatToFrac=t=>{const e=Math.round(t*GREAT_NUMBER);return reducedFraction(e,GREAT_NUMBER)},floatToTimeWarp=t=>1===t?null:floatToFrac(t);var ActionType;!function(t){t[t.PLACE=0]="PLACE",t[t.VERTICAL=1]="VERTICAL",t[t.HORIZONTAL=2]="HORIZONTAL"}(ActionType||(ActionType={}));class Action{constructor(t){Object.assign(this,t)}static P(t){return new Action({type:ActionType.PLACE,e1:t})}static V(t,e,s=1){return new Action({type:ActionType.VERTICAL,e1:s>0?t:e,e2:s>0?e:t})}static H(t,e){return new Action({type:ActionType.HORIZONTAL,e1:t,e2:e})}get id(){switch(this.type){case ActionType.PLACE:return this.e1.toString();case ActionType.VERTICAL:return`${this.e1}|${this.e2}`;case ActionType.HORIZONTAL:return`${this.e1}-${this.e2>=0?this.e2:"."}`}}get events(){return[this.e1,this.e2].filter(Number.isFinite)}}class StageMatrix{static fromNode(t,e){const s=Array(t.stages.length).fill(null).map(()=>Array(t.stages.length).fill(null).map(()=>new Set));t.actions.filter(t=>t.type===ActionType.HORIZONTAL).forEach(e=>{const i=t.stages.findIndex(t=>t.events.includes(e.e1)),n=t.stages.findIndex(t=>t.events.includes(e.e2));console.assert(i>=0&&n>=0,"invalid stages for H action:",t.id,t.stages,e),s[i][n].add(e.e1)}),s[0][t.stages.length-1].add(0);const i=t.stagedEvents,n=e.matrixH[e.matrixH.length-1].filter((t,e)=>!i.has(e)),r=Math.max(0,Math.max(...n)-.01),o=t.actions.filter(t=>t.type===ActionType.HORIZONTAL),a=Object.keys(e.eventMap).map(Number).filter(t=>!o.find(e=>e.e2===t));return t.stages.forEach(i=>{i.events.forEach(n=>{if(n>0){!o.find(t=>t.e1===n)&&e.matrixH[e.matrixH.length-1][n]>=r&&(a.some(t=>e.matrixH[t][n]>0)||s[i.index][t.stages.length-1].add(n))}})}),new StageMatrix({matrix:s})}constructor(t){Object.assign(this,t)}pathOf(t,e,s,i=0){if(this.matrix[t][e].size){const n=[...this.matrix[t][e]][i];if(e===s)return[n];for(let t=e+1;t<=s;++t){const i=this.pathOf(e,t,s);if(i)return[n,...i]}}return null}findDoublePath(t,e){const s=[];for(let i=e;i>=t+1;--i)for(let n=0;ne.forEach(e=>t.forEach(t=>e.delete(t))))}toEquations(t){const e=[];for(let s=1;sr[t]=1),n.forEach(t=>r[t]=-1),e.push(r),this.reducePath(i.length>n.length?i:n)}}}return e}}class PathNode{constructor(t){Object.assign(this,t),console.assert(this.logger,"logger is null:",t)}get actions(){const t=this.parent?this.parent.actions:[];return this.action?[...t,this.action]:t}get id(){return this.actions.map(t=>t.id).sort().join(" ")}get stagedEvents(){const t=new Set;return this.stages&&this.stages.forEach(e=>e.events.forEach(e=>e>=0&&t.add(e))),t}like(t){return t.split(" ").sort().join(" ")===this.id}constructStages(t){this.stages=[{events:[EOM]}];for(const e of this.actions)switch(e.type){case ActionType.PLACE:this.stages.unshift({events:[e.e1]});break;case ActionType.VERTICAL:{const t=this.stages.find(t=>t.events.includes(e.e1)),s=this.stages.find(t=>t.events.includes(e.e2));console.assert(t||s,"invalid V action:",this.stages,e),t&&s?(t.events.push(...s.events),s.events=null,this.stages=this.stages.filter(t=>t.events)):t?s||t.events.push(e.e2):s.events.unshift(e.e1)}break;case ActionType.HORIZONTAL:{const s=this.stages.find(t=>t.events.includes(e.e1)),i=this.stages.find(t=>t.events.includes(e.e2));console.assert(s||i,"invalid H action:",this.stages,e);const n=s=>{console.assert(t.eventMap[s],"invalid event id:",e.id,s,t.eventMap);const i=t.eventMap[s].x,n=this.stages.find(e=>e.events.some(e=>e>0&&t.eventMap[e].x<=i)&&e.events.some(e=>e>0&&t.eventMap[e].x>=i));if(n)n.events.push(s);else{const e={events:[s]},n=this.stages.findIndex(e=>e.events[0]===EOM||t.eventMap[e.events[0]].x>=i);this.stages.splice(n,0,e)}};s||n(e.e1),i||n(e.e2)}}this.stages.forEach((t,e)=>t.index=e)}constructConstraints(t){const e=Object.keys(t.eventMap).length,s=StageMatrix.fromNode(this,t).toEquations(e),i=Array(e).fill(null).map((e,s)=>t.eventMap[s].duration);this.constraints=s.map(t=>t.map((t,e)=>t*i[e]))}inbalancesConstraints(t){console.assert(this.constraints,"constraints not constructed.");const e=Object.keys(t.eventMap).length,s=Array(e).fill(!0),i=Array(e).fill(!1),n=[];for(const t of this.constraints){const e=t.reduce((t,e)=>t+e,0);if(0!==e){const r=e<0?t.map(t=>-t):t;if(r[0]>0)continue;n.push(r),r.forEach((t,e)=>{i[e]=i[e]||t<0,t&&(s[e]=t<0||i[e])})}}return this.constraints.forEach(t=>{0!==t.reduce((t,e)=>t+e,0)||t[0]||t.some((t,e)=>t&&!s[e])&&(t.forEach((t,e)=>t&&(s[e]=!1)),n.push(t))}),{ones:s,inbalances:n}}solveEquations({ones:t,inbalances:e}){if(!e.length)return t.map(()=>1);const s=t.map((t,e)=>({fixed:t,i:e})).filter(({fixed:t})=>!t).map(({i:t})=>t).filter(t=>e.some(e=>0!==e[t]));if(!s.length)return t.map(()=>1);const i=s.map(t=>Math.abs(e.find(e=>0!==e[t])[t])),n=new Map;let r=!1;const o=e.map(t=>({line:t.filter((t,e)=>s.includes(e)),bias:-t.reduce((t,e,i)=>t+(s.includes(i)?0:e),0)})).filter(({line:t,bias:e})=>{if(t.every(t=>0===t))return!1;const s=t.join(",");return n.has(s)?(r=n.get(s)!==e,!1):(n.set(s,e),!0)});if(r)return null;const a=o.slice(0,s.length),c=o.slice(s.length);if(a.lengths===e?1:s===n?-1:0),bias:0,prior:(i[e]+i[n])/DURATION_MULTIPLIER};a.some(t=>t.line[e]&&t.line[n])&&(r.prior-=10),a.some(t=>1===t.line.filter(Number).length&&(t.line[e]||t.line[n]))&&(r.prior+=1),t.push(r)}t.sort((t,e)=>t.prior-e.prior),a.push(...t.slice(0,s.length-a.length))}const h=a.map(({line:t})=>t),l=a.map(({bias:t})=>t),u=matrixInverse(h);if(!u)return this.logger.warn("null invert:",h),null;const d=u.map(t=>t.reduce((t,e,s)=>t+e*l[s],0));if(c.length&&c.some(t=>Math.abs(t.line.reduce((t,e,s)=>t+e*d[s],0))>.001))return null;const f=t.map(()=>1);return s.forEach((t,e)=>f[t]=d[e]),f}optimallySolve(t){const{ones:e,inbalances:s}=this.inbalancesConstraints(t),i=e.map((e,s)=>e?-1:roundNumber(t.eventMap[s].shrinkness,.01)).reduce((t,e,s)=>(e>=0&&(t[e]=t[e]||[],t[e].push(s)),t),{}),n=Object.entries(i).sort((t,e)=>Number(e[0])-Number(t[0])).map(t=>t[1]);for(let i=1;i!r.includes(e)),a=this.solveEquations({ones:o,inbalances:s});if(a&&a.every((e,s)=>e<=1&&e>t.eventMap[s].lowWarp))return a}return this.solveEquations({ones:e,inbalances:s})}isConflicted(t){const{ones:e,inbalances:s}=this.inbalancesConstraints(t);for(const i of s){if(i.reduce((s,i,n)=>s+i*(e[n]||i<=0?1:t.eventMap[n].lowWarp),0)>=0)return i.forEach((e,s)=>{e&&(t.eventTendencies[s]+=e>0?1:-1)}),!0}if(!s.length)return!1;const i=this.solveEquations({ones:e,inbalances:s});return!i||!i.every((e,s)=>e>t.eventMap[s].lowWarp&&e<=1)}getSolution(t){const e=e=>t.eventMap[e.e2]?t.eventMap[e.e2].x+.06*Math.abs(t.eventMap[e.e2].x-t.eventMap[e.e1].x):t.eventMap[e.e1].x+1e4,s=this.actions.filter(t=>t.type===ActionType.HORIZONTAL).sort((t,s)=>e(t)-e(s)),i=s.reduce((t,e)=>({...t,[e.e1]:e.e2}),{}),n=new Set([...Object.keys(i)].map(Number));s.forEach(t=>n.delete(t.e2)),this.stages[0].events.forEach(t=>t>0&&n.add(t));let r=[...n].map(t=>{const e=[t];let s=t;for(;i[s]&&(s=i[s],!(s<0||e.includes(s)));)e.push(s);return e});const o=Object.values(t.eventMap).filter(t=>t.id>0).map(t=>({id:t.id,tick:null,endTick:null,tickGroup:null,timeWarp:null})),a=o.filter(t=>r.some(e=>e.includes(t.id))||s.some(e=>[e.e1,e.e2].includes(t.id))).reduce((t,e)=>({...t,[e.id]:e}),{});this.stages.forEach((t,e)=>t.events.forEach(t=>a[t]&&(a[t].tickGroup=e))),this.stages[0].tick=0,this.stages[0].events.forEach(t=>a[t]&&(a[t].tick=0));const c=this.optimallySolve(t);o.forEach(t=>t.timeWarp=floatToTimeWarp(c[t.id]));const h=this.stages.slice(0,this.stages.length-1),l=()=>{if(h.every(t=>Number.isFinite(t.tick)))return!1;let e=!1;return s.forEach(s=>{const i=this.stages.find(t=>t.events.includes(s.e1)),n=this.stages.find(t=>t.events.includes(s.e2));Number.isFinite(i.tick)&&!Number.isFinite(n.tick)&&(n.tick=i.tick+fractionMul(t.eventMap[s.e1].duration,a[s.e1].timeWarp),n.events.forEach(t=>a[t]&&(a[t].tick=n.tick)),e=!0)}),[...s].reverse().forEach(s=>{const i=this.stages.find(t=>t.events.includes(s.e1)),n=this.stages.find(t=>t.events.includes(s.e2));!Number.isFinite(i.tick)&&Number.isFinite(n.tick)&&(i.tick=n.tick-fractionMul(t.eventMap[s.e1].duration,a[s.e1].timeWarp),i.events.forEach(t=>a[t]&&(a[t].tick=i.tick)),e=!0)}),e};for(;l(););console.assert(h.every(t=>Number.isFinite(t.tick)),"stage ticks not all solved:",this.stages,this.id),o.filter(t=>Number.isFinite(t.tick)).forEach(e=>e.endTick=e.tick+fractionMul(t.eventMap[e.id].duration,e.timeWarp));const u=t.eventMap[0].duration;r.forEach(t=>{const e=t.findIndex(t=>a[t].endTick>u);if(e>=0){t.splice(e,t.length-e).forEach(t=>{a[t].tick=null,a[t].endTick=null})}}),r=r.filter(t=>t.length);const d=Math.max(0,...o.map(t=>t.endTick).filter(Number.isFinite));return this.logger.debug(String.fromCodePoint(127822),this.id,c),{voices:r,events:o,duration:d,actions:this.actions.map(t=>t.id).join(" ")}}deduce(t,e){this.stages||this.constructStages(t);const s=t.actionAccessing.get(this.id)||{times:0};if(++s.times,t.actionAccessing.set(this.id,s),this.constructConstraints(t),this.isConflicted(t))return s.closed=!0,this.logger.info(this.action.id,"❌"),null;if(this.logger.group(this.action&&this.action.id),e.credits>0){if(--e.credits,this.children||this.expand(t),this.children=this.children.filter(e=>!t.actionAccessing.get(e.id)||!t.actionAccessing.get(e.id).closed),this.children.length){const s=e=>e.possibility/((t.actionAccessing.get(e.id)||{times:0}).times+1);this.children.sort((t,e)=>s(e)-s(t));for(const s of this.children){const i=s.deduce(t,e);if(i)return this.logger.groupEnd(),i;if(e.credits<=0)break}}}else this.logger.debug("quota exhausted.");return this.logger.groupEnd(),s.closed=!0,this.getSolution(t)}expand(t){this.constructStages(t);const{eventMap:e,matrixV:s,matrixH:i}=t,n=this.stagedEvents,r=[],o=t=>{if(!this.actions.some(e=>e.id===t.action.id)&&!r.some(e=>e.action.id===t.action.id)){const e=this.stages.find(e=>e.events.includes(t.action.e1)),i=this.stages.find(e=>e.events.includes(t.action.e2));if(e===i||e&&i&&e.index>=i.index)return;if(e&&i)if(t.action.type===ActionType.VERTICAL){if(i.index-e.index>1)return;if(this.actions.some(t=>e.events.includes(t.e1)&&i.events.includes(t.e2)))return}else if(t.action.type===ActionType.HORIZONTAL&&e.index>i.index)return;if(t.action.type===ActionType.HORIZONTAL&&this.actions.some(e=>e.type===ActionType.HORIZONTAL&&(e.e1===t.action.e1||e.e2===t.action.e2||e.e1===t.action.e2&&e.e2===t.action.e1)))return;if(t.action.type===ActionType.VERTICAL){if(e&&(t.possibility=Math.min(t.possibility,...e.events.map(e=>s[t.action.e2][e])),t.possibility<=0))return;if(i&&(t.possibility=Math.min(t.possibility,...i.events.map(e=>s[e][t.action.e1])),t.possibility<=0))return}r.push(t)}};for(const t of n)t<0||(s[t].forEach((e,s)=>{e>0&&t!==s&&o({action:Action.V(s,t),possibility:e})}),s.forEach((e,s)=>{const i=e[t];i>0&&o({action:Action.V(t,s),possibility:i})}),i[t].forEach((e,s)=>{e>0&&o({action:Action.H(s,t),possibility:e})}),i.forEach((s,i)=>{i=i>=Object.keys(e).length?-1:i;const n=s[t];n>0&&o({action:Action.H(t,i),possibility:n})}));r.some(t=>[ActionType.HORIZONTAL,ActionType.PLACE].includes(t.action.type)||!n.has(t.action.e1)||!n.has(t.action.e2))?this.children=r.map(t=>new PathNode({logger:this.logger,parent:this,...t})):this.children=[]}}class Solver{constructor(t,{quota:e=1e3,logger:s=new DummyLogger}={}){this.quota=e,this.logger=s;const i={id:0,x:0,confidence:1,shrinkness:t.measureShrinkness,duration:t.expectedDuration,lowWarp:0};this.events=[i,...t.events.map(t=>({id:t.id,x:t.x,confidence:t.confidence,shrinkness:t.shrinkness,staff:t.staff,duration:t.duration,lowWarp:.5}))],this.eventMap=this.events.reduce((t,e)=>({...t,[e.id]:e}),{}),this.matrixH=t.matrixH,this.matrixV=t.matrixV,this.xSpan=t.endX-Math.min(t.endX-1,...t.events.map(t=>t.x)),this.actionAccessing=new Map}solve(){this.pathRoot=new PathNode({logger:this.logger,action:null}),this.pathRoot.children=this.events.slice(1).map(t=>new PathNode({logger:this.logger,parent:this.pathRoot,action:Action.P(t.id),possibility:this.matrixV[t.id].reduce((t,e)=>t+e,0)}));let t=null;this.logger.groupCollapsed("solve");const e=Array(this.events.length).fill(0),s={credits:this.quota,times:0};for(;s.credits>0;){++s.times;const i={eventMap:this.eventMap,matrixH:this.matrixH,matrixV:this.matrixV,actionAccessing:this.actionAccessing,eventTendencies:e},n=this.pathRoot.deduce(i,s);if(n.credits=this.quota-s.credits,n.times=s.times,this.evaluateSolution(n),this.logger.debug("loss:",n.loss),t=!t||n.losst/s.times)),t}evaluateSolution(t){t.loss=0;const e=t.events.reduce((t,e)=>({...t,[e.id]:{...e,...this.eventMap[e.id]}}),{}),s=t.events.filter(t=>Number.isFinite(t.tick)).map(t=>e[t.id]),i=s.reduce((t,e)=>(t[e.staff]=t[e.staff]||[],t[e.staff].push(e),t),{});Object.values(i).forEach(e=>{e.sort((t,e)=>t.x-e.x).slice(0,e.length-1).forEach((s,i)=>{e[i+1].tick{if(Number.isFinite(s.tick)&&!t.voices.every(t=>!t.includes(s.id))||(t.loss+=100*e[s.id].confidence),s.timeWarp){const{numerator:t,denominator:i}=s.timeWarp,r=e[s.id].shrinkness;n.set(t,Math.max(n.get(t)||0,1-r)),n.set(i,Math.max(n.get(i)||0,1-r))}});const r=reducedFraction(t.duration,this.eventMap[0].duration);n.set(r.numerator,Math.max(n.get(r.numerator)||0,1-this.eventMap[0].shrinkness)),n.set(r.denominator,Math.max(n.get(r.denominator)||0,1-this.eventMap[0].shrinkness));for(const[e,s]of n.entries())e>1&&(t.loss+=Math.log(e)*s);let o=0,a=0;t.voices.forEach(s=>{console.assert(e[s[0]],"invalid voice:",s,Object.keys(e));const i=Math.abs(e[s[0]].tick),n=e[s[s.length-1]].endTick;o+=Math.max(0,i+t.duration-n);let r=null;s.forEach(t=>{const s=e[t];s.staff!==r&&(null!==r&&++a,r=s.staff)})}),t.loss+=10*o/DURATION_MULTIPLIER,t.loss+=5**a-1;const c=[...s].sort((t,e)=>t.x-e.x),h=c.slice(1).map((e,s)=>{const i=c[s],n=e.x-i.x,r=e.tick-i.tick;if(!r)return n/this.xSpan;return(4*Math.atan2(r/t.duration,n/this.xSpan)/Math.PI-1)**2}),l=Math.max(...h,0);t.loss+=l**2,console.assert(t.loss>=0,"Invalid solution loss!!!",t.loss,n,o,a),t.loss<0&&(t.loss=1/0)}}const solveStaffGroup=(t,e)=>{if(!t.events.length)return{events:[],voices:[],duration:0};return new Solver(t,e).solve()};self.onmessage=t=>{const{id:e,args:s}=t.data;try{const t=solveStaffGroup(s[0],s[1]);self.postMessage({id:e,result:t})}catch(t){self.postMessage({id:e,error:t.message})}},console.info("%cstarry-omr%c v1.0.0 2026-04-23T11:21:11.382Z","color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;","color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;")})(); //# sourceMappingURL=worker.js.map diff --git a/backend/omr/dist/worker.js.map b/backend/omr/dist/worker.js.map index 05388dcd69d2cc594ccaf285dde6788a9ddc4632..3f1c753dc2cbaf15844f09d183a1d2fd1b6d613f 100644 --- a/backend/omr/dist/worker.js.map +++ b/backend/omr/dist/worker.js.map @@ -1 +1 @@ -{"version":3,"file":"worker.js","sources":["../../../node_modules/workerpool/src/requireFoolWebpack.js","../../../node_modules/workerpool/src/Promise.js","../../../node_modules/workerpool/src/environment.js","../../../node_modules/workerpool/src/generated/embeddedWorker.js","../../../node_modules/workerpool/src/WorkerHandler.js","../../../node_modules/workerpool/src/transfer.js","../../../node_modules/workerpool/src/worker.js","../../../node_modules/workerpool/src/index.js","../../../node_modules/matrix-inverse/matrix-inverse.js","../../../src/starry/semanticPoint.ts","../../../node_modules/js-sha1/src/sha1.js","../../../src/starry/utils.ts","../../../src/starry/logger.ts","../../../src/starry/equationSolver.ts","../../../src/starry/solveStaffGroup.worker.ts","../src/worker.ts"],"sourcesContent":["// source of inspiration: https://github.com/sindresorhus/require-fool-webpack\nvar requireFoolWebpack = eval(\n 'typeof require !== \\'undefined\\' ' +\n '? require ' +\n ': function (module) { throw new Error(\\'Module \" + module + \" not found.\\') }'\n);\n\nmodule.exports = requireFoolWebpack;\n","'use strict';\n\n/**\n * Promise\n *\n * Inspired by https://gist.github.com/RubaXa/8501359 from RubaXa \n *\n * @param {Function} handler Called as handler(resolve: Function, reject: Function)\n * @param {Promise} [parent] Parent promise for propagation of cancel and timeout\n */\nfunction Promise(handler, parent) {\n var me = this;\n\n if (!(this instanceof Promise)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (typeof handler !== 'function') {\n throw new SyntaxError('Function parameter handler(resolve, reject) missing');\n }\n\n var _onSuccess = [];\n var _onFail = [];\n\n // status\n this.resolved = false;\n this.rejected = false;\n this.pending = true;\n\n /**\n * Process onSuccess and onFail callbacks: add them to the queue.\n * Once the promise is resolve, the function _promise is replace.\n * @param {Function} onSuccess\n * @param {Function} onFail\n * @private\n */\n var _process = function (onSuccess, onFail) {\n _onSuccess.push(onSuccess);\n _onFail.push(onFail);\n };\n\n /**\n * Add an onSuccess callback and optionally an onFail callback to the Promise\n * @param {Function} onSuccess\n * @param {Function} [onFail]\n * @returns {Promise} promise\n */\n this.then = function (onSuccess, onFail) {\n return new Promise(function (resolve, reject) {\n var s = onSuccess ? _then(onSuccess, resolve, reject) : resolve;\n var f = onFail ? _then(onFail, resolve, reject) : reject;\n\n _process(s, f);\n }, me);\n };\n\n /**\n * Resolve the promise\n * @param {*} result\n * @type {Function}\n */\n var _resolve = function (result) {\n // update status\n me.resolved = true;\n me.rejected = false;\n me.pending = false;\n\n _onSuccess.forEach(function (fn) {\n fn(result);\n });\n\n _process = function (onSuccess, onFail) {\n onSuccess(result);\n };\n\n _resolve = _reject = function () { };\n\n return me;\n };\n\n /**\n * Reject the promise\n * @param {Error} error\n * @type {Function}\n */\n var _reject = function (error) {\n // update status\n me.resolved = false;\n me.rejected = true;\n me.pending = false;\n\n _onFail.forEach(function (fn) {\n fn(error);\n });\n\n _process = function (onSuccess, onFail) {\n onFail(error);\n };\n\n _resolve = _reject = function () { }\n\n return me;\n };\n\n /**\n * Cancel te promise. This will reject the promise with a CancellationError\n * @returns {Promise} self\n */\n this.cancel = function () {\n if (parent) {\n parent.cancel();\n }\n else {\n _reject(new CancellationError());\n }\n\n return me;\n };\n\n /**\n * Set a timeout for the promise. If the promise is not resolved within\n * the time, the promise will be cancelled and a TimeoutError is thrown.\n * If the promise is resolved in time, the timeout is removed.\n * @param {number} delay Delay in milliseconds\n * @returns {Promise} self\n */\n this.timeout = function (delay) {\n if (parent) {\n parent.timeout(delay);\n }\n else {\n var timer = setTimeout(function () {\n _reject(new TimeoutError('Promise timed out after ' + delay + ' ms'));\n }, delay);\n\n me.always(function () {\n clearTimeout(timer);\n });\n }\n\n return me;\n };\n\n // attach handler passing the resolve and reject functions\n handler(function (result) {\n _resolve(result);\n }, function (error) {\n _reject(error);\n });\n}\n\n/**\n * Execute given callback, then call resolve/reject based on the returned result\n * @param {Function} callback\n * @param {Function} resolve\n * @param {Function} reject\n * @returns {Function}\n * @private\n */\nfunction _then(callback, resolve, reject) {\n return function (result) {\n try {\n var res = callback(result);\n if (res && typeof res.then === 'function' && typeof res['catch'] === 'function') {\n // method returned a promise\n res.then(resolve, reject);\n }\n else {\n resolve(res);\n }\n }\n catch (error) {\n reject(error);\n }\n }\n}\n\n/**\n * Add an onFail callback to the Promise\n * @param {Function} onFail\n * @returns {Promise} promise\n */\nPromise.prototype['catch'] = function (onFail) {\n return this.then(null, onFail);\n};\n\n// TODO: add support for Promise.catch(Error, callback)\n// TODO: add support for Promise.catch(Error, Error, callback)\n\n/**\n * Execute given callback when the promise either resolves or rejects.\n * @param {Function} fn\n * @returns {Promise} promise\n */\nPromise.prototype.always = function (fn) {\n return this.then(fn, fn);\n};\n\n/**\n * Create a promise which resolves when all provided promises are resolved,\n * and fails when any of the promises resolves.\n * @param {Promise[]} promises\n * @returns {Promise} promise\n */\nPromise.all = function (promises){\n return new Promise(function (resolve, reject) {\n var remaining = promises.length,\n results = [];\n\n if (remaining) {\n promises.forEach(function (p, i) {\n p.then(function (result) {\n results[i] = result;\n remaining--;\n if (remaining == 0) {\n resolve(results);\n }\n }, function (error) {\n remaining = 0;\n reject(error);\n });\n });\n }\n else {\n resolve(results);\n }\n });\n};\n\n/**\n * Create a promise resolver\n * @returns {{promise: Promise, resolve: Function, reject: Function}} resolver\n */\nPromise.defer = function () {\n var resolver = {};\n\n resolver.promise = new Promise(function (resolve, reject) {\n resolver.resolve = resolve;\n resolver.reject = reject;\n });\n\n return resolver;\n};\n\n/**\n * Create a cancellation error\n * @param {String} [message]\n * @extends Error\n */\nfunction CancellationError(message) {\n this.message = message || 'promise cancelled';\n this.stack = (new Error()).stack;\n}\n\nCancellationError.prototype = new Error();\nCancellationError.prototype.constructor = Error;\nCancellationError.prototype.name = 'CancellationError';\n\nPromise.CancellationError = CancellationError;\n\n\n/**\n * Create a timeout error\n * @param {String} [message]\n * @extends Error\n */\nfunction TimeoutError(message) {\n this.message = message || 'timeout exceeded';\n this.stack = (new Error()).stack;\n}\n\nTimeoutError.prototype = new Error();\nTimeoutError.prototype.constructor = Error;\nTimeoutError.prototype.name = 'TimeoutError';\n\nPromise.TimeoutError = TimeoutError;\n\n\nmodule.exports = Promise;\n","var requireFoolWebpack = require('./requireFoolWebpack');\n\n// source: https://github.com/flexdinesh/browser-or-node\nvar isNode = function (nodeProcess) {\n return (\n typeof nodeProcess !== 'undefined' &&\n nodeProcess.versions != null &&\n nodeProcess.versions.node != null\n );\n}\nmodule.exports.isNode = isNode\n\n// determines the JavaScript platform: browser or node\nmodule.exports.platform = typeof process !== 'undefined' && isNode(process)\n ? 'node'\n : 'browser';\n\n// determines whether the code is running in main thread or not\n// note that in node.js we have to check both worker_thread and child_process\nvar worker_threads = tryRequireFoolWebpack('worker_threads');\nmodule.exports.isMainThread = module.exports.platform === 'node'\n ? ((!worker_threads || worker_threads.isMainThread) && !process.connected)\n : typeof Window !== 'undefined';\n\n// determines the number of cpus available\nmodule.exports.cpus = module.exports.platform === 'browser'\n ? self.navigator.hardwareConcurrency\n : requireFoolWebpack('os').cpus().length;\n\nfunction tryRequireFoolWebpack (module) {\n try {\n return requireFoolWebpack(module);\n } catch(err) {\n return null\n }\n}\n","/**\n * embeddedWorker.js contains an embedded version of worker.js.\n * This file is automatically generated,\n * changes made in this file will be overwritten.\n */\nmodule.exports = \"!function(){var __webpack_modules__={577:function(e){e.exports=function(e,r){this.message=e,this.transfer=r}}},__webpack_module_cache__={};function __webpack_require__(e){var r=__webpack_module_cache__[e];return void 0!==r||(r=__webpack_module_cache__[e]={exports:{}},__webpack_modules__[e](r,r.exports,__webpack_require__)),r.exports}var __webpack_exports__={};!function(){var exports=__webpack_exports__,__webpack_unused_export__;function _typeof(e){return(_typeof=\\\"function\\\"==typeof Symbol&&\\\"symbol\\\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\\\"function\\\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\\\"symbol\\\":typeof e})(e)}var Transfer=__webpack_require__(577),requireFoolWebpack=eval(\\\"typeof require !== 'undefined' ? require : function (module) { throw new Error('Module \\\\\\\" + module + \\\\\\\" not found.') }\\\"),TERMINATE_METHOD_ID=\\\"__workerpool-terminate__\\\",worker={exit:function(){}},WorkerThreads,parentPort;if(\\\"undefined\\\"!=typeof self&&\\\"function\\\"==typeof postMessage&&\\\"function\\\"==typeof addEventListener)worker.on=function(e,r){addEventListener(e,function(e){r(e.data)})},worker.send=function(e){postMessage(e)};else{if(\\\"undefined\\\"==typeof process)throw new Error(\\\"Script must be executed as a worker\\\");try{WorkerThreads=requireFoolWebpack(\\\"worker_threads\\\")}catch(error){if(\\\"object\\\"!==_typeof(error)||null===error||\\\"MODULE_NOT_FOUND\\\"!==error.code)throw error}WorkerThreads&&null!==WorkerThreads.parentPort?(parentPort=WorkerThreads.parentPort,worker.send=parentPort.postMessage.bind(parentPort),worker.on=parentPort.on.bind(parentPort)):(worker.on=process.on.bind(process),worker.send=function(e){process.send(e)},worker.on(\\\"disconnect\\\",function(){process.exit(1)})),worker.exit=process.exit.bind(process)}function convertError(o){return Object.getOwnPropertyNames(o).reduce(function(e,r){return Object.defineProperty(e,r,{value:o[r],enumerable:!0})},{})}function isPromise(e){return e&&\\\"function\\\"==typeof e.then&&\\\"function\\\"==typeof e.catch}worker.methods={},worker.methods.run=function(e,r){e=new Function(\\\"return (\\\"+e+\\\").apply(null, arguments);\\\");return e.apply(e,r)},worker.methods.methods=function(){return Object.keys(worker.methods)},worker.terminationHandler=void 0,worker.cleanupAndExit=function(e){function r(){worker.exit(e)}if(!worker.terminationHandler)return r();var o=worker.terminationHandler(e);isPromise(o)?o.then(r,r):r()};var currentRequestId=null;worker.on(\\\"message\\\",function(r){if(r===TERMINATE_METHOD_ID)return worker.cleanupAndExit(0);try{var e=worker.methods[r.method];if(!e)throw new Error('Unknown method \\\"'+r.method+'\\\"');currentRequestId=r.id;var o=e.apply(e,r.params);isPromise(o)?o.then(function(e){e instanceof Transfer?worker.send({id:r.id,result:e.message,error:null},e.transfer):worker.send({id:r.id,result:e,error:null}),currentRequestId=null}).catch(function(e){worker.send({id:r.id,result:null,error:convertError(e)}),currentRequestId=null}):(o instanceof Transfer?worker.send({id:r.id,result:o.message,error:null},o.transfer):worker.send({id:r.id,result:o,error:null}),currentRequestId=null)}catch(e){worker.send({id:r.id,result:null,error:convertError(e)})}}),worker.register=function(e,r){if(e)for(var o in e)e.hasOwnProperty(o)&&(worker.methods[o]=e[o]);r&&(worker.terminationHandler=r.onTerminate),worker.send(\\\"ready\\\")},worker.emit=function(e){currentRequestId&&(e instanceof Transfer?worker.send({id:currentRequestId,isEvent:!0,payload:e.message},e.transfer):worker.send({id:currentRequestId,isEvent:!0,payload:e}))},__webpack_unused_export__=worker.register,worker.emit}()}();\";\n","'use strict';\n\nvar Promise = require('./Promise');\nvar environment = require('./environment');\nvar requireFoolWebpack = require('./requireFoolWebpack');\n\n/**\n * Special message sent by parent which causes a child process worker to terminate itself.\n * Not a \"message object\"; this string is the entire message.\n */\nvar TERMINATE_METHOD_ID = '__workerpool-terminate__';\n\nfunction ensureWorkerThreads() {\n var WorkerThreads = tryRequireWorkerThreads()\n if (!WorkerThreads) {\n throw new Error('WorkerPool: workerType = \\'thread\\' is not supported, Node >= 11.7.0 required')\n }\n\n return WorkerThreads;\n}\n\n// check whether Worker is supported by the browser\nfunction ensureWebWorker() {\n // Workaround for a bug in PhantomJS (Or QtWebkit): https://github.com/ariya/phantomjs/issues/14534\n if (typeof Worker !== 'function' && (typeof Worker !== 'object' || typeof Worker.prototype.constructor !== 'function')) {\n throw new Error('WorkerPool: Web Workers not supported');\n }\n}\n\nfunction tryRequireWorkerThreads() {\n try {\n return requireFoolWebpack('worker_threads');\n } catch(error) {\n if (typeof error === 'object' && error !== null && error.code === 'MODULE_NOT_FOUND') {\n // no worker_threads available (old version of node.js)\n return null;\n } else {\n throw error;\n }\n }\n}\n\n// get the default worker script\nfunction getDefaultWorker() {\n if (environment.platform === 'browser') {\n // test whether the browser supports all features that we need\n if (typeof Blob === 'undefined') {\n throw new Error('Blob not supported by the browser');\n }\n if (!window.URL || typeof window.URL.createObjectURL !== 'function') {\n throw new Error('URL.createObjectURL not supported by the browser');\n }\n\n // use embedded worker.js\n var blob = new Blob([require('./generated/embeddedWorker')], {type: 'text/javascript'});\n return window.URL.createObjectURL(blob);\n }\n else {\n // use external worker.js in current directory\n return __dirname + '/worker.js';\n }\n}\n\nfunction setupWorker(script, options) {\n if (options.workerType === 'web') { // browser only\n ensureWebWorker();\n return setupBrowserWorker(script, options.workerOpts, Worker);\n } else if (options.workerType === 'thread') { // node.js only\n WorkerThreads = ensureWorkerThreads();\n return setupWorkerThreadWorker(script, WorkerThreads, options.workerThreadOpts);\n } else if (options.workerType === 'process' || !options.workerType) { // node.js only\n return setupProcessWorker(script, resolveForkOptions(options), requireFoolWebpack('child_process'));\n } else { // options.workerType === 'auto' or undefined\n if (environment.platform === 'browser') {\n ensureWebWorker();\n return setupBrowserWorker(script, options.workerOpts, Worker);\n }\n else { // environment.platform === 'node'\n var WorkerThreads = tryRequireWorkerThreads();\n if (WorkerThreads) {\n return setupWorkerThreadWorker(script, WorkerThreads, options.workerThreadOpts);\n } else {\n return setupProcessWorker(script, resolveForkOptions(options), requireFoolWebpack('child_process'));\n }\n }\n }\n}\n\nfunction setupBrowserWorker(script, workerOpts, Worker) {\n // create the web worker\n var worker = new Worker(script, workerOpts);\n\n worker.isBrowserWorker = true;\n // add node.js API to the web worker\n worker.on = function (event, callback) {\n this.addEventListener(event, function (message) {\n callback(message.data);\n });\n };\n worker.send = function (message, transfer) {\n this.postMessage(message, transfer);\n };\n return worker;\n}\n\nfunction setupWorkerThreadWorker(script, WorkerThreads, workerThreadOptions) {\n var worker = new WorkerThreads.Worker(script, {\n stdout: false, // automatically pipe worker.STDOUT to process.STDOUT\n stderr: false, // automatically pipe worker.STDERR to process.STDERR\n ...workerThreadOptions\n });\n worker.isWorkerThread = true;\n worker.send = function(message, transfer) {\n this.postMessage(message, transfer);\n };\n\n worker.kill = function() {\n this.terminate();\n return true;\n };\n\n worker.disconnect = function() {\n this.terminate();\n };\n\n return worker;\n}\n\nfunction setupProcessWorker(script, options, child_process) {\n // no WorkerThreads, fallback to sub-process based workers\n var worker = child_process.fork(\n script,\n options.forkArgs,\n options.forkOpts\n );\n\n // ignore transfer argument since it is not supported by process\n var send = worker.send;\n worker.send = function (message) {\n return send.call(worker, message);\n };\n\n worker.isChildProcess = true;\n return worker;\n}\n\n// add debug flags to child processes if the node inspector is active\nfunction resolveForkOptions(opts) {\n opts = opts || {};\n\n var processExecArgv = process.execArgv.join(' ');\n var inspectorActive = processExecArgv.indexOf('--inspect') !== -1;\n var debugBrk = processExecArgv.indexOf('--debug-brk') !== -1;\n\n var execArgv = [];\n if (inspectorActive) {\n execArgv.push('--inspect=' + opts.debugPort);\n\n if (debugBrk) {\n execArgv.push('--debug-brk');\n }\n }\n\n process.execArgv.forEach(function(arg) {\n if (arg.indexOf('--max-old-space-size') > -1) {\n execArgv.push(arg)\n }\n })\n\n return Object.assign({}, opts, {\n forkArgs: opts.forkArgs,\n forkOpts: Object.assign({}, opts.forkOpts, {\n execArgv: (opts.forkOpts && opts.forkOpts.execArgv || [])\n .concat(execArgv)\n })\n });\n}\n\n/**\n * Converts a serialized error to Error\n * @param {Object} obj Error that has been serialized and parsed to object\n * @return {Error} The equivalent Error.\n */\nfunction objectToError (obj) {\n var temp = new Error('')\n var props = Object.keys(obj)\n\n for (var i = 0; i < props.length; i++) {\n temp[props[i]] = obj[props[i]]\n }\n\n return temp\n}\n\n/**\n * A WorkerHandler controls a single worker. This worker can be a child process\n * on node.js or a WebWorker in a browser environment.\n * @param {String} [script] If no script is provided, a default worker with a\n * function run will be created.\n * @param {WorkerPoolOptions} _options See docs\n * @constructor\n */\nfunction WorkerHandler(script, _options) {\n var me = this;\n var options = _options || {};\n\n this.script = script || getDefaultWorker();\n this.worker = setupWorker(this.script, options);\n this.debugPort = options.debugPort;\n this.forkOpts = options.forkOpts;\n this.forkArgs = options.forkArgs;\n this.workerOpts = options.workerOpts;\n this.workerThreadOpts = options.workerThreadOpts\n this.workerTerminateTimeout = options.workerTerminateTimeout;\n\n // The ready message is only sent if the worker.add method is called (And the default script is not used)\n if (!script) {\n this.worker.ready = true;\n }\n\n // queue for requests that are received before the worker is ready\n this.requestQueue = [];\n this.worker.on('message', function (response) {\n if (me.terminated) {\n return;\n }\n if (typeof response === 'string' && response === 'ready') {\n me.worker.ready = true;\n dispatchQueuedRequests();\n } else {\n // find the task from the processing queue, and run the tasks callback\n var id = response.id;\n var task = me.processing[id];\n if (task !== undefined) {\n if (response.isEvent) {\n if (task.options && typeof task.options.on === 'function') {\n task.options.on(response.payload);\n }\n } else {\n // remove the task from the queue\n delete me.processing[id];\n\n // test if we need to terminate\n if (me.terminating === true) {\n // complete worker termination if all tasks are finished\n me.terminate();\n }\n\n // resolve the task's promise\n if (response.error) {\n task.resolver.reject(objectToError(response.error));\n }\n else {\n task.resolver.resolve(response.result);\n }\n }\n }\n }\n });\n\n // reject all running tasks on worker error\n function onError(error) {\n me.terminated = true;\n\n for (var id in me.processing) {\n if (me.processing[id] !== undefined) {\n me.processing[id].resolver.reject(error);\n }\n }\n me.processing = Object.create(null);\n }\n\n // send all queued requests to worker\n function dispatchQueuedRequests()\n {\n for(const request of me.requestQueue.splice(0)) {\n me.worker.send(request.message, request.transfer);\n }\n }\n\n var worker = this.worker;\n // listen for worker messages error and exit\n this.worker.on('error', onError);\n this.worker.on('exit', function (exitCode, signalCode) {\n var message = 'Workerpool Worker terminated Unexpectedly\\n';\n\n message += ' exitCode: `' + exitCode + '`\\n';\n message += ' signalCode: `' + signalCode + '`\\n';\n\n message += ' workerpool.script: `' + me.script + '`\\n';\n message += ' spawnArgs: `' + worker.spawnargs + '`\\n';\n message += ' spawnfile: `' + worker.spawnfile + '`\\n'\n\n message += ' stdout: `' + worker.stdout + '`\\n'\n message += ' stderr: `' + worker.stderr + '`\\n'\n\n onError(new Error(message));\n });\n\n this.processing = Object.create(null); // queue with tasks currently in progress\n\n this.terminating = false;\n this.terminated = false;\n this.cleaning = false;\n this.terminationHandler = null;\n this.lastId = 0;\n}\n\n/**\n * Get a list with methods available on the worker.\n * @return {Promise.} methods\n */\nWorkerHandler.prototype.methods = function () {\n return this.exec('methods');\n};\n\n/**\n * Execute a method with given parameters on the worker\n * @param {String} method\n * @param {Array} [params]\n * @param {{resolve: Function, reject: Function}} [resolver]\n * @param {ExecOptions} [options]\n * @return {Promise.<*, Error>} result\n */\nWorkerHandler.prototype.exec = function(method, params, resolver, options) {\n if (!resolver) {\n resolver = Promise.defer();\n }\n\n // generate a unique id for the task\n var id = ++this.lastId;\n\n // register a new task as being in progress\n this.processing[id] = {\n id: id,\n resolver: resolver,\n options: options\n };\n\n // build a JSON-RPC request\n var request = {\n message: {\n id: id,\n method: method,\n params: params\n },\n transfer: options && options.transfer\n };\n\n if (this.terminated) {\n resolver.reject(new Error('Worker is terminated'));\n } else if (this.worker.ready) {\n // send the request to the worker\n this.worker.send(request.message, request.transfer);\n } else {\n this.requestQueue.push(request);\n }\n\n // on cancellation, force the worker to terminate\n var me = this;\n return resolver.promise.catch(function (error) {\n if (error instanceof Promise.CancellationError || error instanceof Promise.TimeoutError) {\n // remove this task from the queue. It is already rejected (hence this\n // catch event), and else it will be rejected again when terminating\n delete me.processing[id];\n\n // terminate worker\n return me.terminateAndNotify(true)\n .then(function() {\n throw error;\n }, function(err) {\n throw err;\n });\n } else {\n throw error;\n }\n })\n};\n\n/**\n * Test whether the worker is processing any tasks or cleaning up before termination.\n * @return {boolean} Returns true if the worker is busy\n */\nWorkerHandler.prototype.busy = function () {\n return this.cleaning || Object.keys(this.processing).length > 0;\n};\n\n/**\n * Terminate the worker.\n * @param {boolean} [force=false] If false (default), the worker is terminated\n * after finishing all tasks currently in\n * progress. If true, the worker will be\n * terminated immediately.\n * @param {function} [callback=null] If provided, will be called when process terminates.\n */\nWorkerHandler.prototype.terminate = function (force, callback) {\n var me = this;\n if (force) {\n // cancel all tasks in progress\n for (var id in this.processing) {\n if (this.processing[id] !== undefined) {\n this.processing[id].resolver.reject(new Error('Worker terminated'));\n }\n }\n this.processing = Object.create(null);\n }\n\n if (typeof callback === 'function') {\n this.terminationHandler = callback;\n }\n if (!this.busy()) {\n // all tasks are finished. kill the worker\n var cleanup = function(err) {\n me.terminated = true;\n me.cleaning = false;\n if (me.worker != null && me.worker.removeAllListeners) {\n // removeAllListeners is only available for child_process\n me.worker.removeAllListeners('message');\n }\n me.worker = null;\n me.terminating = false;\n if (me.terminationHandler) {\n me.terminationHandler(err, me);\n } else if (err) {\n throw err;\n }\n }\n\n if (this.worker) {\n if (typeof this.worker.kill === 'function') {\n if (this.worker.killed) {\n cleanup(new Error('worker already killed!'));\n return;\n }\n\n // child process and worker threads\n var cleanExitTimeout = setTimeout(function() {\n if (me.worker) {\n me.worker.kill();\n }\n }, this.workerTerminateTimeout);\n\n this.worker.once('exit', function() {\n clearTimeout(cleanExitTimeout);\n if (me.worker) {\n me.worker.killed = true;\n }\n cleanup();\n });\n\n if (this.worker.ready) {\n this.worker.send(TERMINATE_METHOD_ID);\n } else {\n this.requestQueue.push({ message: TERMINATE_METHOD_ID });\n }\n\n // mark that the worker is cleaning up resources\n // to prevent new tasks from being executed\n this.cleaning = true;\n return;\n }\n else if (typeof this.worker.terminate === 'function') {\n this.worker.terminate(); // web worker\n this.worker.killed = true;\n }\n else {\n throw new Error('Failed to terminate worker');\n }\n }\n cleanup();\n }\n else {\n // we can't terminate immediately, there are still tasks being executed\n this.terminating = true;\n }\n};\n\n/**\n * Terminate the worker, returning a Promise that resolves when the termination has been done.\n * @param {boolean} [force=false] If false (default), the worker is terminated\n * after finishing all tasks currently in\n * progress. If true, the worker will be\n * terminated immediately.\n * @param {number} [timeout] If provided and non-zero, worker termination promise will be rejected\n * after timeout if worker process has not been terminated.\n * @return {Promise.}\n */\nWorkerHandler.prototype.terminateAndNotify = function (force, timeout) {\n var resolver = Promise.defer();\n if (timeout) {\n resolver.promise.timeout(timeout);\n }\n this.terminate(force, function(err, worker) {\n if (err) {\n resolver.reject(err);\n } else {\n resolver.resolve(worker);\n }\n });\n return resolver.promise;\n};\n\nmodule.exports = WorkerHandler;\nmodule.exports._tryRequireWorkerThreads = tryRequireWorkerThreads;\nmodule.exports._setupProcessWorker = setupProcessWorker;\nmodule.exports._setupBrowserWorker = setupBrowserWorker;\nmodule.exports._setupWorkerThreadWorker = setupWorkerThreadWorker;\nmodule.exports.ensureWorkerThreads = ensureWorkerThreads;\n","/**\n * The helper class for transferring data from the worker to the main thread.\n *\n * @param {Object} message The object to deliver to the main thread.\n * @param {Object[]} transfer An array of transferable Objects to transfer ownership of.\n */\nfunction Transfer(message, transfer) {\n this.message = message;\n this.transfer = transfer;\n}\n\nmodule.exports = Transfer;\n","/**\n * worker must be started as a child process or a web worker.\n * It listens for RPC messages from the parent process.\n */\nvar Transfer = require('./transfer');\n\n// source of inspiration: https://github.com/sindresorhus/require-fool-webpack\nvar requireFoolWebpack = eval(\n 'typeof require !== \\'undefined\\'' +\n ' ? require' +\n ' : function (module) { throw new Error(\\'Module \" + module + \" not found.\\') }'\n);\n\n/**\n * Special message sent by parent which causes the worker to terminate itself.\n * Not a \"message object\"; this string is the entire message.\n */\nvar TERMINATE_METHOD_ID = '__workerpool-terminate__';\n\n// var nodeOSPlatform = require('./environment').nodeOSPlatform;\n\n// create a worker API for sending and receiving messages which works both on\n// node.js and in the browser\nvar worker = {\n exit: function() {}\n};\nif (typeof self !== 'undefined' && typeof postMessage === 'function' && typeof addEventListener === 'function') {\n // worker in the browser\n worker.on = function (event, callback) {\n addEventListener(event, function (message) {\n callback(message.data);\n })\n };\n worker.send = function (message) {\n postMessage(message);\n };\n}\nelse if (typeof process !== 'undefined') {\n // node.js\n\n var WorkerThreads;\n try {\n WorkerThreads = requireFoolWebpack('worker_threads');\n } catch(error) {\n if (typeof error === 'object' && error !== null && error.code === 'MODULE_NOT_FOUND') {\n // no worker_threads, fallback to sub-process based workers\n } else {\n throw error;\n }\n }\n\n if (WorkerThreads &&\n /* if there is a parentPort, we are in a WorkerThread */\n WorkerThreads.parentPort !== null) {\n var parentPort = WorkerThreads.parentPort;\n worker.send = parentPort.postMessage.bind(parentPort);\n worker.on = parentPort.on.bind(parentPort);\n worker.exit = process.exit.bind(process);\n } else {\n worker.on = process.on.bind(process);\n // ignore transfer argument since it is not supported by process\n worker.send = function (message) {\n process.send(message);\n };\n // register disconnect handler only for subprocess worker to exit when parent is killed unexpectedly\n worker.on('disconnect', function () {\n process.exit(1);\n });\n worker.exit = process.exit.bind(process);\n }\n}\nelse {\n throw new Error('Script must be executed as a worker');\n}\n\nfunction convertError(error) {\n return Object.getOwnPropertyNames(error).reduce(function(product, name) {\n return Object.defineProperty(product, name, {\n\tvalue: error[name],\n\tenumerable: true\n });\n }, {});\n}\n\n/**\n * Test whether a value is a Promise via duck typing.\n * @param {*} value\n * @returns {boolean} Returns true when given value is an object\n * having functions `then` and `catch`.\n */\nfunction isPromise(value) {\n return value && (typeof value.then === 'function') && (typeof value.catch === 'function');\n}\n\n// functions available externally\nworker.methods = {};\n\n/**\n * Execute a function with provided arguments\n * @param {String} fn Stringified function\n * @param {Array} [args] Function arguments\n * @returns {*}\n */\nworker.methods.run = function run(fn, args) {\n var f = new Function('return (' + fn + ').apply(null, arguments);');\n return f.apply(f, args);\n};\n\n/**\n * Get a list with methods available on this worker\n * @return {String[]} methods\n */\nworker.methods.methods = function methods() {\n return Object.keys(worker.methods);\n};\n\n/**\n * Custom handler for when the worker is terminated.\n */\nworker.terminationHandler = undefined;\n\n/**\n * Cleanup and exit the worker.\n * @param {Number} code \n * @returns \n */\nworker.cleanupAndExit = function(code) {\n var _exit = function() {\n worker.exit(code);\n }\n\n if(!worker.terminationHandler) {\n return _exit();\n }\n\n var result = worker.terminationHandler(code);\n if (isPromise(result)) {\n result.then(_exit, _exit);\n } else {\n _exit();\n }\n}\n\nvar currentRequestId = null;\n\nworker.on('message', function (request) {\n if (request === TERMINATE_METHOD_ID) {\n return worker.cleanupAndExit(0);\n }\n try {\n var method = worker.methods[request.method];\n\n if (method) {\n currentRequestId = request.id;\n \n // execute the function\n var result = method.apply(method, request.params);\n\n if (isPromise(result)) {\n // promise returned, resolve this and then return\n result\n .then(function (result) {\n if (result instanceof Transfer) {\n worker.send({\n id: request.id,\n result: result.message,\n error: null\n }, result.transfer);\n } else {\n worker.send({\n id: request.id,\n result: result,\n error: null\n });\n }\n currentRequestId = null;\n })\n .catch(function (err) {\n worker.send({\n id: request.id,\n result: null,\n error: convertError(err)\n });\n currentRequestId = null;\n });\n }\n else {\n // immediate result\n if (result instanceof Transfer) {\n worker.send({\n id: request.id,\n result: result.message,\n error: null\n }, result.transfer);\n } else {\n worker.send({\n id: request.id,\n result: result,\n error: null\n });\n }\n\n currentRequestId = null;\n }\n }\n else {\n throw new Error('Unknown method \"' + request.method + '\"');\n }\n }\n catch (err) {\n worker.send({\n id: request.id,\n result: null,\n error: convertError(err)\n });\n }\n});\n\n/**\n * Register methods to the worker\n * @param {Object} [methods]\n * @param {WorkerRegisterOptions} [options]\n */\nworker.register = function (methods, options) {\n\n if (methods) {\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n worker.methods[name] = methods[name];\n }\n }\n }\n\n if (options) {\n worker.terminationHandler = options.onTerminate;\n }\n\n worker.send('ready');\n};\n\nworker.emit = function (payload) {\n if (currentRequestId) {\n if (payload instanceof Transfer) {\n worker.send({\n id: currentRequestId,\n isEvent: true,\n payload: payload.message\n }, payload.transfer);\n return;\n }\n\n worker.send({\n id: currentRequestId,\n isEvent: true,\n payload\n });\n }\n};\n\nif (typeof exports !== 'undefined') {\n exports.add = worker.register;\n exports.emit = worker.emit;\n}\n","var environment = require('./environment');\n\n/**\n * Create a new worker pool\n * @param {string} [script]\n * @param {WorkerPoolOptions} [options]\n * @returns {Pool} pool\n */\nexports.pool = function pool(script, options) {\n var Pool = require('./Pool');\n\n return new Pool(script, options);\n};\n\n/**\n * Create a worker and optionally register a set of methods to the worker.\n * @param {Object} [methods]\n * @param {WorkerRegisterOptions} [options]\n */\nexports.worker = function worker(methods, options) {\n var worker = require('./worker');\n worker.add(methods, options);\n};\n\n/**\n * Sends an event to the parent worker pool.\n * @param {any} payload \n */\nexports.workerEmit = function workerEmit(payload) {\n var worker = require('./worker');\n worker.emit(payload);\n};\n\n/**\n * Create a promise.\n * @type {Promise} promise\n */\nexports.Promise = require('./Promise');\n\n/**\n * Create a transfer object.\n * @type {Transfer} transfer\n */\nexports.Transfer = require('./transfer');\n\nexports.platform = environment.platform;\nexports.isMainThread = environment.isMainThread;\nexports.cpus = environment.cpus;","var Sylvester = {}\n\nSylvester.Matrix = function () {}\n\nSylvester.Matrix.create = function (elements) {\n var M = new Sylvester.Matrix()\n return M.setElements(elements)\n}\n\nSylvester.Matrix.I = function (n) {\n var els = [],\n i = n,\n j\n while (i--) {\n j = n\n els[i] = []\n while (j--) {\n els[i][j] = i === j ? 1 : 0\n }\n }\n return Sylvester.Matrix.create(els)\n}\n\nSylvester.Matrix.prototype = {\n dup: function () {\n return Sylvester.Matrix.create(this.elements)\n },\n\n isSquare: function () {\n var cols = this.elements.length === 0 ? 0 : this.elements[0].length\n return this.elements.length === cols\n },\n\n toRightTriangular: function () {\n if (this.elements.length === 0) return Sylvester.Matrix.create([])\n var M = this.dup(),\n els\n var n = this.elements.length,\n i,\n j,\n np = this.elements[0].length,\n p\n for (i = 0; i < n; i++) {\n if (M.elements[i][i] === 0) {\n for (j = i + 1; j < n; j++) {\n if (M.elements[j][i] !== 0) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[i][p] + M.elements[j][p])\n }\n M.elements[i] = els\n break\n }\n }\n }\n if (M.elements[i][i] !== 0) {\n for (j = i + 1; j < n; j++) {\n var multiplier = M.elements[j][i] / M.elements[i][i]\n els = []\n for (p = 0; p < np; p++) {\n // Elements with column numbers up to an including the number of the\n // row that we're subtracting can safely be set straight to zero,\n // since that's the point of this routine and it avoids having to\n // loop over and correct rounding errors later\n els.push(\n p <= i ? 0 : M.elements[j][p] - M.elements[i][p] * multiplier\n )\n }\n M.elements[j] = els\n }\n }\n }\n return M\n },\n\n determinant: function () {\n if (this.elements.length === 0) {\n return 1\n }\n if (!this.isSquare()) {\n return null\n }\n var M = this.toRightTriangular()\n var det = M.elements[0][0],\n n = M.elements.length\n for (var i = 1; i < n; i++) {\n det = det * M.elements[i][i]\n }\n return det\n },\n\n isSingular: function () {\n return this.isSquare() && this.determinant() === 0\n },\n\n augment: function (matrix) {\n if (this.elements.length === 0) {\n return this.dup()\n }\n var M = matrix.elements || matrix\n if (typeof M[0][0] === 'undefined') {\n M = Sylvester.Matrix.create(M).elements\n }\n var T = this.dup(),\n cols = T.elements[0].length\n var i = T.elements.length,\n nj = M[0].length,\n j\n if (i !== M.length) {\n return null\n }\n while (i--) {\n j = nj\n while (j--) {\n T.elements[i][cols + j] = M[i][j]\n }\n }\n return T\n },\n\n inverse: function () {\n if (this.elements.length === 0) {\n return null\n }\n if (!this.isSquare() || this.isSingular()) {\n return null\n }\n var n = this.elements.length,\n i = n,\n j\n var M = this.augment(Sylvester.Matrix.I(n)).toRightTriangular()\n var np = M.elements[0].length,\n p,\n els,\n divisor\n var inverse_elements = [],\n new_element\n // Sylvester.Matrix is non-singular so there will be no zeros on the\n // diagonal. Cycle through rows from last to first.\n while (i--) {\n // First, normalise diagonal elements to 1\n els = []\n inverse_elements[i] = []\n divisor = M.elements[i][i]\n for (p = 0; p < np; p++) {\n new_element = M.elements[i][p] / divisor\n els.push(new_element)\n // Shuffle off the current row of the right hand side into the results\n // array as it will not be modified by later runs through this loop\n if (p >= n) {\n inverse_elements[i].push(new_element)\n }\n }\n M.elements[i] = els\n // Then, subtract this row from those above it to give the identity matrix\n // on the left hand side\n j = i\n while (j--) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[j][p] - M.elements[i][p] * M.elements[j][i])\n }\n M.elements[j] = els\n }\n }\n return Sylvester.Matrix.create(inverse_elements)\n },\n\n setElements: function (els) {\n var i,\n j,\n elements = els.elements || els\n if (elements[0] && typeof elements[0][0] !== 'undefined') {\n i = elements.length\n this.elements = []\n while (i--) {\n j = elements[i].length\n this.elements[i] = []\n while (j--) {\n this.elements[i][j] = elements[i][j]\n }\n }\n return this\n }\n var n = elements.length\n this.elements = []\n for (i = 0; i < n; i++) {\n this.elements.push([elements[i]])\n }\n return this\n },\n}\n\nmodule.exports = function (elements) {\n const mat = Sylvester.Matrix.create(elements).inverse()\n if (mat !== null) {\n return mat.elements\n } else {\n return null\n }\n}\n","import sha1 from 'js-sha1';\n\nenum SemanticType {\n\t// clefs\n\tClefG = 'ClefG',\n\tClefF = 'ClefF',\n\tClefC = 'ClefC',\n\n\t// noteheads\n\tNoteheadS0 = 'NoteheadS0',\n\tNoteheadS1 = 'NoteheadS1',\n\tNoteheadS2 = 'NoteheadS2',\n\tNoteheadS1stemU = 'NoteheadS1stemU',\n\tNoteheadS1stemD = 'NoteheadS1stemD',\n\tNoteheadS2stemU = 'NoteheadS2stemU',\n\tNoteheadS2stemD = 'NoteheadS2stemD',\n\n\tvline_Stem = 'vline_Stem',\n\n\t// flags\n\tFlag3 = 'Flag3',\n\n\t// beams\n\tBeamLeft = 'BeamLeft',\n\tBeamContinue = 'BeamContinue',\n\tBeamRight = 'BeamRight',\n\n\t// tremolos\n\tTremoloLeft = 'TremoloLeft',\n\tTremoloRight = 'TremoloRight',\n\tTremoloMiddle = 'TremoloMiddle',\n\n\t// dots (duration)\n\tDot = 'Dot',\n\n\t// rests\n\tRest0 = 'Rest0',\n\tRest1 = 'Rest1',\n\tRest2 = 'Rest2',\n\tRest3 = 'Rest3',\n\tRest4 = 'Rest4',\n\tRest5 = 'Rest5',\n\tRest6 = 'Rest6',\n\tRest0W = 'Rest0W', // capital 'R' in lilypond\n\tRestM1 = 'RestM1',\n\n\t// accidentals\n\tAccNatural = 'AccNatural',\n\tAccSharp = 'AccSharp',\n\tAccDoublesharp = 'AccDoublesharp',\n\tAccFlat = 'AccFlat',\n\tAccFlatflat = 'AccFlatflat',\n\n\t// volta\n\tvline_VoltaLeft = 'vline_VoltaLeft',\n\tvline_VoltaRight = 'vline_VoltaRight',\n\tVoltaLeft = 'VoltaLeft',\n\tVoltaRight = 'VoltaRight',\n\n\tVoltaAlternativeBegin = 'VoltaAlternativeBegin',\n\t//VoltaAlternativeEnd\t= \"VoltaAlternativeEnd\",\n\n\t// vertical bars\n\tBarMeasure = 'BarMeasure',\n\tvline_BarMeasure = 'vline_BarMeasure',\n\tvline_BarTerminal = 'vline_BarTerminal',\n\tvline_BarSegment = 'vline_BarSegment',\n\n\t// slur & tie\n\tSlurBegin = 'SlurBegin',\n\tSlurEnd = 'SlurEnd',\n\n\t// time signature\n\tTimesigC44 = 'TimesigC44',\n\tTimesigC22 = 'TimesigC22',\n\tTimesigZero = 'TimesigZero',\n\tTimesigOne = 'TimesigOne',\n\tTimesigTwo = 'TimesigTwo',\n\tTimesigThree = 'TimesigThree',\n\tTimesigFour = 'TimesigFour',\n\tTimesigFive = 'TimesigFive',\n\tTimesigSix = 'TimesigSix',\n\tTimesigSeven = 'TimesigSeven',\n\tTimesigEight = 'TimesigEight',\n\tTimesigNine = 'TimesigNine',\n\n\t// octave shifts\n\tOctaveShift8va = 'OctaveShift8va',\n\tOctaveShift8vb = 'OctaveShift8vb',\n\tOctaveShift8 = 'OctaveShift8',\n\tOctaveShift0 = 'OctaveShift0',\n\n\t// numbers\n\tZero = 'Zero',\n\tOne = 'One',\n\tTwo = 'Two',\n\tThree = 'Three',\n\tFour = 'Four',\n\tFive = 'Five',\n\tSix = 'Six',\n\tSeven = 'Seven',\n\tEight = 'Eight',\n\tNine = 'Nine',\n\n\t// dynamics\n\tf = 'f',\n\tp = 'p',\n\tm = 'm',\n\tn = 'n',\n\tr = 'r',\n\ts = 's',\n\tz = 'z',\n\n\tCrescendoBegin = 'CrescendoBegin',\n\tCrescendoEnd = 'CrescendoEnd',\n\tDecrescendoBegin = 'DecrescendoBegin',\n\tDecrescendoEnd = 'DecrescendoEnd',\n\n\t// scripts\n\tScriptFermata = 'ScriptFermata',\n\tScriptShortFermata = 'ScriptShortFermata',\n\tScriptSforzato = 'ScriptSforzato',\n\tScriptStaccato = 'ScriptStaccato',\n\tScriptStaccatissimo = 'ScriptStaccatissimo',\n\tScriptTurn = 'ScriptTurn',\n\tScriptTrill = 'ScriptTrill',\n\tScriptSegno = 'ScriptSegno',\n\tScriptCoda = 'ScriptCoda',\n\tScriptArpeggio = 'ScriptArpeggio',\n\tScriptPrall = 'ScriptPrall',\n\tScriptMordent = 'ScriptMordent',\n\tScriptMarcato = 'ScriptMarcato',\n\tScriptTenuto = 'ScriptTenuto',\n\tScriptPortato = 'ScriptPortato',\n\n\t// pedal\n\tPedalStar = 'PedalStar',\n\tPedalPed = 'PedalPed',\n\n\t// additional annotation\n\tKeyAcc = 'KeyAcc',\n\tTempoNotehead = 'TempoNotehead',\n\tGraceNotehead = 'GraceNotehead',\n\tSignLined = 'SignLined',\n\tSignInterval = 'SignInterval',\n\n\trect_Text = 'rect_Text',\n\trect_Lyric = 'rect_Lyric',\n}\n\nconst glyphSemanticMapping: { [key: string]: string } = {\n\t'rests.1': 'Rest1',\n\t'rests.0o': 'Rest0',\n\t'rests.1o': 'Rest1',\n\t'rests.M1': 'RestM1',\n\t'rests.2': 'Rest2',\n\t'rests.3': 'Rest3',\n\t'rests.4': 'Rest4',\n\t'rests.5': 'Rest5',\n\t'rests.6': 'Rest6',\n\t'accidentals.sharp': 'AccSharp',\n\t'accidentals.doublesharp': 'AccDoublesharp',\n\t'accidentals.natural': 'AccNatural',\n\t'accidentals.flat': 'AccFlat',\n\t'accidentals.flatflat': 'AccFlatflat',\n\t'dots.dot': 'Dot',\n\t'scripts.ufermata': 'ScriptFermata',\n\t'scripts.dfermata': 'ScriptFermata',\n\t'scripts.ushortfermata': 'ScriptShortFermata',\n\t'scripts.dshortfermata': 'ScriptShortFermata',\n\t'scripts.staccato': 'ScriptStaccato',\n\t'scripts.ustaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.dstaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.turn': 'ScriptTurn',\n\t'scripts.trill': 'ScriptTrill',\n\t'scripts.segno': 'ScriptSegno',\n\t'scripts.coda': 'ScriptCoda',\n\t'scripts.arpeggio': 'ScriptArpeggio',\n\t'scripts.prall': 'ScriptPrall',\n\t'scripts.mordent': 'ScriptMordent',\n\t'scripts.umarcato': 'ScriptMarcato',\n\t'scripts.dmarcato': 'ScriptMarcato',\n\t'scripts.uportato': 'ScriptPortato',\n\t'scripts.dportato': 'ScriptPortato',\n\t'scripts.tenuto': 'ScriptTenuto',\n\t'scripts.sforzato': 'ScriptSforzato',\n\t'clefs.C': 'ClefC',\n\t'clefs.F': 'ClefF',\n\t'clefs.G': 'ClefG',\n\t'clefs.F_change': 'ClefF',\n\t'clefs.G_change': 'ClefG',\n\t'timesig.C44': 'TimesigC44',\n\t'timesig.C22': 'TimesigC22',\n\t'pedal.*': 'PedalStar',\n\t'pedal.Ped': 'PedalPed',\n\t'noteheads.s0': 'NoteheadS0',\n\t'noteheads.s1': 'NoteheadS1',\n\t'noteheads.s2': 'NoteheadS2',\n\tf: 'f',\n\tm: 'm',\n\tp: 'p',\n\tr: 'r',\n\ts: 's',\n\tz: 'z',\n};\n\nconst semanticPriorities: { [key: string]: number } = {\n\tClefG: 0,\n\tClefF: 0,\n\tTimesigFour: 0,\n\tTimesigThree: 0,\n\tTimesigTwo: 0,\n\tNoteheadS0: 0,\n\tNoteheadS1: 0,\n\tNoteheadS2: 0,\n\tDot: 0,\n\tvline_BarMeasure: 0,\n\tvline_Stem: 0,\n\tFlag3: 0,\n\n\tTimesigC44: 1,\n\tTimesigC22: 1,\n\tTimesigEight: 1,\n\tTimesigSix: 1,\n\tAccNatural: 1,\n\tAccSharp: 1,\n\tAccFlat: 1,\n\tKeyAcc: 1,\n\tRest0: 1,\n\tRest1: 1,\n\tRest2: 1,\n\tRest3: 1,\n\tRest4: 1,\n\tOctaveShift8: 1,\n\tOctaveShift0: 1,\n\n\tAccDoublesharp: 2,\n\tAccFlatflat: 2,\n\tTimesigOne: 2,\n\tTimesigNine: 2,\n\tRest5: 2,\n\tRest6: 2,\n\tSlurBegin: 2,\n\tSlurEnd: 2,\n\tVoltaLeft: 2,\n\tVoltaRight: 2,\n\t//VoltaAlternativeBegin: 2,\n\tvline_BarTerminal: 2,\n\tvline_BarSegment: 2,\n\tTempoNotehead: 2,\n\tGraceNotehead: 2,\n\tSignLined: 2,\n\tSignInterval: 2,\n\tBeamLeft: 2,\n\tBeamRight: 2,\n\tBeamContinue: 2,\n\tTremoloLeft: 2,\n\tTremoloRight: 2,\n\tTremoloMiddle: 2,\n\tStemTip: 2,\n\tStemHead: 2,\n\n\t//Rest0W: 3,\n\tf: 3,\n\tp: 3,\n\tm: 3,\n\tScriptFermata: 3,\n\tScriptSforzato: 3,\n\tScriptStaccato: 3,\n\tScriptStaccatissimo: 3,\n\tScriptTurn: 3,\n\tScriptTrill: 3,\n\tScriptSegno: 3,\n\tScriptCoda: 3,\n\tScriptArpeggio: 3,\n\tScriptPrall: 3,\n\tScriptMordent: 3,\n\tScriptTenuto: 3,\n\tPedalStar: 3,\n\tPedalPed: 3,\n\tTimesigFive: 3,\n\tTimesigSeven: 3,\n\tTimesigZero: 3,\n\tOne: 3,\n\tTwo: 3,\n\tThree: 3,\n\tFour: 3,\n\tFive: 3,\n\trect_Text: 3,\n\trect_Lyric: 3,\n\tCrescendoBegin: 3,\n\tCrescendoEnd: 3,\n\tDecrescendoBegin: 3,\n\tDecrescendoEnd: 3,\n\n\tRestM1: 4,\n\tClefC: 4,\n\tScriptShortFermata: 4,\n\tScriptMarcato: 4,\n\tScriptPortato: 4,\n\ts: 4,\n\tr: 4,\n\tz: 4,\n\tZero: 4,\n\tSix: 4,\n\tSeven: 4,\n\tEight: 4,\n\tNine: 4,\n};\n\ninterface Position {\n\tx?: number;\n\ty?: number;\n}\n\nconst NOTEHEAD_WIDTHS = {\n\tNoteheadS0: 0.913 * 2,\n\tNoteheadS1: 0.632 * 2,\n\tNoteheadS2: 0.599 * 2,\n};\n\nconst glyphCenters: { [key: string]: Position } = {\n\t//\"clefs.C\": { x: 1.3 },\n\t'clefs.F': { x: 1.06 },\n\t'clefs.G': { x: 1.3 },\n\t'clefs.F_change': { x: 0.87 },\n\t'clefs.G_change': { x: 1.07 },\n\t'timesig.C44': { x: 0.9 },\n\t'timesig.C22': { x: 0.9 },\n\tzero: { x: 0.7, y: -1 },\n\tone: { x: 0.7, y: -1 },\n\ttwo: { x: 0.7, y: -1 },\n\tthree: { x: 0.7, y: -1 },\n\tfour: { x: 0.7, y: -1 },\n\tfive: { x: 0.7, y: -1 },\n\tsix: { x: 0.7, y: -1 },\n\tseven: { x: 0.7, y: -1 },\n\teight: { x: 0.7, y: -1 },\n\tnine: { x: 0.7, y: -1 },\n\t'accidentals.sharp': { x: 0.55 },\n\t'accidentals.doublesharp': { x: 0.5 },\n\t'accidentals.natural': { x: 0.3 },\n\t'accidentals.flat': { x: 0.3 },\n\t'accidentals.flatflat': { x: 0.5 },\n\t'noteheads.s0': { x: NOTEHEAD_WIDTHS.NoteheadS0 / 2 },\n\t'noteheads.s1': { x: NOTEHEAD_WIDTHS.NoteheadS1 / 2 },\n\t'noteheads.s2': { x: NOTEHEAD_WIDTHS.NoteheadS2 / 2 },\n\t'rests.0': { x: 0.75, y: 1 },\n\t'rests.1': { x: 0.75 },\n\t'rests.0o': { x: 0.75, y: 1 },\n\t'rests.1o': { x: 0.75 },\n\t'rests.M1': { x: 0.75, y: 1 },\n\t'rests.2': { x: 0.5 },\n\t'rests.3': { x: 0.5 },\n\t'rests.4': { x: 0.5 },\n\t'rests.5': { x: 0.5 },\n\t'rests.6': { x: 0.5 },\n\tf: { x: 0.6, y: -0.5 },\n\tm: { x: 0.9, y: -0.5 },\n\tp: { x: 0.5, y: -0.5 },\n\tr: { x: 0.5, y: -0.5 },\n\ts: { x: 0.5, y: -0.5 },\n\tz: { x: 0.5, y: -0.5 },\n\t'scripts.trill': { y: -0.5 },\n\t'scripts.segno': { x: 0, y: 0 },\n\t'scripts.coda': { x: 0, y: 0 },\n\t'scripts.arpeggio': { x: 0.5, y: -0.5 },\n\t'pedal.*': { x: 0.78, y: -0.78 },\n\t'pedal.Ped': { x: 1.6, y: -0.7 },\n};\n\ninterface Point {\n\t// in staff unit coordinates\n\tx: number;\n\ty: number;\n\n\tpivotX?: number;\n\n\t// for prediction\n\tconfidence?: number;\n\n\t// sheet token index in page\n\tindex?: number;\n\ttag?: string;\n\n\textension?: {\n\t\ty1?: number;\n\t\ty2?: number;\n\n\t\thref?: string;\n\t\twidth?: number;\n\t\theight?: number;\n\n\t\ttext?: string;\n\t\ttheta?: number;\n\t\ttype?: string;\n\t\ttextFeature?: Record;\n\t};\n}\n\ninterface SemanticPoint extends Point {\n\tid?: string;\n\tsemantic: SemanticType;\n}\n\nconst ONE_D_SEMANTICS = [\n\t'OctaveShift8va',\n\t'OctaveShift8vb',\n\t'OctaveShift8',\n\t'OctaveShift0',\n\t'vline_VoltaLeft',\n\t'vline_VoltaRight',\n\t'VoltaAlternativeBegin',\n\t'vline_BarMeasure',\n\t'vline_BarTerminal',\n\t'vline_BarSegment',\n];\n\nconst SYSTEM_SEMANTIC_TYPES = [\n\tSemanticType.BarMeasure,\n\tSemanticType.vline_BarMeasure,\n\tSemanticType.vline_BarTerminal,\n\tSemanticType.vline_BarSegment,\n\tSemanticType.vline_VoltaLeft,\n\tSemanticType.vline_VoltaRight,\n\tSemanticType.VoltaAlternativeBegin,\n];\n\nconst st = SemanticType;\nconst CONFLICTION_GROUPS = [\n\t[st.NoteheadS0, st.NoteheadS1, st.NoteheadS2],\n\t[st.Zero, st.One, st.Two, st.Three, st.Four, st.Five, st.Six, st.Seven, st.Eight, st.Nine, st.ScriptStaccatissimo],\n\t[\n\t\tst.TimesigZero,\n\t\tst.TimesigOne,\n\t\tst.TimesigTwo,\n\t\tst.TimesigThree,\n\t\tst.TimesigFour,\n\t\tst.TimesigFive,\n\t\tst.TimesigSix,\n\t\tst.TimesigSeven,\n\t\tst.TimesigEight,\n\t\tst.TimesigNine,\n\t],\n\t[st.Rest0, st.Rest1, st.Rest2, st.Rest3, st.Rest4, st.Rest5, st.Rest6, st.Rest0W, st.RestM1],\n\t[st.SignInterval, st.SignLined],\n\t[st.BeamLeft, st.BeamContinue, st.BeamRight],\n];\n\nconst STAMP_SEMANTICS = [\n\tst.ClefG,\n\tst.ClefF,\n\tst.ClefC,\n\tst.NoteheadS0,\n\tst.NoteheadS1,\n\tst.NoteheadS2,\n\tst.Dot,\n\tst.Rest0,\n\tst.Rest1,\n\tst.Rest2,\n\tst.Rest3,\n\tst.Rest4,\n\tst.Rest5,\n\tst.Rest6,\n\tst.RestM1,\n\tst.AccNatural,\n\tst.AccSharp,\n\tst.AccDoublesharp,\n\tst.AccFlat,\n\tst.AccFlatflat,\n\tst.TimesigC44,\n\tst.TimesigC22,\n\tst.TimesigZero,\n\tst.TimesigOne,\n\tst.TimesigTwo,\n\tst.TimesigThree,\n\tst.TimesigFour,\n\tst.TimesigFive,\n\tst.TimesigSix,\n\tst.TimesigSeven,\n\tst.TimesigEight,\n\tst.TimesigNine,\n\tst.One,\n\tst.Two,\n\tst.Three,\n\tst.Four,\n\tst.Five,\n\tst.OctaveShift8,\n\t//st.OctaveShift15,\n\tst.OctaveShift0,\n\tst.f,\n\tst.p,\n\tst.m,\n\tst.n,\n\tst.r,\n\tst.s,\n\tst.z,\n\tst.ScriptFermata,\n\tst.ScriptShortFermata,\n\tst.ScriptSforzato,\n\tst.ScriptStaccato,\n\tst.ScriptStaccatissimo,\n\tst.ScriptTurn,\n\tst.ScriptTrill,\n\tst.ScriptSegno,\n\tst.ScriptCoda,\n\tst.ScriptArpeggio,\n\tst.ScriptPrall,\n\tst.ScriptMordent,\n\tst.ScriptMarcato,\n\tst.ScriptTenuto,\n\tst.ScriptPortato,\n\tst.PedalStar,\n\tst.PedalPed,\n];\n\n// [cx, cy, width, height]\nconst STAMP_RECTS = {\n\tClefG: [-0.0625, -1.125, 3.6, 8.6],\n\tClefF: [0.25, 0.5625, 3.6, 3.8],\n\tClefC: [0.25, 0, 3.25, 4.5],\n\tNoteheadS0: [0.0625, 0, 2.55, 1.4],\n\tNoteheadS1: [0.0625, 0, 1.8, 1.4],\n\tNoteheadS2: [0.0625, -0.0625, 1.65, 1.35],\n\tDot: [0.25, 0, 0.6, 0.6],\n\tRest0: [0, -0.75, 3.25, 0.9],\n\tRest1: [0, -0.25, 3.25, 0.9],\n\tRest2: [-0.0625, -0.1875, 1.6, 3.375],\n\tRest3: [0, 0.0625, 1.2, 2.25],\n\tRest4: [0.0625, 0.5625, 1.65, 3.375],\n\tRest5: [0.0625, 0.0625, 1.95, 4.375],\n\tRest6: [0.0625, 0.5625, 1.95, 5.375],\n\tRestM1: [-0.4375, -1.5, 0.75, 1.2],\n\tAccNatural: [0, 0, 0.9, 3.5],\n\tAccSharp: [0, 0, 1.5, 3.5],\n\tAccDoublesharp: [0, 0, 1.5, 1.5],\n\tAccFlat: [0, -0.5625, 1.2, 3.125],\n\tAccFlatflat: [0.1875, -0.5625, 1.95, 3.125],\n\tTimesigC44: [-0.0625, 0, 2.25, 2.3],\n\tTimesigC22: [-0.0625, 0, 2.25, 3.2],\n\tTimesigZero: [0, 0, 1.8, 2.2],\n\tTimesigOne: [-0.125, 0, 1.5, 2.2],\n\tTimesigTwo: [0, 0, 2.2, 2.2],\n\tTimesigThree: [-0.0625, 0, 1.9, 2.4],\n\tTimesigFour: [0.0625, 0, 1.95, 2.2],\n\tTimesigFive: [0, 0, 1.8, 2.3],\n\tTimesigSix: [0, 0, 2.0, 2.4],\n\tTimesigSeven: [0, 0, 1.8, 2.2],\n\tTimesigEight: [0, 0, 1.9, 2.2],\n\tTimesigNine: [0, 0, 1.9, 2.2],\n\tOne: [-0.0625, 0, 0.75, 1.6],\n\tTwo: [0, 0, 1.2, 1.6],\n\tThree: [0, 0, 1.2, 1.6],\n\tFour: [0, 0, 1.2, 1.6],\n\tFive: [0, 0, 1.2, 1.6],\n\tOctaveShift8: [2.125, -0.1875, 4.75, 3.6],\n\tOctaveShift0: [-0.4, 0, 1.8, 4.2],\n\tf: [0.0625, -0.125, 2.55, 3],\n\tp: [-0.0625, 0.25, 2.55, 2.1],\n\tm: [-0.125, -0.0625, 2.4, 1.35],\n\tn: [-0.3125, -0.0625, 1.95, 1.35],\n\tr: [0, -0.125, 1.5, 1.5],\n\ts: [0, -0.0625, 1.2, 1.35],\n\tz: [0.0625, 0, 1.35, 1.5],\n\tScriptFermata: [0, 0, 3.25, 3.9],\n\tScriptShortFermata: [0, 0, 2.4, 4.95],\n\tScriptSforzato: [-0.0625, 0, 2.5, 1.2],\n\tScriptStaccato: [0, -0.0625, 0.6, 0.45],\n\tScriptStaccatissimo: [0, 0, 1.2, 2.6],\n\tScriptTurn: [0, 0, 2.7, 1.5],\n\tScriptTrill: [-0.125, -0.5, 3, 2.7],\n\tScriptSegno: [0, 0, 2.4, 3.5],\n\tScriptCoda: [0, 0, 2.7, 3.25],\n\tScriptArpeggio: [-0.0625, 0, 1.05, 1.8],\n\tScriptPrall: [0, 0, 2.4, 1.2],\n\tScriptMordent: [0, 0, 2.4, 1.5],\n\tScriptMarcato: [0, 0, 1.2, 2.475],\n\tScriptTenuto: [0, -0.0625, 1.5, 0.15],\n\tScriptPortato: [0, 0, 1.5, 1.65],\n\tPedalStar: [0, 0, 3.2, 3.2],\n\tPedalPed: [0, -0.25, 4.7, 2.4],\n};\n\nconst hashSemanticPoint = (systemIndex: number, staffIndex: number, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x * 10);\n\tconst y = Math.round(point.y * 10);\n\tconst source = `${systemIndex}|${staffIndex}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nconst hashPageSemanticPoint = (pageName: string, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x);\n\tconst y = Math.round(point.y);\n\tconst source = `p-${pageName}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nexport {\n\tSemanticType,\n\tglyphSemanticMapping,\n\tsemanticPriorities,\n\tPoint,\n\tSemanticPoint,\n\tNOTEHEAD_WIDTHS,\n\tglyphCenters,\n\tONE_D_SEMANTICS,\n\tSYSTEM_SEMANTIC_TYPES,\n\tCONFLICTION_GROUPS,\n\tSTAMP_SEMANTICS,\n\tSTAMP_RECTS,\n\thashSemanticPoint,\n\thashPageSemanticPoint,\n};\n","/*\n * [js-sha1]{@link https://github.com/emn178/js-sha1}\n *\n * @version 0.6.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function() {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.JS_SHA1_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.JS_SHA1_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n var createOutputMethod = function (outputType) {\n return function (message) {\n return new Sha1(true).update(message)[outputType]();\n };\n };\n\n var createMethod = function () {\n var method = createOutputMethod('hex');\n if (NODE_JS) {\n method = nodeWrap(method);\n }\n method.create = function () {\n return new Sha1();\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type);\n }\n return method;\n };\n\n var nodeWrap = function (method) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash('sha1').update(message, 'utf8').digest('hex');\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (message.length === undefined) {\n return method(message);\n }\n return crypto.createHash('sha1').update(new Buffer(message)).digest('hex');\n };\n return nodeMethod;\n };\n\n function Sha1(sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n this.h0 = 0x67452301;\n this.h1 = 0xEFCDAB89;\n this.h2 = 0x98BADCFE;\n this.h3 = 0x10325476;\n this.h4 = 0xC3D2E1F0;\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n }\n\n Sha1.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString = typeof(message) !== 'string';\n if (notString && message.constructor === root.ArrayBuffer) {\n message = new Uint8Array(message);\n }\n var code, index = 0, i, length = message.length || 0, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if(notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha1.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha1.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4;\n var f, j, t, blocks = this.blocks;\n\n for(j = 16; j < 80; ++j) {\n t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16];\n blocks[j] = (t << 1) | (t >>> 31);\n }\n\n for(j = 0; j < 20; j += 5) {\n f = (b & c) | ((~b) & d);\n t = (a << 5) | (a >>> 27);\n e = t + f + e + 1518500249 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = (a & b) | ((~a) & c);\n t = (e << 5) | (e >>> 27);\n d = t + f + d + 1518500249 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = (e & a) | ((~e) & b);\n t = (d << 5) | (d >>> 27);\n c = t + f + c + 1518500249 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = (d & e) | ((~d) & a);\n t = (c << 5) | (c >>> 27);\n b = t + f + b + 1518500249 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = (c & d) | ((~c) & e);\n t = (b << 5) | (b >>> 27);\n a = t + f + a + 1518500249 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n for(; j < 40; j += 5) {\n f = b ^ c ^ d;\n t = (a << 5) | (a >>> 27);\n e = t + f + e + 1859775393 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = a ^ b ^ c;\n t = (e << 5) | (e >>> 27);\n d = t + f + d + 1859775393 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = e ^ a ^ b;\n t = (d << 5) | (d >>> 27);\n c = t + f + c + 1859775393 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = d ^ e ^ a;\n t = (c << 5) | (c >>> 27);\n b = t + f + b + 1859775393 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = c ^ d ^ e;\n t = (b << 5) | (b >>> 27);\n a = t + f + a + 1859775393 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n for(; j < 60; j += 5) {\n f = (b & c) | (b & d) | (c & d);\n t = (a << 5) | (a >>> 27);\n e = t + f + e - 1894007588 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = (a & b) | (a & c) | (b & c);\n t = (e << 5) | (e >>> 27);\n d = t + f + d - 1894007588 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = (e & a) | (e & b) | (a & b);\n t = (d << 5) | (d >>> 27);\n c = t + f + c - 1894007588 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = (d & e) | (d & a) | (e & a);\n t = (c << 5) | (c >>> 27);\n b = t + f + b - 1894007588 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = (c & d) | (c & e) | (d & e);\n t = (b << 5) | (b >>> 27);\n a = t + f + a - 1894007588 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n for(; j < 80; j += 5) {\n f = b ^ c ^ d;\n t = (a << 5) | (a >>> 27);\n e = t + f + e - 899497514 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = a ^ b ^ c;\n t = (e << 5) | (e >>> 27);\n d = t + f + d - 899497514 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = e ^ a ^ b;\n t = (d << 5) | (d >>> 27);\n c = t + f + c - 899497514 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = d ^ e ^ a;\n t = (c << 5) | (c >>> 27);\n b = t + f + b - 899497514 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = c ^ d ^ e;\n t = (b << 5) | (b >>> 27);\n a = t + f + a - 899497514 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n };\n\n Sha1.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n return HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F];\n };\n\n Sha1.prototype.toString = Sha1.prototype.hex;\n\n Sha1.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n return [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF\n ];\n };\n\n Sha1.prototype.array = Sha1.prototype.digest;\n\n Sha1.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(20);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n return buffer;\n };\n\n var exports = createMethod();\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha1 = exports;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","import { Fraction, Pitch, Matrix2x3 } from './interfaces';\nimport { SemanticPoint, CONFLICTION_GROUPS } from './semanticPoint';\n\ntype Point2D = { x: number; y: number };\ntype PointSegment = Point2D[];\n\nconst POINT_CONFLICTION_DISTANCE = 0.4;\n\nconst roundNumber = (x: number, precision: number, min = -Infinity): number => Math.max(Math.round(x / precision) * precision, min);\n\nconst distance2D = (p1: Point2D, p2: Point2D): number => {\n\tconst dx = p1.x - p2.x;\n\tconst dy = p1.y - p2.y;\n\n\treturn Math.sqrt(dx * dx + dy * dy);\n};\n\nconst trans23 = (point: Point2D, matrix: Matrix2x3): Point2D => ({\n\tx: matrix[0] * point.x + matrix[2] * point.y + matrix[4],\n\ty: matrix[1] * point.x + matrix[3] * point.y + matrix[5],\n});\n\nconst gcd = (a: number, b: number): number => {\n\tif (!(Number.isInteger(a) && Number.isInteger(b))) {\n\t\tconsole.error('non-integer gcd:', a, b);\n\t\treturn 1;\n\t}\n\n\treturn b === 0 ? a : gcd(b, a % b);\n};\n\nconst frac = (numerator: number, denominator: number): Fraction => ({ numerator, denominator });\n\nconst reducedFraction = (n: number, d: number): Fraction => {\n\tn = Math.round(n);\n\td = Math.round(d);\n\n\tconst g = n !== 0 ? gcd(n, d) : d;\n\n\treturn frac(n / g, d / g);\n};\n\nconst printFraction = (f: Fraction): string => `${f.numerator}/${f.denominator}`;\n\nconst fractionMul = (value: number, fraction: Fraction): number => (fraction ? (value * fraction.numerator) / fraction.denominator : value);\n\nconst segmentPoints = (points: Point2D[], axis: 'x' | 'y'): PointSegment[] => {\n\tconst sorted = [...points].sort((p1, p2) => p1[axis] - p2[axis]);\n\n\tlet seg: Point2D[] = null;\n\tlet lastP = null;\n\n\treturn sorted.reduce((segments, p, i) => {\n\t\tif (!lastP) {\n\t\t\tlastP = p;\n\t\t\tseg = [p];\n\t\t} else {\n\t\t\tif (p[axis] - lastP[axis] < POINT_CONFLICTION_DISTANCE) seg.push(p);\n\t\t\telse {\n\t\t\t\tif (seg.length > 1) segments.push(seg);\n\t\t\t\tlastP = p;\n\t\t\t\tseg = [p];\n\t\t\t}\n\t\t}\n\n\t\tif (seg.length > 1 && i === sorted.length - 1) segments.push(seg);\n\n\t\treturn segments;\n\t}, []);\n};\n\nconst filterWeekPoints = (points: SemanticPoint[]): SemanticPoint[] => {\n\t//console.log(\"filterWeekPoints:\", points.map(p => `${p.semantic}, ${p.x}, ${p.y}`));\n\t//console.table(points.map(p => ({ ...p })));\n\n\tif (points.length <= 1) return [];\n\n\tlet rests = points.slice(1);\n\tconst group = CONFLICTION_GROUPS.find((group) => group.includes(points[0].semantic));\n\tif (!group) return filterWeekPoints(rests);\n\n\tconst weeks = rests.filter((p) => group.includes(p.semantic));\n\trests = rests.filter((p) => !group.includes(p.semantic));\n\n\treturn [...weeks, ...filterWeekPoints(rests)];\n};\n\nconst solveOverlapping = (points: SemanticPoint[]): SemanticPoint[] => {\n\tconst pset = new Set(points);\n\n\tconst xClusters = segmentPoints(points, 'x');\n\tconst clusters: SemanticPoint[][] = [].concat(...xClusters.map((c) => segmentPoints(c, 'y')));\n\tclusters.forEach((ps) => ps.sort((p1, p2) => p2.confidence - p1.confidence));\n\n\tclusters.forEach((ps) => {\n\t\tfilterWeekPoints(ps).forEach((p) => pset.delete(p));\n\t});\n\n\treturn Array.from(pset);\n};\n\nconst GROUP_N_TO_PITCH = [0, 2, 4, 5, 7, 9, 11];\nconst MIDDLE_C = 60;\n\nconst mod7 = (x) => {\n\tlet y = x % 7;\n\twhile (y < 0) y += 7;\n\n\treturn y;\n};\n\nconst mod12 = (x) => {\n\tlet y = x % 12;\n\twhile (y < 0) y += 12;\n\n\treturn y;\n};\n\nconst noteToPitch = ({ note, alter }: Pitch): number => {\n\tconst group = Math.floor(note / 7);\n\tconst gn = mod7(note);\n\n\treturn MIDDLE_C + group * 12 + GROUP_N_TO_PITCH[gn] + alter;\n};\n\nconst argmax = (data: number[]): number => {\n\tconst max = Math.max(...data);\n\n\treturn data.indexOf(max);\n};\n\nexport {\n\tPoint2D,\n\troundNumber,\n\tdistance2D,\n\ttrans23,\n\tsolveOverlapping,\n\tgcd,\n\tfrac,\n\treducedFraction,\n\tprintFraction,\n\tfractionMul,\n\tGROUP_N_TO_PITCH,\n\tMIDDLE_C,\n\tmod7,\n\tmod12,\n\tnoteToPitch,\n\targmax,\n};\n","interface Logger {\n\tdebug(message?: any, ...optionalParams: any[]): void;\n\tinfo(message?: any, ...optionalParams: any[]): void;\n\twarn(message?: any, ...optionalParams: any[]): void;\n\tgroup(...label: any[]): void;\n\tgroupCollapsed(...label: any[]): void;\n\tgroupEnd(): void;\n\tassert(expr: boolean, ...optionalParams: any[]): void;\n}\n\nclass DummyLogger implements Logger {\n\tdebug(..._: any[]): void {}\n\tgroup(..._: any[]): void {}\n\tgroupCollapsed(..._: any[]): void {}\n\tgroupEnd(): void {}\n\tinfo(..._: any[]): void {}\n\twarn(..._: any[]): void {}\n\tassert(..._: any[]): void {}\n}\n\nexport { Logger, DummyLogger };\n","import matrixInverse from 'matrix-inverse';\n\nimport { Fraction } from './interfaces';\nimport { fractionMul, reducedFraction, roundNumber } from './utils';\nimport { Logger, DummyLogger } from './logger';\n\ntype Matrix = number[][];\ntype EventID = number;\ntype Time = number;\ntype EventSet = Set;\ntype Equation = number[];\n\nconst EOM = -1; // end event id of measure\n\n//const GREAT_NUMBER = 16 * 9 * 5 * 7 * 11 * 13 * 17 * 19 * 23;\nconst GREAT_NUMBER = 1920;\n\nconst DURATION_MULTIPLIER = 128 * 3 * 5 * 7 * 11 * 13;\n\nconst floatToFrac = (x: number): Fraction => {\n\tconst n = Math.round(x * GREAT_NUMBER);\n\n\treturn reducedFraction(n, GREAT_NUMBER);\n};\n\nconst floatToTimeWarp = (x: number): Fraction => {\n\tif (x === 1) return null;\n\n\treturn floatToFrac(x);\n};\n\ninterface Stage {\n\tevents: EventID[];\n\tindex?: number;\n\ttick?: Time;\n}\n\nenum ActionType {\n\tPLACE,\n\tVERTICAL,\n\tHORIZONTAL,\n}\n\nclass Action {\n\ttype: ActionType;\n\te1: EventID;\n\te2?: EventID;\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tstatic P(e: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.PLACE,\n\t\t\te1: e,\n\t\t});\n\t}\n\n\tstatic V(e1: EventID, e2: EventID, order: number = 1): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.VERTICAL,\n\t\t\te1: order > 0 ? e1 : e2,\n\t\t\te2: order > 0 ? e2 : e1,\n\t\t});\n\t}\n\n\tstatic H(e1: EventID, e2: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.HORIZONTAL,\n\t\t\te1,\n\t\t\te2,\n\t\t});\n\t}\n\n\tget id(): string {\n\t\tswitch (this.type) {\n\t\t\tcase ActionType.PLACE:\n\t\t\t\treturn this.e1.toString();\n\n\t\t\tcase ActionType.VERTICAL:\n\t\t\t\treturn `${this.e1}|${this.e2}`;\n\n\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\treturn `${this.e1}-${this.e2 >= 0 ? this.e2 : '.'}`;\n\t\t}\n\t}\n\n\tget events(): EventID[] {\n\t\treturn [this.e1, this.e2].filter(Number.isFinite);\n\t}\n}\n\ninterface Quota {\n\tcredits: number;\n}\n\ninterface BasicEvent {\n\tid: EventID;\n\tconfidence: number;\n\tshrinkness: number; // the possibility of time warp\n\tx: number;\n\tstaff?: number;\n\tduration: Time;\n}\n\ninterface Event extends BasicEvent {\n\tlowWarp: number;\n}\n\ninterface EventResult {\n\tid: EventID;\n\ttick: Time;\n\tendTick: Time;\n\ttickGroup: number;\n\ttimeWarp?: Fraction;\n}\n\ninterface Environment {\n\tevents: BasicEvent[];\n\texpectedDuration: Time;\n\tmeasureShrinkness: number;\n\tendX: number;\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n}\n\ninterface Solution {\n\tevents: EventResult[];\n\tvoices: EventID[][];\n\tduration: number;\n\n\tloss?: number;\n\tactions?: string;\n\tcredits?: number;\n\ttimes?: number;\n}\n\ninterface Status {\n\tactionAccessing: Map;\n\teventMap: { [id: number]: Event };\n\teventTendencies: number[];\n\tmatrixH: Matrix; // matrix N+1 x N\t\t[right][left]\n\tmatrixV: Matrix; // matrix N x N\n}\n\ninterface NodeBranch {\n\taction: Action;\n\tpossibility: number;\n}\n\ntype Path = EventID[];\n\ninterface InbalanceEquations {\n\tones: boolean[];\n\tinbalances: Equation[];\n}\n\ninterface SolverOptions {\n\tquota?: number;\n\tlogger?: Logger;\n}\n\nclass StageMatrix {\n\tmatrix: EventSet[][];\n\n\tstatic fromNode(node: PathNode, status: Status): StageMatrix {\n\t\tconst matrix = Array(node.stages.length)\n\t\t\t.fill(null)\n\t\t\t.map(() =>\n\t\t\t\tArray(node.stages.length)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => new Set())\n\t\t\t);\n\n\t\tnode.actions\n\t\t\t.filter((action) => action.type === ActionType.HORIZONTAL)\n\t\t\t.forEach((action) => {\n\t\t\t\tconst stage1 = node.stages.findIndex((stage) => stage.events.includes(action.e1));\n\t\t\t\tconst stage2 = node.stages.findIndex((stage) => stage.events.includes(action.e2));\n\t\t\t\tconsole.assert(stage1 >= 0 && stage2 >= 0, 'invalid stages for H action:', node.id, node.stages, action);\n\n\t\t\t\tmatrix[stage1][stage2].add(action.e1);\n\t\t\t});\n\t\tmatrix[0][node.stages.length - 1].add(0); // the entire measure edge\n\n\t\tconst stagedEvents = node.stagedEvents;\n\t\tconst endHs = status.matrixH[status.matrixH.length - 1].filter((_, i) => !stagedEvents.has(i));\n\t\tconst endHP = Math.max(0, Math.max(...endHs) - 0.01);\n\n\t\tconst hActions = node.actions.filter((action) => action.type === ActionType.HORIZONTAL);\n\n\t\tconst pendingHeads = Object.keys(status.eventMap)\n\t\t\t.map(Number)\n\t\t\t.filter((eid) => !hActions.find((action) => action.e2 === eid));\n\n\t\t// edges to end stage\n\t\tnode.stages.forEach((stage) => {\n\t\t\tstage.events.forEach((eid) => {\n\t\t\t\tif (eid > 0) {\n\t\t\t\t\tconst act = hActions.find((action) => action.e1 === eid);\n\t\t\t\t\tif (!act && status.matrixH[status.matrixH.length - 1][eid] >= endHP) {\n\t\t\t\t\t\tif (!pendingHeads.some((id) => status.matrixH[id][eid] > 0)) matrix[stage.index][node.stages.length - 1].add(eid);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn new StageMatrix({ matrix });\n\t}\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tpathOf(x: number, y: number, target: number, ei: number = 0): Path {\n\t\tif (this.matrix[x][y].size) {\n\t\t\tconst eid = [...this.matrix[x][y]][ei];\n\t\t\tif (y === target) return [eid];\n\n\t\t\tfor (let yy = y + 1; yy <= target; ++yy) {\n\t\t\t\tconst sub = this.pathOf(y, yy, target);\n\t\t\t\tif (sub) return [eid, ...sub];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfindDoublePath(s1: number, s2: number): [Path, Path] {\n\t\tconst paths = [];\n\t\tfor (let t = s2; t >= s1 + 1; --t) {\n\t\t\tfor (let ei = 0; ei < this.matrix[s1][t].size; ++ei) {\n\t\t\t\tconst path = this.pathOf(s1, t, s2, ei);\n\t\t\t\tif (path) {\n\t\t\t\t\tpaths.push(path);\n\t\t\t\t\tif (paths.length === 2) return [paths[0], paths[1]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\treducePath(path: Path): void {\n\t\tthis.matrix.forEach((column) => column.forEach((set) => path.forEach((id) => set.delete(id))));\n\t}\n\n\ttoEquations(eventCount: number): Equation[] {\n\t\tconst equations: Equation[] = [];\n\n\t\tfor (let d = 1; d < this.matrix.length; d++) {\n\t\t\tfor (let s1 = 0; s1 < this.matrix.length - d; s1++) {\n\t\t\t\tconst s2 = s1 + d;\n\n\t\t\t\twhile (true) {\n\t\t\t\t\t// find closed loop from s1 to s2\n\t\t\t\t\tconst paths = this.findDoublePath(s1, s2);\n\t\t\t\t\tif (paths) {\n\t\t\t\t\t\tconst [path1, path2] = paths;\n\t\t\t\t\t\tconst equation = Array(eventCount).fill(0);\n\t\t\t\t\t\tpath1.forEach((eid) => (equation[eid] = 1));\n\t\t\t\t\t\tpath2.forEach((eid) => (equation[eid] = -1));\n\t\t\t\t\t\tequations.push(equation);\n\n\t\t\t\t\t\tthis.reducePath(path1.length > path2.length ? path1 : path2);\n\t\t\t\t\t} else break;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn equations;\n\t}\n}\n\nclass PathNode {\n\tlogger: Logger;\n\n\tparent: PathNode;\n\taction: Action;\n\tpossibility: number;\n\tchildren: PathNode[];\n\n\tstages: Stage[];\n\t//stageMatrix: StageMatrix;\n\tconstraints: Equation[];\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\n\t\tconsole.assert(this.logger, 'logger is null:', data);\n\t}\n\n\tget actions(): Action[] {\n\t\tconst last = this.parent ? this.parent.actions : [];\n\t\treturn this.action ? [...last, this.action] : last;\n\t}\n\n\tget id(): string {\n\t\tconst actionIds = this.actions.map((action) => action.id).sort();\n\t\treturn actionIds.join(' ');\n\t}\n\n\tget stagedEvents(): Set {\n\t\tconst set = new Set();\n\t\tif (this.stages) this.stages.forEach((stage) => stage.events.forEach((eid) => eid >= 0 && set.add(eid)));\n\n\t\treturn set;\n\t}\n\n\tlike(ids: string): boolean {\n\t\tconst actionIds = ids.split(' ').sort();\n\t\treturn actionIds.join(' ') === this.id;\n\t}\n\n\tconstructStages(status: Status): void {\n\t\tthis.stages = [{ events: [EOM] }];\n\n\t\tfor (const action of this.actions) {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase ActionType.PLACE:\n\t\t\t\t\tthis.stages.unshift({ events: [action.e1] });\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.VERTICAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid V action:', this.stages, action);\n\n\t\t\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\t\t\tstage1.events.push(...stage2.events);\n\t\t\t\t\t\t\tstage2.events = null;\n\t\t\t\t\t\t\tthis.stages = this.stages.filter((stage) => stage.events);\n\t\t\t\t\t\t} else if (!stage1) stage2.events.unshift(action.e1);\n\t\t\t\t\t\telse if (!stage2) stage1.events.push(action.e2);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid H action:', this.stages, action);\n\n\t\t\t\t\t\tconst newStage = (eid) => {\n\t\t\t\t\t\t\tconsole.assert(status.eventMap[eid], 'invalid event id:', action.id, eid, status.eventMap);\n\t\t\t\t\t\t\tconst x = status.eventMap[eid].x;\n\n\t\t\t\t\t\t\tconst stage = this.stages.find(\n\t\t\t\t\t\t\t\t(s) => s.events.some((e) => e > 0 && status.eventMap[e].x <= x) && s.events.some((e) => e > 0 && status.eventMap[e].x >= x)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (stage) stage.events.push(eid);\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconst newStage = { events: [eid] };\n\t\t\t\t\t\t\t\tconst si = this.stages.findIndex((s) => s.events[0] === EOM || status.eventMap[s.events[0]].x >= x);\n\t\t\t\t\t\t\t\tthis.stages.splice(si, 0, newStage);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (!stage1) newStage(action.e1);\n\t\t\t\t\t\tif (!stage2) newStage(action.e2);\n\n\t\t\t\t\t\t/*if (this.stages.some((s, si) => si < this.stages.length - 2\n\t\t\t\t\t&& s.events.some(e1 => this.stages[si + 1].events.some(e2 => status.eventMap[e2].x <= status.eventMap[e1].x))))\n\t\t\t\t\tdebugger;*/\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.stages.forEach((stage, i) => (stage.index = i));\n\t}\n\n\tconstructConstraints(status: Status): void {\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst stageMatrix = StageMatrix.fromNode(this, status);\n\t\tconst equations = stageMatrix.toEquations(eventCount);\n\n\t\tconst factors = Array(eventCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, id) => status.eventMap[id].duration);\n\t\tthis.constraints = equations.map((equation) => equation.map((it, i) => it * factors[i]));\n\t}\n\n\tinbalancesConstraints(status: Status): InbalanceEquations {\n\t\tconsole.assert(this.constraints, 'constraints not constructed.');\n\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst ones = Array(eventCount).fill(true);\n\t\tconst fixed = Array(eventCount).fill(false);\n\n\t\tconst inbalances: Equation[] = [];\n\n\t\tfor (const constraint of this.constraints) {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum !== 0) {\n\t\t\t\tconst c = sum < 0 ? constraint.map((it) => -it) : constraint;\n\t\t\t\tif (c[0] > 0) continue; // entire measure edge usually is larger than others, no effect\n\n\t\t\t\tinbalances.push(c);\n\n\t\t\t\t// set ones for tight items\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tfixed[i] = fixed[i] || it < 0;\n\t\t\t\t\tif (it) ones[i] = it < 0 || fixed[i];\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// pick out influenced equations\n\t\tthis.constraints.forEach((constraint) => {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum === 0 && !constraint[0]) {\n\t\t\t\tif (constraint.some((it, i) => it && !ones[i])) {\n\t\t\t\t\tconstraint.forEach((it, i) => it && (ones[i] = false));\n\t\t\t\t\tinbalances.push(constraint);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn { ones, inbalances };\n\t}\n\n\tsolveEquations({ ones, inbalances }: InbalanceEquations): number[] {\n\t\tif (!inbalances.length) return ones.map(() => 1);\n\n\t\tconst xis = ones\n\t\t\t.map((fixed, i) => ({ fixed, i }))\n\t\t\t.filter(({ fixed }) => !fixed)\n\t\t\t.map(({ i }) => i)\n\t\t\t.filter((i) => inbalances.some((items) => items[i] !== 0));\n\t\tif (!xis.length) return ones.map(() => 1);\n\n\t\tconst factors = xis.map((i) => Math.abs(inbalances.find((items) => items[i] !== 0)[i]));\n\n\t\ttype Line = { line: number[]; bias: number };\n\n\t\tconst equationMap = new Map();\n\t\tlet conflicted = false;\n\n\t\tconst lines: Line[] = inbalances\n\t\t\t.map((items) => {\n\t\t\t\tconst line = items.filter((_, i) => xis.includes(i));\n\t\t\t\tconst bias = -items.reduce((sum, it, i) => sum + (xis.includes(i) ? 0 : it), 0);\n\n\t\t\t\treturn { line, bias };\n\t\t\t\t// remove duplicated equations\n\t\t\t})\n\t\t\t.filter(({ line, bias }) => {\n\t\t\t\tif (line.every((it) => it === 0)) return false;\n\n\t\t\t\tconst id = line.join(',');\n\t\t\t\tif (equationMap.has(id)) {\n\t\t\t\t\tconflicted = equationMap.get(id) !== bias;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tequationMap.set(id, bias);\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tif (conflicted) return null;\n\n\t\tconst squareLines = lines.slice(0, xis.length);\n\t\tconst restLines = lines.slice(xis.length);\n\t\tif (squareLines.length < xis.length) {\n\t\t\tconst candidateLines = [];\n\t\t\tfor (let i1 = 0; i1 < xis.length - 1; ++i1) {\n\t\t\t\tconst i2 = i1 + 1;\n\t\t\t\tconst line = {\n\t\t\t\t\tline: xis.map((_, i) => (i === i1 ? 1 : i === i2 ? -1 : 0)),\n\t\t\t\t\tbias: 0,\n\t\t\t\t\tprior: (factors[i1] + factors[i2]) / DURATION_MULTIPLIER,\n\t\t\t\t};\n\t\t\t\tif (squareLines.some((sl) => sl.line[i1] && sl.line[i2])) line.prior -= 10;\n\t\t\t\tif (squareLines.some((sl) => sl.line.filter(Number).length === 1 && (sl.line[i1] || sl.line[i2]))) line.prior += 1;\n\t\t\t\tcandidateLines.push(line);\n\t\t\t}\n\t\t\tcandidateLines.sort((c1, c2) => c1.prior - c2.prior);\n\n\t\t\tsquareLines.push(...candidateLines.slice(0, xis.length - squareLines.length));\n\t\t}\n\t\t//console.assert(squareLines.length, \"squareLines is empty.\", lines, xis, equationMap, inbalances);\n\n\t\tconst matrix = squareLines.map(({ line }) => line);\n\t\tconst bias = squareLines.map(({ bias }) => bias);\n\n\t\tconst invert = matrixInverse(matrix);\n\t\tif (!invert) {\n\t\t\tthis.logger.warn('null invert:', matrix);\n\t\t\t//debugger;\n\t\t\treturn null;\n\t\t}\n\t\tconst solution = invert.map((row) => row.reduce((sum, it, i) => sum + it * bias[i], 0));\n\t\t//console.log(\"solution:\", matrix, invert, solution);\n\n\t\tif (restLines.length) {\n\t\t\tif (restLines.some((line) => Math.abs(line.line.reduce((sum, it, i) => sum + it * solution[i], 0)) > 1e-3)) {\n\t\t\t\t//console.debug(\"rest lines not satisfied:\", restLines, solution);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tconst result = ones.map(() => 1);\n\t\txis.forEach((xi, i) => (result[xi] = solution[i]));\n\n\t\treturn result;\n\t}\n\n\toptimallySolve(status: Status): number[] {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 1-2 9|1 2-3 3-4 9-10 4-5 5-6 6-7 7-8 8-. 12|6 11-12 10-11\"))\n\t\t//\tdebugger;\n\n\t\tconst shrinknesses = ones.map((fixed, id) => (fixed ? -1 : roundNumber(status.eventMap[id].shrinkness, 0.01)));\n\t\tconst shrinkMap = shrinknesses.reduce((map, shrinkness, id) => {\n\t\t\tif (shrinkness >= 0) {\n\t\t\t\tmap[shrinkness] = map[shrinkness] || [];\n\t\t\t\tmap[shrinkness].push(id);\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t\tconst groups = Object.entries(shrinkMap)\n\t\t\t.sort((p1, p2) => Number(p2[0]) - Number(p1[0]))\n\t\t\t.map((pair) => pair[1]);\n\t\t//console.log(\"groups:\", groups, shrinknesses);\n\n\t\tfor (let released = 1; released < groups.length; ++released) {\n\t\t\tconst releasedIds = [].concat(...groups.slice(0, released));\n\t\t\tconst fixed = ones.map((_, id) => !releasedIds.includes(id));\n\t\t\tconst warps = this.solveEquations({ ones: fixed, inbalances });\n\n\t\t\tif (warps && warps.every((it, i) => it <= 1 && it > status.eventMap[i].lowWarp)) return warps;\n\t\t}\n\n\t\treturn this.solveEquations({ ones, inbalances });\n\t}\n\n\tisConflicted(status: Status): boolean {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 8|2 8-9 3|9 2-3 3-4 10|4 4-5 5|11 11-12 6|12 5-6 10-11 9-10 6-7\"))\n\t\t//\tdebugger;\n\n\t\tfor (const c of inbalances) {\n\t\t\t// sum with low warps\n\t\t\tconst lowSum = c.reduce((sum, it, i) => sum + it * (ones[i] || it <= 0 ? 1 : status.eventMap[i].lowWarp), 0);\n\n\t\t\tif (lowSum >= 0) {\n\t\t\t\t// mark events' broken tendency\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tif (it) status.eventTendencies[i] += it > 0 ? 1 : -1;\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (!inbalances.length) return false;\n\n\t\tconst timeWarps = this.solveEquations({ ones, inbalances });\n\t\tif (!timeWarps) return true;\n\n\t\treturn !timeWarps.every((it, i) => it > status.eventMap[i].lowWarp && it <= 1);\n\t}\n\n\tgetSolution(status: Status): Solution {\n\t\tconst actionKey = (action) =>\n\t\t\tstatus.eventMap[action.e2]\n\t\t\t\t? status.eventMap[action.e2].x + Math.abs(status.eventMap[action.e2].x - status.eventMap[action.e1].x) * 0.06\n\t\t\t\t: status.eventMap[action.e1].x + 1e4;\n\t\tconst hacts = this.actions.filter((action) => action.type === ActionType.HORIZONTAL).sort((a1, a2) => actionKey(a1) - actionKey(a2));\n\t\tconst hmap = hacts.reduce((map, act) => ({ ...map, [act.e1]: act.e2 }), {});\n\t\tconst startEs = new Set([...Object.keys(hmap)].map(Number));\n\t\thacts.forEach((act) => startEs.delete(act.e2));\n\t\tthis.stages[0].events.forEach((eid) => eid > 0 && startEs.add(eid));\n\n\t\tlet voices = [...startEs].map((se) => {\n\t\t\tconst voice = [se];\n\n\t\t\tlet x = se;\n\t\t\twhile (hmap[x]) {\n\t\t\t\tx = hmap[x];\n\t\t\t\tif (x < 0 || voice.includes(x)) break;\n\n\t\t\t\tvoice.push(x);\n\t\t\t}\n\n\t\t\treturn voice;\n\t\t});\n\n\t\tconst events: EventResult[] = Object.values(status.eventMap)\n\t\t\t.filter((e) => e.id > 0)\n\t\t\t.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\ttick: null,\n\t\t\t\tendTick: null,\n\t\t\t\ttickGroup: null,\n\t\t\t\ttimeWarp: null,\n\t\t\t}));\n\t\tconst eventMap: { [id: number]: EventResult } = events\n\t\t\t.filter((e) => voices.some((voice) => voice.includes(e.id)) || hacts.some((act) => [act.e1, act.e2].includes(e.id)))\n\t\t\t.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.stages.forEach((stage, si) => stage.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tickGroup = si)));\n\n\t\tthis.stages[0].tick = 0;\n\t\tthis.stages[0].events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = 0));\n\n\t\t// solve time warps\n\t\tconst timeWarps = this.optimallySolve(status);\n\t\tevents.forEach((e) => (e.timeWarp = floatToTimeWarp(timeWarps[e.id])));\n\n\t\t//if (this.like(\"1 12|1 1-2 9|2 2-3 13|3 3-4 4-5 10|5 14|10 10-11 8-9 14-15 15|6 6-7 7-. 13-14 5-6 12-13 9-10\"))\n\t\t//\tdebugger;\n\n\t\t// solve stage ticks\n\t\tconst estages = this.stages.slice(0, this.stages.length - 1);\n\t\tconst solveStages = (): boolean => {\n\t\t\tif (estages.every((stage) => Number.isFinite(stage.tick))) return false;\n\n\t\t\tlet changed = false;\n\n\t\t\t// forward\n\t\t\thacts.forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (Number.isFinite(stage1.tick) && !Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage2.tick = stage1.tick + fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage2.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage2.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// backward\n\t\t\t[...hacts].reverse().forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (!Number.isFinite(stage1.tick) && Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage1.tick = stage2.tick - fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage1.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage1.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn changed;\n\t\t};\n\t\twhile (solveStages());\n\n\t\tconsole.assert(\n\t\t\testages.every((stage) => Number.isFinite(stage.tick)),\n\t\t\t'stage ticks not all solved:',\n\t\t\tthis.stages,\n\t\t\tthis.id\n\t\t);\n\t\tevents\n\t\t\t.filter((event) => Number.isFinite(event.tick))\n\t\t\t.forEach((event) => (event.endTick = event.tick + fractionMul(status.eventMap[event.id].duration, event.timeWarp)));\n\n\t\t// clip out of bound events\n\t\tconst measureDuration = status.eventMap[0].duration;\n\t\tvoices.forEach((voice) => {\n\t\t\tconst outEI = voice.findIndex((eid) => eventMap[eid].endTick > measureDuration);\n\t\t\tif (outEI >= 0) {\n\t\t\t\tconst es = voice.splice(outEI, voice.length - outEI);\n\t\t\t\tes.forEach((eid) => {\n\t\t\t\t\teventMap[eid].tick = null;\n\t\t\t\t\teventMap[eid].endTick = null;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tvoices = voices.filter((voice) => voice.length);\n\n\t\tconst duration = Math.max(0, ...events.map((e) => e.endTick).filter(Number.isFinite));\n\t\t//console.log(\"getSolution:\", this);\n\t\tthis.logger.debug(String.fromCodePoint(0x1f34e), this.id, timeWarps);\n\n\t\treturn {\n\t\t\tvoices,\n\t\t\tevents,\n\t\t\tduration,\n\t\t\tactions: this.actions.map((action) => action.id).join(' '),\n\t\t};\n\t}\n\n\tdeduce(status: Status, quota: Quota): Solution {\n\t\tif (!this.stages) this.constructStages(status);\n\t\t//console.log(\"deduce:\", status);\n\n\t\t// increase access counting\n\t\tconst access = status.actionAccessing.get(this.id) || { times: 0 };\n\t\t++access.times;\n\t\tstatus.actionAccessing.set(this.id, access);\n\n\t\tthis.constructConstraints(status);\n\t\t//console.log(\"constraints:\", this.id, this.stages, this.constraints);\n\n\t\tif (this.isConflicted(status)) {\n\t\t\taccess.closed = true;\n\t\t\tthis.logger.info(this.action.id, '\\u274c');\n\t\t\treturn null;\n\t\t}\n\n\t\t//const newStatus = status;\n\t\tthis.logger.group(this.action && this.action.id);\n\n\t\tif (quota.credits > 0) {\n\t\t\t--quota.credits;\n\n\t\t\tif (!this.children) this.expand(status);\n\n\t\t\tthis.children = this.children.filter((node) => !status.actionAccessing.get(node.id) || !status.actionAccessing.get(node.id).closed);\n\t\t\tif (this.children.length) {\n\t\t\t\tconst p = (node: PathNode): number => node.possibility / ((status.actionAccessing.get(node.id) || { times: 0 }).times + 1);\n\t\t\t\tthis.children.sort((n1, n2) => p(n2) - p(n1));\n\n\t\t\t\tfor (const child of this.children) {\n\t\t\t\t\tconst solution = child.deduce(status, quota);\n\t\t\t\t\tif (solution) {\n\t\t\t\t\t\tthis.logger.groupEnd();\n\t\t\t\t\t\treturn solution;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (quota.credits <= 0) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"got the leaf:\", this, status);\n\t\t} else this.logger.debug('quota exhausted.');\n\n\t\tthis.logger.groupEnd();\n\n\t\taccess.closed = true;\n\n\t\treturn this.getSolution(status);\n\t}\n\n\texpand(status: Status): void {\n\t\t//this.action.events.forEach(eid => status.pendingEvents.delete(eid));\n\t\tthis.constructStages(status);\n\n\t\tconst { eventMap, matrixV, matrixH } = status;\n\t\tconst stagedEvents = this.stagedEvents;\n\n\t\tconst branches: NodeBranch[] = [];\n\t\tconst appendBranch = (branch: NodeBranch): void => {\n\t\t\tif (!this.actions.some((a) => a.id === branch.action.id) && !branches.some((b) => b.action.id === branch.action.id)) {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(branch.action.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(branch.action.e2));\n\t\t\t\tif (stage1 === stage2 || (stage1 && stage2 && stage1.index >= stage2.index)) return;\n\n\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\t\tif (stage2.index - stage1.index > 1) return;\n\t\t\t\t\t\tif (this.actions.some((a) => stage1.events.includes(a.e1) && stage2.events.includes(a.e2))) return;\n\t\t\t\t\t} else if (branch.action.type === ActionType.HORIZONTAL) {\n\t\t\t\t\t\tif (stage1.index > stage2.index) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tbranch.action.type === ActionType.HORIZONTAL &&\n\t\t\t\t\tthis.actions.some(\n\t\t\t\t\t\t(a) =>\n\t\t\t\t\t\t\ta.type === ActionType.HORIZONTAL &&\n\t\t\t\t\t\t\t(a.e1 === branch.action.e1 || a.e2 === branch.action.e2 || (a.e1 === branch.action.e2 && a.e2 === branch.action.e1))\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\treturn;\n\n\t\t\t\t// exclude 2 too far away events by vertical\n\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\tif (stage1) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage1.events.map((e) => matrixV[branch.action.e2][e]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (stage2) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage2.events.map((e) => matrixV[e][branch.action.e1]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbranches.push(branch);\n\t\t\t}\n\t\t};\n\n\t\tfor (const eid of stagedEvents) {\n\t\t\tif (eid < 0) continue;\n\n\t\t\tmatrixV[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0 && eid !== id) appendBranch({ action: Action.V(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixV.forEach((ps, id) => {\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.V(eid, id), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH.forEach((ps, id) => {\n\t\t\t\tid = id >= Object.keys(eventMap).length ? -1 : id;\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(eid, id), possibility: p });\n\t\t\t});\n\t\t}\n\n\t\t// If branches not contains extending actions, clear it.\n\t\t//\tBecause pure inner vertical action may be harmful\n\t\tif (\n\t\t\t!branches.some(\n\t\t\t\t(branch) =>\n\t\t\t\t\t[ActionType.HORIZONTAL, ActionType.PLACE].includes(branch.action.type) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e1) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e2)\n\t\t\t)\n\t\t) {\n\t\t\tthis.children = [];\n\t\t\treturn;\n\t\t}\n\n\t\t//console.table(branches.map(b => [b.action.id, b.possibility]));\n\t\t//console.log(\"branches:\", branches.map(b => b.action.id).join(\", \"), \"\\n\", this.actions.map(a => a.id).join(\", \"));\n\t\tthis.children = branches.map((branch) => new PathNode({ logger: this.logger, parent: this, ...branch }));\n\t}\n}\n\nclass Solver {\n\tquota: number;\n\tlogger: Logger;\n\n\tevents: Event[];\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n\txSpan: number;\n\n\teventMap: { [id: number]: Event };\n\tactionAccessing: Map;\n\n\tpathRoot: PathNode;\n\n\tconstructor(env: Environment, { quota = 1000, logger = new DummyLogger() }: SolverOptions = {}) {\n\t\tthis.quota = quota;\n\t\tthis.logger = logger;\n\n\t\tconst event0 = {\n\t\t\tid: 0,\n\t\t\tx: 0,\n\t\t\tconfidence: 1,\n\t\t\tshrinkness: env.measureShrinkness,\n\t\t\tduration: env.expectedDuration,\n\t\t\tlowWarp: 0,\n\t\t};\n\n\t\tthis.events = [\n\t\t\tevent0,\n\t\t\t...env.events.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\tx: e.x,\n\t\t\t\tconfidence: e.confidence,\n\t\t\t\tshrinkness: e.shrinkness,\n\t\t\t\tstaff: e.staff,\n\t\t\t\tduration: e.duration,\n\t\t\t\tlowWarp: 0.5,\n\t\t\t})),\n\t\t];\n\t\tthis.eventMap = this.events.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.matrixH = env.matrixH;\n\t\tthis.matrixV = env.matrixV;\n\n\t\tthis.xSpan = env.endX - Math.min(env.endX - 1, ...env.events.map((e) => e.x));\n\n\t\tthis.actionAccessing = new Map();\n\t}\n\n\tsolve(): Solution {\n\t\t// construct path root\n\t\tthis.pathRoot = new PathNode({\n\t\t\tlogger: this.logger,\n\t\t\taction: null,\n\t\t});\n\t\tthis.pathRoot.children = this.events.slice(1).map(\n\t\t\t(event) =>\n\t\t\t\tnew PathNode({\n\t\t\t\t\tlogger: this.logger,\n\t\t\t\t\tparent: this.pathRoot,\n\t\t\t\t\taction: Action.P(event.id),\n\t\t\t\t\tpossibility: this.matrixV[event.id].reduce((sum, p) => sum + p, 0),\n\t\t\t\t})\n\t\t);\n\n\t\tlet bestSolution: Solution = null;\n\n\t\tthis.logger.groupCollapsed('solve');\n\n\t\tconst eventTendencies = Array(this.events.length).fill(0);\n\n\t\tconst quota = { credits: this.quota, times: 0 };\n\t\twhile (quota.credits > 0) {\n\t\t\t++quota.times;\n\n\t\t\tconst status = {\n\t\t\t\teventMap: this.eventMap,\n\t\t\t\tmatrixH: this.matrixH,\n\t\t\t\tmatrixV: this.matrixV,\n\t\t\t\tactionAccessing: this.actionAccessing,\n\t\t\t\teventTendencies,\n\t\t\t};\n\n\t\t\tconst solution = this.pathRoot.deduce(status, quota);\n\t\t\tsolution.credits = this.quota - quota.credits;\n\t\t\tsolution.times = quota.times;\n\t\t\tthis.evaluateSolution(solution);\n\t\t\tthis.logger.debug('loss:', solution.loss);\n\n\t\t\tbestSolution = !bestSolution || solution.loss < bestSolution.loss ? solution : bestSolution;\n\t\t\tif (!bestSolution.loss) break;\n\n\t\t\t// check if searching tree traversed\n\t\t\tif (this.actionAccessing.get('').closed) break;\n\t\t}\n\n\t\tthis.logger.groupEnd();\n\t\tthis.logger.debug('solution', bestSolution && bestSolution.loss, bestSolution);\n\t\tthis.logger.debug('cost:', this.quota - quota.credits);\n\n\t\tthis.logger.debug(\n\t\t\t'eventTendencies:',\n\t\t\teventTendencies.map((t) => t / quota.times)\n\t\t);\n\n\t\treturn bestSolution;\n\t}\n\n\tevaluateSolution(solution: Solution): void {\n\t\tsolution.loss = 0;\n\n\t\ttype EventR = Event & EventResult;\n\t\tconst eventMap: Record = solution.events.reduce((map, e) => ({ ...map, [e.id]: { ...e, ...this.eventMap[e.id] } }), {});\n\n\t\t/*// minus tick\n\t\tconst minuses = solution.events.filter((e) => e.tick < 0).length;\n\t\tsolution.loss += minuses * 1000;*/\n\n\t\t// minus tick rates penalty\n\t\tconst events = solution.events.filter((event) => Number.isFinite(event.tick)).map((event) => eventMap[event.id]);\n\t\tconst sevents: Record = events.reduce((map, event) => {\n\t\t\tmap[event.staff] = map[event.staff] || [];\n\t\t\tmap[event.staff].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\t\tObject.values(sevents).forEach((es) => {\n\t\t\tconst ses = es.sort((e1, e2) => e1.x - e2.x).slice(0, es.length - 1);\n\t\t\tses.forEach((e1, i) => {\n\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\tif (e2.tick < e1.tick) solution.loss += 1000;\n\t\t\t});\n\t\t});\n\n\t\tconst times = new Map();\n\t\tsolution.events.forEach((event) => {\n\t\t\tif (!Number.isFinite(event.tick) || solution.voices.every((voice) => !voice.includes(event.id)))\n\t\t\t\tsolution.loss += 100 * eventMap[event.id].confidence;\n\n\t\t\tif (event.timeWarp) {\n\t\t\t\tconst { numerator, denominator } = event.timeWarp;\n\t\t\t\tconst shrinkness = eventMap[event.id].shrinkness;\n\t\t\t\ttimes.set(numerator, Math.max(times.get(numerator) || 0, 1 - shrinkness));\n\t\t\t\ttimes.set(denominator, Math.max(times.get(denominator) || 0, 1 - shrinkness));\n\t\t\t}\n\t\t});\n\n\t\t// partial measure penalty\n\t\tconst partialFrac = reducedFraction(solution.duration, this.eventMap[0].duration);\n\t\ttimes.set(partialFrac.numerator, Math.max(times.get(partialFrac.numerator) || 0, 1 - this.eventMap[0].shrinkness));\n\t\ttimes.set(partialFrac.denominator, Math.max(times.get(partialFrac.denominator) || 0, 1 - this.eventMap[0].shrinkness));\n\n\t\tfor (const [n, weight] of times.entries()) {\n\t\t\tif (n > 1) solution.loss += Math.log(n) * weight;\n\t\t}\n\n\t\tlet spaceTime = 0;\n\t\tlet staffAlters = 0;\n\t\tsolution.voices.forEach((voice) => {\n\t\t\tconsole.assert(eventMap[voice[0]], 'invalid voice:', voice, Object.keys(eventMap));\n\n\t\t\tconst start = Math.abs(eventMap[voice[0]].tick); // abs: penalty for minus start\n\t\t\tconst end = eventMap[voice[voice.length - 1]].endTick;\n\n\t\t\tspaceTime += Math.max(0, start + solution.duration - end);\n\n\t\t\t// staff alternation penalty\n\t\t\tlet staff = null;\n\t\t\tvoice.forEach((id) => {\n\t\t\t\tconst event = eventMap[id];\n\t\t\t\tif (event.staff !== staff) {\n\t\t\t\t\tif (staff !== null) ++staffAlters;\n\t\t\t\t\tstaff = event.staff;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tsolution.loss += (spaceTime * 10) / DURATION_MULTIPLIER;\n\t\tsolution.loss += 5 ** staffAlters - 1;\n\n\t\t// tick twist\n\t\tconst eventsXOrder = [...events].sort((e1, e2) => e1.x - e2.x);\n\t\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\t\tconst e1 = eventsXOrder[i];\n\t\t\tconst dx = e2.x - e1.x;\n\t\t\tconst dt = e2.tick - e1.tick;\n\n\t\t\tif (!dt) return dx / this.xSpan;\n\n\t\t\tconst rate = Math.atan2(dt / solution.duration, dx / this.xSpan);\n\n\t\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t\t});\n\t\tconst tickTwist = Math.max(...tickTwists, 0);\n\t\tsolution.loss += tickTwist ** 2;\n\n\t\tconsole.assert(solution.loss >= 0, 'Invalid solution loss!!!', solution.loss, times, spaceTime, staffAlters);\n\t\tif (solution.loss < 0) solution.loss = Infinity;\n\t}\n}\n\nexport { SolverOptions, Solver };\n","import * as workerpool from 'workerpool';\nimport * as EquationSolver from './equationSolver';\nimport { EquationPolicy } from './spartitoMeasure';\n\nconst solveStaffGroup = (staffGroup: EquationPolicy.StaffGroup, options: EquationPolicy.RegulatorOptions): EquationPolicy.StaffGroupSolution => {\n\tif (!staffGroup.events.length) {\n\t\treturn {\n\t\t\tevents: [],\n\t\t\tvoices: [],\n\t\t\tduration: 0,\n\t\t};\n\t}\n\n\tconst solver = new EquationSolver.Solver(staffGroup, options);\n\n\treturn solver.solve();\n};\n\n// create a worker and register public functions\nworkerpool.worker({\n\tsolveStaffGroup,\n});\n","console.info(`%cstarry-omr%c v1.0.0 2026-02-20T12:54:03.964Z`, 'color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;', 'color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;');\nimport '../../../src/starry/solveStaffGroup.worker';\n"],"names":["requireFoolWebpack","eval","requireFoolWebpack_1","Promise","handler","parent","me","this","SyntaxError","_onSuccess","_onFail","resolved","rejected","pending","_process","onSuccess","onFail","push","then","resolve","reject","s","_then","f","_resolve","result","forEach","fn","_reject","error","cancel","CancellationError","timeout","delay","timer","setTimeout","TimeoutError","always","clearTimeout","callback","res","message","stack","Error","require$$0","isNode","nodeProcess","versions","node","module","exports","platform","process","worker_threads","err","tryRequireFoolWebpack","isMainThread","connected","Window","cpus","self","navigator","hardwareConcurrency","length","Promise$2","prototype","all","promises","remaining","results","p","i","defer","resolver","promise","constructor","name","_Promise","embeddedWorker","environment","require$$1","require$$2","TERMINATE_METHOD_ID","ensureWorkerThreads","WorkerThreads","tryRequireWorkerThreads","ensureWebWorker","Worker","code","getDefaultWorker","Blob","window","URL","createObjectURL","blob","require$$3","type","__dirname","setupWorker","script","options","workerType","setupBrowserWorker","workerOpts","setupWorkerThreadWorker","workerThreadOpts","setupProcessWorker","resolveForkOptions","worker","isBrowserWorker","on","event","addEventListener","data","send","transfer","postMessage","workerThreadOptions","stdout","stderr","isWorkerThread","kill","terminate","disconnect","child_process","fork","forkArgs","forkOpts","call","isChildProcess","opts","processExecArgv","execArgv","join","inspectorActive","indexOf","debugBrk","debugPort","arg","Object","assign","concat","objectToError","obj","temp","props","keys","WorkerHandler","_options","onError","id","terminated","processing","undefined","create","workerTerminateTimeout","ready","requestQueue","response","request","splice","dispatchQueuedRequests","task","isEvent","payload","terminating","exitCode","signalCode","spawnargs","spawnfile","cleaning","terminationHandler","lastId","methods","exec","method","params","catch","terminateAndNotify","busy","force","cleanup","removeAllListeners","killed","cleanExitTimeout","once","WorkerHandlerModule","WorkerHandler$1","_tryRequireWorkerThreads","_setupProcessWorker","_setupBrowserWorker","_setupWorkerThreadWorker","Transfer","exit","parentPort","bind","convertError","getOwnPropertyNames","reduce","product","defineProperty","value","enumerable","isPromise","run","args","Function","apply","cleanupAndExit","_exit","currentRequestId","register","hasOwnProperty","onTerminate","emit","add","Sylvester","Matrix","elements","setElements","I","n","j","els","dup","isSquare","cols","toRightTriangular","M","np","multiplier","determinant","det","isSingular","augment","matrix","T","nj","inverse","divisor","new_element","inverse_elements","matrixInverse","mat","SemanticType","root","NODE_JS","JS_SHA1_NO_NODE_JS","global","COMMON_JS","JS_SHA1_NO_COMMON_JS","HEX_CHARS","split","EXTRA","SHIFT","OUTPUT_TYPES","blocks","createOutputMethod","outputType","Sha1","update","createMethod","nodeWrap","crypto","Buffer","nodeMethod","createHash","digest","ArrayBuffer","Uint8Array","sharedMemory","h0","h1","h2","h3","h4","block","start","bytes","hBytes","finalized","hashed","first","notString","index","charCodeAt","lastByteIndex","hash","finalize","t","a","b","c","d","e","hex","toString","array","arrayBuffer","buffer","dataView","DataView","setUint32","sha1","BarMeasure","vline_BarMeasure","vline_BarTerminal","vline_BarSegment","vline_VoltaLeft","vline_VoltaRight","VoltaAlternativeBegin","st","NoteheadS0","NoteheadS1","NoteheadS2","Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","ScriptStaccatissimo","TimesigZero","TimesigOne","TimesigTwo","TimesigThree","TimesigFour","TimesigFive","TimesigSix","TimesigSeven","TimesigEight","TimesigNine","Rest0","Rest1","Rest2","Rest3","Rest4","Rest5","Rest6","Rest0W","RestM1","SignInterval","SignLined","BeamLeft","BeamContinue","BeamRight","ClefG","ClefF","ClefC","Dot","AccNatural","AccSharp","AccDoublesharp","AccFlat","AccFlatflat","TimesigC44","TimesigC22","OctaveShift8","OctaveShift0","m","r","z","ScriptFermata","ScriptShortFermata","ScriptSforzato","ScriptStaccato","ScriptTurn","ScriptTrill","ScriptSegno","ScriptCoda","ScriptArpeggio","ScriptPrall","ScriptMordent","ScriptMarcato","ScriptTenuto","ScriptPortato","PedalStar","PedalPed","roundNumber","x","precision","min","Infinity","Math","max","round","gcd","Number","isInteger","console","frac","numerator","denominator","reducedFraction","g","fractionMul","fraction","DummyLogger","debug","_","group","groupCollapsed","groupEnd","info","warn","assert","EOM","GREAT_NUMBER","DURATION_MULTIPLIER","floatToFrac","floatToTimeWarp","ActionType","Action","P","PLACE","e1","V","e2","order","VERTICAL","H","HORIZONTAL","events","filter","isFinite","StageMatrix","fromNode","status","Array","stages","fill","map","Set","actions","action","stage1","findIndex","stage","includes","stage2","stagedEvents","endHs","matrixH","has","endHP","hActions","pendingHeads","eventMap","eid","find","some","pathOf","y","target","ei","size","yy","sub","findDoublePath","s1","s2","paths","path","reducePath","column","set","delete","toEquations","eventCount","equations","path1","path2","equation","PathNode","logger","last","sort","like","ids","constructStages","unshift","newStage","si","constructConstraints","factors","duration","constraints","it","inbalancesConstraints","ones","fixed","inbalances","constraint","sum","solveEquations","xis","items","abs","equationMap","Map","conflicted","lines","line","bias","every","get","squareLines","slice","restLines","candidateLines","i1","i2","prior","sl","c1","c2","invert","solution","row","xi","optimallySolve","shrinkMap","shrinkness","groups","entries","p1","p2","pair","released","releasedIds","warps","lowWarp","isConflicted","eventTendencies","timeWarps","getSolution","actionKey","hacts","a1","a2","hmap","act","startEs","voices","se","voice","values","tick","endTick","tickGroup","timeWarp","estages","solveStages","changed","reverse","measureDuration","outEI","String","fromCodePoint","deduce","quota","access","actionAccessing","times","closed","credits","children","expand","possibility","n1","n2","child","matrixV","branches","appendBranch","branch","ps","Solver","env","event0","confidence","measureShrinkness","expectedDuration","staff","xSpan","endX","solve","pathRoot","bestSolution","evaluateSolution","loss","sevents","es","partialFrac","weight","log","spaceTime","staffAlters","end","eventsXOrder","tickTwists","dx","dt","atan2","PI","tickTwist","solveStaffGroup","staffGroup","EquationSolver.Solver","workerpool.worker"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"worker.js","sources":["../../../node_modules/matrix-inverse/matrix-inverse.js","../../../src/starry/semanticPoint.ts","../../../node_modules/js-sha1/src/sha1.js","../../../src/starry/utils.ts","../../../src/starry/logger.ts","../../../src/starry/equationSolver.ts","../../../src/starry/solveStaffGroup.worker.ts","../src/worker.ts"],"sourcesContent":["var Sylvester = {}\n\nSylvester.Matrix = function () {}\n\nSylvester.Matrix.create = function (elements) {\n var M = new Sylvester.Matrix()\n return M.setElements(elements)\n}\n\nSylvester.Matrix.I = function (n) {\n var els = [],\n i = n,\n j\n while (i--) {\n j = n\n els[i] = []\n while (j--) {\n els[i][j] = i === j ? 1 : 0\n }\n }\n return Sylvester.Matrix.create(els)\n}\n\nSylvester.Matrix.prototype = {\n dup: function () {\n return Sylvester.Matrix.create(this.elements)\n },\n\n isSquare: function () {\n var cols = this.elements.length === 0 ? 0 : this.elements[0].length\n return this.elements.length === cols\n },\n\n toRightTriangular: function () {\n if (this.elements.length === 0) return Sylvester.Matrix.create([])\n var M = this.dup(),\n els\n var n = this.elements.length,\n i,\n j,\n np = this.elements[0].length,\n p\n for (i = 0; i < n; i++) {\n if (M.elements[i][i] === 0) {\n for (j = i + 1; j < n; j++) {\n if (M.elements[j][i] !== 0) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[i][p] + M.elements[j][p])\n }\n M.elements[i] = els\n break\n }\n }\n }\n if (M.elements[i][i] !== 0) {\n for (j = i + 1; j < n; j++) {\n var multiplier = M.elements[j][i] / M.elements[i][i]\n els = []\n for (p = 0; p < np; p++) {\n // Elements with column numbers up to an including the number of the\n // row that we're subtracting can safely be set straight to zero,\n // since that's the point of this routine and it avoids having to\n // loop over and correct rounding errors later\n els.push(\n p <= i ? 0 : M.elements[j][p] - M.elements[i][p] * multiplier\n )\n }\n M.elements[j] = els\n }\n }\n }\n return M\n },\n\n determinant: function () {\n if (this.elements.length === 0) {\n return 1\n }\n if (!this.isSquare()) {\n return null\n }\n var M = this.toRightTriangular()\n var det = M.elements[0][0],\n n = M.elements.length\n for (var i = 1; i < n; i++) {\n det = det * M.elements[i][i]\n }\n return det\n },\n\n isSingular: function () {\n return this.isSquare() && this.determinant() === 0\n },\n\n augment: function (matrix) {\n if (this.elements.length === 0) {\n return this.dup()\n }\n var M = matrix.elements || matrix\n if (typeof M[0][0] === 'undefined') {\n M = Sylvester.Matrix.create(M).elements\n }\n var T = this.dup(),\n cols = T.elements[0].length\n var i = T.elements.length,\n nj = M[0].length,\n j\n if (i !== M.length) {\n return null\n }\n while (i--) {\n j = nj\n while (j--) {\n T.elements[i][cols + j] = M[i][j]\n }\n }\n return T\n },\n\n inverse: function () {\n if (this.elements.length === 0) {\n return null\n }\n if (!this.isSquare() || this.isSingular()) {\n return null\n }\n var n = this.elements.length,\n i = n,\n j\n var M = this.augment(Sylvester.Matrix.I(n)).toRightTriangular()\n var np = M.elements[0].length,\n p,\n els,\n divisor\n var inverse_elements = [],\n new_element\n // Sylvester.Matrix is non-singular so there will be no zeros on the\n // diagonal. Cycle through rows from last to first.\n while (i--) {\n // First, normalise diagonal elements to 1\n els = []\n inverse_elements[i] = []\n divisor = M.elements[i][i]\n for (p = 0; p < np; p++) {\n new_element = M.elements[i][p] / divisor\n els.push(new_element)\n // Shuffle off the current row of the right hand side into the results\n // array as it will not be modified by later runs through this loop\n if (p >= n) {\n inverse_elements[i].push(new_element)\n }\n }\n M.elements[i] = els\n // Then, subtract this row from those above it to give the identity matrix\n // on the left hand side\n j = i\n while (j--) {\n els = []\n for (p = 0; p < np; p++) {\n els.push(M.elements[j][p] - M.elements[i][p] * M.elements[j][i])\n }\n M.elements[j] = els\n }\n }\n return Sylvester.Matrix.create(inverse_elements)\n },\n\n setElements: function (els) {\n var i,\n j,\n elements = els.elements || els\n if (elements[0] && typeof elements[0][0] !== 'undefined') {\n i = elements.length\n this.elements = []\n while (i--) {\n j = elements[i].length\n this.elements[i] = []\n while (j--) {\n this.elements[i][j] = elements[i][j]\n }\n }\n return this\n }\n var n = elements.length\n this.elements = []\n for (i = 0; i < n; i++) {\n this.elements.push([elements[i]])\n }\n return this\n },\n}\n\nmodule.exports = function (elements) {\n const mat = Sylvester.Matrix.create(elements).inverse()\n if (mat !== null) {\n return mat.elements\n } else {\n return null\n }\n}\n","import sha1 from 'js-sha1';\n\nenum SemanticType {\n\t// clefs\n\tClefG = 'ClefG',\n\tClefF = 'ClefF',\n\tClefC = 'ClefC',\n\n\t// noteheads\n\tNoteheadS0 = 'NoteheadS0',\n\tNoteheadS1 = 'NoteheadS1',\n\tNoteheadS2 = 'NoteheadS2',\n\tNoteheadS1stemU = 'NoteheadS1stemU',\n\tNoteheadS1stemD = 'NoteheadS1stemD',\n\tNoteheadS2stemU = 'NoteheadS2stemU',\n\tNoteheadS2stemD = 'NoteheadS2stemD',\n\n\tvline_Stem = 'vline_Stem',\n\n\t// flags\n\tFlag3 = 'Flag3',\n\n\t// beams\n\tBeamLeft = 'BeamLeft',\n\tBeamContinue = 'BeamContinue',\n\tBeamRight = 'BeamRight',\n\n\t// tremolos\n\tTremoloLeft = 'TremoloLeft',\n\tTremoloRight = 'TremoloRight',\n\tTremoloMiddle = 'TremoloMiddle',\n\n\t// dots (duration)\n\tDot = 'Dot',\n\n\t// rests\n\tRest0 = 'Rest0',\n\tRest1 = 'Rest1',\n\tRest2 = 'Rest2',\n\tRest3 = 'Rest3',\n\tRest4 = 'Rest4',\n\tRest5 = 'Rest5',\n\tRest6 = 'Rest6',\n\tRest0W = 'Rest0W', // capital 'R' in lilypond\n\tRestM1 = 'RestM1',\n\n\t// accidentals\n\tAccNatural = 'AccNatural',\n\tAccSharp = 'AccSharp',\n\tAccDoublesharp = 'AccDoublesharp',\n\tAccFlat = 'AccFlat',\n\tAccFlatflat = 'AccFlatflat',\n\n\t// volta\n\tvline_VoltaLeft = 'vline_VoltaLeft',\n\tvline_VoltaRight = 'vline_VoltaRight',\n\tVoltaLeft = 'VoltaLeft',\n\tVoltaRight = 'VoltaRight',\n\n\tVoltaAlternativeBegin = 'VoltaAlternativeBegin',\n\t//VoltaAlternativeEnd\t= \"VoltaAlternativeEnd\",\n\n\t// vertical bars\n\tBarMeasure = 'BarMeasure',\n\tvline_BarMeasure = 'vline_BarMeasure',\n\tvline_BarTerminal = 'vline_BarTerminal',\n\tvline_BarSegment = 'vline_BarSegment',\n\n\t// slur & tie\n\tSlurBegin = 'SlurBegin',\n\tSlurEnd = 'SlurEnd',\n\n\t// time signature\n\tTimesigC44 = 'TimesigC44',\n\tTimesigC22 = 'TimesigC22',\n\tTimesigZero = 'TimesigZero',\n\tTimesigOne = 'TimesigOne',\n\tTimesigTwo = 'TimesigTwo',\n\tTimesigThree = 'TimesigThree',\n\tTimesigFour = 'TimesigFour',\n\tTimesigFive = 'TimesigFive',\n\tTimesigSix = 'TimesigSix',\n\tTimesigSeven = 'TimesigSeven',\n\tTimesigEight = 'TimesigEight',\n\tTimesigNine = 'TimesigNine',\n\n\t// octave shifts\n\tOctaveShift8va = 'OctaveShift8va',\n\tOctaveShift8vb = 'OctaveShift8vb',\n\tOctaveShift8 = 'OctaveShift8',\n\tOctaveShift0 = 'OctaveShift0',\n\n\t// numbers\n\tZero = 'Zero',\n\tOne = 'One',\n\tTwo = 'Two',\n\tThree = 'Three',\n\tFour = 'Four',\n\tFive = 'Five',\n\tSix = 'Six',\n\tSeven = 'Seven',\n\tEight = 'Eight',\n\tNine = 'Nine',\n\n\t// dynamics\n\tf = 'f',\n\tp = 'p',\n\tm = 'm',\n\tn = 'n',\n\tr = 'r',\n\ts = 's',\n\tz = 'z',\n\n\tCrescendoBegin = 'CrescendoBegin',\n\tCrescendoEnd = 'CrescendoEnd',\n\tDecrescendoBegin = 'DecrescendoBegin',\n\tDecrescendoEnd = 'DecrescendoEnd',\n\n\t// scripts\n\tScriptFermata = 'ScriptFermata',\n\tScriptShortFermata = 'ScriptShortFermata',\n\tScriptSforzato = 'ScriptSforzato',\n\tScriptStaccato = 'ScriptStaccato',\n\tScriptStaccatissimo = 'ScriptStaccatissimo',\n\tScriptTurn = 'ScriptTurn',\n\tScriptTrill = 'ScriptTrill',\n\tScriptSegno = 'ScriptSegno',\n\tScriptCoda = 'ScriptCoda',\n\tScriptArpeggio = 'ScriptArpeggio',\n\tScriptPrall = 'ScriptPrall',\n\tScriptMordent = 'ScriptMordent',\n\tScriptMarcato = 'ScriptMarcato',\n\tScriptTenuto = 'ScriptTenuto',\n\tScriptPortato = 'ScriptPortato',\n\n\t// pedal\n\tPedalStar = 'PedalStar',\n\tPedalPed = 'PedalPed',\n\n\t// additional annotation\n\tKeyAcc = 'KeyAcc',\n\tTempoNotehead = 'TempoNotehead',\n\tGraceNotehead = 'GraceNotehead',\n\tSignLined = 'SignLined',\n\tSignInterval = 'SignInterval',\n\n\trect_Text = 'rect_Text',\n\trect_Lyric = 'rect_Lyric',\n}\n\nconst glyphSemanticMapping: { [key: string]: string } = {\n\t'rests.1': 'Rest1',\n\t'rests.0o': 'Rest0',\n\t'rests.1o': 'Rest1',\n\t'rests.M1': 'RestM1',\n\t'rests.2': 'Rest2',\n\t'rests.3': 'Rest3',\n\t'rests.4': 'Rest4',\n\t'rests.5': 'Rest5',\n\t'rests.6': 'Rest6',\n\t'accidentals.sharp': 'AccSharp',\n\t'accidentals.doublesharp': 'AccDoublesharp',\n\t'accidentals.natural': 'AccNatural',\n\t'accidentals.flat': 'AccFlat',\n\t'accidentals.flatflat': 'AccFlatflat',\n\t'dots.dot': 'Dot',\n\t'scripts.ufermata': 'ScriptFermata',\n\t'scripts.dfermata': 'ScriptFermata',\n\t'scripts.ushortfermata': 'ScriptShortFermata',\n\t'scripts.dshortfermata': 'ScriptShortFermata',\n\t'scripts.staccato': 'ScriptStaccato',\n\t'scripts.ustaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.dstaccatissimo': 'ScriptStaccatissimo',\n\t'scripts.turn': 'ScriptTurn',\n\t'scripts.trill': 'ScriptTrill',\n\t'scripts.segno': 'ScriptSegno',\n\t'scripts.coda': 'ScriptCoda',\n\t'scripts.arpeggio': 'ScriptArpeggio',\n\t'scripts.prall': 'ScriptPrall',\n\t'scripts.mordent': 'ScriptMordent',\n\t'scripts.umarcato': 'ScriptMarcato',\n\t'scripts.dmarcato': 'ScriptMarcato',\n\t'scripts.uportato': 'ScriptPortato',\n\t'scripts.dportato': 'ScriptPortato',\n\t'scripts.tenuto': 'ScriptTenuto',\n\t'scripts.sforzato': 'ScriptSforzato',\n\t'clefs.C': 'ClefC',\n\t'clefs.F': 'ClefF',\n\t'clefs.G': 'ClefG',\n\t'clefs.F_change': 'ClefF',\n\t'clefs.G_change': 'ClefG',\n\t'timesig.C44': 'TimesigC44',\n\t'timesig.C22': 'TimesigC22',\n\t'pedal.*': 'PedalStar',\n\t'pedal.Ped': 'PedalPed',\n\t'noteheads.s0': 'NoteheadS0',\n\t'noteheads.s1': 'NoteheadS1',\n\t'noteheads.s2': 'NoteheadS2',\n\tf: 'f',\n\tm: 'm',\n\tp: 'p',\n\tr: 'r',\n\ts: 's',\n\tz: 'z',\n};\n\nconst semanticPriorities: { [key: string]: number } = {\n\tClefG: 0,\n\tClefF: 0,\n\tTimesigFour: 0,\n\tTimesigThree: 0,\n\tTimesigTwo: 0,\n\tNoteheadS0: 0,\n\tNoteheadS1: 0,\n\tNoteheadS2: 0,\n\tDot: 0,\n\tvline_BarMeasure: 0,\n\tvline_Stem: 0,\n\tFlag3: 0,\n\n\tTimesigC44: 1,\n\tTimesigC22: 1,\n\tTimesigEight: 1,\n\tTimesigSix: 1,\n\tAccNatural: 1,\n\tAccSharp: 1,\n\tAccFlat: 1,\n\tKeyAcc: 1,\n\tRest0: 1,\n\tRest1: 1,\n\tRest2: 1,\n\tRest3: 1,\n\tRest4: 1,\n\tOctaveShift8: 1,\n\tOctaveShift0: 1,\n\n\tAccDoublesharp: 2,\n\tAccFlatflat: 2,\n\tTimesigOne: 2,\n\tTimesigNine: 2,\n\tRest5: 2,\n\tRest6: 2,\n\tSlurBegin: 2,\n\tSlurEnd: 2,\n\tVoltaLeft: 2,\n\tVoltaRight: 2,\n\t//VoltaAlternativeBegin: 2,\n\tvline_BarTerminal: 2,\n\tvline_BarSegment: 2,\n\tTempoNotehead: 2,\n\tGraceNotehead: 2,\n\tSignLined: 2,\n\tSignInterval: 2,\n\tBeamLeft: 2,\n\tBeamRight: 2,\n\tBeamContinue: 2,\n\tTremoloLeft: 2,\n\tTremoloRight: 2,\n\tTremoloMiddle: 2,\n\tStemTip: 2,\n\tStemHead: 2,\n\n\t//Rest0W: 3,\n\tf: 3,\n\tp: 3,\n\tm: 3,\n\tScriptFermata: 3,\n\tScriptSforzato: 3,\n\tScriptStaccato: 3,\n\tScriptStaccatissimo: 3,\n\tScriptTurn: 3,\n\tScriptTrill: 3,\n\tScriptSegno: 3,\n\tScriptCoda: 3,\n\tScriptArpeggio: 3,\n\tScriptPrall: 3,\n\tScriptMordent: 3,\n\tScriptTenuto: 3,\n\tPedalStar: 3,\n\tPedalPed: 3,\n\tTimesigFive: 3,\n\tTimesigSeven: 3,\n\tTimesigZero: 3,\n\tOne: 3,\n\tTwo: 3,\n\tThree: 3,\n\tFour: 3,\n\tFive: 3,\n\trect_Text: 3,\n\trect_Lyric: 3,\n\tCrescendoBegin: 3,\n\tCrescendoEnd: 3,\n\tDecrescendoBegin: 3,\n\tDecrescendoEnd: 3,\n\n\tRestM1: 4,\n\tClefC: 4,\n\tScriptShortFermata: 4,\n\tScriptMarcato: 4,\n\tScriptPortato: 4,\n\ts: 4,\n\tr: 4,\n\tz: 4,\n\tZero: 4,\n\tSix: 4,\n\tSeven: 4,\n\tEight: 4,\n\tNine: 4,\n};\n\ninterface Position {\n\tx?: number;\n\ty?: number;\n}\n\nconst NOTEHEAD_WIDTHS = {\n\tNoteheadS0: 0.913 * 2,\n\tNoteheadS1: 0.632 * 2,\n\tNoteheadS2: 0.599 * 2,\n};\n\nconst glyphCenters: { [key: string]: Position } = {\n\t//\"clefs.C\": { x: 1.3 },\n\t'clefs.F': { x: 1.06 },\n\t'clefs.G': { x: 1.3 },\n\t'clefs.F_change': { x: 0.87 },\n\t'clefs.G_change': { x: 1.07 },\n\t'timesig.C44': { x: 0.9 },\n\t'timesig.C22': { x: 0.9 },\n\tzero: { x: 0.7, y: -1 },\n\tone: { x: 0.7, y: -1 },\n\ttwo: { x: 0.7, y: -1 },\n\tthree: { x: 0.7, y: -1 },\n\tfour: { x: 0.7, y: -1 },\n\tfive: { x: 0.7, y: -1 },\n\tsix: { x: 0.7, y: -1 },\n\tseven: { x: 0.7, y: -1 },\n\teight: { x: 0.7, y: -1 },\n\tnine: { x: 0.7, y: -1 },\n\t'accidentals.sharp': { x: 0.55 },\n\t'accidentals.doublesharp': { x: 0.5 },\n\t'accidentals.natural': { x: 0.3 },\n\t'accidentals.flat': { x: 0.3 },\n\t'accidentals.flatflat': { x: 0.5 },\n\t'noteheads.s0': { x: NOTEHEAD_WIDTHS.NoteheadS0 / 2 },\n\t'noteheads.s1': { x: NOTEHEAD_WIDTHS.NoteheadS1 / 2 },\n\t'noteheads.s2': { x: NOTEHEAD_WIDTHS.NoteheadS2 / 2 },\n\t'rests.0': { x: 0.75, y: 1 },\n\t'rests.1': { x: 0.75 },\n\t'rests.0o': { x: 0.75, y: 1 },\n\t'rests.1o': { x: 0.75 },\n\t'rests.M1': { x: 0.75, y: 1 },\n\t'rests.2': { x: 0.5 },\n\t'rests.3': { x: 0.5 },\n\t'rests.4': { x: 0.5 },\n\t'rests.5': { x: 0.5 },\n\t'rests.6': { x: 0.5 },\n\tf: { x: 0.6, y: -0.5 },\n\tm: { x: 0.9, y: -0.5 },\n\tp: { x: 0.5, y: -0.5 },\n\tr: { x: 0.5, y: -0.5 },\n\ts: { x: 0.5, y: -0.5 },\n\tz: { x: 0.5, y: -0.5 },\n\t'scripts.trill': { y: -0.5 },\n\t'scripts.segno': { x: 0, y: 0 },\n\t'scripts.coda': { x: 0, y: 0 },\n\t'scripts.arpeggio': { x: 0.5, y: -0.5 },\n\t'pedal.*': { x: 0.78, y: -0.78 },\n\t'pedal.Ped': { x: 1.6, y: -0.7 },\n};\n\ninterface Point {\n\t// in staff unit coordinates\n\tx: number;\n\ty: number;\n\n\tpivotX?: number;\n\n\t// for prediction\n\tconfidence?: number;\n\n\t// sheet token index in page\n\tindex?: number;\n\ttag?: string;\n\n\textension?: {\n\t\ty1?: number;\n\t\ty2?: number;\n\n\t\thref?: string;\n\t\twidth?: number;\n\t\theight?: number;\n\n\t\ttext?: string;\n\t\ttheta?: number;\n\t\ttype?: string;\n\t\ttextFeature?: Record;\n\t};\n}\n\ninterface SemanticPoint extends Point {\n\tid?: string;\n\tsemantic: SemanticType;\n}\n\nconst ONE_D_SEMANTICS = [\n\t'OctaveShift8va',\n\t'OctaveShift8vb',\n\t'OctaveShift8',\n\t'OctaveShift0',\n\t'vline_VoltaLeft',\n\t'vline_VoltaRight',\n\t'VoltaAlternativeBegin',\n\t'vline_BarMeasure',\n\t'vline_BarTerminal',\n\t'vline_BarSegment',\n];\n\nconst SYSTEM_SEMANTIC_TYPES = [\n\tSemanticType.BarMeasure,\n\tSemanticType.vline_BarMeasure,\n\tSemanticType.vline_BarTerminal,\n\tSemanticType.vline_BarSegment,\n\tSemanticType.vline_VoltaLeft,\n\tSemanticType.vline_VoltaRight,\n\tSemanticType.VoltaAlternativeBegin,\n];\n\nconst st = SemanticType;\nconst CONFLICTION_GROUPS = [\n\t[st.NoteheadS0, st.NoteheadS1, st.NoteheadS2],\n\t[st.Zero, st.One, st.Two, st.Three, st.Four, st.Five, st.Six, st.Seven, st.Eight, st.Nine, st.ScriptStaccatissimo],\n\t[\n\t\tst.TimesigZero,\n\t\tst.TimesigOne,\n\t\tst.TimesigTwo,\n\t\tst.TimesigThree,\n\t\tst.TimesigFour,\n\t\tst.TimesigFive,\n\t\tst.TimesigSix,\n\t\tst.TimesigSeven,\n\t\tst.TimesigEight,\n\t\tst.TimesigNine,\n\t],\n\t[st.Rest0, st.Rest1, st.Rest2, st.Rest3, st.Rest4, st.Rest5, st.Rest6, st.Rest0W, st.RestM1],\n\t[st.SignInterval, st.SignLined],\n\t[st.BeamLeft, st.BeamContinue, st.BeamRight],\n];\n\nconst STAMP_SEMANTICS = [\n\tst.ClefG,\n\tst.ClefF,\n\tst.ClefC,\n\tst.NoteheadS0,\n\tst.NoteheadS1,\n\tst.NoteheadS2,\n\tst.Dot,\n\tst.Rest0,\n\tst.Rest1,\n\tst.Rest2,\n\tst.Rest3,\n\tst.Rest4,\n\tst.Rest5,\n\tst.Rest6,\n\tst.RestM1,\n\tst.AccNatural,\n\tst.AccSharp,\n\tst.AccDoublesharp,\n\tst.AccFlat,\n\tst.AccFlatflat,\n\tst.TimesigC44,\n\tst.TimesigC22,\n\tst.TimesigZero,\n\tst.TimesigOne,\n\tst.TimesigTwo,\n\tst.TimesigThree,\n\tst.TimesigFour,\n\tst.TimesigFive,\n\tst.TimesigSix,\n\tst.TimesigSeven,\n\tst.TimesigEight,\n\tst.TimesigNine,\n\tst.One,\n\tst.Two,\n\tst.Three,\n\tst.Four,\n\tst.Five,\n\tst.OctaveShift8,\n\t//st.OctaveShift15,\n\tst.OctaveShift0,\n\tst.f,\n\tst.p,\n\tst.m,\n\tst.n,\n\tst.r,\n\tst.s,\n\tst.z,\n\tst.ScriptFermata,\n\tst.ScriptShortFermata,\n\tst.ScriptSforzato,\n\tst.ScriptStaccato,\n\tst.ScriptStaccatissimo,\n\tst.ScriptTurn,\n\tst.ScriptTrill,\n\tst.ScriptSegno,\n\tst.ScriptCoda,\n\tst.ScriptArpeggio,\n\tst.ScriptPrall,\n\tst.ScriptMordent,\n\tst.ScriptMarcato,\n\tst.ScriptTenuto,\n\tst.ScriptPortato,\n\tst.PedalStar,\n\tst.PedalPed,\n];\n\n// [cx, cy, width, height]\nconst STAMP_RECTS = {\n\tClefG: [-0.0625, -1.125, 3.6, 8.6],\n\tClefF: [0.25, 0.5625, 3.6, 3.8],\n\tClefC: [0.25, 0, 3.25, 4.5],\n\tNoteheadS0: [0.0625, 0, 2.55, 1.4],\n\tNoteheadS1: [0.0625, 0, 1.8, 1.4],\n\tNoteheadS2: [0.0625, -0.0625, 1.65, 1.35],\n\tDot: [0.25, 0, 0.6, 0.6],\n\tRest0: [0, -0.75, 3.25, 0.9],\n\tRest1: [0, -0.25, 3.25, 0.9],\n\tRest2: [-0.0625, -0.1875, 1.6, 3.375],\n\tRest3: [0, 0.0625, 1.2, 2.25],\n\tRest4: [0.0625, 0.5625, 1.65, 3.375],\n\tRest5: [0.0625, 0.0625, 1.95, 4.375],\n\tRest6: [0.0625, 0.5625, 1.95, 5.375],\n\tRestM1: [-0.4375, -1.5, 0.75, 1.2],\n\tAccNatural: [0, 0, 0.9, 3.5],\n\tAccSharp: [0, 0, 1.5, 3.5],\n\tAccDoublesharp: [0, 0, 1.5, 1.5],\n\tAccFlat: [0, -0.5625, 1.2, 3.125],\n\tAccFlatflat: [0.1875, -0.5625, 1.95, 3.125],\n\tTimesigC44: [-0.0625, 0, 2.25, 2.3],\n\tTimesigC22: [-0.0625, 0, 2.25, 3.2],\n\tTimesigZero: [0, 0, 1.8, 2.2],\n\tTimesigOne: [-0.125, 0, 1.5, 2.2],\n\tTimesigTwo: [0, 0, 2.2, 2.2],\n\tTimesigThree: [-0.0625, 0, 1.9, 2.4],\n\tTimesigFour: [0.0625, 0, 1.95, 2.2],\n\tTimesigFive: [0, 0, 1.8, 2.3],\n\tTimesigSix: [0, 0, 2.0, 2.4],\n\tTimesigSeven: [0, 0, 1.8, 2.2],\n\tTimesigEight: [0, 0, 1.9, 2.2],\n\tTimesigNine: [0, 0, 1.9, 2.2],\n\tOne: [-0.0625, 0, 0.75, 1.6],\n\tTwo: [0, 0, 1.2, 1.6],\n\tThree: [0, 0, 1.2, 1.6],\n\tFour: [0, 0, 1.2, 1.6],\n\tFive: [0, 0, 1.2, 1.6],\n\tOctaveShift8: [2.125, -0.1875, 4.75, 3.6],\n\tOctaveShift0: [-0.4, 0, 1.8, 4.2],\n\tf: [0.0625, -0.125, 2.55, 3],\n\tp: [-0.0625, 0.25, 2.55, 2.1],\n\tm: [-0.125, -0.0625, 2.4, 1.35],\n\tn: [-0.3125, -0.0625, 1.95, 1.35],\n\tr: [0, -0.125, 1.5, 1.5],\n\ts: [0, -0.0625, 1.2, 1.35],\n\tz: [0.0625, 0, 1.35, 1.5],\n\tScriptFermata: [0, 0, 3.25, 3.9],\n\tScriptShortFermata: [0, 0, 2.4, 4.95],\n\tScriptSforzato: [-0.0625, 0, 2.5, 1.2],\n\tScriptStaccato: [0, -0.0625, 0.6, 0.45],\n\tScriptStaccatissimo: [0, 0, 1.2, 2.6],\n\tScriptTurn: [0, 0, 2.7, 1.5],\n\tScriptTrill: [-0.125, -0.5, 3, 2.7],\n\tScriptSegno: [0, 0, 2.4, 3.5],\n\tScriptCoda: [0, 0, 2.7, 3.25],\n\tScriptArpeggio: [-0.0625, 0, 1.05, 1.8],\n\tScriptPrall: [0, 0, 2.4, 1.2],\n\tScriptMordent: [0, 0, 2.4, 1.5],\n\tScriptMarcato: [0, 0, 1.2, 2.475],\n\tScriptTenuto: [0, -0.0625, 1.5, 0.15],\n\tScriptPortato: [0, 0, 1.5, 1.65],\n\tPedalStar: [0, 0, 3.2, 3.2],\n\tPedalPed: [0, -0.25, 4.7, 2.4],\n};\n\nconst hashSemanticPoint = (systemIndex: number, staffIndex: number, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x * 10);\n\tconst y = Math.round(point.y * 10);\n\tconst source = `${systemIndex}|${staffIndex}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nconst hashPageSemanticPoint = (pageName: string, point: SemanticPoint): string => {\n\tconst x = Math.round(point.x);\n\tconst y = Math.round(point.y);\n\tconst source = `p-${pageName}|${point.semantic}|${x}|${y}`;\n\tconst hash = (sha1 as any).array(source).slice(12); // clip to 12 bytes\n\tconst id = (globalThis as any).btoa(String.fromCharCode(...hash)).substring(0, 11);\n\tpoint.id = id;\n\n\treturn id;\n};\n\nexport {\n\tSemanticType,\n\tglyphSemanticMapping,\n\tsemanticPriorities,\n\tPoint,\n\tSemanticPoint,\n\tNOTEHEAD_WIDTHS,\n\tglyphCenters,\n\tONE_D_SEMANTICS,\n\tSYSTEM_SEMANTIC_TYPES,\n\tCONFLICTION_GROUPS,\n\tSTAMP_SEMANTICS,\n\tSTAMP_RECTS,\n\thashSemanticPoint,\n\thashPageSemanticPoint,\n};\n","/*\n * [js-sha1]{@link https://github.com/emn178/js-sha1}\n *\n * @version 0.6.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function() {\n 'use strict';\n\n var root = typeof window === 'object' ? window : {};\n var NODE_JS = !root.JS_SHA1_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n }\n var COMMON_JS = !root.JS_SHA1_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n var createOutputMethod = function (outputType) {\n return function (message) {\n return new Sha1(true).update(message)[outputType]();\n };\n };\n\n var createMethod = function () {\n var method = createOutputMethod('hex');\n if (NODE_JS) {\n method = nodeWrap(method);\n }\n method.create = function () {\n return new Sha1();\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type);\n }\n return method;\n };\n\n var nodeWrap = function (method) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash('sha1').update(message, 'utf8').digest('hex');\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (message.length === undefined) {\n return method(message);\n }\n return crypto.createHash('sha1').update(new Buffer(message)).digest('hex');\n };\n return nodeMethod;\n };\n\n function Sha1(sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n this.h0 = 0x67452301;\n this.h1 = 0xEFCDAB89;\n this.h2 = 0x98BADCFE;\n this.h3 = 0x10325476;\n this.h4 = 0xC3D2E1F0;\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n }\n\n Sha1.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString = typeof(message) !== 'string';\n if (notString && message.constructor === root.ArrayBuffer) {\n message = new Uint8Array(message);\n }\n var code, index = 0, i, length = message.length || 0, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if(notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha1.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha1.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4;\n var f, j, t, blocks = this.blocks;\n\n for(j = 16; j < 80; ++j) {\n t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16];\n blocks[j] = (t << 1) | (t >>> 31);\n }\n\n for(j = 0; j < 20; j += 5) {\n f = (b & c) | ((~b) & d);\n t = (a << 5) | (a >>> 27);\n e = t + f + e + 1518500249 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = (a & b) | ((~a) & c);\n t = (e << 5) | (e >>> 27);\n d = t + f + d + 1518500249 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = (e & a) | ((~e) & b);\n t = (d << 5) | (d >>> 27);\n c = t + f + c + 1518500249 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = (d & e) | ((~d) & a);\n t = (c << 5) | (c >>> 27);\n b = t + f + b + 1518500249 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = (c & d) | ((~c) & e);\n t = (b << 5) | (b >>> 27);\n a = t + f + a + 1518500249 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n for(; j < 40; j += 5) {\n f = b ^ c ^ d;\n t = (a << 5) | (a >>> 27);\n e = t + f + e + 1859775393 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = a ^ b ^ c;\n t = (e << 5) | (e >>> 27);\n d = t + f + d + 1859775393 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = e ^ a ^ b;\n t = (d << 5) | (d >>> 27);\n c = t + f + c + 1859775393 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = d ^ e ^ a;\n t = (c << 5) | (c >>> 27);\n b = t + f + b + 1859775393 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = c ^ d ^ e;\n t = (b << 5) | (b >>> 27);\n a = t + f + a + 1859775393 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n for(; j < 60; j += 5) {\n f = (b & c) | (b & d) | (c & d);\n t = (a << 5) | (a >>> 27);\n e = t + f + e - 1894007588 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = (a & b) | (a & c) | (b & c);\n t = (e << 5) | (e >>> 27);\n d = t + f + d - 1894007588 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = (e & a) | (e & b) | (a & b);\n t = (d << 5) | (d >>> 27);\n c = t + f + c - 1894007588 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = (d & e) | (d & a) | (e & a);\n t = (c << 5) | (c >>> 27);\n b = t + f + b - 1894007588 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = (c & d) | (c & e) | (d & e);\n t = (b << 5) | (b >>> 27);\n a = t + f + a - 1894007588 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n for(; j < 80; j += 5) {\n f = b ^ c ^ d;\n t = (a << 5) | (a >>> 27);\n e = t + f + e - 899497514 + blocks[j] << 0;\n b = (b << 30) | (b >>> 2);\n\n f = a ^ b ^ c;\n t = (e << 5) | (e >>> 27);\n d = t + f + d - 899497514 + blocks[j + 1] << 0;\n a = (a << 30) | (a >>> 2);\n\n f = e ^ a ^ b;\n t = (d << 5) | (d >>> 27);\n c = t + f + c - 899497514 + blocks[j + 2] << 0;\n e = (e << 30) | (e >>> 2);\n\n f = d ^ e ^ a;\n t = (c << 5) | (c >>> 27);\n b = t + f + b - 899497514 + blocks[j + 3] << 0;\n d = (d << 30) | (d >>> 2);\n\n f = c ^ d ^ e;\n t = (b << 5) | (b >>> 27);\n a = t + f + a - 899497514 + blocks[j + 4] << 0;\n c = (c << 30) | (c >>> 2);\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n };\n\n Sha1.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n return HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F];\n };\n\n Sha1.prototype.toString = Sha1.prototype.hex;\n\n Sha1.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4;\n\n return [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF\n ];\n };\n\n Sha1.prototype.array = Sha1.prototype.digest;\n\n Sha1.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(20);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n return buffer;\n };\n\n var exports = createMethod();\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha1 = exports;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","import { Fraction, Pitch, Matrix2x3 } from './interfaces';\nimport { SemanticPoint, CONFLICTION_GROUPS } from './semanticPoint';\n\ntype Point2D = { x: number; y: number };\ntype PointSegment = Point2D[];\n\nconst POINT_CONFLICTION_DISTANCE = 0.4;\n\nconst roundNumber = (x: number, precision: number, min = -Infinity): number => Math.max(Math.round(x / precision) * precision, min);\n\nconst distance2D = (p1: Point2D, p2: Point2D): number => {\n\tconst dx = p1.x - p2.x;\n\tconst dy = p1.y - p2.y;\n\n\treturn Math.sqrt(dx * dx + dy * dy);\n};\n\nconst trans23 = (point: Point2D, matrix: Matrix2x3): Point2D => ({\n\tx: matrix[0] * point.x + matrix[2] * point.y + matrix[4],\n\ty: matrix[1] * point.x + matrix[3] * point.y + matrix[5],\n});\n\nconst gcd = (a: number, b: number): number => {\n\tif (!(Number.isInteger(a) && Number.isInteger(b))) {\n\t\tconsole.error('non-integer gcd:', a, b);\n\t\treturn 1;\n\t}\n\n\treturn b === 0 ? a : gcd(b, a % b);\n};\n\nconst frac = (numerator: number, denominator: number): Fraction => ({ numerator, denominator });\n\nconst reducedFraction = (n: number, d: number): Fraction => {\n\tn = Math.round(n);\n\td = Math.round(d);\n\n\tconst g = n !== 0 ? gcd(n, d) : d;\n\n\treturn frac(n / g, d / g);\n};\n\nconst printFraction = (f: Fraction): string => `${f.numerator}/${f.denominator}`;\n\nconst fractionMul = (value: number, fraction: Fraction): number => (fraction ? (value * fraction.numerator) / fraction.denominator : value);\n\nconst segmentPoints = (points: Point2D[], axis: 'x' | 'y'): PointSegment[] => {\n\tconst sorted = [...points].sort((p1, p2) => p1[axis] - p2[axis]);\n\n\tlet seg: Point2D[] = null;\n\tlet lastP = null;\n\n\treturn sorted.reduce((segments, p, i) => {\n\t\tif (!lastP) {\n\t\t\tlastP = p;\n\t\t\tseg = [p];\n\t\t} else {\n\t\t\tif (p[axis] - lastP[axis] < POINT_CONFLICTION_DISTANCE) seg.push(p);\n\t\t\telse {\n\t\t\t\tif (seg.length > 1) segments.push(seg);\n\t\t\t\tlastP = p;\n\t\t\t\tseg = [p];\n\t\t\t}\n\t\t}\n\n\t\tif (seg.length > 1 && i === sorted.length - 1) segments.push(seg);\n\n\t\treturn segments;\n\t}, []);\n};\n\nconst filterWeekPoints = (points: SemanticPoint[]): SemanticPoint[] => {\n\t//console.log(\"filterWeekPoints:\", points.map(p => `${p.semantic}, ${p.x}, ${p.y}`));\n\t//console.table(points.map(p => ({ ...p })));\n\n\tif (points.length <= 1) return [];\n\n\tlet rests = points.slice(1);\n\tconst group = CONFLICTION_GROUPS.find((group) => group.includes(points[0].semantic));\n\tif (!group) return filterWeekPoints(rests);\n\n\tconst weeks = rests.filter((p) => group.includes(p.semantic));\n\trests = rests.filter((p) => !group.includes(p.semantic));\n\n\treturn [...weeks, ...filterWeekPoints(rests)];\n};\n\nconst solveOverlapping = (points: SemanticPoint[]): SemanticPoint[] => {\n\tconst pset = new Set(points);\n\n\tconst xClusters = segmentPoints(points, 'x');\n\tconst clusters: SemanticPoint[][] = [].concat(...xClusters.map((c) => segmentPoints(c, 'y')));\n\tclusters.forEach((ps) => ps.sort((p1, p2) => p2.confidence - p1.confidence));\n\n\tclusters.forEach((ps) => {\n\t\tfilterWeekPoints(ps).forEach((p) => pset.delete(p));\n\t});\n\n\treturn Array.from(pset);\n};\n\nconst GROUP_N_TO_PITCH = [0, 2, 4, 5, 7, 9, 11];\nconst MIDDLE_C = 60;\n\nconst mod7 = (x) => {\n\tlet y = x % 7;\n\twhile (y < 0) y += 7;\n\n\treturn y;\n};\n\nconst mod12 = (x) => {\n\tlet y = x % 12;\n\twhile (y < 0) y += 12;\n\n\treturn y;\n};\n\nconst noteToPitch = ({ note, alter }: Pitch): number => {\n\tconst group = Math.floor(note / 7);\n\tconst gn = mod7(note);\n\n\treturn MIDDLE_C + group * 12 + GROUP_N_TO_PITCH[gn] + alter;\n};\n\nconst argmax = (data: number[]): number => {\n\tconst max = Math.max(...data);\n\n\treturn data.indexOf(max);\n};\n\nexport {\n\tPoint2D,\n\troundNumber,\n\tdistance2D,\n\ttrans23,\n\tsolveOverlapping,\n\tgcd,\n\tfrac,\n\treducedFraction,\n\tprintFraction,\n\tfractionMul,\n\tGROUP_N_TO_PITCH,\n\tMIDDLE_C,\n\tmod7,\n\tmod12,\n\tnoteToPitch,\n\targmax,\n};\n","interface Logger {\n\tdebug(message?: any, ...optionalParams: any[]): void;\n\tinfo(message?: any, ...optionalParams: any[]): void;\n\twarn(message?: any, ...optionalParams: any[]): void;\n\tgroup(...label: any[]): void;\n\tgroupCollapsed(...label: any[]): void;\n\tgroupEnd(): void;\n\tassert(expr: boolean, ...optionalParams: any[]): void;\n}\n\nclass DummyLogger implements Logger {\n\tdebug(..._: any[]): void {}\n\tgroup(..._: any[]): void {}\n\tgroupCollapsed(..._: any[]): void {}\n\tgroupEnd(): void {}\n\tinfo(..._: any[]): void {}\n\twarn(..._: any[]): void {}\n\tassert(..._: any[]): void {}\n}\n\nexport { Logger, DummyLogger };\n","import matrixInverse from 'matrix-inverse';\n\nimport { Fraction } from './interfaces';\nimport { fractionMul, reducedFraction, roundNumber } from './utils';\nimport { Logger, DummyLogger } from './logger';\n\ntype Matrix = number[][];\ntype EventID = number;\ntype Time = number;\ntype EventSet = Set;\ntype Equation = number[];\n\nconst EOM = -1; // end event id of measure\n\n//const GREAT_NUMBER = 16 * 9 * 5 * 7 * 11 * 13 * 17 * 19 * 23;\nconst GREAT_NUMBER = 1920;\n\nconst DURATION_MULTIPLIER = 128 * 3 * 5 * 7 * 11 * 13;\n\nconst floatToFrac = (x: number): Fraction => {\n\tconst n = Math.round(x * GREAT_NUMBER);\n\n\treturn reducedFraction(n, GREAT_NUMBER);\n};\n\nconst floatToTimeWarp = (x: number): Fraction => {\n\tif (x === 1) return null;\n\n\treturn floatToFrac(x);\n};\n\ninterface Stage {\n\tevents: EventID[];\n\tindex?: number;\n\ttick?: Time;\n}\n\nenum ActionType {\n\tPLACE,\n\tVERTICAL,\n\tHORIZONTAL,\n}\n\nclass Action {\n\ttype: ActionType;\n\te1: EventID;\n\te2?: EventID;\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tstatic P(e: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.PLACE,\n\t\t\te1: e,\n\t\t});\n\t}\n\n\tstatic V(e1: EventID, e2: EventID, order: number = 1): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.VERTICAL,\n\t\t\te1: order > 0 ? e1 : e2,\n\t\t\te2: order > 0 ? e2 : e1,\n\t\t});\n\t}\n\n\tstatic H(e1: EventID, e2: EventID): Action {\n\t\treturn new Action({\n\t\t\ttype: ActionType.HORIZONTAL,\n\t\t\te1,\n\t\t\te2,\n\t\t});\n\t}\n\n\tget id(): string {\n\t\tswitch (this.type) {\n\t\t\tcase ActionType.PLACE:\n\t\t\t\treturn this.e1.toString();\n\n\t\t\tcase ActionType.VERTICAL:\n\t\t\t\treturn `${this.e1}|${this.e2}`;\n\n\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\treturn `${this.e1}-${this.e2 >= 0 ? this.e2 : '.'}`;\n\t\t}\n\t}\n\n\tget events(): EventID[] {\n\t\treturn [this.e1, this.e2].filter(Number.isFinite);\n\t}\n}\n\ninterface Quota {\n\tcredits: number;\n}\n\ninterface BasicEvent {\n\tid: EventID;\n\tconfidence: number;\n\tshrinkness: number; // the possibility of time warp\n\tx: number;\n\tstaff?: number;\n\tduration: Time;\n}\n\ninterface Event extends BasicEvent {\n\tlowWarp: number;\n}\n\ninterface EventResult {\n\tid: EventID;\n\ttick: Time;\n\tendTick: Time;\n\ttickGroup: number;\n\ttimeWarp?: Fraction;\n}\n\ninterface Environment {\n\tevents: BasicEvent[];\n\texpectedDuration: Time;\n\tmeasureShrinkness: number;\n\tendX: number;\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n}\n\ninterface Solution {\n\tevents: EventResult[];\n\tvoices: EventID[][];\n\tduration: number;\n\n\tloss?: number;\n\tactions?: string;\n\tcredits?: number;\n\ttimes?: number;\n}\n\ninterface Status {\n\tactionAccessing: Map;\n\teventMap: { [id: number]: Event };\n\teventTendencies: number[];\n\tmatrixH: Matrix; // matrix N+1 x N\t\t[right][left]\n\tmatrixV: Matrix; // matrix N x N\n}\n\ninterface NodeBranch {\n\taction: Action;\n\tpossibility: number;\n}\n\ntype Path = EventID[];\n\ninterface InbalanceEquations {\n\tones: boolean[];\n\tinbalances: Equation[];\n}\n\ninterface SolverOptions {\n\tquota?: number;\n\tlogger?: Logger;\n}\n\nclass StageMatrix {\n\tmatrix: EventSet[][];\n\n\tstatic fromNode(node: PathNode, status: Status): StageMatrix {\n\t\tconst matrix = Array(node.stages.length)\n\t\t\t.fill(null)\n\t\t\t.map(() =>\n\t\t\t\tArray(node.stages.length)\n\t\t\t\t\t.fill(null)\n\t\t\t\t\t.map(() => new Set())\n\t\t\t);\n\n\t\tnode.actions\n\t\t\t.filter((action) => action.type === ActionType.HORIZONTAL)\n\t\t\t.forEach((action) => {\n\t\t\t\tconst stage1 = node.stages.findIndex((stage) => stage.events.includes(action.e1));\n\t\t\t\tconst stage2 = node.stages.findIndex((stage) => stage.events.includes(action.e2));\n\t\t\t\tconsole.assert(stage1 >= 0 && stage2 >= 0, 'invalid stages for H action:', node.id, node.stages, action);\n\n\t\t\t\tmatrix[stage1][stage2].add(action.e1);\n\t\t\t});\n\t\tmatrix[0][node.stages.length - 1].add(0); // the entire measure edge\n\n\t\tconst stagedEvents = node.stagedEvents;\n\t\tconst endHs = status.matrixH[status.matrixH.length - 1].filter((_, i) => !stagedEvents.has(i));\n\t\tconst endHP = Math.max(0, Math.max(...endHs) - 0.01);\n\n\t\tconst hActions = node.actions.filter((action) => action.type === ActionType.HORIZONTAL);\n\n\t\tconst pendingHeads = Object.keys(status.eventMap)\n\t\t\t.map(Number)\n\t\t\t.filter((eid) => !hActions.find((action) => action.e2 === eid));\n\n\t\t// edges to end stage\n\t\tnode.stages.forEach((stage) => {\n\t\t\tstage.events.forEach((eid) => {\n\t\t\t\tif (eid > 0) {\n\t\t\t\t\tconst act = hActions.find((action) => action.e1 === eid);\n\t\t\t\t\tif (!act && status.matrixH[status.matrixH.length - 1][eid] >= endHP) {\n\t\t\t\t\t\tif (!pendingHeads.some((id) => status.matrixH[id][eid] > 0)) matrix[stage.index][node.stages.length - 1].add(eid);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn new StageMatrix({ matrix });\n\t}\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\t}\n\n\tpathOf(x: number, y: number, target: number, ei: number = 0): Path {\n\t\tif (this.matrix[x][y].size) {\n\t\t\tconst eid = [...this.matrix[x][y]][ei];\n\t\t\tif (y === target) return [eid];\n\n\t\t\tfor (let yy = y + 1; yy <= target; ++yy) {\n\t\t\t\tconst sub = this.pathOf(y, yy, target);\n\t\t\t\tif (sub) return [eid, ...sub];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfindDoublePath(s1: number, s2: number): [Path, Path] {\n\t\tconst paths = [];\n\t\tfor (let t = s2; t >= s1 + 1; --t) {\n\t\t\tfor (let ei = 0; ei < this.matrix[s1][t].size; ++ei) {\n\t\t\t\tconst path = this.pathOf(s1, t, s2, ei);\n\t\t\t\tif (path) {\n\t\t\t\t\tpaths.push(path);\n\t\t\t\t\tif (paths.length === 2) return [paths[0], paths[1]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\treducePath(path: Path): void {\n\t\tthis.matrix.forEach((column) => column.forEach((set) => path.forEach((id) => set.delete(id))));\n\t}\n\n\ttoEquations(eventCount: number): Equation[] {\n\t\tconst equations: Equation[] = [];\n\n\t\tfor (let d = 1; d < this.matrix.length; d++) {\n\t\t\tfor (let s1 = 0; s1 < this.matrix.length - d; s1++) {\n\t\t\t\tconst s2 = s1 + d;\n\n\t\t\t\twhile (true) {\n\t\t\t\t\t// find closed loop from s1 to s2\n\t\t\t\t\tconst paths = this.findDoublePath(s1, s2);\n\t\t\t\t\tif (paths) {\n\t\t\t\t\t\tconst [path1, path2] = paths;\n\t\t\t\t\t\tconst equation = Array(eventCount).fill(0);\n\t\t\t\t\t\tpath1.forEach((eid) => (equation[eid] = 1));\n\t\t\t\t\t\tpath2.forEach((eid) => (equation[eid] = -1));\n\t\t\t\t\t\tequations.push(equation);\n\n\t\t\t\t\t\tthis.reducePath(path1.length > path2.length ? path1 : path2);\n\t\t\t\t\t} else break;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn equations;\n\t}\n}\n\nclass PathNode {\n\tlogger: Logger;\n\n\tparent: PathNode;\n\taction: Action;\n\tpossibility: number;\n\tchildren: PathNode[];\n\n\tstages: Stage[];\n\t//stageMatrix: StageMatrix;\n\tconstraints: Equation[];\n\n\tconstructor(data: any) {\n\t\tObject.assign(this, data);\n\n\t\tconsole.assert(this.logger, 'logger is null:', data);\n\t}\n\n\tget actions(): Action[] {\n\t\tconst last = this.parent ? this.parent.actions : [];\n\t\treturn this.action ? [...last, this.action] : last;\n\t}\n\n\tget id(): string {\n\t\tconst actionIds = this.actions.map((action) => action.id).sort();\n\t\treturn actionIds.join(' ');\n\t}\n\n\tget stagedEvents(): Set {\n\t\tconst set = new Set();\n\t\tif (this.stages) this.stages.forEach((stage) => stage.events.forEach((eid) => eid >= 0 && set.add(eid)));\n\n\t\treturn set;\n\t}\n\n\tlike(ids: string): boolean {\n\t\tconst actionIds = ids.split(' ').sort();\n\t\treturn actionIds.join(' ') === this.id;\n\t}\n\n\tconstructStages(status: Status): void {\n\t\tthis.stages = [{ events: [EOM] }];\n\n\t\tfor (const action of this.actions) {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase ActionType.PLACE:\n\t\t\t\t\tthis.stages.unshift({ events: [action.e1] });\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.VERTICAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid V action:', this.stages, action);\n\n\t\t\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\t\t\tstage1.events.push(...stage2.events);\n\t\t\t\t\t\t\tstage2.events = null;\n\t\t\t\t\t\t\tthis.stages = this.stages.filter((stage) => stage.events);\n\t\t\t\t\t\t} else if (!stage1) stage2.events.unshift(action.e1);\n\t\t\t\t\t\telse if (!stage2) stage1.events.push(action.e2);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase ActionType.HORIZONTAL:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(action.e1));\n\t\t\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(action.e2));\n\t\t\t\t\t\tconsole.assert(stage1 || stage2, 'invalid H action:', this.stages, action);\n\n\t\t\t\t\t\tconst newStage = (eid) => {\n\t\t\t\t\t\t\tconsole.assert(status.eventMap[eid], 'invalid event id:', action.id, eid, status.eventMap);\n\t\t\t\t\t\t\tconst x = status.eventMap[eid].x;\n\n\t\t\t\t\t\t\tconst stage = this.stages.find(\n\t\t\t\t\t\t\t\t(s) => s.events.some((e) => e > 0 && status.eventMap[e].x <= x) && s.events.some((e) => e > 0 && status.eventMap[e].x >= x)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (stage) stage.events.push(eid);\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconst newStage = { events: [eid] };\n\t\t\t\t\t\t\t\tconst si = this.stages.findIndex((s) => s.events[0] === EOM || status.eventMap[s.events[0]].x >= x);\n\t\t\t\t\t\t\t\tthis.stages.splice(si, 0, newStage);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (!stage1) newStage(action.e1);\n\t\t\t\t\t\tif (!stage2) newStage(action.e2);\n\n\t\t\t\t\t\t/*if (this.stages.some((s, si) => si < this.stages.length - 2\n\t\t\t\t\t&& s.events.some(e1 => this.stages[si + 1].events.some(e2 => status.eventMap[e2].x <= status.eventMap[e1].x))))\n\t\t\t\t\tdebugger;*/\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.stages.forEach((stage, i) => (stage.index = i));\n\t}\n\n\tconstructConstraints(status: Status): void {\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst stageMatrix = StageMatrix.fromNode(this, status);\n\t\tconst equations = stageMatrix.toEquations(eventCount);\n\n\t\tconst factors = Array(eventCount)\n\t\t\t.fill(null)\n\t\t\t.map((_, id) => status.eventMap[id].duration);\n\t\tthis.constraints = equations.map((equation) => equation.map((it, i) => it * factors[i]));\n\t}\n\n\tinbalancesConstraints(status: Status): InbalanceEquations {\n\t\tconsole.assert(this.constraints, 'constraints not constructed.');\n\n\t\tconst eventCount = Object.keys(status.eventMap).length;\n\t\tconst ones = Array(eventCount).fill(true);\n\t\tconst fixed = Array(eventCount).fill(false);\n\n\t\tconst inbalances: Equation[] = [];\n\n\t\tfor (const constraint of this.constraints) {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum !== 0) {\n\t\t\t\tconst c = sum < 0 ? constraint.map((it) => -it) : constraint;\n\t\t\t\tif (c[0] > 0) continue; // entire measure edge usually is larger than others, no effect\n\n\t\t\t\tinbalances.push(c);\n\n\t\t\t\t// set ones for tight items\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tfixed[i] = fixed[i] || it < 0;\n\t\t\t\t\tif (it) ones[i] = it < 0 || fixed[i];\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// pick out influenced equations\n\t\tthis.constraints.forEach((constraint) => {\n\t\t\tconst sum = constraint.reduce((sum, it) => sum + it, 0);\n\t\t\tif (sum === 0 && !constraint[0]) {\n\t\t\t\tif (constraint.some((it, i) => it && !ones[i])) {\n\t\t\t\t\tconstraint.forEach((it, i) => it && (ones[i] = false));\n\t\t\t\t\tinbalances.push(constraint);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn { ones, inbalances };\n\t}\n\n\tsolveEquations({ ones, inbalances }: InbalanceEquations): number[] {\n\t\tif (!inbalances.length) return ones.map(() => 1);\n\n\t\tconst xis = ones\n\t\t\t.map((fixed, i) => ({ fixed, i }))\n\t\t\t.filter(({ fixed }) => !fixed)\n\t\t\t.map(({ i }) => i)\n\t\t\t.filter((i) => inbalances.some((items) => items[i] !== 0));\n\t\tif (!xis.length) return ones.map(() => 1);\n\n\t\tconst factors = xis.map((i) => Math.abs(inbalances.find((items) => items[i] !== 0)[i]));\n\n\t\ttype Line = { line: number[]; bias: number };\n\n\t\tconst equationMap = new Map();\n\t\tlet conflicted = false;\n\n\t\tconst lines: Line[] = inbalances\n\t\t\t.map((items) => {\n\t\t\t\tconst line = items.filter((_, i) => xis.includes(i));\n\t\t\t\tconst bias = -items.reduce((sum, it, i) => sum + (xis.includes(i) ? 0 : it), 0);\n\n\t\t\t\treturn { line, bias };\n\t\t\t\t// remove duplicated equations\n\t\t\t})\n\t\t\t.filter(({ line, bias }) => {\n\t\t\t\tif (line.every((it) => it === 0)) return false;\n\n\t\t\t\tconst id = line.join(',');\n\t\t\t\tif (equationMap.has(id)) {\n\t\t\t\t\tconflicted = equationMap.get(id) !== bias;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tequationMap.set(id, bias);\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tif (conflicted) return null;\n\n\t\tconst squareLines = lines.slice(0, xis.length);\n\t\tconst restLines = lines.slice(xis.length);\n\t\tif (squareLines.length < xis.length) {\n\t\t\tconst candidateLines = [];\n\t\t\tfor (let i1 = 0; i1 < xis.length - 1; ++i1) {\n\t\t\t\tconst i2 = i1 + 1;\n\t\t\t\tconst line = {\n\t\t\t\t\tline: xis.map((_, i) => (i === i1 ? 1 : i === i2 ? -1 : 0)),\n\t\t\t\t\tbias: 0,\n\t\t\t\t\tprior: (factors[i1] + factors[i2]) / DURATION_MULTIPLIER,\n\t\t\t\t};\n\t\t\t\tif (squareLines.some((sl) => sl.line[i1] && sl.line[i2])) line.prior -= 10;\n\t\t\t\tif (squareLines.some((sl) => sl.line.filter(Number).length === 1 && (sl.line[i1] || sl.line[i2]))) line.prior += 1;\n\t\t\t\tcandidateLines.push(line);\n\t\t\t}\n\t\t\tcandidateLines.sort((c1, c2) => c1.prior - c2.prior);\n\n\t\t\tsquareLines.push(...candidateLines.slice(0, xis.length - squareLines.length));\n\t\t}\n\t\t//console.assert(squareLines.length, \"squareLines is empty.\", lines, xis, equationMap, inbalances);\n\n\t\tconst matrix = squareLines.map(({ line }) => line);\n\t\tconst bias = squareLines.map(({ bias }) => bias);\n\n\t\tconst invert = matrixInverse(matrix);\n\t\tif (!invert) {\n\t\t\tthis.logger.warn('null invert:', matrix);\n\t\t\t//debugger;\n\t\t\treturn null;\n\t\t}\n\t\tconst solution = invert.map((row) => row.reduce((sum, it, i) => sum + it * bias[i], 0));\n\t\t//console.log(\"solution:\", matrix, invert, solution);\n\n\t\tif (restLines.length) {\n\t\t\tif (restLines.some((line) => Math.abs(line.line.reduce((sum, it, i) => sum + it * solution[i], 0)) > 1e-3)) {\n\t\t\t\t//console.debug(\"rest lines not satisfied:\", restLines, solution);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tconst result = ones.map(() => 1);\n\t\txis.forEach((xi, i) => (result[xi] = solution[i]));\n\n\t\treturn result;\n\t}\n\n\toptimallySolve(status: Status): number[] {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 1-2 9|1 2-3 3-4 9-10 4-5 5-6 6-7 7-8 8-. 12|6 11-12 10-11\"))\n\t\t//\tdebugger;\n\n\t\tconst shrinknesses = ones.map((fixed, id) => (fixed ? -1 : roundNumber(status.eventMap[id].shrinkness, 0.01)));\n\t\tconst shrinkMap = shrinknesses.reduce((map, shrinkness, id) => {\n\t\t\tif (shrinkness >= 0) {\n\t\t\t\tmap[shrinkness] = map[shrinkness] || [];\n\t\t\t\tmap[shrinkness].push(id);\n\t\t\t}\n\n\t\t\treturn map;\n\t\t}, {});\n\t\tconst groups = Object.entries(shrinkMap)\n\t\t\t.sort((p1, p2) => Number(p2[0]) - Number(p1[0]))\n\t\t\t.map((pair) => pair[1]);\n\t\t//console.log(\"groups:\", groups, shrinknesses);\n\n\t\tfor (let released = 1; released < groups.length; ++released) {\n\t\t\tconst releasedIds = [].concat(...groups.slice(0, released));\n\t\t\tconst fixed = ones.map((_, id) => !releasedIds.includes(id));\n\t\t\tconst warps = this.solveEquations({ ones: fixed, inbalances });\n\n\t\t\tif (warps && warps.every((it, i) => it <= 1 && it > status.eventMap[i].lowWarp)) return warps;\n\t\t}\n\n\t\treturn this.solveEquations({ ones, inbalances });\n\t}\n\n\tisConflicted(status: Status): boolean {\n\t\tconst { ones, inbalances } = this.inbalancesConstraints(status);\n\n\t\t//if (this.like(\"2 8|2 8-9 3|9 2-3 3-4 10|4 4-5 5|11 11-12 6|12 5-6 10-11 9-10 6-7\"))\n\t\t//\tdebugger;\n\n\t\tfor (const c of inbalances) {\n\t\t\t// sum with low warps\n\t\t\tconst lowSum = c.reduce((sum, it, i) => sum + it * (ones[i] || it <= 0 ? 1 : status.eventMap[i].lowWarp), 0);\n\n\t\t\tif (lowSum >= 0) {\n\t\t\t\t// mark events' broken tendency\n\t\t\t\tc.forEach((it, i) => {\n\t\t\t\t\tif (it) status.eventTendencies[i] += it > 0 ? 1 : -1;\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (!inbalances.length) return false;\n\n\t\tconst timeWarps = this.solveEquations({ ones, inbalances });\n\t\tif (!timeWarps) return true;\n\n\t\treturn !timeWarps.every((it, i) => it > status.eventMap[i].lowWarp && it <= 1);\n\t}\n\n\tgetSolution(status: Status): Solution {\n\t\tconst actionKey = (action) =>\n\t\t\tstatus.eventMap[action.e2]\n\t\t\t\t? status.eventMap[action.e2].x + Math.abs(status.eventMap[action.e2].x - status.eventMap[action.e1].x) * 0.06\n\t\t\t\t: status.eventMap[action.e1].x + 1e4;\n\t\tconst hacts = this.actions.filter((action) => action.type === ActionType.HORIZONTAL).sort((a1, a2) => actionKey(a1) - actionKey(a2));\n\t\tconst hmap = hacts.reduce((map, act) => ({ ...map, [act.e1]: act.e2 }), {});\n\t\tconst startEs = new Set([...Object.keys(hmap)].map(Number));\n\t\thacts.forEach((act) => startEs.delete(act.e2));\n\t\tthis.stages[0].events.forEach((eid) => eid > 0 && startEs.add(eid));\n\n\t\tlet voices = [...startEs].map((se) => {\n\t\t\tconst voice = [se];\n\n\t\t\tlet x = se;\n\t\t\twhile (hmap[x]) {\n\t\t\t\tx = hmap[x];\n\t\t\t\tif (x < 0 || voice.includes(x)) break;\n\n\t\t\t\tvoice.push(x);\n\t\t\t}\n\n\t\t\treturn voice;\n\t\t});\n\n\t\tconst events: EventResult[] = Object.values(status.eventMap)\n\t\t\t.filter((e) => e.id > 0)\n\t\t\t.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\ttick: null,\n\t\t\t\tendTick: null,\n\t\t\t\ttickGroup: null,\n\t\t\t\ttimeWarp: null,\n\t\t\t}));\n\t\tconst eventMap: { [id: number]: EventResult } = events\n\t\t\t.filter((e) => voices.some((voice) => voice.includes(e.id)) || hacts.some((act) => [act.e1, act.e2].includes(e.id)))\n\t\t\t.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.stages.forEach((stage, si) => stage.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tickGroup = si)));\n\n\t\tthis.stages[0].tick = 0;\n\t\tthis.stages[0].events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = 0));\n\n\t\t// solve time warps\n\t\tconst timeWarps = this.optimallySolve(status);\n\t\tevents.forEach((e) => (e.timeWarp = floatToTimeWarp(timeWarps[e.id])));\n\n\t\t//if (this.like(\"1 12|1 1-2 9|2 2-3 13|3 3-4 4-5 10|5 14|10 10-11 8-9 14-15 15|6 6-7 7-. 13-14 5-6 12-13 9-10\"))\n\t\t//\tdebugger;\n\n\t\t// solve stage ticks\n\t\tconst estages = this.stages.slice(0, this.stages.length - 1);\n\t\tconst solveStages = (): boolean => {\n\t\t\tif (estages.every((stage) => Number.isFinite(stage.tick))) return false;\n\n\t\t\tlet changed = false;\n\n\t\t\t// forward\n\t\t\thacts.forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (Number.isFinite(stage1.tick) && !Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage2.tick = stage1.tick + fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage2.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage2.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// backward\n\t\t\t[...hacts].reverse().forEach((act) => {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(act.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(act.e2));\n\t\t\t\tif (!Number.isFinite(stage1.tick) && Number.isFinite(stage2.tick)) {\n\t\t\t\t\tstage1.tick = stage2.tick - fractionMul(status.eventMap[act.e1].duration, eventMap[act.e1].timeWarp);\n\t\t\t\t\tstage1.events.forEach((eid) => eventMap[eid] && (eventMap[eid].tick = stage1.tick));\n\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn changed;\n\t\t};\n\t\twhile (solveStages());\n\n\t\tconsole.assert(\n\t\t\testages.every((stage) => Number.isFinite(stage.tick)),\n\t\t\t'stage ticks not all solved:',\n\t\t\tthis.stages,\n\t\t\tthis.id\n\t\t);\n\t\tevents\n\t\t\t.filter((event) => Number.isFinite(event.tick))\n\t\t\t.forEach((event) => (event.endTick = event.tick + fractionMul(status.eventMap[event.id].duration, event.timeWarp)));\n\n\t\t// clip out of bound events\n\t\tconst measureDuration = status.eventMap[0].duration;\n\t\tvoices.forEach((voice) => {\n\t\t\tconst outEI = voice.findIndex((eid) => eventMap[eid].endTick > measureDuration);\n\t\t\tif (outEI >= 0) {\n\t\t\t\tconst es = voice.splice(outEI, voice.length - outEI);\n\t\t\t\tes.forEach((eid) => {\n\t\t\t\t\teventMap[eid].tick = null;\n\t\t\t\t\teventMap[eid].endTick = null;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tvoices = voices.filter((voice) => voice.length);\n\n\t\tconst duration = Math.max(0, ...events.map((e) => e.endTick).filter(Number.isFinite));\n\t\t//console.log(\"getSolution:\", this);\n\t\tthis.logger.debug(String.fromCodePoint(0x1f34e), this.id, timeWarps);\n\n\t\treturn {\n\t\t\tvoices,\n\t\t\tevents,\n\t\t\tduration,\n\t\t\tactions: this.actions.map((action) => action.id).join(' '),\n\t\t};\n\t}\n\n\tdeduce(status: Status, quota: Quota): Solution {\n\t\tif (!this.stages) this.constructStages(status);\n\t\t//console.log(\"deduce:\", status);\n\n\t\t// increase access counting\n\t\tconst access = status.actionAccessing.get(this.id) || { times: 0 };\n\t\t++access.times;\n\t\tstatus.actionAccessing.set(this.id, access);\n\n\t\tthis.constructConstraints(status);\n\t\t//console.log(\"constraints:\", this.id, this.stages, this.constraints);\n\n\t\tif (this.isConflicted(status)) {\n\t\t\taccess.closed = true;\n\t\t\tthis.logger.info(this.action.id, '\\u274c');\n\t\t\treturn null;\n\t\t}\n\n\t\t//const newStatus = status;\n\t\tthis.logger.group(this.action && this.action.id);\n\n\t\tif (quota.credits > 0) {\n\t\t\t--quota.credits;\n\n\t\t\tif (!this.children) this.expand(status);\n\n\t\t\tthis.children = this.children.filter((node) => !status.actionAccessing.get(node.id) || !status.actionAccessing.get(node.id).closed);\n\t\t\tif (this.children.length) {\n\t\t\t\tconst p = (node: PathNode): number => node.possibility / ((status.actionAccessing.get(node.id) || { times: 0 }).times + 1);\n\t\t\t\tthis.children.sort((n1, n2) => p(n2) - p(n1));\n\n\t\t\t\tfor (const child of this.children) {\n\t\t\t\t\tconst solution = child.deduce(status, quota);\n\t\t\t\t\tif (solution) {\n\t\t\t\t\t\tthis.logger.groupEnd();\n\t\t\t\t\t\treturn solution;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (quota.credits <= 0) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//else\n\t\t\t//\tconsole.debug(\"got the leaf:\", this, status);\n\t\t} else this.logger.debug('quota exhausted.');\n\n\t\tthis.logger.groupEnd();\n\n\t\taccess.closed = true;\n\n\t\treturn this.getSolution(status);\n\t}\n\n\texpand(status: Status): void {\n\t\t//this.action.events.forEach(eid => status.pendingEvents.delete(eid));\n\t\tthis.constructStages(status);\n\n\t\tconst { eventMap, matrixV, matrixH } = status;\n\t\tconst stagedEvents = this.stagedEvents;\n\n\t\tconst branches: NodeBranch[] = [];\n\t\tconst appendBranch = (branch: NodeBranch): void => {\n\t\t\tif (!this.actions.some((a) => a.id === branch.action.id) && !branches.some((b) => b.action.id === branch.action.id)) {\n\t\t\t\tconst stage1 = this.stages.find((stage) => stage.events.includes(branch.action.e1));\n\t\t\t\tconst stage2 = this.stages.find((stage) => stage.events.includes(branch.action.e2));\n\t\t\t\tif (stage1 === stage2 || (stage1 && stage2 && stage1.index >= stage2.index)) return;\n\n\t\t\t\tif (stage1 && stage2) {\n\t\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\t\tif (stage2.index - stage1.index > 1) return;\n\t\t\t\t\t\tif (this.actions.some((a) => stage1.events.includes(a.e1) && stage2.events.includes(a.e2))) return;\n\t\t\t\t\t} else if (branch.action.type === ActionType.HORIZONTAL) {\n\t\t\t\t\t\tif (stage1.index > stage2.index) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tbranch.action.type === ActionType.HORIZONTAL &&\n\t\t\t\t\tthis.actions.some(\n\t\t\t\t\t\t(a) =>\n\t\t\t\t\t\t\ta.type === ActionType.HORIZONTAL &&\n\t\t\t\t\t\t\t(a.e1 === branch.action.e1 || a.e2 === branch.action.e2 || (a.e1 === branch.action.e2 && a.e2 === branch.action.e1))\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\treturn;\n\n\t\t\t\t// exclude 2 too far away events by vertical\n\t\t\t\tif (branch.action.type === ActionType.VERTICAL) {\n\t\t\t\t\tif (stage1) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage1.events.map((e) => matrixV[branch.action.e2][e]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (stage2) {\n\t\t\t\t\t\tbranch.possibility = Math.min(branch.possibility, ...stage2.events.map((e) => matrixV[e][branch.action.e1]));\n\t\t\t\t\t\tif (branch.possibility <= 0) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbranches.push(branch);\n\t\t\t}\n\t\t};\n\n\t\tfor (const eid of stagedEvents) {\n\t\t\tif (eid < 0) continue;\n\n\t\t\tmatrixV[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0 && eid !== id) appendBranch({ action: Action.V(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixV.forEach((ps, id) => {\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.V(eid, id), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH[eid].forEach((p, id) => {\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(id, eid), possibility: p });\n\t\t\t});\n\n\t\t\tmatrixH.forEach((ps, id) => {\n\t\t\t\tid = id >= Object.keys(eventMap).length ? -1 : id;\n\t\t\t\tconst p = ps[eid];\n\t\t\t\tif (p > 0) appendBranch({ action: Action.H(eid, id), possibility: p });\n\t\t\t});\n\t\t}\n\n\t\t// If branches not contains extending actions, clear it.\n\t\t//\tBecause pure inner vertical action may be harmful\n\t\tif (\n\t\t\t!branches.some(\n\t\t\t\t(branch) =>\n\t\t\t\t\t[ActionType.HORIZONTAL, ActionType.PLACE].includes(branch.action.type) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e1) ||\n\t\t\t\t\t!stagedEvents.has(branch.action.e2)\n\t\t\t)\n\t\t) {\n\t\t\tthis.children = [];\n\t\t\treturn;\n\t\t}\n\n\t\t//console.table(branches.map(b => [b.action.id, b.possibility]));\n\t\t//console.log(\"branches:\", branches.map(b => b.action.id).join(\", \"), \"\\n\", this.actions.map(a => a.id).join(\", \"));\n\t\tthis.children = branches.map((branch) => new PathNode({ logger: this.logger, parent: this, ...branch }));\n\t}\n}\n\nclass Solver {\n\tquota: number;\n\tlogger: Logger;\n\n\tevents: Event[];\n\tmatrixH: Matrix;\n\tmatrixV: Matrix;\n\txSpan: number;\n\n\teventMap: { [id: number]: Event };\n\tactionAccessing: Map;\n\n\tpathRoot: PathNode;\n\n\tconstructor(env: Environment, { quota = 1000, logger = new DummyLogger() }: SolverOptions = {}) {\n\t\tthis.quota = quota;\n\t\tthis.logger = logger;\n\n\t\tconst event0 = {\n\t\t\tid: 0,\n\t\t\tx: 0,\n\t\t\tconfidence: 1,\n\t\t\tshrinkness: env.measureShrinkness,\n\t\t\tduration: env.expectedDuration,\n\t\t\tlowWarp: 0,\n\t\t};\n\n\t\tthis.events = [\n\t\t\tevent0,\n\t\t\t...env.events.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\tx: e.x,\n\t\t\t\tconfidence: e.confidence,\n\t\t\t\tshrinkness: e.shrinkness,\n\t\t\t\tstaff: e.staff,\n\t\t\t\tduration: e.duration,\n\t\t\t\tlowWarp: 0.5,\n\t\t\t})),\n\t\t];\n\t\tthis.eventMap = this.events.reduce((map, e) => ({ ...map, [e.id]: e }), {});\n\n\t\tthis.matrixH = env.matrixH;\n\t\tthis.matrixV = env.matrixV;\n\n\t\tthis.xSpan = env.endX - Math.min(env.endX - 1, ...env.events.map((e) => e.x));\n\n\t\tthis.actionAccessing = new Map();\n\t}\n\n\tsolve(): Solution {\n\t\t// construct path root\n\t\tthis.pathRoot = new PathNode({\n\t\t\tlogger: this.logger,\n\t\t\taction: null,\n\t\t});\n\t\tthis.pathRoot.children = this.events.slice(1).map(\n\t\t\t(event) =>\n\t\t\t\tnew PathNode({\n\t\t\t\t\tlogger: this.logger,\n\t\t\t\t\tparent: this.pathRoot,\n\t\t\t\t\taction: Action.P(event.id),\n\t\t\t\t\tpossibility: this.matrixV[event.id].reduce((sum, p) => sum + p, 0),\n\t\t\t\t})\n\t\t);\n\n\t\tlet bestSolution: Solution = null;\n\n\t\tthis.logger.groupCollapsed('solve');\n\n\t\tconst eventTendencies = Array(this.events.length).fill(0);\n\n\t\tconst quota = { credits: this.quota, times: 0 };\n\t\twhile (quota.credits > 0) {\n\t\t\t++quota.times;\n\n\t\t\tconst status = {\n\t\t\t\teventMap: this.eventMap,\n\t\t\t\tmatrixH: this.matrixH,\n\t\t\t\tmatrixV: this.matrixV,\n\t\t\t\tactionAccessing: this.actionAccessing,\n\t\t\t\teventTendencies,\n\t\t\t};\n\n\t\t\tconst solution = this.pathRoot.deduce(status, quota);\n\t\t\tsolution.credits = this.quota - quota.credits;\n\t\t\tsolution.times = quota.times;\n\t\t\tthis.evaluateSolution(solution);\n\t\t\tthis.logger.debug('loss:', solution.loss);\n\n\t\t\tbestSolution = !bestSolution || solution.loss < bestSolution.loss ? solution : bestSolution;\n\t\t\tif (!bestSolution.loss) break;\n\n\t\t\t// check if searching tree traversed\n\t\t\tif (this.actionAccessing.get('').closed) break;\n\t\t}\n\n\t\tthis.logger.groupEnd();\n\t\tthis.logger.debug('solution', bestSolution && bestSolution.loss, bestSolution);\n\t\tthis.logger.debug('cost:', this.quota - quota.credits);\n\n\t\tthis.logger.debug(\n\t\t\t'eventTendencies:',\n\t\t\teventTendencies.map((t) => t / quota.times)\n\t\t);\n\n\t\treturn bestSolution;\n\t}\n\n\tevaluateSolution(solution: Solution): void {\n\t\tsolution.loss = 0;\n\n\t\ttype EventR = Event & EventResult;\n\t\tconst eventMap: Record = solution.events.reduce((map, e) => ({ ...map, [e.id]: { ...e, ...this.eventMap[e.id] } }), {});\n\n\t\t/*// minus tick\n\t\tconst minuses = solution.events.filter((e) => e.tick < 0).length;\n\t\tsolution.loss += minuses * 1000;*/\n\n\t\t// minus tick rates penalty\n\t\tconst events = solution.events.filter((event) => Number.isFinite(event.tick)).map((event) => eventMap[event.id]);\n\t\tconst sevents: Record = events.reduce((map, event) => {\n\t\t\tmap[event.staff] = map[event.staff] || [];\n\t\t\tmap[event.staff].push(event);\n\t\t\treturn map;\n\t\t}, {});\n\t\tObject.values(sevents).forEach((es) => {\n\t\t\tconst ses = es.sort((e1, e2) => e1.x - e2.x).slice(0, es.length - 1);\n\t\t\tses.forEach((e1, i) => {\n\t\t\t\tconst e2 = es[i + 1];\n\t\t\t\tif (e2.tick < e1.tick) solution.loss += 1000;\n\t\t\t});\n\t\t});\n\n\t\tconst times = new Map();\n\t\tsolution.events.forEach((event) => {\n\t\t\tif (!Number.isFinite(event.tick) || solution.voices.every((voice) => !voice.includes(event.id)))\n\t\t\t\tsolution.loss += 100 * eventMap[event.id].confidence;\n\n\t\t\tif (event.timeWarp) {\n\t\t\t\tconst { numerator, denominator } = event.timeWarp;\n\t\t\t\tconst shrinkness = eventMap[event.id].shrinkness;\n\t\t\t\ttimes.set(numerator, Math.max(times.get(numerator) || 0, 1 - shrinkness));\n\t\t\t\ttimes.set(denominator, Math.max(times.get(denominator) || 0, 1 - shrinkness));\n\t\t\t}\n\t\t});\n\n\t\t// partial measure penalty\n\t\tconst partialFrac = reducedFraction(solution.duration, this.eventMap[0].duration);\n\t\ttimes.set(partialFrac.numerator, Math.max(times.get(partialFrac.numerator) || 0, 1 - this.eventMap[0].shrinkness));\n\t\ttimes.set(partialFrac.denominator, Math.max(times.get(partialFrac.denominator) || 0, 1 - this.eventMap[0].shrinkness));\n\n\t\tfor (const [n, weight] of times.entries()) {\n\t\t\tif (n > 1) solution.loss += Math.log(n) * weight;\n\t\t}\n\n\t\tlet spaceTime = 0;\n\t\tlet staffAlters = 0;\n\t\tsolution.voices.forEach((voice) => {\n\t\t\tconsole.assert(eventMap[voice[0]], 'invalid voice:', voice, Object.keys(eventMap));\n\n\t\t\tconst start = Math.abs(eventMap[voice[0]].tick); // abs: penalty for minus start\n\t\t\tconst end = eventMap[voice[voice.length - 1]].endTick;\n\n\t\t\tspaceTime += Math.max(0, start + solution.duration - end);\n\n\t\t\t// staff alternation penalty\n\t\t\tlet staff = null;\n\t\t\tvoice.forEach((id) => {\n\t\t\t\tconst event = eventMap[id];\n\t\t\t\tif (event.staff !== staff) {\n\t\t\t\t\tif (staff !== null) ++staffAlters;\n\t\t\t\t\tstaff = event.staff;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tsolution.loss += (spaceTime * 10) / DURATION_MULTIPLIER;\n\t\tsolution.loss += 5 ** staffAlters - 1;\n\n\t\t// tick twist\n\t\tconst eventsXOrder = [...events].sort((e1, e2) => e1.x - e2.x);\n\t\tconst tickTwists = eventsXOrder.slice(1).map((e2, i) => {\n\t\t\tconst e1 = eventsXOrder[i];\n\t\t\tconst dx = e2.x - e1.x;\n\t\t\tconst dt = e2.tick - e1.tick;\n\n\t\t\tif (!dt) return dx / this.xSpan;\n\n\t\t\tconst rate = Math.atan2(dt / solution.duration, dx / this.xSpan);\n\n\t\t\treturn ((rate * 4) / Math.PI - 1) ** 2;\n\t\t});\n\t\tconst tickTwist = Math.max(...tickTwists, 0);\n\t\tsolution.loss += tickTwist ** 2;\n\n\t\tconsole.assert(solution.loss >= 0, 'Invalid solution loss!!!', solution.loss, times, spaceTime, staffAlters);\n\t\tif (solution.loss < 0) solution.loss = Infinity;\n\t}\n}\n\nexport { SolverOptions, Solver };\n","import * as EquationSolver from './equationSolver';\nimport { EquationPolicy } from './spartitoMeasure';\n\nconst solveStaffGroup = (staffGroup: EquationPolicy.StaffGroup, options: EquationPolicy.RegulatorOptions): EquationPolicy.StaffGroupSolution => {\n\tif (!staffGroup.events.length) {\n\t\treturn {\n\t\t\tevents: [],\n\t\t\tvoices: [],\n\t\t\tduration: 0,\n\t\t};\n\t}\n\n\tconst solver = new EquationSolver.Solver(staffGroup, options);\n\n\treturn solver.solve();\n};\n\n// Plain postMessage worker (Vite-compatible, no workerpool dependency)\nself.onmessage = (e: MessageEvent) => {\n\tconst { id, args } = e.data;\n\ttry {\n\t\tconst result = solveStaffGroup(args[0], args[1]);\n\t\tself.postMessage({ id, result });\n\t} catch (error: any) {\n\t\tself.postMessage({ id, error: error.message });\n\t}\n};\n","console.info(`%cstarry-omr%c v1.0.0 2026-04-23T11:21:11.382Z`, 'color:#fff; background-color: #555;padding: 5px;border-radius: 3px 0 0 3px;', 'color: #fff; background-color: #007dc6;padding: 5px;border-radius: 0 3px 3px 0;');\nimport '../../../src/starry/solveStaffGroup.worker';\n"],"names":["Sylvester","Matrix","create","elements","setElements","I","n","j","els","i","prototype","dup","this","isSquare","cols","length","toRightTriangular","p","M","np","push","multiplier","determinant","det","isSingular","augment","matrix","T","nj","inverse","divisor","new_element","inverse_elements","matrixInverse","mat","SemanticType","root","window","NODE_JS","JS_SHA1_NO_NODE_JS","process","versions","node","global","COMMON_JS","JS_SHA1_NO_COMMON_JS","module","exports","HEX_CHARS","split","EXTRA","SHIFT","OUTPUT_TYPES","blocks","createOutputMethod","outputType","message","Sha1","update","createMethod","method","nodeWrap","type","crypto","eval","Buffer","nodeMethod","createHash","digest","constructor","ArrayBuffer","Uint8Array","undefined","sharedMemory","h0","h1","h2","h3","h4","block","start","bytes","hBytes","finalized","hashed","first","notString","code","index","charCodeAt","lastByteIndex","hash","finalize","t","a","b","c","d","e","hex","toString","array","arrayBuffer","buffer","dataView","DataView","setUint32","sha1","BarMeasure","vline_BarMeasure","vline_BarTerminal","vline_BarSegment","vline_VoltaLeft","vline_VoltaRight","VoltaAlternativeBegin","st","NoteheadS0","NoteheadS1","NoteheadS2","Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","ScriptStaccatissimo","TimesigZero","TimesigOne","TimesigTwo","TimesigThree","TimesigFour","TimesigFive","TimesigSix","TimesigSeven","TimesigEight","TimesigNine","Rest0","Rest1","Rest2","Rest3","Rest4","Rest5","Rest6","Rest0W","RestM1","SignInterval","SignLined","BeamLeft","BeamContinue","BeamRight","ClefG","ClefF","ClefC","Dot","AccNatural","AccSharp","AccDoublesharp","AccFlat","AccFlatflat","TimesigC44","TimesigC22","OctaveShift8","OctaveShift0","f","m","r","s","z","ScriptFermata","ScriptShortFermata","ScriptSforzato","ScriptStaccato","ScriptTurn","ScriptTrill","ScriptSegno","ScriptCoda","ScriptArpeggio","ScriptPrall","ScriptMordent","ScriptMarcato","ScriptTenuto","ScriptPortato","PedalStar","PedalPed","roundNumber","x","precision","min","Infinity","Math","max","round","gcd","Number","isInteger","console","error","frac","numerator","denominator","reducedFraction","g","fractionMul","value","fraction","DummyLogger","debug","_","group","groupCollapsed","groupEnd","info","warn","assert","EOM","GREAT_NUMBER","DURATION_MULTIPLIER","floatToFrac","floatToTimeWarp","ActionType","Action","data","Object","assign","P","PLACE","e1","V","e2","order","VERTICAL","H","HORIZONTAL","id","events","filter","isFinite","StageMatrix","fromNode","status","Array","stages","fill","map","Set","actions","action","forEach","stage1","findIndex","stage","includes","stage2","add","stagedEvents","endHs","matrixH","has","endHP","hActions","pendingHeads","keys","eventMap","eid","find","some","pathOf","y","target","ei","size","yy","sub","findDoublePath","s1","s2","paths","path","reducePath","column","set","delete","toEquations","eventCount","equations","path1","path2","equation","PathNode","logger","last","parent","sort","join","like","ids","constructStages","unshift","newStage","si","splice","constructConstraints","factors","duration","constraints","it","inbalancesConstraints","ones","fixed","inbalances","constraint","sum","reduce","solveEquations","xis","items","abs","equationMap","Map","conflicted","lines","line","bias","every","get","squareLines","slice","restLines","candidateLines","i1","i2","prior","sl","c1","c2","invert","solution","row","result","xi","optimallySolve","shrinkMap","shrinkness","groups","entries","p1","p2","pair","released","releasedIds","concat","warps","lowWarp","isConflicted","eventTendencies","timeWarps","getSolution","actionKey","hacts","a1","a2","hmap","act","startEs","voices","se","voice","values","tick","endTick","tickGroup","timeWarp","estages","solveStages","changed","reverse","event","measureDuration","outEI","String","fromCodePoint","deduce","quota","access","actionAccessing","times","closed","credits","children","expand","possibility","n1","n2","child","matrixV","branches","appendBranch","branch","ps","Solver","env","event0","confidence","measureShrinkness","expectedDuration","staff","xSpan","endX","solve","pathRoot","bestSolution","evaluateSolution","loss","sevents","es","partialFrac","weight","log","spaceTime","staffAlters","end","eventsXOrder","tickTwists","dx","dt","atan2","PI","tickTwist","solveStaffGroup","staffGroup","options","EquationSolver.Solver","self","onmessage","args","postMessage"],"mappings":"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"} \ No newline at end of file diff --git a/backend/python-services/services/layout_service.py b/backend/python-services/services/layout_service.py index 8eecae24b3d9b138c1c4c22b57135754bb05366f..6f04d52085f9226e69f2214836a0076cb3075d22 100644 --- a/backend/python-services/services/layout_service.py +++ b/backend/python-services/services/layout_service.py @@ -258,11 +258,12 @@ class PageLayout: _, png_data = cv2.imencode('.png', staff_image) staff_bytes = png_data.tobytes() + phi1 = area['staves'].get('phi1', 0) area['staff_images'].append({ 'hash': None, 'image': staff_bytes, 'position': { - 'x': -STAFF_PADDING_LEFT / UNIT_SIZE, + 'x': -STAFF_PADDING_LEFT / UNIT_SIZE - (phi1 / interval if interval else 0), 'y': -STAFF_HEIGHT_UNITS / 2, 'width': staff_size[0] / UNIT_SIZE, 'height': staff_size[1] / UNIT_SIZE, diff --git a/dist/assets/DeleteOutlined-1f8a2958.js b/dist/assets/DeleteOutlined-1f8a2958.js new file mode 100644 index 0000000000000000000000000000000000000000..e9579941e32fa49cc850eca0e8ccd9edf98a0a06 --- /dev/null +++ b/dist/assets/DeleteOutlined-1f8a2958.js @@ -0,0 +1 @@ +import{A as l,f as e}from"./_setToString-038b76d7.js";import{r as t}from"./umi-2135699e.js";var a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},name:"delete",theme:"outlined"};const n=a;var o=function(c,r){return t.createElement(l,e(e({},c),{},{ref:r,icon:n}))},v=t.forwardRef(o);const h=v;export{h as D}; diff --git a/dist/assets/PlaySquareOutlined-c471435e.js b/dist/assets/PlaySquareOutlined-c471435e.js new file mode 100644 index 0000000000000000000000000000000000000000..37d2e6c1daa9d307a49107c913769f7be8d395f9 --- /dev/null +++ b/dist/assets/PlaySquareOutlined-c471435e.js @@ -0,0 +1 @@ +import{A as c,f as e}from"./_setToString-038b76d7.js";import{r as a}from"./umi-2135699e.js";var l={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm-88-532h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z"}}]},name:"pause-circle",theme:"outlined"};const i=l;var s=function(t,r){return a.createElement(c,e(e({},t),{},{ref:r,icon:i}))},u=a.forwardRef(s);const P=u;var o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M442.3 677.6l199.4-156.7a11.3 11.3 0 000-17.7L442.3 346.4c-7.4-5.8-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.7 18.3 8.9z"}},{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"play-square",theme:"outlined"};const d=o;var f=function(t,r){return a.createElement(c,e(e({},t),{},{ref:r,icon:d}))},v=a.forwardRef(f);const p=v;export{p as P,P as a}; diff --git a/dist/assets/ScoreEncoder-da446433.js b/dist/assets/ScoreEncoder-da446433.js new file mode 100644 index 0000000000000000000000000000000000000000..8db81df2d7a84f44007eeb092ec8e00f42fd3b73 --- /dev/null +++ b/dist/assets/ScoreEncoder-da446433.js @@ -0,0 +1,35 @@ +import{r as bo,s as Uo,g as qo,c as R,j as E}from"./umi-2135699e.js";import{W as Wo,a as I,b as Vo,E as Qo,H as Ae}from"./index-22b5485d.js";function $o(e){return{alter:e.alter,step:"CDEFGAB"[(e.note+98)%7],octave:Math.floor(e.note/7)+4}}function Ho(e){return{10:"1024th",9:"512th",8:"256th",7:"128th",6:"64th",5:"32nd",4:"16th",3:"eighth",2:"quarter",1:"half",0:"whole"}[e]}const gl=Wo/4,Jo=40;var yl={exports:{}},$t={},vl={exports:{}},F={};/** + * @license React + * scheduler-unstable_mock.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function Vn(e,t){var r=e.length;e.push(t);e:for(;0>>1,s=e[n];if(0>>1;nlr(o,r))ulr(d,o)?(e[n]=d,e[u]=r,n=u):(e[n]=o,e[l]=r,n=l);else if(ulr(d,r))e[n]=d,e[u]=r,n=u;else break e}}return t}function lr(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}var Oe=[],We=[],Ko=1,de=null,G=3,yr=!1,at=!1,At=!1,oe=0,ee=null,Xe=null,Ye=-1,pe=null,xt=-1,Et=!1,ue=!1,zr=!1,Qn=!1,xi=!1;function $n(e){for(var t=Se(We);t!==null;){if(t.callback===null)gr(We);else if(t.startTime<=e)gr(We),t.sortIndex=t.expirationTime,Vn(Oe,t);else break;t=Se(We)}}function Si(e){if(At=!1,$n(e),!at)if(Se(Oe)!==null)at=!0,ee=Ti;else{var t=Se(We);t!==null&&(e=t.startTime-e,Xe=Si,Ye=oe+e)}}function Ti(e,t){at=!1,At&&(At=!1,Xe=null,Ye=-1),yr=!0;var r=G;try{for($n(t),de=Se(Oe);de!==null&&(!(de.expirationTime>t)||e&&!wl());){var n=de.callback;if(typeof n=="function"){de.callback=null,G=de.priorityLevel;var s=n(de.expirationTime<=t);t=oe,typeof s=="function"?de.callback=s:de===Se(Oe)&&gr(Oe),$n(t)}else gr(Oe);de=Se(Oe)}if(de!==null)var i=!0;else{var l=Se(We);if(l!==null){var o=l.startTime-t;Xe=Si,Ye=oe+o}i=!1}return i}finally{de=null,G=r,yr=!1}}function wl(){return xt===0&&pe===null||xt!==-1&&pe!==null&&pe.length>=xt||Qn&&zr?Et=!0:!1}function xl(){if(ue)throw Error("Already flushing work.");if(ee!==null){var e=ee;ue=!0;try{var t=!0;do t=e(!0,oe);while(t);return t||(ee=null),!0}finally{ue=!1}}else return!1}F.reset=function(){if(ue)throw Error("Cannot reset while already flushing work.");oe=0,Xe=ee=null,Ye=-1,pe=null,xt=-1,zr=ue=Et=!1};F.unstable_IdlePriority=5;F.unstable_ImmediatePriority=1;F.unstable_LowPriority=4;F.unstable_NormalPriority=3;F.unstable_Profiling=null;F.unstable_UserBlockingPriority=2;F.unstable_advanceTime=function(e){console.log.name==="disabledLog"||xi||(oe+=e,Xe!==null&&Ye<=oe&&(Xe(oe),Ye=-1,Xe=null))};F.unstable_cancelCallback=function(e){e.callback=null};F.unstable_clearYields=function(){if(pe===null)return[];var e=pe;return pe=null,e};F.unstable_continueExecution=function(){at||yr||(at=!0,ee=Ti)};F.unstable_flushAll=function(){if(pe!==null)throw Error("Log is not empty. Assert on the log of yielded values before flushing additional work.");if(xl(),pe!==null)throw Error("While flushing work, something yielded a value. Use an assertion helper to assert on the log of yielded values, e.g. expect(Scheduler).toFlushAndYield([...])")};F.unstable_flushAllWithoutAsserting=xl;F.unstable_flushExpired=function(){if(ue)throw Error("Already flushing work.");if(ee!==null){ue=!0;try{ee(!1,oe)||(ee=null)}finally{ue=!1}}};F.unstable_flushNumberOfYields=function(e){if(ue)throw Error("Already flushing work.");if(ee!==null){var t=ee;xt=e,ue=!0;try{e=!0;do e=t(!0,oe);while(e&&!Et);e||(ee=null)}finally{xt=-1,ue=Et=!1}}};F.unstable_flushUntilNextPaint=function(){if(ue)throw Error("Already flushing work.");if(ee!==null){var e=ee;Qn=!0,zr=!1,ue=!0;try{var t=!0;do t=e(!0,oe);while(t&&!Et);t||(ee=null)}finally{ue=Et=Qn=!1}}};F.unstable_forceFrameRate=function(){};F.unstable_getCurrentPriorityLevel=function(){return G};F.unstable_getFirstCallbackNode=function(){return Se(Oe)};F.unstable_next=function(e){switch(G){case 1:case 2:case 3:var t=3;break;default:t=G}var r=G;G=t;try{return e()}finally{G=r}};F.unstable_now=function(){return oe};F.unstable_pauseExecution=function(){};F.unstable_requestPaint=function(){zr=!0};F.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=G;G=e;try{return t()}finally{G=r}};F.unstable_scheduleCallback=function(e,t,r){var n=oe;switch(typeof r=="object"&&r!==null?(r=r.delay,r=typeof r=="number"&&0n?(e.sortIndex=r,Vn(We,e),Se(Oe)===null&&e===Se(We)&&(At?(Xe=null,Ye=-1):At=!0,Xe=Si,Ye=oe+(r-n))):(e.sortIndex=s,Vn(Oe,e),at||yr||(at=!0,ee=Ti)),e};F.unstable_setDisableYieldValue=function(e){xi=e};F.unstable_shouldYield=wl;F.unstable_wrapCallback=function(e){var t=G;return function(){var r=G;G=t;try{return e.apply(this,arguments)}finally{G=r}}};F.unstable_yieldValue=function(e){console.log.name==="disabledLog"||xi||(pe===null?pe=[e]:pe.push(e))};vl.exports=F;var Yo=vl.exports;/** + * @license React + * react-test-renderer.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Sl=bo,Tl=Yo,ze=Uo;function hs(e,t){for(var r=0;r>>=0,e===0?32:31-(su(e)/lu|0)|0}var Yt=64,Zt=4194304;function Gt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function wr(e,t){var r=e.pendingLanes;if(r===0)return 0;var n=0,s=e.suspendedLanes,i=e.pingedLanes,l=r&268435455;if(l!==0){var o=l&~s;o!==0?n=Gt(o):(i&=l,i!==0&&(n=Gt(i)))}else l=r&~s,l!==0?n=Gt(l):i!==0&&(n=Gt(i));if(n===0)return 0;if(t!==0&&t!==n&&!(t&s)&&(s=n&-n,i=t&-t,s>=i||s===16&&(i&4194240)!==0))return t;if(n&4&&(n|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=n;0r;r++)t.push(e);return t}function Ar(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-ft(t),e[t]=r}function au(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var n=e.eventTimes;for(e=e.expirationTimes;0o||s[l]!==i[o]){var u=` +`+s[l].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=l&&0<=o);break}}}finally{Zr=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Ft(e):""}var fu=Object.prototype.hasOwnProperty,ti=[],yt=-1;function et(e){return{current:e}}function B(e){0>yt||(e.current=ti[yt],ti[yt]=null,yt--)}function z(e,t){yt++,ti[yt]=e.current,e.current=t}var Ze={},te=et(Ze),ae=et(!1),ct=Ze;function Nt(e,t){var r=e.type.contextTypes;if(!r)return Ze;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var s={},i;for(i in r)s[i]=t[i];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function ce(e){return e=e.childContextTypes,e!=null}function Sr(){B(ae),B(te)}function gs(e,t,r){if(te.current!==Ze)throw Error("Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.");z(te,t),z(ae,r)}function jl(e,t,r){var n=e.stateNode;if(t=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var s in n)if(!(s in t))throw Error((Go(e)||"Unknown")+'.getChildContext(): key "'+s+'" is not defined in childContextTypes.');return st({},r,n)}function Tr(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ze,ct=te.current,z(te,e),z(ae,ae.current),!0}function ys(e,t,r){var n=e.stateNode;if(!n)throw Error("Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.");r?(e=jl(e,t,ct),n.__reactInternalMemoizedMergedChildContext=e,B(ae),B(te),z(te,e)):B(ae),z(ae,r)}function pu(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var De=typeof Object.is=="function"?Object.is:pu,fe=null,br=!1,en=!1;function pt(){if(!en&&fe!==null){en=!0;var e=0,t=$;try{var r=fe;for($=1;eh?(y=S,S=null):y=S.sibling;var T=v(x,S,w[h],a);if(T===null){S===null&&(S=y);break}e&&S&&T.alternate===null&&t(x,S),f=i(T,f,h),m===null?p=T:m.sibling=T,m=T,S=y}if(h===w.length)return r(x,S),p;if(S===null){for(;hh?(y=S,S=null):y=S.sibling;var M=v(x,S,T.value,a);if(M===null){S===null&&(S=y);break}e&&S&&M.alternate===null&&t(x,S),f=i(M,f,h),m===null?p=M:m.sibling=M,m=M,S=y}if(T.done)return r(x,S),p;if(S===null){for(;!T.done;h++,T=w.next())T=g(x,T.value,a),T!==null&&(f=i(T,f,h),m===null?p=T:m.sibling=T,m=T);return p}for(S=n(x,S);!T.done;h++,T=w.next())T=D(S,x,h,T.value,a),T!==null&&(e&&T.alternate!==null&&S.delete(T.key===null?h:T.key),f=i(T,f,h),m===null?p=T:m.sibling=T,m=T);return e&&S.forEach(function(C){return t(x,C)}),p}function k(x,f,w,a){if(typeof w=="object"&&w!==null&&w.type===gt&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case Kt:e:{for(var p=w.key,m=f;m!==null;){if(m.key===p){if(p=w.type,p===gt){if(m.tag===7){r(x,m.sibling),f=s(m,w.props.children),f.return=x,x=f;break e}}else if(m.elementType===p||typeof p=="object"&&p!==null&&p.$$typeof===be&&xs(p)===m.type){r(x,m.sibling),f=s(m,w.props),f.ref=Ct(x,m,w),f.return=x,x=f;break e}r(x,m);break}else t(x,m);m=m.sibling}w.type===gt?(f=ut(w.props.children,x.mode,a,w.key),f.return=x,x=f):(a=fr(w.type,w.key,w.props,null,x.mode,a),a.ref=Ct(x,f,w),a.return=x,x=a)}return l(x);case Rt:e:{for(m=w.key;f!==null;){if(f.key===m)if(f.tag===4&&f.stateNode.containerInfo===w.containerInfo&&f.stateNode.implementation===w.implementation){r(x,f.sibling),f=s(f,w.children||[]),f.return=x,x=f;break e}else{r(x,f);break}else t(x,f);f=f.sibling}f=cn(w,x.mode,a),f.return=x,x=f}return l(x);case be:return m=w._init,k(x,f,m(w._payload),a)}if(Xt(w))return L(x,f,w,a);if(It(w))return O(x,f,w,a);rr(x,w)}return typeof w=="string"&&w!==""||typeof w=="number"?(w=""+w,f!==null&&f.tag===6?(r(x,f.sibling),f=s(f,w),f.return=x,x=f):(r(x,f),f=an(w,x.mode,a),f.return=x,x=f),l(x)):r(x,f)}return k}var Lt=Rl(!0),yu=Rl(!1),Er=et(null),Nr=null,vt=null,Oi=null;function Ii(){Oi=vt=Nr=null}function Ci(e){var t=Er.current;B(Er),e._currentValue2=t}function ri(e,t,r){for(;e!==null;){var n=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,n!==null&&(n.childLanes|=t)):n!==null&&(n.childLanes&t)!==t&&(n.childLanes|=t),e===r)break;e=e.return}}function St(e,t){Nr=e,Oi=vt=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(le=!0),e.firstContext=null)}function ye(e){var t=e._currentValue2;if(Oi!==e)if(e={context:e,memoizedValue:t,next:null},vt===null){if(Nr===null)throw Error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().");vt=e,Nr.dependencies={lanes:0,firstContext:e}}else vt=vt.next=e;return t}var nt=null;function Pi(e){nt===null?nt=[e]:nt.push(e)}function Xl(e,t,r,n){var s=t.interleaved;return s===null?(r.next=r,Pi(t)):(r.next=s.next,s.next=r),t.interleaved=r,Mt(e,n)}function Mt(e,t){e.lanes|=t;var r=e.alternate;for(r!==null&&(r.lanes|=t),r=e,e=e.return;e!==null;)e.childLanes|=t,r=e.alternate,r!==null&&(r.childLanes|=t),r=e,e=e.return;return r.tag===3?r.stateNode:null}var Ue=!1;function ki(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Fl(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function $e(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function lt(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,X&2){var s=n.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),n.pending=t,Mt(e,r)}return s=n.interleaved,s===null?(t.next=t,Pi(n)):(t.next=s.next,s.next=t),n.interleaved=t,Mt(e,r)}function or(e,t,r){if(t=t.updateQueue,t!==null&&(t=t.shared,(r&4194240)!==0)){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,Il(e,r)}}function Ss(e,t){var r=e.updateQueue,n=e.alternate;if(n!==null&&(n=n.updateQueue,r===n)){var s=null,i=null;if(r=r.firstBaseUpdate,r!==null){do{var l={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};i===null?s=i=l:i=i.next=l,r=r.next}while(r!==null);i===null?s=i=t:i=i.next=t}else s=i=t;r={baseState:n.baseState,firstBaseUpdate:s,lastBaseUpdate:i,shared:n.shared,effects:n.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=t:e.next=t,r.lastBaseUpdate=t}function Lr(e,t,r,n){var s=e.updateQueue;Ue=!1;var i=s.firstBaseUpdate,l=s.lastBaseUpdate,o=s.shared.pending;if(o!==null){s.shared.pending=null;var u=o,d=u.next;u.next=null,l===null?i=d:l.next=d,l=u;var c=e.alternate;c!==null&&(c=c.updateQueue,o=c.lastBaseUpdate,o!==l&&(o===null?c.firstBaseUpdate=d:o.next=d,c.lastBaseUpdate=u))}if(i!==null){var g=s.baseState;l=0,c=d=u=null,o=i;do{var v=o.lane,D=o.eventTime;if((n&v)===v){c!==null&&(c=c.next={eventTime:D,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var L=e,O=o;switch(v=t,D=r,O.tag){case 1:if(L=O.payload,typeof L=="function"){g=L.call(D,g,v);break e}g=L;break e;case 3:L.flags=L.flags&-65537|128;case 0:if(L=O.payload,v=typeof L=="function"?L.call(D,g,v):L,v==null)break e;g=st({},g,v);break e;case 2:Ue=!0}}o.callback!==null&&o.lane!==0&&(e.flags|=64,v=s.effects,v===null?s.effects=[o]:v.push(o))}else D={eventTime:D,lane:v,tag:o.tag,payload:o.payload,callback:o.callback,next:null},c===null?(d=c=D,u=g):c=c.next=D,l|=v;if(o=o.next,o===null){if(o=s.shared.pending,o===null)break;v=o,o=v.next,v.next=null,s.lastBaseUpdate=v,s.shared.pending=null}}while(1);if(c===null&&(u=g),s.baseState=u,s.firstBaseUpdate=d,s.lastBaseUpdate=c,t=s.shared.interleaved,t!==null){s=t;do l|=s.lane,s=s.next;while(s!==t)}else i===null&&(s.shared.lanes=0);dt|=l,e.lanes=l,e.memoizedState=g}}function Ts(e,t,r){if(e=t.effects,t.effects=null,e!==null)for(t=0;tr?r:4,e(!0);var n=nn.transition;nn.transition={};try{e(!1),t()}finally{$=r,nn.transition=n}}function Gl(){return ve().memoizedState}function xu(e,t,r){var n=Tt(e);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},eo(e))to(t,r);else if(r=Xl(e,t,r,n),r!==null){var s=Te();Je(r,e,n,s),ro(r,t,n)}}function Su(e,t,r){var n=Tt(e),s={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(eo(e))to(t,s);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var l=t.lastRenderedState,o=i(l,r);if(s.hasEagerState=!0,s.eagerState=o,De(o,l)){var u=t.interleaved;u===null?(s.next=s,Pi(t)):(s.next=u.next,u.next=s),t.interleaved=s;return}}catch{}finally{}r=Xl(e,t,s,n),r!==null&&(s=Te(),Je(r,e,n,s),ro(r,t,n))}}function eo(e){var t=e.alternate;return e===A||t!==null&&t===A}function to(e,t){zt=Or=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function ro(e,t,r){if(r&4194240){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,Il(e,r)}}var Ir={readContext:ye,useCallback:Y,useContext:Y,useEffect:Y,useImperativeHandle:Y,useInsertionEffect:Y,useLayoutEffect:Y,useMemo:Y,useReducer:Y,useRef:Y,useState:Y,useDebugValue:Y,useDeferredValue:Y,useTransition:Y,useMutableSource:Y,useSyncExternalStore:Y,useId:Y,unstable_isNewReconciler:!1},Tu={readContext:ye,useCallback:function(e,t){return Me().memoizedState=[e,t===void 0?null:t],e},useContext:ye,useEffect:Es,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,ar(4,4,Hl.bind(null,t,e),r)},useLayoutEffect:function(e,t){return ar(4,4,e,t)},useInsertionEffect:function(e,t){return ar(4,2,e,t)},useMemo:function(e,t){var r=Me();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var n=Me();return t=r!==void 0?r(t):t,n.memoizedState=n.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},n.queue=e,e=e.dispatch=xu.bind(null,A,e),[n.memoizedState,e]},useRef:function(e){var t=Me();return e={current:e},t.memoizedState=e},useState:Ds,useDebugValue:_i,useDeferredValue:function(e){return Me().memoizedState=e},useTransition:function(){var e=Ds(!1),t=e[0];return e=wu.bind(null,e[1]),Me().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t){var r=A,n=Me(),s=t();if(J===null)throw Error("Expected a work-in-progress root. This is a bug in React. Please file an issue.");ht&30||Al(r,t,s),n.memoizedState=s;var i={value:s,getSnapshot:t};return n.queue=i,Es(Ul.bind(null,r,i,e),[e]),r.flags|=2048,Wt(9,bl.bind(null,r,i,s,t),void 0,null),s},useId:function(){var e=Me(),t=J.identifierPrefix,r=vu++;return t=":"+t+"r"+r.toString(32)+":",e.memoizedState=t},unstable_isNewReconciler:!1},Du={readContext:ye,useCallback:Kl,useContext:ye,useEffect:Bi,useImperativeHandle:Jl,useInsertionEffect:Ql,useLayoutEffect:$l,useMemo:Yl,useReducer:sn,useRef:Vl,useState:function(){return sn(qt)},useDebugValue:_i,useDeferredValue:function(e){var t=ve();return Zl(t,W.memoizedState,e)},useTransition:function(){var e=sn(qt)[0],t=ve().memoizedState;return[e,t]},useMutableSource:Bl,useSyncExternalStore:_l,useId:Gl,unstable_isNewReconciler:!1},Eu={readContext:ye,useCallback:Kl,useContext:ye,useEffect:Bi,useImperativeHandle:Jl,useInsertionEffect:Ql,useLayoutEffect:$l,useMemo:Yl,useReducer:ln,useRef:Vl,useState:function(){return ln(qt)},useDebugValue:_i,useDeferredValue:function(e){var t=ve();return W===null?t.memoizedState=e:Zl(t,W.memoizedState,e)},useTransition:function(){var e=ln(qt)[0],t=ve().memoizedState;return[e,t]},useMutableSource:Bl,useSyncExternalStore:_l,useId:Gl,unstable_isNewReconciler:!1};function xe(e,t){if(e&&e.defaultProps){t=st({},t),e=e.defaultProps;for(var r in e)t[r]===void 0&&(t[r]=e[r]);return t}return t}function ni(e,t,r,n){t=e.memoizedState,r=r(n,t),r=r==null?t:st({},t,r),e.memoizedState=r,e.lanes===0&&(e.updateQueue.baseState=r)}var qr={isMounted:function(e){return(e=e._reactInternals)?Br(e)===e:!1},enqueueSetState:function(e,t,r){e=e._reactInternals;var n=Te(),s=Tt(e),i=$e(n,s);i.payload=t,r!=null&&(i.callback=r),t=lt(e,i,s),t!==null&&(Je(t,e,s,n),or(t,e,s))},enqueueReplaceState:function(e,t,r){e=e._reactInternals;var n=Te(),s=Tt(e),i=$e(n,s);i.tag=1,i.payload=t,r!=null&&(i.callback=r),t=lt(e,i,s),t!==null&&(Je(t,e,s,n),or(t,e,s))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var r=Te(),n=Tt(e),s=$e(r,n);s.tag=2,t!=null&&(s.callback=t),t=lt(e,s,n),t!==null&&(Je(t,e,n,r),or(t,e,n))}};function Ns(e,t,r,n,s,i,l){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(n,i,l):t.prototype&&t.prototype.isPureReactComponent?!Dr(r,n)||!Dr(s,i):!0}function no(e,t,r){var n=!1,s=Ze,i=t.contextType;return typeof i=="object"&&i!==null?i=ye(i):(s=ce(t)?ct:te.current,n=t.contextTypes,i=(n=n!=null)?Nt(e,s):Ze),t=new t(r,i),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=qr,e.stateNode=t,t._reactInternals=e,n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=s,e.__reactInternalMemoizedMaskedChildContext=i),t}function Ls(e,t,r,n){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(r,n),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(r,n),t.state!==e&&qr.enqueueReplaceState(t,t.state,null)}function ii(e,t,r,n){var s=e.stateNode;s.props=r,s.state=e.memoizedState,s.refs={},ki(e);var i=t.contextType;typeof i=="object"&&i!==null?s.context=ye(i):(i=ce(t)?ct:te.current,s.context=Nt(e,i)),s.state=e.memoizedState,i=t.getDerivedStateFromProps,typeof i=="function"&&(ni(e,t,i,r),s.state=e.memoizedState),typeof t.getDerivedStateFromProps=="function"||typeof s.getSnapshotBeforeUpdate=="function"||typeof s.UNSAFE_componentWillMount!="function"&&typeof s.componentWillMount!="function"||(t=s.state,typeof s.componentWillMount=="function"&&s.componentWillMount(),typeof s.UNSAFE_componentWillMount=="function"&&s.UNSAFE_componentWillMount(),t!==s.state&&qr.enqueueReplaceState(s,s.state,null),Lr(e,r,s,n),s.state=e.memoizedState),typeof s.componentDidMount=="function"&&(e.flags|=4)}function Ai(e,t){try{var r="",n=t;do r+=gu(n),n=n.return;while(n);var s=r}catch(i){s=` +Error generating stack: `+i.message+` +`+i.stack}return{value:e,source:t,stack:s,digest:null}}function on(e,t,r){return{value:e,source:null,stack:r??null,digest:t??null}}function si(e,t){try{console.error(t.value)}catch(r){setTimeout(function(){throw r})}}var Nu=typeof WeakMap=="function"?WeakMap:Map;function io(e,t,r){r=$e(-1,r),r.tag=3,r.payload={element:null};var n=t.value;return r.callback=function(){jr||(jr=!0,pi=n),si(e,t)},r}function so(e,t,r){r=$e(-1,r),r.tag=3;var n=e.type.getDerivedStateFromError;if(typeof n=="function"){var s=t.value;r.payload=function(){return n(s)},r.callback=function(){si(e,t)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(r.callback=function(){si(e,t),typeof n!="function"&&(He===null?He=new Set([this]):He.add(this));var l=t.stack;this.componentDidCatch(t.value,{componentStack:l!==null?l:""})}),r}function Ms(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new Nu;var s=new Set;n.set(t,s)}else s=n.get(t),s===void 0&&(s=new Set,n.set(t,s));s.has(r)||(s.add(r),e=Au.bind(null,e,t,r),t.then(e,e))}var Lu=Ge.ReactCurrentOwner,le=!1;function ne(e,t,r,n){t.child=e===null?yu(t,null,r,n):Lt(t,e.child,r,n)}function Os(e,t,r,n,s){r=r.render;var i=t.ref;return St(t,s),n=zi(e,t,r,n,i,s),e!==null&&!le?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~s,Fe(e,t,s)):(t.flags|=1,ne(e,t,n,s),t.child)}function Is(e,t,r,n,s){if(e===null){var i=r.type;return typeof i=="function"&&!Hi(i)&&i.defaultProps===void 0&&r.compare===null&&r.defaultProps===void 0?(t.tag=15,t.type=i,lo(e,t,i,n,s)):(e=fr(r.type,null,n,t,t.mode,s),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,!(e.lanes&s)){var l=i.memoizedProps;if(r=r.compare,r=r!==null?r:Dr,r(l,n)&&e.ref===t.ref)return Fe(e,t,s)}return t.flags|=1,e=Ke(i,n),e.ref=t.ref,e.return=t,t.child=e}function lo(e,t,r,n,s){if(e!==null){var i=e.memoizedProps;if(Dr(i,n)&&e.ref===t.ref)if(le=!1,t.pendingProps=n=i,(e.lanes&s)!==0)e.flags&131072&&(le=!0);else return t.lanes=e.lanes,Fe(e,t,s)}return li(e,t,r,n,s)}function oo(e,t,r){var n=t.pendingProps,s=n.children,i=e!==null?e.memoizedState:null;if(n.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},z(wt,he),he|=r;else{if(!(r&1073741824))return e=i!==null?i.baseLanes|r:r,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,z(wt,he),he|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},n=i!==null?i.baseLanes:r,z(wt,he),he|=n}else i!==null?(n=i.baseLanes|r,t.memoizedState=null):n=r,z(wt,he),he|=n;return ne(e,t,s,r),t.child}function uo(e,t){var r=t.ref;(e===null&&r!==null||e!==null&&e.ref!==r)&&(t.flags|=512)}function li(e,t,r,n,s){var i=ce(r)?ct:te.current;return i=Nt(t,i),St(t,s),r=zi(e,t,r,n,i,s),e!==null&&!le?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~s,Fe(e,t,s)):(t.flags|=1,ne(e,t,r,s),t.child)}function Cs(e,t,r,n,s){if(ce(r)){var i=!0;Tr(t)}else i=!1;if(St(t,s),t.stateNode===null)cr(e,t),no(t,r,n),ii(t,r,n,s),n=!0;else if(e===null){var l=t.stateNode,o=t.memoizedProps;l.props=o;var u=l.context,d=r.contextType;typeof d=="object"&&d!==null?d=ye(d):(d=ce(r)?ct:te.current,d=Nt(t,d));var c=r.getDerivedStateFromProps,g=typeof c=="function"||typeof l.getSnapshotBeforeUpdate=="function";g||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==n||u!==d)&&Ls(t,l,n,d),Ue=!1;var v=t.memoizedState;l.state=v,Lr(t,n,l,s),u=t.memoizedState,o!==n||v!==u||ae.current||Ue?(typeof c=="function"&&(ni(t,r,c,n),u=t.memoizedState),(o=Ue||Ns(t,r,o,n,v,u,d))?(g||typeof l.UNSAFE_componentWillMount!="function"&&typeof l.componentWillMount!="function"||(typeof l.componentWillMount=="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount=="function"&&l.UNSAFE_componentWillMount()),typeof l.componentDidMount=="function"&&(t.flags|=4)):(typeof l.componentDidMount=="function"&&(t.flags|=4),t.memoizedProps=n,t.memoizedState=u),l.props=n,l.state=u,l.context=d,n=o):(typeof l.componentDidMount=="function"&&(t.flags|=4),n=!1)}else{l=t.stateNode,Fl(e,t),o=t.memoizedProps,d=t.type===t.elementType?o:xe(t.type,o),l.props=d,g=t.pendingProps,v=l.context,u=r.contextType,typeof u=="object"&&u!==null?u=ye(u):(u=ce(r)?ct:te.current,u=Nt(t,u));var D=r.getDerivedStateFromProps;(c=typeof D=="function"||typeof l.getSnapshotBeforeUpdate=="function")||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==g||v!==u)&&Ls(t,l,n,u),Ue=!1,v=t.memoizedState,l.state=v,Lr(t,n,l,s);var L=t.memoizedState;o!==g||v!==L||ae.current||Ue?(typeof D=="function"&&(ni(t,r,D,n),L=t.memoizedState),(d=Ue||Ns(t,r,d,n,v,L,u)||!1)?(c||typeof l.UNSAFE_componentWillUpdate!="function"&&typeof l.componentWillUpdate!="function"||(typeof l.componentWillUpdate=="function"&&l.componentWillUpdate(n,L,u),typeof l.UNSAFE_componentWillUpdate=="function"&&l.UNSAFE_componentWillUpdate(n,L,u)),typeof l.componentDidUpdate=="function"&&(t.flags|=4),typeof l.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof l.componentDidUpdate!="function"||o===e.memoizedProps&&v===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&v===e.memoizedState||(t.flags|=1024),t.memoizedProps=n,t.memoizedState=L),l.props=n,l.state=L,l.context=u,n=d):(typeof l.componentDidUpdate!="function"||o===e.memoizedProps&&v===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&v===e.memoizedState||(t.flags|=1024),n=!1)}return oi(e,t,r,n,i,s)}function oi(e,t,r,n,s,i){uo(e,t);var l=(t.flags&128)!==0;if(!n&&!l)return s&&ys(t,r,!1),Fe(e,t,i);n=t.stateNode,Lu.current=t;var o=l&&typeof r.getDerivedStateFromError!="function"?null:n.render();return t.flags|=1,e!==null&&l?(t.child=Lt(t,e.child,null,i),t.child=Lt(t,null,o,i)):ne(e,t,o,i),t.memoizedState=n.state,s&&ys(t,r,!0),t.child}function ao(e){var t=e.stateNode;t.pendingContext?gs(e,t.pendingContext,t.pendingContext!==t.context):t.context&&gs(e,t.context,!1),ji(e,t.containerInfo)}var ui={dehydrated:null,treeContext:null,retryLane:0};function ai(e){return{baseLanes:e,cachePool:null,transitions:null}}function co(e,t,r){var n=t.pendingProps,s=_.current,i=!1,l=(t.flags&128)!==0,o;if((o=l)||(o=e!==null&&e.memoizedState===null?!1:(s&2)!==0),o?(i=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(s|=1),z(_,s&1),e===null)return e=t.memoizedState,e!==null&&e.dehydrated!==null?(t.mode&1?Ve()?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(l=n.children,e=n.fallback,i?(n=t.mode,i=t.child,l={mode:"hidden",children:l},!(n&1)&&i!==null?(i.childLanes=0,i.pendingProps=l):i=Vr(l,n,0,null),e=ut(e,n,r,null),i.return=t,e.return=t,i.sibling=e,t.child=i,t.child.memoizedState=ai(r),t.memoizedState=ui,e):bi(t,l));if(s=e.memoizedState,s!==null&&(o=s.dehydrated,o!==null))return Mu(e,t,l,n,o,s,r);if(i){i=n.fallback,l=t.mode,s=e.child,o=s.sibling;var u={mode:"hidden",children:n.children};return!(l&1)&&t.child!==s?(n=t.child,n.childLanes=0,n.pendingProps=u,t.deletions=null):(n=Ke(s,u),n.subtreeFlags=s.subtreeFlags&14680064),o!==null?i=Ke(o,i):(i=ut(i,l,r,null),i.flags|=2),i.return=t,n.return=t,n.sibling=i,t.child=n,n=i,i=t.child,l=e.child.memoizedState,l=l===null?ai(r):{baseLanes:l.baseLanes|r,cachePool:null,transitions:l.transitions},i.memoizedState=l,i.childLanes=e.childLanes&~r,t.memoizedState=ui,n}return i=e.child,e=i.sibling,n=Ke(i,{mode:"visible",children:n.children}),!(t.mode&1)&&(n.lanes=r),n.return=t,n.sibling=null,e!==null&&(r=t.deletions,r===null?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n}function bi(e,t){return t=Vr({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function nr(e,t,r,n){return n!==null&&(Re===null?Re=[n]:Re.push(n)),Lt(t,e.child,null,r),e=bi(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Mu(e,t,r,n,s,i,l){if(r)return t.flags&256?(t.flags&=-257,i=on(Error("There was an error while hydrating this Suspense boundary. Switched to client rendering.")),nr(e,t,l,i)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(i=n.fallback,r=t.mode,n=Vr({mode:"visible",children:n.children},r,0,null),i=ut(i,r,l,null),i.flags|=2,n.return=t,i.return=t,n.sibling=i,t.child=n,t.mode&1&&Lt(t,e.child,null,l),t.child.memoizedState=ai(l),t.memoizedState=ui,i);if(!(t.mode&1))return nr(e,t,l,null);if(Ve())return i=Ve().digest,i=on(Error("The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering."),i,void 0),nr(e,t,l,i);if(r=(l&e.childLanes)!==0,le||r){if(n=J,n!==null){switch(l&-l){case 4:r=2;break;case 16:r=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:r=32;break;case 536870912:r=268435456;break;default:r=0}r=r&(n.suspendedLanes|l)?0:r,r!==0&&r!==i.retryLane&&(i.retryLane=r,Mt(e,r),Je(n,e,r,-1))}return $i(),i=on(Error("This Suspense boundary received an update before it finished hydrating. This caused the boundary to switch to client rendering. The usual way to fix this is to wrap the original update in startTransition.")),nr(e,t,l,i)}return Ve()?(t.flags|=128,t.child=e.child,bu.bind(null,e),Ve(),null):(e=bi(t,n.children),e.flags|=4096,e)}function Ps(e,t,r){e.lanes|=t;var n=e.alternate;n!==null&&(n.lanes|=t),ri(e.return,t,r)}function un(e,t,r,n,s){var i=e.memoizedState;i===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:n,tail:r,tailMode:s}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=n,i.tail=r,i.tailMode=s)}function ho(e,t,r){var n=t.pendingProps,s=n.revealOrder,i=n.tail;if(ne(e,t,n.children,r),n=_.current,n&2)n=n&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Ps(e,r,t);else if(e.tag===19)Ps(e,r,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}n&=1}if(z(_,n),!(t.mode&1))t.memoizedState=null;else switch(s){case"forwards":for(r=t.child,s=null;r!==null;)e=r.alternate,e!==null&&Mr(e)===null&&(s=r),r=r.sibling;r=s,r===null?(s=t.child,t.child=null):(s=r.sibling,r.sibling=null),un(t,!1,s,r,i);break;case"backwards":for(r=null,s=t.child,t.child=null;s!==null;){if(e=s.alternate,e!==null&&Mr(e)===null){t.child=s;break}e=s.sibling,s.sibling=r,r=s,s=e}un(t,!0,r,null,i);break;case"together":un(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function cr(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Fe(e,t,r){if(e!==null&&(t.dependencies=e.dependencies),dt|=t.lanes,!(r&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error("Resuming work not yet implemented.");if(t.child!==null){for(e=t.child,r=Ke(e,e.pendingProps),t.child=r,r.return=t;e.sibling!==null;)e=e.sibling,r=r.sibling=Ke(e,e.pendingProps),r.return=t;r.sibling=null}return t.child}function Ou(e,t,r){switch(t.tag){case 3:ao(t);break;case 5:zl(t);break;case 1:ce(t.type)&&Tr(t);break;case 4:ji(t,t.stateNode.containerInfo);break;case 10:var n=t.type._context,s=t.memoizedProps.value;z(Er,n._currentValue2),n._currentValue2=s;break;case 13:if(n=t.memoizedState,n!==null)return n.dehydrated!==null?(z(_,_.current&1),t.flags|=128,null):r&t.child.childLanes?co(e,t,r):(z(_,_.current&1),e=Fe(e,t,r),e!==null?e.sibling:null);z(_,_.current&1);break;case 19:if(n=(r&t.childLanes)!==0,e.flags&128){if(n)return ho(e,t,r);t.flags|=128}if(s=t.memoizedState,s!==null&&(s.rendering=null,s.tail=null,s.lastEffect=null),z(_,_.current),n)break;return null;case 22:case 23:return t.lanes=0,oo(e,t,r)}return Fe(e,t,r)}var fo,ci,po,mo;fo=function(e,t){for(var r=t.child;r!==null;){if(r.tag===5||r.tag===6){var n=e,s=r.stateNode,i=n.children.indexOf(s);i!==-1&&n.children.splice(i,1),n.children.push(s)}else if(r.tag!==4&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break;for(;r.sibling===null;){if(r.return===null||r.return===t)return;r=r.return}r.sibling.return=r.return,r=r.sibling}};ci=function(){};po=function(e,t,r,n){e.memoizedProps!==n&&(it(Pe.current),t.updateQueue=cu)&&(t.flags|=4)};mo=function(e,t,r,n){r!==n&&(t.flags|=4)};function Pt(e,t){switch(e.tailMode){case"hidden":t=e.tail;for(var r=null;t!==null;)t.alternate!==null&&(r=t),t=t.sibling;r===null?e.tail=null:r.sibling=null;break;case"collapsed":r=e.tail;for(var n=null;r!==null;)r.alternate!==null&&(n=r),r=r.sibling;n===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:n.sibling=null}}function Z(e){var t=e.alternate!==null&&e.alternate.child===e.child,r=0,n=0;if(t)for(var s=e.child;s!==null;)r|=s.lanes|s.childLanes,n|=s.subtreeFlags&14680064,n|=s.flags&14680064,s.return=e,s=s.sibling;else for(s=e.child;s!==null;)r|=s.lanes|s.childLanes,n|=s.subtreeFlags,n|=s.flags,s.return=e,s=s.sibling;return e.subtreeFlags|=n,e.childLanes=r,t}function Iu(e,t,r){var n=t.pendingProps;switch(Mi(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Z(t),null;case 1:return ce(t.type)&&Sr(),Z(t),null;case 3:return r=t.stateNode,Ot(),B(ae),B(te),Xi(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),e!==null&&e.child!==null||e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Re!==null&&(yi(Re),Re=null)),ci(e,t),Z(t),null;case 5:Ri(t),r=it(Ut.current);var s=t.type;if(e!==null&&t.stateNode!=null)po(e,t,s,n,r),e.ref!==t.ref&&(t.flags|=512);else{if(!n){if(t.stateNode===null)throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");return Z(t),null}it(Pe.current),e={type:s,props:n,isHidden:!1,children:[],internalInstanceHandle:t,rootContainerInstance:r,tag:"INSTANCE"},fo(e,t,!1,!1),t.stateNode=e,t.ref!==null&&(t.flags|=512)}return Z(t),null;case 6:if(e&&t.stateNode!=null)mo(e,t,e.memoizedProps,n);else{if(typeof n!="string"&&t.stateNode===null)throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");it(Ut.current),it(Pe.current),t.stateNode={text:n,isHidden:!1,tag:"TEXT"}}return Z(t),null;case 13:if(B(_),n=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(n!==null&&n.dehydrated!==null){if(e===null)throw Error("A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React.");!(t.flags&128)&&(t.memoizedState=null),t.flags|=4,Z(t),s=!1}else Re!==null&&(yi(Re),Re=null),s=!0;if(!s)return t.flags&65536?t:null}return t.flags&128?(t.lanes=r,t):(r=n!==null,r!==(e!==null&&e.memoizedState!==null)&&r&&(t.child.flags|=8192,t.mode&1&&(e===null||_.current&1?Q===0&&(Q=3):$i())),t.updateQueue!==null&&(t.flags|=4),Z(t),null);case 4:return Ot(),ci(e,t),Z(t),null;case 10:return Ci(t.type._context),Z(t),null;case 17:return ce(t.type)&&Sr(),Z(t),null;case 19:if(B(_),s=t.memoizedState,s===null)return Z(t),null;n=(t.flags&128)!==0;var i=s.rendering;if(i===null)if(n)Pt(s,!1);else{if(Q!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(i=Mr(e),i!==null){for(t.flags|=128,Pt(s,!1),e=i.updateQueue,e!==null&&(t.updateQueue=e,t.flags|=4),t.subtreeFlags=0,e=r,r=t.child;r!==null;)n=r,s=e,n.flags&=14680066,i=n.alternate,i===null?(n.childLanes=0,n.lanes=s,n.child=null,n.subtreeFlags=0,n.memoizedProps=null,n.memoizedState=null,n.updateQueue=null,n.dependencies=null,n.stateNode=null):(n.childLanes=i.childLanes,n.lanes=i.lanes,n.child=i.child,n.subtreeFlags=0,n.deletions=null,n.memoizedProps=i.memoizedProps,n.memoizedState=i.memoizedState,n.updateQueue=i.updateQueue,n.type=i.type,s=i.dependencies,n.dependencies=s===null?null:{lanes:s.lanes,firstContext:s.firstContext}),r=r.sibling;return z(_,_.current&1|2),t.child}e=e.sibling}s.tail!==null&&V()>Qt&&(t.flags|=128,n=!0,Pt(s,!1),t.lanes=4194304)}else{if(!n)if(e=Mr(i),e!==null){if(t.flags|=128,n=!0,e=e.updateQueue,e!==null&&(t.updateQueue=e,t.flags|=4),Pt(s,!0),s.tail===null&&s.tailMode==="hidden"&&!i.alternate)return Z(t),null}else 2*V()-s.renderingStartTime>Qt&&r!==1073741824&&(t.flags|=128,n=!0,Pt(s,!1),t.lanes=4194304);s.isBackwards?(i.sibling=t.child,t.child=i):(e=s.last,e!==null?e.sibling=i:t.child=i,s.last=i)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=V(),t.sibling=null,e=_.current,z(_,n?e&1|2:e&1),t):(Z(t),null);case 22:case 23:return Qi(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?he&1073741824&&(Z(t),t.subtreeFlags&6&&(t.flags|=8192)):Z(t),null;case 24:return null;case 25:return null}throw Error("Unknown unit of work tag ("+t.tag+"). This error is likely caused by a bug in React. Please file an issue.")}function Cu(e,t){switch(Mi(t),t.tag){case 1:return ce(t.type)&&Sr(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ot(),B(ae),B(te),Xi(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Ri(t),null;case 13:if(B(_),e=t.memoizedState,e!==null&&e.dehydrated!==null&&t.alternate===null)throw Error("Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue.");return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return B(_),null;case 4:return Ot(),null;case 10:return Ci(t.type._context),null;case 22:case 23:return Qi(),null;case 24:return null;default:return null}}var Pu=typeof WeakSet=="function"?WeakSet:Set,P=null;function Cr(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){se(e,t,n)}else r.current=null}function hi(e,t,r){try{r()}catch(n){se(e,t,n)}}var ks=!1;function ku(e,t){for(P=t;P!==null;)if(e=P,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,P=t;else for(;P!==null;){e=P;try{var r=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(r!==null){var n=r.memoizedProps,s=r.memoizedState,i=e.stateNode,l=i.getSnapshotBeforeUpdate(e.elementType===e.type?n:xe(e.type,n),s);i.__reactInternalSnapshotBeforeUpdate=l}break;case 3:e.stateNode.containerInfo.children.splice(0);break;case 5:case 6:case 4:case 17:break;default:throw Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.")}}catch(o){se(e,e.return,o)}if(t=e.sibling,t!==null){t.return=e.return,P=t;break}P=e.return}return r=ks,ks=!1,r}function Pr(e,t,r){var n=t.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var s=n=n.next;do{if((s.tag&e)===e){var i=s.destroy;s.destroy=void 0,i!==void 0&&hi(t,r,i)}s=s.next}while(s!==n)}}function Ui(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var n=r.create;r.destroy=n()}r=r.next}while(r!==t)}}function go(e){var t=e.alternate;t!==null&&(e.alternate=null,go(t)),e.child=null,e.deletions=null,e.sibling=null,e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function yo(e){return e.tag===5||e.tag===3||e.tag===4}function js(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||yo(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function di(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?kl(r,e,t):Pl(r,e);else if(n!==4&&(e=e.child,e!==null))for(di(e,t,r),e=e.sibling;e!==null;)di(e,t,r),e=e.sibling}function fi(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?kl(r,e,t):Pl(r,e);else if(n!==4&&(e=e.child,e!==null))for(fi(e,t,r),e=e.sibling;e!==null;)fi(e,t,r),e=e.sibling}var re=null;function tt(e,t,r){for(r=r.child;r!==null;)vo(e,t,r),r=r.sibling}function vo(e,t,r){if(Ce&&typeof Ce.onCommitFiberUnmount=="function")try{Ce.onCommitFiberUnmount(_r,r)}catch{}switch(r.tag){case 5:Cr(r,t);case 6:var n=re;re=null,tt(e,t,r),re=n,re!==null&&(e=re,r=e.children.indexOf(r.stateNode),e.children.splice(r,1));break;case 18:re!==null&&Ve(re,r.stateNode);break;case 4:n=re,re=r.stateNode.containerInfo,tt(e,t,r),re=n;break;case 0:case 11:case 14:case 15:if(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null)){var s=n=n.next;do{var i=s,l=i.destroy;i=i.tag,l!==void 0&&(i&2||i&4)&&hi(r,t,l),s=s.next}while(s!==n)}tt(e,t,r);break;case 1:if(Cr(r,t),n=r.stateNode,typeof n.componentWillUnmount=="function")try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(o){se(r,t,o)}tt(e,t,r);break;case 21:tt(e,t,r);break;case 22:tt(e,t,r);break;default:tt(e,t,r)}}function Rs(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new Pu),t.forEach(function(n){var s=Uu.bind(null,e,n);r.has(n)||(r.add(n),n.then(s,s))})}}function Ne(e,t){var r=t.deletions;if(r!==null)for(var n=0;ns&&(s=l),n&=~i}if(n=s,n=V()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ru(n/1960))-n,10e?16:e,Qe===null)var n=!1;else{if(e=Qe,Qe=null,Rr=0,X&6)throw Error("Cannot flush passive effects while already rendering.");var s=X;for(X|=4,P=e.current;P!==null;){var i=P,l=i.child;if(P.flags&16){var o=i.deletions;if(o!==null){for(var u=0;uV()-Vi?ot(e,0):Wi|=r),ge(e,t)}function No(e,t){t===0&&(e.mode&1?(t=Zt,Zt<<=1,!(Zt&130023424)&&(Zt=4194304)):t=1);var r=Te();e=Mt(e,t),e!==null&&(Ar(e,t,r),ge(e,r))}function bu(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),No(e,r)}function Uu(e,t){var r=0;switch(e.tag){case 13:var n=e.stateNode,s=e.memoizedState;s!==null&&(r=s.retryLane);break;case 19:n=e.stateNode;break;default:throw Error("Pinged unknown suspense boundary type. This is probably a bug in React.")}n!==null&&n.delete(t),No(e,r)}var Lo;Lo=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||ae.current)le=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return le=!1,Ou(e,t,r);le=!!(e.flags&131072)}else le=!1;switch(t.lanes=0,t.tag){case 2:var n=t.type;cr(e,t),e=t.pendingProps;var s=Nt(t,te.current);if(St(t,r),s=zi(null,t,n,e,s,r),t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ce(n)){var i=!0;Tr(t)}else i=!1;t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,ki(t),s.updater=qr,t.stateNode=s,s._reactInternals=t,ii(t,n,e,r),t=oi(null,t,n,!0,i,r)}else t.tag=0,ne(null,t,s,r),t=t.child;return t;case 16:n=t.elementType;e:{switch(cr(e,t),e=t.pendingProps,s=n._init,n=s(n._payload),t.type=n,s=t.tag=Wu(n),e=xe(n,e),s){case 0:t=li(null,t,n,e,r);break e;case 1:t=Cs(null,t,n,e,r);break e;case 11:t=Os(null,t,n,e,r);break e;case 14:t=Is(null,t,n,xe(n.type,e),r);break e}throw Error("Element type is invalid. Received a promise that resolves to: "+n+". Lazy element type must resolve to a class or function.")}return t;case 0:return n=t.type,s=t.pendingProps,s=t.elementType===n?s:xe(n,s),li(e,t,n,s,r);case 1:return n=t.type,s=t.pendingProps,s=t.elementType===n?s:xe(n,s),Cs(e,t,n,s,r);case 3:if(ao(t),e===null)throw Error("Should have a current fiber. This is a bug in React.");return s=t.pendingProps,n=t.memoizedState.element,Fl(e,t),Lr(t,s,null,r),s=t.memoizedState.element,s===n?t=Fe(e,t,r):(ne(e,t,s,r),t=t.child),t;case 5:return zl(t),n=t.pendingProps.children,uo(e,t),ne(e,t,n,r),t.child;case 6:return null;case 13:return co(e,t,r);case 4:return ji(t,t.stateNode.containerInfo),n=t.pendingProps,e===null?t.child=Lt(t,null,n,r):ne(e,t,n,r),t.child;case 11:return n=t.type,s=t.pendingProps,s=t.elementType===n?s:xe(n,s),Os(e,t,n,s,r);case 7:return ne(e,t,t.pendingProps,r),t.child;case 8:return ne(e,t,t.pendingProps.children,r),t.child;case 12:return ne(e,t,t.pendingProps.children,r),t.child;case 10:e:{n=t.type._context,s=t.pendingProps,i=t.memoizedProps;var l=s.value;if(z(Er,n._currentValue2),n._currentValue2=l,i!==null)if(De(i.value,l)){if(i.children===s.children&&!ae.current){t=Fe(e,t,r);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var o=i.dependencies;if(o!==null){l=i.child;for(var u=o.firstContext;u!==null;){if(u.context===n){if(i.tag===1){u=$e(-1,r&-r),u.tag=2;var d=i.updateQueue;if(d!==null){d=d.shared;var c=d.pending;c===null?u.next=u:(u.next=c.next,c.next=u),d.pending=u}}i.lanes|=r,u=i.alternate,u!==null&&(u.lanes|=r),ri(i.return,r,t),o.lanes|=r;break}u=u.next}}else if(i.tag===10)l=i.type===t.type?null:i.child;else if(i.tag===18){if(l=i.return,l===null)throw Error("We just came from a parent so we must have had a parent. This is a bug in React.");l.lanes|=r,o=l.alternate,o!==null&&(o.lanes|=r),ri(l,r,t),l=i.sibling}else l=i.child;if(l!==null)l.return=i;else for(l=i;l!==null;){if(l===t){l=null;break}if(i=l.sibling,i!==null){i.return=l.return,l=i;break}l=l.return}i=l}ne(e,t,s.children,r),t=t.child}return t;case 9:return s=t.type,n=t.pendingProps.children,St(t,r),s=ye(s),n=n(s),t.flags|=1,ne(e,t,n,r),t.child;case 14:return n=t.type,s=xe(n,t.pendingProps),s=xe(n.type,s),Is(e,t,n,s,r);case 15:return lo(e,t,t.type,t.pendingProps,r);case 17:return n=t.type,s=t.pendingProps,s=t.elementType===n?s:xe(n,s),cr(e,t),t.tag=1,ce(n)?(e=!0,Tr(t)):e=!1,St(t,r),no(t,n,s),ii(t,n,s,r),oi(null,t,n,!0,e,r);case 19:return ho(e,t,r);case 22:return oo(e,t,r)}throw Error("Unknown unit of work tag ("+t.tag+"). This error is likely caused by a bug in React. Please file an issue.")};function Mo(e,t){return Li(e,t)}function qu(e,t,r,n){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ie(e,t,r,n){return new qu(e,t,r,n)}function Hi(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Wu(e){if(typeof e=="function")return Hi(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ei)return 11;if(e===Ni)return 14}return 2}function Ke(e,t){var r=e.alternate;return r===null?(r=Ie(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function fr(e,t,r,n,s,i){var l=2;if(n=e,typeof e=="function")Hi(e)&&(l=1);else if(typeof e=="string")l=5;else e:switch(e){case gt:return ut(r.children,s,i,t);case Di:l=8,s|=8;break;case Hn:return e=Ie(12,r,t,s|2),e.elementType=Hn,e.lanes=i,e;case Jn:return e=Ie(13,r,t,s),e.elementType=Jn,e.lanes=i,e;case Kn:return e=Ie(19,r,t,s),e.elementType=Kn,e.lanes=i,e;case Nl:return Vr(r,s,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Dl:l=10;break e;case El:l=9;break e;case Ei:l=11;break e;case Ni:l=14;break e;case be:l=16,n=null;break e}throw Error("Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: "+((e==null?e:typeof e)+"."))}return t=Ie(l,r,t,s),t.elementType=e,t.type=n,t.lanes=i,t}function ut(e,t,r,n){return e=Ie(7,e,n,t),e.lanes=r,e}function Vr(e,t,r,n){return e=Ie(22,e,n,t),e.elementType=Nl,e.lanes=r,e.stateNode={isHidden:!1},e}function an(e,t,r){return e=Ie(6,e,null,t),e.lanes=r,e}function cn(e,t,r){return t=Ie(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Vu(e,t,r,n,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Kr(0),this.expirationTimes=Kr(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Kr(0),this.identifierPrefix=n,this.onRecoverableError=s}function Qu(e,t,r,n,s,i,l){return e=new Vu(e,t,!1,i,l),t===1?(t=1,n===!0&&(t|=8)):t=0,n=Ie(3,null,null,t),e.current=n,n.stateNode=e,n.memoizedState={element:null,isDehydrated:!1,cache:null,transitions:null,pendingSuspenseBoundaries:null},ki(n),e}function hn(e,t,r,n){var s=t.current,i=Te(),l=Tt(s);e:if(r){r=r._reactInternals;t:{if(Br(r)!==r||r.tag!==1)throw Error("Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.");var o=r;do{switch(o.tag){case 3:o=o.stateNode.context;break t;case 1:if(ce(o.type)){o=o.stateNode.__reactInternalMemoizedMergedChildContext;break t}}o=o.return}while(o!==null);throw Error("Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.")}if(r.tag===1){var u=r.type;if(ce(u)){r=jl(r,u,o);break e}}r=o}else r=Ze;return t.context===null?t.context=r:t.pendingContext=r,t=$e(i,l),t.payload={element:e},n=n===void 0?null:n,n!==null&&(t.callback=n),e=lt(s,t,l),e!==null&&(Je(e,s,l,i),or(e,s,l)),l}function $u(){return null}var Hu=Sl.unstable_act,Ju={createNodeMock:function(){return null}};function pr(e){if(e.isHidden)return null;switch(e.tag){case"TEXT":return e.text;case"INSTANCE":var t=e.props,r=["children"];if(t==null)t={};else{var n={},s=Object.keys(t),i;for(i=0;iwi(r).length)break;return Ji(r)}r=r.return}return null}},{key:"children",get:function(){return wi(this._currentFiber())}}]),e}();function mr(e,t,r){var n=r?r.deep:!0,s=[];return t(e)&&(s.push(e),!n)||e.children.forEach(function(i){typeof i!="string"&&s.push.apply(s,mr(i,t,r))}),s}function dn(e,t){if(e.length===1)return e[0];throw Error((e.length===0?"No instances found ":"Expected 1 but found "+e.length+" instances ")+t)}function Yu(e){console.error(e)}var fn=new WeakMap;function Ji(e){var t=fn.get(e);return t===void 0&&e.alternate!==null&&(t=fn.get(e.alternate)),t===void 0&&(t=new Ku(e),fn.set(e,t)),t}var jt={findFiberByHostInstance:function(){throw Error("TestRenderer does not support findFiberByHostInstance()")},bundleType:0,version:"18.3.1",rendererPackageName:"react-test-renderer"},Zu={bundleType:jt.bundleType,version:jt.version,rendererPackageName:jt.rendererPackageName,rendererConfig:jt.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Ge.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=Ll(e),e=e!==null?Ml(e):null,e===null?null:e.stateNode},findFiberByHostInstance:jt.findFiberByHostInstance||$u,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var sr=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!sr.isDisabled&&sr.supportsFiber)try{_r=sr.inject(Zu),Ce=sr}catch{}}$t._Scheduler=Tl;$t.act=Hu;$t.create=function(e,t){var r=Ju.createNodeMock,n=!1,s=!1;typeof t=="object"&&t!==null&&(typeof t.createNodeMock=="function"&&(r=t.createNodeMock),t.unstable_isConcurrent===!0&&(n=!0),t.unstable_strictMode===!0&&(s=!0));var i={children:[],createNodeMock:r,tag:"CONTAINER"},l=Qu(i,n?1:0,null,s,null,"",Yu);if(l==null)throw Error("something went wrong");return hn(e,l,null,null),e={_Scheduler:Tl,root:void 0,toJSON:function(){if(l==null||l.current==null||i==null||i.children.length===0)return null;if(i.children.length===1)return pr(i.children[0]);if(i.children.length===2&&i.children[0].isHidden===!0&&i.children[1].isHidden===!1)return pr(i.children[1]);var o=null;if(i.children&&i.children.length)for(var u=0;u":"attribute: {"+n+"}, parent: <"+this.parent.name+">"}isEqualNode(n){return!(n.namespaceURI!==this.namespaceURI||n.prefix!==this.prefix||n.localName!==this.localName||n.value!==this.value)}}return Object.defineProperty(t.prototype,"nodeType",{get:function(){return this.type}}),Object.defineProperty(t.prototype,"ownerElement",{get:function(){return this.parent}}),Object.defineProperty(t.prototype,"textContent",{get:function(){return this.value},set:function(r){return this.value=r||""}}),Object.defineProperty(t.prototype,"namespaceURI",{get:function(){return""}}),Object.defineProperty(t.prototype,"prefix",{get:function(){return""}}),Object.defineProperty(t.prototype,"localName",{get:function(){return this.name}}),Object.defineProperty(t.prototype,"specified",{get:function(){return!0}}),t}.call(this)}.call(R)),Tn.exports}var Dn={exports:{}},Ws;function Ki(){return Ws||(Ws=1,function(){Dn.exports=function(){class e{constructor(r){this.nodes=r}clone(){return this.nodes=null}getNamedItem(r){return this.nodes[r]}setNamedItem(r){var n;return n=this.nodes[r.nodeName],this.nodes[r.nodeName]=r,n||null}removeNamedItem(r){var n;return n=this.nodes[r],delete this.nodes[r],n||null}item(r){return this.nodes[Object.keys(this.nodes)[r]]||null}getNamedItemNS(r,n){throw new Error("This DOM method is not implemented.")}setNamedItemNS(r){throw new Error("This DOM method is not implemented.")}removeNamedItemNS(r,n){throw new Error("This DOM method is not implemented.")}}return Object.defineProperty(e.prototype,"length",{get:function(){return Object.keys(this.nodes).length||0}}),e}.call(this)}.call(R)),Dn.exports}var Vs;function Yi(){return Vs||(Vs=1,function(){var e,t,r,n,s,i,l,o={}.hasOwnProperty;({isObject:l,isFunction:i,getValue:s}=Be()),n=we(),e=q(),t=Po(),r=Ki(),xn.exports=function(){class u extends n{constructor(c,g,v){var D,L,O,k;if(super(c),g==null)throw new Error("Missing element name. "+this.debugInfo());if(this.name=this.stringify.name(g),this.type=e.Element,this.attribs={},this.schemaTypeInfo=null,v!=null&&this.attribute(v),c.type===e.Document&&(this.isRoot=!0,this.documentObject=c,c.rootObject=this,c.children)){for(k=c.children,L=0,O=k.length;L=D;g=0<=D?++v:--v)if(!this.attribs[g].isEqualNode(c.attribs[g]))return!1;return!0}}return Object.defineProperty(u.prototype,"tagName",{get:function(){return this.name}}),Object.defineProperty(u.prototype,"namespaceURI",{get:function(){return""}}),Object.defineProperty(u.prototype,"prefix",{get:function(){return""}}),Object.defineProperty(u.prototype,"localName",{get:function(){return this.name}}),Object.defineProperty(u.prototype,"id",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(u.prototype,"className",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(u.prototype,"classList",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(u.prototype,"attributes",{get:function(){return(!this.attributeMap||!this.attributeMap.nodes)&&(this.attributeMap=new r(this.attribs)),this.attributeMap}}),u}.call(this)}.call(R)),xn.exports}var En={exports:{}},Nn={exports:{}},Qs;function Qr(){return Qs||(Qs=1,function(){var e;e=we(),Nn.exports=function(){class t extends e{constructor(n){super(n),this.value=""}clone(){return Object.create(this)}substringData(n,s){throw new Error("This DOM method is not implemented."+this.debugInfo())}appendData(n){throw new Error("This DOM method is not implemented."+this.debugInfo())}insertData(n,s){throw new Error("This DOM method is not implemented."+this.debugInfo())}deleteData(n,s){throw new Error("This DOM method is not implemented."+this.debugInfo())}replaceData(n,s,i){throw new Error("This DOM method is not implemented."+this.debugInfo())}isEqualNode(n){return!(!super.isEqualNode(n)||n.data!==this.data)}}return Object.defineProperty(t.prototype,"data",{get:function(){return this.value},set:function(r){return this.value=r||""}}),Object.defineProperty(t.prototype,"length",{get:function(){return this.value.length}}),Object.defineProperty(t.prototype,"textContent",{get:function(){return this.value},set:function(r){return this.value=r||""}}),t}.call(this)}.call(R)),Nn.exports}var $s;function Zi(){return $s||($s=1,function(){var e,t;e=q(),t=Qr(),En.exports=class extends t{constructor(n,s){if(super(n),s==null)throw new Error("Missing CDATA text. "+this.debugInfo());this.name="#cdata-section",this.type=e.CData,this.value=this.stringify.cdata(s)}clone(){return Object.create(this)}toString(n){return this.options.writer.cdata(this,this.options.writer.filterOptions(n))}}}.call(R)),En.exports}var Ln={exports:{}},Hs;function Gi(){return Hs||(Hs=1,function(){var e,t;e=q(),t=Qr(),Ln.exports=class extends t{constructor(n,s){if(super(n),s==null)throw new Error("Missing comment text. "+this.debugInfo());this.name="#comment",this.type=e.Comment,this.value=this.stringify.comment(s)}clone(){return Object.create(this)}toString(n){return this.options.writer.comment(this,this.options.writer.filterOptions(n))}}}.call(R)),Ln.exports}var Mn={exports:{}},Js;function es(){return Js||(Js=1,function(){var e,t,r;({isObject:r}=Be()),t=we(),e=q(),Mn.exports=class extends t{constructor(s,i,l,o){super(s),r(i)&&({version:i,encoding:l,standalone:o}=i),i||(i="1.0"),this.type=e.Declaration,this.version=this.stringify.xmlVersion(i),l!=null&&(this.encoding=this.stringify.xmlEncoding(l)),o!=null&&(this.standalone=this.stringify.xmlStandalone(o))}toString(s){return this.options.writer.declaration(this,this.options.writer.filterOptions(s))}}}.call(R)),Mn.exports}var On={exports:{}},In={exports:{}},Ks;function ts(){return Ks||(Ks=1,function(){var e,t;t=we(),e=q(),In.exports=class extends t{constructor(n,s,i,l,o,u){if(super(n),s==null)throw new Error("Missing DTD element name. "+this.debugInfo());if(i==null)throw new Error("Missing DTD attribute name. "+this.debugInfo(s));if(!l)throw new Error("Missing DTD attribute type. "+this.debugInfo(s));if(!o)throw new Error("Missing DTD attribute default. "+this.debugInfo(s));if(o.indexOf("#")!==0&&(o="#"+o),!o.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/))throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. "+this.debugInfo(s));if(u&&!o.match(/^(#FIXED|#DEFAULT)$/))throw new Error("Default value only applies to #FIXED or #DEFAULT. "+this.debugInfo(s));this.elementName=this.stringify.name(s),this.type=e.AttributeDeclaration,this.attributeName=this.stringify.name(i),this.attributeType=this.stringify.dtdAttType(l),u&&(this.defaultValue=this.stringify.dtdAttDefault(u)),this.defaultValueType=o}toString(n){return this.options.writer.dtdAttList(this,this.options.writer.filterOptions(n))}}}.call(R)),In.exports}var Cn={exports:{}},Ys;function rs(){return Ys||(Ys=1,function(){var e,t,r;({isObject:r}=Be()),t=we(),e=q(),Cn.exports=function(){class n extends t{constructor(i,l,o,u){if(super(i),o==null)throw new Error("Missing DTD entity name. "+this.debugInfo(o));if(u==null)throw new Error("Missing DTD entity value. "+this.debugInfo(o));if(this.pe=!!l,this.name=this.stringify.name(o),this.type=e.EntityDeclaration,!r(u))this.value=this.stringify.dtdEntityValue(u),this.internal=!0;else{if(!u.pubID&&!u.sysID)throw new Error("Public and/or system identifiers are required for an external entity. "+this.debugInfo(o));if(u.pubID&&!u.sysID)throw new Error("System identifier is required for a public external entity. "+this.debugInfo(o));if(this.internal=!1,u.pubID!=null&&(this.pubID=this.stringify.dtdPubID(u.pubID)),u.sysID!=null&&(this.sysID=this.stringify.dtdSysID(u.sysID)),u.nData!=null&&(this.nData=this.stringify.dtdNData(u.nData)),this.pe&&this.nData)throw new Error("Notation declaration is not allowed in a parameter entity. "+this.debugInfo(o))}}toString(i){return this.options.writer.dtdEntity(this,this.options.writer.filterOptions(i))}}return Object.defineProperty(n.prototype,"publicId",{get:function(){return this.pubID}}),Object.defineProperty(n.prototype,"systemId",{get:function(){return this.sysID}}),Object.defineProperty(n.prototype,"notationName",{get:function(){return this.nData||null}}),Object.defineProperty(n.prototype,"inputEncoding",{get:function(){return null}}),Object.defineProperty(n.prototype,"xmlEncoding",{get:function(){return null}}),Object.defineProperty(n.prototype,"xmlVersion",{get:function(){return null}}),n}.call(this)}.call(R)),Cn.exports}var Pn={exports:{}},Zs;function ns(){return Zs||(Zs=1,function(){var e,t;t=we(),e=q(),Pn.exports=class extends t{constructor(n,s,i){if(super(n),s==null)throw new Error("Missing DTD element name. "+this.debugInfo());i||(i="(#PCDATA)"),Array.isArray(i)&&(i="("+i.join(",")+")"),this.name=this.stringify.name(s),this.type=e.ElementDeclaration,this.value=this.stringify.dtdElementValue(i)}toString(n){return this.options.writer.dtdElement(this,this.options.writer.filterOptions(n))}}}.call(R)),Pn.exports}var kn={exports:{}},Gs;function is(){return Gs||(Gs=1,function(){var e,t;t=we(),e=q(),kn.exports=function(){class r extends t{constructor(s,i,l){if(super(s),i==null)throw new Error("Missing DTD notation name. "+this.debugInfo(i));if(!l.pubID&&!l.sysID)throw new Error("Public or system identifiers are required for an external entity. "+this.debugInfo(i));this.name=this.stringify.name(i),this.type=e.NotationDeclaration,l.pubID!=null&&(this.pubID=this.stringify.dtdPubID(l.pubID)),l.sysID!=null&&(this.sysID=this.stringify.dtdSysID(l.sysID))}toString(s){return this.options.writer.dtdNotation(this,this.options.writer.filterOptions(s))}}return Object.defineProperty(r.prototype,"publicId",{get:function(){return this.pubID}}),Object.defineProperty(r.prototype,"systemId",{get:function(){return this.sysID}}),r}.call(this)}.call(R)),kn.exports}var el;function ss(){return el||(el=1,function(){var e,t,r,n,s,i,l,o;({isObject:o}=Be()),l=we(),e=q(),t=ts(),n=rs(),r=ns(),s=is(),i=Ki(),On.exports=function(){class u extends l{constructor(c,g,v){var D,L,O,k;if(super(c),this.type=e.DocType,c.children){for(k=c.children,L=0,O=k.length;L":(m=this.parent)!=null&&m.name?"node: <"+a+">, parent: <"+this.parent.name+">":"node: <"+a+">"}ele(a,p,m){return this.element(a,p,m)}nod(a,p,m){return this.node(a,p,m)}txt(a){return this.text(a)}dat(a){return this.cdata(a)}com(a){return this.comment(a)}ins(a,p){return this.instruction(a,p)}doc(){return this.document()}dec(a,p,m){return this.declaration(a,p,m)}e(a,p,m){return this.element(a,p,m)}n(a,p,m){return this.node(a,p,m)}t(a){return this.text(a)}d(a){return this.cdata(a)}c(a){return this.comment(a)}r(a){return this.raw(a)}i(a,p){return this.instruction(a,p)}u(){return this.up()}importXMLBuilder(a){return this.importDocument(a)}attribute(a,p){throw new Error("attribute() applies to element nodes only.")}att(a,p){return this.attribute(a,p)}a(a,p){return this.attribute(a,p)}removeAttribute(a){throw new Error("attribute() applies to element nodes only.")}replaceChild(a,p){throw new Error("This DOM method is not implemented."+this.debugInfo())}removeChild(a){throw new Error("This DOM method is not implemented."+this.debugInfo())}appendChild(a){throw new Error("This DOM method is not implemented."+this.debugInfo())}hasChildNodes(){return this.children.length!==0}cloneNode(a){throw new Error("This DOM method is not implemented."+this.debugInfo())}normalize(){throw new Error("This DOM method is not implemented."+this.debugInfo())}isSupported(a,p){return!0}hasAttributes(){return this.attribs.length!==0}compareDocumentPosition(a){var p,m;return p=this,p===a?0:this.document()!==a.document()?(m=e.Disconnected|e.ImplementationSpecific,Math.random()<.5?m|=e.Preceding:m|=e.Following,m):p.isAncestor(a)?e.Contains|e.Preceding:p.isDescendant(a)?e.Contains|e.Following:p.isPreceding(a)?e.Preceding:e.Following}isSameNode(a){throw new Error("This DOM method is not implemented."+this.debugInfo())}lookupPrefix(a){throw new Error("This DOM method is not implemented."+this.debugInfo())}isDefaultNamespace(a){throw new Error("This DOM method is not implemented."+this.debugInfo())}lookupNamespaceURI(a){throw new Error("This DOM method is not implemented."+this.debugInfo())}isEqualNode(a){var p,m,S;if(a.nodeType!==this.nodeType||a.children.length!==this.children.length)return!1;for(p=m=0,S=this.children.length-1;0<=S?m<=S:m>=S;p=0<=S?++m:--m)if(!this.children[p].isEqualNode(a.children[p]))return!1;return!0}getFeature(a,p){throw new Error("This DOM method is not implemented."+this.debugInfo())}setUserData(a,p,m){throw new Error("This DOM method is not implemented."+this.debugInfo())}getUserData(a){throw new Error("This DOM method is not implemented."+this.debugInfo())}contains(a){return a?a===this||this.isDescendant(a):!1}isDescendant(a){var p,m,S,h,y;for(y=this.children,S=0,h=y.length;Sm}treePosition(a){var p,m;return m=0,p=!1,this.foreachTreeNode(this.document(),function(S){if(m++,!p&&S===a)return p=!0}),p?m:-1}foreachTreeNode(a,p){var m,S,h,y,T;for(a||(a=this.document()),y=a.children,S=0,h=y.length;S","]]]]>"),this.assertLegalChar(n))}comment(n){if(this.options.noValidation)return n;if(n=""+n||"",n.match(/--/))throw new Error("Comment text cannot contain double-hypen: "+n);return this.assertLegalChar(n)}raw(n){return this.options.noValidation?n:""+n||""}attValue(n){return this.options.noValidation?n:this.assertLegalChar(this.attEscape(n=""+n||""))}insTarget(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}insValue(n){if(this.options.noValidation)return n;if(n=""+n||"",n.match(/\?>/))throw new Error("Invalid processing instruction value: "+n);return this.assertLegalChar(n)}xmlVersion(n){if(this.options.noValidation)return n;if(n=""+n||"",!n.match(/1\.[0-9]+/))throw new Error("Invalid version number: "+n);return n}xmlEncoding(n){if(this.options.noValidation)return n;if(n=""+n||"",!n.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/))throw new Error("Invalid encoding: "+n);return this.assertLegalChar(n)}xmlStandalone(n){return this.options.noValidation?n:n?"yes":"no"}dtdPubID(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdSysID(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdElementValue(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdAttType(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdAttDefault(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdEntityValue(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdNData(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}assertLegalChar(n){var s,i;if(this.options.noValidation)return n;if(this.options.version==="1.0"){if(s=/[\0-\x08\x0B\f\x0E-\x1F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,this.options.invalidCharReplacement!==void 0)n=n.replace(s,this.options.invalidCharReplacement);else if(i=n.match(s))throw new Error(`Invalid character in string: ${n} at index ${i.index}`)}else if(this.options.version==="1.1"){if(s=/[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,this.options.invalidCharReplacement!==void 0)n=n.replace(s,this.options.invalidCharReplacement);else if(i=n.match(s))throw new Error(`Invalid character in string: ${n} at index ${i.index}`)}return n}assertLegalName(n){var s;if(this.options.noValidation)return n;if(n=this.assertLegalChar(n),s=/^([:A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])([\x2D\.0-:A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])*$/,!n.match(s))throw new Error(`Invalid character in name: ${n}`);return n}textEscape(n){var s;return this.options.noValidation?n:(s=this.options.noDoubleEncoding?/(?!&(lt|gt|amp|apos|quot);)&/g:/&/g,n.replace(s,"&").replace(//g,">").replace(/\r/g," "))}attEscape(n){var s;return this.options.noValidation?n:(s=this.options.noDoubleEncoding?/(?!&(lt|gt|amp|apos|quot);)&/g:/&/g,n.replace(s,"&").replace(/0)?new Array(u).join(l.indent):""}endline(i,l,o){return!l.pretty||l.suppressPrettyCount?"":l.newline}attribute(i,l,o){var u;return this.openAttribute(i,l,o),l.pretty&&l.width>0?u=i.name+'="'+i.value+'"':u=" "+i.name+'="'+i.value+'"',this.closeAttribute(i,l,o),u}cdata(i,l,o){var u;return this.openNode(i,l,o),l.state=t.OpenTag,u=this.indent(i,l,o)+""+this.endline(i,l,o),l.state=t.None,this.closeNode(i,l,o),u}comment(i,l,o){var u;return this.openNode(i,l,o),l.state=t.OpenTag,u=this.indent(i,l,o)+""+this.endline(i,l,o),l.state=t.None,this.closeNode(i,l,o),u}declaration(i,l,o){var u;return this.openNode(i,l,o),l.state=t.OpenTag,u=this.indent(i,l,o)+"",u+=this.endline(i,l,o),l.state=t.None,this.closeNode(i,l,o),u}docType(i,l,o){var u,d,c,g,v;if(o||(o=0),this.openNode(i,l,o),l.state=t.OpenTag,g=this.indent(i,l,o),g+="0){for(g+=" [",g+=this.endline(i,l,o),l.state=t.InsideTag,v=i.children,d=0,c=v.length;d",g+=this.endline(i,l,o),l.state=t.None,this.closeNode(i,l,o),g}element(i,l,o){var u,d,c,g,v,D,L,O,k,x,f,w,a,p,m,S,h,y,T;if(o||(o=0),w=!1,this.openNode(i,l,o),l.state=t.OpenTag,a=this.indent(i,l,o)+"<"+i.name,l.pretty&&l.width>0){O=a.length,m=i.attribs;for(f in m)n.call(m,f)&&(u=m[f],p=this.attribute(u,l,o),d=p.length,O+d>l.width?(T=this.indent(i,l,o+1)+p,a+=this.endline(i,l,o)+T,O=T.length):(T=" "+p,a+=T,O+=T.length))}else{S=i.attribs;for(f in S)n.call(S,f)&&(u=S[f],a+=this.attribute(u,l,o))}if(g=i.children.length,v=g===0?null:i.children[0],g===0||i.children.every(function(M){return(M.type===e.Text||M.type===e.Raw||M.type===e.CData)&&M.value===""}))l.allowEmpty?(a+=">",l.state=t.CloseTag,a+=""+this.endline(i,l,o)):(l.state=t.CloseTag,a+=l.spaceBeforeSlash+"/>"+this.endline(i,l,o));else if(l.pretty&&g===1&&(v.type===e.Text||v.type===e.Raw||v.type===e.CData)&&v.value!=null)a+=">",l.state=t.InsideTag,l.suppressPrettyCount++,w=!0,a+=this.writeChildNode(v,l,o+1),l.suppressPrettyCount--,w=!1,l.state=t.CloseTag,a+=""+this.endline(i,l,o);else{if(l.dontPrettyTextNodes){for(h=i.children,D=0,k=h.length;D"+this.endline(i,l,o),l.state=t.InsideTag,y=i.children,L=0,x=y.length;L",w&&l.suppressPrettyCount--,a+=this.endline(i,l,o),l.state=t.None}return this.closeNode(i,l,o),a}writeChildNode(i,l,o){switch(i.type){case e.CData:return this.cdata(i,l,o);case e.Comment:return this.comment(i,l,o);case e.Element:return this.element(i,l,o);case e.Raw:return this.raw(i,l,o);case e.Text:return this.text(i,l,o);case e.ProcessingInstruction:return this.processingInstruction(i,l,o);case e.Dummy:return"";case e.Declaration:return this.declaration(i,l,o);case e.DocType:return this.docType(i,l,o);case e.AttributeDeclaration:return this.dtdAttList(i,l,o);case e.ElementDeclaration:return this.dtdElement(i,l,o);case e.EntityDeclaration:return this.dtdEntity(i,l,o);case e.NotationDeclaration:return this.dtdNotation(i,l,o);default:throw new Error("Unknown XML node type: "+i.constructor.name)}}processingInstruction(i,l,o){var u;return this.openNode(i,l,o),l.state=t.OpenTag,u=this.indent(i,l,o)+"",u+=this.endline(i,l,o),l.state=t.None,this.closeNode(i,l,o),u}raw(i,l,o){var u;return this.openNode(i,l,o),l.state=t.OpenTag,u=this.indent(i,l,o),l.state=t.InsideTag,u+=i.value,l.state=t.CloseTag,u+=this.endline(i,l,o),l.state=t.None,this.closeNode(i,l,o),u}text(i,l,o){var u;return this.openNode(i,l,o),l.state=t.OpenTag,u=this.indent(i,l,o),l.state=t.InsideTag,u+=i.value,l.state=t.CloseTag,u+=this.endline(i,l,o),l.state=t.None,this.closeNode(i,l,o),u}dtdAttList(i,l,o){var u;return this.openNode(i,l,o),l.state=t.OpenTag,u=this.indent(i,l,o)+""+this.endline(i,l,o),l.state=t.None,this.closeNode(i,l,o),u}dtdElement(i,l,o){var u;return this.openNode(i,l,o),l.state=t.OpenTag,u=this.indent(i,l,o)+""+this.endline(i,l,o),l.state=t.None,this.closeNode(i,l,o),u}dtdEntity(i,l,o){var u;return this.openNode(i,l,o),l.state=t.OpenTag,u=this.indent(i,l,o)+""+this.endline(i,l,o),l.state=t.None,this.closeNode(i,l,o),u}dtdNotation(i,l,o){var u;return this.openNode(i,l,o),l.state=t.OpenTag,u=this.indent(i,l,o)+""+this.endline(i,l,o),l.state=t.None,this.closeNode(i,l,o),u}openNode(i,l,o){}closeNode(i,l,o){}openAttribute(i,l,o){}closeAttribute(i,l,o){}}}.call(R)),bn.exports}var hl;function as(){return hl||(hl=1,function(){var e;e=Ro(),An.exports=class extends e{constructor(r){super(r)}document(r,n){var s,i,l,o,u;for(n=this.filterOptions(n),o="",u=r.children,i=0,l=u.length;i=0;)this.up();return this.onEnd()}openCurrent(){if(this.currentNode)return this.currentNode.children=!0,this.openNode(this.currentNode)}openNode(h){var y,T,M,C;if(!h.isOpen){if(!this.root&&this.currentLevel===0&&h.type===e.Element&&(this.root=h),T="",h.type===e.Element){this.writerOptions.state=t.OpenTag,T=this.writer.indent(h,this.writerOptions,this.currentLevel)+"<"+h.name,C=h.attribs;for(M in C)m.call(C,M)&&(y=C[M],T+=this.writer.attribute(y,this.writerOptions,this.currentLevel));T+=(h.children?">":"/>")+this.writer.endline(h,this.writerOptions,this.currentLevel),this.writerOptions.state=t.InsideTag}else this.writerOptions.state=t.OpenTag,T=this.writer.indent(h,this.writerOptions,this.currentLevel)+""),T+=this.writer.endline(h,this.writerOptions,this.currentLevel);return this.onData(T,this.currentLevel),h.isOpen=!0}}closeNode(h){var y;if(!h.isClosed)return y="",this.writerOptions.state=t.CloseTag,h.type===e.Element?y=this.writer.indent(h,this.writerOptions,this.currentLevel)+""+this.writer.endline(h,this.writerOptions,this.currentLevel):y=this.writer.indent(h,this.writerOptions,this.currentLevel)+"]>"+this.writer.endline(h,this.writerOptions,this.currentLevel),this.writerOptions.state=t.None,this.onData(y,this.currentLevel),h.isClosed=!0}onData(h,y){return this.documentStarted=!0,this.onDataCallback(h,y+1)}onEnd(){return this.documentCompleted=!0,this.onEndCallback()}debugInfo(h){return h==null?"":"node: <"+h+">"}ele(){return this.element(...arguments)}nod(h,y,T){return this.node(h,y,T)}txt(h){return this.text(h)}dat(h){return this.cdata(h)}com(h){return this.comment(h)}ins(h,y){return this.instruction(h,y)}dec(h,y,T){return this.declaration(h,y,T)}dtd(h,y,T){return this.doctype(h,y,T)}e(h,y,T){return this.element(h,y,T)}n(h,y,T){return this.node(h,y,T)}t(h){return this.text(h)}d(h){return this.cdata(h)}c(h){return this.comment(h)}r(h){return this.raw(h)}i(h,y){return this.instruction(h,y)}att(){return this.currentNode&&this.currentNode.type===e.DocType?this.attList(...arguments):this.attribute(...arguments)}a(){return this.currentNode&&this.currentNode.type===e.DocType?this.attList(...arguments):this.attribute(...arguments)}ent(h,y){return this.entity(h,y)}pent(h,y){return this.pEntity(h,y)}not(h,y){return this.notation(h,y)}}}.call(R)),qn.exports}var Wn={exports:{}},pl;function oa(){return pl||(pl=1,function(){var e,t,r,n={}.hasOwnProperty;e=q(),r=Ro(),t=$r(),Wn.exports=class extends r{constructor(i,l){super(l),this.stream=i}endline(i,l,o){return i.isLastRootNode&&l.state===t.CloseTag?"":super.endline(i,l,o)}document(i,l){var o,u,d,c,g,v,D,L,O;for(D=i.children,u=d=0,g=D.length;d0){for(this.stream.write(" ["),this.stream.write(this.endline(i,l,o)),l.state=t.InsideTag,g=i.children,d=0,c=g.length;d"),this.stream.write(this.endline(i,l,o)),l.state=t.None,this.closeNode(i,l,o)}element(i,l,o){var u,d,c,g,v,D,L,O,k,x,f,w,a,p,m;if(o||(o=0),this.openNode(i,l,o),l.state=t.OpenTag,x=this.indent(i,l,o)+"<"+i.name,l.pretty&&l.width>0){L=x.length,w=i.attribs;for(k in w)n.call(w,k)&&(u=w[k],f=this.attribute(u,l,o),d=f.length,L+d>l.width?(m=this.indent(i,l,o+1)+f,x+=this.endline(i,l,o)+m,L=m.length):(m=" "+f,x+=m,L+=m.length))}else{a=i.attribs;for(k in a)n.call(a,k)&&(u=a[k],x+=this.attribute(u,l,o))}if(this.stream.write(x),g=i.children.length,v=g===0?null:i.children[0],g===0||i.children.every(function(S){return(S.type===e.Text||S.type===e.Raw||S.type===e.CData)&&S.value===""}))l.allowEmpty?(this.stream.write(">"),l.state=t.CloseTag,this.stream.write("")):(l.state=t.CloseTag,this.stream.write(l.spaceBeforeSlash+"/>"));else if(l.pretty&&g===1&&(v.type===e.Text||v.type===e.Raw||v.type===e.CData)&&v.value!=null)this.stream.write(">"),l.state=t.InsideTag,l.suppressPrettyCount++,this.writeChildNode(v,l,o+1),l.suppressPrettyCount--,l.state=t.CloseTag,this.stream.write("");else{for(this.stream.write(">"+this.endline(i,l,o)),l.state=t.InsideTag,p=i.children,D=0,O=p.length;D")}return this.stream.write(this.endline(i,l,o)),l.state=t.None,this.closeNode(i,l,o)}processingInstruction(i,l,o){return this.stream.write(super.processingInstruction(i,l,o))}raw(i,l,o){return this.stream.write(super.raw(i,l,o))}text(i,l,o){return this.stream.write(super.text(i,l,o))}dtdAttList(i,l,o){return this.stream.write(super.dtdAttList(i,l,o))}dtdElement(i,l,o){return this.stream.write(super.dtdElement(i,l,o))}dtdEntity(i,l,o){return this.stream.write(super.dtdEntity(i,l,o))}dtdNotation(i,l,o){return this.stream.write(super.dtdNotation(i,l,o))}}}.call(R)),Wn.exports}(function(){var e,t,r,n,s,i,l,o,u;({assign:o,isFunction:u}=Be()),r=Co(),n=Xo(),s=la(),l=as(),i=oa(),e=q(),t=$r(),_e.create=function(d,c,g,v){var D,L;if(d==null)throw new Error("Root element needs a name.");return v=o({},c,g,v),D=new n(v),L=D.element(d),v.headless||(D.declaration(v),(v.pubID!=null||v.sysID!=null)&&D.dtd(v)),L},_e.begin=function(d,c,g){return u(d)&&([c,g]=[d,c],d={}),c?new s(d,c,g):new n(d)},_e.stringWriter=function(d){return new l(d)},_e.streamWriter=function(d,c){return new i(d,c)},_e.implementation=new r,_e.nodeType=e,_e.writerState=t}).call(R);const Fo=(e,t,r=!1)=>{const{type:n,props:s,children:i}=t,l=i||[],o=l[0];if(l.length===1&&typeof o=="string"){e.ele(n,s,o);return}let u=null;r?Object.keys(s).map(d=>{e.att(d,s[d])}):u=e.ele(n,s),l.forEach(d=>{if(typeof d=="string")throw new Error("Invaild XML");Fo(u||e,d)})},ua=e=>{const t=ea.create(e).toJSON();if(!t)throw new Error("Element is invalid");const r=_e.create(t.type);return Fo(r,t,!0),r.end({pretty:!0}),r.toString({pretty:!0})};class Fa{title;pageSize;unitSize;staffLayout;paperOptions;headers;voiceStaves;score;workTitle="";partBuilders=[];constructor(t){Object.assign(this,t);const r=this.voiceStaves;for(const[n,s]of this.partTemplate.entries()){const i=this.ensurePartBuilder(n,s);for(const l of s.map(o=>r[o]))for(const[o,u]of l.voices.entries())for(const[d,c]of u.measures.entries())i.ensureMeasureBuilder(d).addVoice({...c,voiceIndexOfStaff:o})}}get partTemplate(){return this.staffLayout.partGroups.map(t=>t.range[0]===t.range[1]?[t.range[0]]:t.range)}ensurePartBuilder(t,r){for(;this.partBuilders.length<=t;){const n=new aa({parent:this,template:r});this.partBuilders.push(n)}return this.partBuilders[t]}createPartListElement(){return E.jsx("part-list",{children:this.partBuilders.map(t=>E.jsx("score-part",{id:t.id,children:E.jsx("part-name",{"print-object":"no",children:t.name})}))})}toJSX(){const t=new Date;return`${t.getFullYear()}${String(t.getMonth()+1).padStart(2,"0")}${String(t.getDate()).padStart(2,"0")}`,E.jsxs("score-partwise",{version:"4.0",children:[E.jsx("work",{children:E.jsx("work-title",{children:this.workTitle})}),E.jsx("movement-title",{children:this.workTitle}),E.jsx("defaults",{children:E.jsxs("scaling",{children:[E.jsx("millimeters",{children:"8"}),E.jsx("tenths",{children:Jo})]})}),E.jsx("part-list",{children:this.partBuilders.map(r=>E.jsx("score-part",{id:r.id,children:E.jsx("part-name",{"print-object":"no",children:"MusicXML Part"})}))}),this.partBuilders.map(r=>r.toJSX())]})}toString(){return` + +${ua(this.toJSX())} +`}}class aa{parent;name;measureBuilders=[];staffContexts=[];template;get id(){return`P${this.parent.partBuilders.indexOf(this)+1}`}get stavesCount(){return this.template.length}constructor(t){Object.assign(this,t)}ensureStaffContext(t){for(;this.staffContexts.length<=t;){const r=new da({parent:this,index:t});this.staffContexts.push(r)}return this.staffContexts[t]}ensureMeasureBuilder(t){for(;this.measureBuilders.length<=t;){const r=new ca({parent:this});this.measureBuilders.push(r)}return this.measureBuilders[t]}toJSX(){return E.jsx("part",{id:this.id,children:this.measureBuilders.map((t,r)=>t.toJSX())})}}class ca{parent;voiceBuilders=[];beamCount=0;beamState;get index(){return this.parent.measureBuilders.indexOf(this)}get score(){return this.parent.parent.score}constructor(t){Object.assign(this,t)}addVoice(t){const r=new ha({parent:this,voice:t});this.voiceBuilders.push(r),t.contextedTerms.filter(i=>i.type===Vo.Clef).forEach(i=>{const l={[I.ClefC]:"C",[I.ClefF]:"F",[I.ClefG]:"G"}[i.tokenType];l||console.error("unknown Clef",i.tokenType);const o=this.parent.ensureStaffContext(i.staff);o.addClef(new zo({parent:o,measureIndex:this.index,tick:i.tick,number:i.staff-this.parent.template[0],sign:l,line:3-i.y})),o.addKey(new Bo({parent:o,measureIndex:this.index,fifths:t.keySignature})),o.addTime(new _o({parent:o,measureIndex:this.index,beats:t.timeSignature.numerator,beatType:t.timeSignature.denominator,timeSigNumeric:t.timeSigNumeric}))});const n={[I.OctaveShift8va]:8,[I.OctaveShift8vb]:-8,[I.OctaveShift0]:0},s=Object.keys(n);t.contextedTerms.forEach(i=>{s.includes(i.tokenType)&&this.parent.ensureStaffContext(i.staff).addOctaveShiftTerm(i,this.index)})}toJSX(){const t=this.score.pages.reduce((r,n)=>[...r,...n.systems.reduce((s,i)=>[...s,...i.measureBars],[])],[]);return this.beamCount=0,E.jsxs("measure",{number:this.index+1,width:Math.round(t[this.index]*10),children:[this.index===0&&E.jsx(E.Fragment,{children:this.parent.staffContexts.map(r=>{var n;return r.clefBuilders.length>0?E.jsx("attributes",{children:(n=r.clefBuilders)==null?void 0:n[0].toJSX()}):null})}),this.voiceBuilders.reduce((r,n,s)=>{var i,l;return r.push(...n.toJSX()),(l=(i=this.voiceBuilders[s+1])==null?void 0:i.toJSX)!=null&&l.call(i)&&r.push(E.jsx("backup",{children:E.jsx("duration",{children:n.voice.duration})})),r},[])]})}}class ha{parent;voice;get index(){return this.parent.voiceBuilders.indexOf(this)}constructor(t){Object.assign(this,t)}toJSX(){const t=[],r={[I.AccNatural]:0,[I.AccSharp]:1,[I.AccDoublesharp]:2,[I.AccFlat]:-1,[I.AccFlatflat]:-1,[I.KeyNatural]:0,[I.KeySharp]:1,[I.KeyFlat]:-1},n=Object.keys(r),s=this.voice.contextedTerms.reduce((l,o)=>{if(n.includes(o.tokenType)){const u=l.findIndex(d=>d.x===o.x&&d.y===o.y);u>-1?l.splice(u,1):l.push(o)}return l},[]),i=Object.entries(this.voice.tickMap).map(([l,o])=>[Number(l),o]).sort(([l],[o])=>l-o);return i.forEach(([l,o])=>{const u=s.filter(d=>d.tick===l);u.length>0&&u.forEach(d=>{var g;const c=(g=o.ys)==null?void 0:g.findIndex(v=>v===d.y);c>-1&&(o.pitches[c].accidental=r[d.tokenType])})}),i.forEach(([l,o],u)=>{var c,g,v,D,L;const d=this.parent.parent.ensureStaffContext(o.staff||0);if(o instanceof Qo){const O=d.lookupDivisions(this.parent.index),k=d.lookupStaves(this.parent.index),x=d.lookupClef(this.parent.index,+l),f=d.lookupKey(this.parent.index),w=d.lookupTime(this.parent.index),a=[O,f,w,k,x].filter(Boolean).map(N=>N.toJSX());u===0&&a.length>0&&t.push(E.jsx("attributes",{children:a}));const p=[],m=[];m.push(...new ma(o.accessories).toJSX()||[]),m.length>0&&p.push(E.jsx("technical",{children:m}));const S=[];o.accessories.some(N=>N.type===I.ScriptStaccato)&&S.push(E.jsx("staccato",{})),o.accessories.some(N=>N.type===I.ScriptSforzato)&&S.push(E.jsx("accent",{})),o.accessories.some(N=>N.type===I.ScriptStaccatissimo)&&S.push(E.jsx("spiccato",{})),o.accessories.some(N=>N.type===I.ScriptMarcato)&&S.push(E.jsx("strong-accent",{})),o.accessories.some(N=>N.type===I.ScriptTenuto)&&S.push(E.jsx("tenuto",{})),S.length>0&&p.push(E.jsx("articulations",{children:S}));const h=o.accessories.find(N=>N.type===I.ScriptFermata);h&&p.push(E.jsx("fermata",{type:{[Ae.Up]:"upright",[Ae.Down]:"inverted"}[h.direction]})),o.accessories.some(N=>N.type===I.SlurBegin)&&o.accessories.filter(N=>N.type===I.SlurBegin).forEach(N=>{p.push(E.jsx("slur",{"default-x":(o.x+N.x).toFixed(2),placement:{[Ae.Up]:"above",[Ae.Down]:"below"}[N.direction],type:"start"}))}),o.accessories.some(N=>N.type===I.SlurEnd)&&o.accessories.filter(N=>N.type===I.SlurEnd).forEach(N=>{p.push(E.jsx("slur",{"default-x":(o.x+N.x).toFixed(2),number:"1",placement:{[Ae.Up]:"above",[Ae.Down]:"below"}[N.direction],type:"stop"}))}),o.accessories.some(N=>N.type===I.TieBegin)&&o.accessories.filter(N=>N.type===I.TieBegin).forEach(N=>{p.push(E.jsx("tied",{type:"start"}))}),o.accessories.some(N=>N.type===I.TieEnd)&&o.accessories.filter(N=>N.type===I.TieEnd).forEach(N=>{p.push(E.jsx("tied",{type:"stop"}))});const y=[];o.accessories.some(N=>N.type===I.ScriptTurn)&&y.push(E.jsx("turn",{})),o.accessories.some(N=>N.type===I.ScriptTrill)&&y.push(E.jsx("trill-mark",{})),o.accessories.some(N=>N.type===I.ScriptMordent)&&y.push(E.jsx("mordent",{})),o.accessories.some(N=>N.type===I.ScriptPortato)&&y.push(E.jsx("inverted-mordent",{})),y.length>0&&p.push(E.jsx("ornaments",{children:y}));const T=Ho(o.division);if(this.index===0){const N=(g=(c=d.lookupOctaveShift(this.parent.index))==null?void 0:c.getJSX)==null?void 0:g.call(c,o.tick);N&&t.push(N)}if(o.pitches){const N=o.pitches.length>1;(v=o.pitches)==null||v.forEach((b,j)=>{const{alter:Ee,step:Hr,octave:Jr}=$o(b),cs={u:"up",d:"down"}[o.stemDirection];if(!this.voice.empty){let Jt=null;switch(o.beam){case"Open":Jt=E.jsx("beam",{number:"1",children:"begin"}),this.parent.beamState=o.beam;break;case"Close":Jt=E.jsx("beam",{number:"1",children:"end"}),this.parent.beamCount+=1,this.parent.beamState=o.beam;break;default:this.parent.beamState==="Open"&&(Jt=E.jsx("beam",{number:"1",children:"continue"}));break}const Ao=o.staff-this.parent.parent.template[0]+1;t.push(E.jsxs("note",{children:[o.grace&&E.jsx("grace",{"steal-time-following":o.duration}),N&&j!==0&&E.jsx("chord",{}),!o.rest&&E.jsxs("pitch",{children:[E.jsx("step",{children:Hr}),Ee!==0&&E.jsx("alter",{children:Ee}),E.jsx("octave",{children:Jr})]}),o.rest==="r"&&E.jsxs("rest",{children:[E.jsx("display-step",{children:Hr}),E.jsx("display-octave",{children:Jr})]}),o.rest==="R"&&E.jsxs("rest",{measure:"yes",children:[E.jsx("display-step",{children:Hr}),E.jsx("display-octave",{children:Jr})]}),o.grace?null:E.jsx("duration",{children:o.duration}),E.jsx("voice",{children:this.index+1}),E.jsx("type",{children:T}),Array(o.dots).fill(null).map(()=>E.jsx("dot",{})),new va(b.accidental).toJSX(),o.timeWarp&&new ga(o.timeWarp).toJSX(),cs?E.jsx("stem",{children:cs}):null,E.jsx("staff",{children:Ao}),Jt,j===0?p.length>0&&E.jsx("notations",{children:p}):null]}))}})}if(this.index===0&&u===i.length-1){const N=d.getCurrentTime(this.parent.index);if(N){const b=(L=(D=d.lookupOctaveShift(this.parent.index))==null?void 0:D.getJSX)==null?void 0:L.call(D,gl*N.beatType/4*N.beats);b&&t.push(b)}}const M=Math.max(...d.clefBuilders.map(N=>N.tick)),C=Math.max(...Object.keys(this.voice.tickMap).map(N=>+N));if(M>=C){const N=d.lookupClef(this.parent.index,M);N&&t.push(E.jsx("attributes",{children:N.toJSX()}))}}}),t}}class da{parent;index;divisionsBuilder=new fa({value:gl});clefBuilders=[];keyBuilders=[];timeBuilders=[];octave;tied;beamCount=0;octaveShiftBuilders=[];constructor(t){Object.assign(this,t)}lookupDivisions(t){return t===0?this.divisionsBuilder:null}lookupStaves(t){return t===0?new pa({value:this.parent.stavesCount}):null}addClef(t){this.lookupClef(t.measureIndex,t.tick)||this.clefBuilders.length>0&&zo.equals(this.clefBuilders[this.clefBuilders.length-1],t)||this.clefBuilders.push(t)}lookupClef(t,r){const n=this.clefBuilders.filter(s=>s.measureIndex===t&&s.tick===r);return n.length>0?n[0]:null}addKey(t){this.lookupKey(t.measureIndex)||this.keyBuilders.length>0&&Bo.equals(this.keyBuilders[this.keyBuilders.length-1],t)||this.keyBuilders.push(t)}lookupKey(t){const r=this.keyBuilders.filter(n=>n.measureIndex===t);return r.length>0?r[0]:null}addTime(t){this.lookupTime(t.measureIndex)||this.timeBuilders.length>0&&_o.equals(this.timeBuilders[this.timeBuilders.length-1],t)||this.timeBuilders.push(t)}lookupTime(t){const r=this.timeBuilders.filter(n=>n.measureIndex===t);return r.length>0?r[0]:null}getCurrentTime(t){const r=this.timeBuilders.filter(n=>n.measureIndex<=t);return r.sort((n,s)=>n.measureIndex-s.measureIndex),r[r.length-1]}addOctaveShiftTerm(t,r){let n=this.octaveShiftBuilders.find(s=>s.measureIndex===r);n||(n=new wa({parent:this,measureIndex:r}),this.octaveShiftBuilders.push(n)),n.addTerm(t)}lookupOctaveShift(t){const r=this.octaveShiftBuilders.filter(n=>n.measureIndex===t);return r.length>0?r[0]:null}}class zo{parent;measureIndex;tick;number;sign;line;size="full";afterBarline=!0;additional=!1;constructor(t){Object.assign(this,t)}static equals(t,r){return t&&r&&t.number===r.number&&t.sign===r.sign&&t.line===r.line&&t.size===r.size}toJSX(){return E.jsxs("clef",{number:this.number+1,size:this.size,additional:this.additional?"yes":"no","after-barline":this.afterBarline?"yes":"no",children:[E.jsx("sign",{children:this.sign}),E.jsx("line",{children:this.line})]})}}class Bo{parent;measureIndex;fifths;mode;constructor(t){Object.assign(this,t)}static equals(t,r){return t&&r&&t.fifths===r.fifths&&t.mode===r.mode}toJSX(){return E.jsxs("key",{children:[E.jsx("fifths",{children:this.fifths}),this.mode?E.jsx("mode",{children:this.mode}):null]})}}class _o{parent;measureIndex;beats;beatType;timeSigNumeric;constructor(t){Object.assign(this,t)}static equals(t,r){return t&&r&&t.beats===r.beats&&t.beatType===r.beatType}toJSX(){const t={};return this.beats===2&&this.beatType===2&&(t.symbol="cut"),this.beats===4&&this.beatType===4&&(t.symbol="common"),E.jsxs("time",{...t,children:[E.jsx("beats",{children:this.beats}),E.jsx("beat-type",{children:this.beatType})]})}}class fa{value;constructor(t){Object.assign(this,t)}toJSX(){return E.jsx("divisions",{children:this.value})}}class pa{value;constructor(t){Object.assign(this,t)}toJSX(){return E.jsx("staves",{children:this.value})}}const ml={[I.Zero]:0,[I.One]:1,[I.Two]:2,[I.Three]:3,[I.Four]:4,[I.Five]:5,[I.Six]:6,[I.Seven]:7,[I.Eight]:8,[I.Nine]:9};class ma{value;placement;data;constructor(t){this.data=t}toJSX(){const t=Object.keys(ml),r=this.data.filter(n=>t.includes(n.type));return r.length>0?r.map(n=>E.jsx("fingering",{placement:{[Ae.Up]:"above",[Ae.Down]:"below"}[n.direction],children:ml[n.type]})):null}}class ga{timeWarp;constructor(t){this.timeWarp=t}toJSX(){return E.jsxs("time-modification",{children:[E.jsx("actual-notes",{children:this.timeWarp.denominator}),E.jsx("normal-notes",{children:this.timeWarp.numerator})]})}}const ya={"-2":"flat-flat","-1":"flat",0:"natural",1:"sharp",2:"double-sharp"};class va{alter;constructor(t){this.alter=t}toJSX(){return typeof this.alter=="number"?E.jsx("accidental",{children:ya[this.alter]}):null}}class wa{parent;measureIndex;number;terms=[];constructor(t){Object.assign(this,t)}addTerm(t){this.terms.find(r=>r.tick===t.tick)||this.terms.push(t)}getJSX(t){const r=this.terms.find(s=>s.tick===t);if(!r)return null;let n="up";switch(r.tokenType){case I.OctaveShift8vb:n="up";break;case I.OctaveShift8va:n="down";break;case I.OctaveShift0:n="stop";break}return E.jsxs("direction",{children:[E.jsx("direction-type",{children:E.jsx("octave-shift",{size:"8",type:n,number:"1"})}),E.jsx("staff",{children:this.parent.parent.template.indexOf(this.parent.index)+1})]})}validate(){if(this.terms.length===0)return!0;this.terms.sort((n,s)=>n.tick-s.tick);const t=[],r=[];for(let n of this.terms)[I.OctaveShift8va,I.OctaveShift8vb].includes(n.tokenType)&&r.push(n),I.OctaveShift0===n.tokenType&&(r.push(n),t.push([...r]),r.length=0);return t.some(n=>n.length!==2)||r.length===1?(console.error("八度记号配对错误"),!1):!0}toJSX(){}}export{Fa as S}; diff --git a/dist/assets/Table-2648cf63.js b/dist/assets/Table-2648cf63.js deleted file mode 100644 index 94652daf02d356c337f0e574f6f10d8aef868e35..0000000000000000000000000000000000000000 --- a/dist/assets/Table-2648cf63.js +++ /dev/null @@ -1,44 +0,0 @@ -import{A as Nt,g as p,w as Gr,a as Y,a7 as nu,C as Wt,W as Ye,c as ve,b as B,e as ga,d as Zi,a8 as Kf,a9 as tn,_ as Ke,aa as ru,ab as an,a1 as Cn,ac as xn,a0 as Sn,$ as wn,a5 as ze,ad as Vf,ae as Dp,af as Fa,R as Qi,o as $a,ag as Ji,Q as Oa,ah as au,ai as zf,aj as ou,ak as Ip,al as is,am as _p,an as Lp,ao as Ap,ap as jp,a4 as Wn,aq as Kp,ar as Xu,as as iu,at as Bf,au as Hf,av as ea,aw as Wf,ax as lu,ay as Uf,az as sr,aA as el,aB as Yf,aC as ta,aD as Vp,aE as Gf,aF as qf,aG as Xf,aH as tl,aI as zp,V as Zu,aJ as Zf,aK as Bp,aL as Hp,aM as Wp,aN as yt,aO as Up,aP as pn,aQ as xt,aR as Ve,aS as yn,m as Ll,aT as su,aU as Mr,aV as Qf,aW as Yp,aX as Jf,aY as ev,aZ as Gp,a_ as tv,a$ as nv,b0 as qp,b1 as Xp}from"./_setToString-2991057b.js";import{r as i,_ as J,n as $t,R as Q,g as Da,j as S,c as ci,d as rv}from"./umi-d55575d8.js";import{f as av,j as Qu,r as Zp,k as kr,_ as ko,l as Qp,K as Be,m as ov,u as Rt,p as Jp,s as Ju,t as e0,v as t0,w as n0,x as r0,y as a0,z as ir,A as o0,F as nl,B as rl,G as iv,J as al,N as uu,O as No,U as i0,a as rr,V as l0,W as lv,T as on,X as Pr,Y as ec,Z as tc,$ as cu,a0 as s0,I as Nn,a1 as sv,D as Mo,g as nc,C as ya,a2 as u0,a3 as c0,a4 as d0,E as f0,P as v0,S as Xt,a5 as m0,R as Un,e as Zt,a6 as h0,M as p0}from"./index-ef09616c.js";import{a as uv,g as ol,h as cv,B as dv,i as du,j as fv,T as g0,S as Tr,C as vv,P as mv,s as fu,L as y0,e as lo,k as yo,w as b0,F as Ht,I as qr,f as C0,c as x0,D as S0,b as hv,A as w0,d as pv,R as E0}from"./useDebounce-e3ca8075.js";import{t as Mn,u as il,B as An}from"./button-95279f00.js";import{S as Nr,a as P0,d as R0}from"./index-a803403e.js";var k0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z"}}]},name:"calendar",theme:"outlined"};const N0=k0;var M0=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:N0}))},T0=i.forwardRef(M0);const gv=T0;var F0={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"filled"};const $0=F0;var O0=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:$0}))},D0=i.forwardRef(O0);const I0=D0;var _0={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"outlined"};const L0=_0;var A0=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:L0}))},j0=i.forwardRef(A0);const K0=j0;var V0={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z"}}]},name:"caret-up",theme:"outlined"};const z0=V0;var B0=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:z0}))},H0=i.forwardRef(B0);const W0=H0;var U0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"}}]},name:"clock-circle",theme:"outlined"};const Y0=U0;var G0=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:Y0}))},q0=i.forwardRef(G0);const yv=q0;var X0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 00-11.3 0L403.6 366.3a7.23 7.23 0 005.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"}}]},name:"column-height",theme:"outlined"};const Z0=X0;var Q0=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:Z0}))},J0=i.forwardRef(Q0);const eg=J0;var tg={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"}}]},name:"copy",theme:"outlined"};const ng=tg;var rg=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:ng}))},ag=i.forwardRef(rg);const vu=ag;var og={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},name:"delete",theme:"outlined"};const ig=og;var lg=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:ig}))},sg=i.forwardRef(lg);const bv=sg;var ug={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z"}}]},name:"double-left",theme:"outlined"};const cg=ug;var dg=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:cg}))},fg=i.forwardRef(dg);const vg=fg;var mg={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z"}}]},name:"double-right",theme:"outlined"};const hg=mg;var pg=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:hg}))},gg=i.forwardRef(pg);const yg=gg;var bg={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 000 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z"}}]},name:"enter",theme:"outlined"};const Cg=bg;var xg=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:Cg}))},Sg=i.forwardRef(xg);const wg=Sg;var Eg={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z"}}]},name:"file",theme:"outlined"};const Pg=Eg;var Rg=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:Pg}))},kg=i.forwardRef(Rg);const Cv=kg;var Ng={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z"}}]},name:"filter",theme:"filled"};const Mg=Ng;var Tg=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:Mg}))},Fg=i.forwardRef(Tg);const $g=Fg;var Og={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z"}}]},name:"filter",theme:"outlined"};const Dg=Og;var Ig=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:Dg}))},_g=i.forwardRef(Ig);const Lg=_g;var Ag={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 00-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z"}}]},name:"folder-open",theme:"outlined"};const jg=Ag;var Kg=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:jg}))},Vg=i.forwardRef(Kg);const zg=Vg;var Bg={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"}}]},name:"folder",theme:"outlined"};const Hg=Bg;var Wg=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:Hg}))},Ug=i.forwardRef(Wg);const Yg=Ug;var Gg={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 000 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 00391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6 877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 00-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z"}}]},name:"fullscreen-exit",theme:"outlined"};const qg=Gg;var Xg=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:qg}))},Zg=i.forwardRef(Xg);const Qg=Zg;var Jg={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M290 236.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7a8.01 8.01 0 0013.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 000 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 00-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z"}}]},name:"fullscreen",theme:"outlined"};const e1=Jg;var t1=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:e1}))},n1=i.forwardRef(t1);const r1=n1;var a1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M300 276.5a56 56 0 1056-97 56 56 0 00-56 97zm0 284a56 56 0 1056-97 56 56 0 00-56 97zM640 228a56 56 0 10112 0 56 56 0 00-112 0zm0 284a56 56 0 10112 0 56 56 0 00-112 0zM300 844.5a56 56 0 1056-97 56 56 0 00-56 97zM640 796a56 56 0 10112 0 56 56 0 00-112 0z"}}]},name:"holder",theme:"outlined"};const o1=a1;var i1=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:o1}))},l1=i.forwardRef(i1);const s1=l1;var u1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"}},{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"minus-square",theme:"outlined"};const c1=u1;var d1=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:c1}))},f1=i.forwardRef(d1);const v1=f1;var m1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"}},{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"plus-square",theme:"outlined"};const h1=m1;var p1=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:h1}))},g1=i.forwardRef(p1);const y1=g1;var b1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H188V494h440v326z"}},{tag:"path",attrs:{d:"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7.4 12.6-6.1v-63.9c12.9.1 25.9.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8a325.95 325.95 0 016.5 140.9h74.9c14.8-103.6-11.3-213-81-302.3z"}}]},name:"rotate-left",theme:"outlined"};const C1=b1;var x1=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:C1}))},S1=i.forwardRef(x1);const w1=S1;var E1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M480.5 251.2c13-1.6 25.9-2.4 38.8-2.5v63.9c0 6.5 7.5 10.1 12.6 6.1L660 217.6c4-3.2 4-9.2 0-12.3l-128-101c-5.1-4-12.6-.4-12.6 6.1l-.2 64c-118.6.5-235.8 53.4-314.6 154.2A399.75 399.75 0 00123.5 631h74.9c-.9-5.3-1.7-10.7-2.4-16.1-5.1-42.1-2.1-84.1 8.9-124.8 11.4-42.2 31-81.1 58.1-115.8 27.2-34.7 60.3-63.2 98.4-84.3 37-20.6 76.9-33.6 119.1-38.8z"}},{tag:"path",attrs:{d:"M880 418H352c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H396V494h440v326z"}}]},name:"rotate-right",theme:"outlined"};const P1=E1;var R1=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:P1}))},k1=i.forwardRef(R1);const N1=k1;var M1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z"}}]},name:"star",theme:"filled"};const T1=M1;var F1=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:T1}))},$1=i.forwardRef(F1);const O1=$1;var D1={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z"}}]},name:"swap-right",theme:"outlined"};const I1=D1;var _1=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:I1}))},L1=i.forwardRef(_1);const A1=L1;var j1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M859.9 780H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM505.7 669a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V176c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8z"}}]},name:"vertical-align-bottom",theme:"outlined"};const K1=j1;var V1=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:K1}))},z1=i.forwardRef(V1);const B1=z1;var H1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M859.9 474H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zm-353.6-74.7c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H550V104c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v156h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.6zm11.4 225.4a7.14 7.14 0 00-11.3 0L405.6 752.3a7.23 7.23 0 005.7 11.7H474v156c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V764h62.8c6 0 9.4-7 5.7-11.7L517.7 624.7z"}}]},name:"vertical-align-middle",theme:"outlined"};const W1=H1;var U1=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:W1}))},Y1=i.forwardRef(U1);const G1=Y1;var q1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z"}}]},name:"vertical-align-top",theme:"outlined"};const X1=q1;var Z1=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:X1}))},Q1=i.forwardRef(Z1);const J1=Q1;var ey={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"warning",theme:"filled"};const ty=ey;var ny=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:ty}))},ry=i.forwardRef(ny);const ay=ry;var oy={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"}}]},name:"zoom-in",theme:"outlined"};const iy=oy;var ly=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:iy}))},sy=i.forwardRef(ly);const uy=sy;var cy={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"}}]},name:"zoom-out",theme:"outlined"};const dy=cy;var fy=function(t,r){return i.createElement(Nt,p(p({},t),{},{ref:r,icon:dy}))},vy=i.forwardRef(fy);const my=vy;function ls(e){return e!=null&&e===e.window}function hy(e,t){var r,n;if(typeof window>"u")return 0;var a=t?"scrollTop":"scrollLeft",o=0;return ls(e)?o=e[t?"pageYOffset":"pageXOffset"]:e instanceof Document?o=e.documentElement[a]:(e instanceof HTMLElement||e)&&(o=e[a]),e&&!ls(e)&&typeof o!="number"&&(o=(n=((r=e.ownerDocument)!==null&&r!==void 0?r:e).documentElement)===null||n===void 0?void 0:n[a]),o}function py(e,t,r,n){var a=r-t;return e/=n/2,e<1?a/2*e*e*e+t:a/2*((e-=2)*e*e+2)+t}function gy(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.getContainer,n=r===void 0?function(){return window}:r,a=t.callback,o=t.duration,s=o===void 0?450:o,l=n(),u=hy(l,!0),c=Date.now(),d=function f(){var v=Date.now(),m=v-c,h=py(m>s?s:m,u,e,s);ls(l)?l.scrollTo(window.pageXOffset,h):l instanceof Document||l.constructor.name==="HTMLDocument"?l.documentElement.scrollTop=h:l.scrollTop=h,m0&&arguments[0]!==void 0?arguments[0]:!0,t=i.useRef({}),r=av();return i.useEffect(function(){var n=Qu.subscribe(function(a){t.current=a,e&&r()});return function(){return Qu.unsubscribe(n)}},[]),t.current}var ss=i.createContext("default"),rc=function(t){var r=t.children,n=t.size;return i.createElement(ss.Consumer,null,function(a){return i.createElement(ss.Provider,{value:n||a},r)})},yy=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);af?"".concat(f,"+"):c,k=O==="0"||O===0,M=c===null||k&&!P,F=(o!=null||l!=null)&&M,N=m&&!k,I=N?"":O,L=i.useMemo(function(){var ue=I==null||I==="";return(ue||k&&!P)&&!N},[I,k,P,N]),A=i.useRef(c);L||(A.current=c);var _=A.current,K=i.useRef(I);L||(K.current=I);var z=K.current,j=i.useRef(N);L||(j.current=N);var V=i.useMemo(function(){if(!b)return J({},C);var ue={marginTop:b[1]};return R==="rtl"?ue.left=parseInt(b[0],10):ue.right=-parseInt(b[0],10),J(J({},ue),C)},[R,b,C]),X=y??(typeof _=="string"||typeof _=="number"?_:void 0),H=L||!s?null:i.createElement("span",{className:"".concat(D,"-status-text")},s),Z=!_||Ye(_)!=="object"?void 0:ga(_,function(ue){return{style:J(J({},V),ue.style)}}),U=ve(B(B(B({},"".concat(D,"-status-dot"),F),"".concat(D,"-status-").concat(o),!!o),"".concat(D,"-status-").concat(l),ro(l))),ae={};l&&!ro(l)&&(ae.background=l);var q=ve(D,B(B(B({},"".concat(D,"-status"),F),"".concat(D,"-not-a-wrapper"),!a),"".concat(D,"-rtl"),R==="rtl"),x);if(!a&&F){var ne=V.color;return i.createElement("span",J({},w,{className:q,style:V}),i.createElement("span",{className:U,style:ae}),s&&i.createElement("span",{style:{color:ne},className:"".concat(D,"-status-text")},s))}return i.createElement("span",J({},w,{className:q}),a,i.createElement(Zi,{visible:!L,motionName:"".concat(D,"-zoom"),motionAppear:!1,motionDeadline:1e3},function(ue){var G=ue.className,te=$("scroll-number",n),ee=j.current,le=ve(B(B(B(B(B(B({},"".concat(D,"-dot"),ee),"".concat(D,"-count"),!ee),"".concat(D,"-count-sm"),g==="small"),"".concat(D,"-multiple-words"),!ee&&z&&z.toString().length>1),"".concat(D,"-status-").concat(o),!!o),"".concat(D,"-status-").concat(l),ro(l))),re=J({},V);return l&&!ro(l)&&(re=re||{},re.background=l),i.createElement(Ty,{prefixCls:te,show:!L,motionClassName:G,className:le,count:z,title:X,style:re,key:"scrollNumber"},Z)}),H)};wv.Ribbon=Py;const Dn=wv;var Ev=function(t){if(Kf()&&window.document.documentElement){var r=Array.isArray(t)?t:[t],n=window.document.documentElement;return r.some(function(a){return a in n.style})}return!1},$y=function(t,r){if(!Ev(t))return!1;var n=document.createElement("div"),a=n.style[t];return n.style[t]=r,n.style[t]!==a};function us(e,t){return!Array.isArray(e)&&t!==void 0?$y(e,t):Ev(e)}var Oy={getNow:function(){return $t()},getFixedDate:function(t){return $t(t,"YYYY-MM-DD")},getEndDate:function(t){var r=t.clone();return r.endOf("month")},getWeekDay:function(t){var r=t.clone().locale("en_US");return r.weekday()+r.localeData().firstDayOfWeek()},getYear:function(t){return t.year()},getMonth:function(t){return t.month()},getDate:function(t){return t.date()},getHour:function(t){return t.hour()},getMinute:function(t){return t.minute()},getSecond:function(t){return t.second()},addYear:function(t,r){var n=t.clone();return n.add(r,"year")},addMonth:function(t,r){var n=t.clone();return n.add(r,"month")},addDate:function(t,r){var n=t.clone();return n.add(r,"day")},setYear:function(t,r){var n=t.clone();return n.year(r)},setMonth:function(t,r){var n=t.clone();return n.month(r)},setDate:function(t,r){var n=t.clone();return n.date(r)},setHour:function(t,r){var n=t.clone();return n.hour(r)},setMinute:function(t,r){var n=t.clone();return n.minute(r)},setSecond:function(t,r){var n=t.clone();return n.second(r)},isAfter:function(t,r){return t.isAfter(r)},isValidate:function(t){return t.isValid()},locale:{getWeekFirstDay:function(t){var r=$t().locale(t);return r.localeData().firstDayOfWeek()},getWeekFirstDate:function(t,r){var n=r.clone(),a=n.locale(t);return a.weekday(0)},getWeek:function(t,r){var n=r.clone(),a=n.locale(t);return a.week()},getShortWeekDays:function(t){var r=$t().locale(t);return r.localeData().weekdaysMin()},getShortMonths:function(t){var r=$t().locale(t);return r.localeData().monthsShort()},format:function(t,r,n){var a=r.clone(),o=a.locale(t);return o.format(n)},parse:function(t,r,n){for(var a=[],o=0;o1&&(s=t.addDate(s,-7)),s}function uo(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;switch(t){case"year":return r.addYear(e,n*10);case"quarter":case"month":return r.addYear(e,n);default:return r.addMonth(e,n)}}function en(e,t){var r=t.generateConfig,n=t.locale,a=t.format;return typeof a=="function"?a(e):r.locale.format(n.locale,e,a)}function $v(e,t){var r=t.generateConfig,n=t.locale,a=t.formatList;return!e||typeof a[0]=="function"?null:r.locale.parse(n.locale,e,a)}function vs(e){var t=e.cellDate,r=e.mode,n=e.disabledDate,a=e.generateConfig;if(!n)return!1;var o=function(h,g,y){for(var b=g;b<=y;){var C=void 0;switch(h){case"date":{if(C=a.setDate(t,b),!n(C))return!1;break}case"month":{if(C=a.setMonth(t,b),!vs({cellDate:C,mode:"month",generateConfig:a,disabledDate:n}))return!1;break}case"year":{if(C=a.setYear(t,b),!vs({cellDate:C,mode:"year",generateConfig:a,disabledDate:n}))return!1;break}}b+=1}return!0};switch(r){case"date":case"week":return n(t);case"month":{var s=1,l=a.getDate(a.getEndDate(t));return o("date",s,l)}case"quarter":{var u=Math.floor(a.getMonth(t)/3)*3,c=u+2;return o("month",u,c)}case"year":return o("month",0,11);case"decade":{var d=a.getYear(t),f=Math.floor(d/_n)*_n,v=f+_n-1;return o("year",f,v)}}}function Qy(e){var t=i.useContext(bn),r=t.hideHeader;if(r)return null;var n=e.prefixCls,a=e.generateConfig,o=e.locale,s=e.value,l=e.format,u="".concat(n,"-header");return i.createElement(Ia,{prefixCls:u},s?en(s,{locale:o,format:l,generateConfig:a}):" ")}function Jy(e){var t=e.value,r=e.generateConfig,n=e.disabledMinutes,a=e.disabledSeconds,o=e.minutes,s=e.seconds,l=e.use12Hours,u=function(d,f,v,m){var h=t||r.getNow(),g=Math.max(0,f),y=Math.max(0,v),b=Math.max(0,m),C=n&&n(g);if(C!=null&&C.includes(y)){var x=o.find(function(w){return!C.includes(w.value)});if(x)y=x.value;else return null}var E=a&&a(g,y);if(E!=null&&E.includes(b)){var P=s.find(function(w){return!E.includes(w.value)});if(P)b=P.value;else return null}return h=Pv(r,h,!l||!d?g:g+12,y,b),h};return u}function Ov(e,t){for(var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0",n=String(e);n.length=1?r|0:1,s=e;s<=t;s+=o)a.push({label:Ov(s,2),value:s,disabled:(n||[]).includes(s)});return a}function nb(e){var t=e.generateConfig,r=e.prefixCls,n=e.operationRef,a=e.activeColumnIndex,o=e.value,s=e.showHour,l=e.showMinute,u=e.showSecond,c=e.use12Hours,d=e.hourStep,f=d===void 0?1:d,v=e.minuteStep,m=v===void 0?1:v,h=e.secondStep,g=h===void 0?1:h,y=e.disabledHours,b=e.disabledMinutes,C=e.disabledSeconds,x=e.disabledTime,E=e.hideDisabledOptions,P=e.onSelect,w=[],T="".concat(r,"-content"),$="".concat(r,"-time-panel"),R,D=o?t.getHour(o):-1,O=D,k=o?t.getMinute(o):-1,M=o?t.getSecond(o):-1,F=t.getNow(),N=i.useMemo(function(){if(x){var G=x(F);return[G.disabledHours,G.disabledMinutes,G.disabledSeconds]}return[y,b,C]},[y,b,C,x,F]),I=Y(N,3),L=I[0],A=I[1],_=I[2],K=Al(0,23,f,L&&L()),z=ru(function(){return K},K,tb);c&&(R=O>=12,O%=12);var j=i.useMemo(function(){if(!c)return[!1,!1];var G=[!0,!0];return z.forEach(function(te){var ee=te.disabled,le=te.value;ee||(le>=12?G[1]=!1:G[0]=!1)}),G},[c,z]),V=Y(j,2),X=V[0],H=V[1],Z=i.useMemo(function(){return c?z.filter(R?function(G){return G.value>=12}:function(G){return G.value<12}).map(function(G){var te=G.value%12,ee=te===0?"12":Ov(te,2);return p(p({},G),{},{label:ee,value:te})}):z},[c,R,z]),U=Al(0,59,m,A&&A(D)),ae=Al(0,59,g,_&&_(D,k)),q=Jy({value:o,generateConfig:t,disabledMinutes:A,disabledSeconds:_,minutes:U,seconds:ae,use12Hours:c});n.current={onUpDown:function(te){var ee=w[a];if(ee)for(var le=ee.units.findIndex(function(me){return me.value===ee.value}),re=ee.units.length,ge=1;ge2&&arguments[2]!==void 0?arguments[2]:!1;(Ee===g||dt)&&(fe(xe),T&&T(xe),ae&&ae(xe,Je),$&&!ba(l,xe,ce)&&!(v!=null&&v(xe))&&$(xe))},mt=function(xe){if(xb.includes(Ee)){var Je,dt,ut=Ee==="date";switch(xe===Be.PAGE_UP||xe===Be.PAGE_DOWN?dt=ut?l.addMonth:l.addYear:dt=ut?l.addDate:l.addMonth,xe){case Be.LEFT:case Be.PAGE_UP:Je=dt(he,-1);break;case Be.RIGHT:case Be.PAGE_DOWN:Je=dt(he,1);break;case Be.UP:case Be.DOWN:Je=dt(he,Number("".concat(xe===Be.UP?"-":"").concat(ut?so:pu)));break}if(Je)return!(v!=null&&v(Je))}return!0},tt=function(xe){if(re.current&&re.current.onKeyDown){var Je=!0,dt=xe.which;if([Be.LEFT,Be.RIGHT,Be.UP,Be.DOWN,Be.PAGE_UP,Be.PAGE_DOWN,Be.ENTER].includes(dt)&&(xe.preventDefault(),dt!==Be.ENTER&&b===0&&(Je=mt(dt))),Je)return re.current.onKeyDown(xe)}return an(!1,"Panel not correct handle keyDown event. Please help to fire issue about this."),!1},we=function(xe){re.current&&re.current.onBlur&&re.current.onBlur(xe)};Z&&te!=="right"&&(Z.current={onKeyDown:tt,onClose:function(){re.current&&re.current.onClose&&re.current.onClose()}}),i.useEffect(function(){u&&!ge.current&&Ce(u)},[u]),i.useEffect(function(){ge.current=!1},[]);var He,Me=p(p({},e),{},{operationRef:re,prefixCls:n,viewDate:he,value:ce,onViewDateChange:ke,sourceMode:ct,onPanelChange:Ge,disabledDate:v});switch(delete Me.onChange,delete Me.onSelect,Ee){case"decade":He=i.createElement(Gy,J({},Me,{onSelect:function(xe,Je){ke(xe),_e(xe,Je)}}));break;case"year":He=i.createElement(Cb,J({},Me,{onSelect:function(xe,Je){ke(xe),_e(xe,Je)}}));break;case"month":He=i.createElement(fb,J({},Me,{onSelect:function(xe,Je){ke(xe),_e(xe,Je)}}));break;case"quarter":He=i.createElement(gb,J({},Me,{onSelect:function(xe,Je){ke(xe),_e(xe,Je)}}));break;case"week":He=i.createElement(sb,J({},Me,{onSelect:function(xe,Je){ke(xe),_e(xe,Je)}}));break;case"time":delete Me.showTime,He=i.createElement(_v,J({},Me,Ye(x)==="object"?x:null,{onSelect:function(xe,Je){ke(xe),_e(xe,Je)}}));break;default:x?He=i.createElement(lb,J({},Me,{onSelect:function(xe,Je){ke(xe),_e(xe,Je)}})):He=i.createElement(hu,J({},Me,{onSelect:function(xe,Je){ke(xe),_e(xe,Je)}}))}var Le,ye,de=function(){var xe=l.getNow(),Je=Ly(l.getHour(xe),l.getMinute(xe),l.getSecond(xe),j?I:1,V?A:1,X?K:1),dt=Pv(l,xe,Je[0],Je[1],Je[2]);_e(dt,"submit")};q||(Le=Lv(n,Ee,P),ye=Av({prefixCls:n,components:M,needConfirmButton:z,okDisabled:!ce||v&&v(ce),locale:s,showNow:C,onNow:z&&de,onOk:function(){ce&&(_e(ce,"submit",!0),k&&k(ce))}}));var be;if(E&&Ee==="date"&&g==="date"&&!x){var Ne=l.getNow(),Ue="".concat(n,"-today-btn"),lt=v&&v(Ne);be=i.createElement("a",{className:ve(Ue,lt&&"".concat(Ue,"-disabled")),"aria-disabled":lt,onClick:function(){lt||_e(Ne,"mouse",!0)}},s.today)}return i.createElement(bn.Provider,{value:p(p({},H),{},{mode:Ee,hideHeader:"hideHeader"in e?w:H.hideHeader,hidePrevBtn:G&&te==="right",hideNextBtn:G&&te==="left"})},i.createElement("div",{tabIndex:b,className:ve("".concat(n,"-panel"),a,(t={},B(t,"".concat(n,"-panel-has-range"),ee&&ee[0]&&ee[1]),B(t,"".concat(n,"-panel-has-range-hover"),le&&le[0]&&le[1]),B(t,"".concat(n,"-panel-rtl"),F==="rtl"),t)),style:o,onKeyDown:tt,onBlur:we,onMouseDown:D,ref:U},He,Le||ye||be?i.createElement("div",{className:"".concat(n,"-footer")},Le,ye,be):null))}var Sb={bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}}};function Kv(e){var t,r=e.prefixCls,n=e.popupElement,a=e.popupStyle,o=e.visible,s=e.dropdownClassName,l=e.dropdownAlign,u=e.transitionName,c=e.getPopupContainer,d=e.children,f=e.range,v=e.popupPlacement,m=e.direction,h="".concat(r,"-dropdown"),g=function(){return v!==void 0?v:m==="rtl"?"bottomRight":"bottomLeft"};return i.createElement(Jp,{showAction:[],hideAction:[],popupPlacement:g(),builtinPlacements:Sb,prefixCls:h,popupTransitionName:u,popup:n,popupAlign:l,popupVisible:o,popupClassName:ve(s,(t={},B(t,"".concat(h,"-range"),f),B(t,"".concat(h,"-rtl"),m==="rtl"),t)),popupStyle:a,getPopupContainer:c},d)}function hs(e){var t=e.open,r=e.value,n=e.isClickOutside,a=e.triggerOpen,o=e.forwardKeyDown,s=e.onKeyDown,l=e.blurToCancel,u=e.onSubmit,c=e.onCancel,d=e.onFocus,f=e.onBlur,v=e.currentFocusedKey,m=e.key,h=m===void 0?"start":m,g=i.useState(!1),y=Y(g,2),b=y[0],C=y[1],x=i.useState(!1),E=Y(x,2),P=E[0],w=E[1],T=i.useRef(),$=i.useRef(!1),R=i.useRef(!1),D=i.useRef(!1),O={onMouseDown:function(){C(!0),a(!0)},onKeyDown:function(M){var F=function(){D.current=!0};if(s(M,F),!D.current){switch(M.which){case Be.ENTER:{t?u()!==!1&&C(!0):a(!0),M.preventDefault();return}case Be.TAB:{b&&t&&!M.shiftKey?(C(!1),M.preventDefault()):!b&&t&&!o(M)&&M.shiftKey&&(C(!0),M.preventDefault());return}case Be.ESC:{C(!0),c();return}}!t&&![Be.SHIFT].includes(M.which)?a(!0):b||o(M)}},onFocus:function(M){C(!0),w(!0),v&&(v.current=h),clearTimeout(T.current),d&&d(M)},onBlur:function(M){if($.current||!n(document.activeElement)){$.current=!1;return}l?setTimeout(function(){for(var F=document,N=F.activeElement;N&&N.shadowRoot;)N=N.shadowRoot.activeElement;n(N)&&c()},0):t&&(a(!1),R.current&&u()),w(!1),v?(v.current="",T.current=setTimeout(function(){v.current||f==null||f(M)},100)):f==null||f(M)}};return i.useEffect(function(){R.current=!1},[t]),i.useEffect(function(){R.current=!0},[r]),i.useEffect(function(){return Vy(function(k){var M=zy(k),F=n(M);t?F?(!P||F)&&a(!1):($.current=!0,requestAnimationFrame(function(){$.current=!1})):P&&!F&&($.current=!0)})}),i.useEffect(function(){return function(){return clearTimeout(T.current)}},[]),[O,{focused:P,typing:b}]}function ps(e){var t=e.valueTexts,r=e.onTextChange,n=i.useState(""),a=Y(n,2),o=a[0],s=a[1],l=i.useRef([]);l.current=t;function u(d){s(d),r(d)}function c(){s(l.current[0])}return i.useEffect(function(){t.every(function(d){return d!==o})&&c()},[t.join("||")]),[o,u,c]}function $i(e,t){var r=t.formatList,n=t.generateConfig,a=t.locale;return ru(function(){if(!e)return[[""],""];for(var o="",s=[],l=0;l1&&arguments[1]!==void 0?arguments[1]:!1;if(cancelAnimationFrame(c.current),b){u(y);return}c.current=requestAnimationFrame(function(){u(y)})}var f=$i(l,{formatList:r,generateConfig:n,locale:a}),v=Y(f,2),m=v[1];function h(y){d(y)}function g(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;d(null,y)}return i.useEffect(function(){g(!0)},[e]),i.useEffect(function(){return function(){return cancelAnimationFrame(c.current)}},[]),[m,h,g]}function wb(e){var t,r=e.prefixCls,n=r===void 0?"rc-picker":r,a=e.id,o=e.tabIndex,s=e.style,l=e.className,u=e.dropdownClassName,c=e.dropdownAlign,d=e.popupStyle,f=e.transitionName,v=e.generateConfig,m=e.locale,h=e.inputReadOnly,g=e.allowClear,y=e.autoFocus,b=e.showTime,C=e.picker,x=C===void 0?"date":C,E=e.format,P=e.use12Hours,w=e.value,T=e.defaultValue,$=e.open,R=e.defaultOpen,D=e.defaultOpenValue,O=e.suffixIcon,k=e.clearIcon,M=e.disabled,F=e.disabledDate,N=e.placeholder,I=e.getPopupContainer,L=e.pickerRef,A=e.panelRender,_=e.onChange,K=e.onOpenChange,z=e.onFocus,j=e.onBlur,V=e.onMouseDown,X=e.onMouseUp,H=e.onMouseEnter,Z=e.onMouseLeave,U=e.onContextMenu,ae=e.onClick,q=e.onKeyDown,ne=e.onSelect,ue=e.direction,G=e.autoComplete,te=G===void 0?"off":G,ee=e.inputRender,le=i.useRef(null),re=x==="date"&&!!b||x==="time",ge=Dv(kv(E,x,b,P)),Pe=i.useRef(null),me=i.useRef(null),ce=i.useRef(null),fe=Rt(null,{value:w,defaultValue:T}),ie=Y(fe,2),se=ie[0],he=ie[1],Ce=i.useState(se),ke=Y(Ce,2),Te=ke[0],Se=ke[1],Re=i.useRef(null),Ee=Rt(!1,{value:$,defaultValue:R,postState:function(Oe){return M?!1:Oe},onChange:function(Oe){K&&K(Oe),!Oe&&Re.current&&Re.current.onClose&&Re.current.onClose()}}),Qe=Y(Ee,2),et=Qe[0],vt=Qe[1],ct=$i(Te,{formatList:ge,generateConfig:v,locale:m}),ht=Y(ct,2),Ge=ht[0],_e=ht[1],mt=ps({valueTexts:Ge,onTextChange:function(Oe){var De=$v(Oe,{locale:m,formatList:ge,generateConfig:v});De&&(!F||!F(De))&&Se(De)}}),tt=Y(mt,3),we=tt[0],He=tt[1],Me=tt[2],Le=function(Oe){Se(Oe),he(Oe),_&&!ba(v,se,Oe)&&_(Oe,Oe?en(Oe,{generateConfig:v,locale:m,format:ge[0]}):"")},ye=function(Oe){M&&Oe||vt(Oe)},de=function(Oe){return et&&Re.current&&Re.current.onKeyDown?Re.current.onKeyDown(Oe):(an(!1,"Picker not correct forward KeyDown operation. Please help to fire issue about this."),!1)},be=function(){for(var Oe=arguments.length,De=new Array(Oe),We=0;Wem(d);case"month":return v(y)>v(d);case"week":return f(y)>f(d);default:return!or(u,y,d)&&u.isAfter(y,d)}return!1},[s,l[1],d,t]),g=i.useCallback(function(y){if(s&&s(y))return!0;if(l[0]&&c)return!or(u,y,d)&&u.isAfter(c,y);if(r&&c)switch(n){case"quarter":return m(y)0&&arguments[0]!==void 0?arguments[0]:!1,je=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},rt=null;Ie&&Fn&&Fn[0]&&Fn[1]&&h.isAfter(Fn[1],Fn[0])&&(rt=Fn);var wt=w;if(w&&Ye(w)==="object"&&w.defaultValue){var Yt=w.defaultValue;wt=p(p({},w),{},{defaultValue:Pt(Yt,we)||void 0})}var Br=null;return L&&(Br=function(On,Vn){return L(On,Vn,{range:we?"end":"start"})}),i.createElement(La.Provider,{value:{inRange:!0,panelPosition:bt,rangedValue:hr||ut,hoverRangedValue:rt}},i.createElement(jv,J({},e,je,{dateRender:Br,showTime:wt,mode:Ft[we],generateConfig:h,style:void 0,direction:se,disabledDate:we===0?Ze:Xe,disabledTime:function(On){return I?I(On,we===0?"start":"end"):!1},className:ve(B({},"".concat(o,"-panel-focused"),we===0?!qe:!ln)),value:Pt(ut,we),locale:g,tabIndex:-1,onPanelChange:function(On,Vn){we===0&&Vr(!0),we===1&&ua(!0),ot(Pn(Ft,Vn,we),Pn(ut,On,we));var Jn=On;bt==="right"&&Ft[we]===Vn&&(Jn=uo(Jn,Vn,h,-1)),xe(Jn,we)},onOk:null,onSelect:void 0,onChange:void 0,defaultValue:we===0?Pt(ut,1):Pt(ut,0)})))}var br=0,Uu=0;if(we&&Qe.current&&vt.current&&Ee.current){br=Qe.current.offsetWidth+vt.current.offsetWidth;var Np=Ge.current.offsetLeft>br?Ge.current.offsetLeft-br:Ge.current.offsetLeft;Ee.current.offsetWidth&&Ge.current.offsetWidth&&br>Ee.current.offsetWidth-Ge.current.offsetWidth-(se==="rtl"?0:Np)&&(Uu=br)}var Mp=se==="rtl"?{right:br}:{left:br};function Tp(){var bt,je=Lv(o,Ft[we],U),rt=Av({prefixCls:o,components:fe,needConfirmButton:Te,okDisabled:!Pt(ut,we)||N&&N(ut[we]),locale:g,rangeList:kp,onOk:function(){Pt(ut,we)&&(Xn(ut,we),me&&me(ut))}});if(P!=="time"&&!w){var wt=$e(we),Yt=uo(wt,P,h),Br=Ft[we],Qn=Br===P,On=Dl(Qn?"left":!1,{pickerValue:wt,onPickerValueChange:function(fn){xe(fn,we)}}),Vn=Dl("right",{pickerValue:Yt,onPickerValueChange:function(fn){xe(uo(fn,P,h,-1),we)}});se==="rtl"?bt=i.createElement(i.Fragment,null,Vn,Qn&&On):bt=i.createElement(i.Fragment,null,On,Qn&&Vn)}else bt=Dl();var Jn=i.createElement(i.Fragment,null,i.createElement("div",{className:"".concat(o,"-panels")},bt),(je||rt)&&i.createElement("div",{className:"".concat(o,"-footer")},je,rt));return A&&(Jn=A(Jn)),i.createElement("div",{className:"".concat(o,"-panel-container"),style:{marginLeft:Uu},ref:Ee,onMouseDown:function(fn){fn.preventDefault()}},Jn)}var Fp=i.createElement("div",{className:ve("".concat(o,"-range-wrapper"),"".concat(o,"-").concat(P,"-range-wrapper")),style:{minWidth:Kt}},i.createElement("div",{ref:Ge,className:"".concat(o,"-range-arrow"),style:Mp}),Tp()),Yu;j&&(Yu=i.createElement("span",{className:"".concat(o,"-suffix")},j));var Gu;z&&(Pt(be,0)&&!Le[0]||Pt(be,1)&&!Le[1])&&(Gu=i.createElement("span",{onMouseDown:function(je){je.preventDefault(),je.stopPropagation()},onMouseUp:function(je){je.preventDefault(),je.stopPropagation();var rt=be;Le[0]||(rt=Pn(rt,null,0)),Le[1]||(rt=Pn(rt,null,1)),Xn(rt,null),En(!1,we)},className:"".concat(o,"-clear")},V||i.createElement("span",{className:"".concat(o,"-clear-btn")})));var qu={size:Nv(P,_e[0],h)},Il=0,_l=0;Qe.current&&et.current&&vt.current&&(we===0?_l=Qe.current.offsetWidth:(Il=br,_l=et.current.offsetWidth));var $p=se==="rtl"?{right:Il}:{left:Il},Op=function(je,rt){var wt=Pn(ut,je,we);rt==="submit"||rt!=="key"&&!Te?(Xn(wt,we),we===0?Vr():ua()):Ot(wt)};return i.createElement(bn.Provider,{value:{operationRef:Me,hideHeader:P==="time",onDateMouseEnter:Ol,onDateMouseLeave:ai,hideRanges:!0,onSelect:Op,open:Ie}},i.createElement(Kv,{visible:Ie,popupElement:Fp,popupStyle:c,prefixCls:o,dropdownClassName:d,dropdownAlign:v,getPopupContainer:m,transitionName:f,range:!0,direction:se},i.createElement("div",J({ref:Re,className:ve(o,"".concat(o,"-range"),u,(t={},B(t,"".concat(o,"-disabled"),Le[0]&&Le[1]),B(t,"".concat(o,"-focused"),we===0?pe:It),B(t,"".concat(o,"-rtl"),se==="rtl"),t)),style:l,onClick:sn,onMouseEnter:re,onMouseLeave:ge,onMouseDown:zr,onMouseUp:le},Iv(e)),i.createElement("div",{className:ve("".concat(o,"-input"),(r={},B(r,"".concat(o,"-input-active"),we===0),B(r,"".concat(o,"-input-placeholder"),!!ti),r)),ref:Qe},i.createElement("input",J({id:s,disabled:Le[0],readOnly:H||typeof _e[0]=="function"||!qe,value:ti||mr,onChange:function(je){la(je.target.value)},autoFocus:b,placeholder:Pt(y,0)||"",ref:ct},W,qu,{autoComplete:ke}))),i.createElement("div",{className:"".concat(o,"-range-separator"),ref:vt},R),i.createElement("div",{className:ve("".concat(o,"-input"),(n={},B(n,"".concat(o,"-input-active"),we===1),B(n,"".concat(o,"-input-placeholder"),!!yr),n)),ref:et},i.createElement("input",J({disabled:Le[1],readOnly:H||typeof _e[0]=="function"||!ln,value:yr||Ct,onChange:function(je){Lt(je.target.value)},placeholder:Pt(y,1)||"",ref:ht},At,qu,{autoComplete:ke}))),i.createElement("div",{className:"".concat(o,"-active-bar"),style:p(p({},$p),{},{width:_l,position:"absolute"})}),Yu,Gu)))}var Tb=function(e){Cn(r,e);var t=xn(r);function r(){var n;Sn(this,r);for(var a=arguments.length,o=new Array(a),s=0;sF?(k=D,w.current="x"):(k=O,w.current="y"),t(-k,-k)&&R.preventDefault()}var $=i.useRef(null);$.current={onTouchStart:x,onTouchMove:E,onTouchEnd:P,onWheel:T},i.useEffect(function(){function R(M){$.current.onTouchStart(M)}function D(M){$.current.onTouchMove(M)}function O(M){$.current.onTouchEnd(M)}function k(M){$.current.onWheel(M)}return document.addEventListener("touchmove",D,{passive:!1}),document.addEventListener("touchend",O,{passive:!1}),e.current.addEventListener("touchstart",R,{passive:!1}),e.current.addEventListener("wheel",k),function(){document.removeEventListener("touchmove",D),document.removeEventListener("touchend",O)}},[])}function zv(e){var t=i.useState(0),r=Y(t,2),n=r[0],a=r[1],o=i.useRef(0),s=i.useRef();return s.current=e,e0(function(){var l;(l=s.current)===null||l===void 0||l.call(s)},[n]),function(){o.current===n&&(o.current+=1,a(o.current))}}function _b(e){var t=i.useRef([]),r=i.useState({}),n=Y(r,2),a=n[1],o=i.useRef(typeof e=="function"?e():e),s=zv(function(){var u=o.current;t.current.forEach(function(c){u=c(u)}),t.current=[],o.current=u,a({})});function l(u){t.current.push(u),s()}return[o.current,l]}var mc={width:0,height:0,left:0,top:0,right:0};function Lb(e,t,r,n,a,o,s){var l=s.tabs,u=s.tabPosition,c=s.rtl,d,f,v;return["top","bottom"].includes(u)?(d="width",f=c?"right":"left",v=Math.abs(r)):(d="height",f="top",v=-r),i.useMemo(function(){if(!l.length)return[0,0];for(var m=l.length,h=m,g=0;gv+t){h=g-1;break}}for(var b=0,C=m-1;C>=0;C-=1){var x=e.get(l[C].key)||mc;if(x[f]Xe?"left":"right"})}),M=Y(k,2),F=M[0],N=M[1],I=dc(0,function(Ze,Xe){!O&&x&&x({direction:Ze>Xe?"top":"bottom"})}),L=Y(I,2),A=L[0],_=L[1],K=i.useState([0,0]),z=Y(K,2),j=z[0],V=z[1],X=i.useState([0,0]),H=Y(X,2),Z=H[0],U=H[1],ae=i.useState([0,0]),q=Y(ae,2),ne=q[0],ue=q[1],G=i.useState([0,0]),te=Y(G,2),ee=te[0],le=te[1],re=_b(new Map),ge=Y(re,2),Pe=ge[0],me=ge[1],ce=Ob(o,Pe,Z[0]),fe=pi(j,O),ie=pi(Z,O),se=pi(ne,O),he=pi(ee,O),Ce=feRe?Re:Ze}var Qe=i.useRef(),et=i.useState(),vt=Y(et,2),ct=vt[0],ht=vt[1];function Ge(){ht(Date.now())}function _e(){window.clearTimeout(Qe.current)}Ib(T,function(Ze,Xe){function Fe(Ae,Ie){Ae(function(Oe){var De=Ee(Oe+Ie);return De})}return Ce?(O?Fe(N,Ze):Fe(_,Xe),_e(),Ge(),!0):!1}),i.useEffect(function(){return _e(),ct&&(Qe.current=window.setTimeout(function(){ht(0)},100)),_e},[ct]);var mt=Lb(ce,ke,O?F:A,ie,se,he,p(p({},e),{},{tabs:o})),tt=Y(mt,2),we=tt[0],He=tt[1],Me=Vf(function(){var Ze=arguments.length>0&&arguments[0]!==void 0?arguments[0]:d,Xe=ce.get(Ze)||{width:0,height:0,left:0,right:0,top:0};if(O){var Fe=F;f?Xe.rightF+ke&&(Fe=Xe.right+Xe.width-ke):Xe.left<-F?Fe=-Xe.left:Xe.left+Xe.width>-F+ke&&(Fe=-(Xe.left+Xe.width-ke)),_(0),N(Ee(Fe))}else{var Ae=A;Xe.top<-A?Ae=-Xe.top:Xe.top+Xe.height>-A+ke&&(Ae=-(Xe.top+Xe.height-ke)),N(0),_(Ee(Ae))}}),Le={};g==="top"||g==="bottom"?Le[f?"marginRight":"marginLeft"]=y:Le.marginTop=y;var ye=o.map(function(Ze,Xe){var Fe=Ze.key;return i.createElement(zb,{id:u,prefixCls:a,key:Fe,tab:Ze,style:Xe===0?void 0:Le,closable:Ze.closable,editable:m,active:Fe===d,renderWrapper:b,removeAriaLabel:h==null?void 0:h.removeAriaLabel,onClick:function(Ie){C(Fe,Ie)},onFocus:function(){Me(Fe),Ge(),T.current&&(f||(T.current.scrollLeft=0),T.current.scrollTop=0)}})}),de=function(){return me(function(){var Xe=new Map;return o.forEach(function(Fe){var Ae,Ie=Fe.key,Oe=(Ae=$.current)===null||Ae===void 0?void 0:Ae.querySelector('[data-node-key="'.concat(Bv(Ie),'"]'));Oe&&Xe.set(Ie,{width:Oe.offsetWidth,height:Oe.offsetHeight,left:Oe.offsetLeft,top:Oe.offsetTop})}),Xe})};i.useEffect(function(){de()},[o.map(function(Ze){return Ze.key}).join("_")]);var be=zv(function(){var Ze=ca(E),Xe=ca(P),Fe=ca(w);V([Ze[0]-Xe[0]-Fe[0],Ze[1]-Xe[1]-Fe[1]]);var Ae=ca(D);ue(Ae);var Ie=ca(R);le(Ie);var Oe=ca($);U([Oe[0]-Ae[0],Oe[1]-Ae[1]]),de()}),Ne=o.slice(0,we),Ue=o.slice(He+1),lt=[].concat(Ke(Ne),Ke(Ue)),$e=i.useState(),xe=Y($e,2),Je=xe[0],dt=xe[1],ut=ce.get(d),Ot=i.useRef();function Dt(){Gr.cancel(Ot.current)}i.useEffect(function(){var Ze={};return ut&&(O?(f?Ze.right=ut.right:Ze.left=ut.left,Ze.width=ut.width):(Ze.top=ut.top,Ze.height=ut.height)),Dt(),Ot.current=Gr(function(){dt(Ze)}),Dt},[ut,O,f]),i.useEffect(function(){Me()},[d,Se,Re,hc(ut),hc(ce),O]),i.useEffect(function(){be()},[f]);var kt=!!lt.length,Ft="".concat(a,"-nav-wrap"),nt,ot,ft,it;return O?f?(ot=F>0,nt=F!==Re):(nt=F<0,ot=F!==Se):(ft=A<0,it=A!==Se),i.createElement(kr,{onResize:be},i.createElement("div",{ref:Dp(t,E),role:"tablist",className:ve("".concat(a,"-nav"),s),style:l,onKeyDown:function(){Ge()}},i.createElement(pc,{ref:P,position:"left",extra:v,prefixCls:a}),i.createElement("div",{className:ve(Ft,(r={},B(r,"".concat(Ft,"-ping-left"),nt),B(r,"".concat(Ft,"-ping-right"),ot),B(r,"".concat(Ft,"-ping-top"),ft),B(r,"".concat(Ft,"-ping-bottom"),it),r)),ref:T},i.createElement(kr,{onResize:be},i.createElement("div",{ref:$,className:"".concat(a,"-nav-list"),style:{transform:"translate(".concat(F,"px, ").concat(A,"px)"),transition:ct?"none":void 0}},ye,i.createElement(Hv,{ref:D,prefixCls:a,locale:h,editable:m,style:p(p({},ye.length===0?void 0:Le),{},{visibility:kt?"hidden":null})}),i.createElement("div",{className:ve("".concat(a,"-ink-bar"),B({},"".concat(a,"-ink-bar-animated"),c.inkBar)),style:Je})))),i.createElement(Vb,J({},e,{removeAriaLabel:h==null?void 0:h.removeAriaLabel,ref:R,prefixCls:a,tabs:lt,className:!kt&&Te,tabMoving:!!ct})),i.createElement(pc,{ref:w,position:"right",extra:v,prefixCls:a})))}const gc=i.forwardRef(Bb);var Hb=["renderTabBar"],Wb=["label","key"];function Ub(e){var t=e.renderTabBar,r=ze(e,Hb),n=i.useContext(sl),a=n.tabs;if(t){var o=p(p({},r),{},{panes:a.map(function(s){var l=s.label,u=s.key,c=ze(s,Wb);return i.createElement(Vv,J({tab:l,key:u,tabKey:u},c))})});return t(o,gc)}return i.createElement(gc,r)}function Yb(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{inkBar:!0,tabPane:!1},t;return e===!1?t={inkBar:!1,tabPane:!1}:e===!0?t={inkBar:!0,tabPane:!1}:t=p({inkBar:!0},Ye(e)==="object"?e:{}),t.tabPaneMotion&&t.tabPane===void 0&&(t.tabPane=!0),!t.tabPaneMotion&&t.tabPane&&(t.tabPane=!1),t}var Gb=["id","prefixCls","className","items","direction","activeKey","defaultActiveKey","editable","animated","tabPosition","tabBarGutter","tabBarStyle","tabBarExtraContent","locale","moreIcon","moreTransitionName","destroyInactiveTabPane","renderTabBar","onChange","onTabClick","onTabScroll","getPopupContainer","popupClassName"],yc=0;function qb(e,t){var r,n=e.id,a=e.prefixCls,o=a===void 0?"rc-tabs":a,s=e.className,l=e.items,u=e.direction,c=e.activeKey,d=e.defaultActiveKey,f=e.editable,v=e.animated,m=e.tabPosition,h=m===void 0?"top":m,g=e.tabBarGutter,y=e.tabBarStyle,b=e.tabBarExtraContent,C=e.locale,x=e.moreIcon,E=e.moreTransitionName,P=e.destroyInactiveTabPane,w=e.renderTabBar,T=e.onChange,$=e.onTabClick,R=e.onTabScroll,D=e.getPopupContainer,O=e.popupClassName,k=ze(e,Gb),M=i.useMemo(function(){return(l||[]).filter(function(re){return re&&Ye(re)==="object"&&"key"in re})},[l]),F=u==="rtl",N=Yb(v),I=i.useState(!1),L=Y(I,2),A=L[0],_=L[1];i.useEffect(function(){_(a0())},[]);var K=Rt(function(){var re;return(re=M[0])===null||re===void 0?void 0:re.key},{value:c,defaultValue:d}),z=Y(K,2),j=z[0],V=z[1],X=i.useState(function(){return M.findIndex(function(re){return re.key===j})}),H=Y(X,2),Z=H[0],U=H[1];i.useEffect(function(){var re=M.findIndex(function(Pe){return Pe.key===j});if(re===-1){var ge;re=Math.max(0,Math.min(Z,M.length-1)),V((ge=M[re])===null||ge===void 0?void 0:ge.key)}U(re)},[M.map(function(re){return re.key}).join("_"),j,Z]);var ae=Rt(null,{value:n}),q=Y(ae,2),ne=q[0],ue=q[1];i.useEffect(function(){n||(ue("rc-tabs-".concat(yc)),yc+=1)},[]);function G(re,ge){$==null||$(re,ge);var Pe=re!==j;V(re),Pe&&(T==null||T(re))}var te={id:ne,activeKey:j,animated:N,tabPosition:h,rtl:F,mobile:A},ee,le=p(p({},te),{},{editable:f,locale:C,moreIcon:x,moreTransitionName:E,tabBarGutter:g,onTabClick:G,onTabScroll:R,extra:b,style:y,panes:null,getPopupContainer:D,popupClassName:O});return i.createElement(sl.Provider,{value:{tabs:M,prefixCls:o}},i.createElement("div",J({ref:t,id:n,className:ve(o,"".concat(o,"-").concat(h),(r={},B(r,"".concat(o,"-mobile"),A),B(r,"".concat(o,"-editable"),f),B(r,"".concat(o,"-rtl"),F),r),s)},k),ee,i.createElement(Ub,J({},le,{renderTabBar:w})),i.createElement($b,J({destroyInactiveTabPane:P},te,{animated:N}))))}var Xb=i.forwardRef(qb),Zb={motionAppear:!1,motionEnter:!0,motionLeave:!0};function Qb(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inkBar:!0,tabPane:!1},r;return t===!1?r={inkBar:!1,tabPane:!1}:t===!0?r={inkBar:!0,tabPane:!0}:r=J({inkBar:!0},Ye(t)==="object"?t:{}),r.tabPane&&(r.tabPaneMotion=J(J({},Zb),{motionName:ir(e,"switch")})),r}var Jb=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a=0;c-=1){var d=t.get(c)||new Set;d.forEach(function(f){var v=f.parent,m=f.node;if(!(n(m)||!f.parent||u.has(f.parent.key))){if(n(f.parent.node)){u.add(v.key);return}var h=!0,g=!1;(v.children||[]).filter(function(y){return!n(y.node)}).forEach(function(y){var b=y.key,C=a.has(b);h&&!C&&(h=!1),!g&&(C||o.has(b))&&(g=!0)}),h&&a.add(v.key),g&&o.add(v.key),u.add(v.key)}})}return{checkedKeys:Array.from(a),halfCheckedKeys:Array.from(Wv(o,a))}}function lC(e,t,r,n,a){for(var o=new Set(e),s=new Set(t),l=0;l<=n;l+=1){var u=r.get(l)||new Set;u.forEach(function(v){var m=v.key,h=v.node,g=v.children,y=g===void 0?[]:g;!o.has(m)&&!s.has(m)&&!a(h)&&y.filter(function(b){return!a(b.node)}).forEach(function(b){o.delete(b.key)})})}s=new Set;for(var c=new Set,d=n;d>=0;d-=1){var f=r.get(d)||new Set;f.forEach(function(v){var m=v.parent,h=v.node;if(!(a(h)||!v.parent||c.has(v.parent.key))){if(a(v.parent.node)){c.add(m.key);return}var g=!0,y=!1;(m.children||[]).filter(function(b){return!a(b.node)}).forEach(function(b){var C=b.key,x=o.has(C);g&&!x&&(g=!1),!y&&(x||s.has(C))&&(y=!0)}),g||o.delete(m.key),y&&s.add(m.key),c.add(m.key)}})}return{checkedKeys:Array.from(o),halfCheckedKeys:Array.from(Wv(s,o))}}function kn(e,t,r,n){var a=[],o;n?o=n:o=oC;var s=new Set(e.filter(function(d){var f=!!hn(r,d);return f||a.push(d),f})),l=new Map,u=0;Object.keys(r).forEach(function(d){var f=r[d],v=f.level,m=l.get(v);m||(m=new Set,l.set(v,m)),m.add(f),u=Math.max(u,v)}),an(!a.length,"Tree missing follow keys: ".concat(a.slice(0,100).map(function(d){return"'".concat(d,"'")}).join(", ")));var c;return t===!0?c=iC(s,l,u,o):c=lC(s,t.halfCheckedKeys,l,u,o),c}var Oo=i.createContext(null),gu="__RC_CASCADER_SPLIT__",Uv="SHOW_PARENT",Yv="SHOW_CHILD";function Rr(e){return e.join(gu)}function va(e){return e.map(Rr)}function sC(e){return e.split(gu)}function uC(e){var t=e||{},r=t.label,n=t.value,a=t.children,o=n||"value";return{label:r||"label",value:o,key:o,children:a||"children"}}function ao(e,t){var r,n;return(r=e.isLeaf)!==null&&r!==void 0?r:!(!((n=e[t.children])===null||n===void 0)&&n.length)}function cC(e){var t=e.parentElement;if(t){var r=e.offsetTop-t.offsetTop;r-t.scrollTop<0?t.scrollTo({top:r}):r+e.offsetHeight-t.scrollTop>t.offsetHeight&&t.scrollTo({top:r+e.offsetHeight-t.offsetHeight})}}function bc(e,t,r){var n=new Set(e),a=t();return e.filter(function(o){var s=a[o],l=s?s.parent:null,u=s?s.children:null;return r===Yv?!(u&&u.some(function(c){return c.key&&n.has(c.key)})):!(l&&!l.node.disabled&&n.has(l.key))})}function bo(e,t,r){for(var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=t,o=[],s=function(){var c,d,f,v=e[l],m=(c=a)===null||c===void 0?void 0:c.findIndex(function(g){var y=g[r.value];return n?String(y)===String(v):y===v}),h=m!==-1?(d=a)===null||d===void 0?void 0:d[m]:null;o.push({value:(f=h==null?void 0:h[r.value])!==null&&f!==void 0?f:v,index:m,option:h}),a=h==null?void 0:h[r.children]},l=0;l1&&arguments[1]!==void 0?arguments[1]:null;return d.map(function(v,m){for(var h=Gv(f?f.pos:"0",m),g=Do(v[o],h),y,b=0;b1&&arguments[1]!==void 0?arguments[1]:{},r=t.initWrapper,n=t.processEntity,a=t.onProcessFinished,o=t.externalGetKey,s=t.childrenPropName,l=t.fieldNames,u=arguments.length>2?arguments[2]:void 0,c=o||u,d={},f={},v={posEntities:d,keyEntities:f};return r&&(v=r(v)||v),mC(e,function(m){var h=m.node,g=m.index,y=m.pos,b=m.key,C=m.parentPos,x=m.level,E=m.nodes,P={node:h,nodes:E,index:g,key:b,pos:y,level:x},w=Do(b,y);d[y]=P,f[w]=P,P.parent=d[C],P.parent&&(P.parent.children=P.parent.children||[],P.parent.children.push(P)),n&&n(P,v)},{externalGetKey:c,childrenPropName:s,fieldNames:l}),a&&a(v),v}function co(e,t){var r=t.expandedKeys,n=t.selectedKeys,a=t.loadedKeys,o=t.loadingKeys,s=t.checkedKeys,l=t.halfCheckedKeys,u=t.dragOverNodeKey,c=t.dropPosition,d=t.keyEntities,f=hn(d,e),v={eventKey:e,expanded:r.indexOf(e)!==-1,selected:n.indexOf(e)!==-1,loaded:a.indexOf(e)!==-1,loading:o.indexOf(e)!==-1,checked:s.indexOf(e)!==-1,halfChecked:l.indexOf(e)!==-1,pos:String(f?f.pos:""),dragOver:u===e&&c===0,dragOverGapTop:u===e&&c===-1,dragOverGapBottom:u===e&&c===1};return v}function Gt(e){var t=e.data,r=e.expanded,n=e.selected,a=e.checked,o=e.loaded,s=e.loading,l=e.halfChecked,u=e.dragOver,c=e.dragOverGapTop,d=e.dragOverGapBottom,f=e.pos,v=e.active,m=e.eventKey,h=p(p({},t),{},{expanded:r,selected:n,checked:a,loaded:o,loading:s,halfChecked:l,dragOver:u,dragOverGapTop:c,dragOverGapBottom:d,pos:f,active:v,key:m});return"props"in h||Object.defineProperty(h,"props",{get:function(){return an(!1,"Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`."),e}}),h}const hC=function(e,t){var r=i.useRef({options:null,info:null}),n=i.useCallback(function(){return r.current.options!==e&&(r.current.options=e,r.current.info=Io(e,{fieldNames:t,initWrapper:function(o){return p(p({},o),{},{pathKeyEntities:{}})},processEntity:function(o,s){var l=o.nodes.map(function(u){return u[t.value]}).join(gu);s.pathKeyEntities[l]=o,o.key=l}})),r.current.info.pathKeyEntities},[t,e]);return n},pC=function(e,t){return i.useCallback(function(r){var n=[],a=[];return r.forEach(function(o){var s=bo(o,e,t);s.every(function(l){return l.option})?a.push(o):n.push(o)}),[a,n]},[e,t])};function Cc(e){var t=i.useRef();t.current=e;var r=i.useCallback(function(){return t.current.apply(t,arguments)},[]);return r}function gC(e){return i.useMemo(function(){if(!e)return[!1,{}];var t={matchInputWidth:!0,limit:50};return e&&Ye(e)==="object"&&(t=p(p({},t),e)),t.limit<=0&&delete t.limit,[!0,t]},[e])}var fo="__rc_cascader_search_mark__",yC=function(t,r,n){var a=n.label;return r.some(function(o){return String(o[a]).toLowerCase().includes(t.toLowerCase())})},bC=function(t,r,n,a){return r.map(function(o){return o[a.label]}).join(" / ")};const CC=function(e,t,r,n,a,o){var s=a.filter,l=s===void 0?yC:s,u=a.render,c=u===void 0?bC:u,d=a.limit,f=d===void 0?50:d,v=a.sort;return i.useMemo(function(){var m=[];if(!e)return[];function h(g,y){g.forEach(function(b){if(!(!v&&f>0&&m.length>=f)){var C=[].concat(Ke(y),[b]),x=b[r.children];if((!x||x.length===0||o)&&l(e,C,{label:r.label})){var E;m.push(p(p({},b),{},(E={},B(E,r.label,c(e,C,n,r)),B(E,fo,C),B(E,r.children,void 0),E)))}x&&h(b[r.children],C)}})}return h(t,[]),v&&m.sort(function(g,y){return v(g[fo],y[fo],e,r)}),f>0?m.slice(0,f):m},[e,t,r,n,c,o,l,v,f])};function xC(e){var t,r=e.prefixCls,n=e.checked,a=e.halfChecked,o=e.disabled,s=e.onClick,l=i.useContext(Oo),u=l.checkable,c=typeof u!="boolean"?u:null;return i.createElement("span",{className:ve("".concat(r),(t={},B(t,"".concat(r,"-checked"),n),B(t,"".concat(r,"-indeterminate"),!n&&a),B(t,"".concat(r,"-disabled"),o),t)),onClick:s},c)}var Xv="__cascader_fix_label__";function SC(e){var t=e.prefixCls,r=e.multiple,n=e.options,a=e.activeValue,o=e.prevValuePath,s=e.onToggleOpen,l=e.onSelect,u=e.onActive,c=e.checkedSet,d=e.halfCheckedSet,f=e.loadingKeys,v=e.isSelectable,m="".concat(t,"-menu"),h="".concat(t,"-menu-item"),g=i.useContext(Oo),y=g.fieldNames,b=g.changeOnSelect,C=g.expandTrigger,x=g.expandIcon,E=g.loadingIcon,P=g.dropdownMenuColumnStyle,w=C==="hover",T=i.useMemo(function(){return n.map(function($){var R,D=$.disabled,O=$[fo],k=(R=$[Xv])!==null&&R!==void 0?R:$[y.label],M=$[y.value],F=ao($,y),N=O?O.map(function(K){return K[y.value]}):[].concat(Ke(o),[M]),I=Rr(N),L=f.includes(I),A=c.has(I),_=d.has(I);return{disabled:D,label:k,value:M,isLeaf:F,isLoading:L,checked:A,halfChecked:_,option:$,fullPath:N,fullPathKey:I}})},[n,c,y,d,f,o]);return i.createElement("ul",{className:m,role:"menu"},T.map(function($){var R,D=$.disabled,O=$.label,k=$.value,M=$.isLeaf,F=$.isLoading,N=$.checked,I=$.halfChecked,L=$.option,A=$.fullPath,_=$.fullPathKey,K=function(){if(!D){var X=Ke(A);w&&M&&X.pop(),u(X)}},z=function(){v(L)&&l(A,M)},j;return typeof L.title=="string"?j=L.title:typeof O=="string"&&(j=O),i.createElement("li",{key:_,className:ve(h,(R={},B(R,"".concat(h,"-expand"),!M),B(R,"".concat(h,"-active"),a===k),B(R,"".concat(h,"-disabled"),D),B(R,"".concat(h,"-loading"),F),R)),style:P,role:"menuitemcheckbox",title:j,"aria-checked":N,"data-path-key":_,onClick:function(){K(),(!r||M)&&z()},onDoubleClick:function(){b&&s(!1)},onMouseEnter:function(){w&&K()},onMouseDown:function(X){X.preventDefault()}},r&&i.createElement(xC,{prefixCls:"".concat(t,"-checkbox"),checked:N,halfChecked:I,disabled:D,onClick:function(X){X.stopPropagation(),z()}}),i.createElement("div",{className:"".concat(h,"-content")},O),!F&&x&&!M&&i.createElement("div",{className:"".concat(h,"-expand-icon")},x),F&&E&&i.createElement("div",{className:"".concat(h,"-loading-icon")},E))}))}const wC=function(){var e=ol(),t=e.multiple,r=e.open,n=i.useContext(Oo),a=n.values,o=i.useState([]),s=Y(o,2),l=s[0],u=s[1];return i.useEffect(function(){if(r&&!t){var c=a[0];u(c||[])}},[r]),[l,u]},EC=function(e,t,r,n,a,o){var s=ol(),l=s.direction,u=s.searchValue,c=s.toggleOpen,d=s.open,f=l==="rtl",v=i.useMemo(function(){for(var P=-1,w=t,T=[],$=[],R=n.length,D=function(I){var L=w.findIndex(function(A){return A[r.value]===n[I]});if(L===-1)return"break";P=L,T.push(P),$.push(n[I]),w=w[P][r.children]},O=0;O1){var w=h.slice(0,-1);b(w)}else c(!1)},E=function(){var w,T=((w=y[g])===null||w===void 0?void 0:w[r.children])||[],$=T.find(function(D){return!D.disabled});if($){var R=[].concat(Ke(h),[$[r.value]]);b(R)}};i.useImperativeHandle(e,function(){return{onKeyDown:function(w){var T=w.which;switch(T){case Be.UP:case Be.DOWN:{var $=0;T===Be.UP?$=-1:T===Be.DOWN&&($=1),$!==0&&C($);break}case Be.LEFT:{if(u)break;f?E():x();break}case Be.RIGHT:{if(u)break;f?x():E();break}case Be.BACKSPACE:{u||x();break}case Be.ENTER:{if(h.length){var R=y[g],D=(R==null?void 0:R[fo])||[];D.length?o(D.map(function(O){return O[r.value]}),D[D.length-1]):o(h,y[g])}break}case Be.ESC:c(!1),d&&w.stopPropagation()}},onKeyUp:function(){}}})};var PC=i.forwardRef(function(e,t){var r,n,a,o,s=ol(),l=s.prefixCls,u=s.multiple,c=s.searchValue,d=s.toggleOpen,f=s.notFoundContent,v=s.direction,m=i.useRef(),h=v==="rtl",g=i.useContext(Oo),y=g.options,b=g.values,C=g.halfValues,x=g.fieldNames,E=g.changeOnSelect,P=g.onSelect,w=g.searchOptions,T=g.dropdownPrefixCls,$=g.loadData,R=g.expandTrigger,D=T||l,O=i.useState([]),k=Y(O,2),M=k[0],F=k[1],N=function(ee){if(!(!$||c)){var le=bo(ee,y,x),re=le.map(function(me){var ce=me.option;return ce}),ge=re[re.length-1];if(ge&&!ao(ge,x)){var Pe=Rr(ee);F(function(me){return[].concat(Ke(me),[Pe])}),$(re)}}};i.useEffect(function(){M.length&&M.forEach(function(te){var ee=sC(te),le=bo(ee,y,x,!0).map(function(ge){var Pe=ge.option;return Pe}),re=le[le.length-1];(!re||re[x.children]||ao(re,x))&&F(function(ge){return ge.filter(function(Pe){return Pe!==te})})})},[y,M,x]);var I=i.useMemo(function(){return new Set(va(b))},[b]),L=i.useMemo(function(){return new Set(va(C))},[C]),A=wC(),_=Y(A,2),K=_[0],z=_[1],j=function(ee){z(ee),N(ee)},V=function(ee){var le=ee.disabled,re=ao(ee,x);return!le&&(re||E||u)},X=function(ee,le){var re=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;P(ee),!u&&(le||E&&(R==="hover"||re))&&d(!1)},H=i.useMemo(function(){return c?w:y},[c,w,y]),Z=i.useMemo(function(){for(var te=[{options:H}],ee=H,le=function(){var me=K[re],ce=ee.find(function(ie){return ie[x.value]===me}),fe=ce==null?void 0:ce[x.children];if(!(fe!=null&&fe.length))return"break";ee=fe,te.push({options:fe})},re=0;re":k,F=e.loadingIcon,N=e.children,I=e.dropdownMatchSelectWidth,L=I===void 0?!1:I,A=e.showCheckedStrategy,_=A===void 0?Uv:A,K=ze(e,RC),z=cv(r),j=!!f,V=Rt(s,{value:l,postState:xc}),X=Y(V,2),H=X[0],Z=X[1],U=i.useMemo(function(){return uC(o)},[JSON.stringify(o)]),ae=i.useMemo(function(){return y||[]},[y]),q=hC(ae,U),ne=i.useCallback(function(tt){var we=q();return tt.map(function(He){var Me=we[He].nodes;return Me.map(function(Le){return Le[U.value]})})},[q,U]),ue=Rt("",{value:v,postState:function(we){return we||""}}),G=Y(ue,2),te=G[0],ee=G[1],le=function(we,He){ee(we),He.source!=="blur"&&m&&m(we)},re=gC(h),ge=Y(re,2),Pe=ge[0],me=ge[1],ce=CC(te,ae,U,b||a,me,u),fe=pC(ae,U),ie=i.useMemo(function(){var tt=fe(H),we=Y(tt,2),He=we[0],Me=we[1];if(!j||!H.length)return[He,[],Me];var Le=va(He),ye=q(),de=kn(Le,!0,ye),be=de.checkedKeys,Ne=de.halfCheckedKeys;return[ne(be),ne(Ne),Me]},[j,H,q,ne,fe]),se=Y(ie,3),he=se[0],Ce=se[1],ke=se[2],Te=i.useMemo(function(){var tt=va(he),we=bc(tt,q,_);return[].concat(Ke(ke),Ke(ne(we)))},[he,q,ne,ke,_]),Se=dC(Te,ae,U,j,d),Re=Cc(function(tt){if(Z(tt),c){var we=xc(tt),He=we.map(function(ye){return bo(ye,ae,U).map(function(de){return de.option})}),Me=j?we:we[0],Le=j?He:He[0];c(Me,Le)}}),Ee=Cc(function(tt){if(ee(""),!j)Re(tt);else{var we=Rr(tt),He=va(he),Me=va(Ce),Le=He.includes(we),ye=ke.some(function(dt){return Rr(dt)===we}),de=he,be=ke;if(ye&&!Le)be=ke.filter(function(dt){return Rr(dt)!==we});else{var Ne=Le?He.filter(function(dt){return dt!==we}):[].concat(Ke(He),[we]),Ue=q(),lt;if(Le){var $e=kn(Ne,{checked:!1,halfCheckedKeys:Me},Ue);lt=$e.checkedKeys}else{var xe=kn(Ne,!0,Ue);lt=xe.checkedKeys}var Je=bc(lt,q,_);de=ne(Je)}Re([].concat(Ke(be),Ke(de)))}}),Qe=function(we,He){if(He.type==="clear"){Re([]);return}var Me=He.values[0].valueCells;Ee(Me)},et=E!==void 0?E:x,vt=w||P,ct=R||$,ht=function(we){D==null||D(we),O==null||O(we)},Ge=i.useMemo(function(){return{options:ae,fieldNames:U,values:he,halfValues:Ce,changeOnSelect:u,onSelect:Ee,checkable:f,searchOptions:ce,dropdownPrefixCls:b,loadData:C,expandTrigger:g,expandIcon:M,loadingIcon:F,dropdownMenuColumnStyle:T}},[ae,U,he,Ce,u,Ee,f,ce,b,C,g,M,F,T]),_e=!(te?ce:ae).length,mt=te&&me.matchInputWidth||_e?{}:{minWidth:"auto"};return i.createElement(Oo.Provider,{value:Ge},i.createElement(dv,J({},K,{ref:t,id:z,prefixCls:a,dropdownMatchSelectWidth:L,dropdownStyle:mt,displayValues:Se,onDisplayValuesChange:Qe,mode:j?"multiple":void 0,searchValue:te,onSearch:le,showSearch:Pe,OptionList:PC,emptyOptions:_e,open:et,dropdownClassName:vt,placement:ct,onDropdownVisibleChange:ht,getRawInputElement:function(){return N}})))});_o.SHOW_PARENT=Uv;_o.SHOW_CHILD=Yv;var NC=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a2&&arguments[2]!==void 0?arguments[2]:!0,ne=function(){T(function(G){var te=new Map(G),ee=te.delete(U);return ee?te:G})};return T(function(ue){return new Map(ue).set(U,{url:ae,canPreview:q})}),ne},H=function(U){U.stopPropagation(),N(!1),_(null)};return i.useEffect(function(){O(j)},[j]),i.useEffect(function(){!F&&K&&O(j)},[j,K,F]),i.createElement(GC,{value:{isPreviewGroup:!0,previewUrls:V,setPreviewUrls:T,current:D,setCurrent:O,setShowPreview:N,setMousePosition:_,registerImage:X}},a,i.createElement(em,J({"aria-hidden":!F,visible:F,prefixCls:n,onClose:H,mousePosition:A,src:V.get(D),icons:s,getContainer:h,countRender:C},x)))},Pi=1,Ri=50,Ja=1,XC=.2,ZC=function(t){var r,n=t.visible,a=t.maskTransitionName,o=t.getContainer,s=t.prefixCls,l=t.rootClassName,u=t.icons,c=t.countRender,d=t.showSwitch,f=t.showProgress,v=t.current,m=t.count,h=t.scale,g=t.onSwitchLeft,y=t.onSwitchRight,b=t.onClose,C=t.onZoomIn,x=t.onZoomOut,E=t.onRotateRight,P=t.onRotateLeft,w=u.rotateLeft,T=u.rotateRight,$=u.zoomIn,R=u.zoomOut,D=u.close,O=u.left,k=u.right,M="".concat(s,"-operations-operation"),F="".concat(s,"-operations-icon"),N=[{icon:D,onClick:b,type:"close"},{icon:$,onClick:C,type:"zoomIn",disabled:h===Ri},{icon:R,onClick:x,type:"zoomOut",disabled:h===Pi},{icon:T,onClick:E,type:"rotateRight"},{icon:w,onClick:P,type:"rotateLeft"}],I=i.createElement(i.Fragment,null,d&&i.createElement(i.Fragment,null,i.createElement("div",{className:ve("".concat(s,"-switch-left"),B({},"".concat(s,"-switch-left-disabled"),v===0)),onClick:g},O),i.createElement("div",{className:ve("".concat(s,"-switch-right"),B({},"".concat(s,"-switch-right-disabled"),v===m-1)),onClick:y},k)),i.createElement("ul",{className:"".concat(s,"-operations")},f&&i.createElement("li",{className:"".concat(s,"-operations-progress")},(r=c==null?void 0:c(v+1,m))!==null&&r!==void 0?r:"".concat(v+1," / ").concat(m)),N.map(function(L){var A,_=L.icon,K=L.onClick,z=L.type,j=L.disabled;return i.createElement("li",{className:ve(M,(A={},B(A,"".concat(s,"-operations-operation-").concat(z),!0),B(A,"".concat(s,"-operations-operation-disabled"),!!j),A)),onClick:K,key:z},i.isValidElement(_)?i.cloneElement(_,{className:F}):_)})));return i.createElement(Zi,{visible:n,motionName:a},function(L){var A=L.className,_=L.style;return i.createElement(i0,{open:!0,getContainer:o??document.body},i.createElement("div",{className:ve("".concat(s,"-operations-wrapper"),A,l),style:_},I))})},Sc={x:0,y:0,rotate:0,scale:1};function QC(e){var t=i.useRef(null),r=i.useRef([]),n=i.useState(Sc),a=Y(n,2),o=a[0],s=a[1],l=function(){s(Sc)},u=function(f){t.current===null&&(r.current=[],t.current=Gr(function(){s(function(v){var m=v;return r.current.forEach(function(h){m=p(p({},m),h)}),t.current=null,m})})),r.current.push(p(p({},o),f))},c=function(f,v,m){var h=e.current,g=h.width,y=h.height,b=h.offsetWidth,C=h.offsetHeight,x=h.offsetLeft,E=h.offsetTop,P=f,w=o.scale*f;w>Ri?(P=Ri/o.scale,w=Ri):wn){if(t>0)return B({},e,o);if(t<0&&an)return B({},e,t<0?o:-o);return{}}function JC(e,t,r,n){var a=Jv(),o=a.width,s=a.height,l=null;return e<=o&&t<=s?l={x:0,y:0}:(e>o||t>s)&&(l=p(p({},wc("x",r,e,o)),wc("y",n,t,s))),l}var e2=["prefixCls","src","alt","onClose","afterClose","visible","icons","rootClassName","getContainer","countRender","scaleStep","transitionName","maskTransitionName"],em=function(t){var r=t.prefixCls,n=t.src,a=t.alt,o=t.onClose;t.afterClose;var s=t.visible,l=t.icons,u=l===void 0?{}:l,c=t.rootClassName,d=t.getContainer,f=t.countRender,v=t.scaleStep,m=v===void 0?.5:v,h=t.transitionName,g=h===void 0?"zoom":h,y=t.maskTransitionName,b=y===void 0?"fade":y,C=ze(t,e2),x=i.useRef(),E=i.useRef({deltaX:0,deltaY:0,transformX:0,transformY:0}),P=i.useState(!1),w=Y(P,2),T=w[0],$=w[1],R=i.useContext(bu),D=R.previewUrls,O=R.current,k=R.isPreviewGroup,M=R.setCurrent,F=D.size,N=Array.from(D.keys()),I=N.indexOf(O),L=k?D.get(O):n,A=k&&F>1,_=k&&F>=1,K=QC(x),z=K.transform,j=K.resetTransform,V=K.updateTransform,X=K.dispatchZoonChange,H=z.rotate,Z=z.scale,U=ve(B({},"".concat(r,"-moving"),T)),ae=function(){j()},q=function(){X(Ja+m)},ne=function(){X(Ja-m)},ue=function(){V({rotate:H+90})},G=function(){V({rotate:H-90})},te=function(ie){ie.preventDefault(),ie.stopPropagation(),I>0&&M(N[I-1])},ee=function(ie){ie.preventDefault(),ie.stopPropagation(),I0&&(Ce=Ja/Ce),X(Ce,ie.clientX,ie.clientY)}},me=i.useCallback(function(fe){!s||!A||(fe.keyCode===Be.LEFT?I>0&&M(N[I-1]):fe.keyCode===Be.RIGHT&&I=0||l.relatedTarget.className.indexOf("".concat(f,"-item"))>=0))&&d(n.getValidValue()))},n.go=function(l){var u=n.state.goInputText;u!==""&&(l.keyCode===Hr.ENTER||l.type==="click")&&(n.setState({goInputText:""}),n.props.quickGo(n.getValidValue()))},n}return wn(r,[{key:"getValidValue",value:function(){var a=this.state.goInputText;return!a||isNaN(a)?void 0:Number(a)}},{key:"getPageSizeOptions",value:function(){var a=this.props,o=a.pageSize,s=a.pageSizeOptions;return s.some(function(l){return l.toString()===o.toString()})?s:s.concat([o.toString()]).sort(function(l,u){var c=isNaN(Number(l))?0:Number(l),d=isNaN(Number(u))?0:Number(u);return c-d})}},{key:"render",value:function(){var a=this,o=this.props,s=o.pageSize,l=o.locale,u=o.rootPrefixCls,c=o.changeSize,d=o.quickGo,f=o.goButton,v=o.selectComponentClass,m=o.buildOptionText,h=o.selectPrefixCls,g=o.disabled,y=this.state.goInputText,b="".concat(u,"-options"),C=v,x=null,E=null,P=null;if(!c&&!d)return null;var w=this.getPageSizeOptions();if(c&&C){var T=w.map(function($,R){return Q.createElement(C.Option,{key:R,value:$.toString()},(m||a.buildOptionText)($))});x=Q.createElement(C,{disabled:g,prefixCls:h,showSearch:!1,className:"".concat(b,"-size-changer"),optionLabelProp:"children",dropdownMatchSelectWidth:!1,value:(s||w[0]).toString(),onChange:this.changeSize,getPopupContainer:function(R){return R.parentNode},"aria-label":l.page_size,defaultOpen:!1},T)}return d&&(f&&(P=typeof f=="boolean"?Q.createElement("button",{type:"button",onClick:this.go,onKeyUp:this.go,disabled:g,className:"".concat(b,"-quick-jumper-button")},l.jump_to_confirm):Q.createElement("span",{onClick:this.go,onKeyUp:this.go},f)),E=Q.createElement("div",{className:"".concat(b,"-quick-jumper")},l.jump_to,Q.createElement("input",{disabled:g,type:"text",value:y,onChange:this.handleChange,onKeyUp:this.go,onBlur:this.handleBlur,"aria-label":l.page}),l.page,P)),Q.createElement("li",{className:"".concat(b)},x,E)}}]),r}(Q.Component);rm.defaultProps={pageSizeOptions:["10","20","50","100"]};const am={items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页",page_size:"页码"};function bs(){}function Rc(e){var t=Number(e);return typeof t=="number"&&!isNaN(t)&&isFinite(t)&&Math.floor(t)===t}function l2(e,t,r){return r}function Cr(e,t,r){var n=typeof e>"u"?t.pageSize:e;return Math.floor((r.total-1)/n)+1}var om=function(e){Cn(r,e);var t=xn(r);function r(n){var a;Sn(this,r),a=t.call(this,n),a.getJumpPrevPage=function(){return Math.max(1,a.state.current-(a.props.showLessItems?3:5))},a.getJumpNextPage=function(){return Math.min(Cr(void 0,a.state,a.props),a.state.current+(a.props.showLessItems?3:5))},a.getItemIcon=function(c,d){var f=a.props.prefixCls,v=c||Q.createElement("button",{type:"button","aria-label":d,className:"".concat(f,"-item-link")});return typeof c=="function"&&(v=Q.createElement(c,p({},a.props))),v},a.savePaginationNode=function(c){a.paginationNode=c},a.isValid=function(c){var d=a.props.total;return Rc(c)&&c!==a.state.current&&Rc(d)&&d>0},a.shouldDisplayQuickJumper=function(){var c=a.props,d=c.showQuickJumper,f=c.total,v=a.state.pageSize;return f<=v?!1:d},a.handleKeyDown=function(c){(c.keyCode===Hr.ARROW_UP||c.keyCode===Hr.ARROW_DOWN)&&c.preventDefault()},a.handleKeyUp=function(c){var d=a.getValidValue(c),f=a.state.currentInputValue;d!==f&&a.setState({currentInputValue:d}),c.keyCode===Hr.ENTER?a.handleChange(d):c.keyCode===Hr.ARROW_UP?a.handleChange(d-1):c.keyCode===Hr.ARROW_DOWN&&a.handleChange(d+1)},a.handleBlur=function(c){var d=a.getValidValue(c);a.handleChange(d)},a.changePageSize=function(c){var d=a.state.current,f=Cr(c,a.state,a.props);d=d>f?f:d,f===0&&(d=a.state.current),typeof c=="number"&&("pageSize"in a.props||a.setState({pageSize:c}),"current"in a.props||a.setState({current:d,currentInputValue:d})),a.props.onShowSizeChange(d,c),"onChange"in a.props&&a.props.onChange&&a.props.onChange(d,c)},a.handleChange=function(c){var d=a.props,f=d.disabled,v=d.onChange,m=a.state,h=m.pageSize,g=m.current,y=m.currentInputValue;if(a.isValid(c)&&!f){var b=Cr(void 0,a.state,a.props),C=c;return c>b?C=b:c<1&&(C=1),"current"in a.props||a.setState({current:C}),C!==y&&a.setState({currentInputValue:C}),v(C,h),C}return g},a.prev=function(){a.hasPrev()&&a.handleChange(a.state.current-1)},a.next=function(){a.hasNext()&&a.handleChange(a.state.current+1)},a.jumpPrev=function(){a.handleChange(a.getJumpPrevPage())},a.jumpNext=function(){a.handleChange(a.getJumpNextPage())},a.hasPrev=function(){return a.state.current>1},a.hasNext=function(){return a.state.current2?f-2:0),m=2;m=s?u=s:u=Number(o),u}},{key:"getShowSizeChanger",value:function(){var a=this.props,o=a.showSizeChanger,s=a.total,l=a.totalBoundaryShowSizeChanger;return typeof o<"u"?o:s>l}},{key:"renderPrev",value:function(a){var o=this.props,s=o.prevIcon,l=o.itemRender,u=l(a,"prev",this.getItemIcon(s,"prev page")),c=!this.hasPrev();return i.isValidElement(u)?i.cloneElement(u,{disabled:c}):u}},{key:"renderNext",value:function(a){var o=this.props,s=o.nextIcon,l=o.itemRender,u=l(a,"next",this.getItemIcon(s,"next page")),c=!this.hasNext();return i.isValidElement(u)?i.cloneElement(u,{disabled:c}):u}},{key:"render",value:function(){var a=this,o=this.props,s=o.prefixCls,l=o.className,u=o.style,c=o.disabled,d=o.hideOnSinglePage,f=o.total,v=o.locale,m=o.showQuickJumper,h=o.showLessItems,g=o.showTitle,y=o.showTotal,b=o.simple,C=o.itemRender,x=o.showPrevNextJumpers,E=o.jumpPrevIcon,P=o.jumpNextIcon,w=o.selectComponentClass,T=o.selectPrefixCls,$=o.pageSizeOptions,R=this.state,D=R.current,O=R.pageSize,k=R.currentInputValue;if(d===!0&&f<=O)return null;var M=Cr(void 0,this.state,this.props),F=[],N=null,I=null,L=null,A=null,_=null,K=m&&m.goButton,z=h?1:2,j=D-1>0?D-1:0,V=D+1f?f:D*O]));if(b)return K&&(typeof K=="boolean"?_=Q.createElement("button",{type:"button",onClick:this.handleGoTO,onKeyUp:this.handleGoTO},v.jump_to_confirm):_=Q.createElement("span",{onClick:this.handleGoTO,onKeyUp:this.handleGoTO},K),_=Q.createElement("li",{title:g?"".concat(v.jump_to).concat(D,"/").concat(M):null,className:"".concat(s,"-simple-pager")},_)),Q.createElement("ul",J({className:ve(s,"".concat(s,"-simple"),B({},"".concat(s,"-disabled"),c),l),style:u,ref:this.savePaginationNode},X),H,Q.createElement("li",{title:g?v.prev_page:null,onClick:this.prev,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterPrev,className:ve("".concat(s,"-prev"),B({},"".concat(s,"-disabled"),!this.hasPrev())),"aria-disabled":!this.hasPrev()},this.renderPrev(j)),Q.createElement("li",{title:g?"".concat(D,"/").concat(M):null,className:"".concat(s,"-simple-pager")},Q.createElement("input",{type:"text",value:k,disabled:c,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,onChange:this.handleKeyUp,onBlur:this.handleBlur,size:"3"}),Q.createElement("span",{className:"".concat(s,"-slash")},"/"),M),Q.createElement("li",{title:g?v.next_page:null,onClick:this.next,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterNext,className:ve("".concat(s,"-next"),B({},"".concat(s,"-disabled"),!this.hasNext())),"aria-disabled":!this.hasNext()},this.renderNext(V)),_);if(M<=3+z*2){var Z={locale:v,rootPrefixCls:s,onClick:this.handleChange,onKeyPress:this.runIfEnter,showTitle:g,itemRender:C};M||F.push(Q.createElement(eo,J({},Z,{key:"noPager",page:1,className:"".concat(s,"-item-disabled")})));for(var U=1;U<=M;U+=1){var ae=D===U;F.push(Q.createElement(eo,J({},Z,{key:U,page:U,active:ae})))}}else{var q=h?v.prev_3:v.prev_5,ne=h?v.next_3:v.next_5;x&&(N=Q.createElement("li",{title:g?q:null,key:"prev",onClick:this.jumpPrev,tabIndex:"0",onKeyPress:this.runIfEnterJumpPrev,className:ve("".concat(s,"-jump-prev"),B({},"".concat(s,"-jump-prev-custom-icon"),!!E))},C(this.getJumpPrevPage(),"jump-prev",this.getItemIcon(E,"prev page"))),I=Q.createElement("li",{title:g?ne:null,key:"next",tabIndex:"0",onClick:this.jumpNext,onKeyPress:this.runIfEnterJumpNext,className:ve("".concat(s,"-jump-next"),B({},"".concat(s,"-jump-next-custom-icon"),!!P))},C(this.getJumpNextPage(),"jump-next",this.getItemIcon(P,"next page")))),A=Q.createElement(eo,{locale:v,last:!0,rootPrefixCls:s,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:M,page:M,active:!1,showTitle:g,itemRender:C}),L=Q.createElement(eo,{locale:v,rootPrefixCls:s,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:1,page:1,active:!1,showTitle:g,itemRender:C});var ue=Math.max(1,D-z),G=Math.min(D+z,M);D-1<=z&&(G=1+z*2),M-D<=z&&(ue=M-z*2);for(var te=ue;te<=G;te+=1){var ee=D===te;F.push(Q.createElement(eo,{locale:v,rootPrefixCls:s,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:te,page:te,active:ee,showTitle:g,itemRender:C}))}D-1>=z*2&&D!==1+2&&(F[0]=i.cloneElement(F[0],{className:"".concat(s,"-item-after-jump-prev")}),F.unshift(N)),M-D>=z*2&&D!==M-2&&(F[F.length-1]=i.cloneElement(F[F.length-1],{className:"".concat(s,"-item-before-jump-next")}),F.push(I)),ue!==1&&F.unshift(L),G!==M&&F.push(A)}var le=!this.hasPrev()||!M,re=!this.hasNext()||!M;return Q.createElement("ul",J({className:ve(s,l,B({},"".concat(s,"-disabled"),c)),style:u,ref:this.savePaginationNode},X),H,Q.createElement("li",{title:g?v.prev_page:null,onClick:this.prev,tabIndex:le?null:0,onKeyPress:this.runIfEnterPrev,className:ve("".concat(s,"-prev"),B({},"".concat(s,"-disabled"),le)),"aria-disabled":le},this.renderPrev(j)),F,Q.createElement("li",{title:g?v.next_page:null,onClick:this.next,tabIndex:re?null:0,onKeyPress:this.runIfEnterNext,className:ve("".concat(s,"-next"),B({},"".concat(s,"-disabled"),re)),"aria-disabled":re},this.renderNext(V)),Q.createElement(rm,{disabled:c,locale:v,rootPrefixCls:s,selectComponentClass:w,selectPrefixCls:T,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:D,pageSize:O,pageSizeOptions:$,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:K}))}}],[{key:"getDerivedStateFromProps",value:function(a,o){var s={};if("current"in a&&(s.current=a.current,a.current!==o.current&&(s.currentInputValue=s.current)),"pageSize"in a&&a.pageSize!==o.pageSize){var l=o.current,u=Cr(a.pageSize,o,a);l=l>u?u:l,"current"in a||(s.current=l,s.currentInputValue=l),s.pageSize=a.pageSize}return s}}]),r}(Q.Component);om.defaultProps={defaultCurrent:1,total:0,defaultPageSize:10,onChange:bs,className:"",selectPrefixCls:"rc-select",prefixCls:"rc-pagination",selectComponentClass:null,hideOnSinglePage:!1,showPrevNextJumpers:!0,showQuickJumper:!1,showLessItems:!1,showTitle:!0,onShowSizeChange:bs,locale:am,style:{},itemRender:l2,totalBoundaryShowSizeChanger:50};var im=function(t){return i.createElement(Tr,J({},t,{size:"small"}))},lm=function(t){return i.createElement(Tr,J({},t,{size:"middle"}))};im.Option=Tr.Option;lm.Option=Tr.Option;var s2=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a=d&&lv?"true":"false","aria-posinset":v+1,"aria-setsize":m,tabIndex:u?-1:0},Q.createElement("div",{className:"".concat(c,"-first")},g),Q.createElement("div",{className:"".concat(c,"-second")},g)));return f&&(y=f(y,this.props)),y}}]),r}(Q.Component);function Nc(){}var sm=function(e){Cn(r,e);var t=xn(r);function r(n){var a;Sn(this,r),a=t.call(this,n),a.stars=void 0,a.rate=void 0,a.onHover=function(s,l){var u=a.props.onHoverChange,c=a.getStarValue(l,s.pageX),d=a.state.cleanedValue;c!==d&&a.setState({hoverValue:c,cleanedValue:null}),u(c)},a.onMouseLeave=function(){var s=a.props.onHoverChange;a.setState({hoverValue:void 0,cleanedValue:null}),s(void 0)},a.onClick=function(s,l){var u=a.props.allowClear,c=a.state.value,d=a.getStarValue(l,s.pageX),f=!1;u&&(f=d===c),a.onMouseLeave(),a.changeValue(f?0:d),a.setState({cleanedValue:f?d:null})},a.onFocus=function(){var s=a.props.onFocus;a.setState({focused:!0}),s&&s()},a.onBlur=function(){var s=a.props.onBlur;a.setState({focused:!1}),s&&s()},a.onKeyDown=function(s){var l=s.keyCode,u=a.props,c=u.count,d=u.allowHalf,f=u.onKeyDown,v=u.direction,m=v==="rtl",h=a.state.value;l===Be.RIGHT&&h0&&!m||l===Be.RIGHT&&h>0&&m?(d?h-=.5:h-=1,a.changeValue(h),s.preventDefault()):l===Be.LEFT&&hm/2||!c&&o-v=r}function B2(e){return e&&Ye(e)==="object"&&!Array.isArray(e)&&!i.isValidElement(e)}function H2(e){return typeof e=="string"?!0:Kp(e)}var W2=function(t){var r=t.ellipsis,n=t.rowType,a=t.children,o,s=r===!0?{showTitle:!0}:r;return s&&(s.showTitle||n==="header")&&(typeof a=="string"||typeof a=="number"?o=a.toString():i.isValidElement(a)&&typeof a.props.children=="string"&&(o=a.props.children)),o};function U2(e,t){var r,n,a,o=e.prefixCls,s=e.className,l=e.record,u=e.index,c=e.renderIndex,d=e.dataIndex,f=e.render,v=e.children,m=e.component,h=m===void 0?"td":m,g=e.colSpan,y=e.rowSpan,b=e.fixLeft,C=e.fixRight,x=e.firstFixLeft,E=e.lastFixLeft,P=e.firstFixRight,w=e.lastFixRight,T=e.appendNode,$=e.additionalProps,R=$===void 0?{}:$,D=e.ellipsis,O=e.align,k=e.rowType,M=e.isSticky,F=e.hovering,N=e.onHover,I="".concat(o,"-cell"),L=i.useContext(hm),A=i.useContext(vm),_=i.useContext(vl),K=_.allColumnsFixedLeft,z=i.useMemo(function(){if(Cs(v))return[v];var ie=fm(l,d),se=ie,he=void 0;if(f){var Ce=f(ie,l,c);B2(Ce)?(se=Ce.children,he=Ce.props,L.renderWithProps=!0):se=Ce}return[se,he]},[L.renderWithProps?Math.random():0,v,d,L,l,f,c]),j=Y(z,2),V=j[0],X=j[1],H=V;Ye(H)==="object"&&!Array.isArray(H)&&!i.isValidElement(H)&&(H=null),D&&(E||P)&&(H=i.createElement("span",{className:"".concat(I,"-content")},H));var Z=X||{},U=Z.colSpan,ae=Z.rowSpan,q=Z.style,ne=Z.className,ue=ze(Z,V2),G=(r=U!==void 0?U:g)!==null&&r!==void 0?r:1,te=(n=ae!==void 0?ae:y)!==null&&n!==void 0?n:1;if(G===0||te===0)return null;var ee={},le=typeof b=="number"&&A,re=typeof C=="number"&&A;le&&(ee.position="sticky",ee.left=b),re&&(ee.position="sticky",ee.right=C);var ge={};O&&(ge.textAlign=O);var Pe=function(se){var he;l&&N(u,u+te-1),R==null||(he=R.onMouseEnter)===null||he===void 0||he.call(R,se)},me=function(se){var he;l&&N(-1,-1),R==null||(he=R.onMouseLeave)===null||he===void 0||he.call(R,se)},ce=W2({rowType:k,ellipsis:D,children:V}),fe=p(p(p({title:ce},ue),R),{},{colSpan:G!==1?G:null,rowSpan:te!==1?te:null,className:ve(I,s,(a={},B(a,"".concat(I,"-fix-left"),le&&A),B(a,"".concat(I,"-fix-left-first"),x&&A),B(a,"".concat(I,"-fix-left-last"),E&&A),B(a,"".concat(I,"-fix-left-all"),E&&K&&A),B(a,"".concat(I,"-fix-right"),re&&A),B(a,"".concat(I,"-fix-right-first"),P&&A),B(a,"".concat(I,"-fix-right-last"),w&&A),B(a,"".concat(I,"-ellipsis"),D),B(a,"".concat(I,"-with-append"),T),B(a,"".concat(I,"-fix-sticky"),(le||re)&&M&&A),B(a,"".concat(I,"-row-hover"),!X&&F),a),R.className,ne),style:p(p(p(p({},R.style),ge),ee),q),onMouseEnter:Pe,onMouseLeave:me,ref:H2(h)?t:null});return i.createElement(h,fe,T,H)}var pm=i.forwardRef(U2);pm.displayName="Cell";var Y2=["expanded","className","hovering"],G2=i.memo(pm,function(e,t){return t.shouldCellUpdate?Y2.every(function(r){return e[r]===t[r]})&&!t.shouldCellUpdate(t.record,e.record):fu(e,t)}),Ao=i.forwardRef(function(e,t){var r=e.index,n=e.additionalProps,a=n===void 0?{}:n,o=e.colSpan,s=e.rowSpan,l=a.colSpan,u=a.rowSpan,c=o??l,d=s??u,f=K2(mm,function(h){var g=z2(r,d||1,h==null?void 0:h.startRow,h==null?void 0:h.endRow);return{onHover:h==null?void 0:h.onHover,hovering:g}}),v=f.onHover,m=f.hovering;return i.createElement(G2,J({},e,{colSpan:c,rowSpan:d,hovering:m,ref:t,onHover:v}))});Ao.displayName="WrappedCell";var qn=i.createContext(null);function Cu(e,t,r,n,a){var o=r[e]||{},s=r[t]||{},l,u;o.fixed==="left"?l=n.left[e]:s.fixed==="right"&&(u=n.right[t]);var c=!1,d=!1,f=!1,v=!1,m=r[t+1],h=r[e-1];if(a==="rtl"){if(l!==void 0){var g=h&&h.fixed==="left";v=!g}else if(u!==void 0){var y=m&&m.fixed==="right";f=!y}}else if(l!==void 0){var b=m&&m.fixed==="left";c=!b}else if(u!==void 0){var C=h&&h.fixed==="right";d=!C}return{fixLeft:l,fixRight:u,lastFixLeft:c,firstFixRight:d,lastFixRight:f,firstFixLeft:v,isSticky:n.isSticky}}function gm(e){var t=e.cells,r=e.stickyOffsets,n=e.flattenColumns,a=e.rowComponent,o=e.cellComponent,s=e.onHeaderRow,l=e.index,u=i.useContext(qn),c=u.prefixCls,d=u.direction,f;s&&(f=s(t.map(function(m){return m.column}),l));var v=fl(t.map(function(m){return m.column}));return i.createElement(a,f,t.map(function(m,h){var g=m.column,y=Cu(m.colStart,m.colEnd,n,r,d),b;return g&&g.onHeaderCell&&(b=m.column.onHeaderCell(g)),i.createElement(Ao,J({},m,{ellipsis:g.ellipsis,align:g.align,component:o,prefixCls:c,key:v[h]},y,{additionalProps:b,rowType:"header"}))}))}gm.displayName="HeaderRow";function q2(e){var t=[];function r(s,l){var u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;t[u]=t[u]||[];var c=l,d=s.filter(Boolean).map(function(f){var v={key:f.key,className:f.className||"",children:f.title,column:f,colStart:c},m=1,h=f.children;return h&&h.length>0&&(m=r(h,c,u+1).reduce(function(g,y){return g+y},0),v.hasSubColumns=!0),"colSpan"in f&&(m=f.colSpan),"rowSpan"in f&&(v.rowSpan=f.rowSpan),v.colSpan=m,v.colEnd=v.colStart+m-1,t[u].push(v),c+=m,m});return d}r(e,0);for(var n=t.length,a=function(l){t[l].forEach(function(u){!("rowSpan"in u)&&!u.hasSubColumns&&(u.rowSpan=n-l)})},o=0;o1?le-1:0),ge=1;ge0?[].concat(Ke(t),Ke(xs(o).map(function(s){return p({fixed:a},s)}))):[].concat(Ke(t),[p(p({},r),{},{fixed:a})])},[])}function ax(e){return e.map(function(t){var r=t.fixed,n=ze(t,rx),a=r;return r==="left"?a="right":r==="right"&&(a="left"),p({fixed:a},n)})}function ox(e,t){var r=e.prefixCls,n=e.columns,a=e.children,o=e.expandable,s=e.expandedKeys,l=e.columnTitle,u=e.getRowKey,c=e.onTriggerExpand,d=e.expandIcon,f=e.rowExpandable,v=e.expandIconColumnIndex,m=e.direction,h=e.expandRowByClick,g=e.columnWidth,y=e.fixed,b=i.useMemo(function(){return n||xu(a)},[n,a]),C=i.useMemo(function(){if(o){var P,w=b.slice();if(!w.includes(Wr)){var T=v||0;T>=0&&w.splice(T,0,Wr)}var $=w.indexOf(Wr);w=w.filter(function(k,M){return k!==Wr||M===$});var R=b[$],D;(y==="left"||y)&&!v?D="left":(y==="right"||y)&&v===b.length?D="right":D=R?R.fixed:null;var O=(P={},B(P,vo,{className:"".concat(r,"-expand-icon-col"),columnType:"EXPAND_COLUMN"}),B(P,"title",l),B(P,"fixed",D),B(P,"className","".concat(r,"-row-expand-icon-cell")),B(P,"width",g),B(P,"render",function(M,F,N){var I=u(F,N),L=s.has(I),A=f?f(F):!0,_=d({prefixCls:r,expanded:L,expandable:A,record:F,onExpand:c});return h?i.createElement("span",{onClick:function(z){return z.stopPropagation()}},_):_}),P);return w.map(function(k){return k===Wr?O:k})}return b.filter(function(k){return k!==Wr})},[o,b,u,s,d,m]),x=i.useMemo(function(){var P=C;return t&&(P=t(P)),P.length||(P=[{render:function(){return null}}]),P},[t,C,m]),E=i.useMemo(function(){return m==="rtl"?ax(xs(x)):xs(x)},[x,m]);return[x,E]}function Em(e){var t=i.useRef(e),r=i.useState({}),n=Y(r,2),a=n[1],o=i.useRef(null),s=i.useRef([]);function l(u){s.current.push(u);var c=Promise.resolve();o.current=c,c.then(function(){if(o.current===c){var d=s.current,f=t.current;s.current=[],d.forEach(function(v){t.current=v(t.current)}),o.current=null,f!==t.current&&a({})}})}return i.useEffect(function(){return function(){o.current=null}},[]),[t.current,l]}function ix(e){var t=i.useRef(e||null),r=i.useRef();function n(){window.clearTimeout(r.current)}function a(s){t.current=s,n(),r.current=window.setTimeout(function(){t.current=null,r.current=void 0},100)}function o(){return t.current}return i.useEffect(function(){return n},[]),[a,o]}function lx(e,t,r){var n=i.useMemo(function(){for(var a=[],o=[],s=0,l=0,u=0;u=0;l-=1){var u=t[l],c=r&&r[l],d=c&&c[vo];if(u||d||s){var f=d||{};f.columnType;var v=ze(f,sx);a.unshift(i.createElement("col",J({key:l,style:{width:u}},v))),s=!0}}return i.createElement("colgroup",null,a)}function Oc(e){var t=e.className,r=e.children;return i.createElement("div",{className:t},r)}var Rm=i.createContext({});function ux(e){var t=e.className,r=e.index,n=e.children,a=e.colSpan,o=a===void 0?1:a,s=e.rowSpan,l=e.align,u=i.useContext(qn),c=u.prefixCls,d=u.direction,f=i.useContext(Rm),v=f.scrollColumnIndex,m=f.stickyOffsets,h=f.flattenColumns,g=r+o-1,y=g+1===v?o+1:o,b=Cu(r,r+y-1,h,m,d);return i.createElement(Ao,J({className:t,index:r,component:"td",prefixCls:c,record:null,dataIndex:null,align:l,colSpan:y,rowSpan:s,render:function(){return n}},b))}var cx=["children"];function dx(e){var t=e.children,r=ze(e,cx);return i.createElement("tr",r,t)}function ml(e){var t=e.children;return t}ml.Row=dx;ml.Cell=ux;function gi(e){var t=e.children,r=e.stickyOffsets,n=e.flattenColumns,a=i.useContext(qn),o=a.prefixCls,s=n.length-1,l=n[s],u=i.useMemo(function(){return{stickyOffsets:r,flattenColumns:n,scrollColumnIndex:l!=null&&l.scrollbar?s:null}},[l,n,s,r]);return i.createElement(Rm.Provider,{value:u},i.createElement("tfoot",{className:"".concat(o,"-summary")},t))}var km=ml;function fx(e){var t,r=e.prefixCls,n=e.record,a=e.onExpand,o=e.expanded,s=e.expandable,l="".concat(r,"-row-expand-icon");if(!s)return i.createElement("span",{className:ve(l,"".concat(r,"-row-spaced"))});var u=function(d){a(n,d),d.stopPropagation()};return i.createElement("span",{className:ve(l,(t={},B(t,"".concat(r,"-row-expanded"),o),B(t,"".concat(r,"-row-collapsed"),!o),t)),onClick:u})}function vx(e,t,r){var n=[];function a(o){(o||[]).forEach(function(s,l){n.push(t(s,l)),a(s[r])})}return a(e),n}var mx=function(t,r){var n,a,o=t.scrollBodyRef,s=t.onScroll,l=t.offsetScroll,u=t.container,c=i.useContext(qn),d=c.prefixCls,f=((n=o.current)===null||n===void 0?void 0:n.scrollWidth)||0,v=((a=o.current)===null||a===void 0?void 0:a.clientWidth)||0,m=f&&v*(v/f),h=i.useRef(),g=Em({scrollLeft:0,isHiddenScrollBar:!1}),y=Y(g,2),b=y[0],C=y[1],x=i.useRef({delta:0,x:0}),E=i.useState(!1),P=Y(E,2),w=P[0],T=P[1],$=function(){T(!1)},R=function(F){F.persist(),x.current.delta=F.pageX-b.scrollLeft,x.current.x=0,T(!0),F.preventDefault()},D=function(F){var N,I=F||((N=window)===null||N===void 0?void 0:N.event),L=I.buttons;if(!w||L===0){w&&T(!1);return}var A=x.current.x+F.pageX-x.current.x-x.current.delta;A<=0&&(A=0),A+m>=v&&(A=v-m),s({scrollLeft:A/v*(f+2)}),x.current.x=F.pageX},O=function(){if(o.current){var F=ys(o.current).top,N=F+o.current.offsetHeight,I=u===window?document.documentElement.scrollTop+window.innerHeight:ys(u).top+u.clientHeight;N-ec()<=I||F>=I-l?C(function(L){return p(p({},L),{},{isHiddenScrollBar:!0})}):C(function(L){return p(p({},L),{},{isHiddenScrollBar:!1})})}},k=function(F){C(function(N){return p(p({},N),{},{scrollLeft:F/f*v||0})})};return i.useImperativeHandle(r,function(){return{setScrollLeft:k}}),i.useEffect(function(){var M=rr(document.body,"mouseup",$,!1),F=rr(document.body,"mousemove",D,!1);return O(),function(){M.remove(),F.remove()}},[m,w]),i.useEffect(function(){var M=rr(u,"scroll",O,!1),F=rr(window,"resize",O,!1);return function(){M.remove(),F.remove()}},[u]),i.useEffect(function(){b.isHiddenScrollBar||C(function(M){var F=o.current;return F?p(p({},M),{},{scrollLeft:F.scrollLeft/F.scrollWidth*F.clientWidth}):M})},[b.isHiddenScrollBar]),f<=v||!m||b.isHiddenScrollBar?null:i.createElement("div",{style:{height:ec(),width:v,bottom:l},className:"".concat(d,"-sticky-scroll")},i.createElement("div",{onMouseDown:R,ref:h,className:ve("".concat(d,"-sticky-scroll-bar"),B({},"".concat(d,"-sticky-scroll-bar-active"),w)),style:{width:"".concat(m,"px"),transform:"translate3d(".concat(b.scrollLeft,"px, 0, 0)")}}))};const hx=i.forwardRef(mx);var Dc=Kf()?window:null;function px(e,t){var r=Ye(e)==="object"?e:{},n=r.offsetHeader,a=n===void 0?0:n,o=r.offsetSummary,s=o===void 0?0:o,l=r.offsetScroll,u=l===void 0?0:l,c=r.getContainer,d=c===void 0?function(){return Dc}:c,f=d()||Dc;return i.useMemo(function(){var v=!!e;return{isSticky:v,stickyClassName:v?"".concat(t,"-sticky-holder"):"",offsetHeader:a,offsetSummary:s,offsetScroll:u,container:f}},[u,a,s,t,f])}var gx=["className","noData","columns","flattenColumns","colWidths","columCount","stickyOffsets","direction","fixHeader","stickyTopOffset","stickyBottomOffset","stickyClassName","onScroll","maxContentScroll","children"];function yx(e,t){return i.useMemo(function(){for(var r=[],n=0;n=0})},[o]),D=o[o.length-1],O={fixed:D?D.fixed:null,scrollbar:!0,onHeaderCell:function(){return{className:"".concat(x,"-cell-scrollbar")}}},k=i.useMemo(function(){return w?[].concat(Ke(a),[O]):a},[w,a]),M=i.useMemo(function(){return w?[].concat(Ke(o),[O]):o},[w,o]),F=i.useMemo(function(){var I=u.right,L=u.left;return p(p({},u),{},{left:c==="rtl"?[].concat(Ke(L.map(function(A){return A+w})),[0]):L,right:c==="rtl"?I:[].concat(Ke(I.map(function(A){return A+w})),[0]),isSticky:P})},[w,u,P]),N=yx(s,l);return i.createElement("div",{style:p({overflow:"hidden"},P?{top:f,bottom:v}:{}),ref:$,className:ve(r,B({},m,!!m))},i.createElement("table",{style:{tableLayout:"fixed",visibility:n||N?null:"hidden"}},(!n||!g||R)&&i.createElement(Pm,{colWidths:N?[].concat(Ke(N),[w]):[],columCount:l+1,columns:M}),y(p(p({},b),{},{stickyOffsets:F,columns:k,flattenColumns:M}))))});Ss.displayName="FixedHolder";var bx=[],Cx={},ki="rc-table-internal-hook",xx=i.memo(function(e){var t=e.children;return t},function(e,t){return fu(e.props,t.props)?e.pingLeft!==t.pingLeft||e.pingRight!==t.pingRight:!1});function ra(e){var t,r=e.prefixCls,n=e.className,a=e.rowClassName,o=e.style,s=e.data,l=e.rowKey,u=e.scroll,c=e.tableLayout,d=e.direction,f=e.title,v=e.footer,m=e.summary,h=e.id,g=e.showHeader,y=e.components,b=e.emptyText,C=e.onRow,x=e.onHeaderRow,E=e.internalHooks,P=e.transformColumns,w=e.internalRefs,T=e.sticky,$=s||bx,R=!!$.length,D=i.useCallback(function(gt,Ct){return fm(y||{},gt)||Ct},[y]),O=i.useMemo(function(){return typeof l=="function"?l:function(gt){var Ct=gt&>[l];return Ct}},[l]),k=tx(e),M=k.expandIcon,F=k.expandedRowKeys,N=k.defaultExpandedRowKeys,I=k.defaultExpandAllRows,L=k.expandedRowRender,A=k.columnTitle,_=k.onExpand,K=k.onExpandedRowsChange,z=k.expandRowByClick,j=k.rowExpandable,V=k.expandIconColumnIndex,X=k.expandedRowClassName,H=k.childrenColumnName,Z=k.indentSize,U=M||fx,ae=H||"children",q=i.useMemo(function(){return L?"row":e.expandable&&E===ki&&e.expandable.__PARENT_RENDER_ICON__||$.some(function(gt){return gt&&Ye(gt)==="object"&>[ae]})?"nest":!1},[!!L,$]),ne=i.useState(function(){return N||(I?vx($,O,ae):[])}),ue=Y(ne,2),G=ue[0],te=ue[1],ee=i.useMemo(function(){return new Set(F||G||[])},[F,G]),le=i.useCallback(function(gt){var Ct=O(gt,$.indexOf(gt)),Lt,Qt=ee.has(Ct);Qt?(ee.delete(Ct),Lt=Ke(ee)):Lt=[].concat(Ke(ee),[Ct]),te(Lt),_&&_(!Qt,gt),K&&K(Lt)},[O,ee,$,_,K]),re=i.useState(0),ge=Y(re,2),Pe=ge[0],me=ge[1],ce=ox(p(p(p({},e),k),{},{expandable:!!L,columnTitle:A,expandedKeys:ee,getRowKey:O,onTriggerExpand:le,expandIcon:U,expandIconColumnIndex:V,direction:d}),E===ki?P:null),fe=Y(ce,2),ie=fe[0],se=fe[1],he=i.useMemo(function(){return{columns:ie,flattenColumns:se}},[ie,se]),Ce=i.useRef(),ke=i.useRef(),Te=i.useRef(),Se=i.useRef(),Re=i.useRef(),Ee=i.useState(!1),Qe=Y(Ee,2),et=Qe[0],vt=Qe[1],ct=i.useState(!1),ht=Y(ct,2),Ge=ht[0],_e=ht[1],mt=Em(new Map),tt=Y(mt,2),we=tt[0],He=tt[1],Me=fl(se),Le=Me.map(function(gt){return we.get(gt)}),ye=i.useMemo(function(){return Le},[Le.join("_")]),de=lx(ye,se.length,d),be=u&&Cs(u.y),Ne=u&&Cs(u.x)||!!k.fixed,Ue=Ne&&se.some(function(gt){var Ct=gt.fixed;return Ct}),lt=i.useRef(),$e=px(T,r),xe=$e.isSticky,Je=$e.offsetHeader,dt=$e.offsetSummary,ut=$e.offsetScroll,Ot=$e.stickyClassName,Dt=$e.container,kt=m==null?void 0:m($),Ft=(be||xe)&&i.isValidElement(kt)&&kt.type===ml&&kt.props.fixed,nt,ot,ft;be&&(ot={overflowY:"scroll",maxHeight:u.y}),Ne&&(nt={overflowX:"auto"},be||(ot={overflowY:"hidden"}),ft={width:(u==null?void 0:u.x)===!0?"auto":u==null?void 0:u.x,minWidth:"100%"});var it=i.useCallback(function(gt,Ct){ov(Ce.current)&&He(function(Lt){if(Lt.get(gt)!==Ct){var Qt=new Map(Lt);return Qt.set(gt,Ct),Qt}return Lt})},[]),Ze=ix(null),Xe=Y(Ze,2),Fe=Xe[0],Ae=Xe[1];function Ie(gt,Ct){Ct&&(typeof Ct=="function"?Ct(gt):Ct.scrollLeft!==gt&&(Ct.scrollLeft=gt))}var Oe=function(Ct){var Lt=Ct.currentTarget,Qt=Ct.scrollLeft,Ya=d==="rtl",dn=typeof Qt=="number"?Qt:Lt.scrollLeft,hr=Lt||Cx;if(!Ae()||Ae()===hr){var pr;Fe(hr),Ie(dn,ke.current),Ie(dn,Te.current),Ie(dn,Re.current),Ie(dn,(pr=lt.current)===null||pr===void 0?void 0:pr.setScrollLeft)}if(Lt){var jr=Lt.scrollWidth,gr=Lt.clientWidth;if(jr===gr){vt(!1),_e(!1);return}Ya?(vt(-dn0)):(vt(dn>0),_e(dnl))return!1;var c=o.get(e),d=o.get(t);if(c&&d)return c==t&&d==e;var f=-1,v=!0,m=r&cS?new iS:void 0;for(o.set(e,t),o.set(t,e);++f0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=e.length,n=t.length;if(Math.abs(r-n)!==1)return{add:!1,key:null};function a(o,s){var l=new Map;o.forEach(function(c){l.set(c,!0)});var u=s.filter(function(c){return!l.has(c)});return u.length===1?u[0]:null}return r ").concat(t);return t}var Km=i.forwardRef(function(e,t){var r=e.prefixCls,n=e.data;e.selectable,e.checkable;var a=e.expandedKeys,o=e.selectedKeys,s=e.checkedKeys,l=e.loadedKeys,u=e.loadingKeys,c=e.halfCheckedKeys,d=e.keyEntities,f=e.disabled,v=e.dragging,m=e.dragOverNodeKey,h=e.dropPosition,g=e.motion,y=e.height,b=e.itemHeight,C=e.virtual,x=e.focusable,E=e.activeItem,P=e.focused,w=e.tabIndex,T=e.onKeyDown,$=e.onFocus,R=e.onBlur,D=e.onActiveChange,O=e.onListChangeStart,k=e.onListChangeEnd,M=ze(e,aw),F=i.useRef(null),N=i.useRef(null);i.useImperativeHandle(t,function(){return{scrollTo:function(fe){F.current.scrollTo(fe)},getIndentWidth:function(){return N.current.offsetWidth}}});var I=i.useState(a),L=Y(I,2),A=L[0],_=L[1],K=i.useState(n),z=Y(K,2),j=z[0],V=z[1],X=i.useState(n),H=Y(X,2),Z=H[0],U=H[1],ae=i.useState([]),q=Y(ae,2),ne=q[0],ue=q[1],G=i.useState(null),te=Y(G,2),ee=te[0],le=te[1],re=i.useRef(n);re.current=n;function ge(){var ce=re.current;V(ce),U(ce),ue([]),le(null),k()}Pr(function(){_(a);var ce=rw(A,a);if(ce.key!==null)if(ce.add){var fe=j.findIndex(function(Te){var Se=Te.key;return Se===ce.key}),ie=id(rd(j,n,ce.key),C,y,b),se=j.slice();se.splice(fe+1,0,od),U(se),ue(ie),le("show")}else{var he=n.findIndex(function(Te){var Se=Te.key;return Se===ce.key}),Ce=id(rd(n,j,ce.key),C,y,b),ke=n.slice();ke.splice(he+1,0,od),U(ke),ue(Ce),le("hide")}else j!==n&&(V(n),U(n))},[a,n]),i.useEffect(function(){v||ge()},[v]);var Pe=g?Z:n,me={expandedKeys:a,selectedKeys:o,loadedKeys:l,loadingKeys:u,checkedKeys:s,halfCheckedKeys:c,dragOverNodeKey:m,dropPosition:h,keyEntities:d};return i.createElement(i.Fragment,null,P&&E&&i.createElement("span",{style:ad,"aria-live":"assertive"},iw(E)),i.createElement("div",null,i.createElement("input",{style:ad,disabled:x===!1||f,tabIndex:x!==!1?w:null,onKeyDown:T,onFocus:$,onBlur:R,value:"",onChange:ow,"aria-label":"for screen reader"})),i.createElement("div",{className:"".concat(r,"-treenode"),"aria-hidden":!0,style:{position:"absolute",pointerEvents:"none",visibility:"hidden",height:0,overflow:"hidden",border:0,padding:0}},i.createElement("div",{className:"".concat(r,"-indent")},i.createElement("div",{ref:N,className:"".concat(r,"-indent-unit")}))),i.createElement(y0,J({},M,{data:Pe,itemKey:ld,height:y,fullHeight:!1,virtual:C,itemHeight:b,prefixCls:"".concat(r,"-list"),ref:F,onVisibleChange:function(fe,ie){var se=new Set(fe),he=ie.filter(function(Ce){return!se.has(Ce)});he.some(function(Ce){return ld(Ce)===Qr})&&ge()}}),function(ce){var fe=ce.pos,ie=J({},(Lm(ce.data),ce.data)),se=ce.title,he=ce.key,Ce=ce.isStart,ke=ce.isEnd,Te=Do(he,fe);delete ie.key,delete ie.children;var Se=co(Te,me);return i.createElement(nw,J({},ie,Se,{title:se,active:!!E&&he===E.key,pos:fe,data:ce.data,isStart:Ce,isEnd:ke,motion:g,motionNodes:he===Qr?ne:null,motionType:ee,onMotionStart:O,onMotionEnd:ge,treeNodeRequiredProps:me,onMouseMove:function(){D(null)}}))}))});Km.displayName="NodeList";function Bn(e,t){if(!e)return[];var r=e.slice(),n=r.indexOf(t);return n>=0&&r.splice(n,1),r}function tr(e,t){var r=(e||[]).slice();return r.indexOf(t)===-1&&r.push(t),r}function Mu(e){return e.split("-")}function lw(e,t){var r=[],n=hn(t,e);function a(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];o.forEach(function(s){var l=s.key,u=s.children;r.push(l),a(u)})}return a(n.children),r}function sw(e){if(e.parent){var t=Mu(e.pos);return Number(t[t.length-1])===e.parent.children.length-1}return!1}function uw(e){var t=Mu(e.pos);return Number(t[t.length-1])===0}function sd(e,t,r,n,a,o,s,l,u,c){var d,f=e.clientX,v=e.clientY,m=e.target.getBoundingClientRect(),h=m.top,g=m.height,y=(c==="rtl"?-1:1)*(((a==null?void 0:a.x)||0)-f),b=(y-12)/n,C=hn(l,r.props.eventKey);if(v-1.5?o({dragNode:k,dropNode:M,dropPosition:1})?R=1:F=!1:o({dragNode:k,dropNode:M,dropPosition:0})?R=0:o({dragNode:k,dropNode:M,dropPosition:1})?R=1:F=!1:o({dragNode:k,dropNode:M,dropPosition:1})?R=1:F=!1,{dropPosition:R,dropLevelOffset:D,dropTargetKey:C.key,dropTargetPos:C.pos,dragOverNodeKey:$,dropContainerKey:R===0?null:((d=C.parent)===null||d===void 0?void 0:d.key)||null,dropAllowed:F}}function ud(e,t){if(e){var r=t.multiple;return r?e.slice():e.length?[e[0]]:e}}function zl(e){if(!e)return null;var t;if(Array.isArray(e))t={checkedKeys:e,halfCheckedKeys:void 0};else if(Ye(e)==="object")t={checkedKeys:e.checked||void 0,halfCheckedKeys:e.halfChecked||void 0};else return an(!1,"`checkedKeys` is not an array or an object"),null;return t}function Ms(e,t){var r=new Set;function n(a){if(!r.has(a)){var o=hn(t,a);if(o){r.add(a);var s=o.parent,l=o.node;l.disabled||s&&n(s.key)}}}return(e||[]).forEach(function(a){n(a)}),Ke(r)}var cw=10,Cl=function(e){Cn(r,e);var t=xn(r);function r(){var n;Sn(this,r);for(var a=arguments.length,o=new Array(a),s=0;s2&&arguments[2]!==void 0?arguments[2]:!1,f=n.state,v=f.dragChildrenKeys,m=f.dropPosition,h=f.dropTargetKey,g=f.dropTargetPos,y=f.dropAllowed;if(y){var b=n.props.onDrop;if(n.setState({dragOverNodeKey:null}),n.cleanDragState(),h!==null){var C=p(p({},co(h,n.getTreeNodeRequiredProps())),{},{active:((c=n.getActiveItem())===null||c===void 0?void 0:c.key)===h,data:hn(n.state.keyEntities,h).node}),x=v.indexOf(h)!==-1;an(!x,"Can not drop to dragNode's children node. This is a bug of rc-tree. Please report an issue.");var E=Mu(g),P={event:l,node:Gt(C),dragNode:n.dragNode?Gt(n.dragNode.props):null,dragNodesKeys:[n.dragNode.props.eventKey].concat(v),dropToGap:m!==0,dropPosition:m+Number(E[E.length-1])};d||b==null||b(P),n.dragNode=null}}},n.cleanDragState=function(){var l=n.state.draggingNodeKey;l!==null&&n.setState({draggingNodeKey:null,dropPosition:null,dropContainerKey:null,dropTargetKey:null,dropLevelOffset:null,dropAllowed:!0,dragOverNodeKey:null}),n.dragStartMousePosition=null,n.currentMouseOverDroppableNodeKey=null},n.triggerExpandActionExpand=function(l,u){var c=n.state,d=c.expandedKeys,f=c.flattenNodes,v=u.expanded,m=u.key,h=u.isLeaf;if(!(h||l.shiftKey||l.metaKey||l.ctrlKey)){var g=f.filter(function(b){return b.key===m})[0],y=Gt(p(p({},co(m,n.getTreeNodeRequiredProps())),{},{data:g.data}));n.setExpandedKeys(v?Bn(d,m):tr(d,m)),n.onNodeExpand(l,y)}},n.onNodeClick=function(l,u){var c=n.props,d=c.onClick,f=c.expandAction;f==="click"&&n.triggerExpandActionExpand(l,u),d==null||d(l,u)},n.onNodeDoubleClick=function(l,u){var c=n.props,d=c.onDoubleClick,f=c.expandAction;f==="doubleClick"&&n.triggerExpandActionExpand(l,u),d==null||d(l,u)},n.onNodeSelect=function(l,u){var c=n.state.selectedKeys,d=n.state,f=d.keyEntities,v=d.fieldNames,m=n.props,h=m.onSelect,g=m.multiple,y=u.selected,b=u[v.key],C=!y;C?g?c=tr(c,b):c=[b]:c=Bn(c,b);var x=c.map(function(E){var P=hn(f,E);return P?P.node:null}).filter(function(E){return E});n.setUncontrolledState({selectedKeys:c}),h==null||h(c,{event:"select",selected:C,node:u,selectedNodes:x,nativeEvent:l.nativeEvent})},n.onNodeCheck=function(l,u,c){var d=n.state,f=d.keyEntities,v=d.checkedKeys,m=d.halfCheckedKeys,h=n.props,g=h.checkStrictly,y=h.onCheck,b=u.key,C,x={event:"check",node:u,checked:c,nativeEvent:l.nativeEvent};if(g){var E=c?tr(v,b):Bn(v,b),P=Bn(m,b);C={checked:E,halfChecked:P},x.checkedNodes=E.map(function(O){return hn(f,O)}).filter(function(O){return O}).map(function(O){return O.node}),n.setUncontrolledState({checkedKeys:E})}else{var w=kn([].concat(Ke(v),[b]),!0,f),T=w.checkedKeys,$=w.halfCheckedKeys;if(!c){var R=new Set(T);R.delete(b);var D=kn(Array.from(R),{checked:!1,halfCheckedKeys:$},f);T=D.checkedKeys,$=D.halfCheckedKeys}C=T,x.checkedNodes=[],x.checkedNodesPositions=[],x.halfCheckedKeys=$,T.forEach(function(O){var k=hn(f,O);if(k){var M=k.node,F=k.pos;x.checkedNodes.push(M),x.checkedNodesPositions.push({node:M,pos:F})}}),n.setUncontrolledState({checkedKeys:T},!1,{halfCheckedKeys:$})}y==null||y(C,x)},n.onNodeLoad=function(l){var u=l.key,c=new Promise(function(d,f){n.setState(function(v){var m=v.loadedKeys,h=m===void 0?[]:m,g=v.loadingKeys,y=g===void 0?[]:g,b=n.props,C=b.loadData,x=b.onLoad;if(!C||h.indexOf(u)!==-1||y.indexOf(u)!==-1)return null;var E=C(l);return E.then(function(){var P=n.state.loadedKeys,w=tr(P,u);x==null||x(w,{event:"load",node:l}),n.setUncontrolledState({loadedKeys:w}),n.setState(function(T){return{loadingKeys:Bn(T.loadingKeys,u)}}),d()}).catch(function(P){if(n.setState(function(T){return{loadingKeys:Bn(T.loadingKeys,u)}}),n.loadingRetryTimes[u]=(n.loadingRetryTimes[u]||0)+1,n.loadingRetryTimes[u]>=cw){var w=n.state.loadedKeys;an(!1,"Retry for `loadData` many times but still failed. No more retry."),n.setUncontrolledState({loadedKeys:tr(w,u)}),d()}f(P)}),{loadingKeys:tr(y,u)}})});return c.catch(function(){}),c},n.onNodeMouseEnter=function(l,u){var c=n.props.onMouseEnter;c==null||c({event:l,node:u})},n.onNodeMouseLeave=function(l,u){var c=n.props.onMouseLeave;c==null||c({event:l,node:u})},n.onNodeContextMenu=function(l,u){var c=n.props.onRightClick;c&&(l.preventDefault(),c({event:l,node:u}))},n.onFocus=function(){var l=n.props.onFocus;n.setState({focused:!0});for(var u=arguments.length,c=new Array(u),d=0;d1&&arguments[1]!==void 0?arguments[1]:!1,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;if(!n.destroyed){var d=!1,f=!0,v={};Object.keys(l).forEach(function(m){if(m in n.props){f=!1;return}d=!0,v[m]=l[m]}),d&&(!u||f)&&n.setState(p(p({},v),c))}},n.scrollTo=function(l){n.listRef.current.scrollTo(l)},n}return wn(r,[{key:"componentDidMount",value:function(){this.destroyed=!1,this.onUpdated()}},{key:"componentDidUpdate",value:function(){this.onUpdated()}},{key:"onUpdated",value:function(){var a=this.props.activeKey;a!==void 0&&a!==this.state.activeKey&&(this.setState({activeKey:a}),a!==null&&this.scrollTo({key:a}))}},{key:"componentWillUnmount",value:function(){window.removeEventListener("dragend",this.onWindowDragEnd),this.destroyed=!0}},{key:"resetDragState",value:function(){this.setState({dragOverNodeKey:null,dropPosition:null,dropLevelOffset:null,dropTargetKey:null,dropContainerKey:null,dropTargetPos:null,dropAllowed:!1})}},{key:"render",value:function(){var a,o=this.state,s=o.focused,l=o.flattenNodes,u=o.keyEntities,c=o.draggingNodeKey,d=o.activeKey,f=o.dropLevelOffset,v=o.dropContainerKey,m=o.dropTargetKey,h=o.dropPosition,g=o.dragOverNodeKey,y=o.indent,b=this.props,C=b.prefixCls,x=b.className,E=b.style,P=b.showLine,w=b.focusable,T=b.tabIndex,$=T===void 0?0:T,R=b.selectable,D=b.showIcon,O=b.icon,k=b.switcherIcon,M=b.draggable,F=b.checkable,N=b.checkStrictly,I=b.disabled,L=b.motion,A=b.loadData,_=b.filterTreeNode,K=b.height,z=b.itemHeight,j=b.virtual,V=b.titleRender,X=b.dropIndicatorRender,H=b.onContextMenu,Z=b.onScroll,U=b.direction,ae=b.rootClassName,q=b.rootStyle,ne=cu(this.props,{aria:!0,data:!0}),ue;return M&&(Ye(M)==="object"?ue=M:typeof M=="function"?ue={nodeDraggable:M}:ue={}),i.createElement(Nu.Provider,{value:{prefixCls:C,selectable:R,showIcon:D,icon:O,switcherIcon:k,draggable:ue,draggingNodeKey:c,checkable:F,checkStrictly:N,disabled:I,keyEntities:u,dropLevelOffset:f,dropContainerKey:v,dropTargetKey:m,dropPosition:h,dragOverNodeKey:g,indent:y,direction:U,dropIndicatorRender:X,loadData:A,filterTreeNode:_,titleRender:V,onNodeClick:this.onNodeClick,onNodeDoubleClick:this.onNodeDoubleClick,onNodeExpand:this.onNodeExpand,onNodeSelect:this.onNodeSelect,onNodeCheck:this.onNodeCheck,onNodeLoad:this.onNodeLoad,onNodeMouseEnter:this.onNodeMouseEnter,onNodeMouseLeave:this.onNodeMouseLeave,onNodeContextMenu:this.onNodeContextMenu,onNodeDragStart:this.onNodeDragStart,onNodeDragEnter:this.onNodeDragEnter,onNodeDragOver:this.onNodeDragOver,onNodeDragLeave:this.onNodeDragLeave,onNodeDragEnd:this.onNodeDragEnd,onNodeDrop:this.onNodeDrop}},i.createElement("div",{role:"tree",className:ve(C,x,ae,(a={},B(a,"".concat(C,"-show-line"),P),B(a,"".concat(C,"-focused"),s),B(a,"".concat(C,"-active-focused"),d!==null),a)),style:q},i.createElement(Km,J({ref:this.listRef,prefixCls:C,style:E,data:l,disabled:I,selectable:R,checkable:!!F,motion:L,dragging:c!==null,height:K,itemHeight:z,virtual:j,focusable:w,focused:s,tabIndex:$,activeItem:this.getActiveItem(),onFocus:this.onFocus,onBlur:this.onBlur,onKeyDown:this.onKeyDown,onActiveChange:this.onActiveChange,onListChangeStart:this.onListChangeStart,onListChangeEnd:this.onListChangeEnd,onContextMenu:H,onScroll:Z},this.getTreeNodeRequiredProps(),ne))))}}],[{key:"getDerivedStateFromProps",value:function(a,o){var s=o.prevProps,l={prevProps:a};function u(w){return!s&&w in a||s&&s[w]!==a[w]}var c,d=o.fieldNames;if(u("fieldNames")&&(d=Oi(a.fieldNames),l.fieldNames=d),u("treeData")?c=a.treeData:u("children")&&(an(!1,"`children` of Tree is deprecated. Please use `treeData` instead."),c=qv(a.children)),c){l.treeData=c;var f=Io(c,{fieldNames:d});l.keyEntities=p(B({},Qr,jm),f.keyEntities)}var v=l.keyEntities||o.keyEntities;if(u("expandedKeys")||s&&u("autoExpandParent"))l.expandedKeys=a.autoExpandParent||!s&&a.defaultExpandParent?Ms(a.expandedKeys,v):a.expandedKeys;else if(!s&&a.defaultExpandAll){var m=p({},v);delete m[Qr],l.expandedKeys=Object.keys(m).map(function(w){return m[w].key})}else!s&&a.defaultExpandedKeys&&(l.expandedKeys=a.autoExpandParent||a.defaultExpandParent?Ms(a.defaultExpandedKeys,v):a.defaultExpandedKeys);if(l.expandedKeys||delete l.expandedKeys,c||l.expandedKeys){var h=jl(c||o.treeData,l.expandedKeys||o.expandedKeys,d);l.flattenNodes=h}if(a.selectable&&(u("selectedKeys")?l.selectedKeys=ud(a.selectedKeys,a):!s&&a.defaultSelectedKeys&&(l.selectedKeys=ud(a.defaultSelectedKeys,a))),a.checkable){var g;if(u("checkedKeys")?g=zl(a.checkedKeys)||{}:!s&&a.defaultCheckedKeys?g=zl(a.defaultCheckedKeys)||{}:c&&(g=zl(a.checkedKeys)||{checkedKeys:o.checkedKeys,halfCheckedKeys:o.halfCheckedKeys}),g){var y=g,b=y.checkedKeys,C=b===void 0?[]:b,x=y.halfCheckedKeys,E=x===void 0?[]:x;if(!a.checkStrictly){var P=kn(C,!0,v);C=P.checkedKeys,E=P.halfCheckedKeys}l.checkedKeys=C,l.halfCheckedKeys=E}}return u("loadedKeys")&&(l.loadedKeys=a.loadedKeys),l}}]),r}(i.Component);Cl.defaultProps={prefixCls:"rc-tree",showLine:!1,showIcon:!0,selectable:!0,multiple:!1,checkable:!1,disabled:!1,checkStrictly:!1,draggable:!1,defaultExpandParent:!0,autoExpandParent:!1,defaultExpandAll:!1,defaultExpandedKeys:[],defaultCheckedKeys:[],defaultSelectedKeys:[],dropIndicatorRender:G3,allowDrop:function(){return!0},expandAction:!1};Cl.TreeNode=xa;var cd=4;function dw(e){var t=e.dropPosition,r=e.dropLevelOffset,n=e.prefixCls,a=e.indent,o=e.direction,s=o===void 0?"ltr":o,l=s==="ltr"?"left":"right",u=s==="ltr"?"right":"left",c=B(B({},l,-r*a+cd),u,0);switch(t){case-1:c.top=-3;break;case 1:c.bottom=-3;break;default:c.bottom=-3,c[l]=a+cd;break}return Q.createElement("div",{style:c,className:"".concat(n,"-drop-indicator")})}function Vm(e,t,r,n){var a=n.isLeaf,o=n.expanded,s=n.loading;if(s)return i.createElement(Oa,{className:"".concat(e,"-switcher-loading-icon")});var l;if(r&&Ye(r)==="object"&&(l=r.showLeafIcon),a){if(!r)return null;if(typeof l!="boolean"&&l){var u=typeof l=="function"?l(n):l,c="".concat(e,"-switcher-line-custom-icon");return Zu(u)?ga(u,{className:ve(u.props.className||"",c)}):u}return l?i.createElement(Cv,{className:"".concat(e,"-switcher-line-icon")}):i.createElement("span",{className:"".concat(e,"-switcher-leaf-line")})}var d="".concat(e,"-switcher-icon"),f=typeof t=="function"?t(n):t;return Zu(f)?ga(f,{className:ve(f.props.className||"",d)}):f||(r?o?i.createElement(v1,{className:"".concat(e,"-switcher-line-icon")}):i.createElement(y1,{className:"".concat(e,"-switcher-line-icon")}):i.createElement(I0,{className:d}))}var fw=i.forwardRef(function(e,t){var r=i.useContext(Wt),n=r.getPrefixCls,a=r.direction,o=r.virtual,s=e.prefixCls,l=e.className,u=e.showIcon,c=u===void 0?!1:u,d=e.showLine,f=e.switcherIcon,v=e.blockNode,m=v===void 0?!1:v,h=e.children,g=e.checkable,y=g===void 0?!1:g,b=e.selectable,C=b===void 0?!0:b,x=e.draggable,E=e.motion,P=E===void 0?J(J({},s0),{motionAppear:!1}):E,w=n("tree",s),T=J(J({},e),{checkable:y,selectable:C,showIcon:c,motion:P,blockNode:m,showLine:!!d,dropIndicatorRender:dw}),$=i.useMemo(function(){if(!x)return!1;var R={};switch(Ye(x)){case"function":R.nodeDraggable=x;break;case"object":R=J({},x);break}return R.icon!==!1&&(R.icon=R.icon||i.createElement(s1,null)),R},[x]);return i.createElement(Cl,J({itemHeight:20,ref:t,virtual:o},T,{prefixCls:w,className:ve(B(B(B(B({},"".concat(w,"-icon-hide"),!c),"".concat(w,"-block-node"),m),"".concat(w,"-unselectable"),!C),"".concat(w,"-rtl"),a==="rtl"),l),direction:a,checkable:y&&i.createElement("span",{className:"".concat(w,"-checkbox-inner")}),selectable:C,switcherIcon:function(D){return Vm(w,f,d,D)},draggable:$}),h)});const zm=fw;var nr;(function(e){e[e.None=0]="None",e[e.Start=1]="Start",e[e.End=2]="End"})(nr||(nr={}));function Tu(e,t){function r(n){var a=n.key,o=n.children;t(a,n)!==!1&&Tu(o||[],t)}e.forEach(r)}function vw(e){var t=e.treeData,r=e.expandedKeys,n=e.startKey,a=e.endKey,o=[],s=nr.None;if(n&&n===a)return[n];if(!n||!a)return[];function l(u){return u===n||u===a}return Tu(t,function(u){if(s===nr.End)return!1;if(l(u)){if(o.push(u),s===nr.None)s=nr.Start;else if(s===nr.Start)return s=nr.End,!1}else s===nr.Start&&o.push(u);return r.includes(u)}),o}function Bl(e,t){var r=Ke(t),n=[];return Tu(e,function(a,o){var s=r.indexOf(a);return s!==-1&&(n.push(o),r.splice(s,1)),!!r.length}),n}var dd=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a0&&arguments[0]!==void 0?arguments[0]:{confirm:!1,closeDropdown:!1},Ee=Re.confirm,Qe=Re.closeDropdown;Ee&&ue([]),Qe&&k(!1),q(""),A(P?(w||[]).map(function(et){return String(et)}):[])},ee=function(){var Re=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{closeDropdown:!0},Ee=Re.closeDropdown;Ee&&k(!1),ue(L())},le=function(Re){Re&&F!==void 0&&A(Hl(F)),k(Re),!Re&&!a.filterDropdown&&G()},re=ve(B({},"".concat(o,"-menu-without-submenu"),!Sw(a.filters||[]))),ge=function(Re){if(Re.target.checked){var Ee=ha(a==null?void 0:a.filters).map(function(Qe){return String(Qe)});A(Ee)}else A([])},Pe=function Se(Re){var Ee=Re.filters;return(Ee||[]).map(function(Qe,et){var vt=String(Qe.value),ct={title:Qe.text,key:Qe.value!==void 0?vt:String(et)};return Qe.children&&(ct.children=Se({filters:Qe.children})),ct})},me=function Se(Re){var Ee;return J(J({},Re),{text:Re.title,value:Re.key,children:((Ee=Re.children)===null||Ee===void 0?void 0:Ee.map(function(Qe){return Se(Qe)}))||[]})},ce;if(typeof a.filterDropdown=="function")ce=a.filterDropdown({prefixCls:"".concat(o,"-custom"),setSelectedKeys:function(Re){return _({selectedKeys:Re})},selectedKeys:L(),confirm:ee,clearFilters:te,filters:a.filters,visible:M,close:function(){k(!1)}});else if(a.filterDropdown)ce=a.filterDropdown;else{var fe=L()||[],ie=function(){return(a.filters||[]).length===0?i.createElement(nc,{image:nc.PRESENTED_IMAGE_SIMPLE,description:h.filterEmptyText,imageStyle:{height:24},style:{margin:0,padding:"16px 0"}}):c==="tree"?i.createElement(i.Fragment,null,i.createElement(vd,{filterSearch:f,value:ae,onChange:ne,tablePrefixCls:r,locale:h}),i.createElement("div",{className:"".concat(r,"-filter-dropdown-tree")},l?i.createElement(ya,{checked:fe.length===ha(a.filters).length,indeterminate:fe.length>0&&fe.length0?o:e}),v=Math.ceil((o||e)/f.pageSize);f.current>v&&(f.current=v||1);var m=function(y,b){d({current:y??1,pageSize:b||f.pageSize})},h=function(y,b){var C;t&&((C=t.onChange)===null||C===void 0||C.call(t,y,b)),m(y,b),r(y,b||(f==null?void 0:f.pageSize))};return t===!1?[{},function(){}]:[J(J({},f),{onChange:h}),m]}var xr={},Fs="SELECT_ALL",$s="SELECT_INVERT",Os="SELECT_NONE",pd=[];function qm(e,t){var r=[];return(e||[]).forEach(function(n){r.push(n),n&&Ye(n)==="object"&&t in n&&(r=[].concat(Ke(r),Ke(qm(n[t],t))))}),r}function Mw(e,t){var r=e||{},n=r.preserveSelectedRowKeys,a=r.selectedRowKeys,o=r.defaultSelectedRowKeys,s=r.getCheckboxProps,l=r.onChange,u=r.onSelect,c=r.onSelectAll,d=r.onSelectInvert,f=r.onSelectNone,v=r.onSelectMultiple,m=r.columnWidth,h=r.type,g=r.selections,y=r.fixed,b=r.renderCell,C=r.hideSelectAll,x=r.checkStrictly,E=x===void 0?!0:x,P=t.prefixCls,w=t.data,T=t.pageData,$=t.getRecordByKey,R=t.getRowKey,D=t.expandType,O=t.childrenColumnName,k=t.locale,M=t.getPopupContainer,F=Rt(a||o||pd,{value:a}),N=Y(F,2),I=N[0],L=N[1],A=i.useRef(new Map),_=i.useCallback(function(me){if(n){var ce=new Map;me.forEach(function(fe){var ie=$(fe);!ie&&A.current.has(fe)&&(ie=A.current.get(fe)),ce.set(fe,ie)}),A.current=ce}},[$,n]);i.useEffect(function(){_(I)},[I]);var K=i.useMemo(function(){return E?{keyEntities:null}:Io(w,{externalGetKey:R,childrenPropName:O})},[w,R,E,O]),z=K.keyEntities,j=i.useMemo(function(){return qm(T,O)},[T,O]),V=i.useMemo(function(){var me=new Map;return j.forEach(function(ce,fe){var ie=R(ce,fe),se=(s?s(ce):null)||{};me.set(ie,se)}),me},[j,R,s]),X=i.useCallback(function(me){var ce;return!!(!((ce=V.get(R(me)))===null||ce===void 0)&&ce.disabled)},[V,R]),H=i.useMemo(function(){if(E)return[I||[],[]];var me=kn(I,!0,z,X),ce=me.checkedKeys,fe=me.halfCheckedKeys;return[ce||[],fe]},[I,E,z,X]),Z=Y(H,2),U=Z[0],ae=Z[1],q=i.useMemo(function(){var me=h==="radio"?U.slice(0,1):U;return new Set(me)},[U,h]),ne=i.useMemo(function(){return h==="radio"?new Set:new Set(ae)},[ae,h]),ue=i.useState(null),G=Y(ue,2),te=G[0],ee=G[1];i.useEffect(function(){e||L(pd)},[!!e]);var le=i.useCallback(function(me,ce){var fe,ie;_(me),n?(fe=me,ie=me.map(function(se){return A.current.get(se)})):(fe=[],ie=[],me.forEach(function(se){var he=$(se);he!==void 0&&(fe.push(se),ie.push(he))})),L(fe),l==null||l(fe,ie,{type:ce})},[L,$,l,n]),re=i.useCallback(function(me,ce,fe,ie){if(u){var se=fe.map(function(he){return $(he)});u($(me),ce,se,ie)}le(fe,"single")},[u,$,le]),ge=i.useMemo(function(){if(!g||C)return null;var me=g===!0?[Fs,$s,Os]:g;return me.map(function(ce){return ce===Fs?{key:"all",text:k.selectionAll,onSelect:function(){le(w.map(function(ie,se){return R(ie,se)}).filter(function(ie){var se=V.get(ie);return!(se!=null&&se.disabled)||q.has(ie)}),"all")}}:ce===$s?{key:"invert",text:k.selectInvert,onSelect:function(){var ie=new Set(q);T.forEach(function(he,Ce){var ke=R(he,Ce),Te=V.get(ke);Te!=null&&Te.disabled||(ie.has(ke)?ie.delete(ke):ie.add(ke))});var se=Array.from(ie);d&&d(se),le(se,"invert")}}:ce===Os?{key:"none",text:k.selectNone,onSelect:function(){f==null||f(),le(Array.from(q).filter(function(ie){var se=V.get(ie);return se==null?void 0:se.disabled}),"none")}}:ce}).map(function(ce){return J(J({},ce),{onSelect:function(){for(var ie,se,he=arguments.length,Ce=new Array(he),ke=0;ke2&&arguments[2]!==void 0?arguments[2]:!1,De=J(J({},fe),Ae);Oe&&(fe.resetPagination(),De.pagination.current&&(De.pagination.current=1),c&&c.onChange&&c.onChange(1,De.pagination.pageSize)),R&&R.scrollToFirstRowOnChange!==!1&&re.body.current&&gy(0,{getContainer:function(){return re.body.current}}),b==null||b(De.pagination,De.filters,De.sorter,{currentDataSource:hd(Is(U,De.sorterStates,ee),De.filterStates),action:Ie})},se=function(Ae,Ie){ie({sorter:Ae,sorterStates:Ie},"sort",!1)},he=Fw({prefixCls:ne,mergedColumns:L,onSorterChange:se,sortDirections:D||["ascend","descend"],tableLocale:Z,showSorterTooltip:M}),Ce=Y(he,4),ke=Ce[0],Te=Ce[1],Se=Ce[2],Re=Ce[3],Ee=i.useMemo(function(){return Is(U,Te,ee)},[U,Te]);fe.sorter=Re(),fe.sorterStates=Te;var Qe=function(Ae,Ie){ie({filters:Ae,filterStates:Ie},"filter",!0)},et=Ew({prefixCls:ne,locale:Z,dropdownPrefixCls:ue,mergedColumns:L,onFilterChange:Qe,getPopupContainer:C}),vt=Y(et,3),ct=vt[0],ht=vt[1],Ge=vt[2],_e=hd(Ee,ht);fe.filters=Ge,fe.filterStates=ht;var mt=i.useMemo(function(){var Fe={};return Object.keys(Ge).forEach(function(Ae){Ge[Ae]!==null&&(Fe[Ae]=Ge[Ae])}),J(J({},Se),{filters:Fe})},[Se,Ge]),tt=$w(mt),we=Y(tt,1),He=we[0],Me=function(Ae,Ie){ie({pagination:J(J({},fe.pagination),{current:Ae,pageSize:Ie})},"paginate")},Le=Nw(_e.length,c,Me),ye=Y(Le,2),de=ye[0],be=ye[1];fe.pagination=c===!1?{}:Rw(c,de),fe.resetPagination=be;var Ne=i.useMemo(function(){if(c===!1||!de.pageSize)return _e;var Fe=de.current,Ae=Fe===void 0?1:Fe,Ie=de.total,Oe=de.pageSize,De=Oe===void 0?Gm:Oe;return _e.lengthDe?_e.slice((Ae-1)*De,Ae*De):_e:_e.slice((Ae-1)*De,Ae*De)},[!!c,_e,de&&de.current,de&&de.pageSize,de&&de.total]),Ue=Mw(d,{prefixCls:ne,data:_e,pageData:Ne,getRowKey:ge,getRecordByKey:ce,expandType:le,childrenColumnName:ee,locale:Z,getPopupContainer:C}),lt=Y(Ue,2),$e=lt[0],xe=lt[1],Je=function(Ae,Ie,Oe){var De;return typeof m=="function"?De=ve(m(Ae,Ie,Oe)):De=ve(m),ve(B({},"".concat(ne,"-row-selected"),xe.has(ge(Ae,Ie))),De)};G.__PARENT_RENDER_ICON__=G.expandIcon,G.expandIcon=G.expandIcon||E||Ex(Z),le==="nest"&&G.expandIconColumnIndex===void 0?G.expandIconColumnIndex=d?1:0:G.expandIconColumnIndex>0&&d&&(G.expandIconColumnIndex-=1),typeof G.indentSize!="number"&&(G.indentSize=typeof $=="number"?$:15);var dt=i.useCallback(function(Fe){return He($e(ct(ke(Fe))))},[ke,ct,$e]),ut,Ot;if(c!==!1&&(de!=null&&de.total)){var Dt;de.size?Dt=de.size:Dt=H==="small"||H==="middle"?"small":void 0;var kt=function(Ae){return i.createElement(c2,J({},de,{className:ve("".concat(ne,"-pagination ").concat(ne,"-pagination-").concat(Ae),de.className),size:Dt}))},Ft=X==="rtl"?"left":"right",nt=de.position;if(nt!==null&&Array.isArray(nt)){var ot=nt.find(function(Fe){return Fe.includes("top")}),ft=nt.find(function(Fe){return Fe.includes("bottom")}),it=nt.every(function(Fe){return"".concat(Fe)==="none"});!ot&&!ft&&!it&&(Ot=kt(Ft)),ot&&(ut=kt(ot.toLowerCase().replace("top",""))),ft&&(Ot=kt(ft.toLowerCase().replace("bottom","")))}else Ot=kt(Ft)}var Ze;typeof x=="boolean"?Ze={spinning:x}:Ye(x)==="object"&&(Ze=J({spinning:!0},x));var Xe=ve("".concat(ne,"-wrapper"),B({},"".concat(ne,"-wrapper-rtl"),X==="rtl"),n);return i.createElement("div",{ref:t,className:Xe,style:a},i.createElement(Nr,J({spinning:!1},Ze),ut,i.createElement(ra,J({},A,{columns:L,direction:X,expandable:G,prefixCls:ne,className:ve(B(B(B(B({},"".concat(ne,"-middle"),H==="middle"),"".concat(ne,"-small"),H==="small"),"".concat(ne,"-bordered"),s),"".concat(ne,"-empty"),U.length===0)),data:Ne,rowKey:ge,rowClassName:Je,emptyText:O&&O.emptyText||(V||du)("Table"),internalHooks:ki,internalRefs:re,transformColumns:dt})),Ot))}var Iw=i.forwardRef(Dw),ur=Iw;ur.SELECTION_COLUMN=xr;ur.EXPAND_COLUMN=ra.EXPAND_COLUMN;ur.SELECTION_ALL=Fs;ur.SELECTION_INVERT=$s;ur.SELECTION_NONE=Os;ur.Column=Sx;ur.ColumnGroup=wx;ur.Summary=km;const Sa=ur;var _w=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a1&&arguments[1]!==void 0?arguments[1]:"0",v=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return d.map(function(m,h){var g="".concat(f,"-").concat(h),y=m[o.value],b=r.includes(y),C=c(m[o.children]||[],g,b),x=i.createElement($u,m,C.map(function(P){return P.node}));if(t===y&&(s=x),b){var E={pos:g,node:x,children:C};return v||l.push(E),E}return null}).filter(function(m){return m})}l||(l=[],c(n),l.sort(function(d,f){var v=d.node.props.value,m=f.node.props.value,h=r.indexOf(v),g=r.indexOf(m);return h-g}))}Object.defineProperty(e,"triggerNode",{get:function(){return an(!1,"`triggerNode` is deprecated. Please consider decoupling data with node."),u(),s}}),Object.defineProperty(e,"allCheckedNodes",{get:function(){return an(!1,"`allCheckedNodes` is deprecated. Please consider decoupling data with node."),u(),a?l:l.map(function(d){var f=d.node;return f})}})}function Yw(e,t){var r=t.id,n=t.pId,a=t.rootPId,o={},s=[],l=e.map(function(u){var c=p({},u),d=c[r];return o[d]=c,c.key=c.key||d,c});return l.forEach(function(u){var c=u[n],d=o[c];d&&(d.children=d.children||[],d.children.push(u)),(c===a||!d&&a===null)&&s.push(u)}),s}function Gw(e,t,r){return i.useMemo(function(){return e?r?Yw(e,p({id:"id",pId:"pId",rootPId:null},r!==!0?r:{})):e:ah(t)},[t,r,e])}const qw=function(e){var t=i.useRef({valueLabels:new Map});return i.useMemo(function(){var r=t.current.valueLabels,n=new Map,a=e.map(function(o){var s,l=o.value,u=(s=o.label)!==null&&s!==void 0?s:r.get(l);return n.set(l,u),p(p({},o),{},{label:u})});return t.current.valueLabels=n,[a]},[e])};function Sd(e){var t=i.useRef();t.current=e;var r=i.useCallback(function(){return t.current.apply(t,arguments)},[]);return r}const Xw=function(e,t){return i.useMemo(function(){var r=Io(e,{fieldNames:t,initWrapper:function(a){return p(p({},a),{},{valueEntities:new Map})},processEntity:function(a,o){var s=a.node[t.value];o.valueEntities.set(s,a)}});return r},[e,t])},Zw=function(e,t,r,n){return i.useMemo(function(){var a=e.map(function(u){var c=u.value;return c}),o=t.map(function(u){var c=u.value;return c}),s=a.filter(function(u){return!n[u]});if(r){var l=kn(a,!0,n);a=l.checkedKeys,o=l.halfCheckedKeys}return[Array.from(new Set([].concat(Ke(s),Ke(a)))),o]},[e,t,r,n])},Qw=function(e,t,r){var n=r.treeNodeFilterProp,a=r.filterTreeNode,o=r.fieldNames,s=o.children;return i.useMemo(function(){if(!t||a===!1)return e;var l;if(typeof a=="function")l=a;else{var u=t.toUpperCase();l=function(f,v){var m=v[n];return String(m).toUpperCase().includes(u)}}function c(d){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return d.map(function(v){var m=v[s],h=f||l(t,Ls(v)),g=c(m||[],h);return h||g.length?p(p({},v),{},B({isLeaf:void 0},s,g)):null}).filter(function(v){return v})}return c(e)},[e,t,s,n,a])};var Jw=["id","prefixCls","value","defaultValue","onChange","onSelect","onDeselect","searchValue","inputValue","onSearch","autoClearSearchValue","filterTreeNode","treeNodeFilterProp","showCheckedStrategy","treeNodeLabelProp","multiple","treeCheckable","treeCheckStrictly","labelInValue","fieldNames","treeDataSimpleMode","treeData","children","loadData","treeLoadedKeys","onTreeLoad","treeDefaultExpandAll","treeExpandedKeys","treeDefaultExpandedKeys","onTreeExpand","treeExpandAction","virtual","listHeight","listItemHeight","onDropdownVisibleChange","dropdownMatchSelectWidth","treeLine","treeIcon","showTreeIcon","switcherIcon","treeMotion"];function e6(e){return!e||Ye(e)!=="object"}var t6=i.forwardRef(function(e,t){var r=e.id,n=e.prefixCls,a=n===void 0?"rc-tree-select":n,o=e.value,s=e.defaultValue,l=e.onChange,u=e.onSelect,c=e.onDeselect,d=e.searchValue,f=e.inputValue,v=e.onSearch,m=e.autoClearSearchValue,h=m===void 0?!0:m,g=e.filterTreeNode,y=e.treeNodeFilterProp,b=y===void 0?"value":y,C=e.showCheckedStrategy,x=C===void 0?xl:C,E=e.treeNodeLabelProp,P=e.multiple,w=e.treeCheckable,T=e.treeCheckStrictly,$=e.labelInValue,R=e.fieldNames,D=e.treeDataSimpleMode,O=e.treeData,k=e.children,M=e.loadData,F=e.treeLoadedKeys,N=e.onTreeLoad,I=e.treeDefaultExpandAll,L=e.treeExpandedKeys,A=e.treeDefaultExpandedKeys,_=e.onTreeExpand,K=e.treeExpandAction,z=e.virtual,j=e.listHeight,V=j===void 0?200:j,X=e.listItemHeight,H=X===void 0?20:X,Z=e.onDropdownVisibleChange,U=e.dropdownMatchSelectWidth,ae=U===void 0?!0:U,q=e.treeLine,ne=e.treeIcon,ue=e.showTreeIcon,G=e.switcherIcon,te=e.treeMotion,ee=ze(e,Jw),le=cv(r),re=w&&!T,ge=w||T,Pe=T||$,me=ge||P,ce=Rt(s,{value:o}),fe=Y(ce,2),ie=fe[0],se=fe[1],he=i.useMemo(function(){return Vw(R)},[JSON.stringify(R)]),Ce=Rt("",{value:d!==void 0?d:f,postState:function(ot){return ot||""}}),ke=Y(Ce,2),Te=ke[0],Se=ke[1],Re=function(ot){Se(ot),v==null||v(ot)},Ee=Gw(O,k,D),Qe=Xw(Ee,he),et=Qe.keyEntities,vt=Qe.valueEntities,ct=i.useCallback(function(nt){var ot=[],ft=[];return nt.forEach(function(it){vt.has(it)?ft.push(it):ot.push(it)}),{missingRawValues:ot,existRawValues:ft}},[vt]),ht=Qw(Ee,Te,{fieldNames:he,treeNodeFilterProp:b,filterTreeNode:g}),Ge=i.useCallback(function(nt){if(nt){if(E)return nt[E];for(var ot=he._title,ft=0;ftt){var c=t-r;return n.push(String(o).slice(0,c)),n}n.push(o),r=u}return e}var v6=0,bi=1,Ed=2,Yl=3,Pd=4,m6=function(t){var r=t.enabledMeasure,n=t.children,a=t.text,o=t.width,s=t.fontSize,l=t.rows,u=t.onEllipsis,c=i.useState([0,0,0]),d=Y(c,2),f=Y(d[0],3),v=f[0],m=f[1],h=f[2],g=d[1],y=i.useState(v6),b=Y(y,2),C=b[0],x=b[1],E=i.useState(0),P=Y(E,2),w=P[0],T=P[1],$=i.useRef(null),R=i.useRef(null),D=i.useMemo(function(){return Mn(a)},[a]),O=i.useMemo(function(){return f6(D)},[D]),k=i.useMemo(function(){return!r||C!==Yl?n(D,!1):n(wd(D,m),m1&&Ne,xe=function(We){var st;ke(!0),(st=Me.onExpand)===null||st===void 0||st.call(Me,We)},Je=i.useState(0),dt=Y(Je,2),ut=dt[0],Ot=dt[1],Dt=i.useState(0),kt=Y(Dt,2),Ft=kt[0],nt=kt[1],ot=function(We,st){var pt=We.offsetWidth,Kt;Ot(pt),nt(parseInt((Kt=window.getComputedStyle)===null||Kt===void 0?void 0:Kt.call(window,st).fontSize,10)||0)},ft=function(We){var st;Ee(We),Re!==We&&((st=Me.onEllipsis)===null||st===void 0||st.call(Me,We))};i.useEffect(function(){var De=P.current;if(He&&Ne&&De){var We=$e?De.offsetHeight"u"||!De||!Ne||!Le)){var We=new IntersectionObserver(function(){mt(!!De.offsetParent)});return We.observe(De),function(){We.disconnect()}}},[Ne,Le]);var it={};Me.tooltip===!0?it={title:(r=k.text)!==null&&r!==void 0?r:d}:i.isValidElement(Me.tooltip)?it={title:Me.tooltip}:Ye(Me.tooltip)==="object"?it=J({title:(n=k.text)!==null&&n!==void 0?n:d},Me.tooltip):it={title:Me.tooltip};var Ze=i.useMemo(function(){var De=function(st){return["string","number"].includes(Ye(st))};if(!(!He||Ne)){if(De(k.text))return k.text;if(De(d))return d;if(De(g))return g;if(De(it.title))return it.title}},[He,Ne,g,it.title,Ue]);if(N)return i.createElement(l6,{value:(a=k.text)!==null&&a!==void 0?a:typeof d=="string"?d:"",onSave:z,onCancel:j,onEnd:k.onEnd,prefixCls:T,className:s,style:l,direction:x,component:h,maxLength:k.maxLength,autoSize:k.autoSize,enterIcon:k.enterIcon});var Xe=function(){var We=Me.expandable,st=Me.symbol;if(!We)return null;var pt;return st?pt=st:pt=E.expand,i.createElement("a",{key:"expand",className:"".concat(T,"-expand"),onClick:xe,"aria-label":E.expand},pt)},Fe=function(){if(O){var We=k.icon,st=k.tooltip,pt=Mn(st)[0]||E.edit,Kt=typeof pt=="string"?pt:"";return A.includes("icon")?i.createElement(on,{key:"edit",title:st===!1?"":pt},i.createElement(kc,{ref:w,className:"".concat(T,"-edit"),onClick:K,"aria-label":Kt},We||i.createElement(f0,{role:"button"}))):null}},Ae=function(){if(H){var We=Z.tooltips,st=Z.icon,pt=Rd(We),Kt=Rd(st),_t=q?Ci(pt[1],E.copied):Ci(pt[0],E.copy),qt=q?E.copied:E.copy,En=typeof _t=="string"?_t:qt;return i.createElement(on,{key:"copy",title:_t},i.createElement(kc,{className:ve("".concat(T,"-copy"),q&&"".concat(T,"-copy-success")),onClick:ee,"aria-label":En},q?Ci(Kt[1],i.createElement(vv,null),!0):Ci(Kt[0],i.createElement(vu,null),!0)))}},Ie=function(We){return[We&&Xe(),Fe(),Ae()]},Oe=function(We){return[We&&i.createElement("span",{"aria-hidden":!0,key:"ellipsis"},C6),Me.suffix,Ie(We)]};return i.createElement(kr,{onResize:ot,disabled:!Le||Ne},function(De){return i.createElement(g6,{tooltipProps:it,enabledEllipsis:Le,isEllipsis:Ue},i.createElement(oh,J({className:ve(B(B(B(B(B(B({},"".concat(T,"-").concat(u),u),"".concat(T,"-disabled"),c),"".concat(T,"-ellipsis"),He),"".concat(T,"-single-line"),Le&&de===1),"".concat(T,"-ellipsis-single-line"),lt),"".concat(T,"-ellipsis-multiple-line"),$e),s),prefixCls:o,style:J(J({},l),{WebkitLineClamp:$e?de:void 0}),component:h,ref:nu(De,P,t),direction:x,onClick:A.includes("text")?K:void 0,"aria-label":Ze==null?void 0:Ze.toString(),title:g},$),i.createElement(h6,{enabledMeasure:Le&&!Ne,text:d,rows:de,width:ut,fontSize:Ft,onEllipsis:ft},function(We,st){var pt=We;We.length&&st&&Ze&&(pt=i.createElement("span",{key:"show-content","aria-hidden":!0},pt));var Kt=b6(e,i.createElement(i.Fragment,null,pt,Oe(st)));return Kt})))})});const Sl=x6;var S6=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(c){throw c},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o,s=!0,l=!1;return{s:function(){r=r.call(e)},n:function(){var c=r.next();return s=c.done,c},e:function(c){l=!0,o=c},f:function(){try{s||r.return==null||r.return()}finally{if(l)throw o}}}}var I6={locale:"zh_CN",today:"今天",now:"此刻",backToToday:"返回今天",ok:"确定",timeSelect:"选择时间",dateSelect:"选择日期",weekSelect:"选择周",clear:"清除",month:"月",year:"年",previousMonth:"上个月 (翻页上键)",nextMonth:"下个月 (翻页下键)",monthSelect:"选择月份",yearSelect:"选择年份",decadeSelect:"选择年代",yearFormat:"YYYY年",dayFormat:"D日",dateFormat:"YYYY年M月D日",dateTimeFormat:"YYYY年M月D日 HH时mm分ss秒",previousYear:"上一年 (Control键加左方向键)",nextYear:"下一年 (Control键加右方向键)",previousDecade:"上一年代",nextDecade:"下一年代",previousCentury:"上一世纪",nextCentury:"下一世纪"},_6={placeholder:"请选择时间",rangePlaceholder:["开始时间","结束时间"]};const lh=_6;var sh={lang:J({placeholder:"请选择日期",yearPlaceholder:"请选择年份",quarterPlaceholder:"请选择季度",monthPlaceholder:"请选择月份",weekPlaceholder:"请选择周",rangePlaceholder:["开始日期","结束日期"],rangeYearPlaceholder:["开始年份","结束年份"],rangeMonthPlaceholder:["开始月份","结束月份"],rangeQuarterPlaceholder:["开始季度","结束季度"],rangeWeekPlaceholder:["开始周","结束周"]},I6),timePickerLocale:J({},lh)};sh.lang.ok="确定";const kd=sh;var vn="${label}不是一个有效的${type}",L6={locale:"zh-cn",Pagination:am,DatePicker:kd,TimePicker:lh,Calendar:kd,global:{placeholder:"请选择"},Table:{filterTitle:"筛选",filterConfirm:"确定",filterReset:"重置",filterEmptyText:"无筛选项",filterCheckall:"全选",filterSearchPlaceholder:"在筛选项中搜索",selectAll:"全选当页",selectInvert:"反选当页",selectNone:"清空所有",selectionAll:"全选所有",sortTitle:"排序",expand:"展开行",collapse:"关闭行",triggerDesc:"点击降序",triggerAsc:"点击升序",cancelSort:"取消排序"},Modal:{okText:"确定",cancelText:"取消",justOkText:"知道了"},Popconfirm:{cancelText:"取消",okText:"确定"},Transfer:{titles:["",""],searchPlaceholder:"请输入搜索内容",itemUnit:"项",itemsUnit:"项",remove:"删除",selectCurrent:"全选当页",removeCurrent:"删除当页",selectAll:"全选所有",removeAll:"删除全部",selectInvert:"反选当页"},Upload:{uploading:"文件上传中",removeFile:"删除文件",uploadError:"上传错误",previewFile:"预览文件",downloadFile:"下载文件"},Empty:{description:"暂无数据"},Icon:{icon:"图标"},Text:{edit:"编辑",copy:"复制",copied:"复制成功",expand:"展开"},PageHeader:{back:"返回"},Form:{optional:"(可选)",defaultValidateMessages:{default:"字段验证错误${label}",required:"请输入${label}",enum:"${label}必须是其中一个[${enum}]",whitespace:"${label}不能为空字符",date:{format:"${label}日期格式无效",parse:"${label}不能转换为日期",invalid:"${label}是一个无效日期"},types:{string:vn,method:vn,array:vn,object:vn,number:vn,date:vn,boolean:vn,integer:vn,float:vn,regexp:vn,email:vn,url:vn,hex:vn},string:{len:"${label}须为${len}个字符",min:"${label}最少${min}个字符",max:"${label}最多${max}个字符",range:"${label}须在${min}-${max}字符之间"},number:{len:"${label}必须等于${len}",min:"${label}最小值为${min}",max:"${label}最大值为${max}",range:"${label}须在${min}-${max}之间"},array:{len:"须为${len}个${label}",min:"最少${min}个${label}",max:"最多${max}个${label}",range:"${label}数量须在${min}-${max}之间"},pattern:{mismatch:"${label}与模式不匹配${pattern}"}}},Image:{preview:"预览"}};/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */function uh(e,t,r,n){function a(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function l(d){try{c(n.next(d))}catch(f){s(f)}}function u(d){try{c(n.throw(d))}catch(f){s(f)}}function c(d){d.done?o(d.value):a(d.value).then(l,u)}c((n=n.apply(e,t||[])).next())})}function ch(e,t){var r={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,a,o,s;return s={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function l(c){return function(d){return u([c,d])}}function u(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,a&&(o=c[0]&2?a.return:c[0]?a.throw||((o=a.return)&&o.call(a),0):a.next)&&!(o=o.call(a,c[1])).done)return o;switch(a=0,o&&(c=[c[0]&2,o.value]),c[0]){case 0:case 1:o=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,a=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(o=r.trys,!(o=o.length>0&&o[o.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]o||setTimeout(n,l,a)},yh=gh(new Map),bh=yh[0],Q6=yh[1],Ch=lr({onLoadingSlow:Yn,onSuccess:Yn,onError:Yn,onErrorRetry:Z6,onDiscarded:Yn,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:Nd?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:Nd?5e3:3e3,compare:function(e,t){return Co(e)==Co(t)},isPaused:function(){return!1},cache:bh,mutate:Q6,fallback:{}},Y6),xh=function(e,t){var r=lr(e,t);if(t){var n=e.use,a=e.fallback,o=t.use,s=t.fallback;n&&o&&(r.use=n.concat(o)),a&&s&&(r.fallback=lr(a,s))}return r},zs=i.createContext({}),J6=function(e){var t=e.value,r=xh(i.useContext(zs),t),n=t&&t.provider,a=i.useState(function(){return n?gh(n(r.cache||bh),t):rn})[0];return a&&(r.cache=a[0],r.mutate=a[1]),ho(function(){return a?a[2]:rn},[]),i.createElement(zs.Provider,lr(e,{value:r}))},e8=function(e,t){var r=i.useState({})[1],n=i.useRef(e),a=i.useRef({data:!1,error:!1,isValidating:!1}),o=i.useCallback(function(s){var l=!1,u=n.current;for(var c in s){var d=c;u[d]!==s[d]&&(u[d]=s[d],a.current[d]&&(l=!0))}l&&!t.current&&r({})},[]);return ho(function(){n.current=e}),[n,a.current,o]},t8=function(e){return Er(e[1])?[e[0],e[1],e[2]||{}]:[e[0],null,(e[1]===null?e[2]:e[1])||{}]},Sh=function(){return lr(Ch,i.useContext(zs))},n8=function(e){return function(){for(var r=[],n=0;n0;)d=f[v](d);return d(s,l||c.fetcher,c)}},Td=function(e,t,r){var n=t[e]||(t[e]=[]);return n.push(r),function(){var a=n.indexOf(r);a>=0&&(n[a]=n[n.length-1],n.pop())}},ql={dedupe:!0},r8=function(e,t,r){var n=r.cache,a=r.compare,o=r.fallbackData,s=r.suspense,l=r.revalidateOnMount,u=r.refreshInterval,c=r.refreshWhenHidden,d=r.refreshWhenOffline,f=Yr.get(n),v=f[0],m=f[1],h=f[2],g=f[3],y=fh(e),b=y[0],C=y[1],x=y[2],E=i.useRef(!1),P=i.useRef(!1),w=i.useRef(b),T=i.useRef(t),$=i.useRef(r),R=function(){return $.current},D=function(){return R().isVisible()&&R().isOnline()},O=function(U){return n.set(x,lr(n.get(x),U))},k=n.get(b),M=un(o)?r.fallback[b]:o,F=un(k)?M:k,N=n.get(x)||{},I=N.error,L=!E.current,A=function(){return L&&!un(l)?l:R().isPaused()?!1:s?un(F)?!1:r.revalidateIfStale:un(F)||r.revalidateIfStale},_=function(){return!b||!t?!1:N.isValidating?!0:L&&A()},K=_(),z=e8({data:F,error:I,isValidating:K},P),j=z[0],V=z[1],X=z[2],H=i.useCallback(function(U){return uh(void 0,void 0,void 0,function(){var ae,q,ne,ue,G,te,ee,le,re,ge,Pe,me,ce;return ch(this,function(fe){switch(fe.label){case 0:if(ae=T.current,!b||!ae||P.current||R().isPaused())return[2,!1];ue=!0,G=U||{},te=!g[b]||!G.dedupe,ee=function(){return!P.current&&b===w.current&&E.current},le=function(){var ie=g[b];ie&&ie[1]===ne&&delete g[b]},re={isValidating:!1},ge=function(){O({isValidating:!1}),ee()&&X(re)},O({isValidating:!0}),X({isValidating:!0}),fe.label=1;case 1:return fe.trys.push([1,3,,4]),te&&(po(n,b,j.current.data,j.current.error,!0),r.loadingTimeout&&!n.get(b)&&setTimeout(function(){ue&&ee()&&R().onLoadingSlow(b,r)},r.loadingTimeout),g[b]=[ae.apply(void 0,C),Vs()]),ce=g[b],q=ce[0],ne=ce[1],[4,q];case 2:return q=fe.sent(),te&&setTimeout(le,r.dedupingInterval),!g[b]||g[b][1]!==ne?(te&&ee()&&R().onDiscarded(b),[2,!1]):(O({error:rn}),re.error=rn,Pe=h[b],!un(Pe)&&(ne<=Pe[0]||ne<=Pe[1]||Pe[1]===0)?(ge(),te&&ee()&&R().onDiscarded(b),[2,!1]):(a(j.current.data,q)?re.data=j.current.data:re.data=q,a(n.get(b),q)||n.set(b,q),te&&ee()&&R().onSuccess(q,b,r),[3,4]));case 3:return me=fe.sent(),le(),R().isPaused()||(O({error:me}),re.error=me,te&&ee()&&(R().onError(me,b,r),(typeof r.shouldRetryOnError=="boolean"&&r.shouldRetryOnError||Er(r.shouldRetryOnError)&&r.shouldRetryOnError(me))&&D()&&R().onErrorRetry(me,b,r,H,{retryCount:(G.retryCount||0)+1,dedupe:!0}))),[3,4];case 4:return ue=!1,ge(),ee()&&te&&po(n,b,re.data,re.error,!1),[2,!0]}})})},[b]),Z=i.useCallback(ph.bind(rn,n,function(){return w.current}),[]);if(ho(function(){T.current=t,$.current=r}),ho(function(){if(b){var U=b!==w.current,ae=H.bind(rn,ql),q=function(ee,le,re){X(lr({error:le,isValidating:re},a(j.current.data,ee)?rn:{data:ee}))},ne=0,ue=function(ee){if(ee==vh){var le=Date.now();R().revalidateOnFocus&&le>ne&&D()&&(ne=le+R().focusThrottleInterval,ae())}else if(ee==mh)R().revalidateOnReconnect&&D()&&ae();else if(ee==hh)return H()},G=Td(b,m,q),te=Td(b,v,ue);return P.current=!1,w.current=b,E.current=!0,U&&X({data:F,error:I,isValidating:K}),A()&&(un(F)||wl?ae():q6(ae)),function(){P.current=!0,G(),te()}}},[b,H]),ho(function(){var U;function ae(){var ne=Er(u)?u(F):u;ne&&U!==-1&&(U=setTimeout(q,ne))}function q(){!j.current.error&&(c||R().isVisible())&&(d||R().isOnline())?H(ql).then(ae):ae()}return ae(),function(){U&&(clearTimeout(U),U=-1)}},[u,c,d,H]),i.useDebugValue(F),s&&un(F)&&b)throw T.current=t,$.current=r,P.current=!1,un(I)?H(ql):I;return{mutate:Z,get data(){return V.data=!0,F},get error(){return V.error=!0,I},get isValidating(){return V.isValidating=!0,K}}},a8=mo.defineProperty(J6,"default",{value:Ch}),wh=n8(r8);const o8={moneySymbol:"$",form:{lightFilter:{more:"المزيد",clear:"نظف",confirm:"تأكيد",itemUnit:"عناصر"}},tableForm:{search:"ابحث",reset:"إعادة تعيين",submit:"ارسال",collapsed:"مُقلص",expand:"مُوسع",inputPlaceholder:"الرجاء الإدخال",selectPlaceholder:"الرجاء الإختيار"},alert:{clear:"نظف",selected:"محدد",item:"عنصر"},pagination:{total:{range:" ",total:"من",item:"عناصر"}},tableToolBar:{leftPin:"ثبت على اليسار",rightPin:"ثبت على اليمين",noPin:"الغاء التثبيت",leftFixedTitle:"لصق على اليسار",rightFixedTitle:"لصق على اليمين",noFixedTitle:"إلغاء الإلصاق",reset:"إعادة تعيين",columnDisplay:"الأعمدة المعروضة",columnSetting:"الإعدادات",fullScreen:"وضع كامل الشاشة",exitFullScreen:"الخروج من وضع كامل الشاشة",reload:"تحديث",density:"الكثافة",densityDefault:"افتراضي",densityLarger:"أكبر",densityMiddle:"وسط",densitySmall:"مدمج"},stepsForm:{next:"التالي",prev:"السابق",submit:"أنهى"},loginForm:{submitText:"تسجيل الدخول"},editableTable:{action:{save:"أنقذ",cancel:"إلغاء الأمر",delete:"حذف",add:"إضافة صف من البيانات"}},switch:{open:"مفتوح",close:"غلق"}},i8={moneySymbol:"€",form:{lightFilter:{more:"Máis",clear:"Limpar",confirm:"Confirmar",itemUnit:"Elementos"}},tableForm:{search:"Cercar",reset:"Netejar",submit:"Enviar",collapsed:"Expandir",expand:"Col·lapsar",inputPlaceholder:"Introduïu valor",selectPlaceholder:"Seleccioneu valor"},alert:{clear:"Netejar",selected:"Seleccionat",item:"Article"},pagination:{total:{range:" ",total:"de",item:"articles"}},tableToolBar:{leftPin:"Pin a l'esquerra",rightPin:"Pin a la dreta",noPin:"Sense Pin",leftFixedTitle:"Fixat a l'esquerra",rightFixedTitle:"Fixat a la dreta",noFixedTitle:"Sense fixar",reset:"Reiniciar",columnDisplay:"Mostrar Columna",columnSetting:"Configuració",fullScreen:"Pantalla Completa",exitFullScreen:"Sortir Pantalla Completa",reload:"Refrescar",density:"Densitat",densityDefault:"Per Defecte",densityLarger:"Llarg",densityMiddle:"Mitjà",densitySmall:"Compacte"},stepsForm:{next:"Següent",prev:"Anterior",submit:"Finalizar"},loginForm:{submitText:"Entrar"},editableTable:{action:{save:"Gardar",cancel:"Cancelar",delete:"Eliminar",add:"engadir unha fila de datos"}},switch:{open:"aberto",close:"pechar"}},l8={moneySymbol:"€",form:{lightFilter:{more:"Mehr",clear:"Zurücksetzen",confirm:"Bestätigen",itemUnit:"Einträge"}},tableForm:{search:"Suchen",reset:"Zurücksetzen",submit:"Absenden",collapsed:"Zeige mehr",expand:"Zeige weniger",inputPlaceholder:"Bitte eingeben",selectPlaceholder:"Bitte auswählen"},alert:{clear:"Zurücksetzen",selected:"Ausgewählt",item:"Eintrag"},pagination:{total:{range:" ",total:"von",item:"Einträgen"}},tableToolBar:{leftPin:"Links anheften",rightPin:"Rechts anheften",noPin:"Nicht angeheftet",leftFixedTitle:"Links fixiert",rightFixedTitle:"Rechts fixiert",noFixedTitle:"Nicht fixiert",reset:"Zurücksetzen",columnDisplay:"Angezeigte Reihen",columnSetting:"Einstellungen",fullScreen:"Vollbild",exitFullScreen:"Vollbild verlassen",reload:"Aktualisieren",density:"Abstand",densityDefault:"Standard",densityLarger:"Größer",densityMiddle:"Mittel",densitySmall:"Kompakt"},stepsForm:{next:"Weiter",prev:"Zurück",submit:"Abschließen"},loginForm:{submitText:"Anmelden"},editableTable:{action:{save:"Retten",cancel:"Abbrechen",delete:"Löschen",add:"Hinzufügen einer Datenzeile"}},switch:{open:"offen",close:"schließen"}},s8={moneySymbol:"£",form:{lightFilter:{more:"More",clear:"Clear",confirm:"Confirm",itemUnit:"Items"}},tableForm:{search:"Query",reset:"Reset",submit:"Submit",collapsed:"Expand",expand:"Collapse",inputPlaceholder:"Please enter",selectPlaceholder:"Please select"},alert:{clear:"Clear",selected:"Selected",item:"Item"},pagination:{total:{range:" ",total:"of",item:"items"}},tableToolBar:{leftPin:"Pin to left",rightPin:"Pin to right",noPin:"Unpinned",leftFixedTitle:"Fixed the left",rightFixedTitle:"Fixed the right",noFixedTitle:"Not Fixed",reset:"Reset",columnDisplay:"Column Display",columnSetting:"Settings",fullScreen:"Full Screen",exitFullScreen:"Exit Full Screen",reload:"Refresh",density:"Density",densityDefault:"Default",densityLarger:"Larger",densityMiddle:"Middle",densitySmall:"Compact"},stepsForm:{next:"Next",prev:"Previous",submit:"Finish"},loginForm:{submitText:"Login"},editableTable:{action:{save:"Save",cancel:"Cancel",delete:"Delete",add:"add a row of data"}},switch:{open:"open",close:"close"}},u8={moneySymbol:"$",deleteThisLine:"Delete this line",copyThisLine:"Copy this line",form:{lightFilter:{more:"More",clear:"Clear",confirm:"Confirm",itemUnit:"Items"}},tableForm:{search:"Query",reset:"Reset",submit:"Submit",collapsed:"Expand",expand:"Collapse",inputPlaceholder:"Please enter",selectPlaceholder:"Please select"},alert:{clear:"Clear",selected:"Selected",item:"Item"},pagination:{total:{range:" ",total:"of",item:"items"}},tableToolBar:{leftPin:"Pin to left",rightPin:"Pin to right",noPin:"Unpinned",leftFixedTitle:"Fixed the left",rightFixedTitle:"Fixed the right",noFixedTitle:"Not Fixed",reset:"Reset",columnDisplay:"Column Display",columnSetting:"Settings",fullScreen:"Full Screen",exitFullScreen:"Exit Full Screen",reload:"Refresh",density:"Density",densityDefault:"Default",densityLarger:"Larger",densityMiddle:"Middle",densitySmall:"Compact"},stepsForm:{next:"Next",prev:"Previous",submit:"Finish"},loginForm:{submitText:"Login"},editableTable:{onlyOneLineEditor:"Only one line can be edited",action:{save:"Save",cancel:"Cancel",delete:"Delete",add:"add a row of data"}},switch:{open:"open",close:"close"}},c8={moneySymbol:"€",form:{lightFilter:{more:"Más",clear:"Limpiar",confirm:"Confirmar",itemUnit:"artículos"}},tableForm:{search:"Buscar",reset:"Limpiar",submit:"Submit",collapsed:"Expandir",expand:"Colapsar",inputPlaceholder:"Ingrese valor",selectPlaceholder:"Seleccione valor"},alert:{clear:"Limpiar",selected:"Seleccionado",item:"Articulo"},pagination:{total:{range:" ",total:"de",item:"artículos"}},tableToolBar:{leftPin:"Pin a la izquierda",rightPin:"Pin a la derecha",noPin:"Sin Pin",leftFixedTitle:"Fijado a la izquierda",rightFixedTitle:"Fijado a la derecha",noFixedTitle:"Sin Fijar",reset:"Reiniciar",columnDisplay:"Mostrar Columna",columnSetting:"Configuración",fullScreen:"Pantalla Completa",exitFullScreen:"Salir Pantalla Completa",reload:"Refrescar",density:"Densidad",densityDefault:"Por Defecto",densityLarger:"Largo",densityMiddle:"Medio",densitySmall:"Compacto"},stepsForm:{next:"Siguiente",prev:"Anterior",submit:"Finalizar"},loginForm:{submitText:"Entrar"},editableTable:{action:{save:"Guardar",cancel:"Descartar",delete:"Borrar",add:"añadir una fila de datos"}},switch:{open:"abrir",close:"cerrar"}},d8={moneySymbol:"تومان",form:{lightFilter:{more:"بیشتر",clear:"پاک کردن",confirm:"تایید",itemUnit:"مورد"}},tableForm:{search:"جستجو",reset:"بازنشانی",submit:"تایید",collapsed:"نمایش بیشتر",expand:"نمایش کمتر",inputPlaceholder:"پیدا کنید",selectPlaceholder:"انتخاب کنید"},alert:{clear:"پاک سازی",selected:"انتخاب",item:"مورد"},pagination:{total:{range:" ",total:"از",item:"مورد"}},tableToolBar:{leftPin:"سنجاق به چپ",rightPin:"سنجاق به راست",noPin:"سنجاق نشده",leftFixedTitle:"ثابت شده در چپ",rightFixedTitle:"ثابت شده در راست",noFixedTitle:"شناور",reset:"بازنشانی",columnDisplay:"نمایش همه",columnSetting:"تنظیمات",fullScreen:"تمام صفحه",exitFullScreen:"خروج از حالت تمام صفحه",reload:"تازه سازی",density:"تراکم",densityDefault:"پیش فرض",densityLarger:"بزرگ",densityMiddle:"متوسط",densitySmall:"کوچک"},stepsForm:{next:"بعدی",prev:"قبلی",submit:"اتمام"},loginForm:{submitText:"ورود"},editableTable:{action:{save:"ذخیره",cancel:"لغو",delete:"حذف",add:"یک ردیف داده اضافه کنید"}},switch:{open:"باز",close:"نزدیک"}},f8={moneySymbol:"€",form:{lightFilter:{more:"Plus",clear:"Effacer",confirm:"Confirmer",itemUnit:"Items"}},tableForm:{search:"Rechercher",reset:"Réinitialiser",submit:"Envoyer",collapsed:"Agrandir",expand:"Réduire",inputPlaceholder:"Entrer une valeur",selectPlaceholder:"Sélectionner une valeur"},alert:{clear:"Réinitialiser",selected:"Sélectionné",item:"Item"},pagination:{total:{range:" ",total:"sur",item:"éléments"}},tableToolBar:{leftPin:"Épingler à gauche",rightPin:"Épingler à gauche",noPin:"Sans épingle",leftFixedTitle:"Fixer à gauche",rightFixedTitle:"Fixer à droite",noFixedTitle:"Non fixé",reset:"Réinitialiser",columnDisplay:"Affichage colonne",columnSetting:"Réglages",fullScreen:"Plein écran",exitFullScreen:"Quitter Plein écran",reload:"Rafraichir",density:"Densité",densityDefault:"Par défaut",densityLarger:"Larger",densityMiddle:"Moyenne",densitySmall:"Compacte"},stepsForm:{next:"Suivante",prev:"Précédente",submit:"Finaliser"},loginForm:{submitText:"Se connecter"},editableTable:{action:{save:"Sauvegarder",cancel:"Annuler",delete:"Supprimer",add:"ajouter une ligne de données"}},switch:{open:"ouvert",close:"près"}},v8={moneySymbol:"kn",form:{lightFilter:{more:"Više",clear:"Očisti",confirm:"Potvrdi",itemUnit:"Stavke"}},tableForm:{search:"Pretraži",reset:"Poništi",submit:"Potvrdi",collapsed:"Raširi",expand:"Skupi",inputPlaceholder:"Unesite",selectPlaceholder:"Odaberite"},alert:{clear:"Očisti",selected:"Odaberi",item:"stavke"},pagination:{total:{range:" ",total:"od",item:"stavke"}},tableToolBar:{leftPin:"Prikači lijevo",rightPin:"Prikači desno",noPin:"Bez prikačenja",leftFixedTitle:"Fiksiraj lijevo",rightFixedTitle:"Fiksiraj desno",noFixedTitle:"Bez fiksiranja",reset:"Resetiraj",columnDisplay:"Prikaz stupaca",columnSetting:"Postavke",fullScreen:"Puni zaslon",exitFullScreen:"Izađi iz punog zaslona",reload:"Ponovno učitaj",density:"Veličina",densityDefault:"Zadano",densityLarger:"Veliko",densityMiddle:"Srednje",densitySmall:"Malo"},stepsForm:{next:"Sljedeći",prev:"Prethodni",submit:"Kraj"},loginForm:{submitText:"Prijava"},editableTable:{action:{save:"Spremi",cancel:"Odustani",delete:"Obriši",add:"dodajte red podataka"}},switch:{open:"otvori",close:"zatvori"}},m8={moneySymbol:"RP",form:{lightFilter:{more:"Lebih",clear:"Hapus",confirm:"Konfirmasi",itemUnit:"Unit"}},tableForm:{search:"Cari",reset:"Atur ulang",submit:"Kirim",collapsed:"Lebih sedikit",expand:"Lebih banyak",inputPlaceholder:"Masukkan pencarian",selectPlaceholder:"Pilih"},alert:{clear:"Hapus",selected:"Dipilih",item:"Butir"},pagination:{total:{range:" ",total:"Dari",item:"Butir"}},tableToolBar:{leftPin:"Pin kiri",rightPin:"Pin kanan",noPin:"Tidak ada pin",leftFixedTitle:"Rata kiri",rightFixedTitle:"Rata kanan",noFixedTitle:"Tidak tetap",reset:"Atur ulang",columnDisplay:"Tampilan kolom",columnSetting:"Pengaturan",fullScreen:"Layar penuh",exitFullScreen:"Keluar layar penuh",reload:"Atur ulang",density:"Kerapatan",densityDefault:"Standar",densityLarger:"Lebih besar",densityMiddle:"Sedang",densitySmall:"Rapat"},stepsForm:{next:"Selanjutnya",prev:"Sebelumnya",submit:"Selesai"},loginForm:{submitText:"Login"},editableTable:{action:{save:"simpan",cancel:"batal",delete:"hapus",add:"Tambahkan baris data"}},switch:{open:"buka",close:"tutup"}},h8={moneySymbol:"€",form:{lightFilter:{more:"più",clear:"pulisci",confirm:"conferma",itemUnit:"elementi"}},tableForm:{search:"Filtra",reset:"Pulisci",submit:"Invia",collapsed:"Espandi",expand:"Contrai",inputPlaceholder:"Digita",selectPlaceholder:"Seleziona"},alert:{clear:"Rimuovi",selected:"Selezionati",item:"elementi"},pagination:{total:{range:" ",total:"di",item:"elementi"}},tableToolBar:{leftPin:"Fissa a sinistra",rightPin:"Fissa a destra",noPin:"Ripristina posizione",leftFixedTitle:"Fissato a sinistra",rightFixedTitle:"Fissato a destra",noFixedTitle:"Non fissato",reset:"Ripristina",columnDisplay:"Disposizione colonne",columnSetting:"Impostazioni",fullScreen:"Modalità schermo intero",exitFullScreen:"Esci da modalità schermo intero",reload:"Ricarica",density:"Grandezza tabella",densityDefault:"predefinito",densityLarger:"Grande",densityMiddle:"Media",densitySmall:"Compatta"},stepsForm:{next:"successivo",prev:"precedente",submit:"finisci"},loginForm:{submitText:"Accedi"},editableTable:{action:{save:"salva",cancel:"annulla",delete:"Delete",add:"add a row of data"}},switch:{open:"open",close:"chiudi"}},p8={moneySymbol:"¥",form:{lightFilter:{more:"もっと",clear:"明確",confirm:"確認",itemUnit:"項目"}},tableForm:{search:"検索",reset:"リセット",submit:"提交",collapsed:"展開",expand:"収納",inputPlaceholder:"入力してください",selectPlaceholder:"選択してください"},alert:{clear:"クリア",selected:"選択した",item:"項目"},pagination:{total:{range:"記事",total:"/合計",item:" "}},tableToolBar:{leftPin:"左に固定",rightPin:"右に固定",noPin:"キャンセル",leftFixedTitle:"左に固定された項目",rightFixedTitle:"右に固定された項目",noFixedTitle:"固定されてない項目",reset:"リセット",columnDisplay:"表示列",columnSetting:"列表示設定",fullScreen:"フルスクリーン",exitFullScreen:"終了",reload:"更新",density:"行高",densityDefault:"デフォルト",densityLarger:"默认",densityMiddle:"中",densitySmall:"小"},stepsForm:{next:"次のステップ",prev:"前",submit:"送信"},loginForm:{submitText:"ログイン"},editableTable:{action:{save:"救う",cancel:"キャンセル",delete:"削除",add:"1行のデータを追加します"}},switch:{open:"オープン",close:"近い"}},g8={moneySymbol:"₩",form:{lightFilter:{more:"더보기",clear:"취소",confirm:"확인",itemUnit:"건수"}},tableForm:{search:"조회",reset:"초기화",submit:"제출",collapsed:"확장",expand:"닫기",inputPlaceholder:"입력해 주세요",selectPlaceholder:"선택해 주세요"},alert:{clear:"취소",selected:"선택",item:"건"},pagination:{total:{range:" ",total:"/ 총",item:"건"}},tableToolBar:{leftPin:"왼쪽으로 핀",rightPin:"오른쪽으로 핀",noPin:"핀 제거",leftFixedTitle:"왼쪽으로 고정",rightFixedTitle:"오른쪽으로 고정",noFixedTitle:"비고정",reset:"초기화",columnDisplay:"컬럼 표시",columnSetting:"설정",fullScreen:"전체 화면",exitFullScreen:"전체 화면 취소",reload:"다시 읽기",density:"여백",densityDefault:"기본",densityLarger:"많은 여백",densityMiddle:"중간 여백",densitySmall:"좁은 여백"},stepsForm:{next:"다음",prev:"이전",submit:"종료"},loginForm:{submitText:"로그인"},editableTable:{action:{save:"저장",cancel:"취소",delete:"삭제",add:"데이터 행 추가"}},switch:{open:"열",close:"가까 운"}},y8={moneySymbol:"₮",form:{lightFilter:{more:"Илүү",clear:"Цэвэрлэх",confirm:"Баталгаажуулах",itemUnit:"Нэгжүүд"}},tableForm:{search:"Хайх",reset:"Шинэчлэх",submit:"Илгээх",collapsed:"Өргөтгөх",expand:"Хураах",inputPlaceholder:"Утга оруулна уу",selectPlaceholder:"Утга сонгоно уу"},alert:{clear:"Цэвэрлэх",selected:"Сонгогдсон",item:"Нэгж"},pagination:{total:{range:" ",total:"Нийт",item:"мөр"}},tableToolBar:{leftPin:"Зүүн тийш бэхлэх",rightPin:"Баруун тийш бэхлэх",noPin:"Бэхлэхгүй",leftFixedTitle:"Зүүн зэрэгцүүлэх",rightFixedTitle:"Баруун зэрэгцүүлэх",noFixedTitle:"Зэрэгцүүлэхгүй",reset:"Шинэчлэх",columnDisplay:"Баганаар харуулах",columnSetting:"Тохиргоо",fullScreen:"Бүтэн дэлгэцээр",exitFullScreen:"Бүтэн дэлгэц цуцлах",reload:"Шинэчлэх",density:"Хэмжээ",densityDefault:"Хэвийн",densityLarger:"Том",densityMiddle:"Дунд",densitySmall:"Жижиг"},stepsForm:{next:"Дараах",prev:"Өмнөх",submit:"Дуусгах"},loginForm:{submitText:"Нэвтрэх"},editableTable:{action:{save:"Хадгалах",cancel:"Цуцлах",delete:"Устгах",add:"Мөр нэмэх"}},switch:{open:"Нээх",close:"Хаах"}},b8={moneySymbol:"RM",form:{lightFilter:{more:"Lebih banyak",clear:"Jelas",confirm:"Mengesahkan",itemUnit:"Item"}},tableForm:{search:"Cari",reset:"Menetapkan semula",submit:"Hantar",collapsed:"Kembang",expand:"Kuncup",inputPlaceholder:"Sila masuk",selectPlaceholder:"Sila pilih"},alert:{clear:"Padam",selected:"Dipilih",item:"Item"},pagination:{total:{range:" ",total:"daripada",item:"item"}},tableToolBar:{leftPin:"Pin ke kiri",rightPin:"Pin ke kanan",noPin:"Tidak pin",leftFixedTitle:"Tetap ke kiri",rightFixedTitle:"Tetap ke kanan",noFixedTitle:"Tidak Tetap",reset:"Menetapkan semula",columnDisplay:"Lajur",columnSetting:"Settings",fullScreen:"Full Screen",exitFullScreen:"Keluar Full Screen",reload:"Muat Semula",density:"Densiti",densityDefault:"Biasa",densityLarger:"Besar",densityMiddle:"Tengah",densitySmall:"Kecil"},stepsForm:{next:"Seterusnya",prev:"Sebelumnya",submit:"Selesai"},loginForm:{submitText:"Log Masuk"},editableTable:{action:{save:"Simpan",cancel:"Membatalkan",delete:"Menghapuskan",add:"tambah baris data"}},switch:{open:"Terbuka",close:"Tutup"}},C8={moneySymbol:"zł",form:{lightFilter:{more:"Więcej",clear:"Wyczyść",confirm:"Potwierdź",itemUnit:"Ilość"}},tableForm:{search:"Szukaj",reset:"Reset",submit:"Zatwierdź",collapsed:"Pokaż wiecej",expand:"Pokaż mniej",inputPlaceholder:"Proszę podać",selectPlaceholder:"Proszę wybrać"},alert:{clear:"Wyczyść",selected:"Wybrane",item:"Wpis"},pagination:{total:{range:" ",total:"z",item:"Wpisów"}},tableToolBar:{leftPin:"Przypnij do lewej",rightPin:"Przypnij do prawej",noPin:"Odepnij",leftFixedTitle:"Przypięte do lewej",rightFixedTitle:"Przypięte do prawej",noFixedTitle:"Nieprzypięte",reset:"Reset",columnDisplay:"Wyświetlane wiersze",columnSetting:"Ustawienia",fullScreen:"Pełen ekran",exitFullScreen:"Zamknij pełen ekran",reload:"Odśwież",density:"Odstęp",densityDefault:"Standard",densityLarger:"Wiekszy",densityMiddle:"Sredni",densitySmall:"Kompaktowy"},stepsForm:{next:"Weiter",prev:"Zurück",submit:"Abschließen"},loginForm:{submitText:"Zaloguj się"},editableTable:{action:{save:"Zapisać",cancel:"Anuluj",delete:"Usunąć",add:"dodawanie wiersza danych"}},switch:{open:"otwierać",close:"zamykać"}},x8={moneySymbol:"R$",form:{lightFilter:{more:"Mais",clear:"Limpar",confirm:"Confirmar",itemUnit:"Itens"}},tableForm:{search:"Filtrar",reset:"Limpar",submit:"Confirmar",collapsed:"Expandir",expand:"Colapsar",inputPlaceholder:"Por favor insira",selectPlaceholder:"Por favor selecione"},alert:{clear:"Limpar",selected:"Selecionado(s)",item:"Item(s)"},pagination:{total:{range:" ",total:"de",item:"itens"}},tableToolBar:{leftPin:"Fixar à esquerda",rightPin:"Fixar à direita",noPin:"Desfixado",leftFixedTitle:"Fixado à esquerda",rightFixedTitle:"Fixado à direita",noFixedTitle:"Não fixado",reset:"Limpar",columnDisplay:"Mostrar Coluna",columnSetting:"Configurações",fullScreen:"Tela Cheia",exitFullScreen:"Sair da Tela Cheia",reload:"Atualizar",density:"Densidade",densityDefault:"Padrão",densityLarger:"Largo",densityMiddle:"Médio",densitySmall:"Compacto"},stepsForm:{next:"Próximo",prev:"Anterior",submit:"Enviar"},loginForm:{submitText:"Entrar"},editableTable:{action:{save:"Salvar",cancel:"Cancelar",delete:"Apagar",add:"adicionar uma linha de dados"}},switch:{open:"abrir",close:"fechar"}},S8={moneySymbol:"₽",form:{lightFilter:{more:"Еще",clear:"Очистить",confirm:"ОК",itemUnit:"Позиции"}},tableForm:{search:"Найти",reset:"Сброс",submit:"Отправить",collapsed:"Развернуть",expand:"Свернуть",inputPlaceholder:"Введите значение",selectPlaceholder:"Выберите значение"},alert:{clear:"Очистить",selected:"Выбрано",item:"элементов"},pagination:{total:{range:" ",total:"из",item:"элементов"}},tableToolBar:{leftPin:"Закрепить слева",rightPin:"Закрепить справа",noPin:"Открепить",leftFixedTitle:"Закреплено слева",rightFixedTitle:"Закреплено справа",noFixedTitle:"Не закреплено",reset:"Сброс",columnDisplay:"Отображение столбца",columnSetting:"Настройки",fullScreen:"Полный экран",exitFullScreen:"Выйти из полноэкранного режима",reload:"Обновить",density:"Размер",densityDefault:"По умолчанию",densityLarger:"Большой",densityMiddle:"Средний",densitySmall:"Сжатый"},stepsForm:{next:"Следующий",prev:"Предыдущий",submit:"Завершить"},loginForm:{submitText:"Вход"},editableTable:{action:{save:"Сохранить",cancel:"Отменить",delete:"Удалить",add:"добавить ряд данных"}},switch:{open:"Открытый чемпионат мира по теннису",close:"По адресу:"}},w8={moneySymbol:"RSD",form:{lightFilter:{more:"Više",clear:"Očisti",confirm:"Potvrdi",itemUnit:"Stavke"}},tableForm:{search:"Pronađi",reset:"Resetuj",submit:"Pošalji",collapsed:"Proširi",expand:"Skupi",inputPlaceholder:"Molimo unesite",selectPlaceholder:"Molimo odaberite"},alert:{clear:"Očisti",selected:"Odabrano",item:"Stavka"},pagination:{total:{range:" ",total:"od",item:"stavki"}},tableToolBar:{leftPin:"Zakači levo",rightPin:"Zakači desno",noPin:"Nije zakačeno",leftFixedTitle:"Fiksirano levo",rightFixedTitle:"Fiksirano desno",noFixedTitle:"Nije fiksirano",reset:"Resetuj",columnDisplay:"Prikaz kolona",columnSetting:"Podešavanja",fullScreen:"Pun ekran",exitFullScreen:"Zatvori pun ekran",reload:"Osveži",density:"Veličina",densityDefault:"Podrazumevana",densityLarger:"Veća",densityMiddle:"Srednja",densitySmall:"Kompaktna"},stepsForm:{next:"Dalje",prev:"Nazad",submit:"Gotovo"},loginForm:{submitText:"Prijavi se"},editableTable:{action:{save:"Sačuvaj",cancel:"Poništi",delete:"Obriši",add:"dodajte red podataka"}},switch:{open:"Отворите",close:"Затворите"}},E8={moneySymbol:"₺",form:{lightFilter:{more:"Daha Fazla",clear:"Temizle",confirm:"Onayla",itemUnit:"Öğeler"}},tableForm:{search:"Filtrele",reset:"Sıfırla",submit:"Gönder",collapsed:"Daha fazla",expand:"Daha az",inputPlaceholder:"Filtrelemek için bir değer girin",selectPlaceholder:"Filtrelemek için bir değer seçin"},alert:{clear:"Temizle",selected:"Seçili",item:"Öğe"},pagination:{total:{range:" ",total:"Toplam",item:"Öğe"}},tableToolBar:{leftPin:"Sola sabitle",rightPin:"Sağa sabitle",noPin:"Sabitlemeyi kaldır",leftFixedTitle:"Sola sabitlendi",rightFixedTitle:"Sağa sabitlendi",noFixedTitle:"Sabitlenmedi",reset:"Sıfırla",columnDisplay:"Kolon Görünümü",columnSetting:"Ayarlar",fullScreen:"Tam Ekran",exitFullScreen:"Tam Ekrandan Çık",reload:"Yenile",density:"Kalınlık",densityDefault:"Varsayılan",densityLarger:"Büyük",densityMiddle:"Orta",densitySmall:"Küçük"},stepsForm:{next:"Sıradaki",prev:"Önceki",submit:"Gönder"},loginForm:{submitText:"Giriş Yap"},editableTable:{action:{save:"Kaydet",cancel:"Vazgeç",delete:"Sil",add:"foegje in rige gegevens ta"}},switch:{open:"açık",close:"kapatmak"}},P8={moneySymbol:"₫",form:{lightFilter:{more:"Nhiều hơn",clear:"Trong",confirm:"Xác nhận",itemUnit:"Mục"}},tableForm:{search:"Tìm kiếm",reset:"Làm lại",submit:"Gửi đi",collapsed:"Mở rộng",expand:"Thu gọn",inputPlaceholder:"nhập dữ liệu",selectPlaceholder:"Vui lòng chọn"},alert:{clear:"Xóa",selected:"đã chọn",item:"mục"},pagination:{total:{range:" ",total:"trên",item:"mặt hàng"}},tableToolBar:{leftPin:"Ghim trái",rightPin:"Ghim phải",noPin:"Bỏ ghim",leftFixedTitle:"Cố định trái",rightFixedTitle:"Cố định phải",noFixedTitle:"Chưa cố định",reset:"Làm lại",columnDisplay:"Cột hiển thị",columnSetting:"Cấu hình",fullScreen:"Chế độ toàn màn hình",exitFullScreen:"Thoát chế độ toàn màn hình",reload:"Làm mới",density:"Mật độ hiển thị",densityDefault:"Mặc định",densityLarger:"Mặc định",densityMiddle:"Trung bình",densitySmall:"Chật"},stepsForm:{next:"Sau",prev:"Trước",submit:"Kết thúc"},loginForm:{submitText:"Đăng nhập"},editableTable:{action:{save:"Cứu",cancel:"Hủy",delete:"Xóa",add:"thêm một hàng dữ liệu"}},switch:{open:"mở",close:"đóng"}},R8={moneySymbol:"¥",deleteThisLine:"删除此行",copyThisLine:"复制此行",form:{lightFilter:{more:"更多筛选",clear:"清除",confirm:"确认",itemUnit:"项"}},tableForm:{search:"查询",reset:"重置",submit:"提交",collapsed:"展开",expand:"收起",inputPlaceholder:"请输入",selectPlaceholder:"请选择"},alert:{clear:"取消选择",selected:"已选择",item:"项"},pagination:{total:{range:"第",total:"条/总共",item:"条"}},tableToolBar:{leftPin:"固定在列首",rightPin:"固定在列尾",noPin:"不固定",leftFixedTitle:"固定在左侧",rightFixedTitle:"固定在右侧",noFixedTitle:"不固定",reset:"重置",columnDisplay:"列展示",columnSetting:"列设置",fullScreen:"全屏",exitFullScreen:"退出全屏",reload:"刷新",density:"密度",densityDefault:"正常",densityLarger:"默认",densityMiddle:"中等",densitySmall:"紧凑"},stepsForm:{next:"下一步",prev:"上一步",submit:"提交"},loginForm:{submitText:"登录"},editableTable:{onlyOneLineEditor:"只能同时编辑一行",action:{save:"保存",cancel:"取消",delete:"删除",add:"添加一行数据"}},switch:{open:"打开",close:"关闭"}},k8={moneySymbol:"NT$",form:{lightFilter:{more:"更多篩選",clear:"清除",confirm:"確認",itemUnit:"項"}},tableForm:{search:"查詢",reset:"重置",submit:"提交",collapsed:"展開",expand:"收起",inputPlaceholder:"請輸入",selectPlaceholder:"請選擇"},alert:{clear:"取消選擇",selected:"已選擇",item:"項"},pagination:{total:{range:"第",total:"條/總共",item:"條"}},tableToolBar:{leftPin:"固定到左邊",rightPin:"固定到右邊",noPin:"不固定",leftFixedTitle:"固定在左側",rightFixedTitle:"固定在右側",noFixedTitle:"不固定",reset:"重置",columnDisplay:"列展示",columnSetting:"列設置",fullScreen:"全屏",exitFullScreen:"退出全屏",reload:"刷新",density:"密度",densityDefault:"正常",densityLarger:"默認",densityMiddle:"中等",densitySmall:"緊湊"},stepsForm:{next:"下一個",prev:"以前的",submit:"完成"},loginForm:{submitText:"登入"},editableTable:{action:{save:"保存",cancel:"取消",delete:"刪除",add:"添加一行數據"}},switch:{open:"打開",close:"關閉"}};function N8(e,t,r){var n=t.replace(/\[(\d+)\]/g,".$1").split("."),a=e,o=r,s=Mi(n),l;try{for(s.s();!(l=s.n()).done;){var u=l.value;if(o=Object(a)[u],a=Object(a)[u],o===void 0)return r}}catch(c){s.e(c)}finally{s.f()}return o}var Ut=function(t,r){return{getMessage:function(a,o){return N8(r,a,o)||o},locale:t}},M8=Ut("mn_MN",y8),T8=Ut("ar_EG",o8),El=Ut("zh_CN",R8),F8=Ut("en_US",u8),$8=Ut("en_GB",s8),O8=Ut("vi_VN",P8),D8=Ut("it_IT",h8),I8=Ut("ja_JP",p8),_8=Ut("es_ES",c8),L8=Ut("ca_ES",i8),A8=Ut("ru_RU",S8),j8=Ut("sr_RS",w8),K8=Ut("ms_MY",b8),V8=Ut("zh_TW",k8),z8=Ut("fr_FR",f8),B8=Ut("pt_BR",x8),H8=Ut("ko_KR",g8),W8=Ut("id_ID",m8),U8=Ut("de_DE",l8),Y8=Ut("fa_IR",d8),G8=Ut("tr_TR",E8),q8=Ut("pl_PL",C8),X8=Ut("hr_",v8),wa={"mn-MN":M8,"ar-EG":T8,"zh-CN":El,"en-US":F8,"en-GB":$8,"vi-VN":O8,"it-IT":D8,"ja-JP":I8,"es-ES":_8,"ca-ES":L8,"ru-RU":A8,"sr-RS":j8,"ms-MY":K8,"zh-TW":V8,"fr-FR":z8,"pt-BR":B8,"ko-KR":H8,"id-ID":W8,"de-DE":U8,"fa-IR":Y8,"tr-TR":G8,"pl-PL":q8,"hr-HR":X8},Z8=Object.keys(wa),Pl=Q.createContext({intl:p(p({},El),{},{locale:"default"}),valueTypeMap:{}}),Q8=Pl.Consumer,J8=Pl.Provider,Eh=function(t){if(!t)return"zh-CN";var r=t.toLocaleLowerCase();return Z8.find(function(n){var a=n.toLocaleLowerCase();return a.includes(r)})},eE=function(){var t=Sh(),r=t.cache;return i.useEffect(function(){return function(){r.clear()}},[]),null},Lu=function(t){var r=t.children,n=t.autoClearCache,a=n===void 0?!1:n,o=i.useContext(yt.ConfigContext),s=o.locale,l=s===void 0?yt:Q.Fragment,u=S.jsx(Q8,{children:function(d){var f,v=s==null?void 0:s.locale,m=Eh(v),h=v&&((f=d.intl)===null||f===void 0?void 0:f.locale)==="default"?wa[m]:d.intl||wa[m],g=s===void 0?{locale:L6}:{};return S.jsx(l,p(p({},g),{},{children:S.jsx(J8,{value:p(p({},d),{},{intl:h||El}),children:S.jsxs(S.Fragment,{children:[a&&S.jsx(eE,{}),r]})})}))}});return a?S.jsx(a8,{value:{provider:function(){return new Map}},children:u}):u};function Tt(){var e=i.useContext(yt.ConfigContext),t=e.locale,r=i.useContext(Pl),n=r.intl;return n&&n.locale!=="default"?n:t!=null&&t.locale?wa[Eh(t.locale)]:El}var tE=function(t){var r=Tt(),n=t.onClear,a=t.onConfirm,o=t.disabled,s=t.footerRender,l=i.useContext(yt.ConfigContext),u=l.getPrefixCls,c=u("pro-core-dropdown-footer"),d=[S.jsx(An,{style:{visibility:n?"visible":"hidden"},type:"link",size:"small",disabled:o,onClick:function(m){n&&n(m),m.stopPropagation()},children:r.getMessage("form.lightFilter.clear","清除")},"clear"),S.jsx(An,{"data-type":"confirm",type:"primary",size:"small",onClick:a,disabled:o,children:r.getMessage("form.lightFilter.confirm","确认")},"confirm")];if(s===!1||(s==null?void 0:s(a,n))===!1)return null;var f=(s==null?void 0:s(a,n))||d;return S.jsx("div",{className:c,onClick:function(m){return m.target.getAttribute("data-type")!=="confirm"&&m.stopPropagation()},children:f})};const nE=tE;var rE=function(e){Cn(r,e);var t=xn(r);function r(){var n;Sn(this,r);for(var a=arguments.length,o=new Array(a),s=0;s1,V=w.getMessage("form.lightFilter.itemUnit","项");return typeof L=="string"&&L.length>A&&j?"...".concat(M.length).concat(V):""},K=_();return S.jsxs("span",{title:typeof L=="string"?L:void 0,style:{display:"inline-flex",alignItems:"center"},children:[I,S.jsx("span",{style:{paddingLeft:4},children:typeof L=="string"?L==null||(F=L.toString())===null||F===void 0||(N=F.substr)===null||N===void 0?void 0:N.call(F,0,A):L}),K]})}return k||v};return S.jsxs("span",{className:ve(P,"".concat(P,"-").concat(u),(n={},B(n,"".concat(P,"-active"),!!s||s===0),B(n,"".concat(P,"-disabled"),c),B(n,"".concat(P,"-bordered"),y),B(n,"".concat(P,"-allow-clear"),C),n),m),style:h,ref:$,children:[D(a,s),(s||s===0)&&C&&S.jsx(Qi,{role:"button",title:"清除",className:ve("".concat(P,"-icon"),"".concat(P,"-close")),onClick:function(k){o&&!c&&o(),k.stopPropagation()},ref:T}),S.jsx(yo,{className:ve("".concat(P,"-icon"),"".concat(P,"-arrow"))})]})};const aa=Q.forwardRef(oE);var iE=function(t){var r=t.children,n=t.label,a=t.footer,o=t.disabled,s=t.onVisibleChange,l=t.visible,u=t.footerRender,c=t.placement,d=i.useContext(yt.ConfigContext),f=d.getPrefixCls,v=f("pro-core-field-dropdown");return S.jsx(Mo,{disabled:o,placement:c,trigger:["click"],open:l,onOpenChange:s,menu:{items:[]},dropdownRender:function(){return S.jsxs("div",{className:"".concat(v,"-overlay"),children:[S.jsx("div",{className:"".concat(v,"-content"),children:r}),a&&S.jsx(nE,p({disabled:o,footerRender:u},a))]})},children:S.jsx("span",{className:"".concat(v,"-label"),children:n})})};const Ph=iE;var lE=["label","rules","name","children","popoverProps"],sE=["errorType","rules","name","popoverProps","children"],Rh={marginTop:-5,marginBottom:-5,marginLeft:0,marginRight:0},uE=function(t){var r=t.inputProps,n=t.input,a=t.extra,o=t.errorList,s=t.popoverProps,l=i.useState(!1),u=Y(l,2),c=u[0],d=u[1],f=i.useState([]),v=Y(f,2),m=v[0],h=v[1],g=i.useContext(yt.ConfigContext),y=g.getPrefixCls;i.useEffect(function(){r.validateStatus!=="validating"&&h(r.errors)},[r.errors,r.validateStatus]);var b=y();return S.jsx(ko,p(p({trigger:(s==null?void 0:s.trigger)||"focus",placement:(s==null?void 0:s.placement)||"topRight",visible:m.length<1?!1:c,onVisibleChange:function(x){x!==c&&d(x)},getPopupContainer:s==null?void 0:s.getPopupContainer,getTooltipContainer:s==null?void 0:s.getTooltipContainer,content:S.jsxs("div",{className:"".concat(b,"-form-item-with-help"),children:[r.validateStatus==="validating"?S.jsx(Oa,{}):null,o]})},s),{},{children:S.jsxs("div",{children:[n,a]})}),"popover")},cE=function(t){t.label;var r=t.rules,n=t.name,a=t.children,o=t.popoverProps,s=ze(t,lE);return S.jsx(Ht.Item,p(p({preserve:!1,name:n,rules:r,hasFeedback:!0,_internalItemRender:{mark:"pro_table_render",render:function(u,c){return S.jsx(uE,p({inputProps:u,popoverProps:o},c))}}},s),{},{style:p(p({},Rh),s==null?void 0:s.style),children:a}))};const dE=function(e){var t=e.errorType,r=e.rules,n=e.name,a=e.popoverProps,o=e.children,s=ze(e,sE);return n&&(r!=null&&r.length)&&t==="popover"?S.jsx(cE,p(p({name:n,rules:r,popoverProps:a},s),{},{children:o})):S.jsx(Ht.Item,p(p({rules:r},s),{},{style:p(p({},Rh),s.style),name:n,children:o}))};var fE=function(t){var r=t.label,n=t.tooltip,a=t.ellipsis,o=t.subTitle,s=i.useContext(yt.ConfigContext),l=s.getPrefixCls;if(!n&&!o)return S.jsx(S.Fragment,{children:r});var u=l("pro-core-label-tip"),c=typeof n=="string"||Q.isValidElement(n)?{title:n}:n,d=(c==null?void 0:c.icon)||S.jsx(Up,{});return S.jsxs("div",{className:u,onMouseDown:function(v){return v.stopPropagation()},onMouseLeave:function(v){return v.stopPropagation()},onMouseMove:function(v){return v.stopPropagation()},children:[S.jsx("div",{className:ve("".concat(u,"-title"),B({},"".concat(u,"-title-ellipsis"),a)),children:r}),o&&S.jsx("div",{className:"".concat(u,"-subtitle"),children:o}),n&&S.jsx(on,p(p({},c),{},{children:S.jsx("span",{className:"".concat(u,"-icon"),children:d})}))]})};const Jr=Q.memo(fE);var vE=Q.createContext({});const Bo=vE;var mE=function(t){return t==null};const Ea=mE;var kh={time:"HH:mm:ss",timeRange:"HH:mm:ss",date:"YYYY-MM-DD",dateWeek:"YYYY-wo",dateMonth:"YYYY-MM",dateQuarter:"YYYY-\\QQ",dateYear:"YYYY",dateRange:"YYYY-MM-DD",dateTime:"YYYY-MM-DD HH:mm:ss",dateTimeRange:"YYYY-MM-DD HH:mm:ss"};function Fd(e){return Object.prototype.toString.call(e)==="[object Object]"}function hE(e){if(Fd(e)===!1)return!1;var t=e.constructor;if(t===void 0)return!0;var r=t.prototype;return!(Fd(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)}var $d=function(t,r,n){if(!r)return t;if($t.isMoment(t)){if(r==="number")return t.valueOf();if(r==="string")return t.format(kh[n]||"YYYY-MM-DD HH:mm:ss");if(typeof r=="string"&&r!=="string")return t.format(r);if(typeof r=="function")return r(t,n)}return t},pE=function e(t,r,n,a,o){var s={};return typeof window>"u"||Ye(t)!=="object"||Ea(t)||t instanceof Blob||Array.isArray(t)?t:(Object.keys(t).forEach(function(l){var u=o?[o,l].flat(1):[l],c=pn(n,u)||"text",d="text",f;typeof c=="string"?d=c:c&&(d=c.valueType,f=c.dateFormat);var v=t[l];if(!(Ea(v)&&a)){if(hE(v)&&!Array.isArray(v)&&!$t.isMoment(v)){s[l]=e(v,r,n,a,[l]);return}if(Array.isArray(v)){s[l]=v.map(function(m,h){return $t.isMoment(m)?$d(m,f||r,d):e(m,r,n,a,[l,"".concat(h)])});return}s[l]=$d(v,f||r,d)}}),s)};const gE=pE;var Od=function(t,r){return typeof r=="function"?r($t(t)):$t(t).format(r)},yE=function(t,r){var n=Array.isArray(t)?t:[],a=Y(n,2),o=a[0],s=a[1],l,u;Array.isArray(r)?(l=r[0],u=r[1]):(l=r,u=r);var c=o?Od(o,l):"",d=s?Od(s,u):"",f=c&&d?"".concat(c," ~ ").concat(d):"";return f};const bE=yE;var CE=function(t){var r;return!!(!(t==null||(r=t.valueType)===null||r===void 0)&&r.toString().startsWith("date")||(t==null?void 0:t.valueType)==="select"||t!=null&&t.valueEnum)},xE=function(t,r,n){if(r.copyable||r.ellipsis){var a=r.copyable&&n?{text:n,tooltips:["",""]}:void 0,o=CE(r),s=r.ellipsis&&n?{tooltip:o?S.jsx("div",{className:"pro-table-tooltip-text",children:t}):n}:!1;return S.jsx(D6.Text,{style:{width:"100%",margin:0,padding:0},title:"",copyable:a,ellipsis:s,children:t})}return t};function gn(e){if(typeof e=="function"){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1&&arguments[1]!==void 0?arguments[1]:100,r=arguments.length>2?arguments[2]:void 0,n=i.useState(e),a=Y(n,2),o=a[0],s=a[1],l=ju(e);return i.useEffect(function(){var u=setTimeout(function(){s(l.current)},t);return function(){return clearTimeout(u)}},r?[t].concat(Ke(r)):void 0),o}function Gn(e,t,r,n){if(e===t)return!0;if(e&&t&&Ye(e)==="object"&&Ye(t)==="object"){if(e.constructor!==t.constructor)return!1;var a,o,s;if(Array.isArray(e)){if(a=e.length,a!=t.length)return!1;for(o=a;o--!==0;)if(!Gn(e[o],t[o],r,n))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;var l=Mi(e.entries()),u;try{for(l.s();!(u=l.n()).done;)if(o=u.value,!t.has(o[0]))return!1}catch(h){l.e(h)}finally{l.f()}var c=Mi(e.entries()),d;try{for(c.s();!(d=c.n()).done;)if(o=d.value,!Gn(o[1],t.get(o[0]),r,n))return!1}catch(h){c.e(h)}finally{c.f()}return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;var f=Mi(e.entries()),v;try{for(f.s();!(v=f.n()).done;)if(o=v.value,!t.has(o[0]))return!1}catch(h){f.e(h)}finally{f.f()}return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(a=e.length,a!=t.length)return!1;for(o=a;o--!==0;)if(e[o]!==t[o])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&e.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&e.toString)return e.toString()===t.toString();if(s=Object.keys(e),a=s.length,a!==Object.keys(t).length)return!1;for(o=a;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,s[o]))return!1;for(o=a;o--!==0;){var m=s[o];if(!(r!=null&&r.includes(m))&&!(m==="_owner"&&e.$$typeof)&&!Gn(e[m],t[m],r,n))return n&&console.log(m),!1}return!0}return e!==e&&t!==t}var PE=function(t,r,n){return Gn(t,r,n)};function Nh(e,t){var r=i.useRef();return PE(e,r.current,t)||(r.current=e),r.current}function ji(e,t,r){i.useEffect(e,Nh(t||[],r))}function Mh(e,t,r,n){var a=Au(xt(Ve().mark(function o(){return Ve().wrap(function(l){for(;;)switch(l.prev=l.next){case 0:e();case 1:case"end":return l.stop()}},o)})),n||16);i.useEffect(function(){a.run()},Nh(t||[],r))}var RE=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,kE=function(){return typeof window<"u"&&typeof window.document<"u"&&typeof window.matchMedia<"u"&&!RE};const Th=kE;var Xl=0;function NE(e){var t=i.useState(function(){return e.proFieldKey?e.proFieldKey.toString():(Xl+=1,Xl.toString())}),r=Y(t,1),n=r[0],a=i.useRef(n),o=function(){var c=xt(Ve().mark(function d(){var f,v;return Ve().wrap(function(h){for(;;)switch(h.prev=h.next){case 0:return h.next=2,(f=e.request)===null||f===void 0?void 0:f.call(e,e.params,e);case 2:return v=h.sent,h.abrupt("return",v);case 4:case"end":return h.stop()}},d)}));return function(){return c.apply(this,arguments)}}();i.useEffect(function(){return function(){Xl+=1}},[]);var s=wh([a.current,e.params],o,{revalidateOnFocus:!1,shouldRetryOnError:!1,revalidateOnReconnect:!1}),l=s.data,u=s.error;return[l||u]}var ME=function(t){var r=i.useRef();return i.useEffect(function(){r.current=t}),r.current};const pa=ME;var TE=function(t){var r=!1;return(typeof t=="string"&&t.startsWith("date")&&!t.endsWith("Range")||t==="select"||t==="time")&&(r=!0),r};const FE=TE;var Rl=function(){for(var t={},r=arguments.length,n=new Array(r),a=0;a0&&arguments[0]!==void 0?arguments[0]:21;if(typeof window>"u"||!window.crypto)return(Dd+=1).toFixed(0);for(var r="",n=crypto.getRandomValues(new Uint8Array(t));t--;){var a=63&n[t];r+=a<36?a.toString(36):a<62?(a-26).toString(36).toUpperCase():a<63?"_":"-"}return r},Ku=function(){return typeof window>"u"?Id():window.crypto&&window.crypto.randomUUID&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Id()},$E=function(t){if(t&&t!==!0)return t};const Fh=$E;var OE=function(t){var r={};if(Object.keys(t||{}).forEach(function(n){t[n]!==void 0&&(r[n]=t[n])}),!(Object.keys(r).length<1))return r};const Jt=OE;var DE=function(t){var r={};return Object.keys(t||{}).forEach(function(n){var a;Array.isArray(t[n])&&((a=t[n])===null||a===void 0?void 0:a.length)===0||t[n]!==void 0&&(r[n]=t[n])}),r};const IE=DE;var _E=function e(t,r){return Ea(t)||$t.isMoment(t)?t:Array.isArray(t)?t.map(function(n){return e(n,r)}):typeof t=="number"?$t(t):$t(t,r)};const Ho=_E;var LE=["colon","dependencies","extra","getValueFromEvent","getValueProps","hasFeedback","help","htmlFor","initialValue","noStyle","label","labelAlign","labelCol","name","preserve","normalize","required","rules","shouldUpdate","trigger","validateFirst","validateStatus","validateTrigger","valuePropName","wrapperCol","hidden","addonBefore","addonAfter"];function AE(e){var t={};return LE.forEach(function(r){e[r]!==void 0&&(t[r]=e[r])}),t}var jE="valueType request plain renderFormItem render text formItemProps valueEnum",KE="fieldProps isDefaultDom groupProps contentRender submitterProps submitter";function $h(e){var t="".concat(jE," ").concat(KE).split(/[\s\n]+/),r={};return Object.keys(e||{}).forEach(function(n){t.includes(n)||(r[n]=e[n])}),r}function VE(e){return Ye(e)!=="object"?!1:e===null?!0:!(Q.isValidElement(e)||e.constructor===RegExp||e instanceof Map||e instanceof Set||e instanceof HTMLElement||e instanceof Blob||e instanceof File||Array.isArray(e))}var zE=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=Object.keys(r).reduce(function(l,u){var c=r[u];return Ea(c)||(l[u]=c),l},{});if(Object.keys(a).length<1||typeof window>"u"||Ye(t)!=="object"||Ea(t)||t instanceof Blob)return t;var o=Array.isArray(t)?[]:{},s=function l(u,c){var d=Array.isArray(u),f=d?[]:{};return u==null||u===void 0?f:(Object.keys(u).forEach(function(v){var m=c?[c,v].flat(1):[v].flat(1),h=u[v],g=pn(a,m),y=function x(E){return Array.isArray(E)&&E.forEach(function(P,w){P&&(typeof P=="function"&&(h[w]=P(h,v,u)),Ye(P)==="object"&&!Array.isArray(P)&&Object.keys(P).forEach(function(T){if(typeof P[T]=="function"){var $=P[T](u[v][w][T],v,u);h[w][T]=Ye($)==="object"?$[T]:$}}),Ye(P)==="object"&&Array.isArray(P)&&x(P))}),v},b=function(){var E=typeof g=="function"?g==null?void 0:g(h,v,u):y(g);if(Array.isArray(E)){f=yn(f,E,h);return}Ye(E)==="object"&&!Array.isArray(o)?o=p(p({},o),E):Ye(E)==="object"&&Array.isArray(o)?f=p(p({},f),E):E&&(f=yn(f,[E],h))};if(g&&typeof g=="function"&&b(),!(typeof window>"u")){if(VE(h)){var C=l(h,m);if(Object.keys(C).length<1)return;f=yn(f,[v],C);return}b()}}),n?f:u)};return o=Array.isArray(t)&&Array.isArray(o)?Ke(s(t)):Rl({},s(t),o),o};const BE=zE;function cn(e,t){var r=Rt(e,t),n=Y(r,2),a=n[0],o=n[1];return[a,o]}var HE=["map_row_parentKey"],WE=["map_row_parentKey","map_row_key"],UE=["map_row_key"],Hn=function(t){return Array.isArray(t)?t.join(","):t};function oo(e,t){var r,n=e.getRowKey,a=e.row,o=e.data,s=e.childrenColumnName,l=(r=Hn(e.key))===null||r===void 0?void 0:r.toString(),u=new Map;function c(f,v,m){f.forEach(function(h,g){var y=(m||0)*10+g,b=n(h,y).toString();h&&Ye(h)==="object"&&s in h&&c(h[s]||[],b,y);var C=p(p({},h),{},{map_row_key:b,children:void 0,map_row_parentKey:v});delete C.children,v||delete C.map_row_parentKey,u.set(b,C)})}t==="top"&&u.set(l,p(p({},u.get(l)),a)),c(o),t==="update"&&u.set(l,p(p({},u.get(l)),a)),t==="delete"&&u.delete(l);var d=function(v){var m=new Map,h=[],g=function(){v.forEach(function(b){if(b.map_row_parentKey&&!b.map_row_key){var C=b.map_row_parentKey,x=ze(b,HE);m.set(C,[].concat(Ke(m.get(C)||[]),[x]))}})};return t==="top"&&g(),v.forEach(function(y){if(y.map_row_parentKey&&y.map_row_key){var b=y.map_row_parentKey,C=y.map_row_key,x=ze(y,WE);m.has(C)&&(x[s]=m.get(C)),m.set(b,[].concat(Ke(m.get(b)||[]),[x]))}}),t==="update"&&g(),v.forEach(function(y){if(!y.map_row_parentKey){var b=y.map_row_key,C=ze(y,UE);if(b&&m.has(b)){var x=p(p({},C),{},B({},s,m.get(b)));h.push(x);return}h.push(C)}}),h};return d(u)}function YE(e){var t=e.recordKey,r=e.onSave,n=e.row,a=e.children,o=e.newLineConfig,s=e.editorType,l=e.tableName,u=i.useContext(Bo),c=Ht.useFormInstance(),d=cn(!1),f=Y(d,2),v=f[0],m=f[1];return S.jsxs("a",{onClick:function(){var h=xt(Ve().mark(function y(b){var C,x,E,P,w,T,$,R,D;return Ve().wrap(function(k){for(;;)switch(k.prev=k.next){case 0:return b.stopPropagation(),b.preventDefault(),k.prev=2,x=s==="Map",E=[l,Array.isArray(t)?t[0]:t].map(function(M){return M==null?void 0:M.toString()}).flat(1).filter(Boolean),m(!0),k.next=8,c.validateFields(E,{recursive:!0});case 8:return P=((C=u.getFieldFormatValue)===null||C===void 0?void 0:C.call(u,E))||c.getFieldValue(E),Array.isArray(t)&&t.length>1&&(w=Zf(t),T=w.slice(1),$=pn(P,T),yn(P,T,$)),R=x?yn({},E,P,!0):P,k.next=13,r==null?void 0:r(t,Rl({},n,R),n,o);case 13:return D=k.sent,m(!1),k.abrupt("return",D);case 18:return k.prev=18,k.t0=k.catch(2),console.log(k.t0),m(!1),k.abrupt("return",null);case 23:case"end":return k.stop()}},y,null,[[2,18]])}));function g(y){return h.apply(this,arguments)}return g}(),children:[v?S.jsx(Oa,{style:{marginRight:8}}):null,a||"保存"]},"save")}var GE=function(t){var r=t.recordKey,n=t.onDelete,a=t.row,o=t.children,s=t.deletePopconfirmMessage,l=cn(function(){return!1}),u=Y(l,2),c=u[0],d=u[1],f=Bt(xt(Ve().mark(function v(){var m;return Ve().wrap(function(g){for(;;)switch(g.prev=g.next){case 0:return g.prev=0,d(!0),g.next=4,n==null?void 0:n(r,a);case 4:return m=g.sent,d(!1),g.abrupt("return",m);case 9:return g.prev=9,g.t0=g.catch(0),console.log(g.t0),d(!1),g.abrupt("return",null);case 14:case"end":return g.stop()}},v,null,[[0,9]])})));return o!==!1?S.jsx(v0,{title:s,onConfirm:function(){return f()},children:S.jsxs("a",{children:[c?S.jsx(Oa,{style:{marginRight:8}}):null,o||"删除"]})},"delete"):null},qE=function(t){var r=t.recordKey,n=t.tableName,a=t.newLineConfig,o=t.editorType,s=t.onCancel,l=t.cancelEditable,u=t.row,c=t.cancelText,d=i.useContext(Bo),f=Ht.useFormInstance();return S.jsx("a",{onClick:function(){var v=xt(Ve().mark(function h(g){var y,b,C,x,E,P;return Ve().wrap(function(T){for(;;)switch(T.prev=T.next){case 0:return g.stopPropagation(),g.preventDefault(),b=o==="Map",C=[n,r].flat(1).filter(Boolean),x=((y=d.getFieldFormatValue)===null||y===void 0?void 0:y.call(d,C))||f.getFieldValue(C),E=b?yn({},C,x):x,T.next=8,s==null?void 0:s(r,E,u,a);case 8:return P=T.sent,l(r),f.setFieldsValue(B({},r,b?pn(u,C):u)),T.abrupt("return",P);case 12:case"end":return T.stop()}},h)}));function m(h){return v.apply(this,arguments)}return m}(),children:c||"取消"},"cancel")};function XE(e,t){var r=t.recordKey,n=t.newLineConfig,a=t.saveText,o=t.deleteText;return[S.jsx(YE,p(p({},t),{},{row:e,children:a}),"save"+r),(n==null?void 0:n.options.recordKey)!==r?S.jsx(GE,p(p({},t),{},{row:e,children:o}),"delete"+r):null,S.jsx(qE,p(p({},t),{},{row:e}),"cancel"+r)]}function ZE(e){var t=i.useState(void 0),r=Y(t,2),n=r[0],a=r[1],o=i.useRef(new Map),s=i.useRef(void 0);Mh(function(){var N=new Map,I=function L(A,_){A==null||A.forEach(function(K,z){var j,V=_==null?z.toString():_+"_"+z.toString();N.set(V,Hn(e.getRowKey(K,-1))),N.set((j=Hn(e.getRowKey(K,-1)))===null||j===void 0?void 0:j.toString(),V),e.childrenColumnName&&K[e.childrenColumnName]&&L(K[e.childrenColumnName],V)})};I(e.dataSource),o.current=N},[e.dataSource]),s.current=n;var l=e.type||"single",u=Ym(e.dataSource,"children",e.getRowKey),c=Y(u,1),d=c[0],f=Rt([],{value:e.editableKeys,onChange:e.onChange?function(N){var I;e==null||(I=e.onChange)===null||I===void 0||I.call(e,N.filter(function(L){return L!==void 0}),N.map(function(L){return d(L)}).filter(function(L){return L!==void 0}))}:void 0}),v=Y(f,2),m=v[0],h=v[1],g=i.useMemo(function(){var N=l==="single"?m==null?void 0:m.slice(0,1):m;return new Set(N)},[(m||[]).join(","),l]),y=pa(m),b=Bt(function(N){var I,L,A,_,K=(I=e.getRowKey(N,N.index))===null||I===void 0||(L=I.toString)===null||L===void 0?void 0:L.call(I),z=(A=e.getRowKey(N,-1))===null||A===void 0||(_=A.toString)===null||_===void 0?void 0:_.call(A),j=m.map(function(H){return H==null?void 0:H.toString()}),V=(y==null?void 0:y.map(function(H){return H==null?void 0:H.toString()}))||[],X=e.tableName&&!!(V!=null&&V.includes(z))||!!(V!=null&&V.includes(K));return{recordKey:z,isEditable:e.tableName&&(j==null?void 0:j.includes(z))||(j==null?void 0:j.includes(K)),preIsEditable:X}}),C=Bt(function(N){return g.size>0&&l==="single"&&e.onlyOneLineEditorAlertMessage!==!1?(Ll.warn(e.onlyOneLineEditorAlertMessage||"只能同时编辑一行"),!1):(g.add(N),h(Array.from(g)),!0)}),x=Bt(function(){var N=xt(Ve().mark(function I(L,A){var _,K;return Ve().wrap(function(j){for(;;)switch(j.prev=j.next){case 0:if(_=Hn(L).toString(),K=o.current.get(_),!(!g.has(_)&&K&&(A??!0)&&e.tableName)){j.next=5;break}return x(K,!1),j.abrupt("return");case 5:return n&&n.options.recordKey===L&&a(void 0),g.delete(_),g.delete(Hn(L)),h(Array.from(g)),j.abrupt("return",!0);case 10:case"end":return j.stop()}},I)}));return function(I,L){return N.apply(this,arguments)}}()),E=Au(xt(Ve().mark(function N(){var I,L,A,_,K=arguments;return Ve().wrap(function(j){for(;;)switch(j.prev=j.next){case 0:for(L=K.length,A=new Array(L),_=0;_0&&l==="single"&&e.onlyOneLineEditorAlertMessage!==!1)return Ll.warn(e.onlyOneLineEditorAlertMessage||"只能同时编辑一行"),!1;var L=e.getRowKey(N,-1);if(!L)throw tn(!!L,`请设置 recordCreatorProps.record 并返回一个唯一的key - https://procomponents.ant.design/components/editable-table#editable-%E6%96%B0%E5%BB%BA%E8%A1%8C`),new Error("请设置 recordCreatorProps.record 并返回一个唯一的key");if(g.add(L),h(Array.from(g)),(I==null?void 0:I.newRecordType)==="dataSource"||e.tableName){var A,_={data:e.dataSource,getRowKey:e.getRowKey,row:p(p({},N),{},{map_row_parentKey:I!=null&&I.parentKey?(A=Hn(I==null?void 0:I.parentKey))===null||A===void 0?void 0:A.toString():void 0}),key:L,childrenColumnName:e.childrenColumnName||"children"};e.setDataSource(oo(_,(I==null?void 0:I.position)==="top"?"top":"update"))}else a({defaultValue:N,options:p(p({},I),{},{recordKey:L})});return!0}),T=Tt(),$=(e==null?void 0:e.saveText)||T.getMessage("editableTable.action.save","保存"),R=(e==null?void 0:e.deleteText)||T.getMessage("editableTable.action.delete","删除"),D=(e==null?void 0:e.cancelText)||T.getMessage("editableTable.action.cancel","取消"),O=Bt(function(){var N=xt(Ve().mark(function I(L,A,_,K){var z,j,V,X,H,Z,U;return Ve().wrap(function(q){for(;;)switch(q.prev=q.next){case 0:return X=K||s.current||{},H=X.options,q.next=3,e==null||(z=e.onSave)===null||z===void 0?void 0:z.call(e,L,A,_,K);case 3:if(Z=q.sent,x(L),!(!(H!=null&&H.parentKey)&&(H==null?void 0:H.recordKey)===L)){q.next=8;break}return(H==null?void 0:H.position)==="top"?e.setDataSource([A].concat(Ke(e.dataSource))):e.setDataSource([].concat(Ke(e.dataSource),[A])),q.abrupt("return",Z);case 8:return U={data:e.dataSource,getRowKey:e.getRowKey,row:H?p(p({},A),{},{map_row_parentKey:(j=Hn((V=H==null?void 0:H.parentKey)!==null&&V!==void 0?V:""))===null||j===void 0?void 0:j.toString()}):A,key:L,childrenColumnName:e.childrenColumnName||"children"},e.setDataSource(oo(U,(H==null?void 0:H.position)==="top"?"top":"update")),q.abrupt("return",Z);case 11:case"end":return q.stop()}},I)}));return function(I,L,A,_){return N.apply(this,arguments)}}()),k=Bt(function(){var N=xt(Ve().mark(function I(L,A){var _,K,z;return Ve().wrap(function(V){for(;;)switch(V.prev=V.next){case 0:return K={data:e.dataSource,getRowKey:e.getRowKey,row:A,key:L,childrenColumnName:e.childrenColumnName||"children"},V.next=3,e==null||(_=e.onDelete)===null||_===void 0?void 0:_.call(e,L,A);case 3:return z=V.sent,V.next=6,x(L);case 6:return e.setDataSource(oo(K,"delete")),V.abrupt("return",z);case 8:case"end":return V.stop()}},I)}));return function(I,L){return N.apply(this,arguments)}}()),M=Bt(function(){var N=xt(Ve().mark(function I(L,A,_,K){var z,j;return Ve().wrap(function(X){for(;;)switch(X.prev=X.next){case 0:return X.next=2,e==null||(z=e.onCancel)===null||z===void 0?void 0:z.call(e,L,A,_,K);case 2:return j=X.sent,X.abrupt("return",j);case 4:case"end":return X.stop()}},I)}));return function(I,L,A,_){return N.apply(this,arguments)}}()),F=function(I){var L=e.getRowKey(I,I.index),A={saveText:$,cancelText:D,deleteText:R,addEditRecord:w,recordKey:L,cancelEditable:x,index:I.index,tableName:e.tableName,newLineConfig:n,onCancel:M,onDelete:k,onSave:O,editableKeys:m,setEditableRowKeys:h,deletePopconfirmMessage:e.deletePopconfirmMessage||"".concat(T.getMessage("deleteThisLine","删除此行"),"?")},_=XE(I,A);return e.actionRender?e.actionRender(I,A,{save:_[0],delete:_[1],cancel:_[2]}):_};return{editableKeys:m,setEditableRowKeys:h,isEditable:b,actionRender:F,startEditable:C,cancelEditable:x,addEditRecord:w,newLineRecord:n,preEditableKeys:y,onValuesChange:P}}var QE={Success:function(t){var r=t.children;return S.jsx(Dn,{status:"success",text:r})},Error:function(t){var r=t.children;return S.jsx(Dn,{status:"error",text:r})},Default:function(t){var r=t.children;return S.jsx(Dn,{status:"default",text:r})},Processing:function(t){var r=t.children;return S.jsx(Dn,{status:"processing",text:r})},Warning:function(t){var r=t.children;return S.jsx(Dn,{status:"warning",text:r})},success:function(t){var r=t.children;return S.jsx(Dn,{status:"success",text:r})},error:function(t){var r=t.children;return S.jsx(Dn,{status:"error",text:r})},default:function(t){var r=t.children;return S.jsx(Dn,{status:"default",text:r})},processing:function(t){var r=t.children;return S.jsx(Dn,{status:"processing",text:r})},warning:function(t){var r=t.children;return S.jsx(Dn,{status:"warning",text:r})}},JE=function(t){var r=t.color,n=t.children;return S.jsx(Dn,{color:r,text:n})};const eP=QE;var tP=["label","prefixCls","onChange","value","mode","children","defaultValue","size","showSearch","disabled","style","className","bordered","options","onSearch","allowClear","labelInValue","fieldNames","lightLabel","labelTrigger"],_d=function(t,r){return Ye(r)!=="object"?t[r]||r:t[r==null?void 0:r.value]||r.label},nP=function(t,r){var n=t.label,a=t.prefixCls,o=t.onChange,s=t.value,l=t.mode;t.children,t.defaultValue;var u=t.size,c=t.showSearch,d=t.disabled,f=t.style,v=t.className,m=t.bordered,h=t.options,g=t.onSearch,y=t.allowClear,b=t.labelInValue,C=t.fieldNames,x=t.lightLabel,E=t.labelTrigger,P=ze(t,tP),w=t.placeholder,T=w===void 0?n:w,$=C||{},R=$.label,D=R===void 0?"label":R,O=$.value,k=O===void 0?"value":O,M=i.useContext(yt.ConfigContext),F=M.getPrefixCls,N=F("pro-field-select-light-select"),I=i.useState(!1),L=Y(I,2),A=L[0],_=L[1],K=i.useState(""),z=Y(K,2),j=z[0],V=z[1],X=i.useMemo(function(){var Z={};return h==null||h.forEach(function(U){var ae=U[D],q=U[k];Z[q]=ae||q}),Z},[D,h,k]),H=Array.isArray(s)?s.map(function(Z){return _d(X,Z)}):_d(X,s);return S.jsxs("div",{className:ve(N,B({},"".concat(N,"-searchable"),c),v),style:f,onClick:function(U){var ae,q,ne;if(!d){var ue=x==null||(ae=x.current)===null||ae===void 0||(q=ae.labelRef)===null||q===void 0||(ne=q.current)===null||ne===void 0?void 0:ne.contains(U.target);_(ue?!A:!0)}},children:[S.jsx(Tr,p(p({},P),{},{allowClear:y,value:s,mode:l,labelInValue:b,size:u,disabled:d,onChange:function(U,ae){o==null||o(U,ae),l!=="multiple"&&setTimeout(function(){_(!1)},0)},bordered:m,showSearch:c,onSearch:g,style:f,dropdownRender:function(U){return S.jsxs("div",{ref:r,children:[c&&S.jsx("div",{style:{margin:"4px 8px"},children:S.jsx(Nn,{value:j,allowClear:y,onChange:function(q){V(q.target.value.toLowerCase()),g==null||g(q.target.value)},onKeyDown:function(q){q.stopPropagation()},style:{width:"100%"},prefix:S.jsx(sv,{})})}),U]})},open:A,onDropdownVisibleChange:function(U){U||setTimeout(function(){V("")},0),E||_(U)},prefixCls:a,options:j?h==null?void 0:h.filter(function(Z){var U,ae,q,ne,ue;return((U=String(Z[D]))===null||U===void 0||(ae=U.toLowerCase())===null||ae===void 0?void 0:ae.includes(j))||((q=Z[k])===null||q===void 0||(ne=q.toString())===null||ne===void 0||(ue=ne.toLowerCase())===null||ue===void 0?void 0:ue.includes(j))}):h})),S.jsx(aa,{ellipsis:!0,size:u,label:n,placeholder:T,disabled:d,expanded:A,bordered:m,allowClear:y,value:H||(s==null?void 0:s.label)||s,onClear:function(){o==null||o(void 0,void 0)},ref:x})]})};const rP=Q.forwardRef(nP);var aP=["optionItemRender","mode","onSearch","onFocus","onChange","autoClearSearchValue","searchOnFocus","resetAfterSelect","fetchDataOnSearch","optionFilterProp","optionLabelProp","className","disabled","options","fetchData","resetData","prefixCls","onClear","searchValue","showSearch","fieldNames"],oP=Tr.Option,iP=Tr.OptGroup,lP=function(t,r){var n=t.optionItemRender,a=t.mode,o=t.onSearch,s=t.onFocus,l=t.onChange,u=t.autoClearSearchValue,c=t.searchOnFocus,d=c===void 0?!1:c,f=t.resetAfterSelect,v=f===void 0?!1:f,m=t.fetchDataOnSearch,h=m===void 0?!0:m,g=t.optionFilterProp,y=g===void 0?"label":g,b=t.optionLabelProp,C=b===void 0?"label":b,x=t.className,E=t.disabled,P=t.options,w=t.fetchData,T=t.resetData,$=t.prefixCls,R=t.onClear,D=t.searchValue,O=t.showSearch,k=t.fieldNames,M=ze(t,aP),F=k||{},N=F.label,I=N===void 0?"label":N,L=F.value,A=L===void 0?"value":L,_=F.options,K=_===void 0?"options":_,z=i.useState(D),j=Y(z,2),V=j[0],X=j[1],H=i.useRef();i.useImperativeHandle(r,function(){return H.current}),i.useEffect(function(){if(M.autoFocus){var G;H==null||(G=H.current)===null||G===void 0||G.focus()}},[M.autoFocus]),i.useEffect(function(){X(D)},[D]);var Z=i.useContext(yt.ConfigContext),U=Z.getPrefixCls,ae=U("pro-filed-search-select",$),q=ve(ae,x,B({},"".concat(ae,"-disabled"),E)),ne=function(te,ee){return Array.isArray(te)&&te.length>0?te.map(function(le,re){var ge=ee==null?void 0:ee[re],Pe=(ge==null?void 0:ge["data-item"])||{};return p(p({},Pe),le)}):[]},ue=function G(te){return te.map(function(ee){var le,re=ee.disabled,ge=ee.className,Pe=ee.optionType,me=ee[I],ce=ee[A],fe=(le=ee[K])!==null&&le!==void 0?le:[];return Pe==="optGroup"||ee.options?S.jsx(iP,{label:me,children:G(fe)},ce):i.createElement(oP,p(p({},ee),{},{value:ce,key:ce||(me==null?void 0:me.toString()),disabled:re,"data-item":ee,className:"".concat(ae,"-option ").concat(ge||""),label:me}),(n==null?void 0:n(ee))||me)})};return S.jsx(Tr,p(p({ref:H,className:q,allowClear:!0,autoClearSearchValue:u,disabled:E,mode:a,showSearch:O,searchValue:V,optionFilterProp:y,optionLabelProp:C,onClear:function(){R==null||R(),w(""),O&&X("")}},M),{},{onSearch:O?function(G){h&&w(G),o==null||o(G),X(G)}:void 0,onChange:function(te,ee){O&&u&&(V||w(""),o==null||o(""),X(""));for(var le=arguments.length,re=new Array(le>2?le-2:0),ge=2;ge0&&arguments[0]!==void 0?arguments[0]:[],r=[];return(0,h7.default)(t,function(n){Array.isArray(n)?e(n).map(function(a){return r.push(a)}):(0,v7.default)(n)?(0,d7.default)(n,function(a,o){a===!0&&r.push(o),r.push(o+"-"+a)}):(0,u7.default)(n)&&r.push(n)}),r};Yo.default=p7;var Go={};function g7(e,t){for(var r=-1,n=e==null?0:e.length;++r1&&arguments[1]!==void 0?arguments[1]:[],n=t.default&&(0,w9.default)(t.default)||{};return r.map(function(a){var o=t[a];return o&&(0,x9.default)(o,function(s,l){n[l]||(n[l]={}),n[l]=E9({},n[l],o[l])}),a}),n};Go.default=P9;var Zo={};Object.defineProperty(Zo,"__esModule",{value:!0});Zo.autoprefix=void 0;var R9=Vu,Yd=N9(R9),k9=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:"span";return function(n){I9(a,n);function a(){var o,s,l,u;D9(this,a);for(var c=arguments.length,d=Array(c),f=0;f1&&arguments[1]!==void 0?arguments[1]:"span";return function(n){V9(a,n);function a(){var o,s,l,u;K9(this,a);for(var c=arguments.length,d=Array(c),f=0;f1&&arguments[1]!==void 0?arguments[1]:!0;n[s]=l};return t===0&&a("first-child"),t===r-1&&a("last-child"),(t===0||t%2===0)&&a("even"),Math.abs(t%2)===1&&a("odd"),a("nth-child",t),n};Hu.default=B9;Object.defineProperty(Rn,"__esModule",{value:!0});Rn.ReactCSS=Rn.loop=Rn.handleActive=Rn.handleHover=Rn.hover=void 0;var H9=Yo,W9=Va(H9),U9=Go,Y9=Va(U9),G9=Zo,q9=Va(G9),X9=Qo,Qh=Va(X9),Z9=Jo,Q9=Va(Z9),J9=Hu,eN=Va(J9);function Va(e){return e&&e.__esModule?e:{default:e}}Rn.hover=Qh.default;Rn.handleHover=Qh.default;Rn.handleActive=Q9.default;Rn.loop=eN.default;var tN=Rn.ReactCSS=function(t){for(var r=arguments.length,n=Array(r>1?r-1:0),a=1;a1?r[a-1]:void 0,s=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,s&&YN(r[0],r[1],s)&&(o=a<3?void 0:o,a=1),t=Object(t);++nl?v=1:v=Math.round(f*100/l)/100,r.a!==v)return{h:r.h,s:r.s,l:r.l,a:v,source:"rgb"}}else{var m;if(d<0?m=0:d>s?m=1:m=Math.round(d*100/s)/100,a!==m)return{h:r.h,s:r.s,l:r.l,a:m,source:"rgb"}}return null},Jl={},nM=function(t,r,n,a){if(typeof document>"u"&&!a)return null;var o=a?new a:document.createElement("canvas");o.width=n*2,o.height=n*2;var s=o.getContext("2d");return s?(s.fillStyle=t,s.fillRect(0,0,o.width,o.height),s.fillStyle=r,s.fillRect(0,0,n,n),s.translate(n,n),s.fillRect(0,0,n,n),o.toDataURL()):null},rM=function(t,r,n,a){var o="".concat(t,"-").concat(r,"-").concat(n).concat(a?"-server":"");if(Jl[o])return Jl[o];var s=nM(t,r,n,a);return Jl[o]=s,s};function xo(e){"@babel/helpers - typeof";return xo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},xo(e)}function ef(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function Si(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Vi(e){return Vi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},Vi(e)}var gM=function(e){fM(r,e);var t=vM(r);function r(){var n;uM(this,r);for(var a=arguments.length,o=new Array(a),s=0;ss)f=0;else{var v=-(d*100/s)+100;f=360*v/100}if(n.h!==f)return{h:f,s:n.s,l:n.l,a:n.a,source:"hsl"}}else{var m;if(c<0)m=0;else if(c>o)m=359;else{var h=c*100/o;m=360*h/100}if(n.h!==m)return{h:m,s:n.s,l:n.l,a:n.a,source:"hsl"}}return null};function Ra(e){"@babel/helpers - typeof";return Ra=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ra(e)}function bM(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function rf(e,t){for(var r=0;r"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function zi(e){return zi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},zi(e)}var NM=function(e){wM(r,e);var t=EM(r);function r(){var n;bM(this,r);for(var a=arguments.length,o=new Array(a),s=0;so&&(c=o),d<0?d=0:d>s&&(d=s);var f=c/o,v=1-d/s;return{h:r.h,s:f,v,a:r.a,source:"hsv"}};function ka(e){"@babel/helpers - typeof";return ka=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ka(e)}function _M(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function af(e,t){for(var r=0;r"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Bi(e){return Bi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},Bi(e)}var WM=function(e){KM(r,e);var t=VM(r);function r(n){var a;return _M(this,r),a=t.call(this,n),a.handleChange=function(o){typeof a.props.onChange=="function"&&a.throttle(a.props.onChange,IM(o,a.props.hsl,a.container),o)},a.handleMouseDown=function(o){a.handleChange(o);var s=a.getContainerRenderWindow();s.addEventListener("mousemove",a.handleChange),s.addEventListener("mouseup",a.handleMouseUp)},a.handleMouseUp=function(){a.unbindEventListeners()},a.throttle=DM(function(o,s,l){o(s,l)},50),a}return LM(r,[{key:"componentWillUnmount",value:function(){this.throttle.cancel(),this.unbindEventListeners()}},{key:"getContainerRenderWindow",value:function(){for(var a=this.container,o=window;!o.document.contains(a)&&o.parent!==o;)o=o.parent;return o}},{key:"unbindEventListeners",value:function(){var a=this.getContainerRenderWindow();a.removeEventListener("mousemove",this.handleChange),a.removeEventListener("mouseup",this.handleMouseUp)}},{key:"render",value:function(){var a=this,o=this.props.style||{},s=o.color,l=o.white,u=o.black,c=o.pointer,d=o.circle,f=$r({default:{color:{absolute:"0px 0px 0px 0px",background:"hsl(".concat(this.props.hsl.h,",100%, 50%)"),borderRadius:this.props.radius},white:{absolute:"0px 0px 0px 0px",borderRadius:this.props.radius},black:{absolute:"0px 0px 0px 0px",boxShadow:this.props.shadow,borderRadius:this.props.radius},pointer:{position:"absolute",top:"".concat(-(this.props.hsv.v*100)+100,"%"),left:"".concat(this.props.hsv.s*100,"%"),cursor:"default"},circle:{width:"4px",height:"4px",boxShadow:`0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3), - 0 0 1px 2px rgba(0,0,0,.4)`,borderRadius:"50%",cursor:"hand",transform:"translate(-2px, -2px)"}},custom:{color:s,white:l,black:u,pointer:c,circle:d}},{custom:!!this.props.style});return Q.createElement("div",{style:f.color,ref:function(m){return a.container=m},onMouseDown:this.handleMouseDown,onTouchMove:this.handleChange,onTouchStart:this.handleChange},Q.createElement("style",null,` - .saturation-white { - background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0)); - background: linear-gradient(to right, #fff, rgba(255,255,255,0)); - } - .saturation-black { - background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0)); - background: linear-gradient(to top, #000, rgba(0,0,0,0)); - } - `),Q.createElement("div",{style:f.white,className:"saturation-white"},Q.createElement("div",{style:f.black,className:"saturation-black"}),Q.createElement("div",{style:f.pointer},this.props.pointer?Q.createElement(this.props.pointer,this.props):Q.createElement("div",{style:f.circle}))))}}]),r}(i.PureComponent||i.Component),UM=zh,YM=Vh,GM=_h,qM=sr;function XM(e,t){var r=qM(e)?UM:YM;return r(e,GM(t))}var ZM=XM,QM=ZM;const JM=Da(QM);function Hi(e){"@babel/helpers - typeof";return Hi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Hi(e)}var eT=/^\s+/,tT=/\s+$/;function at(e,t){if(e=e||"",t=t||{},e instanceof at)return e;if(!(this instanceof at))return new at(e,t);var r=nT(e);this._originalInput=e,this._r=r.r,this._g=r.g,this._b=r.b,this._a=r.a,this._roundA=Math.round(100*this._a)/100,this._format=t.format||r.format,this._gradientType=t.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=r.ok}at.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},getLuminance:function(){var t=this.toRgb(),r,n,a,o,s,l;return r=t.r/255,n=t.g/255,a=t.b/255,r<=.03928?o=r/12.92:o=Math.pow((r+.055)/1.055,2.4),n<=.03928?s=n/12.92:s=Math.pow((n+.055)/1.055,2.4),a<=.03928?l=a/12.92:l=Math.pow((a+.055)/1.055,2.4),.2126*o+.7152*s+.0722*l},setAlpha:function(t){return this._a=rp(t),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var t=lf(this._r,this._g,this._b);return{h:t.h*360,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=lf(this._r,this._g,this._b),r=Math.round(t.h*360),n=Math.round(t.s*100),a=Math.round(t.v*100);return this._a==1?"hsv("+r+", "+n+"%, "+a+"%)":"hsva("+r+", "+n+"%, "+a+"%, "+this._roundA+")"},toHsl:function(){var t=of(this._r,this._g,this._b);return{h:t.h*360,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=of(this._r,this._g,this._b),r=Math.round(t.h*360),n=Math.round(t.s*100),a=Math.round(t.l*100);return this._a==1?"hsl("+r+", "+n+"%, "+a+"%)":"hsla("+r+", "+n+"%, "+a+"%, "+this._roundA+")"},toHex:function(t){return sf(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(t){return iT(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return"#"+this.toHex8(t)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(zt(this._r,255)*100)+"%",g:Math.round(zt(this._g,255)*100)+"%",b:Math.round(zt(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(zt(this._r,255)*100)+"%, "+Math.round(zt(this._g,255)*100)+"%, "+Math.round(zt(this._b,255)*100)+"%)":"rgba("+Math.round(zt(this._r,255)*100)+"%, "+Math.round(zt(this._g,255)*100)+"%, "+Math.round(zt(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:yT[sf(this._r,this._g,this._b,!0)]||!1},toFilter:function(t){var r="#"+uf(this._r,this._g,this._b,this._a),n=r,a=this._gradientType?"GradientType = 1, ":"";if(t){var o=at(t);n="#"+uf(o._r,o._g,o._b,o._a)}return"progid:DXImageTransform.Microsoft.gradient("+a+"startColorstr="+r+",endColorstr="+n+")"},toString:function(t){var r=!!t;t=t||this._format;var n=!1,a=this._a<1&&this._a>=0,o=!r&&a&&(t==="hex"||t==="hex6"||t==="hex3"||t==="hex4"||t==="hex8"||t==="name");return o?t==="name"&&this._a===0?this.toName():this.toRgbString():(t==="rgb"&&(n=this.toRgbString()),t==="prgb"&&(n=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(n=this.toHexString()),t==="hex3"&&(n=this.toHexString(!0)),t==="hex4"&&(n=this.toHex8String(!0)),t==="hex8"&&(n=this.toHex8String()),t==="name"&&(n=this.toName()),t==="hsl"&&(n=this.toHslString()),t==="hsv"&&(n=this.toHsvString()),n||this.toHexString())},clone:function(){return at(this.toString())},_applyModification:function(t,r){var n=t.apply(null,[this].concat([].slice.call(r)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(cT,arguments)},brighten:function(){return this._applyModification(dT,arguments)},darken:function(){return this._applyModification(fT,arguments)},desaturate:function(){return this._applyModification(lT,arguments)},saturate:function(){return this._applyModification(sT,arguments)},greyscale:function(){return this._applyModification(uT,arguments)},spin:function(){return this._applyModification(vT,arguments)},_applyCombination:function(t,r){return t.apply(null,[this].concat([].slice.call(r)))},analogous:function(){return this._applyCombination(pT,arguments)},complement:function(){return this._applyCombination(mT,arguments)},monochromatic:function(){return this._applyCombination(gT,arguments)},splitcomplement:function(){return this._applyCombination(hT,arguments)},triad:function(){return this._applyCombination(cf,[3])},tetrad:function(){return this._applyCombination(cf,[4])}};at.fromRatio=function(e,t){if(Hi(e)=="object"){var r={};for(var n in e)e.hasOwnProperty(n)&&(n==="a"?r[n]=e[n]:r[n]=io(e[n]));e=r}return at(e,t)};function nT(e){var t={r:0,g:0,b:0},r=1,n=null,a=null,o=null,s=!1,l=!1;return typeof e=="string"&&(e=ST(e)),Hi(e)=="object"&&(er(e.r)&&er(e.g)&&er(e.b)?(t=rT(e.r,e.g,e.b),s=!0,l=String(e.r).substr(-1)==="%"?"prgb":"rgb"):er(e.h)&&er(e.s)&&er(e.v)?(n=io(e.s),a=io(e.v),t=oT(e.h,n,a),s=!0,l="hsv"):er(e.h)&&er(e.s)&&er(e.l)&&(n=io(e.s),o=io(e.l),t=aT(e.h,n,o),s=!0,l="hsl"),e.hasOwnProperty("a")&&(r=e.a)),r=rp(r),{ok:s,format:e.format||l,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:r}}function rT(e,t,r){return{r:zt(e,255)*255,g:zt(t,255)*255,b:zt(r,255)*255}}function of(e,t,r){e=zt(e,255),t=zt(t,255),r=zt(r,255);var n=Math.max(e,t,r),a=Math.min(e,t,r),o,s,l=(n+a)/2;if(n==a)o=s=0;else{var u=n-a;switch(s=l>.5?u/(2-n-a):u/(n+a),n){case e:o=(t-r)/u+(t1&&(f-=1),f<1/6?c+(d-c)*6*f:f<1/2?d:f<2/3?c+(d-c)*(2/3-f)*6:c}if(t===0)n=a=o=r;else{var l=r<.5?r*(1+t):r+t-r*t,u=2*r-l;n=s(u,l,e+1/3),a=s(u,l,e),o=s(u,l,e-1/3)}return{r:n*255,g:a*255,b:o*255}}function lf(e,t,r){e=zt(e,255),t=zt(t,255),r=zt(r,255);var n=Math.max(e,t,r),a=Math.min(e,t,r),o,s,l=n,u=n-a;if(s=n===0?0:u/n,n==a)o=0;else{switch(n){case e:o=(t-r)/u+(t>1)+720)%360;--t;)n.h=(n.h+a)%360,o.push(at(n));return o}function gT(e,t){t=t||6;for(var r=at(e).toHsv(),n=r.h,a=r.s,o=r.v,s=[],l=1/t;t--;)s.push(at({h:n,s:a,v:o})),o=(o+l)%1;return s}at.mix=function(e,t,r){r=r===0?0:r||50;var n=at(e).toRgb(),a=at(t).toRgb(),o=r/100,s={r:(a.r-n.r)*o+n.r,g:(a.g-n.g)*o+n.g,b:(a.b-n.b)*o+n.b,a:(a.a-n.a)*o+n.a};return at(s)};at.readability=function(e,t){var r=at(e),n=at(t);return(Math.max(r.getLuminance(),n.getLuminance())+.05)/(Math.min(r.getLuminance(),n.getLuminance())+.05)};at.isReadable=function(e,t,r){var n=at.readability(e,t),a,o;switch(o=!1,a=wT(r),a.level+a.size){case"AAsmall":case"AAAlarge":o=n>=4.5;break;case"AAlarge":o=n>=3;break;case"AAAsmall":o=n>=7;break}return o};at.mostReadable=function(e,t,r){var n=null,a=0,o,s,l,u;r=r||{},s=r.includeFallbackColors,l=r.level,u=r.size;for(var c=0;ca&&(a=o,n=at(t[c]));return at.isReadable(e,n,{level:l,size:u})||!s?n:(r.includeFallbackColors=!1,at.mostReadable(e,["#fff","#000"],r))};var Gs=at.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},yT=at.hexNames=bT(Gs);function bT(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[e[r]]=r);return t}function rp(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function zt(e,t){CT(e)&&(e="100%");var r=xT(e);return e=Math.min(t,Math.max(0,parseFloat(e))),r&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function Ml(e){return Math.min(1,Math.max(0,e))}function mn(e){return parseInt(e,16)}function CT(e){return typeof e=="string"&&e.indexOf(".")!=-1&&parseFloat(e)===1}function xT(e){return typeof e=="string"&&e.indexOf("%")!=-1}function Ln(e){return e.length==1?"0"+e:""+e}function io(e){return e<=1&&(e=e*100+"%"),e}function ap(e){return Math.round(parseFloat(e)*255).toString(16)}function df(e){return mn(e)/255}var In=function(){var e="[-\\+]?\\d+%?",t="[-\\+]?\\d*\\.\\d+%?",r="(?:"+t+")|(?:"+e+")",n="[\\s|\\(]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")\\s*\\)?",a="[\\s|\\(]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")\\s*\\)?";return{CSS_UNIT:new RegExp(r),rgb:new RegExp("rgb"+n),rgba:new RegExp("rgba"+a),hsl:new RegExp("hsl"+n),hsla:new RegExp("hsla"+a),hsv:new RegExp("hsv"+n),hsva:new RegExp("hsva"+a),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function er(e){return!!In.CSS_UNIT.exec(e)}function ST(e){e=e.replace(eT,"").replace(tT,"").toLowerCase();var t=!1;if(Gs[e])e=Gs[e],t=!0;else if(e=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var r;return(r=In.rgb.exec(e))?{r:r[1],g:r[2],b:r[3]}:(r=In.rgba.exec(e))?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=In.hsl.exec(e))?{h:r[1],s:r[2],l:r[3]}:(r=In.hsla.exec(e))?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=In.hsv.exec(e))?{h:r[1],s:r[2],v:r[3]}:(r=In.hsva.exec(e))?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=In.hex8.exec(e))?{r:mn(r[1]),g:mn(r[2]),b:mn(r[3]),a:df(r[4]),format:t?"name":"hex8"}:(r=In.hex6.exec(e))?{r:mn(r[1]),g:mn(r[2]),b:mn(r[3]),format:t?"name":"hex"}:(r=In.hex4.exec(e))?{r:mn(r[1]+""+r[1]),g:mn(r[2]+""+r[2]),b:mn(r[3]+""+r[3]),a:df(r[4]+""+r[4]),format:t?"name":"hex8"}:(r=In.hex3.exec(e))?{r:mn(r[1]+""+r[1]),g:mn(r[2]+""+r[2]),b:mn(r[3]+""+r[3]),format:t?"name":"hex"}:!1}function wT(e){var t,r;return e=e||{level:"AA",size:"small"},t=(e.level||"AA").toUpperCase(),r=(e.size||"small").toLowerCase(),t!=="AA"&&t!=="AAA"&&(t="AA"),r!=="small"&&r!=="large"&&(r="small"),{level:t,size:r}}var ff=function(t){var r=["r","g","b","a","h","s","l","v"],n=0,a=0;return JM(r,function(o){if(t[o]&&(n+=1,isNaN(t[o])||(a+=1),o==="s"||o==="l")){var s=/^\d+%$/;s.test(t[o])&&(a+=1)}}),n===a?t:!1},wi=function(t,r){var n=t.hex?at(t.hex):at(t),a=n.toHsl(),o=n.toHsv(),s=n.toRgb(),l=n.toHex();a.s===0&&(a.h=r||0,o.h=r||0);var u=l==="000000"&&s.a===0;return{hsl:a,hex:u?"transparent":"#".concat(l),rgb:s,hsv:o,oldHue:t.h||r||a.h,source:t.source}},ET=function(t){if(t==="transparent")return!0;var r=String(t).charAt(0)==="#"?1:0;return t.length!==4+r&&t.length<7+r&&at(t).isValid()};function Na(e){"@babel/helpers - typeof";return Na=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Na(e)}function qs(){return qs=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Wi(e){return Wi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},Wi(e)}var DT=function(t){var r=function(n){MT(o,n);var a=TT(o);function o(s){var l;return RT(this,o),l=a.call(this),l.handleChange=function(u,c){var d=ff(u);if(d){var f=wi(u,u.h||l.state.oldHue);l.setState(f),l.props.onChangeComplete&&l.debounce(l.props.onChangeComplete,f,c),l.props.onChange&&l.props.onChange(f,c)}},l.handleSwatchHover=function(u,c){var d=ff(u);if(d){var f=wi(u,u.h||l.state.oldHue);l.props.onSwatchHover&&l.props.onSwatchHover(f,c)}},l.state=to({},wi(s.color,0)),l.debounce=R0(function(u,c,d){u(c,d)},100),l}return kT(o,[{key:"render",value:function(){var l={};return this.props.onSwatchHover&&(l.onSwatchHover=this.handleSwatchHover),Q.createElement(t,qs({},this.props,this.state,{onChange:this.handleChange},l))}}],[{key:"getDerivedStateFromProps",value:function(l,u){return to({},wi(l.color,u.oldHue))}}]),o}(i.PureComponent||i.Component);return r.propTypes=to({},t.propTypes),r.defaultProps=to(to({},t.defaultProps),{},{color:{h:250,s:.5,l:.2,a:1}}),r};function Ma(e){"@babel/helpers - typeof";return Ma=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ma(e)}function IT(e,t,r){return t=ip(t),t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _T(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function hf(e,t){for(var r=0;r"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Ui(e){return Ui=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},Ui(e)}var HT=1,lp=38,WT=40,UT=[lp,WT],YT=function(t){return UT.indexOf(t)>-1},GT=function(t){return Number(String(t).replace(/%/g,""))},qT=1,no=function(e){jT(r,e);var t=KT(r);function r(n){var a;return _T(this,r),a=t.call(this),a.handleBlur=function(){a.state.blurValue&&a.setState({value:a.state.blurValue,blurValue:null})},a.handleChange=function(o){a.setUpdatedValue(o.target.value,o)},a.handleKeyDown=function(o){var s=GT(o.target.value);if(!isNaN(s)&&YT(o.keyCode)){var l=a.getArrowOffset(),u=o.keyCode===lp?s+l:s-l;a.setUpdatedValue(u,o)}},a.handleDrag=function(o){if(a.props.dragLabel){var s=Math.round(a.props.value+o.movementX);s>=0&&s<=a.props.dragMax&&a.props.onChange&&a.props.onChange(a.getValueObjectWithLabel(s),o)}},a.handleMouseDown=function(o){a.props.dragLabel&&(o.preventDefault(),a.handleDrag(o),window.addEventListener("mousemove",a.handleDrag),window.addEventListener("mouseup",a.handleMouseUp))},a.handleMouseUp=function(){a.unbindEventListeners()},a.unbindEventListeners=function(){window.removeEventListener("mousemove",a.handleDrag),window.removeEventListener("mouseup",a.handleMouseUp)},a.state={value:String(n.value).toUpperCase(),blurValue:String(n.value).toUpperCase()},a.inputId="rc-editable-input-".concat(qT++),a}return LT(r,[{key:"componentDidUpdate",value:function(a,o){this.props.value!==this.state.value&&(a.value!==this.props.value||o.value!==this.state.value)&&(this.input===document.activeElement?this.setState({blurValue:String(this.props.value).toUpperCase()}):this.setState({value:String(this.props.value).toUpperCase(),blurValue:!this.state.blurValue&&String(this.props.value).toUpperCase()}))}},{key:"componentWillUnmount",value:function(){this.unbindEventListeners()}},{key:"getValueObjectWithLabel",value:function(a){return IT({},this.props.label,a)}},{key:"getArrowOffset",value:function(){return this.props.arrowOffset||HT}},{key:"setUpdatedValue",value:function(a,o){var s=this.props.label?this.getValueObjectWithLabel(a):a;this.props.onChange&&this.props.onChange(s,o),this.setState({value:a})}},{key:"render",value:function(){var a=this,o=$r({default:{wrap:{position:"relative"}},"user-override":{wrap:this.props.style&&this.props.style.wrap?this.props.style.wrap:{},input:this.props.style&&this.props.style.input?this.props.style.input:{},label:this.props.style&&this.props.style.label?this.props.style.label:{}},"dragLabel-true":{label:{cursor:"ew-resize"}}},{"user-override":!0},this.props);return Q.createElement("div",{style:o.wrap},Q.createElement("input",{id:this.inputId,style:o.input,ref:function(l){return a.input=l},value:this.state.value,onKeyDown:this.handleKeyDown,onChange:this.handleChange,onBlur:this.handleBlur,placeholder:this.props.placeholder,spellCheck:"false"}),this.props.label&&!this.props.hideLabel?Q.createElement("label",{htmlFor:this.inputId,style:o.label,onMouseDown:this.handleMouseDown},this.props.label):null)}}]),r}(i.PureComponent||i.Component);function Ta(e){"@babel/helpers - typeof";return Ta=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ta(e)}function Qs(){return Qs=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Yi(e){return Yi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},Yi(e)}var oF=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"span";return function(n){eF(o,n);var a=tF(o);function o(){var s;XT(this,o);for(var l=arguments.length,u=new Array(l),c=0;c100&&(d.a=100),d.a/=100,r==null||r({h:a==null?void 0:a.h,s:a==null?void 0:a.s,l:a==null?void 0:a.l,a:d.a,source:"rgb"},f))};return Q.createElement("div",{style:l.fields,className:"flexbox-fix"},Q.createElement("div",{style:l.double},Q.createElement(no,{style:{input:l.input,label:l.label},label:"hex",value:o==null?void 0:o.replace("#",""),onChange:u})),Q.createElement("div",{style:l.single},Q.createElement(no,{style:{input:l.input,label:l.label},label:"r",value:n==null?void 0:n.r,onChange:u,dragLabel:"true",dragMax:"255"})),Q.createElement("div",{style:l.single},Q.createElement(no,{style:{input:l.input,label:l.label},label:"g",value:n==null?void 0:n.g,onChange:u,dragLabel:"true",dragMax:"255"})),Q.createElement("div",{style:l.single},Q.createElement(no,{style:{input:l.input,label:l.label},label:"b",value:n==null?void 0:n.b,onChange:u,dragLabel:"true",dragMax:"255"})),Q.createElement("div",{style:l.alpha},Q.createElement(no,{style:{input:l.input,label:l.label},label:"a",value:Math.round(((n==null?void 0:n.a)||0)*100),onChange:u,dragLabel:"true",dragMax:"100"})))};function wo(e){"@babel/helpers - typeof";return wo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wo(e)}function bf(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function Cf(e){for(var t=1;tF?E([F,M]):M===void 0&&F===void 0&&E(void 0)}},$=function(k,M){var F=Ke(x||[]);F[k]=M===null?void 0:M,E(F)},R=(u==null?void 0:u.placeholder)||s,D=S.jsxs(Nn.Group,{compact:!0,onBlur:T,children:[S.jsx(qr,p(p({},u),{},{placeholder:Array.isArray(R)?R[0]:R,id:y??"".concat(y,"-0"),style:{width:"calc((100% - ".concat(v,"px) / 2)")},value:x==null?void 0:x[0],defaultValue:h==null?void 0:h[0],onChange:function(k){return $(0,k)}})),S.jsx(Nn,{style:{width:v,textAlign:"center",borderLeft:0,borderRight:0,pointerEvents:"none",backgroundColor:"#FFF"},placeholder:d,disabled:!0}),S.jsx(qr,p(p({},u),{},{placeholder:Array.isArray(R)?R[1]:R,id:y??"".concat(y,"-1"),style:{width:"calc((100% - ".concat(v,"px) / 2)"),borderLeft:0},value:x==null?void 0:x[1],defaultValue:h==null?void 0:h[1],onChange:function(k){return $(1,k)}}))]});return l?l(n,p({mode:a},u),D):D}return null};const FF=Q.forwardRef(TF);var $F=function(t){var r=t.text,n=t.mode,a=t.render,o=t.renderFormItem,s=t.format,l=t.fieldProps,u=Tt();if(n==="read"){var c=S.jsx(on,{title:$t(r).format((l==null?void 0:l.format)||s||"YYYY-MM-DD HH:mm:ss"),children:$t(r).fromNow()});return a?a(r,p({mode:n},l),S.jsx(S.Fragment,{children:c})):S.jsx(S.Fragment,{children:c})}if(n==="edit"||n==="update"){var d=u.getMessage("tableForm.selectPlaceholder","请选择"),f=Ho(l.value),v=S.jsx(Zr,p(p({placeholder:d,showTime:!0},l),{},{value:f}));return o?o(r,p({mode:n},l),v):v}return null};const OF=$F;var DF=Q.forwardRef(function(e,t){var r=e.text,n=e.mode,a=e.render,o=e.renderFormItem,s=e.fieldProps,l=e.placeholder,u=e.width;if(n==="read"){var c=S.jsx(i2,p({ref:t,width:u||32,src:r},s));return a?a(r,p({mode:n},s),c):c}if(n==="edit"||n==="update"){var d=S.jsx(Nn,p({ref:t,placeholder:l},s));return o?o(r,p({mode:n},s),d):d}return null});const up=DF;var IF=function(t,r){var n,a=t.border,o=a===void 0?!1:a,s=t.children,l=i.useContext(yt.ConfigContext),u=l.getPrefixCls,c=u("pro-field-index-column");return S.jsx("div",{ref:r,className:ve(c,(n={},B(n,"".concat(c,"-border"),o),B(n,"top-three",s>3),n)),children:s})};const wf=Q.forwardRef(IF);var _F=["content","numberFormatOptions","numberPopoverRender"],LF=["text","mode","render","renderFormItem","fieldProps","proFieldKey","plain","valueEnum","placeholder","locale","customSymbol","numberFormatOptions","numberPopoverRender"],AF=new Intl.NumberFormat("zh-Hans-CN",{currency:"CNY",style:"currency"}),jF={style:"currency",currency:"USD"},KF={style:"currency",currency:"RUB"},VF={style:"currency",currency:"RSD"},zF={style:"currency",currency:"MYR"},BF={style:"currency",currency:"BRL"},Ef={default:AF,"zh-Hans-CN":{currency:"CNY",style:"currency"},"en-US":jF,"ru-RU":KF,"ms-MY":zF,"sr-RS":VF,"pt-BR":BF},Pf=function(t,r,n,a){var o=r;return typeof o=="string"&&(o=Number(o)),!o&&o!==0?"":new Intl.NumberFormat(t||"zh-Hans-CN",p(p({},t===!1?{}:Ef[t||"zh-Hans-CN"]||Ef["zh-Hans-CN"]),{},{maximumFractionDigits:n},a)).format(o)},es=2,HF=Q.forwardRef(function(e,t){var r=e.content;e.numberFormatOptions,e.numberPopoverRender;var n=ze(e,_F),a=Rt(function(){return n.defaultValue},{value:n.value,onChange:n.onChange}),o=Y(a,2),s=o[0],l=o[1],u=r==null?void 0:r(p(p({},n),{},{value:s})),c={visible:u?n.visible:!1};return S.jsx(ko,p(p({placement:"topLeft"},c),{},{trigger:["focus","click"],content:u,getPopupContainer:function(f){return(f==null?void 0:f.parentElement)||document.body},children:S.jsx(qr,p(p({ref:t},n),{},{value:s,onChange:l}))}))}),WF=function(t,r){var n,a,o=t.text,s=t.mode,l=t.render,u=t.renderFormItem,c=t.fieldProps;t.proFieldKey,t.plain,t.valueEnum;var d=t.placeholder,f=t.locale,v=f===void 0?(n=c.customSymbol)!==null&&n!==void 0?n:"zh-Hans-CN":f,m=t.customSymbol,h=m===void 0?c.customSymbol:m,g=t.numberFormatOptions,y=g===void 0?c==null?void 0:c.numberFormatOptions:g,b=t.numberPopoverRender,C=b===void 0?(c==null?void 0:c.numberPopoverRender)||!1:b,x=ze(t,LF),E=(a=c==null?void 0:c.precision)!==null&&a!==void 0?a:es,P=Tt();v&&wa[v]&&(P=wa[v]);var w=i.useMemo(function(){if(h)return h;var D=P.getMessage("moneySymbol","¥");if(!(x.moneySymbol===!1||c.moneySymbol===!1))return D},[h,c.moneySymbol,P,x.moneySymbol]);if(s==="read"){var T=S.jsx("span",{ref:r,children:Pf(w?v:!1,o,E,y??c.numberFormatOptions)});return l?l(o,p({mode:s},c),T):T}if(s==="edit"||s==="update"){var $=function(O){var k=new RegExp("\\B(?=(\\d{".concat(3+Math.max(E-es,0),"})+(?!\\d))"),"g"),M=String(O).split("."),F=Y(M,2),N=F[0],I=F[1],L=N.replace(k,","),A="";return I&&E>0&&(A=".".concat(I.slice(0,E===void 0?es:E))),"".concat(L).concat(A)},R=S.jsx(HF,p({content:function(O){if(C!==!1&&O.value){var k=Pf(w?v:!1,"".concat($(O.value)),E,p(p({},y),{},{notation:"compact"}));return typeof C=="function"?C==null?void 0:C(O,k):k}},ref:r,precision:E,formatter:function(O){return O&&w?"".concat(w," ").concat($(O)):O==null?void 0:O.toString()},parser:function(O){return w&&O?O.replace(new RegExp("\\".concat(w,"\\s?|(,*)"),"g"),""):O},placeholder:d},nn(c,["numberFormatOptions","precision","numberPopoverRender","customSymbol","moneySymbol","visible"])));return u?u(o,p({mode:s},c),R):R}return null};const cp=Q.forwardRef(WF);var Rf=function(t){return t.map(function(r,n){return Q.isValidElement(r)?Q.cloneElement(r,p({key:n},r==null?void 0:r.props)):S.jsx(Q.Fragment,{children:r},n)})},UF=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.fieldProps,l=i.useContext(yt.ConfigContext),u=l.getPrefixCls,c=u("pro-field-option");if(i.useImperativeHandle(r,function(){return{}}),o){var d=o(n,p({mode:a},s),S.jsx(S.Fragment,{}));return!d||(d==null?void 0:d.length)<1||!Array.isArray(d)?null:S.jsx(Xt,{size:16,className:c,children:Rf(d)})}return!n||!Array.isArray(n)?Q.isValidElement(n)?n:null:S.jsx(Xt,{size:16,className:c,children:Rf(n)})};const YF=Q.forwardRef(UF);var GF=["text","mode","render","renderFormItem","fieldProps","proFieldKey"],qF=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps;t.proFieldKey;var u=ze(t,GF),c=Tt(),d=Rt(function(){return u.visible||!1},{value:u.visible,onChange:u.onVisible}),f=Y(d,2),v=f[0],m=f[1];if(a==="read"){var h=S.jsx(S.Fragment,{children:"-"});return n&&(h=S.jsxs(Xt,{children:[S.jsx("span",{ref:r,children:v?n:"* * * * *"}),S.jsx("a",{onClick:function(){return m(!v)},children:v?S.jsx(lv,{}):S.jsx(m0,{})})]})),o?o(n,p({mode:a},l),h):h}if(a==="edit"||a==="update"){var g=S.jsx(Nn.Password,p({placeholder:c.getMessage("tableForm.inputPlaceholder","请输入"),ref:r},l));return s?s(n,p({mode:a},l),g):g}return null};const XF=Q.forwardRef(qF);var kf=0/0,ZF="[object Symbol]",QF=/^\s+|\s+$/g,JF=/^[-+]0x[0-9a-f]+$/i,e$=/^0b[01]+$/i,t$=/^0o[0-7]+$/i,n$=parseInt,r$=Object.prototype,a$=r$.toString;function Nf(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function o$(e){return!!e&&typeof e=="object"}function i$(e){return typeof e=="symbol"||o$(e)&&a$.call(e)==ZF}function l$(e){if(typeof e=="number")return e;if(i$(e))return kf;if(Nf(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Nf(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=e.replace(QF,"");var r=e$.test(e);return r||t$.test(e)?n$(e.slice(2),r?2:8):JF.test(e)?kf:+e}var s$=l$;const Gi=Da(s$);function u$(e){return e===0?null:e>0?"+":"-"}function c$(e){return e===0?"#595959":e>0?"#ff4d4f":"#52c41a"}function d$(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;return t>=0?e==null?void 0:e.toFixed(t):e}var f$=function(t,r){var n=t.text,a=t.prefix,o=t.precision,s=t.suffix,l=s===void 0?"%":s,u=t.mode,c=t.showColor,d=c===void 0?!1:c,f=t.render,v=t.renderFormItem,m=t.fieldProps,h=t.placeholder,g=t.showSymbol,y=i.useMemo(function(){return typeof n=="string"&&n.includes("%")?Gi(n.replace("%","")):Gi(n)},[n]),b=i.useMemo(function(){return typeof g=="function"?g==null?void 0:g(n):g},[g,n]);if(u==="read"){var C=d?{color:c$(y)}:{},x=S.jsxs("span",{style:C,ref:r,children:[a&&S.jsx("span",{children:a}),b&&S.jsxs(i.Fragment,{children:[u$(y)," "]}),d$(Math.abs(y),o),l&&l]});return f?f(n,p(p({mode:u},m),{},{prefix:a,precision:o,showSymbol:b,suffix:l}),x):x}if(u==="edit"||u==="update"){var E=S.jsx(qr,p({ref:r,formatter:function(w){return w&&a?"".concat(a," ").concat(w).replace(/\B(?=(\d{3})+(?!\d)$)/g,","):w},parser:function(w){return w?w.replace(/.*\s|,/g,""):""},placeholder:h},m));return v?v(n,p({mode:u},m),E):E}return null};const dp=Q.forwardRef(f$);function v$(e){return e===100?"success":e<0?"exception":e<100?"active":"normal"}var m$=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.plain,l=t.renderFormItem,u=t.fieldProps,c=t.placeholder,d=i.useMemo(function(){return typeof n=="string"&&n.includes("%")?Gi(n.replace("%","")):Gi(n)},[n]);if(a==="read"){var f=S.jsx(mv,p({ref:r,size:"small",style:{minWidth:100,maxWidth:320},percent:d,steps:s?10:void 0,status:v$(d)},u));return o?o(d,p({mode:a},u),f):f}if(a==="edit"||a==="update"){var v=S.jsx(qr,p({ref:r,placeholder:c},u));return l?l(n,p({mode:a},u),v):v}return null};const fp=Q.forwardRef(m$);var h$=["radioType","renderFormItem","mode","render"],p$=function(t,r){var n=t.radioType,a=t.renderFormItem,o=t.mode,s=t.render,l=ze(t,h$),u=i.useContext(yt.ConfigContext),c=u.getPrefixCls,d=c("pro-field-radio"),f=Uo(l),v=Y(f,3),m=v[0],h=v[1],g=v[2],y=i.useRef();if(i.useImperativeHandle(r,function(){return p(p({},y.current||{}),{},{fetchData:function(){return g()}})}),m)return S.jsx(Nr,{size:"small"});if(o==="read"){var b=h!=null&&h.length?h==null?void 0:h.reduce(function(w,T){var $;return p(p({},w),{},B({},($=T.value)!==null&&$!==void 0?$:"",T.label))},{}):void 0,C=S.jsx(S.Fragment,{children:Wo(l.text,Fr(l.valueEnum||b))});return s?s(l.text,p({mode:o},l.fieldProps),C)||null:C}if(o==="edit"){var x,E=n==="button"?lo.Button:lo,P=S.jsx(lo.Group,p(p({ref:y},l.fieldProps),{},{className:ve((x=l.fieldProps)===null||x===void 0?void 0:x.className,"".concat(d,"-").concat(l.fieldProps.layout||"horizontal")),options:void 0,children:h==null?void 0:h.map(function(w){return S.jsx(E,p(p({},w),{},{children:w.label}),w.value)})}));return a?a(l.text,p({mode:o},l.fieldProps),P)||null:P}return null};const Mf=Q.forwardRef(p$);var g$=function(t,r){var n=t.text,a=t.mode,o=t.format,s=t.render,l=t.renderFormItem,u=t.plain,c=t.showTime,d=t.fieldProps,f=Tt(),v=Array.isArray(n)?n:[],m=Y(v,2),h=m[0],g=m[1],y=i.useCallback(function(w){if(typeof(d==null?void 0:d.format)=="function"){var T;return d==null||(T=d.format)===null||T===void 0?void 0:T.call(d,w)}return(d==null?void 0:d.format)||o||"YYYY-MM-DD"},[d,o]),b=h?$t(h).format(y($t(h))):"",C=g?$t(g).format(y($t(g))):"";if(a==="read"){var x=S.jsxs("div",{ref:r,children:[S.jsx("div",{children:b||"-"}),S.jsx("div",{children:C||"-"})]});return s?s(n,p({mode:a},d),S.jsx("span",{children:x})):x}if(a==="edit"||a==="update"){var E=Ho(d.value),P=S.jsx(Zr.RangePicker,p(p({ref:r,format:o,showTime:c,placeholder:[f.getMessage("tableForm.selectPlaceholder","请选择"),f.getMessage("tableForm.selectPlaceholder","请选择")],bordered:u===void 0?!0:!u},d),{},{value:E}));return l?l(n,p({mode:a},d),P):P}return null};const Tf=Q.forwardRef(g$);var y$=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps;if(a==="read"){var u=S.jsx(Mc,p(p({allowHalf:!0,disabled:!0,ref:r},l),{},{value:n}));return o?o(n,p({mode:a},l),S.jsx(S.Fragment,{children:u})):u}if(a==="edit"||a==="update"){var c=S.jsx(Mc,p({allowHalf:!0,ref:r},l));return s?s(n,p({mode:a},l),c):c}return null};const b$=Q.forwardRef(y$);function C$(e){var t="",r=Math.floor(e/86400),n=Math.floor(e/3600),a=Math.floor(e/60%60),o=Math.floor(e%60);return t="".concat(o,"秒"),a>0&&(t="".concat(a,"分钟").concat(t)),n>0&&(t="".concat(n,"小时").concat(t)),r>0&&(t="".concat(r,"天").concat(t)),t}var x$=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps,u=t.placeholder;if(a==="read"){var c=C$(Number(n)),d=S.jsx("span",{ref:r,children:c});return o?o(n,p({mode:a},l),d):d}if(a==="edit"||a==="update"){var f=S.jsx(qr,p({ref:r,min:0,style:{width:"100%"},placeholder:u},l));return s?s(n,p({mode:a},l),f):f}return null};const S$=Q.forwardRef(x$);var w$=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps;if(a==="read"){var u=n;return o?o(n,p({mode:a},l),S.jsx(S.Fragment,{children:u})):S.jsx(S.Fragment,{children:u})}if(a==="edit"||a==="update"){var c=S.jsx(C0,p({ref:r},l));return s?s(n,p({mode:a},l),c):c}return null};const E$=Q.forwardRef(w$);var P$=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps,u=Tt(),c=i.useMemo(function(){var v,m;return n==null||"".concat(n).length<1?"-":n?(v=l==null?void 0:l.checkedChildren)!==null&&v!==void 0?v:u.getMessage("switch.open","打开"):(m=l==null?void 0:l.unCheckedChildren)!==null&&m!==void 0?m:u.getMessage("switch.close","关闭")},[l==null?void 0:l.checkedChildren,l==null?void 0:l.unCheckedChildren,n]);if(a==="read")return o?o(n,p({mode:a},l),S.jsx(S.Fragment,{children:c})):c??"-";if(a==="edit"||a==="update"){var d,f=S.jsx(x0,p(p({ref:r},nn(l,["value"])),{},{checked:(d=l==null?void 0:l.checked)!==null&&d!==void 0?d:l==null?void 0:l.value}));return s?s(n,p({mode:a},l),f):f}return null};const R$=Q.forwardRef(P$);var k$=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps,u=t.emptyText,c=u===void 0?"-":u,d=l||{},f=d.autoFocus,v=d.prefix,m=v===void 0?"":v,h=d.suffix,g=h===void 0?"":h,y=Tt(),b=i.useRef();if(i.useImperativeHandle(r,function(){return b.current}),i.useEffect(function(){if(f){var w;(w=b.current)===null||w===void 0||w.focus()}},[f]),a==="read"){var C=S.jsxs(S.Fragment,{children:[m,n??c,g]});if(o){var x;return(x=o(n,p({mode:a},l),C))!==null&&x!==void 0?x:c}return C}if(a==="edit"||a==="update"){var E=y.getMessage("tableForm.inputPlaceholder","请输入"),P=S.jsx(Nn,p({ref:b,placeholder:E,allowClear:!0},l));return s?s(n,p({mode:a},l),P):P}return null};const N$=Q.forwardRef(k$);var M$=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps,u=Tt();if(a==="read"){var c=S.jsx("span",{ref:r,children:n??"-"});return o?o(n,p({mode:a},l),c):c}if(a==="edit"||a==="update"){var d=S.jsx(Nn.TextArea,p({ref:r,rows:3,onKeyPress:function(v){v.key==="Enter"&&v.stopPropagation()},placeholder:u.getMessage("tableForm.inputPlaceholder","请输入")},l));return s?s(n,p({mode:a},l),d):d}return null};const T$=Q.forwardRef(M$);var F$=function(t,r){var n=t.text,a=t.mode,o=t.light,s=t.label,l=t.format,u=t.render,c=t.renderFormItem,d=t.plain,f=t.fieldProps,v=t.lightLabel,m=t.labelTrigger,h=i.useState(!1),g=Y(h,2),y=g[0],b=g[1],C=i.useContext(yt.SizeContext),x=i.useContext(yt.ConfigContext),E=x.getPrefixCls,P=E("pro-field-date-picker"),w=(f==null?void 0:f.format)||l||"HH:mm:ss",T=$t.isMoment(n)||typeof n=="number";if(a==="read"){var $=S.jsx("span",{ref:r,children:n?$t(n,T?void 0:w).format(w):"-"});return u?u(n,p({mode:a},f),S.jsx("span",{children:$})):$}if(a==="edit"||a==="update"){var R,D=f.disabled,O=f.onChange,k=f.placeholder,M=f.allowClear,F=f.value,N=Ho(F,w);if(o){var I=N&&N.format(w)||"";R=S.jsxs("div",{className:"".concat(P,"-light"),onClick:function(A){var _,K,z,j=v==null||(_=v.current)===null||_===void 0||(K=_.labelRef)===null||K===void 0||(z=K.current)===null||z===void 0?void 0:z.contains(A.target);b(j?!y:!0)},children:[S.jsx(Jm,p(p({value:N,format:l,ref:r},f),{},{onChange:function(A){O==null||O(A),setTimeout(function(){b(!1)},0)},onOpenChange:function(A){m||b(A)},open:y})),S.jsx(aa,{label:s,disabled:D,placeholder:k,size:C,value:I,allowClear:M,onClear:function(){return O==null?void 0:O(null)},expanded:y,ref:v})]})}else R=S.jsx(Zr.TimePicker,p(p({ref:r,format:l,bordered:d===void 0?!0:!d},f),{},{value:N}));return c?c(n,p({mode:a},f),R):R}return null},$$=function(t){var r=t.text,n=t.mode,a=t.format,o=t.render,s=t.renderFormItem,l=t.plain,u=t.fieldProps,c=(u==null?void 0:u.format)||a||"HH:mm:ss",d=Array.isArray(r)?r:[],f=Y(d,2),v=f[0],m=f[1],h=$t.isMoment(v)||typeof v=="number",g=$t.isMoment(m)||typeof m=="number",y=v?$t(v,h?void 0:c).format(c):"",b=m?$t(m,g?void 0:c).format(c):"";if(n==="read"){var C=S.jsxs("div",{children:[S.jsx("div",{children:y||"-"}),S.jsx("div",{children:b||"-"})]});return o?o(r,p({mode:n},u),S.jsx("span",{children:C})):C}if(n==="edit"||n==="update"){var x=u.value,E=Ho(x,c),P=S.jsx(Jm.RangePicker,p(p({format:a,bordered:l===void 0?!0:!l},u),{},{value:E}));return s?s(r,p({mode:n},u),P):P}return null};const O$=Q.forwardRef(F$);var D$=["radioType","renderFormItem","mode","light","label","render"],I$=["onSearch","onClear","onChange","onBlur","showSearch","autoClearSearchValue","treeData","searchValue"],_$=function(t,r){t.radioType;var n=t.renderFormItem,a=t.mode,o=t.light,s=t.label,l=t.render,u=ze(t,D$),c=i.useContext(yt.ConfigContext),d=c.getPrefixCls,f=d("pro-field-tree-select"),v=i.useRef(null),m=i.useState(!1),h=Y(m,2),g=h[0],y=h[1],b=u.fieldProps||{},C=b.onSearch,x=b.onClear,E=b.onChange,P=b.onBlur,w=b.showSearch,T=b.autoClearSearchValue;b.treeData;var $=b.searchValue,R=ze(b,I$),D=i.useContext(yt.SizeContext),O=Uo(p(p({},u),{},{defaultKeyWords:$})),k=Y(O,3),M=k[0],F=k[1],N=k[2],I=Rt("",{onChange:C,value:$}),L=Y(I,2),A=L[0],_=L[1];i.useImperativeHandle(r,function(){return p(p({},v.current||{}),{},{fetchData:function(){return N()}})});var K=i.useMemo(function(){if(a==="read"){var q=(R==null?void 0:R.fieldNames)||{},ne=q.value,ue=ne===void 0?"value":ne,G=q.label,te=G===void 0?"label":G,ee=q.children,le=ee===void 0?"children":ee,re=new Map,ge=function Pe(me){if(!(me!=null&&me.length))return re;for(var ce=me.length,fe=0;fe=0&&Me<=24),tt));return S.jsx("div",{style:p(p(p({},Le),fe(ke>0,{paddingRight:ke/2,paddingLeft:ke/2})),fe(Te>0,{paddingTop:Te/2,paddingBottom:Te/2})),className:ye,children:Q.cloneElement(Ge)},"pro-card-col-".concat((Ge==null?void 0:Ge.key)||_e))}return Ge}),Qe=ve("".concat(se),o,(r={},B(r,"".concat(se,"-border"),D),B(r,"".concat(se,"-contain-card"),Se),B(r,"".concat(se,"-loading"),C),B(r,"".concat(se,"-split"),w==="vertical"||w==="horizontal"),B(r,"".concat(se,"-ghost"),N),B(r,"".concat(se,"-hoverable"),L),B(r,"".concat(se,"-size-").concat(k),k),B(r,"".concat(se,"-type-").concat(q),q),B(r,"".concat(se,"-collapse"),re),B(r,"".concat(se,"-checked"),Z),r)),et=ve("".concat(se,"-body"),(n={},B(n,"".concat(se,"-body-center"),b==="center"),B(n,"".concat(se,"-body-direction-column"),w==="horizontal"||A==="column"),B(n,"".concat(se,"-body-wrap"),y&&Se),n)),vt=p(p(p({},fe(ke>0,{marginRight:-ke/2,marginLeft:-ke/2})),fe(Te>0,{marginTop:-Te/2,marginBottom:-Te/2})),u),ct=Q.isValidElement(C)?C:S.jsx(Q$,{prefix:se,style:u.padding===0||u.padding==="0px"?{padding:24}:void 0}),ht=z&&_===void 0&&(j?j({collapsed:re}):S.jsx(No,{rotate:re?void 0:90,className:"".concat(se,"-collapsible-icon")}));return S.jsxs("div",p(p({className:Qe,style:s,ref:t,onClick:function(_e){var mt;U==null||U(_e),ne==null||(mt=ne.onClick)===null||mt===void 0||mt.call(ne,_e)}},nn(ne,["prefixCls","colSpan"])),{},{children:[(f||m||ht)&&S.jsxs("div",{className:ve("".concat(se,"-header"),(a={},B(a,"".concat(se,"-header-border"),$||q==="inner"),B(a,"".concat(se,"-header-collapsible"),ht),a)),style:d,onClick:function(){ht&&ge(!re)},children:[S.jsxs("div",{className:"".concat(se,"-title"),children:[ht,S.jsx(Jr,{label:f,tooltip:P||h,subTitle:v})]}),m&&S.jsx("div",{className:"".concat(se,"-extra"),children:m})]}),ae?S.jsx("div",{className:"".concat(se,"-tabs"),children:S.jsx(Xr,p(p({onChange:ae.onChange},ae),{},{items:me,children:C?ct:O}))}):S.jsx("div",{className:et,style:vt,children:C?ct:Ee}),S.jsx(X$,{actions:M,prefixCls:se})]}))});const Po=tO;var nO=function(t){var r=i.useContext(yt.ConfigContext),n=r.getPrefixCls,a=n("pro-card-divider"),o=t.className,s=t.style,l=s===void 0?{}:s,u=t.type,c=ve(a,o,B({},"".concat(a,"-").concat(u),u));return S.jsx("div",{className:c,style:l})};const rO=nO;var aO=function(t){return S.jsx(Po,p({bodyStyle:{padding:0}},t))},ei=Po;ei.isProCard=!0;ei.Divider=rO;ei.TabPane=G$;ei.Group=aO;const oO=ei;var go=globalThis&&globalThis.__assign||function(){return go=Object.assign||function(e){for(var t,r=1,n=arguments.length;r"u"||!window.URL)return{};var d=[];s.forEach(function(v,m){d.push({key:m,value:v})}),d=d.reduce(function(v,m){return(v[m.key]=v[m.key]||[]).push(m),v},{}),d=Object.keys(d).map(function(v){var m=d[v];return m.length===1?[v,m[0].value]:[v,m.map(function(h){var g=h.value;return g})]});var f=go({},e);return d.forEach(function(v){var m=v[0],h=v[1];f[m]=uO(m,h,{},e)}),f},[t.disabled,e,s]);function u(d){if(!(typeof window>"u"||!window.URL)){var f=iO(d);window.location.search!==f.search&&window.history.replaceState({},"",f.toString()),s.toString()!==f.searchParams.toString()&&a({})}}i.useEffect(function(){t.disabled||typeof window>"u"||!window.URL||u(go(go({},e),l))},[t.disabled,l]);var c=function(d){u(d)};return i.useEffect(function(){if(t.disabled)return function(){};if(typeof window>"u"||!window.URL)return function(){};var d=function(){a({})};return window.addEventListener("popstate",d),function(){window.removeEventListener("popstate",d)}},[t.disabled]),[l,c]}var sO={true:!0,false:!1};function uO(e,t,r,n){if(!r)return t;var a=r[e],o=t===void 0?n[e]:t;return a===Number?Number(o):a===Boolean||t==="true"||t==="false"?sO[o]:Array.isArray(a)?a.find(function(s){return s==o})||n[e]:o}function Fi(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fi=function(t){return typeof t}:Fi=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Fi(e)}var cO=function(){var t=new WeakSet;return function(r,n){if(Fi(n)==="object"&&n!==null){if(t.has(n))return;t.add(n)}return n}},ma=function(t){return JSON.stringify(t,cO())},vp=Q.createContext({});const Tl=vp;var dO=["children","Wrapper"],fO=["children","Wrapper"],mp=i.createContext({grid:!1,colProps:void 0,rowProps:void 0}),vO=function(t){var r=t.grid,n=t.rowProps,a=t.colProps;return{grid:!!r,RowWrapper:function(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},l=s.children,u=s.Wrapper,c=ze(s,dO);return r?S.jsx(Un,p(p(p({gutter:8},n),c),{},{children:l})):u?S.jsx(u,{children:l}):l},ColWrapper:function(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},l=s.children,u=s.Wrapper,c=ze(s,fO),d=i.useMemo(function(){var f=p(p({},a),c);return typeof f.span>"u"&&typeof f.xs>"u"&&(f.xs=24),f},[c]);return r?S.jsx(Zt,p(p({},d),{},{children:l})):u?S.jsx(u,{children:l}):l}}},za=function(t){var r=i.useMemo(function(){return Ye(t)==="object"?t:{grid:t}},[t]),n=i.useContext(mp),a=n.grid,o=n.colProps;return i.useMemo(function(){return vO({grid:!!(a||r.grid),rowProps:r==null?void 0:r.rowProps,colProps:(r==null?void 0:r.colProps)||o,Wrapper:r==null?void 0:r.Wrapper})},[r==null?void 0:r.Wrapper,r.grid,a,JSON.stringify([o,r==null?void 0:r.colProps,r==null?void 0:r.rowProps])])},mO=["valueType","customLightMode","lightFilterLabelFormatter","valuePropName","ignoreWidth","defaultProps"],hO=["label","tooltip","placeholder","width","bordered","messageVariables","ignoreFormItem","transform","convertValue","readonly","allowClear","colSize","getFormItemProps","getFieldProps","filedConfig","cacheForSwr","proFieldProps"],Ff={xs:104,s:216,sm:216,m:328,md:328,l:440,lg:440,xl:552},pO=["switch","radioButton","radio","rate"];function hp(e,t){e.displayName="ProFormComponent";var r=function(o){var s=p(p({},o==null?void 0:o.filedConfig),t)||{},l=s.valueType,u=s.customLightMode,c=s.lightFilterLabelFormatter,d=s.valuePropName,f=d===void 0?"value":d,v=s.ignoreWidth,m=s.defaultProps,h=ze(s,mO),g=p(p({},m),o),y=g.label,b=g.tooltip,C=g.placeholder,x=g.width,E=g.bordered,P=g.messageVariables,w=g.ignoreFormItem,T=g.transform,$=g.convertValue,R=g.readonly,D=g.allowClear;g.colSize;var O=g.getFormItemProps,k=g.getFieldProps;g.filedConfig;var M=g.cacheForSwr,F=g.proFieldProps,N=ze(g,hO),I=l||N.valueType,L=i.useMemo(function(){return v||pO.includes(I)},[v,I]),A=i.useState(),_=Y(A,2),K=_[1],z=i.useState(),j=Y(z,2),V=j[0],X=j[1],H=Q.useContext(Tl),Z=i.useMemo(function(){return{formItemProps:O==null?void 0:O(),fieldProps:k==null?void 0:k()}},[k,O,N.dependenciesValues,V]),U=i.useMemo(function(){var he=p(p(p(p({},w?Jt({value:N.value}):{}),{},{placeholder:C,disabled:o.disabled},H.fieldProps),Z.fieldProps),N.fieldProps);return he.style=Jt(he==null?void 0:he.style),he},[w,N.value,N.fieldProps,C,o.disabled,H.fieldProps,Z.fieldProps]),ae=AE(N),q=i.useMemo(function(){return p(p(p(p({},H.formItemProps),ae),Z.formItemProps),N.formItemProps)},[Z.formItemProps,H.formItemProps,N.formItemProps,ae]),ne=i.useMemo(function(){return p(p({messageVariables:P},h),q)},[h,q,P]);tn(!N.defaultValue,"请不要在 Form 中使用 defaultXXX。如果需要默认值请使用 initialValues 和 initialValue。");var ue=i.useContext(h0),G=ue.prefixName,te=i.useMemo(function(){var he,Ce=ne==null?void 0:ne.name;Array.isArray(Ce)&&(Ce=Ce.join("_")),Array.isArray(G)&&Ce&&(Ce="".concat(G.join("."),".").concat(Ce));var ke=Ce&&"form-".concat((he=H.formKey)!==null&&he!==void 0?he:"","-field-").concat(Ce);return ke},[ma(ne==null?void 0:ne.name),G,H.formKey]),ee=pa(N),le=i.useCallback(function(){var he;O||k?X([]):N.renderFormItem&&K([]);for(var Ce=arguments.length,ke=new Array(Ce),Te=0;Te0?S.jsx("div",{className:"".concat(u,"-action"),children:j}):null,X={name:P.name,field:h,index:g,record:y==null||(r=y.getFieldValue)===null||r===void 0?void 0:r.call(y,[w.listName,P.name,h.name].filter(function(q){return q!==void 0}).flat(1)),fields:v,operation:c,meta:m},H=za(),Z=H.grid,U=(o==null?void 0:o(A,X))||A,ae=(s==null?void 0:s({listDom:S.jsx("div",{className:"".concat(u,"-container"),style:{width:Z?"100%":void 0},children:U}),action:V},X))||S.jsxs("div",{className:"".concat(u,"-item ").concat(l?"".concat(u,"-item-show-label"):""),style:{display:"flex",alignItems:"flex-end"},children:[S.jsx("div",{className:"".concat(u,"-container"),style:{width:Z?"100%":void 0},children:U}),V]});return S.jsx(Ro.Provider,{value:p(p({},h),{},{listName:[w.listName,b,h.name].filter(function(q){return q!==void 0}).flat(1)}),children:ae})},wO=function(t){var r=Tt(),n=t.creatorButtonProps,a=t.prefixCls,o=t.children,s=t.creatorRecord,l=t.action,u=t.fields,c=t.actionGuard,d=t.max,f=t.fieldExtraRender,v=t.meta,m=t.containerClassName,h=t.containerStyle,g=t.onAfterAdd,y=t.onAfterRemove,b=i.useRef(new Map),C=i.useState(!1),x=Y(C,2),E=x[0],P=x[1],w=i.useMemo(function(){return u.map(function(D){var O,k;if(!(!((O=b.current)===null||O===void 0)&&O.has(D.key.toString()))){var M;(M=b.current)===null||M===void 0||M.set(D.key.toString(),Ku())}var F=(k=b.current)===null||k===void 0?void 0:k.get(D.key.toString());return p(p({},D),{},{uuid:F})})},[u]),T=i.useMemo(function(){var D=p({},l),O=w.length;return c!=null&&c.beforeAddRow?D.add=xt(Ve().mark(function k(){var M,F,N,I,L,A=arguments;return Ve().wrap(function(K){for(;;)switch(K.prev=K.next){case 0:for(M=A.length,F=new Array(M),N=0;N0?S.jsx("div",{style:{display:"none"},children:H}):null]},[o,N,_,w]),j=Y(z,2),V=j[0],X=j[1];return S.jsx(F,{children:S.jsxs("div",{className:ve(I,B({},"".concat(I,"-twoLine"),c==="twoLine")),style:u,ref:t,children:[X,(f||v||P)&&S.jsx("div",{className:"".concat(I,"-title"),style:C,onClick:function(){D(!R)},children:P?S.jsxs("div",{style:{display:"flex",width:"100%",alignItems:"center",justifyContent:"space-between"},children:[K,S.jsx("span",{onClick:function(Z){return Z.stopPropagation()},children:P})]}):K}),s&&R?null:V]})})});yp.displayName="ProForm-Group";const zO=yp;var Xi={exports:{}};Xi.exports;(function(e,t){var r=200,n="__lodash_hash_undefined__",a=800,o=16,s=9007199254740991,l="[object Arguments]",u="[object Array]",c="[object AsyncFunction]",d="[object Boolean]",f="[object Date]",v="[object Error]",m="[object Function]",h="[object GeneratorFunction]",g="[object Map]",y="[object Number]",b="[object Null]",C="[object Object]",x="[object Proxy]",E="[object RegExp]",P="[object Set]",w="[object String]",T="[object Undefined]",$="[object WeakMap]",R="[object ArrayBuffer]",D="[object DataView]",O="[object Float32Array]",k="[object Float64Array]",M="[object Int8Array]",F="[object Int16Array]",N="[object Int32Array]",I="[object Uint8Array]",L="[object Uint8ClampedArray]",A="[object Uint16Array]",_="[object Uint32Array]",K=/[\\^$.*+?()[\]{}|]/g,z=/^\[object .+?Constructor\]$/,j=/^(?:0|[1-9]\d*)$/,V={};V[O]=V[k]=V[M]=V[F]=V[N]=V[I]=V[L]=V[A]=V[_]=!0,V[l]=V[u]=V[R]=V[d]=V[D]=V[f]=V[v]=V[m]=V[g]=V[y]=V[C]=V[E]=V[P]=V[w]=V[$]=!1;var X=typeof ci=="object"&&ci&&ci.Object===Object&&ci,H=typeof self=="object"&&self&&self.Object===Object&&self,Z=X||H||Function("return this")(),U=t&&!t.nodeType&&t,ae=U&&!0&&e&&!e.nodeType&&e,q=ae&&ae.exports===U,ne=q&&X.process,ue=function(){try{var W=ae&&ae.require&&ae.require("util").types;return W||ne&&ne.binding&&ne.binding("util")}catch{}}(),G=ue&&ue.isTypedArray;function te(W,oe,pe){switch(pe.length){case 0:return W.call(oe);case 1:return W.call(oe,pe[0]);case 2:return W.call(oe,pe[0],pe[1]);case 3:return W.call(oe,pe[0],pe[1],pe[2])}return W.apply(oe,pe)}function ee(W,oe){for(var pe=-1,qe=Array(W);++pe-1}function Ot(W,oe){var pe=this.__data__,qe=st(pe,W);return qe<0?(++this.size,pe.push([W,oe])):pe[qe][1]=oe,this}$e.prototype.clear=xe,$e.prototype.delete=Je,$e.prototype.get=dt,$e.prototype.has=ut,$e.prototype.set=Ot;function Dt(W){var oe=-1,pe=W==null?0:W.length;for(this.clear();++oe1?pe[Et-1]:void 0,At=Et>2?pe[2]:void 0;for(Mt=W.length>3&&typeof Mt=="function"?(Et--,Mt):void 0,At&&Ua(pe[0],pe[1],At)&&(Mt=Et<3?void 0:Mt,Et=1),oe=Object(oe);++qe-1&&W%1==0&&W0){if(++oe>=a)return arguments[0]}else oe=0;return W.apply(void 0,arguments)}}function gr(W){if(W!=null){try{return ie.call(W)}catch{}try{return W+""}catch{}}return""}function Fn(W,oe){return W===oe||W!==W&&oe!==oe}var sa=qt(function(){return arguments}())?qt:function(W){return yr(W)&&se.call(W,"callee")&&!ct.call(W,"callee")},Ga=Array.isArray;function Kr(W){return W!=null&&ri(W.length)&&!Vr(W)}function ti(W){return yr(W)&&Kr(W)}var ni=mt||si;function Vr(W){if(!$n(W))return!1;var oe=_t(W);return oe==m||oe==h||oe==c||oe==x}function ri(W){return typeof W=="number"&&W>-1&&W%1==0&&W<=s}function $n(W){var oe=typeof W;return W!=null&&(oe=="object"||oe=="function")}function yr(W){return W!=null&&typeof W=="object"}function $l(W){if(!yr(W)||_t(W)!=C)return!1;var oe=et(W);if(oe===null)return!0;var pe=se.call(oe,"constructor")&&oe.constructor;return typeof pe=="function"&&pe instanceof pe&&ie.call(pe)==ke}var ua=G?le(G):cr;function Ol(W){return Zn(W,ai(W))}function ai(W){return Kr(W)?Oe(W,!0):Xn(W)}var oi=_r(function(W,oe,pe){oa(W,oe,pe)});function ii(W){return function(){return W}}function li(W){return W}function si(){return!1}e.exports=oi})(Xi,Xi.exports);var BO=Xi.exports;const bp=Da(BO);var HO=["children","trigger","onVisibleChange","drawerProps","onFinish","submitTimeout","title","width","visible"];function WO(e){var t,r,n,a,o=e.children,s=e.trigger,l=e.onVisibleChange,u=e.drawerProps,c=e.onFinish,d=e.submitTimeout,f=e.title,v=e.width,m=e.visible,h=ze(e,HO);tn(!h.footer||!(u!=null&&u.footer),"DrawerForm 是一个 ProForm 的特殊布局,如果想自定义按钮,请使用 submit.render 自定义。");var g=i.useContext(yt.ConfigContext),y=i.useState([]),b=Y(y,2),C=b[1],x=i.useState(!1),E=Y(x,2),P=E[0],w=E[1],T=Rt(!!m,{value:m,onChange:l}),$=Y(T,2),R=$[0],D=$[1],O=i.useRef(null),k=i.useCallback(function(_){O.current===null&&_&&C([]),O.current=_},[]),M=i.useRef(),F=i.useCallback(function(){var _,K,z,j=(_=(K=(z=h.formRef)===null||z===void 0?void 0:z.current)!==null&&K!==void 0?K:h.form)!==null&&_!==void 0?_:M.current;j&&(u!=null&&u.destroyOnClose)&&j.resetFields()},[u==null?void 0:u.destroyOnClose,h.form,h.formRef]);i.useEffect(function(){R&&m&&(l==null||l(!0))},[m,R]);var N=i.useMemo(function(){return s?Q.cloneElement(s,p(p({key:"trigger"},s.props),{},{onClick:function(){var _=xt(Ve().mark(function z(j){var V,X;return Ve().wrap(function(Z){for(;;)switch(Z.prev=Z.next){case 0:D(!R),(V=s.props)===null||V===void 0||(X=V.onClick)===null||X===void 0||X.call(V,j);case 2:case"end":return Z.stop()}},z)}));function K(z){return _.apply(this,arguments)}return K}()})):null},[D,s,R]),I=i.useMemo(function(){var _,K,z,j,V,X;return h.submitter===!1?!1:bp({searchConfig:{submitText:(_=(K=g.locale)===null||K===void 0||(z=K.Modal)===null||z===void 0?void 0:z.okText)!==null&&_!==void 0?_:"确认",resetText:(j=(V=g.locale)===null||V===void 0||(X=V.Modal)===null||X===void 0?void 0:X.cancelText)!==null&&j!==void 0?j:"取消"},resetButtonProps:{preventDefault:!0,disabled:d?P:void 0,onClick:function(Z){var U;D(!1),F(),u==null||(U=u.onClose)===null||U===void 0||U.call(u,Z)}}},h.submitter)},[h.submitter,(t=g.locale)===null||t===void 0||(r=t.Modal)===null||r===void 0?void 0:r.okText,(n=g.locale)===null||n===void 0||(a=n.Modal)===null||a===void 0?void 0:a.cancelText,d,P,D,F,u]),L=i.useCallback(function(_,K){return S.jsxs(S.Fragment,{children:[_,O.current&&K?rv.createPortal(K,O.current):K]})},[]),A=Bt(function(){var _=xt(Ve().mark(function K(z){var j,V,X;return Ve().wrap(function(Z){for(;;)switch(Z.prev=Z.next){case 0:return j=c==null?void 0:c(z),d&&j instanceof Promise&&(w(!0),V=setTimeout(function(){return w(!1)},d),j.finally(function(){clearTimeout(V),w(!1)})),Z.next=4,j;case 4:return X=Z.sent,X&&D(!1),Z.abrupt("return",X);case 7:case"end":return Z.stop()}},K)}));return function(K){return _.apply(this,arguments)}}());return S.jsxs(S.Fragment,{children:[S.jsx(S0,p(p({title:f,width:v||800},u),{},{visible:R,onClose:function(K){var z;d&&P||(F(),D(!1),u==null||(z=u.onClose)===null||z===void 0||z.call(u,K))},afterVisibleChange:function(K){var z;K||F(),u==null||(z=u.afterVisibleChange)===null||z===void 0||z.call(u,K)},footer:h.submitter!==!1&&S.jsx("div",{ref:k,style:{display:"flex",justifyContent:"flex-end"}}),children:S.jsx(S.Fragment,{children:S.jsx(Ba,p(p({formComponentType:"DrawerForm",layout:"vertical",formRef:M},h),{},{submitter:I,onFinish:function(){var _=xt(Ve().mark(function z(j){var V;return Ve().wrap(function(H){for(;;)switch(H.prev=H.next){case 0:return H.next=2,A(j);case 2:return V=H.sent,V===!0&&F(),H.abrupt("return",V);case 5:case"end":return H.stop()}},z)}));function K(z){return _.apply(this,arguments)}return K}(),contentRender:L,children:o}))})})),N]})}var UO=["size","collapse","collapseLabel","initialValues","onValuesChange","form","placement","formRef","bordered","ignoreRules","footerRender"],YO=function(t){var r=t.items,n=t.prefixCls,a=t.size,o=a===void 0?"middle":a,s=t.collapse,l=t.collapseLabel,u=t.onValuesChange,c=t.bordered,d=t.values,f=t.footerRender,v=t.placement,m=Tt(),h="".concat(n,"-light-filter"),g=i.useState(!1),y=Y(g,2),b=y[0],C=y[1],x=i.useState(function(){return p({},d)}),E=Y(x,2),P=E[0],w=E[1];i.useEffect(function(){w(p({},d))},[d]);var T=i.useMemo(function(){var O=[],k=[];return r.forEach(function(M){var F=M.props||{},N=F.secondary;N||s?O.push(M):k.push(M)}),{collapseItems:O,outsideItems:k}},[t.items]),$=T.collapseItems,R=T.outsideItems,D=function(){return l||(s?S.jsx(Lg,{className:"".concat(h,"-collapse-icon")}):S.jsx(aa,{size:o,label:m.getMessage("form.lightFilter.more","更多筛选"),expanded:b}))};return S.jsx("div",{className:ve(h,"".concat(h,"-").concat(o),B({},"".concat(h,"-effective"),Object.keys(d).some(function(O){return d[O]}))),children:S.jsxs("div",{className:"".concat(h,"-container"),children:[R.map(function(O,k){var M=O.key,F=O.props.fieldProps,N=F!=null&&F.placement?F==null?void 0:F.placement:v;return S.jsx("div",{className:"".concat(h,"-item"),children:Q.cloneElement(O,{fieldProps:p(p({},O.props.fieldProps),{},{placement:N}),proFieldProps:{light:!0,label:O.props.label,bordered:c},bordered:c})},M||k)}),$.length?S.jsx("div",{className:"".concat(h,"-item"),children:S.jsx(Ph,{padding:24,onVisibleChange:C,visible:b,placement:v,label:D(),footerRender:f,footer:{onConfirm:function(){u(p({},P)),C(!1)},onClear:function(){var k={};$.forEach(function(M){var F=M.props.name;k[F]=void 0}),u(k)}},children:$.map(function(O){var k=O.key,M=O.props,F=M.name,N=M.fieldProps,I=p(p({},N),{},{onChange:function(_){return w(p(p({},P),{},B({},F,_!=null&&_.target?_.target.value:_))),!1}});P.hasOwnProperty(F)&&(I[O.props.valuePropName||"value"]=P[F]);var L=N!=null&&N.placement?N==null?void 0:N.placement:v;return S.jsx("div",{className:"".concat(h,"-line"),children:Q.cloneElement(O,{fieldProps:p(p({},I),{},{placement:L})})},k)})})},"more"):null]})})};function GO(e){var t=e.size,r=e.collapse,n=e.collapseLabel,a=e.initialValues,o=e.onValuesChange,s=e.form,l=e.placement,u=e.formRef,c=e.bordered;e.ignoreRules;var d=e.footerRender,f=ze(e,UO),v=i.useContext(yt.ConfigContext),m=v.getPrefixCls,h=m("pro-form"),g=i.useState(function(){return p({},a)}),y=Y(g,2),b=y[0],C=y[1],x=i.useRef();return i.useImperativeHandle(u,function(){return x.current}),S.jsx(Ba,p(p({size:t,initialValues:a,form:s,contentRender:function(P){return S.jsx(YO,{prefixCls:h,items:P.flatMap(function(w){return(w==null?void 0:w.type.displayName)==="ProForm-Group"?w.props.children:w}),size:t,bordered:c,collapse:r,collapseLabel:n,placement:l,values:b||{},footerRender:d,onValuesChange:function(T){var $,R,D=p(p({},b),T);C(D),($=x.current)===null||$===void 0||$.setFieldsValue(D),(R=x.current)===null||R===void 0||R.submit(),o&&o(T,D)}})},formRef:x,formItemProps:{colon:!1,labelAlign:"left"},fieldProps:{style:{width:void 0}}},nn(f,["labelWidth"])),{},{onValuesChange:function(P,w){var T;C(w),o==null||o(P,w),(T=x.current)===null||T===void 0||T.submit()}}))}var qO=["children","trigger","onVisibleChange","modalProps","onFinish","submitTimeout","title","width","visible"];function XO(e){var t,r,n,a,o=e.children,s=e.trigger,l=e.onVisibleChange,u=e.modalProps,c=e.onFinish,d=e.submitTimeout,f=e.title,v=e.width,m=e.visible,h=ze(e,qO);tn(!h.footer||!(u!=null&&u.footer),"ModalForm 是一个 ProForm 的特殊布局,如果想自定义按钮,请使用 submit.render 自定义。");var g=i.useContext(yt.ConfigContext),y=i.useState([]),b=Y(y,2),C=b[1],x=i.useState(!1),E=Y(x,2),P=E[0],w=E[1],T=Rt(!!m,{value:m,onChange:l}),$=Y(T,2),R=$[0],D=$[1],O=i.useRef(null),k=i.useCallback(function(_){O.current===null&&_&&C([]),O.current=_},[]),M=i.useRef(),F=i.useCallback(function(){var _,K,z,j=(_=(K=h.form)!==null&&K!==void 0?K:(z=h.formRef)===null||z===void 0?void 0:z.current)!==null&&_!==void 0?_:M.current;j&&(u!=null&&u.destroyOnClose)&&j.resetFields()},[u==null?void 0:u.destroyOnClose,h.form,h.formRef]);i.useEffect(function(){R&&m&&(l==null||l(!0))},[m,R]);var N=i.useMemo(function(){return s?Q.cloneElement(s,p(p({key:"trigger"},s.props),{},{onClick:function(){var _=xt(Ve().mark(function z(j){var V,X;return Ve().wrap(function(Z){for(;;)switch(Z.prev=Z.next){case 0:D(!R),(V=s.props)===null||V===void 0||(X=V.onClick)===null||X===void 0||X.call(V,j);case 2:case"end":return Z.stop()}},z)}));function K(z){return _.apply(this,arguments)}return K}()})):null},[D,s,R]),I=i.useMemo(function(){var _,K,z,j,V,X,H,Z;return h.submitter===!1?!1:bp({searchConfig:{submitText:(_=(K=u==null?void 0:u.okText)!==null&&K!==void 0?K:(z=g.locale)===null||z===void 0||(j=z.Modal)===null||j===void 0?void 0:j.okText)!==null&&_!==void 0?_:"确认",resetText:(V=(X=u==null?void 0:u.cancelText)!==null&&X!==void 0?X:(H=g.locale)===null||H===void 0||(Z=H.Modal)===null||Z===void 0?void 0:Z.cancelText)!==null&&V!==void 0?V:"取消"},resetButtonProps:{preventDefault:!0,disabled:d?P:void 0,onClick:function(ae){var q;D(!1),F(),u==null||(q=u.onCancel)===null||q===void 0||q.call(u,ae)}}},h.submitter)},[(t=g.locale)===null||t===void 0||(r=t.Modal)===null||r===void 0?void 0:r.cancelText,(n=g.locale)===null||n===void 0||(a=n.Modal)===null||a===void 0?void 0:a.okText,u,h.submitter,D,P,d,F]),L=i.useCallback(function(_,K){return S.jsxs(S.Fragment,{children:[_,O.current&&K?rv.createPortal(K,O.current):K]})},[]),A=i.useCallback(function(){var _=xt(Ve().mark(function K(z){var j,V,X;return Ve().wrap(function(Z){for(;;)switch(Z.prev=Z.next){case 0:return j=c==null?void 0:c(z),d&&j instanceof Promise&&(w(!0),V=setTimeout(function(){return w(!1)},d),j.finally(function(){clearTimeout(V),w(!1)})),Z.next=4,j;case 4:return X=Z.sent,X&&D(!1),Z.abrupt("return",X);case 7:case"end":return Z.stop()}},K)}));return function(K){return _.apply(this,arguments)}}(),[c,D,d]);return S.jsxs(S.Fragment,{children:[S.jsx(p0,p(p({title:f,width:v||800},u),{},{visible:R,onCancel:function(K){var z;d&&P||(D(!1),u==null||(z=u.onCancel)===null||z===void 0||z.call(u,K))},afterClose:function(){var K;F(),u==null||(K=u.afterClose)===null||K===void 0||K.call(u)},footer:h.submitter!==!1&&S.jsx("div",{ref:k,style:{display:"flex",justifyContent:"flex-end"}}),children:S.jsx(Ba,p(p({formComponentType:"ModalForm",layout:"vertical",formRef:M},h),{},{submitter:I,onFinish:function(){var _=xt(Ve().mark(function z(j){var V;return Ve().wrap(function(H){for(;;)switch(H.prev=H.next){case 0:return H.next=2,A(j);case 2:return V=H.sent,V===!0&&F(),H.abrupt("return",V);case 5:case"end":return H.stop()}},z)}));function K(z){return _.apply(this,arguments)}return K}(),contentRender:L,children:o}))})),N]})}var ZO=function(t,r,n,a){return t?S.jsxs(S.Fragment,{children:[n.getMessage("tableForm.collapsed","展开"),a&&"(".concat(a,")"),S.jsx(yo,{style:{marginLeft:"0.5em",transition:"0.3s all",transform:"rotate(".concat(t?0:.5,"turn)")}})]}):S.jsxs(S.Fragment,{children:[n.getMessage("tableForm.expand","收起"),S.jsx(yo,{style:{marginLeft:"0.5em",transition:"0.3s all",transform:"rotate(".concat(t?0:.5,"turn)")}})]})},QO=function(t){var r=t.setCollapsed,n=t.collapsed,a=n===void 0?!1:n,o=t.submitter,s=t.style,l=t.hiddenNum,u=i.useContext(yt.ConfigContext),c=u.getPrefixCls,d=Tt(),f=Fh(t.collapseRender)||ZO;return S.jsxs(Xt,{style:s,size:16,children:[o,t.collapseRender!==!1&&S.jsx("a",{className:c("pro-form-collapse-button"),onClick:function(){return r(!a)},children:f==null?void 0:f(a,t,d,l)})]})};const JO=QO;var eD=["collapsed","layout","defaultCollapsed","defaultColsNumber","span","searchGutter","searchText","resetText","optionRender","collapseRender","onReset","onCollapse","labelWidth","style","split","preserve","ignoreRules","showHiddenNum"],ns,rs,tD={xs:513,sm:513,md:785,lg:992,xl:1057,xxl:1/0},Of={vertical:[[513,1,"vertical"],[785,2,"vertical"],[1057,3,"vertical"],[1/0,4,"vertical"]],default:[[513,1,"vertical"],[701,2,"vertical"],[1062,3,"horizontal"],[1352,3,"horizontal"],[1/0,4,"horizontal"]]},nD=function(t,r,n){if(n&&typeof n=="number")return{span:n,layout:t};var a=n?["xs","sm","md","lg","xl","xxl"].map(function(s){return[tD[s],24/n[s],"horizontal"]}):Of[t||"default"],o=(a||Of.default).find(function(s){return rh-1)&&!!M&&C>=24;x+=1;var j=Q.isValidElement(k)&&(k.key||"".concat((L=k.props)===null||L===void 0?void 0:L.name))||M;return Q.isValidElement(k)&&z?t.preserve?{itemDom:Q.cloneElement(k,{hidden:!0,key:j||M}),hidden:!0,colSpan:_}:{itemDom:null,colSpan:0,hidden:!0}:{itemDom:k,colSpan:_,hidden:!1}}),$=T.map(function(k,M){var F,N,I=k.itemDom,L=k.colSpan,A=I==null||(F=I.props)===null||F===void 0?void 0:F.hidden;if(A)return I;var _=Q.isValidElement(I)&&(I.key||"".concat((N=I.props)===null||N===void 0?void 0:N.name))||M;24-w%2417&&k(L.width)},children:S.jsx(Ba,p(p({isKeyPressSubmit:!0,preserve:C},w),{},{className:ve($,w.className),onReset:f,style:g,layout:M.layout,fieldProps:{style:{width:"100%"}},formItemProps:N,groupProps:{titleStyle:{display:"inline-block",marginRight:16}},contentRender:function(L,A,_){return S.jsx(aD,{spanSize:M,collapsed:t,form:_,collapseRender:d,defaultCollapsed:a,onCollapse:v,optionRender:c,submitter:A,items:L,split:y,resetText:e.resetText,searchText:e.searchText,searchGutter:u,preserve:C,ignoreRules:x,showLength:F,showHiddenNum:P})}}))},"resize-observer")}var lD=["onFinish","step","formRef","title","stepProps"];function sD(e){var t=i.useRef(),r=i.useContext(Cp),n=e.onFinish,a=e.step,o=e.formRef;e.title,e.stepProps;var s=ze(e,lD);return tn(!s.submitter,"StepForm 不包含提交按钮,请在 StepsForm 上"),i.useImperativeHandle(o,function(){return t.current}),i.useEffect(function(){if(e.name||e.step){var l=(e.name||e.step).toString();return r==null||r.regForm(l,e),function(){r==null||r.unRegForm(l)}}},[]),r&&(r!=null&&r.formArrayRef)&&(r.formArrayRef.current[a||0]=t),S.jsx(Ba,p({formRef:t,onFinish:function(){var l=xt(Ve().mark(function c(d){var f;return Ve().wrap(function(m){for(;;)switch(m.prev=m.next){case 0:if(s.name&&(r==null||r.onFormFinish(s.name,d)),!n){m.next=9;break}return r==null||r.setLoading(!0),m.next=5,n==null?void 0:n(d);case 5:return f=m.sent,f&&(r==null||r.next()),r==null||r.setLoading(!1),m.abrupt("return");case 9:r!=null&&r.lastStep||r==null||r.next();case 10:case"end":return m.stop()}},c)}));function u(c){return l.apply(this,arguments)}return u}(),layout:"vertical"},s))}var uD=["current","onCurrentChange","submitter","stepsFormRender","stepsRender","stepFormRender","stepsProps","onFinish","formProps","containerStyle","formRef","formMapRef"],Cp=Q.createContext(void 0),cD={horizontal:function(t){var r=t.stepsDom,n=t.formDom;return S.jsxs(S.Fragment,{children:[S.jsx(Un,{gutter:{xs:8,sm:16,md:24},children:S.jsx(Zt,{span:24,children:r})}),S.jsx(Un,{gutter:{xs:8,sm:16,md:24},children:S.jsx(Zt,{span:24,children:n})})]})},vertical:function(t){var r=t.stepsDom,n=t.formDom;return S.jsxs(Un,{align:"stretch",wrap:!0,gutter:{xs:8,sm:16,md:24},children:[S.jsx(Zt,{xxl:4,xl:6,lg:7,md:8,sm:10,xs:12,children:Q.cloneElement(r,{style:{height:"100%"}})}),S.jsx(Zt,{children:S.jsx("div",{style:{display:"flex",alignItems:"center",width:"100%",height:"100%"},children:n})})]})}};function dD(e){var t=i.useContext(yt.ConfigContext),r=t.getPrefixCls,n=r("pro-steps-form");e.current,e.onCurrentChange;var a=e.submitter,o=e.stepsFormRender,s=e.stepsRender,l=e.stepFormRender,u=e.stepsProps,c=e.onFinish,d=e.formProps,f=e.containerStyle,v=e.formRef,m=e.formMapRef,h=ze(e,uD),g=i.useRef(new Map),y=i.useRef(new Map),b=i.useRef([]),C=i.useState([]),x=Y(C,2),E=x[0],P=x[1],w=i.useState(!1),T=Y(w,2),$=T[0],R=T[1],D=Tt(),O=Rt(0,{value:e.current,onChange:e.onCurrentChange}),k=Y(O,2),M=k[0],F=k[1],N=i.useMemo(function(){return cD[(u==null?void 0:u.direction)||"horizontal"]},[u==null?void 0:u.direction]),I=i.useMemo(function(){return M===E.length-1},[E.length,M]),L=i.useCallback(function(G,te){y.current.has(G)||P(function(ee){return[].concat(Ke(ee),[G])}),y.current.set(G,te)},[]),A=i.useCallback(function(G){P(function(te){return te.filter(function(ee){return ee!==G})}),y.current.delete(G),g.current.delete(G)},[]);i.useImperativeHandle(m,function(){return b.current}),i.useImperativeHandle(v,function(){var G;return(G=b.current[M||0])===null||G===void 0?void 0:G.current},[M]);var _=i.useCallback(function(){var G=xt(Ve().mark(function te(ee,le){var re,ge;return Ve().wrap(function(me){for(;;)switch(me.prev=me.next){case 0:if(g.current.set(ee,le),!(!I||!c)){me.next=3;break}return me.abrupt("return");case 3:return R(!0),re=Rl.apply(void 0,[{}].concat(Ke(Array.from(g.current.values())))),me.prev=5,me.next=8,c(re);case 8:ge=me.sent,ge&&(F(0),b.current.forEach(function(ce){var fe;return(fe=ce.current)===null||fe===void 0?void 0:fe.resetFields()})),me.next=15;break;case 12:me.prev=12,me.t0=me.catch(5),console.log(me.t0);case 15:return me.prev=15,R(!1),me.finish(15);case 18:case"end":return me.stop()}},te,null,[[5,12,15,18]])}));return function(te,ee){return G.apply(this,arguments)}}(),[I,c,R,F]),K=i.useMemo(function(){return S.jsx("div",{className:"".concat(n,"-steps-container"),style:{maxWidth:Math.min(E.length*320,1160)},children:S.jsx(Fc,p(p({},u),{},{current:M,onChange:void 0,children:E.map(function(G){var te=y.current.get(G);return S.jsx(Fc.Step,p({title:te==null?void 0:te.title},te==null?void 0:te.stepProps),G)})}))})},[E,n,M,u]),z=Bt(function(){var G,te=b.current[M];(G=te.current)===null||G===void 0||G.submit()}),j=Bt(function(){M<1||F(M-1)}),V=i.useMemo(function(){return a!==!1&&S.jsx(An,p(p({type:"primary",loading:$},a==null?void 0:a.submitButtonProps),{},{onClick:function(){var te;a==null||(te=a.onSubmit)===null||te===void 0||te.call(a),z()},children:D.getMessage("stepsForm.next","下一步")}),"next")},[D,$,z,a]),X=i.useMemo(function(){return a!==!1&&S.jsx(An,p(p({},a==null?void 0:a.resetButtonProps),{},{onClick:function(){var te;j(),a==null||(te=a.onReset)===null||te===void 0||te.call(a)},children:D.getMessage("stepsForm.prev","上一步")}),"pre")},[D,j,a]),H=i.useMemo(function(){return a!==!1&&S.jsx(An,p(p({type:"primary",loading:$},a==null?void 0:a.submitButtonProps),{},{onClick:function(){var te;a==null||(te=a.onSubmit)===null||te===void 0||te.call(a),z()},children:D.getMessage("stepsForm.submit","提交")}),"submit")},[D,$,z,a]),Z=Bt(function(){M>E.length-2||F(M+1)}),U=i.useMemo(function(){var G=[],te=M||0;if(te<1?G.push(V):te+1===E.length?G.push(X,H):G.push(X,V),G=G.filter(Q.isValidElement),a&&a.render){var ee,le={form:(ee=b.current[M])===null||ee===void 0?void 0:ee.current,onSubmit:z,step:M,onPre:j};return a.render(le,G)}return a&&(a==null?void 0:a.render)===!1?null:G},[E.length,V,z,X,j,M,H,a]),ae=i.useMemo(function(){return Mn(e.children).map(function(G,te){var ee=G.props,le=ee.name||"".concat(te),re=M===te,ge=re?{contentRender:l,submitter:!1}:{};return S.jsx("div",{className:ve("".concat(n,"-step"),B({},"".concat(n,"-step-active"),re)),children:Q.cloneElement(G,p(p(p(p({},ge),d),ee),{},{name:le,step:te,key:le}))},le)})},[d,n,e.children,M,l]),q=i.useMemo(function(){return s?s(E.map(function(G){var te;return{key:G,title:(te=y.current.get(G))===null||te===void 0?void 0:te.title}}),K):K},[E,K,s]),ne=i.useMemo(function(){return S.jsxs("div",{className:"".concat(n,"-container"),style:f,children:[ae,o?null:S.jsx(Xt,{children:U})]})},[f,ae,n,o,U]),ue=i.useMemo(function(){var G={stepsDom:q,formDom:ne};return o?o(N(G),U):N(G)},[q,ne,N,o,U]);return S.jsx("div",{className:n,children:S.jsx(Ht.Provider,p(p({},h),{},{children:S.jsx(Cp.Provider,{value:{loading:$,setLoading:R,regForm:L,keyArray:E,next:Z,formArrayRef:b,formMapRef:y,lastStep:I,unRegForm:A,onFormFinish:_},children:ue})}))})}function Fl(e){return S.jsx(Lu,{children:S.jsx(dD,p({},e))})}Fl.StepForm=sD;Fl.useForm=Ht.useForm;var fD=function(t){var r=t.children;return S.jsx(S.Fragment,{children:r})};const vD=fD;var mD=["steps","columns","forceUpdate","grid"],hD=function(t){var r=t.steps,n=t.columns,a=t.forceUpdate,o=t.grid,s=ze(t,mD),l=ju(s),u=i.useCallback(function(d){var f,v;(f=(v=l.current).onCurrentChange)===null||f===void 0||f.call(v,d),a([])},[a,l]),c=i.useMemo(function(){return r==null?void 0:r.map(function(d,f){return i.createElement(xp,p(p({grid:o},d),{},{key:f,layoutType:"StepForm",columns:n[f]}))})},[n,o,r]);return S.jsx(Fl,p(p({},s),{},{onCurrentChange:u,children:c}))};const pD=hD;var gD=function(t,r){var n=r.genItems;if(t.valueType==="dependency"){var a,o,s,l=(a=t.getFieldProps)===null||a===void 0?void 0:a.call(t);return tn(Array.isArray((o=t.name)!==null&&o!==void 0?o:l==null?void 0:l.name),'SchemaForm: fieldProps.name should be NamePath[] when valueType is "dependency"'),tn(typeof t.columns=="function",'SchemaForm: columns should be a function when valueType is "dependency"'),Array.isArray((s=t.name)!==null&&s!==void 0?s:l==null?void 0:l.name)?i.createElement(Wu,p(p({name:t.name},l),{},{key:t.key}),function(u){return!t.columns||typeof t.columns!="function"?null:n(t.columns(u))}):null}return!0},yD=function(t){if(t.valueType==="divider"){var r;return i.createElement(hv,p(p({},(r=t.getFieldProps)===null||r===void 0?void 0:r.call(t)),{},{key:t.key}))}return!0},bD=function(t,r){var n=r.action,a=r.formRef,o=r.type,s=r.originItem,l=p(p({},nn(t,["dataIndex","width","render","renderFormItem","renderText","title"])),{},{name:t.dataIndex,width:t.width,render:t!=null&&t.render?function(f,v,m){var h,g,y;return t==null||(h=t.render)===null||h===void 0?void 0:h.call(t,f,v,m,n==null?void 0:n.current,p(p({type:o},t),{},{formItemProps:(g=t.getFormItemProps)===null||g===void 0?void 0:g.call(t),fieldProps:(y=t.getFieldProps)===null||y===void 0?void 0:y.call(t)}))}:void 0}),u=function(){return S.jsx(qi,p(p({},l),{},{ignoreFormItem:!0}))},c=t!=null&&t.renderFormItem?function(f,v){var m,h,g,y=Jt(p(p({},v),{},{onChange:void 0}));return t==null||(m=t.renderFormItem)===null||m===void 0?void 0:m.call(t,p(p({type:o},t),{},{formItemProps:(h=t.getFormItemProps)===null||h===void 0?void 0:h.call(t),fieldProps:(g=t.getFieldProps)===null||g===void 0?void 0:g.call(t),originProps:s}),p(p({},y),{},{defaultRender:u,type:o}),a.current)}:void 0;if(t!=null&&t.renderFormItem){var d=c==null?void 0:c(null,{});if(!d||t.ignoreFormItem)return d}return i.createElement(qi,p(p({},l),{},{key:"".concat(t.key,"-").concat(t.index),renderFormItem:c}))},CD=function(t,r){var n=r.genItems;if(t.valueType==="formList"&&t.dataIndex){var a,o,s,l,u,c,d,f,v,m,h;return!t.columns||!Array.isArray(t.columns)?null:S.jsx(PO,p(p({name:t.dataIndex,label:t.label,initialValue:t.initialValue,colProps:t.colProps,rowProps:t.rowProps},(a=t.getFieldProps)===null||a===void 0?void 0:a.call(t)),{},{isValidateList:(o=((u=t.getFormItemProps)===null||u===void 0?void 0:u.call(t))||((c=t.getFieldProps)===null||c===void 0?void 0:c.call(t)))===null||o===void 0||(s=o.rules)===null||s===void 0||(l=s[0])===null||l===void 0?void 0:l.required,emptyListMessage:(d=((m=t.getFormItemProps)===null||m===void 0?void 0:m.call(t))||((h=t.getFieldProps)===null||h===void 0?void 0:h.call(t)))===null||d===void 0||(f=d.rules)===null||f===void 0||(v=f[0])===null||v===void 0?void 0:v.message,children:n(t.columns)}),t.key)}return!0},xD=function(t,r){var n=r.genItems;if(t.valueType==="formSet"&&t.dataIndex){var a,o;return!t.columns||!Array.isArray(t.columns)?null:i.createElement(IO,p(p({},(a=t.getFormItemProps)===null||a===void 0?void 0:a.call(t)),{},{key:t.key,initialValue:t.initialValue,name:t.dataIndex,label:t.label,colProps:t.colProps,rowProps:t.rowProps},(o=t.getFieldProps)===null||o===void 0?void 0:o.call(t)),n(t.columns))}return!0},SD=function(t,r){var n=r.genItems;if(t.valueType==="group"){var a;return!t.columns||!Array.isArray(t.columns)?null:S.jsx(DD,p(p({label:t.label,colProps:t.colProps,rowProps:t.rowProps},(a=t.getFieldProps)===null||a===void 0?void 0:a.call(t)),{},{children:n(t.columns)}),t.key)}return!0},wD=function(t){return t.valueType&&typeof t.valueType=="string"&&["index","indexBorder","option"].includes(t==null?void 0:t.valueType)?null:!0},Df=[wD,SD,CD,xD,yD,gD],ED=function(t,r){for(var n=0;n0&&arguments[0]!==void 0?arguments[0]:[],z=If(K);if(!z)throw new Error("nameList is require");var j=(_=O())===null||_===void 0?void 0:_.getFieldValue(z),V=z?yn({},z,j):j;return pn(a(V,g,z),z)},getFieldFormatValueObject:function(_){var K,z=If(_),j=(K=O())===null||K===void 0?void 0:K.getFieldValue(z),V=z?yn({},z,j):j;return a(V,g,z)},validateFieldsReturnFormatValue:function(){var A=xt(Ve().mark(function K(z){var j,V,X;return Ve().wrap(function(Z){for(;;)switch(Z.prev=Z.next){case 0:if(!(!Array.isArray(z)&&z)){Z.next=2;break}throw new Error("nameList must be array");case 2:return Z.next=4,(j=O())===null||j===void 0?void 0:j.validateFields(z);case 4:return V=Z.sent,X=a(V,g),Z.abrupt("return",X||{});case 7:case"end":return Z.stop()}},K)}));function _(K){return A.apply(this,arguments)}return _}(),formRef:$}},[g,a]),M=i.useMemo(function(){return Q.Children.toArray(t).map(function(A,_){return _===0&&Q.isValidElement(A)&&b?Q.cloneElement(A,p(p({},A.props),{},{autoFocus:b})):A})},[b,t]),F=i.useMemo(function(){return typeof n=="boolean"||!n?{}:n},[n]);i.useImperativeHandle(o,function(){return p(p({},w),k)},[k,w]);var N=i.useMemo(function(){if(n!==!1)return S.jsx(ND,p(p({},F),{},{onReset:function(){var _,K,z=a((_=$.current)===null||_===void 0?void 0:_.getFieldsValue(),g);if(F==null||(K=F.onReset)===null||K===void 0||K.call(F,z),m==null||m(z),f){var j,V=Object.keys(a((j=$.current)===null||j===void 0?void 0:j.getFieldsValue(),!1)).reduce(function(X,H){return p(p({},X),{},B({},H,z[H]||void 0))},d);v(tu(f,V,"set"))}},submitButtonProps:p({loading:u},F.submitButtonProps)}),"submitter")},[n,F,u,a,g,m,f,d,v]),I=i.useMemo(function(){var A=C?S.jsx(D,{children:M}):M;return r?r(A,N,$.current):A},[C,D,M,r,N]),L=pa(e.initialValues);return i.useEffect(function(){if(!(f||!e.initialValues||!L||P.request)){var A=Gn(e.initialValues,L);tn(A,"initialValues 只在 form 初始化时生效,如果你需要异步加载推荐使用 request,或者 initialValues ?
: null "),tn(A,"The initialValues only take effect when the form is initialized, if you need to load asynchronously recommended request, or the initialValues ? : null ")}},[e.initialValues]),i.useEffect(function(){var A,_,K=a((A=$.current)===null||A===void 0||(_=A.getFieldsValue)===null||_===void 0?void 0:_.call(A,!0),g);s==null||s(K,$.current)},[]),S.jsx(Bo.Provider,{value:k,children:S.jsx(yt.SizeContext.Provider,{value:P.size||T,children:S.jsxs(mp.Provider,{value:{grid:C,colProps:E},children:[P.component!==!1&&S.jsx("input",{type:"text",style:{display:"none"}}),I]})})})}var _f=0;function Ba(e){var t=e.extraUrlParams,r=t===void 0?{}:t,n=e.syncToUrl,a=e.isKeyPressSubmit,o=e.syncToUrlAsImportant,s=o===void 0?!1:o,l=e.syncToInitialValues,u=l===void 0?!0:l;e.children,e.contentRender,e.submitter;var c=e.fieldProps,d=e.formItemProps,f=e.groupProps,v=e.dateFormatter,m=v===void 0?"string":v,h=e.formRef;e.onInit;var g=e.form,y=e.formComponentType;e.onReset,e.grid,e.rowProps,e.colProps;var b=e.omitNil,C=b===void 0?!0:b,x=e.request,E=e.params,P=e.initialValues,w=e.formKey,T=w===void 0?_f:w;e.readonly;var $=ze(e,TD),R=i.useRef({}),D=cn(!1),O=Y(D,2),k=O[0],M=O[1],F=lO({},{disabled:!n}),N=Y(F,2),I=N[0],L=N[1],A=i.useRef(Ku());i.useEffect(function(){_f+=0},[]);var _=NE({request:x,params:E,proFieldKey:T}),K=Y(_,1),z=K[0],j=i.useState(function(){return n?tu(n,I,"get"):{}}),V=Y(j,2),X=V[0],H=V[1],Z=i.useRef({}),U=i.useRef({}),ae=i.useCallback(function(ue,G,te){return BE(gE(ue,m,U.current,G,te),Z.current,G)},[m]);i.useEffect(function(){u||H({})},[u]),i.useEffect(function(){n&&L(p(p({},I),r))},[r,n]);var q=i.useMemo(function(){if(!(typeof window>"u")&&y&&["DrawerForm"].includes(y))return function(ue){return ue.parentNode||document.body}},[y]),ne=Bt(xt(Ve().mark(function ue(){var G,te,ee,le,re,ge;return Ve().wrap(function(me){for(;;)switch(me.prev=me.next){case 0:if($.onFinish){me.next=2;break}return me.abrupt("return");case 2:if(!k){me.next=4;break}return me.abrupt("return");case 4:return M(!0),me.prev=5,ee=R==null||(G=R.current)===null||G===void 0||(te=G.getFieldsFormatValue)===null||te===void 0?void 0:te.call(G),me.next=9,$.onFinish(ee);case 9:n&&(ge=Object.keys(R==null||(le=R.current)===null||le===void 0||(re=le.getFieldsFormatValue)===null||re===void 0?void 0:re.call(le,void 0,!1)).reduce(function(ce,fe){var ie;return p(p({},ce),{},B({},fe,(ie=ee[fe])!==null&&ie!==void 0?ie:void 0))},r),Object.keys(I).forEach(function(ce){ge[ce]!==!1&&ge[ce]!==0&&!ge[ce]&&(ge[ce]=void 0)}),L(tu(n,ge,"set"))),M(!1),me.next=16;break;case 13:me.prev=13,me.t0=me.catch(5),M(!1);case 16:case"end":return me.stop()}},ue,null,[[5,13]])})));return i.useImperativeHandle(h,function(){return R.current},[!z]),!z&&e.request?S.jsx("div",{style:{paddingTop:50,paddingBottom:50,textAlign:"center"},children:S.jsx(Nr,{})}):S.jsx(pp.Provider,{value:{mode:e.readonly?"read":"edit"},children:S.jsx(Lu,{children:S.jsx(Tl.Provider,{value:{formRef:R,fieldProps:c,formItemProps:d,groupProps:f,formComponentType:y,getPopupContainer:q,formKey:A.current,setFieldValueType:function(G,te){var ee=te.valueType,le=ee===void 0?"text":ee,re=te.dateFormat,ge=te.transform;Array.isArray(G)&&(Z.current=yn(Z.current,G,ge),U.current=yn(U.current,G,{valueType:le,dateFormat:re}))}},children:S.jsx(Ht,p(p({onKeyPress:function(G){if(a&&G.key==="Enter"){var te;(te=R.current)===null||te===void 0||te.submit()}},autoComplete:"off",form:g},nn($,["autoFocusFirstInput"])),{},{initialValues:s?p(p(p({},z),P),X):p(p(p({},X),z),P),onValuesChange:function(G,te){var ee;$==null||(ee=$.onValuesChange)===null||ee===void 0||ee.call($,ae(G,!!C),ae(te,!!C))},onFinish:ne,children:S.jsx(FD,p(p({transformKey:ae,autoComplete:"off",loading:k,onUrlSearchChange:L},e),{},{formRef:R,initialValues:p(p({},P),z)}))}))})})})}var $D=["label","size","disabled","onChange","className","style","children","valuePropName","placeholder","labelFormatter","bordered","footerRender","allowClear","otherFieldProps","valueType","placement"],OD=function(t){var r,n=t.label,a=t.size,o=t.disabled,s=t.onChange,l=t.className,u=t.style,c=t.children,d=t.valuePropName,f=t.placeholder,v=t.labelFormatter,m=t.bordered,h=t.footerRender,g=t.allowClear,y=t.otherFieldProps,b=t.valueType,C=t.placement,x=ze(t,$D),E=i.useContext(yt.ConfigContext),P=E.getPrefixCls,w=P("pro-field-light-wrapper"),T=i.useState(t[d]),$=Y(T,2),R=$[0],D=$[1],O=cn(!1),k=Y(O,2),M=k[0],F=k[1],N=function(){for(var _,K=arguments.length,z=new Array(K),j=0;j");return a}return{Provider:r,useContainer:n}}function QD(){var e,t,r,n,a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o=i.useRef(),s=i.useRef(null),l=i.useRef(),u=i.useRef(),c=i.useState(""),d=Y(c,2),f=d[0],v=d[1],m=i.useRef([]),h=Rt(function(){return a.size||a.defaultSize||"middle"},{value:a.size,onChange:a.onSizeChange}),g=Y(h,2),y=g[0],b=g[1],C=i.useMemo(function(){var R,D={};return(R=a.columns)===null||R===void 0||R.forEach(function(O,k){var M=O.key,F=O.dataIndex,N=O.fixed,I=O.disable,L=Ha(M??F,k);L&&(D[L]={show:!0,fixed:N,disable:I})}),D},[a.columns]),x=Rt(function(){var R,D,O=a.columnsState||{},k=O.persistenceType,M=O.persistenceKey;if(M&&k&&typeof window<"u"){var F=window[k];try{var N=F==null?void 0:F.getItem(M);if(N)return JSON.parse(N)}catch(I){console.warn(I)}}return a.columnsStateMap||((R=a.columnsState)===null||R===void 0?void 0:R.value)||((D=a.columnsState)===null||D===void 0?void 0:D.defaultValue)||C},{value:((e=a.columnsState)===null||e===void 0?void 0:e.value)||a.columnsStateMap,onChange:((t=a.columnsState)===null||t===void 0?void 0:t.onChange)||a.onColumnsStateChange}),E=Y(x,2),P=E[0],w=E[1];i.useLayoutEffect(function(){var R=a.columnsState||{},D=R.persistenceType,O=R.persistenceKey;if(O&&D&&typeof window<"u"){var k=window[D];try{var M=k==null?void 0:k.getItem(O);w(M?JSON.parse(M):C)}catch(F){console.warn(F)}}},[a.columnsState,C,w]),tn(!a.columnsStateMap,"columnsStateMap已经废弃,请使用 columnsState.value 替换"),tn(!a.columnsStateMap,"columnsStateMap has been discarded, please use columnSstate.value replacement");var T=i.useCallback(function(){var R=a.columnsState||{},D=R.persistenceType,O=R.persistenceKey;if(!(!O||!D||typeof window>"u")){var k=window[D];try{k==null||k.removeItem(O)}catch(M){console.error(M)}}},[a.columnsState]);i.useEffect(function(){var R,D;if(!(!(!((R=a.columnsState)===null||R===void 0)&&R.persistenceKey)||!(!((D=a.columnsState)===null||D===void 0)&&D.persistenceType))&&!(typeof window>"u")){var O=a.columnsState,k=O.persistenceType,M=O.persistenceKey,F=window[k];try{F==null||F.setItem(M,JSON.stringify(P))}catch(N){console.error(N)}}},[(r=a.columnsState)===null||r===void 0?void 0:r.persistenceKey,P,(n=a.columnsState)===null||n===void 0?void 0:n.persistenceType]);var $={action:o.current,setAction:function(D){o.current=D},sortKeyColumns:m.current,setSortKeyColumns:function(D){m.current=D},propsRef:u,columnsMap:P,keyWords:f,setKeyWords:function(D){return v(D)},setTableSize:b,tableSize:y,prefixName:l.current,setPrefixName:function(D){l.current=D},setColumnsMap:w,columns:a.columns,rootDomRef:s,clearPersistenceStorage:T};return Object.defineProperty($,"prefixName",{get:function(){return l.current}}),Object.defineProperty($,"sortKeyColumns",{get:function(){return m.current}}),Object.defineProperty($,"action",{get:function(){return o.current}}),$}var JD=ZD(QD);const Or=JD;var eI=["key","dataIndex","children"],as=function(t){var r=t.title,n=t.show,a=t.children,o=t.columnKey,s=t.fixed,l=Or.useContainer(),u=l.columnsMap,c=l.setColumnsMap;return n?S.jsx(on,{title:r,children:S.jsx("span",{onClick:function(f){f.stopPropagation(),f.preventDefault();var v=u[o]||{},m=typeof v.disable=="boolean"&&v.disable;if(!m){var h=p(p({},u),{},B({},o,p(p({},v),{},{fixed:s})));c(h)}},children:a})}):null},tI=function(t){var r=t.columnKey,n=t.isLeaf,a=t.title,o=t.className,s=t.fixed,l=Tt(),u=S.jsxs("span",{className:"".concat(o,"-list-item-option"),children:[S.jsx(as,{columnKey:r,fixed:"left",title:l.getMessage("tableToolBar.leftPin","固定在列首"),show:s!=="left",children:S.jsx(J1,{})}),S.jsx(as,{columnKey:r,fixed:void 0,title:l.getMessage("tableToolBar.noPin","不固定"),show:!!s,children:S.jsx(G1,{})}),S.jsx(as,{columnKey:r,fixed:"right",title:l.getMessage("tableToolBar.rightPin","固定在列尾"),show:s!=="right",children:S.jsx(B1,{})})]});return S.jsxs("span",{className:"".concat(o,"-list-item"),children:[S.jsx("div",{className:"".concat(o,"-list-item-title"),children:a}),n?null:u]},r)},os=function(t){var r,n,a=t.list,o=t.draggable,s=t.checkable,l=t.className,u=t.showTitle,c=u===void 0?!0:u,d=t.title,f=t.listHeight,v=f===void 0?280:f,m=Or.useContainer(),h=m.columnsMap,g=m.setColumnsMap,y=m.sortKeyColumns,b=m.setSortKeyColumns,C=a&&a.length>0,x=i.useMemo(function(){if(!C)return{};var T=[],$=function R(D,O){return D.map(function(k){var M,F=k.key;k.dataIndex;var N=k.children,I=ze(k,eI),L=Ha(F,I.index),A=h[L||"null"]||{show:!0};A.show!==!1&&(O==null?void 0:O.show)!==!1&&!N&&T.push(L);var _=p(p({key:L},nn(I,["className"])),{},{selectable:!1,disabled:A.disable===!0,disableCheckbox:typeof A.disable=="boolean"?A.disable:(M=A.disable)===null||M===void 0?void 0:M.checkbox,isLeaf:O?!0:void 0});return N&&(_.children=R(N,A)),_})};return{list:$(a),keys:T}},[h,a,C]),E=Bt(function(T,$,R){var D=p({},h),O=Ke(y),k=O.findIndex(function(I){return I===T}),M=O.findIndex(function(I){return I===$}),F=R>M;if(!(k<0)){var N=O[k];O.splice(k,1),R===0?O.unshift(N):O.splice(F?M:M+1,0,N),O.forEach(function(I,L){D[I]=p(p({},D[I]||{}),{},{order:L})}),g(D),b(O)}}),P=Bt(function(T){var $=T.node.key,R=p({},h[$]);R.show=T.checked,g(p(p({},h),{},B({},$,R)))});if(!C)return null;var w=S.jsx(Bm,{itemHeight:24,draggable:o&&!!(!((r=x.list)===null||r===void 0)&&r.length)&&((n=x.list)===null||n===void 0?void 0:n.length)>1,checkable:s,onDrop:function($){var R=$.node.key,D=$.dragNode.key,O=$.dropPosition,k=$.dropToGap,M=O===-1||!k?O+1:O;E(D,R,M)},blockNode:!0,onCheck:function($,R){return P(R)},checkedKeys:x.keys,showLine:!1,titleRender:function($){var R=p(p({},$),{},{children:void 0});return S.jsx(tI,p(p({className:l},R),{},{title:gn(R.title,R),columnKey:R.key}))},height:v,treeData:x.list});return S.jsxs(S.Fragment,{children:[c&&S.jsx("span",{className:"".concat(l,"-list-title"),children:d}),w]})},nI=function(t){var r=t.localColumns,n=t.className,a=t.draggable,o=t.checkable,s=t.listsHeight,l=[],u=[],c=[],d=Tt();r.forEach(function(m){if(!m.hideInSetting){var h=m.fixed;if(h==="left"){u.push(m);return}if(h==="right"){l.push(m);return}c.push(m)}});var f=l&&l.length>0,v=u&&u.length>0;return S.jsxs("div",{className:ve("".concat(n,"-list"),B({},"".concat(n,"-list-group"),f||v)),children:[S.jsx(os,{title:d.getMessage("tableToolBar.leftFixedTitle","固定在左侧"),list:u,draggable:a,checkable:o,className:n,listHeight:s}),S.jsx(os,{list:c,draggable:a,checkable:o,title:d.getMessage("tableToolBar.noFixedTitle","不固定"),showTitle:v||f,className:n,listHeight:s}),S.jsx(os,{title:d.getMessage("tableToolBar.rightFixedTitle","固定在右侧"),list:l,draggable:a,checkable:o,className:n,listHeight:s})]})};function rI(e){var t,r,n=i.useRef({}),a=Or.useContainer(),o=e.columns,s=e.checkedReset,l=s===void 0?!0:s,u=a.columnsMap,c=a.setColumnsMap,d=a.clearPersistenceStorage;i.useEffect(function(){var E,P;if(!((E=a.propsRef.current)===null||E===void 0||(P=E.columnsState)===null||P===void 0)&&P.value){var w,T;n.current=JSON.parse(JSON.stringify(((w=a.propsRef.current)===null||w===void 0||(T=w.columnsState)===null||T===void 0?void 0:T.value)||{}))}},[]);var f=Bt(function(){var E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,P={},w=function T($){$.forEach(function(R){var D=R.key,O=R.fixed,k=R.index,M=R.children,F=Ha(D,k);F&&(P[F]={show:E,fixed:O}),M&&T(M)})};w(o),c(P)}),v=Bt(function(E){E.target.checked?f():f(!1)}),m=Bt(function(){d==null||d(),c(n.current)}),h=Object.values(u).filter(function(E){return!E||E.show===!1}),g=h.length>0&&h.length!==o.length,y=Tt(),b=i.useContext(yt.ConfigContext),C=b.getPrefixCls,x=C("pro-table-column-setting");return S.jsx(ko,{arrowPointAtCenter:!0,title:S.jsxs("div",{className:"".concat(x,"-title"),children:[S.jsx(ya,{indeterminate:g,checked:h.length===0&&h.length!==o.length,onChange:function(P){return v(P)},children:y.getMessage("tableToolBar.columnDisplay","列展示")}),l?S.jsx("a",{onClick:m,className:"".concat(x,"-action-rest-button"),children:y.getMessage("tableToolBar.reset","重置")}):null,e!=null&&e.extra?S.jsx(Xt,{size:12,align:"center",children:e.extra}):null]}),overlayClassName:"".concat(x,"-overlay"),trigger:"click",placement:"bottomRight",content:S.jsx(nI,{checkable:(t=e.checkable)!==null&&t!==void 0?t:!0,draggable:(r=e.draggable)!==null&&r!==void 0?r:!0,className:x,localColumns:o,listsHeight:e.listsHeight}),children:e.children||S.jsx(on,{title:y.getMessage("tableToolBar.columnSetting","列设置"),children:S.jsx(pv,{})})})}function aI(e,t){return sI(e)||lI(e,t)||iI(e,t)||oI()}function oI(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function iI(e,t){if(e){if(typeof e=="string")return Lf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Lf(e,t)}}function Lf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r"u",r=i.useState(function(){return t?!1:window.matchMedia(e).matches}),n=aI(r,2),a=n[0],o=n[1];return i.useLayoutEffect(function(){if(!t){var s=window.matchMedia(e),l=function(c){return o(c.matches)};return s.addListener(l),function(){return s.removeListener(l)}}},[e]),a}function uI(e,t){return vI(e)||fI(e,t)||dI(e,t)||cI()}function cI(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function dI(e,t){if(e){if(typeof e=="string")return Af(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Af(e,t)}}function Af(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r"u")return t;var r=Object.keys(Sr).find(function(n){var a=Sr[n].matchMedia;return!!window.matchMedia(a).matches});return t=r,t},hI=function(){var t=fa(Sr.md.matchMedia),r=fa(Sr.lg.matchMedia),n=fa(Sr.xxl.matchMedia),a=fa(Sr.xl.matchMedia),o=fa(Sr.sm.matchMedia),s=fa(Sr.xs.matchMedia),l=i.useState(mI()),u=uI(l,2),c=u[0],d=u[1];return i.useEffect(function(){if(n){d("xxl");return}if(a){d("xl");return}if(r){d("lg");return}if(t){d("md");return}if(o){d("sm");return}if(s){d("xs");return}d("md")},[t,r,n,a,o,s]),c};var pI=["label","key"],gI=function(t){var r=t.items,n=r===void 0?[]:r,a=t.type,o=a===void 0?"inline":a,s=t.prefixCls,l=t.activeKey,u=Rt(l,{value:l,onChange:t.onChange}),c=Y(u,2),d=c[0],f=c[1];if(n.length<1)return null;var v=n.find(function(m){return m.key===d})||n[0];return o==="inline"?S.jsx("div",{className:ve("".concat(s,"-menu"),"".concat(s,"-inline-menu")),children:n.map(function(m,h){return S.jsx("div",{onClick:function(){f(m.key)},className:ve("".concat(s,"-inline-menu-item"),v.key===m.key?"".concat(s,"-inline-menu-item-active"):void 0),children:m.label},m.key||h)})}):o==="tab"?S.jsx(Xr,{activeKey:v.key,onTabClick:function(h){return f(h)},children:n.map(function(m,h){var g=m.label,y=m.key,b=ze(m,pI);return S.jsx(Xr.TabPane,p({tab:g},b),y||h)})}):S.jsx("div",{className:ve("".concat(s,"-menu"),"".concat(s,"-dropdownmenu")),children:S.jsx(Mo,{trigger:["click"],menu:{selectedKeys:[v.key],onClick:function(h){f(h.key)},items:n.map(function(m,h){return{key:m.key||h,disabled:m.disabled,label:m.label}})},children:S.jsxs(Xt,{className:"".concat(s,"-dropdownmenu-label"),children:[v.label,S.jsx(yo,{})]})})})};const yI=gI;function bI(e){if(Q.isValidElement(e))return e;if(e){var t=e,r=t.icon,n=t.tooltip,a=t.onClick,o=t.key;return r&&n?S.jsx(on,{title:n,children:S.jsx("span",{onClick:function(){a&&a(o)},children:r},o)}):r}return null}var CI=function(t){var r=t.prefixCls,n=t.tabs,a=n===void 0?{}:n,o=t.multipleLine,s=t.filtersNode;return o?S.jsx("div",{className:"".concat(r,"-extra-line"),children:a.items&&a.items.length?S.jsx(Xr,{activeKey:a.activeKey,onChange:a.onChange,tabBarExtraContent:s,children:a.items.map(function(l,u){return S.jsx(Xr.TabPane,p({},l),l.key||u)})}):s}):null},xI=function(t){var r=t.prefixCls,n=t.title,a=t.subTitle,o=t.tooltip,s=t.className,l=t.style,u=t.search,c=t.onSearch,d=t.multipleLine,f=d===void 0?!1:d,v=t.filter,m=t.actions,h=m===void 0?[]:m,g=t.settings,y=g===void 0?[]:g,b=t.tabs,C=b===void 0?{}:b,x=t.menu,E=Tt(),P=hI(),w=P==="sm"||P==="xs",T=E.getMessage("tableForm.inputPlaceholder","请输入"),$=i.useMemo(function(){return u?Q.isValidElement(u)?u:S.jsx(Nn.Search,p(p({style:{width:200},placeholder:T},u),{},{onSearch:function(){for(var z,j=arguments.length,V=new Array(j),X=0;Xae||U!==void 0&&y&&y.length<=ae&&H.run(!1)},[R==null?void 0:R.current]),i.useEffect(function(){A&&H.run(!1)},[R==null?void 0:R.pageSize]),ji(function(){return H.run(!1),l||(v.current=!1),function(){H.cancel()}},[].concat(Ke(j),[l])),{dataSource:y,setDataSource:b,loading:E,reload:function(){var Z=xt(Ve().mark(function ae(){return Ve().wrap(function(ne){for(;;)switch(ne.prev=ne.next){case 0:return ne.next=2,H.run(!1);case 2:case"end":return ne.stop()}},ae)}));function U(){return Z.apply(this,arguments)}return U}(),pageInfo:R,pollingLoading:F,reset:function(){var Z=xt(Ve().mark(function ae(){var q,ne,ue,G,te,ee,le,re;return Ve().wrap(function(Pe){for(;;)switch(Pe.prev=Pe.next){case 0:q=n||{},ne=q.pageInfo,ue=ne||{},G=ue.defaultCurrent,te=G===void 0?1:G,ee=ue.defaultPageSize,le=ee===void 0?20:ee,re={current:te,total:0,pageSize:le},O(re);case 4:case"end":return Pe.stop()}},ae)}));function U(){return Z.apply(this,arguments)}return U}(),setPageInfo:function(){var Z=xt(Ve().mark(function ae(q){return Ve().wrap(function(ue){for(;;)switch(ue.prev=ue.next){case 0:O(p(p({},R),q));case 1:case"end":return ue.stop()}},ae)}));function U(ae){return Z.apply(this,arguments)}return U}()}};const II=DI;var _I=function(t){return function(r,n){var a,o,s=r.fixed,l=r.index,u=n.fixed,c=n.index;if(s==="left"&&u!=="left"||u==="right"&&s!=="right")return-2;if(u==="left"&&s!=="left"||s==="right"&&u!=="right")return 2;var d=r.key||"".concat(l),f=n.key||"".concat(c);if(!((a=t[d])===null||a===void 0)&&a.order||!((o=t[f])===null||o===void 0)&&o.order){var v,m;return(((v=t[d])===null||v===void 0?void 0:v.order)||0)-(((m=t[f])===null||m===void 0?void 0:m.order)||0)}return(r.index||0)-(n.index||0)}},LI=["children"],AI=["",null,void 0],jf=function(){for(var t=arguments.length,r=new Array(t),n=0;nU.length?(U.push(V),U):(U.splice((s==null?void 0:s.current)*(s==null?void 0:s.pageSize)-1,0,V),U)}return[].concat(Ke(n.dataSource),[V])},k=function(){return p(p({},T),{},{size:u,rowSelection:l===!1?void 0:l,className:r,style:c,columns:R.map(function(K){return K.isExtraColumns?K.extraColumn:K}),loading:n.loading,dataSource:P.newLineRecord?O(n.dataSource):n.dataSource,pagination:s,onChange:function(z,j,V,X){var H;if((H=T.onChange)===null||H===void 0||H.call(T,z,j,V,X),D||y(Jt(j)),Array.isArray(V)){var Z=V.reduce(function(ne,ue){return p(p({},ne),{},B({},"".concat(ue.field),ue.order))},{});g(Jt(Z))}else{var U,ae=(U=V.column)===null||U===void 0?void 0:U.sorter,q=(ae==null?void 0:ae.toString())===ae;g(Jt(B({},"".concat(q?ae:V.field),V.order))||{})}}})},M=S.jsx(Sa,p(p({},k()),{},{rowKey:t})),F=e.tableViewRender?e.tableViewRender(p(p({},k()),{},{rowSelection:l!==!1?l:void 0}),M):M,N=i.useMemo(function(){if(e.editable&&!e.name){var _,K,z,j;return S.jsxs(S.Fragment,{children:[d,h,i.createElement(jn,p(p({},(_=e.editable)===null||_===void 0?void 0:_.formProps),{},{formRef:(K=e.editable)===null||K===void 0||(z=K.formProps)===null||z===void 0?void 0:z.formRef,component:!1,form:(j=e.editable)===null||j===void 0?void 0:j.form,onValuesChange:P.onValuesChange,key:"table",submitter:!1,omitNil:!1,dateFormatter:e.dateFormatter}),F)]})}return S.jsxs(S.Fragment,{children:[d,h,F]})},[h,e.loading,!!e.editable,F,d]),I=m===!1||e.name?N:S.jsx(oO,p(p({ghost:e.ghost,bordered:Sp("table",E),bodyStyle:d?{paddingTop:0}:{padding:0}},m),{},{children:N})),L=function(){return e.tableRender?e.tableRender(e,I,{toolbar:d||void 0,alert:h||void 0,table:F||void 0}):I},A=S.jsxs("div",{className:ve(x,B({},"".concat(x,"-polling"),n.pollingLoading)),style:v,ref:$.rootDomRef,children:[C?null:f,o!=="form"&&e.tableExtraRender&&S.jsx("div",{className:"".concat(x,"-extra"),children:e.tableExtraRender(e,n.dataSource||[])}),o!=="form"&&L()]});return!b||!(b!=null&&b.fullScreen)?A:S.jsx(yt,{getPopupContainer:function(){return $.rootDomRef.current||document.body},children:A})}var YI={},GI=function(t){var r;t.cardBordered;var n=t.request,a=t.className,o=t.params,s=o===void 0?YI:o,l=t.defaultData,u=t.headerTitle,c=t.postData,d=t.ghost,f=t.pagination,v=t.actionRef,m=t.columns,h=m===void 0?[]:m,g=t.toolBarRender,y=t.onLoad,b=t.onRequestError;t.style,t.cardProps,t.tableStyle,t.tableClassName,t.columnsStateMap,t.onColumnsStateChange;var C=t.options,x=t.search,E=t.name,P=t.onLoadingChange,w=t.rowSelection,T=w===void 0?!1:w,$=t.beforeSearchSubmit,R=t.tableAlertRender,D=t.defaultClassName,O=t.formRef,k=t.type,M=k===void 0?"table":k,F=t.columnEmptyText,N=F===void 0?"-":F,I=t.toolbar,L=t.rowKey,A=t.manualRequest,_=t.polling,K=t.tooltip,z=t.revalidateOnFocus,j=z===void 0?!1:z,V=ze(t,WI),X=ve(D,a),H=i.useRef(),Z=i.useRef(),U=O||Z;i.useImperativeHandle(v,function(){return H.current});var ae=cn(T?(T==null?void 0:T.defaultSelectedRowKeys)||[]:void 0,{value:T?T.selectedRowKeys:void 0}),q=Y(ae,2),ne=q[0],ue=q[1],G=i.useRef([]),te=i.useCallback(function(ye,de){ue(ye),(!T||!(T!=null&&T.selectedRowKeys))&&(G.current=de)},[ue]),ee=cn(function(){if(!(A||x!==!1))return{}}),le=Y(ee,2),re=le[0],ge=le[1],Pe=cn({}),me=Y(Pe,2),ce=me[0],fe=me[1],ie=cn({}),se=Y(ie,2),he=se[0],Ce=se[1];i.useEffect(function(){var ye=zD(h),de=ye.sort,be=ye.filter;fe(be),Ce(de)},[]);var ke=Tt(),Te=Ye(f)==="object"?f:{defaultCurrent:1,defaultPageSize:20,pageSize:20,current:1},Se=Or.useContainer(),Re=i.useMemo(function(){if(n)return function(){var ye=xt(Ve().mark(function de(be){var Ne,Ue;return Ve().wrap(function($e){for(;;)switch($e.prev=$e.next){case 0:return Ne=p(p(p({},be||{}),re),s),delete Ne._timestamp,$e.next=4,n(Ne,he,ce);case 4:return Ue=$e.sent,$e.abrupt("return",Ue);case 6:case"end":return $e.stop()}},de)}));return function(de){return ye.apply(this,arguments)}}()},[re,s,ce,he,n]),Ee=II(Re,l,{pageInfo:f===!1?!1:Te,loading:t.loading,dataSource:t.dataSource,onDataSourceChange:t.onDataSourceChange,onLoad:y,onLoadingChange:P,onRequestError:b,postData:c,revalidateOnFocus:j,manual:re===void 0,polling:_,effects:[ma(s),ma(re),ma(ce),ma(he)],debounceTime:t.debounceTime,onPageInfoChange:function(de){var be,Ne;M==="list"||!f||!Re||(f==null||(be=f.onChange)===null||be===void 0||be.call(f,de.current,de.pageSize),f==null||(Ne=f.onShowSizeChange)===null||Ne===void 0||Ne.call(f,de.current,de.pageSize))}});i.useEffect(function(){var ye;if(!(t.manualRequest||!t.request||!j||!((ye=t.form)===null||ye===void 0)&&ye.ignoreRules)){var de=function(){document.visibilityState==="visible"&&Ee.reload()};return document.addEventListener("visibilitychange",de),function(){return document.removeEventListener("visibilitychange",de)}}},[]);var Qe=Q.useRef(new Map),et=Q.useMemo(function(){return typeof L=="function"?L:function(ye,de){var be;return de===-1?ye==null?void 0:ye[L]:t.name?de==null?void 0:de.toString():(be=ye==null?void 0:ye[L])!==null&&be!==void 0?be:de==null?void 0:de.toString()}},[t.name,L]);i.useMemo(function(){var ye;if(!((ye=Ee.dataSource)===null||ye===void 0)&&ye.length){var de=new Map,be=Ee.dataSource.map(function(Ne){var Ue=et(Ne,-1);return de.set(Ue,Ne),Ue});return Qe.current=de,be}return[]},[Ee.dataSource,et]),i.useEffect(function(){G.current=ne==null?void 0:ne.map(function(ye){var de;return(de=Qe.current)===null||de===void 0?void 0:de.get(ye)})},[ne]);var vt=i.useMemo(function(){var ye=f===!1?!1:p({},f),de=p(p({},Ee.pageInfo),{},{setPageInfo:function(Ne){var Ue=Ne.pageSize,lt=Ne.current,$e=Ee.pageInfo;if(Ue===$e.pageSize||$e.current===1){Ee.setPageInfo({pageSize:Ue,current:lt});return}n&&Ee.setDataSource([]),Ee.setPageInfo({pageSize:Ue,current:M==="list"?lt:1})}});return n&&ye&&(delete ye.onChange,delete ye.onShowSizeChange),LD(ye,de,ke)},[f,Ee,ke]);ji(function(){var ye;t.request&&s&&Ee.dataSource&&(Ee==null||(ye=Ee.pageInfo)===null||ye===void 0?void 0:ye.current)!==1&&Ee.setPageInfo({current:1})},[s]),Se.setPrefixName(t.name);var ct=i.useCallback(function(){T&&T.onChange&&T.onChange([],[],{type:"none"}),te([],[])},[T,te]);Se.setAction(H.current),Se.propsRef.current=t;var ht=ZE(p(p({},t.editable),{},{tableName:t.name,getRowKey:et,childrenColumnName:((r=t.expandable)===null||r===void 0?void 0:r.childrenColumnName)||"children",dataSource:Ee.dataSource||[],setDataSource:function(de){var be,Ne;(be=t.editable)===null||be===void 0||(Ne=be.onValuesChange)===null||Ne===void 0||Ne.call(be,void 0,de),Ee.setDataSource(de)}}));AD(H,Ee,{fullScreen:function(){var de;if(!(!(!((de=Se.rootDomRef)===null||de===void 0)&&de.current)||!document.fullscreenEnabled))if(document.fullscreenElement)document.exitFullscreen();else{var be;(be=Se.rootDomRef)===null||be===void 0||be.current.requestFullscreen()}},onCleanSelected:function(){ct()},resetAll:function(){var de;ct(),fe({}),Ce({}),Se.setKeyWords(void 0),Ee.setPageInfo({current:1}),U==null||(de=U.current)===null||de===void 0||de.resetFields(),ge({})},editableUtils:ht}),v&&(v.current=H.current);var Ge=i.useMemo(function(){var ye;return Pp({columns:h,counter:Se,columnEmptyText:N,type:M,editableUtils:ht,rowKey:L,childrenColumnName:(ye=t.expandable)===null||ye===void 0?void 0:ye.childrenColumnName}).sort(_I(Se.columnsMap))},[h,Se==null?void 0:Se.sortKeyColumns,Se==null?void 0:Se.columnsMap,N,M,ht.editableKeys&&ht.editableKeys.join(",")]);Mh(function(){if(Ge&&Ge.length>0){var ye=Ge.map(function(de){return Ha(de.key,de.index)});Se.setSortKeyColumns(ye)}},[Ge],["render","renderFormItem"],100),ji(function(){var ye=Ee.pageInfo,de=f||{},be=de.current,Ne=be===void 0?ye==null?void 0:ye.current:be,Ue=de.pageSize,lt=Ue===void 0?ye==null?void 0:ye.pageSize:Ue;f&&(Ne||lt)&&(lt!==(ye==null?void 0:ye.pageSize)||Ne!==(ye==null?void 0:ye.current))&&Ee.setPageInfo({pageSize:lt||ye.pageSize,current:Ne||ye.current})},[f&&f.pageSize,f&&f.current]);var _e=p(p({selectedRowKeys:ne},T),{},{onChange:function(de,be,Ne){T&&T.onChange&&T.onChange(de,be,Ne),te(de,be)}}),mt=x!==!1&&(x==null?void 0:x.filterType)==="light",tt=function(de){if(C&&C.search){var be,Ne,Ue=C.search===!0?{}:C.search,lt=Ue.name,$e=lt===void 0?"keyword":lt,xe=(be=C.search)===null||be===void 0||(Ne=be.onSearch)===null||Ne===void 0?void 0:Ne.call(be,Se.keyWords);if(xe!==!1){ge(p(p({},de),{},B({},$e,Se.keyWords)));return}}ge(de)},we=i.useMemo(function(){if(Ye(Ee.loading)==="object"){var ye;return((ye=Ee.loading)===null||ye===void 0?void 0:ye.spinning)||!1}return Ee.loading},[Ee.loading]),He=x===!1&&M!=="form"?null:S.jsx(XD,{pagination:vt,beforeSearchSubmit:$,action:H,columns:h,onFormSearchSubmit:function(de){tt(de)},ghost:d,onReset:t.onReset,onSubmit:t.onSubmit,loading:!!we,manualRequest:A,search:x,form:t.form,formRef:U,type:t.type||"table",cardBordered:t.cardBordered,dateFormatter:t.dateFormatter}),Me=g===!1?null:S.jsx(FI,{headerTitle:u,hideToolbar:C===!1&&!u&&!g&&!I&&!mt,selectedRows:G.current,selectedRowKeys:ne,tableColumn:Ge,tooltip:K,toolbar:I,onFormSearchSubmit:function(de){ge(p(p({},re),de))},searchNode:mt?He:null,options:C,actionRef:H,toolBarRender:g}),Le=T!==!1?S.jsx(_D,{selectedRowKeys:ne,selectedRows:G.current,onCleanSelected:ct,alertOptionRender:V.tableAlertOptionRender,alertInfoRender:R,alwaysShowAlert:T==null?void 0:T.alwaysShowAlert}):null;return S.jsx(UI,p(p({},t),{},{name:E,size:Se.tableSize,onSizeChange:Se.setTableSize,pagination:vt,searchNode:He,rowSelection:T!==!1?_e:void 0,className:X,tableColumn:Ge,isLightFilter:mt,action:Ee,alertDom:Le,toolbarDom:Me,onSortChange:Ce,onFilterChange:fe,editableUtils:ht,getRowKey:et}))},Rp=function(t){var r=i.useContext(yt.ConfigContext),n=r.getPrefixCls,a=t.ErrorBoundary===!1?Q.Fragment:t.ErrorBoundary||aE;return S.jsx(Or.Provider,{initialState:t,children:S.jsx(Lu,{children:S.jsx(a,{children:S.jsx(GI,p({defaultClassName:n("pro-table")},t))})})})};Rp.Summary=Sa.Summary;const t_=Rp;export{bv as D,i2 as I,XO as M,t_ as P,J1 as V,hy as g,gy as s}; diff --git a/dist/assets/Table-42978533.css b/dist/assets/Table-42978533.css deleted file mode 100644 index 58324aecb0fb849895eed1b6229d258aa9f0d530..0000000000000000000000000000000000000000 --- a/dist/assets/Table-42978533.css +++ /dev/null @@ -1 +0,0 @@ -[class^=ant-]::-ms-clear,[class*=ant-]::-ms-clear,[class^=ant-] input::-ms-clear,[class*=ant-] input::-ms-clear,[class^=ant-] input::-ms-reveal,[class*=ant-] input::-ms-reveal{display:none}html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0;color:#000000d9;font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-variant:tabular-nums;line-height:1.5715;background-color:#fff;font-feature-settings:"tnum","tnum"}[tabindex="-1"]:focus{outline:none!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:#000000d9;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1890ff;text-decoration:none;background-color:transparent;outline:none;cursor:pointer;transition:color .3s;-webkit-text-decoration-skip:objects}a:hover{color:#40a9ff}a:active{color:#096dd9}a:active,a:hover{text-decoration:none;outline:0}a:focus{text-decoration:none;outline:0}a[disabled]{color:#00000040;cursor:not-allowed}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:#00000073;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{color:#fff;background:#1890ff}::selection{color:#fff;background:#1890ff}.clearfix:before{display:table;content:""}.clearfix:after{display:table;clear:both;content:""}.anticon{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon>.anticon{line-height:0;vertical-align:0}.anticon[tabindex]{cursor:pointer}.anticon-spin,.anticon-spin:before{display:inline-block;animation:loadingCircle 1s infinite linear}.ant-fade-enter,.ant-fade-appear,.ant-fade-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-fade-enter.ant-fade-enter-active,.ant-fade-appear.ant-fade-appear-active{animation-name:antFadeIn;animation-play-state:running}.ant-fade-leave.ant-fade-leave-active{animation-name:antFadeOut;animation-play-state:running;pointer-events:none}.ant-fade-enter,.ant-fade-appear{opacity:0;animation-timing-function:linear}.ant-fade-leave{animation-timing-function:linear}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.ant-move-up-enter,.ant-move-up-appear,.ant-move-up-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-move-up-enter.ant-move-up-enter-active,.ant-move-up-appear.ant-move-up-appear-active{animation-name:antMoveUpIn;animation-play-state:running}.ant-move-up-leave.ant-move-up-leave-active{animation-name:antMoveUpOut;animation-play-state:running;pointer-events:none}.ant-move-up-enter,.ant-move-up-appear{opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-move-up-leave{animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.ant-move-down-enter,.ant-move-down-appear,.ant-move-down-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-move-down-enter.ant-move-down-enter-active,.ant-move-down-appear.ant-move-down-appear-active{animation-name:antMoveDownIn;animation-play-state:running}.ant-move-down-leave.ant-move-down-leave-active{animation-name:antMoveDownOut;animation-play-state:running;pointer-events:none}.ant-move-down-enter,.ant-move-down-appear{opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-move-down-leave{animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.ant-move-left-enter,.ant-move-left-appear,.ant-move-left-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-move-left-enter.ant-move-left-enter-active,.ant-move-left-appear.ant-move-left-appear-active{animation-name:antMoveLeftIn;animation-play-state:running}.ant-move-left-leave.ant-move-left-leave-active{animation-name:antMoveLeftOut;animation-play-state:running;pointer-events:none}.ant-move-left-enter,.ant-move-left-appear{opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-move-left-leave{animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.ant-move-right-enter,.ant-move-right-appear,.ant-move-right-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-move-right-enter.ant-move-right-enter-active,.ant-move-right-appear.ant-move-right-appear-active{animation-name:antMoveRightIn;animation-play-state:running}.ant-move-right-leave.ant-move-right-leave-active{animation-name:antMoveRightOut;animation-play-state:running;pointer-events:none}.ant-move-right-enter,.ant-move-right-appear{opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-move-right-leave{animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@keyframes antMoveDownIn{0%{transform:translateY(100%);transform-origin:0 0;opacity:0}to{transform:translateY(0);transform-origin:0 0;opacity:1}}@keyframes antMoveDownOut{0%{transform:translateY(0);transform-origin:0 0;opacity:1}to{transform:translateY(100%);transform-origin:0 0;opacity:0}}@keyframes antMoveLeftIn{0%{transform:translate(-100%);transform-origin:0 0;opacity:0}to{transform:translate(0);transform-origin:0 0;opacity:1}}@keyframes antMoveLeftOut{0%{transform:translate(0);transform-origin:0 0;opacity:1}to{transform:translate(-100%);transform-origin:0 0;opacity:0}}@keyframes antMoveRightIn{0%{transform:translate(100%);transform-origin:0 0;opacity:0}to{transform:translate(0);transform-origin:0 0;opacity:1}}@keyframes antMoveRightOut{0%{transform:translate(0);transform-origin:0 0;opacity:1}to{transform:translate(100%);transform-origin:0 0;opacity:0}}@keyframes antMoveUpIn{0%{transform:translateY(-100%);transform-origin:0 0;opacity:0}to{transform:translateY(0);transform-origin:0 0;opacity:1}}@keyframes antMoveUpOut{0%{transform:translateY(0);transform-origin:0 0;opacity:1}to{transform:translateY(-100%);transform-origin:0 0;opacity:0}}@keyframes loadingCircle{to{transform:rotate(360deg)}}[ant-click-animating=true],[ant-click-animating-without-extra-node=true]{position:relative}html{--antd-wave-shadow-color: #1890ff;--scroll-bar: 0}[ant-click-animating-without-extra-node=true]:after,.ant-click-animating-node{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border-radius:inherit;box-shadow:0 0 #1890ff;box-shadow:0 0 0 0 var(--antd-wave-shadow-color);opacity:.2;animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation-fill-mode:forwards;content:"";pointer-events:none}@keyframes waveEffect{to{box-shadow:0 0 #1890ff;box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@keyframes fadeEffect{to{opacity:0}}.ant-slide-up-enter,.ant-slide-up-appear,.ant-slide-up-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(.23,1,.32,1)}.ant-slide-up-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.ant-slide-down-enter,.ant-slide-down-appear,.ant-slide-down-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(.23,1,.32,1)}.ant-slide-down-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.ant-slide-left-enter,.ant-slide-left-appear,.ant-slide-left-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-slide-left-enter.ant-slide-left-enter-active,.ant-slide-left-appear.ant-slide-left-appear-active{animation-name:antSlideLeftIn;animation-play-state:running}.ant-slide-left-leave.ant-slide-left-leave-active{animation-name:antSlideLeftOut;animation-play-state:running;pointer-events:none}.ant-slide-left-enter,.ant-slide-left-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(.23,1,.32,1)}.ant-slide-left-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.ant-slide-right-enter,.ant-slide-right-appear,.ant-slide-right-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-slide-right-enter.ant-slide-right-enter-active,.ant-slide-right-appear.ant-slide-right-appear-active{animation-name:antSlideRightIn;animation-play-state:running}.ant-slide-right-leave.ant-slide-right-leave-active{animation-name:antSlideRightOut;animation-play-state:running;pointer-events:none}.ant-slide-right-enter,.ant-slide-right-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(.23,1,.32,1)}.ant-slide-right-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@keyframes antSlideUpIn{0%{transform:scaleY(.8);transform-origin:0% 0%;opacity:0}to{transform:scaleY(1);transform-origin:0% 0%;opacity:1}}@keyframes antSlideUpOut{0%{transform:scaleY(1);transform-origin:0% 0%;opacity:1}to{transform:scaleY(.8);transform-origin:0% 0%;opacity:0}}@keyframes antSlideDownIn{0%{transform:scaleY(.8);transform-origin:100% 100%;opacity:0}to{transform:scaleY(1);transform-origin:100% 100%;opacity:1}}@keyframes antSlideDownOut{0%{transform:scaleY(1);transform-origin:100% 100%;opacity:1}to{transform:scaleY(.8);transform-origin:100% 100%;opacity:0}}@keyframes antSlideLeftIn{0%{transform:scaleX(.8);transform-origin:0% 0%;opacity:0}to{transform:scaleX(1);transform-origin:0% 0%;opacity:1}}@keyframes antSlideLeftOut{0%{transform:scaleX(1);transform-origin:0% 0%;opacity:1}to{transform:scaleX(.8);transform-origin:0% 0%;opacity:0}}@keyframes antSlideRightIn{0%{transform:scaleX(.8);transform-origin:100% 0%;opacity:0}to{transform:scaleX(1);transform-origin:100% 0%;opacity:1}}@keyframes antSlideRightOut{0%{transform:scaleX(1);transform-origin:100% 0%;opacity:1}to{transform:scaleX(.8);transform-origin:100% 0%;opacity:0}}.ant-zoom-enter,.ant-zoom-appear,.ant-zoom-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-enter.ant-zoom-enter-active,.ant-zoom-appear.ant-zoom-appear-active{animation-name:antZoomIn;animation-play-state:running}.ant-zoom-leave.ant-zoom-leave-active{animation-name:antZoomOut;animation-play-state:running;pointer-events:none}.ant-zoom-enter,.ant-zoom-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-enter-prepare,.ant-zoom-appear-prepare{transform:none}.ant-zoom-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-big-enter,.ant-zoom-big-appear,.ant-zoom-big-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-big-enter.ant-zoom-big-enter-active,.ant-zoom-big-appear.ant-zoom-big-appear-active{animation-name:antZoomBigIn;animation-play-state:running}.ant-zoom-big-leave.ant-zoom-big-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none}.ant-zoom-big-enter,.ant-zoom-big-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-big-enter-prepare,.ant-zoom-big-appear-prepare{transform:none}.ant-zoom-big-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-big-fast-enter,.ant-zoom-big-fast-appear,.ant-zoom-big-fast-leave{animation-duration:.1s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-big-fast-enter.ant-zoom-big-fast-enter-active,.ant-zoom-big-fast-appear.ant-zoom-big-fast-appear-active{animation-name:antZoomBigIn;animation-play-state:running}.ant-zoom-big-fast-leave.ant-zoom-big-fast-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none}.ant-zoom-big-fast-enter,.ant-zoom-big-fast-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-big-fast-enter-prepare,.ant-zoom-big-fast-appear-prepare{transform:none}.ant-zoom-big-fast-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-up-enter,.ant-zoom-up-appear,.ant-zoom-up-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-up-enter.ant-zoom-up-enter-active,.ant-zoom-up-appear.ant-zoom-up-appear-active{animation-name:antZoomUpIn;animation-play-state:running}.ant-zoom-up-leave.ant-zoom-up-leave-active{animation-name:antZoomUpOut;animation-play-state:running;pointer-events:none}.ant-zoom-up-enter,.ant-zoom-up-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-up-enter-prepare,.ant-zoom-up-appear-prepare{transform:none}.ant-zoom-up-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-down-enter,.ant-zoom-down-appear,.ant-zoom-down-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-down-enter.ant-zoom-down-enter-active,.ant-zoom-down-appear.ant-zoom-down-appear-active{animation-name:antZoomDownIn;animation-play-state:running}.ant-zoom-down-leave.ant-zoom-down-leave-active{animation-name:antZoomDownOut;animation-play-state:running;pointer-events:none}.ant-zoom-down-enter,.ant-zoom-down-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-down-enter-prepare,.ant-zoom-down-appear-prepare{transform:none}.ant-zoom-down-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-left-enter,.ant-zoom-left-appear,.ant-zoom-left-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-left-enter.ant-zoom-left-enter-active,.ant-zoom-left-appear.ant-zoom-left-appear-active{animation-name:antZoomLeftIn;animation-play-state:running}.ant-zoom-left-leave.ant-zoom-left-leave-active{animation-name:antZoomLeftOut;animation-play-state:running;pointer-events:none}.ant-zoom-left-enter,.ant-zoom-left-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-left-enter-prepare,.ant-zoom-left-appear-prepare{transform:none}.ant-zoom-left-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-right-enter,.ant-zoom-right-appear,.ant-zoom-right-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-right-enter.ant-zoom-right-enter-active,.ant-zoom-right-appear.ant-zoom-right-appear-active{animation-name:antZoomRightIn;animation-play-state:running}.ant-zoom-right-leave.ant-zoom-right-leave-active{animation-name:antZoomRightOut;animation-play-state:running;pointer-events:none}.ant-zoom-right-enter,.ant-zoom-right-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-right-enter-prepare,.ant-zoom-right-appear-prepare{transform:none}.ant-zoom-right-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@keyframes antZoomIn{0%{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}@keyframes antZoomOut{0%{transform:scale(1)}to{transform:scale(.2);opacity:0}}@keyframes antZoomBigIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes antZoomBigOut{0%{transform:scale(1)}to{transform:scale(.8);opacity:0}}@keyframes antZoomUpIn{0%{transform:scale(.8);transform-origin:50% 0%;opacity:0}to{transform:scale(1);transform-origin:50% 0%}}@keyframes antZoomUpOut{0%{transform:scale(1);transform-origin:50% 0%}to{transform:scale(.8);transform-origin:50% 0%;opacity:0}}@keyframes antZoomLeftIn{0%{transform:scale(.8);transform-origin:0% 50%;opacity:0}to{transform:scale(1);transform-origin:0% 50%}}@keyframes antZoomLeftOut{0%{transform:scale(1);transform-origin:0% 50%}to{transform:scale(.8);transform-origin:0% 50%;opacity:0}}@keyframes antZoomRightIn{0%{transform:scale(.8);transform-origin:100% 50%;opacity:0}to{transform:scale(1);transform-origin:100% 50%}}@keyframes antZoomRightOut{0%{transform:scale(1);transform-origin:100% 50%}to{transform:scale(.8);transform-origin:100% 50%;opacity:0}}@keyframes antZoomDownIn{0%{transform:scale(.8);transform-origin:50% 100%;opacity:0}to{transform:scale(1);transform-origin:50% 100%}}@keyframes antZoomDownOut{0%{transform:scale(1);transform-origin:50% 100%}to{transform:scale(.8);transform-origin:50% 100%;opacity:0}}.ant-motion-collapse-legacy{overflow:hidden}.ant-motion-collapse-legacy-active{transition:height .2s cubic-bezier(.645,.045,.355,1),opacity .2s cubic-bezier(.645,.045,.355,1)!important}.ant-motion-collapse{overflow:hidden;transition:height .2s cubic-bezier(.645,.045,.355,1),opacity .2s cubic-bezier(.645,.045,.355,1)!important}.ant-avatar{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-block;overflow:hidden;color:#fff;white-space:nowrap;text-align:center;vertical-align:middle;background:#ccc;width:32px;height:32px;line-height:32px;border-radius:50%}.ant-avatar-image{background:transparent}.ant-avatar .ant-image-img{display:block}.ant-avatar-string{position:absolute;left:50%;transform-origin:0 center}.ant-avatar.ant-avatar-icon{font-size:18px}.ant-avatar.ant-avatar-icon>.anticon{margin:0}.ant-avatar-lg{width:40px;height:40px;line-height:40px;border-radius:50%}.ant-avatar-lg-string{position:absolute;left:50%;transform-origin:0 center}.ant-avatar-lg.ant-avatar-icon{font-size:24px}.ant-avatar-lg.ant-avatar-icon>.anticon{margin:0}.ant-avatar-sm{width:24px;height:24px;line-height:24px;border-radius:50%}.ant-avatar-sm-string{position:absolute;left:50%;transform-origin:0 center}.ant-avatar-sm.ant-avatar-icon{font-size:14px}.ant-avatar-sm.ant-avatar-icon>.anticon{margin:0}.ant-avatar-square{border-radius:2px}.ant-avatar>img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.ant-avatar-group{display:inline-flex}.ant-avatar-group .ant-avatar{border:1px solid #fff}.ant-avatar-group .ant-avatar:not(:first-child){margin-left:-8px}.ant-avatar-group-popover .ant-avatar+.ant-avatar{margin-left:3px}.ant-avatar-group-rtl .ant-avatar:not(:first-child){margin-right:-8px;margin-left:0}.ant-avatar-group-popover.ant-popover-rtl .ant-avatar+.ant-avatar{margin-right:3px;margin-left:0}.ant-popover{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;top:0;left:0;z-index:1030;max-width:100vw;font-weight:400;white-space:normal;text-align:left;cursor:auto;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ant-popover-content{position:relative}.ant-popover:after{position:absolute;background:rgba(255,255,255,.01);content:""}.ant-popover-hidden{display:none}.ant-popover-placement-top,.ant-popover-placement-topLeft,.ant-popover-placement-topRight{padding-bottom:15.3137085px}.ant-popover-placement-right,.ant-popover-placement-rightTop,.ant-popover-placement-rightBottom{padding-left:15.3137085px}.ant-popover-placement-bottom,.ant-popover-placement-bottomLeft,.ant-popover-placement-bottomRight{padding-top:15.3137085px}.ant-popover-placement-left,.ant-popover-placement-leftTop,.ant-popover-placement-leftBottom{padding-right:15.3137085px}.ant-popover-inner{background-color:#fff;background-clip:padding-box;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.ant-popover-inner{box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}}.ant-popover-title{min-width:177px;min-height:32px;margin:0;padding:5px 16px 4px;color:#000000d9;font-weight:500;border-bottom:1px solid #f0f0f0}.ant-popover-inner-content{width:-moz-max-content;width:max-content;max-width:100%;padding:12px 16px;color:#000000d9}.ant-popover-message{display:flex;padding:4px 0 12px;color:#000000d9;font-size:14px}.ant-popover-message-icon{display:inline-block;margin-right:8px;color:#faad14;font-size:14px}.ant-popover-buttons{margin-bottom:4px;text-align:right}.ant-popover-buttons button:not(:first-child){margin-left:8px}.ant-popover-arrow{position:absolute;display:block;width:22px;height:22px;overflow:hidden;background:transparent;pointer-events:none}.ant-popover-arrow-content{--antd-arrow-background-color: #fff;position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:11.3137085px;height:11.3137085px;margin:auto;content:"";pointer-events:auto;border-radius:0 0 2px;pointer-events:none}.ant-popover-arrow-content:before{position:absolute;top:-11.3137085px;left:-11.3137085px;width:33.9411255px;height:33.9411255px;background:var(--antd-arrow-background-color);background-repeat:no-repeat;background-position:-10px -10px;content:"";clip-path:inset(33% 33%);clip-path:path("M 9.849242404917499 24.091883092036785 A 5 5 0 0 1 13.384776310850237 22.627416997969522 L 20.627416997969522 22.627416997969522 A 2 2 0 0 0 22.627416997969522 20.627416997969522 L 22.627416997969522 13.384776310850237 A 5 5 0 0 1 24.091883092036785 9.849242404917499 L 23.091883092036785 9.849242404917499 L 9.849242404917499 23.091883092036785 Z")}.ant-popover-placement-top .ant-popover-arrow,.ant-popover-placement-topLeft .ant-popover-arrow,.ant-popover-placement-topRight .ant-popover-arrow{bottom:0;transform:translateY(100%)}.ant-popover-placement-top .ant-popover-arrow-content,.ant-popover-placement-topLeft .ant-popover-arrow-content,.ant-popover-placement-topRight .ant-popover-arrow-content{box-shadow:3px 3px 7px #00000012;transform:translateY(-11px) rotate(45deg)}.ant-popover-placement-top .ant-popover-arrow{left:50%;transform:translateY(100%) translate(-50%)}.ant-popover-placement-topLeft .ant-popover-arrow{left:16px}.ant-popover-placement-topRight .ant-popover-arrow{right:16px}.ant-popover-placement-right .ant-popover-arrow,.ant-popover-placement-rightTop .ant-popover-arrow,.ant-popover-placement-rightBottom .ant-popover-arrow{left:0;transform:translate(-100%)}.ant-popover-placement-right .ant-popover-arrow-content,.ant-popover-placement-rightTop .ant-popover-arrow-content,.ant-popover-placement-rightBottom .ant-popover-arrow-content{box-shadow:3px 3px 7px #00000012;transform:translate(11px) rotate(135deg)}.ant-popover-placement-right .ant-popover-arrow{top:50%;transform:translate(-100%) translateY(-50%)}.ant-popover-placement-rightTop .ant-popover-arrow{top:12px}.ant-popover-placement-rightBottom .ant-popover-arrow{bottom:12px}.ant-popover-placement-bottom .ant-popover-arrow,.ant-popover-placement-bottomLeft .ant-popover-arrow,.ant-popover-placement-bottomRight .ant-popover-arrow{top:0;transform:translateY(-100%)}.ant-popover-placement-bottom .ant-popover-arrow-content,.ant-popover-placement-bottomLeft .ant-popover-arrow-content,.ant-popover-placement-bottomRight .ant-popover-arrow-content{box-shadow:2px 2px 5px #0000000f;transform:translateY(11px) rotate(-135deg)}.ant-popover-placement-bottom .ant-popover-arrow{left:50%;transform:translateY(-100%) translate(-50%)}.ant-popover-placement-bottomLeft .ant-popover-arrow{left:16px}.ant-popover-placement-bottomRight .ant-popover-arrow{right:16px}.ant-popover-placement-left .ant-popover-arrow,.ant-popover-placement-leftTop .ant-popover-arrow,.ant-popover-placement-leftBottom .ant-popover-arrow{right:0;transform:translate(100%)}.ant-popover-placement-left .ant-popover-arrow-content,.ant-popover-placement-leftTop .ant-popover-arrow-content,.ant-popover-placement-leftBottom .ant-popover-arrow-content{box-shadow:3px 3px 7px #00000012;transform:translate(-11px) rotate(-45deg)}.ant-popover-placement-left .ant-popover-arrow{top:50%;transform:translate(100%) translateY(-50%)}.ant-popover-placement-leftTop .ant-popover-arrow{top:12px}.ant-popover-placement-leftBottom .ant-popover-arrow{bottom:12px}.ant-popover-pink .ant-popover-inner,.ant-popover-pink .ant-popover-arrow-content,.ant-popover-magenta .ant-popover-inner,.ant-popover-magenta .ant-popover-arrow-content{background-color:#eb2f96}.ant-popover-red .ant-popover-inner,.ant-popover-red .ant-popover-arrow-content{background-color:#f5222d}.ant-popover-volcano .ant-popover-inner,.ant-popover-volcano .ant-popover-arrow-content{background-color:#fa541c}.ant-popover-orange .ant-popover-inner,.ant-popover-orange .ant-popover-arrow-content{background-color:#fa8c16}.ant-popover-yellow .ant-popover-inner,.ant-popover-yellow .ant-popover-arrow-content{background-color:#fadb14}.ant-popover-gold .ant-popover-inner,.ant-popover-gold .ant-popover-arrow-content{background-color:#faad14}.ant-popover-cyan .ant-popover-inner,.ant-popover-cyan .ant-popover-arrow-content{background-color:#13c2c2}.ant-popover-lime .ant-popover-inner,.ant-popover-lime .ant-popover-arrow-content{background-color:#a0d911}.ant-popover-green .ant-popover-inner,.ant-popover-green .ant-popover-arrow-content{background-color:#52c41a}.ant-popover-blue .ant-popover-inner,.ant-popover-blue .ant-popover-arrow-content{background-color:#1890ff}.ant-popover-geekblue .ant-popover-inner,.ant-popover-geekblue .ant-popover-arrow-content{background-color:#2f54eb}.ant-popover-purple .ant-popover-inner,.ant-popover-purple .ant-popover-arrow-content{background-color:#722ed1}.ant-popover-rtl{direction:rtl;text-align:right}.ant-popover-rtl .ant-popover-message-icon{margin-right:0;margin-left:8px}.ant-popover-rtl .ant-popover-message-title{padding-left:16px}.ant-popover-rtl .ant-popover-buttons{text-align:left}.ant-popover-rtl .ant-popover-buttons button{margin-right:8px;margin-left:0}.ant-btn{line-height:1.5715;position:relative;display:inline-block;font-weight:400;white-space:nowrap;text-align:center;background-image:none;border:1px solid transparent;box-shadow:0 2px #00000004;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;touch-action:manipulation;height:32px;padding:4px 15px;font-size:14px;border-radius:2px;color:#000000d9;border-color:#d9d9d9;background:#fff}.ant-btn>.anticon{line-height:1}.ant-btn,.ant-btn:active,.ant-btn:focus{outline:0}.ant-btn:not([disabled]):hover{text-decoration:none}.ant-btn:not([disabled]):active{outline:0;box-shadow:none}.ant-btn[disabled]{cursor:not-allowed}.ant-btn[disabled]>*{pointer-events:none}.ant-btn-lg{height:40px;padding:6.4px 15px;font-size:16px;border-radius:2px}.ant-btn-sm{height:24px;padding:0 7px;font-size:14px;border-radius:2px}.ant-btn>a:only-child{color:currentcolor}.ant-btn>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn:hover,.ant-btn:focus{color:#40a9ff;border-color:#40a9ff;background:#fff}.ant-btn:hover>a:only-child,.ant-btn:focus>a:only-child{color:currentcolor}.ant-btn:hover>a:only-child:after,.ant-btn:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn:active{color:#096dd9;border-color:#096dd9;background:#fff}.ant-btn:active>a:only-child{color:currentcolor}.ant-btn:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn[disabled],.ant-btn[disabled]:hover,.ant-btn[disabled]:focus,.ant-btn[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn[disabled]>a:only-child,.ant-btn[disabled]:hover>a:only-child,.ant-btn[disabled]:focus>a:only-child,.ant-btn[disabled]:active>a:only-child{color:currentcolor}.ant-btn[disabled]>a:only-child:after,.ant-btn[disabled]:hover>a:only-child:after,.ant-btn[disabled]:focus>a:only-child:after,.ant-btn[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn:hover,.ant-btn:focus,.ant-btn:active{text-decoration:none;background:#fff}.ant-btn>span{display:inline-block}.ant-btn-primary{color:#fff;border-color:#1890ff;background:#1890ff;text-shadow:0 -1px 0 rgba(0,0,0,.12);box-shadow:0 2px #0000000b}.ant-btn-primary>a:only-child{color:currentcolor}.ant-btn-primary>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-primary:hover,.ant-btn-primary:focus{color:#fff;border-color:#40a9ff;background:#40a9ff}.ant-btn-primary:hover>a:only-child,.ant-btn-primary:focus>a:only-child{color:currentcolor}.ant-btn-primary:hover>a:only-child:after,.ant-btn-primary:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-primary:active{color:#fff;border-color:#096dd9;background:#096dd9}.ant-btn-primary:active>a:only-child{color:currentcolor}.ant-btn-primary:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-primary[disabled],.ant-btn-primary[disabled]:hover,.ant-btn-primary[disabled]:focus,.ant-btn-primary[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-primary[disabled]>a:only-child,.ant-btn-primary[disabled]:hover>a:only-child,.ant-btn-primary[disabled]:focus>a:only-child,.ant-btn-primary[disabled]:active>a:only-child{color:currentcolor}.ant-btn-primary[disabled]>a:only-child:after,.ant-btn-primary[disabled]:hover>a:only-child:after,.ant-btn-primary[disabled]:focus>a:only-child:after,.ant-btn-primary[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child){border-right-color:#40a9ff;border-left-color:#40a9ff}.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled{border-color:#d9d9d9}.ant-btn-group .ant-btn-primary:first-child:not(:last-child){border-right-color:#40a9ff}.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled]{border-right-color:#d9d9d9}.ant-btn-group .ant-btn-primary:last-child:not(:first-child),.ant-btn-group .ant-btn-primary+.ant-btn-primary{border-left-color:#40a9ff}.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],.ant-btn-group .ant-btn-primary+.ant-btn-primary[disabled]{border-left-color:#d9d9d9}.ant-btn-ghost{color:#000000d9;border-color:#d9d9d9;background:transparent}.ant-btn-ghost>a:only-child{color:currentcolor}.ant-btn-ghost>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-ghost:hover,.ant-btn-ghost:focus{color:#40a9ff;border-color:#40a9ff;background:transparent}.ant-btn-ghost:hover>a:only-child,.ant-btn-ghost:focus>a:only-child{color:currentcolor}.ant-btn-ghost:hover>a:only-child:after,.ant-btn-ghost:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-ghost:active{color:#096dd9;border-color:#096dd9;background:transparent}.ant-btn-ghost:active>a:only-child{color:currentcolor}.ant-btn-ghost:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-ghost[disabled],.ant-btn-ghost[disabled]:hover,.ant-btn-ghost[disabled]:focus,.ant-btn-ghost[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-ghost[disabled]>a:only-child,.ant-btn-ghost[disabled]:hover>a:only-child,.ant-btn-ghost[disabled]:focus>a:only-child,.ant-btn-ghost[disabled]:active>a:only-child{color:currentcolor}.ant-btn-ghost[disabled]>a:only-child:after,.ant-btn-ghost[disabled]:hover>a:only-child:after,.ant-btn-ghost[disabled]:focus>a:only-child:after,.ant-btn-ghost[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed{color:#000000d9;border-color:#d9d9d9;background:#fff;border-style:dashed}.ant-btn-dashed>a:only-child{color:currentcolor}.ant-btn-dashed>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed:hover,.ant-btn-dashed:focus{color:#40a9ff;border-color:#40a9ff;background:#fff}.ant-btn-dashed:hover>a:only-child,.ant-btn-dashed:focus>a:only-child{color:currentcolor}.ant-btn-dashed:hover>a:only-child:after,.ant-btn-dashed:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed:active{color:#096dd9;border-color:#096dd9;background:#fff}.ant-btn-dashed:active>a:only-child{color:currentcolor}.ant-btn-dashed:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed[disabled],.ant-btn-dashed[disabled]:hover,.ant-btn-dashed[disabled]:focus,.ant-btn-dashed[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-dashed[disabled]>a:only-child,.ant-btn-dashed[disabled]:hover>a:only-child,.ant-btn-dashed[disabled]:focus>a:only-child,.ant-btn-dashed[disabled]:active>a:only-child{color:currentcolor}.ant-btn-dashed[disabled]>a:only-child:after,.ant-btn-dashed[disabled]:hover>a:only-child:after,.ant-btn-dashed[disabled]:focus>a:only-child:after,.ant-btn-dashed[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger{color:#fff;border-color:#ff4d4f;background:#ff4d4f;text-shadow:0 -1px 0 rgba(0,0,0,.12);box-shadow:0 2px #0000000b}.ant-btn-danger>a:only-child{color:currentcolor}.ant-btn-danger>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger:hover,.ant-btn-danger:focus{color:#fff;border-color:#ff7875;background:#ff7875}.ant-btn-danger:hover>a:only-child,.ant-btn-danger:focus>a:only-child{color:currentcolor}.ant-btn-danger:hover>a:only-child:after,.ant-btn-danger:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger:active{color:#fff;border-color:#d9363e;background:#d9363e}.ant-btn-danger:active>a:only-child{color:currentcolor}.ant-btn-danger:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger[disabled],.ant-btn-danger[disabled]:hover,.ant-btn-danger[disabled]:focus,.ant-btn-danger[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-danger[disabled]>a:only-child,.ant-btn-danger[disabled]:hover>a:only-child,.ant-btn-danger[disabled]:focus>a:only-child,.ant-btn-danger[disabled]:active>a:only-child{color:currentcolor}.ant-btn-danger[disabled]>a:only-child:after,.ant-btn-danger[disabled]:hover>a:only-child:after,.ant-btn-danger[disabled]:focus>a:only-child:after,.ant-btn-danger[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link{color:#1890ff;border-color:transparent;background:transparent;box-shadow:none}.ant-btn-link>a:only-child{color:currentcolor}.ant-btn-link>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link:hover,.ant-btn-link:focus{color:#40a9ff;border-color:#40a9ff;background:transparent}.ant-btn-link:hover>a:only-child,.ant-btn-link:focus>a:only-child{color:currentcolor}.ant-btn-link:hover>a:only-child:after,.ant-btn-link:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link:active{color:#096dd9;border-color:#096dd9;background:transparent}.ant-btn-link:active>a:only-child{color:currentcolor}.ant-btn-link:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link[disabled],.ant-btn-link[disabled]:hover,.ant-btn-link[disabled]:focus,.ant-btn-link[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-link:hover{background:transparent}.ant-btn-link:hover,.ant-btn-link:focus,.ant-btn-link:active{border-color:transparent}.ant-btn-link[disabled],.ant-btn-link[disabled]:hover,.ant-btn-link[disabled]:focus,.ant-btn-link[disabled]:active{color:#00000040;border-color:transparent;background:transparent;text-shadow:none;box-shadow:none}.ant-btn-link[disabled]>a:only-child,.ant-btn-link[disabled]:hover>a:only-child,.ant-btn-link[disabled]:focus>a:only-child,.ant-btn-link[disabled]:active>a:only-child{color:currentcolor}.ant-btn-link[disabled]>a:only-child:after,.ant-btn-link[disabled]:hover>a:only-child:after,.ant-btn-link[disabled]:focus>a:only-child:after,.ant-btn-link[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-text{color:#000000d9;border-color:transparent;background:transparent;box-shadow:none}.ant-btn-text>a:only-child{color:currentcolor}.ant-btn-text>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-text:hover,.ant-btn-text:focus{color:#40a9ff;border-color:#40a9ff;background:transparent}.ant-btn-text:hover>a:only-child,.ant-btn-text:focus>a:only-child{color:currentcolor}.ant-btn-text:hover>a:only-child:after,.ant-btn-text:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-text:active{color:#096dd9;border-color:#096dd9;background:transparent}.ant-btn-text:active>a:only-child{color:currentcolor}.ant-btn-text:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-text[disabled],.ant-btn-text[disabled]:hover,.ant-btn-text[disabled]:focus,.ant-btn-text[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-text:hover,.ant-btn-text:focus{color:#000000d9;background:rgba(0,0,0,.018);border-color:transparent}.ant-btn-text:active{color:#000000d9;background:rgba(0,0,0,.028);border-color:transparent}.ant-btn-text[disabled],.ant-btn-text[disabled]:hover,.ant-btn-text[disabled]:focus,.ant-btn-text[disabled]:active{color:#00000040;border-color:transparent;background:transparent;text-shadow:none;box-shadow:none}.ant-btn-text[disabled]>a:only-child,.ant-btn-text[disabled]:hover>a:only-child,.ant-btn-text[disabled]:focus>a:only-child,.ant-btn-text[disabled]:active>a:only-child{color:currentcolor}.ant-btn-text[disabled]>a:only-child:after,.ant-btn-text[disabled]:hover>a:only-child:after,.ant-btn-text[disabled]:focus>a:only-child:after,.ant-btn-text[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous{color:#ff4d4f;border-color:#ff4d4f;background:#fff}.ant-btn-dangerous>a:only-child{color:currentcolor}.ant-btn-dangerous>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous:hover,.ant-btn-dangerous:focus{color:#ff7875;border-color:#ff7875;background:#fff}.ant-btn-dangerous:hover>a:only-child,.ant-btn-dangerous:focus>a:only-child{color:currentcolor}.ant-btn-dangerous:hover>a:only-child:after,.ant-btn-dangerous:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous:active{color:#d9363e;border-color:#d9363e;background:#fff}.ant-btn-dangerous:active>a:only-child{color:currentcolor}.ant-btn-dangerous:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous[disabled],.ant-btn-dangerous[disabled]:hover,.ant-btn-dangerous[disabled]:focus,.ant-btn-dangerous[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-dangerous[disabled]>a:only-child,.ant-btn-dangerous[disabled]:hover>a:only-child,.ant-btn-dangerous[disabled]:focus>a:only-child,.ant-btn-dangerous[disabled]:active>a:only-child{color:currentcolor}.ant-btn-dangerous[disabled]>a:only-child:after,.ant-btn-dangerous[disabled]:hover>a:only-child:after,.ant-btn-dangerous[disabled]:focus>a:only-child:after,.ant-btn-dangerous[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-primary{color:#fff;border-color:#ff4d4f;background:#ff4d4f;text-shadow:0 -1px 0 rgba(0,0,0,.12);box-shadow:0 2px #0000000b}.ant-btn-dangerous.ant-btn-primary>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-primary>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-primary:hover,.ant-btn-dangerous.ant-btn-primary:focus{color:#fff;border-color:#ff7875;background:#ff7875}.ant-btn-dangerous.ant-btn-primary:hover>a:only-child,.ant-btn-dangerous.ant-btn-primary:focus>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-primary:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-primary:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-primary:active{color:#fff;border-color:#d9363e;background:#d9363e}.ant-btn-dangerous.ant-btn-primary:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-primary:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-primary[disabled],.ant-btn-dangerous.ant-btn-primary[disabled]:hover,.ant-btn-dangerous.ant-btn-primary[disabled]:focus,.ant-btn-dangerous.ant-btn-primary[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-dangerous.ant-btn-primary[disabled]>a:only-child,.ant-btn-dangerous.ant-btn-primary[disabled]:hover>a:only-child,.ant-btn-dangerous.ant-btn-primary[disabled]:focus>a:only-child,.ant-btn-dangerous.ant-btn-primary[disabled]:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-primary[disabled]>a:only-child:after,.ant-btn-dangerous.ant-btn-primary[disabled]:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-primary[disabled]:focus>a:only-child:after,.ant-btn-dangerous.ant-btn-primary[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-link{color:#ff4d4f;border-color:transparent;background:transparent;box-shadow:none}.ant-btn-dangerous.ant-btn-link>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-link>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-link:hover,.ant-btn-dangerous.ant-btn-link:focus{color:#40a9ff;border-color:#40a9ff;background:transparent}.ant-btn-dangerous.ant-btn-link:active{color:#096dd9;border-color:#096dd9;background:transparent}.ant-btn-dangerous.ant-btn-link[disabled],.ant-btn-dangerous.ant-btn-link[disabled]:hover,.ant-btn-dangerous.ant-btn-link[disabled]:focus,.ant-btn-dangerous.ant-btn-link[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-dangerous.ant-btn-link:hover,.ant-btn-dangerous.ant-btn-link:focus{color:#ff7875;border-color:transparent;background:transparent}.ant-btn-dangerous.ant-btn-link:hover>a:only-child,.ant-btn-dangerous.ant-btn-link:focus>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-link:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-link:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-link:active{color:#d9363e;border-color:transparent;background:transparent}.ant-btn-dangerous.ant-btn-link:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-link:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-link[disabled],.ant-btn-dangerous.ant-btn-link[disabled]:hover,.ant-btn-dangerous.ant-btn-link[disabled]:focus,.ant-btn-dangerous.ant-btn-link[disabled]:active{color:#00000040;border-color:transparent;background:transparent;text-shadow:none;box-shadow:none}.ant-btn-dangerous.ant-btn-link[disabled]>a:only-child,.ant-btn-dangerous.ant-btn-link[disabled]:hover>a:only-child,.ant-btn-dangerous.ant-btn-link[disabled]:focus>a:only-child,.ant-btn-dangerous.ant-btn-link[disabled]:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-link[disabled]>a:only-child:after,.ant-btn-dangerous.ant-btn-link[disabled]:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-link[disabled]:focus>a:only-child:after,.ant-btn-dangerous.ant-btn-link[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-text{color:#ff4d4f;border-color:transparent;background:transparent;box-shadow:none}.ant-btn-dangerous.ant-btn-text>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-text>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-text:hover,.ant-btn-dangerous.ant-btn-text:focus{color:#40a9ff;border-color:#40a9ff;background:transparent}.ant-btn-dangerous.ant-btn-text:active{color:#096dd9;border-color:#096dd9;background:transparent}.ant-btn-dangerous.ant-btn-text[disabled],.ant-btn-dangerous.ant-btn-text[disabled]:hover,.ant-btn-dangerous.ant-btn-text[disabled]:focus,.ant-btn-dangerous.ant-btn-text[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-dangerous.ant-btn-text:hover,.ant-btn-dangerous.ant-btn-text:focus{color:#ff7875;border-color:transparent;background:rgba(0,0,0,.018)}.ant-btn-dangerous.ant-btn-text:hover>a:only-child,.ant-btn-dangerous.ant-btn-text:focus>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-text:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-text:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-text:active{color:#d9363e;border-color:transparent;background:rgba(0,0,0,.028)}.ant-btn-dangerous.ant-btn-text:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-text:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-text[disabled],.ant-btn-dangerous.ant-btn-text[disabled]:hover,.ant-btn-dangerous.ant-btn-text[disabled]:focus,.ant-btn-dangerous.ant-btn-text[disabled]:active{color:#00000040;border-color:transparent;background:transparent;text-shadow:none;box-shadow:none}.ant-btn-dangerous.ant-btn-text[disabled]>a:only-child,.ant-btn-dangerous.ant-btn-text[disabled]:hover>a:only-child,.ant-btn-dangerous.ant-btn-text[disabled]:focus>a:only-child,.ant-btn-dangerous.ant-btn-text[disabled]:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-text[disabled]>a:only-child:after,.ant-btn-dangerous.ant-btn-text[disabled]:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-text[disabled]:focus>a:only-child:after,.ant-btn-dangerous.ant-btn-text[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-icon-only{width:32px;height:32px;padding:2.4px 0;font-size:16px;border-radius:2px;vertical-align:-3px}.ant-btn-icon-only>*{font-size:16px}.ant-btn-icon-only.ant-btn-lg{width:40px;height:40px;padding:4.9px 0;font-size:18px;border-radius:2px}.ant-btn-icon-only.ant-btn-lg>*{font-size:18px}.ant-btn-icon-only.ant-btn-sm{width:24px;height:24px;padding:0;font-size:14px;border-radius:2px}.ant-btn-icon-only.ant-btn-sm>*{font-size:14px}.ant-btn-icon-only>.anticon{display:flex;justify-content:center}.ant-btn-icon-only .anticon-loading{padding:0!important}a.ant-btn-icon-only{vertical-align:-1px}a.ant-btn-icon-only>.anticon{display:inline}.ant-btn-round{height:32px;padding:4px 16px;font-size:14px;border-radius:32px}.ant-btn-round.ant-btn-lg{height:40px;padding:6.4px 20px;font-size:16px;border-radius:40px}.ant-btn-round.ant-btn-sm{height:24px;padding:0 12px;font-size:14px;border-radius:24px}.ant-btn-round.ant-btn-icon-only{width:auto}.ant-btn-circle{min-width:32px;padding-right:0;padding-left:0;text-align:center;border-radius:50%}.ant-btn-circle.ant-btn-lg{min-width:40px;border-radius:50%}.ant-btn-circle.ant-btn-sm{min-width:24px;border-radius:50%}.ant-btn:before{position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;z-index:1;display:none;background:#fff;border-radius:inherit;opacity:.35;transition:opacity .2s;content:"";pointer-events:none}.ant-btn .anticon{transition:margin-left .3s cubic-bezier(.645,.045,.355,1)}.ant-btn .anticon.anticon-plus>svg,.ant-btn .anticon.anticon-minus>svg{shape-rendering:optimizespeed}.ant-btn.ant-btn-loading{position:relative;cursor:default}.ant-btn.ant-btn-loading:before{display:block}.ant-btn>.ant-btn-loading-icon{transition:width .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1)}.ant-btn>.ant-btn-loading-icon .anticon{padding-right:8px;animation:none}.ant-btn>.ant-btn-loading-icon .anticon svg{animation:loadingCircle 1s infinite linear}.ant-btn-group{position:relative;display:inline-flex}.ant-btn-group>.ant-btn,.ant-btn-group>span>.ant-btn{position:relative}.ant-btn-group>.ant-btn:hover,.ant-btn-group>span>.ant-btn:hover,.ant-btn-group>.ant-btn:focus,.ant-btn-group>span>.ant-btn:focus,.ant-btn-group>.ant-btn:active,.ant-btn-group>span>.ant-btn:active{z-index:2}.ant-btn-group>.ant-btn[disabled],.ant-btn-group>span>.ant-btn[disabled]{z-index:0}.ant-btn-group .ant-btn-icon-only{font-size:14px}.ant-btn-group .ant-btn+.ant-btn,.ant-btn+.ant-btn-group,.ant-btn-group span+.ant-btn,.ant-btn-group .ant-btn+span,.ant-btn-group>span+span,.ant-btn-group+.ant-btn,.ant-btn-group+.ant-btn-group{margin-left:-1px}.ant-btn-group .ant-btn-primary+.ant-btn:not(.ant-btn-primary):not([disabled]){border-left-color:transparent}.ant-btn-group .ant-btn{border-radius:0}.ant-btn-group>.ant-btn:first-child,.ant-btn-group>span:first-child>.ant-btn{margin-left:0}.ant-btn-group>.ant-btn:only-child{border-radius:2px}.ant-btn-group>span:only-child>.ant-btn{border-radius:2px}.ant-btn-group>.ant-btn:first-child:not(:last-child),.ant-btn-group>span:first-child:not(:last-child)>.ant-btn{border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-btn-group>.ant-btn:last-child:not(:first-child),.ant-btn-group>span:last-child:not(:first-child)>.ant-btn{border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-btn-group-sm>.ant-btn:only-child{border-radius:2px}.ant-btn-group-sm>span:only-child>.ant-btn{border-radius:2px}.ant-btn-group-sm>.ant-btn:first-child:not(:last-child),.ant-btn-group-sm>span:first-child:not(:last-child)>.ant-btn{border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-btn-group-sm>.ant-btn:last-child:not(:first-child),.ant-btn-group-sm>span:last-child:not(:first-child)>.ant-btn{border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-btn-group>.ant-btn-group{float:left}.ant-btn-group>.ant-btn-group:not(:first-child):not(:last-child)>.ant-btn{border-radius:0}.ant-btn-group>.ant-btn-group:first-child:not(:last-child)>.ant-btn:last-child{padding-right:8px;border-top-right-radius:0;border-bottom-right-radius:0}.ant-btn-group>.ant-btn-group:last-child:not(:first-child)>.ant-btn:first-child{padding-left:8px;border-top-left-radius:0;border-bottom-left-radius:0}.ant-btn-rtl.ant-btn-group .ant-btn+.ant-btn,.ant-btn-rtl.ant-btn+.ant-btn-group,.ant-btn-rtl.ant-btn-group span+.ant-btn,.ant-btn-rtl.ant-btn-group .ant-btn+span,.ant-btn-rtl.ant-btn-group>span+span,.ant-btn-rtl.ant-btn-group+.ant-btn,.ant-btn-rtl.ant-btn-group+.ant-btn-group,.ant-btn-group-rtl.ant-btn-group .ant-btn+.ant-btn,.ant-btn-group-rtl.ant-btn+.ant-btn-group,.ant-btn-group-rtl.ant-btn-group span+.ant-btn,.ant-btn-group-rtl.ant-btn-group .ant-btn+span,.ant-btn-group-rtl.ant-btn-group>span+span,.ant-btn-group-rtl.ant-btn-group+.ant-btn,.ant-btn-group-rtl.ant-btn-group+.ant-btn-group{margin-right:-1px;margin-left:auto}.ant-btn-group.ant-btn-group-rtl{direction:rtl}.ant-btn-group-rtl.ant-btn-group>.ant-btn:first-child:not(:last-child),.ant-btn-group-rtl.ant-btn-group>span:first-child:not(:last-child)>.ant-btn{border-radius:0 2px 2px 0}.ant-btn-group-rtl.ant-btn-group>.ant-btn:last-child:not(:first-child),.ant-btn-group-rtl.ant-btn-group>span:last-child:not(:first-child)>.ant-btn{border-radius:2px 0 0 2px}.ant-btn-group-rtl.ant-btn-group-sm>.ant-btn:first-child:not(:last-child),.ant-btn-group-rtl.ant-btn-group-sm>span:first-child:not(:last-child)>.ant-btn{border-radius:0 2px 2px 0}.ant-btn-group-rtl.ant-btn-group-sm>.ant-btn:last-child:not(:first-child),.ant-btn-group-rtl.ant-btn-group-sm>span:last-child:not(:first-child)>.ant-btn{border-radius:2px 0 0 2px}.ant-btn:focus>span,.ant-btn:active>span{position:relative}.ant-btn>.anticon+span,.ant-btn>span+.anticon{margin-left:8px}.ant-btn.ant-btn-background-ghost{color:#fff;border-color:#fff}.ant-btn.ant-btn-background-ghost,.ant-btn.ant-btn-background-ghost:hover,.ant-btn.ant-btn-background-ghost:active,.ant-btn.ant-btn-background-ghost:focus{background:transparent}.ant-btn.ant-btn-background-ghost:hover,.ant-btn.ant-btn-background-ghost:focus{color:#40a9ff;border-color:#40a9ff}.ant-btn.ant-btn-background-ghost:active{color:#096dd9;border-color:#096dd9}.ant-btn.ant-btn-background-ghost[disabled]{color:#00000040;background:transparent;border-color:#d9d9d9}.ant-btn-background-ghost.ant-btn-primary{color:#1890ff;border-color:#1890ff;text-shadow:none}.ant-btn-background-ghost.ant-btn-primary>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-primary>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-primary:hover,.ant-btn-background-ghost.ant-btn-primary:focus{color:#40a9ff;border-color:#40a9ff}.ant-btn-background-ghost.ant-btn-primary:hover>a:only-child,.ant-btn-background-ghost.ant-btn-primary:focus>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-primary:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-primary:active{color:#096dd9;border-color:#096dd9}.ant-btn-background-ghost.ant-btn-primary:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-primary:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-primary[disabled],.ant-btn-background-ghost.ant-btn-primary[disabled]:hover,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus,.ant-btn-background-ghost.ant-btn-primary[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-primary[disabled]>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-primary[disabled]>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger{color:#ff4d4f;border-color:#ff4d4f;text-shadow:none}.ant-btn-background-ghost.ant-btn-danger>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-danger>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger:hover,.ant-btn-background-ghost.ant-btn-danger:focus{color:#ff7875;border-color:#ff7875}.ant-btn-background-ghost.ant-btn-danger:hover>a:only-child,.ant-btn-background-ghost.ant-btn-danger:focus>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-danger:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger:active{color:#d9363e;border-color:#d9363e}.ant-btn-background-ghost.ant-btn-danger:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-danger:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger[disabled],.ant-btn-background-ghost.ant-btn-danger[disabled]:hover,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus,.ant-btn-background-ghost.ant-btn-danger[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-danger[disabled]>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-danger[disabled]>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous{color:#ff4d4f;border-color:#ff4d4f;text-shadow:none}.ant-btn-background-ghost.ant-btn-dangerous>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous:hover,.ant-btn-background-ghost.ant-btn-dangerous:focus{color:#ff7875;border-color:#ff7875}.ant-btn-background-ghost.ant-btn-dangerous:hover>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous:focus>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous:active{color:#d9363e;border-color:#d9363e}.ant-btn-background-ghost.ant-btn-dangerous:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous[disabled],.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-dangerous[disabled]>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous[disabled]>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link{color:#ff4d4f;border-color:transparent;text-shadow:none}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus{color:#ff7875;border-color:transparent}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active{color:#d9363e;border-color:transparent}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled],.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-two-chinese-chars:first-letter{letter-spacing:.34em}.ant-btn-two-chinese-chars>*:not(.anticon){margin-right:-.34em;letter-spacing:.34em}.ant-btn.ant-btn-block{width:100%}.ant-btn:empty{display:inline-block;width:0;visibility:hidden;content:" "}a.ant-btn{padding-top:.01px!important;line-height:30px}a.ant-btn-disabled{cursor:not-allowed}a.ant-btn-disabled>*{pointer-events:none}a.ant-btn-disabled,a.ant-btn-disabled:hover,a.ant-btn-disabled:focus,a.ant-btn-disabled:active{color:#00000040;border-color:transparent;background:transparent;text-shadow:none;box-shadow:none}a.ant-btn-disabled>a:only-child,a.ant-btn-disabled:hover>a:only-child,a.ant-btn-disabled:focus>a:only-child,a.ant-btn-disabled:active>a:only-child{color:currentcolor}a.ant-btn-disabled>a:only-child:after,a.ant-btn-disabled:hover>a:only-child:after,a.ant-btn-disabled:focus>a:only-child:after,a.ant-btn-disabled:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}a.ant-btn-lg{line-height:38px}a.ant-btn-sm{line-height:22px}.ant-btn-compact-item:not(.ant-btn-compact-last-item):not(.ant-btn-compact-item-rtl){margin-right:-1px}.ant-btn-compact-item:not(.ant-btn-compact-last-item).ant-btn-compact-item-rtl{margin-left:-1px}.ant-btn-compact-item:hover,.ant-btn-compact-item:focus,.ant-btn-compact-item:active{z-index:2}.ant-btn-compact-item[disabled]{z-index:0}.ant-btn-compact-item:not(.ant-btn-compact-first-item):not(.ant-btn-compact-last-item).ant-btn{border-radius:0}.ant-btn-compact-item.ant-btn.ant-btn-compact-first-item:not(.ant-btn-compact-last-item):not(.ant-btn-compact-item-rtl){border-top-right-radius:0;border-bottom-right-radius:0}.ant-btn-compact-item.ant-btn.ant-btn-compact-last-item:not(.ant-btn-compact-first-item):not(.ant-btn-compact-item-rtl){border-top-left-radius:0;border-bottom-left-radius:0}.ant-btn-compact-item.ant-btn.ant-btn-compact-item-rtl.ant-btn-compact-first-item:not(.ant-btn-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-btn-compact-item.ant-btn.ant-btn-compact-item-rtl.ant-btn-compact-last-item:not(.ant-btn-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-btn-icon-only.ant-btn-compact-item{flex:none}.ant-btn-compact-item.ant-btn-primary:not([disabled])+.ant-btn-compact-item.ant-btn-primary:not([disabled]){position:relative}.ant-btn-compact-item.ant-btn-primary:not([disabled])+.ant-btn-compact-item.ant-btn-primary:not([disabled]):after{position:absolute;top:-1px;left:-1px;display:inline-block;width:1px;height:calc(100% + 2px);background-color:#40a9ff;content:" "}.ant-btn-compact-item-rtl.ant-btn-compact-first-item.ant-btn-compact-item-rtl:not(.ant-btn-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-btn-compact-item-rtl.ant-btn-compact-last-item.ant-btn-compact-item-rtl:not(.ant-btn-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-btn-compact-item-rtl.ant-btn-sm.ant-btn-compact-first-item.ant-btn-compact-item-rtl.ant-btn-sm:not(.ant-btn-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-btn-compact-item-rtl.ant-btn-sm.ant-btn-compact-last-item.ant-btn-compact-item-rtl.ant-btn-sm:not(.ant-btn-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-btn-compact-item-rtl.ant-btn-primary:not([disabled])+.ant-btn-compact-item-rtl.ant-btn-primary:not([disabled]):after{right:-1px}.ant-btn-compact-vertical-item:not(.ant-btn-compact-vertical-last-item){margin-bottom:-1px}.ant-btn-compact-vertical-item:hover,.ant-btn-compact-vertical-item:focus,.ant-btn-compact-vertical-item:active{z-index:2}.ant-btn-compact-vertical-item[disabled]{z-index:0}.ant-btn-compact-vertical-item:not(.ant-btn-compact-vertical-first-item):not(.ant-btn-compact-vertical-last-item){border-radius:0}.ant-btn-compact-vertical-item.ant-btn-compact-vertical-first-item:not(.ant-btn-compact-vertical-last-item){border-bottom-right-radius:0;border-bottom-left-radius:0}.ant-btn-compact-vertical-item.ant-btn-compact-vertical-last-item:not(.ant-btn-compact-vertical-first-item){border-top-left-radius:0;border-top-right-radius:0}.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled])+.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled]){position:relative}.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled])+.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled]):after{position:absolute;top:-1px;left:-1px;display:inline-block;width:calc(100% + 2px);height:1px;background-color:#40a9ff;content:" "}.ant-btn-rtl{direction:rtl}.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child),.ant-btn-group-rtl.ant-btn-group .ant-btn-primary+.ant-btn-primary{border-right-color:#40a9ff;border-left-color:#d9d9d9}.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],.ant-btn-group-rtl.ant-btn-group .ant-btn-primary+.ant-btn-primary[disabled]{border-right-color:#d9d9d9;border-left-color:#40a9ff}.ant-btn-rtl.ant-btn>.ant-btn-loading-icon .anticon{padding-right:0;padding-left:8px}.ant-btn-rtl.ant-btn>.anticon+span,.ant-btn-rtl.ant-btn>span+.anticon{margin-right:8px;margin-left:0}.ant-pro-core-dropdown-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 16px 16px 8px;border-top:1px solid #f0f0f0}.ant-result{padding:48px 32px}.ant-result-success .ant-result-icon>.anticon{color:#52c41a}.ant-result-error .ant-result-icon>.anticon{color:#ff4d4f}.ant-result-info .ant-result-icon>.anticon{color:#1890ff}.ant-result-warning .ant-result-icon>.anticon{color:#faad14}.ant-result-image{width:250px;height:295px;margin:auto}.ant-result-icon{margin-bottom:24px;text-align:center}.ant-result-icon>.anticon{font-size:72px}.ant-result-title{color:#000000d9;font-size:24px;line-height:1.8;text-align:center}.ant-result-subtitle{color:#00000073;font-size:14px;line-height:1.6;text-align:center}.ant-result-extra{margin:24px 0 0;text-align:center}.ant-result-extra>*{margin-right:8px}.ant-result-extra>*:last-child{margin-right:0}.ant-result-content{margin-top:24px;padding:24px 40px;background-color:#fafafa}.ant-result-rtl{direction:rtl}.ant-result-rtl .ant-result-extra>*{margin-right:0;margin-left:8px}.ant-result-rtl .ant-result-extra>*:last-child{margin-left:0}.ant-pro-core-field-label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:4px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:30px;padding:0 4px;font-size:14px;line-height:30px;border-radius:2px;cursor:pointer}.ant-pro-core-field-label:hover{background-color:#0000001a}.ant-pro-core-field-label-active{padding:0 12px;background-color:#0000000a}.ant-pro-core-field-label-active.ant-pro-core-field-label-allow-clear:hover:not(.ant-pro-core-field-label-disabled) .ant-pro-core-field-label-arrow{display:none}.ant-pro-core-field-label-active.ant-pro-core-field-label-allow-clear:hover:not(.ant-pro-core-field-label-disabled) .ant-pro-core-field-label-close{display:inline-block}.ant-pro-core-field-label-icon{height:12px;padding:1px;color:#00000073;font-size:12px;vertical-align:middle}.ant-pro-core-field-label-icon.ant-pro-core-field-label-close{display:none;height:14px;padding:3px;color:#fff;font-size:8px;background-color:#00000040;border-radius:50%}.ant-pro-core-field-label-icon.ant-pro-core-field-label-close:hover{background-color:#00000073}.ant-pro-core-field-label-disabled{color:#00000040;cursor:not-allowed}.ant-pro-core-field-label-disabled .ant-pro-core-field-label-icon{color:#00000040}.ant-pro-core-field-label-small{height:24px;padding:0 4px;font-size:12px;line-height:24px}.ant-pro-core-field-label-small.ant-pro-core-field-label-active{padding:0 8px}.ant-pro-core-field-label-small .ant-pro-core-field-label-icon{padding:0}.ant-pro-core-field-label-small .ant-pro-core-field-label-close{margin-top:-2px;padding:3px;font-size:6px}.ant-pro-core-field-label-bordered{height:32px;padding:0 12px;border:1px solid #d9d9d9;border-radius:2px}.ant-pro-core-field-label-bordered.ant-pro-core-field-label-small{height:24px;padding:0 8px}.ant-pro-core-field-label-bordered.ant-pro-core-field-label-active{background-color:#fff}.ant-dropdown-menu-item.ant-dropdown-menu-item-danger{color:#ff4d4f}.ant-dropdown-menu-item.ant-dropdown-menu-item-danger:hover{color:#fff;background-color:#ff4d4f}.ant-dropdown{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;top:-9999px;left:-9999px;z-index:1050;display:block}.ant-dropdown:before{position:absolute;top:-4px;right:0;bottom:-4px;left:-7px;z-index:-9999;opacity:.0001;content:" "}.ant-dropdown-wrap{position:relative}.ant-dropdown-wrap .ant-btn>.anticon-down{font-size:10px}.ant-dropdown-wrap .anticon-down:before{transition:transform .2s}.ant-dropdown-wrap-open .anticon-down:before{transform:rotate(180deg)}.ant-dropdown-hidden,.ant-dropdown-menu-hidden,.ant-dropdown-menu-submenu-hidden{display:none}.ant-dropdown-show-arrow.ant-dropdown-placement-topLeft,.ant-dropdown-show-arrow.ant-dropdown-placement-top,.ant-dropdown-show-arrow.ant-dropdown-placement-topRight{padding-bottom:15.3137085px}.ant-dropdown-show-arrow.ant-dropdown-placement-bottomLeft,.ant-dropdown-show-arrow.ant-dropdown-placement-bottom,.ant-dropdown-show-arrow.ant-dropdown-placement-bottomRight{padding-top:15.3137085px}.ant-dropdown-arrow{position:absolute;z-index:1;display:block;width:11.3137085px;height:11.3137085px;border-radius:0 0 2px;pointer-events:none}.ant-dropdown-arrow:before{position:absolute;top:-11.3137085px;left:-11.3137085px;width:33.9411255px;height:33.9411255px;background:#fff;background-repeat:no-repeat;background-position:-10px -10px;content:"";clip-path:inset(33% 33%);clip-path:path("M 9.849242404917499 24.091883092036785 A 5 5 0 0 1 13.384776310850237 22.627416997969522 L 20.627416997969522 22.627416997969522 A 2 2 0 0 0 22.627416997969522 20.627416997969522 L 22.627416997969522 13.384776310850237 A 5 5 0 0 1 24.091883092036785 9.849242404917499 L 23.091883092036785 9.849242404917499 L 9.849242404917499 23.091883092036785 Z")}.ant-dropdown-placement-top>.ant-dropdown-arrow,.ant-dropdown-placement-topLeft>.ant-dropdown-arrow,.ant-dropdown-placement-topRight>.ant-dropdown-arrow{bottom:10px;box-shadow:3px 3px 7px -3px #0000001a;transform:rotate(45deg)}.ant-dropdown-placement-top>.ant-dropdown-arrow{left:50%;transform:translate(-50%) rotate(45deg)}.ant-dropdown-placement-topLeft>.ant-dropdown-arrow{left:16px}.ant-dropdown-placement-topRight>.ant-dropdown-arrow{right:16px}.ant-dropdown-placement-bottom>.ant-dropdown-arrow,.ant-dropdown-placement-bottomLeft>.ant-dropdown-arrow,.ant-dropdown-placement-bottomRight>.ant-dropdown-arrow{top:9.41421356px;box-shadow:2px 2px 5px -2px #0000001a;transform:rotate(-135deg) translateY(-.5px)}.ant-dropdown-placement-bottom>.ant-dropdown-arrow{left:50%;transform:translate(-50%) rotate(-135deg) translateY(-.5px)}.ant-dropdown-placement-bottomLeft>.ant-dropdown-arrow{left:16px}.ant-dropdown-placement-bottomRight>.ant-dropdown-arrow{right:16px}.ant-dropdown-menu{position:relative;margin:0;padding:4px 0;text-align:left;list-style-type:none;background-color:#fff;background-clip:padding-box;border-radius:2px;outline:none;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}.ant-dropdown-menu-item-group-title{padding:5px 12px;color:#00000073;transition:all .3s}.ant-dropdown-menu-submenu-popup{position:absolute;z-index:1050;background:transparent;box-shadow:none;transform-origin:0 0}.ant-dropdown-menu-submenu-popup ul,.ant-dropdown-menu-submenu-popup li{list-style:none}.ant-dropdown-menu-submenu-popup ul{margin-right:.3em;margin-left:.3em}.ant-dropdown-menu-item{position:relative;display:flex;align-items:center}.ant-dropdown-menu-item-icon{min-width:12px;margin-right:8px;font-size:12px}.ant-dropdown-menu-title-content{flex:auto}.ant-dropdown-menu-title-content>a{color:inherit;transition:all .3s}.ant-dropdown-menu-title-content>a:hover{color:inherit}.ant-dropdown-menu-title-content>a:after{position:absolute;top:0;right:0;bottom:0;left:0;content:""}.ant-dropdown-menu-item,.ant-dropdown-menu-submenu-title{clear:both;margin:0;padding:5px 12px;color:#000000d9;font-weight:400;font-size:14px;line-height:22px;cursor:pointer;transition:all .3s}.ant-dropdown-menu-item-selected,.ant-dropdown-menu-submenu-title-selected{color:#1890ff;background-color:#e6f7ff}.ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu-title:hover,.ant-dropdown-menu-item.ant-dropdown-menu-item-active,.ant-dropdown-menu-item.ant-dropdown-menu-submenu-title-active,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-item-active,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-submenu-title-active{background-color:#f5f5f5}.ant-dropdown-menu-item.ant-dropdown-menu-item-disabled,.ant-dropdown-menu-item.ant-dropdown-menu-submenu-title-disabled,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-item-disabled,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-submenu-title-disabled{color:#00000040;cursor:not-allowed}.ant-dropdown-menu-item.ant-dropdown-menu-item-disabled:hover,.ant-dropdown-menu-item.ant-dropdown-menu-submenu-title-disabled:hover,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-item-disabled:hover,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-submenu-title-disabled:hover{color:#00000040;background-color:#fff;cursor:not-allowed}.ant-dropdown-menu-item.ant-dropdown-menu-item-disabled a,.ant-dropdown-menu-item.ant-dropdown-menu-submenu-title-disabled a,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-item-disabled a,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-submenu-title-disabled a{pointer-events:none}.ant-dropdown-menu-item-divider,.ant-dropdown-menu-submenu-title-divider{height:1px;margin:4px 0;overflow:hidden;line-height:0;background-color:#f0f0f0}.ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon,.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon{position:absolute;right:8px}.ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon{margin-right:0!important;color:#00000073;font-size:10px;font-style:normal}.ant-dropdown-menu-item-group-list{margin:0 8px;padding:0;list-style:none}.ant-dropdown-menu-submenu-title{padding-right:24px}.ant-dropdown-menu-submenu-vertical{position:relative}.ant-dropdown-menu-submenu-vertical>.ant-dropdown-menu{position:absolute;top:0;left:100%;min-width:100%;margin-left:4px;transform-origin:0 0}.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon{color:#00000040;background-color:#fff;cursor:not-allowed}.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#1890ff}.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomRight,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomRight{animation-name:antSlideUpIn}.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-topRight,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-topRight{animation-name:antSlideDownIn}.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottomRight{animation-name:antSlideUpOut}.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-topRight{animation-name:antSlideDownOut}.ant-dropdown-trigger>.anticon.anticon-down,.ant-dropdown-link>.anticon.anticon-down,.ant-dropdown-button>.anticon.anticon-down{font-size:10px;vertical-align:baseline}.ant-dropdown-button{white-space:nowrap}.ant-dropdown-button.ant-btn-group>.ant-btn-loading,.ant-dropdown-button.ant-btn-group>.ant-btn-loading+.ant-btn{cursor:default;pointer-events:none}.ant-dropdown-button.ant-btn-group>.ant-btn-loading+.ant-btn:before{display:block}.ant-dropdown-button.ant-btn-group>.ant-btn:last-child:not(:first-child):not(.ant-btn-icon-only){padding-right:8px;padding-left:8px}.ant-dropdown-menu-dark,.ant-dropdown-menu-dark .ant-dropdown-menu{background:#001529}.ant-dropdown-menu-dark .ant-dropdown-menu-item,.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-dark .ant-dropdown-menu-item>a,.ant-dropdown-menu-dark .ant-dropdown-menu-item>.anticon+span>a{color:#ffffffa6}.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after,.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after,.ant-dropdown-menu-dark .ant-dropdown-menu-item>a .ant-dropdown-menu-submenu-arrow:after,.ant-dropdown-menu-dark .ant-dropdown-menu-item>.anticon+span>a .ant-dropdown-menu-submenu-arrow:after{color:#ffffffa6}.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item>a:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item>.anticon+span>a:hover{color:#fff;background:transparent}.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected>a{color:#fff;background:#1890ff}.ant-dropdown-rtl{direction:rtl}.ant-dropdown-rtl.ant-dropdown:before{right:-7px;left:0}.ant-dropdown-menu.ant-dropdown-menu-rtl,.ant-dropdown-rtl .ant-dropdown-menu-item-group-title,.ant-dropdown-menu-submenu-rtl .ant-dropdown-menu-item-group-title{direction:rtl;text-align:right}.ant-dropdown-menu-submenu-popup.ant-dropdown-menu-submenu-rtl{transform-origin:100% 0}.ant-dropdown-rtl .ant-dropdown-menu-submenu-popup ul,.ant-dropdown-rtl .ant-dropdown-menu-submenu-popup li,.ant-dropdown-rtl .ant-dropdown-menu-item,.ant-dropdown-rtl .ant-dropdown-menu-submenu-title{text-align:right}.ant-dropdown-rtl .ant-dropdown-menu-item>.anticon:first-child,.ant-dropdown-rtl .ant-dropdown-menu-submenu-title>.anticon:first-child,.ant-dropdown-rtl .ant-dropdown-menu-item>span>.anticon:first-child,.ant-dropdown-rtl .ant-dropdown-menu-submenu-title>span>.anticon:first-child{margin-right:0;margin-left:8px}.ant-dropdown-rtl .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon,.ant-dropdown-rtl .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon{right:auto;left:8px}.ant-dropdown-rtl .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown-rtl .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon{margin-left:0!important;transform:scaleX(-1)}.ant-dropdown-rtl .ant-dropdown-menu-submenu-title{padding-right:12px;padding-left:24px}.ant-dropdown-rtl .ant-dropdown-menu-submenu-vertical>.ant-dropdown-menu{right:100%;left:0;margin-right:4px;margin-left:0}.ant-menu-item-danger.ant-menu-item,.ant-menu-item-danger.ant-menu-item:hover,.ant-menu-item-danger.ant-menu-item-active{color:#ff4d4f}.ant-menu-item-danger.ant-menu-item:active{background:#fff1f0}.ant-menu-item-danger.ant-menu-item-selected{color:#ff4d4f}.ant-menu-item-danger.ant-menu-item-selected>a,.ant-menu-item-danger.ant-menu-item-selected>a:hover{color:#ff4d4f}.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected{background-color:#fff1f0}.ant-menu-inline .ant-menu-item-danger.ant-menu-item:after{border-right-color:#ff4d4f}.ant-menu-dark .ant-menu-item-danger.ant-menu-item,.ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover,.ant-menu-dark .ant-menu-item-danger.ant-menu-item>a{color:#ff4d4f}.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected{color:#fff;background-color:#ff4d4f}.ant-menu{box-sizing:border-box;margin:0;font-variant:tabular-nums;font-feature-settings:"tnum","tnum";padding:0;color:#000000d9;font-size:14px;line-height:0;text-align:left;list-style:none;background:#fff;outline:none;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d;transition:background .3s,width .3s cubic-bezier(.2,0,0,1) 0s}.ant-menu:before{display:table;content:""}.ant-menu:after{display:table;clear:both;content:""}.ant-menu.ant-menu-root:focus-visible{box-shadow:0 0 0 2px #bae7ff}.ant-menu ul,.ant-menu ol{margin:0;padding:0;list-style:none}.ant-menu-overflow{display:flex}.ant-menu-overflow-item{flex:none}.ant-menu-hidden,.ant-menu-submenu-hidden{display:none}.ant-menu-item-group-title{height:1.5715;padding:8px 16px;color:#00000073;font-size:14px;line-height:1.5715;transition:all .3s}.ant-menu-horizontal .ant-menu-submenu{transition:border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu,.ant-menu-submenu-inline{transition:border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu-selected{color:#1890ff}.ant-menu-item:active,.ant-menu-submenu-title:active{background:#e6f7ff}.ant-menu-submenu .ant-menu-sub{cursor:initial;transition:background .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-title-content{transition:color .3s}.ant-menu-item a{color:#000000d9}.ant-menu-item a:hover{color:#1890ff}.ant-menu-item a:before{position:absolute;top:0;right:0;bottom:0;left:0;background-color:transparent;content:""}.ant-menu-item>.ant-badge a{color:#000000d9}.ant-menu-item>.ant-badge a:hover{color:#1890ff}.ant-menu-item-divider{overflow:hidden;line-height:0;border-color:#f0f0f0;border-style:solid;border-width:1px 0 0}.ant-menu-item-divider-dashed{border-style:dashed}.ant-menu-horizontal .ant-menu-item,.ant-menu-horizontal .ant-menu-submenu{margin-top:-1px}.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-submenu .ant-menu-submenu-title:hover{background-color:transparent}.ant-menu-item-selected,.ant-menu-item-selected a,.ant-menu-item-selected a:hover{color:#1890ff}.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#e6f7ff}.ant-menu-inline,.ant-menu-vertical,.ant-menu-vertical-left{border-right:1px solid #f0f0f0}.ant-menu-vertical-right{border-left:1px solid #f0f0f0}.ant-menu-vertical.ant-menu-sub,.ant-menu-vertical-left.ant-menu-sub,.ant-menu-vertical-right.ant-menu-sub{min-width:160px;max-height:calc(100vh - 100px);padding:0;overflow:hidden;border-right:0}.ant-menu-vertical.ant-menu-sub:not([class*=-active]),.ant-menu-vertical-left.ant-menu-sub:not([class*=-active]),.ant-menu-vertical-right.ant-menu-sub:not([class*=-active]){overflow-x:hidden;overflow-y:auto}.ant-menu-vertical.ant-menu-sub .ant-menu-item,.ant-menu-vertical-left.ant-menu-sub .ant-menu-item,.ant-menu-vertical-right.ant-menu-sub .ant-menu-item{left:0;margin-left:0;border-right:0}.ant-menu-vertical.ant-menu-sub .ant-menu-item:after,.ant-menu-vertical-left.ant-menu-sub .ant-menu-item:after,.ant-menu-vertical-right.ant-menu-sub .ant-menu-item:after{border-right:0}.ant-menu-vertical.ant-menu-sub>.ant-menu-item,.ant-menu-vertical-left.ant-menu-sub>.ant-menu-item,.ant-menu-vertical-right.ant-menu-sub>.ant-menu-item,.ant-menu-vertical.ant-menu-sub>.ant-menu-submenu,.ant-menu-vertical-left.ant-menu-sub>.ant-menu-submenu,.ant-menu-vertical-right.ant-menu-sub>.ant-menu-submenu{transform-origin:0 0}.ant-menu-horizontal.ant-menu-sub{min-width:114px}.ant-menu-horizontal .ant-menu-item,.ant-menu-horizontal .ant-menu-submenu-title{transition:border-color .3s,background .3s}.ant-menu-item,.ant-menu-submenu-title{position:relative;display:block;margin:0;padding:0 20px;white-space:nowrap;cursor:pointer;transition:border-color .3s,background .3s,padding .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-item .ant-menu-item-icon,.ant-menu-submenu-title .ant-menu-item-icon,.ant-menu-item .anticon,.ant-menu-submenu-title .anticon{min-width:14px;font-size:14px;transition:font-size .15s cubic-bezier(.215,.61,.355,1),margin .3s cubic-bezier(.645,.045,.355,1),color .3s}.ant-menu-item .ant-menu-item-icon+span,.ant-menu-submenu-title .ant-menu-item-icon+span,.ant-menu-item .anticon+span,.ant-menu-submenu-title .anticon+span{margin-left:10px;opacity:1;transition:opacity .3s cubic-bezier(.645,.045,.355,1),margin .3s,color .3s}.ant-menu-item .ant-menu-item-icon.svg,.ant-menu-submenu-title .ant-menu-item-icon.svg{vertical-align:-.125em}.ant-menu-item.ant-menu-item-only-child>.anticon,.ant-menu-submenu-title.ant-menu-item-only-child>.anticon,.ant-menu-item.ant-menu-item-only-child>.ant-menu-item-icon,.ant-menu-submenu-title.ant-menu-item-only-child>.ant-menu-item-icon{margin-right:0}.ant-menu-item:not(.ant-menu-item-disabled):focus-visible,.ant-menu-submenu-title:not(.ant-menu-item-disabled):focus-visible{box-shadow:0 0 0 2px #bae7ff}.ant-menu>.ant-menu-item-divider{margin:1px 0;padding:0}.ant-menu-submenu-popup{position:absolute;z-index:1050;background:transparent;border-radius:2px;box-shadow:none;transform-origin:0 0}.ant-menu-submenu-popup:before{position:absolute;top:-7px;right:0;bottom:0;left:0;z-index:-1;width:100%;height:100%;opacity:.0001;content:" "}.ant-menu-submenu-placement-rightTop:before{top:0;left:-7px}.ant-menu-submenu>.ant-menu{background-color:#fff;border-radius:2px}.ant-menu-submenu>.ant-menu-submenu-title:after{transition:transform .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu-popup>.ant-menu{background-color:#fff}.ant-menu-submenu-expand-icon,.ant-menu-submenu-arrow{position:absolute;top:50%;right:16px;width:10px;color:#000000d9;transform:translateY(-50%);transition:transform .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu-arrow:before,.ant-menu-submenu-arrow:after{position:absolute;width:6px;height:1.5px;background-color:currentcolor;border-radius:2px;transition:background .3s cubic-bezier(.645,.045,.355,1),transform .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),color .3s cubic-bezier(.645,.045,.355,1);content:""}.ant-menu-submenu-arrow:before{transform:rotate(45deg) translateY(-2.5px)}.ant-menu-submenu-arrow:after{transform:rotate(-45deg) translateY(2.5px)}.ant-menu-submenu:hover>.ant-menu-submenu-title>.ant-menu-submenu-expand-icon,.ant-menu-submenu:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow{color:#1890ff}.ant-menu-inline-collapsed .ant-menu-submenu-arrow:before,.ant-menu-submenu-inline .ant-menu-submenu-arrow:before{transform:rotate(-45deg) translate(2.5px)}.ant-menu-inline-collapsed .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline .ant-menu-submenu-arrow:after{transform:rotate(45deg) translate(-2.5px)}.ant-menu-submenu-horizontal .ant-menu-submenu-arrow{display:none}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow{transform:translateY(-2px)}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after{transform:rotate(-45deg) translate(-2.5px)}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before{transform:rotate(45deg) translate(2.5px)}.ant-menu-vertical .ant-menu-submenu-selected,.ant-menu-vertical-left .ant-menu-submenu-selected,.ant-menu-vertical-right .ant-menu-submenu-selected{color:#1890ff}.ant-menu-horizontal{line-height:46px;border:0;border-bottom:1px solid #f0f0f0;box-shadow:none}.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu{margin-top:-1px;margin-bottom:0;padding:0 20px}.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item:hover,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu:hover,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-active,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-active,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-open,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-selected{color:#1890ff}.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item:hover:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu:hover:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-active:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-active:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-open:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-open:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-selected:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-selected:after{border-bottom:2px solid #1890ff}.ant-menu-horizontal>.ant-menu-item,.ant-menu-horizontal>.ant-menu-submenu{position:relative;top:1px;display:inline-block;vertical-align:bottom}.ant-menu-horizontal>.ant-menu-item:after,.ant-menu-horizontal>.ant-menu-submenu:after{position:absolute;right:20px;bottom:0;left:20px;border-bottom:2px solid transparent;transition:border-color .3s cubic-bezier(.645,.045,.355,1);content:""}.ant-menu-horizontal>.ant-menu-submenu>.ant-menu-submenu-title{padding:0}.ant-menu-horizontal>.ant-menu-item a{color:#000000d9}.ant-menu-horizontal>.ant-menu-item a:hover{color:#1890ff}.ant-menu-horizontal>.ant-menu-item a:before{bottom:-2px}.ant-menu-horizontal>.ant-menu-item-selected a{color:#1890ff}.ant-menu-horizontal:after{display:block;clear:both;height:0;content:" "}.ant-menu-vertical .ant-menu-item,.ant-menu-vertical-left .ant-menu-item,.ant-menu-vertical-right .ant-menu-item,.ant-menu-inline .ant-menu-item{position:relative}.ant-menu-vertical .ant-menu-item:after,.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-vertical-right .ant-menu-item:after,.ant-menu-inline .ant-menu-item:after{position:absolute;top:0;right:0;bottom:0;border-right:3px solid #1890ff;transform:scaleY(.0001);opacity:0;transition:transform .15s cubic-bezier(.215,.61,.355,1),opacity .15s cubic-bezier(.215,.61,.355,1);content:""}.ant-menu-vertical .ant-menu-item,.ant-menu-vertical-left .ant-menu-item,.ant-menu-vertical-right .ant-menu-item,.ant-menu-inline .ant-menu-item,.ant-menu-vertical .ant-menu-submenu-title,.ant-menu-vertical-left .ant-menu-submenu-title,.ant-menu-vertical-right .ant-menu-submenu-title,.ant-menu-inline .ant-menu-submenu-title{height:40px;margin-top:4px;margin-bottom:4px;padding:0 16px;overflow:hidden;line-height:40px;text-overflow:ellipsis}.ant-menu-vertical .ant-menu-submenu,.ant-menu-vertical-left .ant-menu-submenu,.ant-menu-vertical-right .ant-menu-submenu,.ant-menu-inline .ant-menu-submenu{padding-bottom:.02px}.ant-menu-vertical .ant-menu-item:not(:last-child),.ant-menu-vertical-left .ant-menu-item:not(:last-child),.ant-menu-vertical-right .ant-menu-item:not(:last-child),.ant-menu-inline .ant-menu-item:not(:last-child){margin-bottom:8px}.ant-menu-vertical>.ant-menu-item,.ant-menu-vertical-left>.ant-menu-item,.ant-menu-vertical-right>.ant-menu-item,.ant-menu-inline>.ant-menu-item,.ant-menu-vertical>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical-left>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical-right>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px}.ant-menu-vertical .ant-menu-item-group-list .ant-menu-submenu-title,.ant-menu-vertical .ant-menu-submenu-title{padding-right:34px}.ant-menu-inline{width:100%}.ant-menu-inline .ant-menu-selected:after,.ant-menu-inline .ant-menu-item-selected:after{transform:scaleY(1);opacity:1;transition:transform .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)}.ant-menu-inline .ant-menu-item,.ant-menu-inline .ant-menu-submenu-title{width:calc(100% + 1px)}.ant-menu-inline .ant-menu-item-group-list .ant-menu-submenu-title,.ant-menu-inline .ant-menu-submenu-title{padding-right:34px}.ant-menu-inline.ant-menu-root .ant-menu-item,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title{display:flex;align-items:center;transition:border-color .3s,background .3s,padding .1s cubic-bezier(.215,.61,.355,1)}.ant-menu-inline.ant-menu-root .ant-menu-item>.ant-menu-title-content,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title>.ant-menu-title-content{flex:auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.ant-menu-inline.ant-menu-root .ant-menu-item>*,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title>*{flex:none}.ant-menu.ant-menu-inline-collapsed{width:80px}.ant-menu.ant-menu-inline-collapsed>.ant-menu-item,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title{left:0;padding:0 calc(50% - 8px);text-overflow:clip}.ant-menu.ant-menu-inline-collapsed>.ant-menu-item .ant-menu-submenu-arrow,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-submenu-arrow,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow{opacity:0}.ant-menu.ant-menu-inline-collapsed>.ant-menu-item .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item .anticon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .anticon{margin:0;font-size:16px;line-height:40px}.ant-menu.ant-menu-inline-collapsed>.ant-menu-item .ant-menu-item-icon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-item-icon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item .anticon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .anticon+span{display:inline-block;opacity:0}.ant-menu.ant-menu-inline-collapsed .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed .anticon{display:inline-block}.ant-menu.ant-menu-inline-collapsed-tooltip{pointer-events:none}.ant-menu.ant-menu-inline-collapsed-tooltip .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed-tooltip .anticon{display:none}.ant-menu.ant-menu-inline-collapsed-tooltip a{color:#ffffffd9}.ant-menu.ant-menu-inline-collapsed .ant-menu-item-group-title{padding-right:4px;padding-left:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-menu-item-group-list{margin:0;padding:0}.ant-menu-item-group-list .ant-menu-item,.ant-menu-item-group-list .ant-menu-submenu-title{padding:0 16px 0 28px}.ant-menu-root.ant-menu-vertical,.ant-menu-root.ant-menu-vertical-left,.ant-menu-root.ant-menu-vertical-right,.ant-menu-root.ant-menu-inline{box-shadow:none}.ant-menu-root.ant-menu-inline-collapsed .ant-menu-item>.ant-menu-inline-collapsed-noicon,.ant-menu-root.ant-menu-inline-collapsed .ant-menu-submenu .ant-menu-submenu-title>.ant-menu-inline-collapsed-noicon{font-size:16px;text-align:center}.ant-menu-sub.ant-menu-inline{padding:0;background:#fafafa;border:0;border-radius:0;box-shadow:none}.ant-menu-sub.ant-menu-inline>.ant-menu-item,.ant-menu-sub.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px;list-style-position:inside;list-style-type:disc}.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title{padding-left:32px}.ant-menu-item-disabled,.ant-menu-submenu-disabled{color:#00000040!important;background:none;cursor:not-allowed}.ant-menu-item-disabled:after,.ant-menu-submenu-disabled:after{border-color:transparent!important}.ant-menu-item-disabled a,.ant-menu-submenu-disabled a{color:#00000040!important;pointer-events:none}.ant-menu-item-disabled>.ant-menu-submenu-title,.ant-menu-submenu-disabled>.ant-menu-submenu-title{color:#00000040!important;cursor:not-allowed}.ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after{background:rgba(0,0,0,.25)!important}.ant-layout-header .ant-menu{line-height:inherit}.ant-menu-inline-collapsed-tooltip a,.ant-menu-inline-collapsed-tooltip a:hover{color:#fff}.ant-menu-light .ant-menu-item:hover,.ant-menu-light .ant-menu-item-active,.ant-menu-light .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,.ant-menu-light .ant-menu-submenu-active,.ant-menu-light .ant-menu-submenu-title:hover{color:#1890ff}.ant-menu.ant-menu-root:focus-visible{box-shadow:0 0 0 2px #096dd9}.ant-menu-dark .ant-menu-item:focus-visible,.ant-menu-dark .ant-menu-submenu-title:focus-visible{box-shadow:0 0 0 2px #096dd9}.ant-menu.ant-menu-dark,.ant-menu-dark .ant-menu-sub,.ant-menu.ant-menu-dark .ant-menu-sub{color:#ffffffa6;background:#001529}.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow{opacity:.45;transition:all .3s}.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before{background:#fff}.ant-menu-dark.ant-menu-submenu-popup{background:transparent}.ant-menu-dark .ant-menu-inline.ant-menu-sub{background:#000c17}.ant-menu-dark.ant-menu-horizontal{border-bottom:0}.ant-menu-dark.ant-menu-horizontal>.ant-menu-item,.ant-menu-dark.ant-menu-horizontal>.ant-menu-submenu{top:0;margin-top:0;padding:0 20px;border-color:#001529;border-bottom:0}.ant-menu-dark.ant-menu-horizontal>.ant-menu-item:hover{background-color:#1890ff}.ant-menu-dark.ant-menu-horizontal>.ant-menu-item>a:before{bottom:0}.ant-menu-dark .ant-menu-item,.ant-menu-dark .ant-menu-item-group-title,.ant-menu-dark .ant-menu-item>a,.ant-menu-dark .ant-menu-item>span>a{color:#ffffffa6}.ant-menu-dark.ant-menu-inline,.ant-menu-dark.ant-menu-vertical,.ant-menu-dark.ant-menu-vertical-left,.ant-menu-dark.ant-menu-vertical-right{border-right:0}.ant-menu-dark.ant-menu-inline .ant-menu-item,.ant-menu-dark.ant-menu-vertical .ant-menu-item,.ant-menu-dark.ant-menu-vertical-left .ant-menu-item,.ant-menu-dark.ant-menu-vertical-right .ant-menu-item{left:0;margin-left:0;border-right:0}.ant-menu-dark.ant-menu-inline .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical-right .ant-menu-item:after{border-right:0}.ant-menu-dark.ant-menu-inline .ant-menu-item,.ant-menu-dark.ant-menu-inline .ant-menu-submenu-title{width:100%}.ant-menu-dark .ant-menu-item:hover,.ant-menu-dark .ant-menu-item-active,.ant-menu-dark .ant-menu-submenu-active,.ant-menu-dark .ant-menu-submenu-open,.ant-menu-dark .ant-menu-submenu-selected,.ant-menu-dark .ant-menu-submenu-title:hover{color:#fff;background-color:transparent}.ant-menu-dark .ant-menu-item:hover>a,.ant-menu-dark .ant-menu-item-active>a,.ant-menu-dark .ant-menu-submenu-active>a,.ant-menu-dark .ant-menu-submenu-open>a,.ant-menu-dark .ant-menu-submenu-selected>a,.ant-menu-dark .ant-menu-submenu-title:hover>a,.ant-menu-dark .ant-menu-item:hover>span>a,.ant-menu-dark .ant-menu-item-active>span>a,.ant-menu-dark .ant-menu-submenu-active>span>a,.ant-menu-dark .ant-menu-submenu-open>span>a,.ant-menu-dark .ant-menu-submenu-selected>span>a,.ant-menu-dark .ant-menu-submenu-title:hover>span>a{color:#fff}.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow{opacity:1}.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before{background:#fff}.ant-menu-dark .ant-menu-item:hover{background-color:transparent}.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#1890ff}.ant-menu-dark .ant-menu-item-selected{color:#fff;border-right:0}.ant-menu-dark .ant-menu-item-selected:after{border-right:0}.ant-menu-dark .ant-menu-item-selected>a,.ant-menu-dark .ant-menu-item-selected>span>a,.ant-menu-dark .ant-menu-item-selected>a:hover,.ant-menu-dark .ant-menu-item-selected>span>a:hover{color:#fff}.ant-menu-dark .ant-menu-item-selected .ant-menu-item-icon,.ant-menu-dark .ant-menu-item-selected .anticon{color:#fff}.ant-menu-dark .ant-menu-item-selected .ant-menu-item-icon+span,.ant-menu-dark .ant-menu-item-selected .anticon+span{color:#fff}.ant-menu.ant-menu-dark .ant-menu-item-selected,.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected{background-color:#1890ff}.ant-menu-dark .ant-menu-item-disabled,.ant-menu-dark .ant-menu-submenu-disabled,.ant-menu-dark .ant-menu-item-disabled>a,.ant-menu-dark .ant-menu-submenu-disabled>a,.ant-menu-dark .ant-menu-item-disabled>span>a,.ant-menu-dark .ant-menu-submenu-disabled>span>a{color:#ffffff59!important;opacity:.8}.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title{color:#ffffff59!important}.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after{background:rgba(255,255,255,.35)!important}.ant-menu.ant-menu-rtl{direction:rtl;text-align:right}.ant-menu-rtl .ant-menu-item-group-title{text-align:right}.ant-menu-rtl.ant-menu-inline,.ant-menu-rtl.ant-menu-vertical{border-right:none;border-left:1px solid #f0f0f0}.ant-menu-rtl.ant-menu-dark.ant-menu-inline,.ant-menu-rtl.ant-menu-dark.ant-menu-vertical{border-left:none}.ant-menu-rtl.ant-menu-vertical.ant-menu-sub>.ant-menu-item,.ant-menu-rtl.ant-menu-vertical-left.ant-menu-sub>.ant-menu-item,.ant-menu-rtl.ant-menu-vertical-right.ant-menu-sub>.ant-menu-item,.ant-menu-rtl.ant-menu-vertical.ant-menu-sub>.ant-menu-submenu,.ant-menu-rtl.ant-menu-vertical-left.ant-menu-sub>.ant-menu-submenu,.ant-menu-rtl.ant-menu-vertical-right.ant-menu-sub>.ant-menu-submenu{transform-origin:top right}.ant-menu-rtl .ant-menu-item .ant-menu-item-icon,.ant-menu-rtl .ant-menu-submenu-title .ant-menu-item-icon,.ant-menu-rtl .ant-menu-item .anticon,.ant-menu-rtl .ant-menu-submenu-title .anticon{margin-right:auto;margin-left:10px}.ant-menu-rtl .ant-menu-item.ant-menu-item-only-child>.ant-menu-item-icon,.ant-menu-rtl .ant-menu-submenu-title.ant-menu-item-only-child>.ant-menu-item-icon,.ant-menu-rtl .ant-menu-item.ant-menu-item-only-child>.anticon,.ant-menu-rtl .ant-menu-submenu-title.ant-menu-item-only-child>.anticon{margin-left:0}.ant-menu-submenu-rtl.ant-menu-submenu-popup{transform-origin:100% 0}.ant-menu-rtl .ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-rtl .ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-rtl .ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-rtl .ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow{right:auto;left:16px}.ant-menu-rtl .ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-rtl .ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-rtl .ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:before{transform:rotate(-45deg) translateY(-2px)}.ant-menu-rtl .ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-rtl .ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-rtl .ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:after{transform:rotate(45deg) translateY(2px)}.ant-menu-rtl.ant-menu-vertical .ant-menu-item:after,.ant-menu-rtl.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-rtl.ant-menu-vertical-right .ant-menu-item:after,.ant-menu-rtl.ant-menu-inline .ant-menu-item:after{right:auto;left:0}.ant-menu-rtl.ant-menu-vertical .ant-menu-item,.ant-menu-rtl.ant-menu-vertical-left .ant-menu-item,.ant-menu-rtl.ant-menu-vertical-right .ant-menu-item,.ant-menu-rtl.ant-menu-inline .ant-menu-item,.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-title,.ant-menu-rtl.ant-menu-vertical-left .ant-menu-submenu-title,.ant-menu-rtl.ant-menu-vertical-right .ant-menu-submenu-title,.ant-menu-rtl.ant-menu-inline .ant-menu-submenu-title{text-align:right}.ant-menu-rtl.ant-menu-inline .ant-menu-submenu-title{padding-right:0;padding-left:34px}.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-title{padding-right:16px;padding-left:34px}.ant-menu-rtl.ant-menu-inline-collapsed.ant-menu-vertical .ant-menu-submenu-title{padding:0 calc(50% - 8px)}.ant-menu-rtl .ant-menu-item-group-list .ant-menu-item,.ant-menu-rtl .ant-menu-item-group-list .ant-menu-submenu-title{padding:0 28px 0 16px}.ant-menu-sub.ant-menu-inline{border:0}.ant-menu-rtl.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title{padding-right:32px;padding-left:0}.ant-tooltip{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;z-index:1070;display:block;width:-moz-max-content;width:max-content;width:intrinsic;max-width:250px;visibility:visible}.ant-tooltip-content{position:relative}.ant-tooltip-hidden{display:none}.ant-tooltip-placement-top,.ant-tooltip-placement-topLeft,.ant-tooltip-placement-topRight{padding-bottom:14.3137085px}.ant-tooltip-placement-right,.ant-tooltip-placement-rightTop,.ant-tooltip-placement-rightBottom{padding-left:14.3137085px}.ant-tooltip-placement-bottom,.ant-tooltip-placement-bottomLeft,.ant-tooltip-placement-bottomRight{padding-top:14.3137085px}.ant-tooltip-placement-left,.ant-tooltip-placement-leftTop,.ant-tooltip-placement-leftBottom{padding-right:14.3137085px}.ant-tooltip-inner{min-width:30px;min-height:32px;padding:6px 8px;color:#fff;text-align:left;text-decoration:none;word-wrap:break-word;background-color:#000000bf;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}.ant-tooltip-arrow{position:absolute;z-index:2;display:block;width:22px;height:22px;overflow:hidden;background:transparent;pointer-events:none}.ant-tooltip-arrow-content{--antd-arrow-background-color: linear-gradient(to right bottom, rgba(0, 0, 0, .65), rgba(0, 0, 0, .75));position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:11.3137085px;height:11.3137085px;margin:auto;content:"";pointer-events:auto;border-radius:0 0 2px;pointer-events:none}.ant-tooltip-arrow-content:before{position:absolute;top:-11.3137085px;left:-11.3137085px;width:33.9411255px;height:33.9411255px;background:var(--antd-arrow-background-color);background-repeat:no-repeat;background-position:-10px -10px;content:"";clip-path:inset(33% 33%);clip-path:path("M 9.849242404917499 24.091883092036785 A 5 5 0 0 1 13.384776310850237 22.627416997969522 L 20.627416997969522 22.627416997969522 A 2 2 0 0 0 22.627416997969522 20.627416997969522 L 22.627416997969522 13.384776310850237 A 5 5 0 0 1 24.091883092036785 9.849242404917499 L 23.091883092036785 9.849242404917499 L 9.849242404917499 23.091883092036785 Z")}.ant-tooltip-placement-top .ant-tooltip-arrow,.ant-tooltip-placement-topLeft .ant-tooltip-arrow,.ant-tooltip-placement-topRight .ant-tooltip-arrow{bottom:0;transform:translateY(100%)}.ant-tooltip-placement-top .ant-tooltip-arrow-content,.ant-tooltip-placement-topLeft .ant-tooltip-arrow-content,.ant-tooltip-placement-topRight .ant-tooltip-arrow-content{box-shadow:3px 3px 7px #00000012;transform:translateY(-11px) rotate(45deg)}.ant-tooltip-placement-top .ant-tooltip-arrow{left:50%;transform:translateY(100%) translate(-50%)}.ant-tooltip-placement-topLeft .ant-tooltip-arrow{left:13px}.ant-tooltip-placement-topRight .ant-tooltip-arrow{right:13px}.ant-tooltip-placement-right .ant-tooltip-arrow,.ant-tooltip-placement-rightTop .ant-tooltip-arrow,.ant-tooltip-placement-rightBottom .ant-tooltip-arrow{left:0;transform:translate(-100%)}.ant-tooltip-placement-right .ant-tooltip-arrow-content,.ant-tooltip-placement-rightTop .ant-tooltip-arrow-content,.ant-tooltip-placement-rightBottom .ant-tooltip-arrow-content{box-shadow:-3px 3px 7px #00000012;transform:translate(11px) rotate(135deg)}.ant-tooltip-placement-right .ant-tooltip-arrow{top:50%;transform:translate(-100%) translateY(-50%)}.ant-tooltip-placement-rightTop .ant-tooltip-arrow{top:5px}.ant-tooltip-placement-rightBottom .ant-tooltip-arrow{bottom:5px}.ant-tooltip-placement-left .ant-tooltip-arrow,.ant-tooltip-placement-leftTop .ant-tooltip-arrow,.ant-tooltip-placement-leftBottom .ant-tooltip-arrow{right:0;transform:translate(100%)}.ant-tooltip-placement-left .ant-tooltip-arrow-content,.ant-tooltip-placement-leftTop .ant-tooltip-arrow-content,.ant-tooltip-placement-leftBottom .ant-tooltip-arrow-content{box-shadow:3px -3px 7px #00000012;transform:translate(-11px) rotate(315deg)}.ant-tooltip-placement-left .ant-tooltip-arrow{top:50%;transform:translate(100%) translateY(-50%)}.ant-tooltip-placement-leftTop .ant-tooltip-arrow{top:5px}.ant-tooltip-placement-leftBottom .ant-tooltip-arrow{bottom:5px}.ant-tooltip-placement-bottom .ant-tooltip-arrow,.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow,.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{top:0;transform:translateY(-100%)}.ant-tooltip-placement-bottom .ant-tooltip-arrow-content,.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow-content,.ant-tooltip-placement-bottomRight .ant-tooltip-arrow-content{box-shadow:-3px -3px 7px #00000012;transform:translateY(11px) rotate(225deg)}.ant-tooltip-placement-bottom .ant-tooltip-arrow{left:50%;transform:translateY(-100%) translate(-50%)}.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow{left:13px}.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{right:13px}.ant-tooltip-pink .ant-tooltip-inner{background-color:#eb2f96}.ant-tooltip-pink .ant-tooltip-arrow-content:before{background:#eb2f96}.ant-tooltip-magenta .ant-tooltip-inner{background-color:#eb2f96}.ant-tooltip-magenta .ant-tooltip-arrow-content:before{background:#eb2f96}.ant-tooltip-red .ant-tooltip-inner{background-color:#f5222d}.ant-tooltip-red .ant-tooltip-arrow-content:before{background:#f5222d}.ant-tooltip-volcano .ant-tooltip-inner{background-color:#fa541c}.ant-tooltip-volcano .ant-tooltip-arrow-content:before{background:#fa541c}.ant-tooltip-orange .ant-tooltip-inner{background-color:#fa8c16}.ant-tooltip-orange .ant-tooltip-arrow-content:before{background:#fa8c16}.ant-tooltip-yellow .ant-tooltip-inner{background-color:#fadb14}.ant-tooltip-yellow .ant-tooltip-arrow-content:before{background:#fadb14}.ant-tooltip-gold .ant-tooltip-inner{background-color:#faad14}.ant-tooltip-gold .ant-tooltip-arrow-content:before{background:#faad14}.ant-tooltip-cyan .ant-tooltip-inner{background-color:#13c2c2}.ant-tooltip-cyan .ant-tooltip-arrow-content:before{background:#13c2c2}.ant-tooltip-lime .ant-tooltip-inner{background-color:#a0d911}.ant-tooltip-lime .ant-tooltip-arrow-content:before{background:#a0d911}.ant-tooltip-green .ant-tooltip-inner{background-color:#52c41a}.ant-tooltip-green .ant-tooltip-arrow-content:before{background:#52c41a}.ant-tooltip-blue .ant-tooltip-inner{background-color:#1890ff}.ant-tooltip-blue .ant-tooltip-arrow-content:before{background:#1890ff}.ant-tooltip-geekblue .ant-tooltip-inner{background-color:#2f54eb}.ant-tooltip-geekblue .ant-tooltip-arrow-content:before{background:#2f54eb}.ant-tooltip-purple .ant-tooltip-inner{background-color:#722ed1}.ant-tooltip-purple .ant-tooltip-arrow-content:before{background:#722ed1}.ant-tooltip-rtl{direction:rtl}.ant-tooltip-rtl .ant-tooltip-inner{text-align:right}.ant-space{display:inline-flex}.ant-space-vertical{flex-direction:column}.ant-space-align-center{align-items:center}.ant-space-align-start{align-items:flex-start}.ant-space-align-end{align-items:flex-end}.ant-space-align-baseline{align-items:baseline}.ant-space-item:empty{display:none}.ant-space-compact{display:inline-flex}.ant-space-compact-block{display:flex;width:100%}.ant-space-compact-vertical{flex-direction:column}.ant-space-rtl,.ant-space-compact-rtl{direction:rtl}.ant-pro-core-field-dropdown-label{cursor:pointer}.ant-pro-core-field-dropdown-overlay{min-width:200px;margin-top:4px;background-color:#fff;-webkit-box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09);box-shadow:0 1px 2px -2px #00000029,0 3px 6px #0000001f,0 5px 12px 4px #00000017}.ant-pro-core-field-dropdown-content{padding:16px}.ant-form-item .ant-input-number+.ant-form-text{margin-left:8px}.ant-form-inline{display:flex;flex-wrap:wrap}.ant-form-inline .ant-form-item{flex:none;flex-wrap:nowrap;margin-right:16px;margin-bottom:0}.ant-form-inline .ant-form-item-with-help{margin-bottom:24px}.ant-form-inline .ant-form-item>.ant-form-item-label,.ant-form-inline .ant-form-item>.ant-form-item-control{display:inline-block;vertical-align:top}.ant-form-inline .ant-form-item>.ant-form-item-label{flex:none}.ant-form-inline .ant-form-item .ant-form-text,.ant-form-inline .ant-form-item .ant-form-item-has-feedback{display:inline-block}.ant-form-horizontal .ant-form-item-label{flex-grow:0}.ant-form-horizontal .ant-form-item-control{flex:1 1 0;min-width:0}.ant-form-horizontal .ant-form-item-label[class$="-24"]+.ant-form-item-control,.ant-form-horizontal .ant-form-item-label[class*="-24 "]+.ant-form-item-control{min-width:unset}.ant-form-vertical .ant-form-item-row{flex-direction:column}.ant-form-vertical .ant-form-item-label>label{height:auto}.ant-form-vertical .ant-form-item .ant-form-item-control{width:100%}.ant-form-vertical .ant-form-item-label,.ant-col-24.ant-form-item-label,.ant-col-xl-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-form-vertical .ant-form-item-label>label,.ant-col-24.ant-form-item-label>label,.ant-col-xl-24.ant-form-item-label>label{margin:0}.ant-form-vertical .ant-form-item-label>label:after,.ant-col-24.ant-form-item-label>label:after,.ant-col-xl-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-form-vertical .ant-form-item-label,.ant-form-rtl.ant-col-24.ant-form-item-label,.ant-form-rtl.ant-col-xl-24.ant-form-item-label{text-align:right}@media (max-width: 575px){.ant-form-item .ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-form-item .ant-form-item-label>label{margin:0}.ant-form-item .ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-form-item .ant-form-item-label{text-align:right}.ant-form .ant-form-item{flex-wrap:wrap}.ant-form .ant-form-item .ant-form-item-label,.ant-form .ant-form-item .ant-form-item-control{flex:0 0 100%;max-width:100%}.ant-col-xs-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-col-xs-24.ant-form-item-label>label{margin:0}.ant-col-xs-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-col-xs-24.ant-form-item-label{text-align:right}}@media (max-width: 767px){.ant-col-sm-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-col-sm-24.ant-form-item-label>label{margin:0}.ant-col-sm-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-col-sm-24.ant-form-item-label{text-align:right}}@media (max-width: 991px){.ant-col-md-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-col-md-24.ant-form-item-label>label{margin:0}.ant-col-md-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-col-md-24.ant-form-item-label{text-align:right}}@media (max-width: 1199px){.ant-col-lg-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-col-lg-24.ant-form-item-label>label{margin:0}.ant-col-lg-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-col-lg-24.ant-form-item-label{text-align:right}}@media (max-width: 1599px){.ant-col-xl-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-col-xl-24.ant-form-item-label>label{margin:0}.ant-col-xl-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-col-xl-24.ant-form-item-label{text-align:right}}.ant-form-item-explain-error{color:#ff4d4f}.ant-form-item-explain-warning{color:#faad14}.ant-form-item-has-feedback .ant-switch{margin:2px 0 4px}.ant-form-item-has-warning .ant-form-item-split{color:#faad14}.ant-form-item-has-error .ant-form-item-split{color:#ff4d4f}.ant-form{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum"}.ant-form legend{display:block;width:100%;margin-bottom:20px;padding:0;color:#00000073;font-size:16px;line-height:inherit;border:0;border-bottom:1px solid #d9d9d9}.ant-form label{font-size:14px}.ant-form input[type=search]{box-sizing:border-box}.ant-form input[type=radio],.ant-form input[type=checkbox]{line-height:normal}.ant-form input[type=file]{display:block}.ant-form input[type=range]{display:block;width:100%}.ant-form select[multiple],.ant-form select[size]{height:auto}.ant-form input[type=file]:focus,.ant-form input[type=radio]:focus,.ant-form input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.ant-form output{display:block;padding-top:15px;color:#000000d9;font-size:14px;line-height:1.5715}.ant-form .ant-form-text{display:inline-block;padding-right:8px}.ant-form-small .ant-form-item-label>label{height:24px}.ant-form-small .ant-form-item-control-input{min-height:24px}.ant-form-large .ant-form-item-label>label{height:40px}.ant-form-large .ant-form-item-control-input{min-height:40px}.ant-form-item{box-sizing:border-box;margin:0 0 24px;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";vertical-align:top}.ant-form-item-with-help{transition:none}.ant-form-item-hidden,.ant-form-item-hidden.ant-row{display:none}.ant-form-item-label{display:inline-block;flex-grow:0;overflow:hidden;white-space:nowrap;text-align:right;vertical-align:middle}.ant-form-item-label-left{text-align:left}.ant-form-item-label-wrap{overflow:unset;line-height:1.3215em;white-space:unset}.ant-form-item-label>label{position:relative;display:inline-flex;align-items:center;max-width:100%;height:32px;color:#000000d9;font-size:14px}.ant-form-item-label>label>.anticon{font-size:14px;vertical-align:top}.ant-form-item-label>label.ant-form-item-required:not(.ant-form-item-required-mark-optional):before{display:inline-block;margin-right:4px;color:#ff4d4f;font-size:14px;font-family:SimSun,sans-serif;line-height:1;content:"*"}.ant-form-hide-required-mark .ant-form-item-label>label.ant-form-item-required:not(.ant-form-item-required-mark-optional):before{display:none}.ant-form-item-label>label .ant-form-item-optional{display:inline-block;margin-left:4px;color:#00000073}.ant-form-hide-required-mark .ant-form-item-label>label .ant-form-item-optional{display:none}.ant-form-item-label>label .ant-form-item-tooltip{color:#00000073;cursor:help;-ms-writing-mode:lr-tb;writing-mode:horizontal-tb;margin-inline-start:4px}.ant-form-item-label>label:after{content:":";position:relative;top:-.5px;margin:0 8px 0 2px}.ant-form-item-label>label.ant-form-item-no-colon:after{content:" "}.ant-form-item-control{display:flex;flex-direction:column;flex-grow:1}.ant-form-item-control:first-child:not([class^=ant-col-]):not([class*=" ant-col-"]){width:100%}.ant-form-item-control-input{position:relative;display:flex;align-items:center;min-height:32px}.ant-form-item-control-input-content{flex:auto;max-width:100%}.ant-form-item-explain,.ant-form-item-extra{clear:both;color:#00000073;font-size:14px;line-height:1.5715;transition:color .3s cubic-bezier(.215,.61,.355,1)}.ant-form-item-explain-connected{width:100%}.ant-form-item-extra{min-height:24px}.ant-form-item-with-help .ant-form-item-explain{height:auto;opacity:1}.ant-form-item-feedback-icon{font-size:14px;text-align:center;visibility:visible;animation:zoomIn .3s cubic-bezier(.12,.4,.29,1.46);pointer-events:none}.ant-form-item-feedback-icon-success{color:#52c41a}.ant-form-item-feedback-icon-error{color:#ff4d4f}.ant-form-item-feedback-icon-warning{color:#faad14}.ant-form-item-feedback-icon-validating{color:#1890ff}.ant-show-help{transition:opacity .3s cubic-bezier(.645,.045,.355,1)}.ant-show-help-appear,.ant-show-help-enter{opacity:0}.ant-show-help-appear-active,.ant-show-help-enter-active,.ant-show-help-leave{opacity:1}.ant-show-help-leave-active{opacity:0}.ant-show-help-item{overflow:hidden;transition:height .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1),transform .3s cubic-bezier(.645,.045,.355,1)!important}.ant-show-help-item-appear,.ant-show-help-item-enter{transform:translateY(-5px);opacity:0}.ant-show-help-item-appear-active,.ant-show-help-item-enter-active{transform:translateY(0);opacity:1}.ant-show-help-item-leave{transition:height .2s cubic-bezier(.645,.045,.355,1),opacity .2s cubic-bezier(.645,.045,.355,1),transform .2s cubic-bezier(.645,.045,.355,1)!important}.ant-show-help-item-leave-active{transform:translateY(-5px)}@keyframes diffZoomIn1{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes diffZoomIn2{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes diffZoomIn3{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.ant-form-rtl{direction:rtl}.ant-form-rtl .ant-form-item-label{text-align:left}.ant-form-rtl .ant-form-item-label>label.ant-form-item-required:before{margin-right:0;margin-left:4px}.ant-form-rtl .ant-form-item-label>label:after{margin:0 2px 0 8px}.ant-form-rtl .ant-form-item-label>label .ant-form-item-optional{margin-right:4px;margin-left:0}.ant-col-rtl .ant-form-item-control:first-child{width:100%}.ant-form-rtl .ant-form-item-has-feedback .ant-input{padding-right:11px;padding-left:24px}.ant-form-rtl .ant-form-item-has-feedback .ant-input-affix-wrapper .ant-input-suffix{padding-right:11px;padding-left:18px}.ant-form-rtl .ant-form-item-has-feedback .ant-input-affix-wrapper .ant-input,.ant-form-rtl .ant-form-item-has-feedback .ant-input-number-affix-wrapper .ant-input-number{padding:0}.ant-form-rtl .ant-form-item-has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix{right:auto;left:28px}.ant-form-rtl .ant-form-item-has-feedback .ant-input-number{padding-left:18px}.ant-form-rtl .ant-form-item-has-feedback>.ant-select .ant-select-arrow,.ant-form-rtl .ant-form-item-has-feedback>.ant-select .ant-select-clear,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon)>.ant-select .ant-select-arrow,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon)>.ant-select .ant-select-clear,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-number-group-addon)>.ant-select .ant-select-arrow,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-number-group-addon)>.ant-select .ant-select-clear{right:auto;left:32px}.ant-form-rtl .ant-form-item-has-feedback>.ant-select .ant-select-selection-selected-value,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon)>.ant-select .ant-select-selection-selected-value,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-number-group-addon)>.ant-select .ant-select-selection-selected-value{padding-right:0;padding-left:42px}.ant-form-rtl .ant-form-item-has-feedback .ant-cascader-picker-arrow{margin-right:0;margin-left:19px}.ant-form-rtl .ant-form-item-has-feedback .ant-cascader-picker-clear{right:auto;left:32px}.ant-form-rtl .ant-form-item-has-feedback .ant-picker,.ant-form-rtl .ant-form-item-has-feedback .ant-picker-large{padding-right:11px;padding-left:29.2px}.ant-form-rtl .ant-form-item-has-feedback .ant-picker-small{padding-right:7px;padding-left:25.2px}.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-success .ant-form-item-children-icon,.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-warning .ant-form-item-children-icon,.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-error .ant-form-item-children-icon,.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-is-validating .ant-form-item-children-icon{right:auto;left:0}.ant-form-rtl.ant-form-inline .ant-form-item{margin-right:0;margin-left:16px}.ant-row{display:flex;flex-flow:row wrap;min-width:0}.ant-row:before,.ant-row:after{display:flex}.ant-row-no-wrap{flex-wrap:nowrap}.ant-row-start{justify-content:flex-start}.ant-row-center{justify-content:center}.ant-row-end{justify-content:flex-end}.ant-row-space-between{justify-content:space-between}.ant-row-space-around{justify-content:space-around}.ant-row-space-evenly{justify-content:space-evenly}.ant-row-top{align-items:flex-start}.ant-row-middle{align-items:center}.ant-row-bottom{align-items:flex-end}.ant-col{position:relative;max-width:100%;min-height:1px}.ant-col-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-push-24{left:100%}.ant-col-pull-24{right:100%}.ant-col-offset-24{margin-left:100%}.ant-col-order-24{order:24}.ant-col-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-push-23{left:95.83333333%}.ant-col-pull-23{right:95.83333333%}.ant-col-offset-23{margin-left:95.83333333%}.ant-col-order-23{order:23}.ant-col-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-push-22{left:91.66666667%}.ant-col-pull-22{right:91.66666667%}.ant-col-offset-22{margin-left:91.66666667%}.ant-col-order-22{order:22}.ant-col-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-push-21{left:87.5%}.ant-col-pull-21{right:87.5%}.ant-col-offset-21{margin-left:87.5%}.ant-col-order-21{order:21}.ant-col-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-push-20{left:83.33333333%}.ant-col-pull-20{right:83.33333333%}.ant-col-offset-20{margin-left:83.33333333%}.ant-col-order-20{order:20}.ant-col-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-push-19{left:79.16666667%}.ant-col-pull-19{right:79.16666667%}.ant-col-offset-19{margin-left:79.16666667%}.ant-col-order-19{order:19}.ant-col-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-push-18{left:75%}.ant-col-pull-18{right:75%}.ant-col-offset-18{margin-left:75%}.ant-col-order-18{order:18}.ant-col-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-push-17{left:70.83333333%}.ant-col-pull-17{right:70.83333333%}.ant-col-offset-17{margin-left:70.83333333%}.ant-col-order-17{order:17}.ant-col-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-push-16{left:66.66666667%}.ant-col-pull-16{right:66.66666667%}.ant-col-offset-16{margin-left:66.66666667%}.ant-col-order-16{order:16}.ant-col-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-push-15{left:62.5%}.ant-col-pull-15{right:62.5%}.ant-col-offset-15{margin-left:62.5%}.ant-col-order-15{order:15}.ant-col-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-push-14{left:58.33333333%}.ant-col-pull-14{right:58.33333333%}.ant-col-offset-14{margin-left:58.33333333%}.ant-col-order-14{order:14}.ant-col-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-push-13{left:54.16666667%}.ant-col-pull-13{right:54.16666667%}.ant-col-offset-13{margin-left:54.16666667%}.ant-col-order-13{order:13}.ant-col-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-push-12{left:50%}.ant-col-pull-12{right:50%}.ant-col-offset-12{margin-left:50%}.ant-col-order-12{order:12}.ant-col-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-push-11{left:45.83333333%}.ant-col-pull-11{right:45.83333333%}.ant-col-offset-11{margin-left:45.83333333%}.ant-col-order-11{order:11}.ant-col-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-push-10{left:41.66666667%}.ant-col-pull-10{right:41.66666667%}.ant-col-offset-10{margin-left:41.66666667%}.ant-col-order-10{order:10}.ant-col-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-push-9{left:37.5%}.ant-col-pull-9{right:37.5%}.ant-col-offset-9{margin-left:37.5%}.ant-col-order-9{order:9}.ant-col-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-push-8{left:33.33333333%}.ant-col-pull-8{right:33.33333333%}.ant-col-offset-8{margin-left:33.33333333%}.ant-col-order-8{order:8}.ant-col-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-push-7{left:29.16666667%}.ant-col-pull-7{right:29.16666667%}.ant-col-offset-7{margin-left:29.16666667%}.ant-col-order-7{order:7}.ant-col-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-push-6{left:25%}.ant-col-pull-6{right:25%}.ant-col-offset-6{margin-left:25%}.ant-col-order-6{order:6}.ant-col-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-push-5{left:20.83333333%}.ant-col-pull-5{right:20.83333333%}.ant-col-offset-5{margin-left:20.83333333%}.ant-col-order-5{order:5}.ant-col-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-push-4{left:16.66666667%}.ant-col-pull-4{right:16.66666667%}.ant-col-offset-4{margin-left:16.66666667%}.ant-col-order-4{order:4}.ant-col-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-push-3{left:12.5%}.ant-col-pull-3{right:12.5%}.ant-col-offset-3{margin-left:12.5%}.ant-col-order-3{order:3}.ant-col-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-push-2{left:8.33333333%}.ant-col-pull-2{right:8.33333333%}.ant-col-offset-2{margin-left:8.33333333%}.ant-col-order-2{order:2}.ant-col-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-push-1{left:4.16666667%}.ant-col-pull-1{right:4.16666667%}.ant-col-offset-1{margin-left:4.16666667%}.ant-col-order-1{order:1}.ant-col-0{display:none}.ant-col-offset-0{margin-left:0}.ant-col-order-0{order:0}.ant-col-offset-0.ant-col-rtl{margin-right:0}.ant-col-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}.ant-col-xs-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-xs-push-24{left:100%}.ant-col-xs-pull-24{right:100%}.ant-col-xs-offset-24{margin-left:100%}.ant-col-xs-order-24{order:24}.ant-col-xs-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-xs-push-23{left:95.83333333%}.ant-col-xs-pull-23{right:95.83333333%}.ant-col-xs-offset-23{margin-left:95.83333333%}.ant-col-xs-order-23{order:23}.ant-col-xs-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-xs-push-22{left:91.66666667%}.ant-col-xs-pull-22{right:91.66666667%}.ant-col-xs-offset-22{margin-left:91.66666667%}.ant-col-xs-order-22{order:22}.ant-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-xs-push-21{left:87.5%}.ant-col-xs-pull-21{right:87.5%}.ant-col-xs-offset-21{margin-left:87.5%}.ant-col-xs-order-21{order:21}.ant-col-xs-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-xs-push-20{left:83.33333333%}.ant-col-xs-pull-20{right:83.33333333%}.ant-col-xs-offset-20{margin-left:83.33333333%}.ant-col-xs-order-20{order:20}.ant-col-xs-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-xs-push-19{left:79.16666667%}.ant-col-xs-pull-19{right:79.16666667%}.ant-col-xs-offset-19{margin-left:79.16666667%}.ant-col-xs-order-19{order:19}.ant-col-xs-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-xs-push-18{left:75%}.ant-col-xs-pull-18{right:75%}.ant-col-xs-offset-18{margin-left:75%}.ant-col-xs-order-18{order:18}.ant-col-xs-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-xs-push-17{left:70.83333333%}.ant-col-xs-pull-17{right:70.83333333%}.ant-col-xs-offset-17{margin-left:70.83333333%}.ant-col-xs-order-17{order:17}.ant-col-xs-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-xs-push-16{left:66.66666667%}.ant-col-xs-pull-16{right:66.66666667%}.ant-col-xs-offset-16{margin-left:66.66666667%}.ant-col-xs-order-16{order:16}.ant-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-xs-push-15{left:62.5%}.ant-col-xs-pull-15{right:62.5%}.ant-col-xs-offset-15{margin-left:62.5%}.ant-col-xs-order-15{order:15}.ant-col-xs-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-xs-push-14{left:58.33333333%}.ant-col-xs-pull-14{right:58.33333333%}.ant-col-xs-offset-14{margin-left:58.33333333%}.ant-col-xs-order-14{order:14}.ant-col-xs-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-xs-push-13{left:54.16666667%}.ant-col-xs-pull-13{right:54.16666667%}.ant-col-xs-offset-13{margin-left:54.16666667%}.ant-col-xs-order-13{order:13}.ant-col-xs-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-xs-push-12{left:50%}.ant-col-xs-pull-12{right:50%}.ant-col-xs-offset-12{margin-left:50%}.ant-col-xs-order-12{order:12}.ant-col-xs-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-xs-push-11{left:45.83333333%}.ant-col-xs-pull-11{right:45.83333333%}.ant-col-xs-offset-11{margin-left:45.83333333%}.ant-col-xs-order-11{order:11}.ant-col-xs-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-xs-push-10{left:41.66666667%}.ant-col-xs-pull-10{right:41.66666667%}.ant-col-xs-offset-10{margin-left:41.66666667%}.ant-col-xs-order-10{order:10}.ant-col-xs-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-xs-push-9{left:37.5%}.ant-col-xs-pull-9{right:37.5%}.ant-col-xs-offset-9{margin-left:37.5%}.ant-col-xs-order-9{order:9}.ant-col-xs-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-xs-push-8{left:33.33333333%}.ant-col-xs-pull-8{right:33.33333333%}.ant-col-xs-offset-8{margin-left:33.33333333%}.ant-col-xs-order-8{order:8}.ant-col-xs-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-xs-push-7{left:29.16666667%}.ant-col-xs-pull-7{right:29.16666667%}.ant-col-xs-offset-7{margin-left:29.16666667%}.ant-col-xs-order-7{order:7}.ant-col-xs-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-xs-push-6{left:25%}.ant-col-xs-pull-6{right:25%}.ant-col-xs-offset-6{margin-left:25%}.ant-col-xs-order-6{order:6}.ant-col-xs-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-xs-push-5{left:20.83333333%}.ant-col-xs-pull-5{right:20.83333333%}.ant-col-xs-offset-5{margin-left:20.83333333%}.ant-col-xs-order-5{order:5}.ant-col-xs-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-xs-push-4{left:16.66666667%}.ant-col-xs-pull-4{right:16.66666667%}.ant-col-xs-offset-4{margin-left:16.66666667%}.ant-col-xs-order-4{order:4}.ant-col-xs-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-xs-push-3{left:12.5%}.ant-col-xs-pull-3{right:12.5%}.ant-col-xs-offset-3{margin-left:12.5%}.ant-col-xs-order-3{order:3}.ant-col-xs-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-xs-push-2{left:8.33333333%}.ant-col-xs-pull-2{right:8.33333333%}.ant-col-xs-offset-2{margin-left:8.33333333%}.ant-col-xs-order-2{order:2}.ant-col-xs-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-xs-push-1{left:4.16666667%}.ant-col-xs-pull-1{right:4.16666667%}.ant-col-xs-offset-1{margin-left:4.16666667%}.ant-col-xs-order-1{order:1}.ant-col-xs-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-xs-push-0{left:auto}.ant-col-xs-pull-0{right:auto}.ant-col-xs-offset-0{margin-left:0}.ant-col-xs-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-xs-push-0.ant-col-rtl{right:auto}.ant-col-xs-pull-0.ant-col-rtl{left:auto}.ant-col-xs-offset-0.ant-col-rtl{margin-right:0}.ant-col-xs-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-xs-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-xs-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-xs-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-xs-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-xs-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-xs-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-xs-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-xs-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-xs-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-xs-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-xs-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-xs-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-xs-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-xs-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-xs-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-xs-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-xs-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-xs-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-xs-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-xs-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-xs-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-xs-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-xs-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-xs-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-xs-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-xs-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-xs-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-xs-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-xs-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-xs-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-xs-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-xs-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-xs-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-xs-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-xs-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-xs-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-xs-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-xs-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-xs-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-xs-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-xs-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-xs-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-xs-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-xs-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-xs-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-xs-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-xs-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-xs-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-xs-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-xs-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-xs-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-xs-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-xs-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-xs-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-xs-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-xs-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-xs-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-xs-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-xs-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-xs-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-xs-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-xs-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-xs-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-xs-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-xs-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-xs-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-xs-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-xs-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-xs-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-xs-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-xs-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}@media (min-width: 576px){.ant-col-sm-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-sm-push-24{left:100%}.ant-col-sm-pull-24{right:100%}.ant-col-sm-offset-24{margin-left:100%}.ant-col-sm-order-24{order:24}.ant-col-sm-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-sm-push-23{left:95.83333333%}.ant-col-sm-pull-23{right:95.83333333%}.ant-col-sm-offset-23{margin-left:95.83333333%}.ant-col-sm-order-23{order:23}.ant-col-sm-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-sm-push-22{left:91.66666667%}.ant-col-sm-pull-22{right:91.66666667%}.ant-col-sm-offset-22{margin-left:91.66666667%}.ant-col-sm-order-22{order:22}.ant-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-sm-push-21{left:87.5%}.ant-col-sm-pull-21{right:87.5%}.ant-col-sm-offset-21{margin-left:87.5%}.ant-col-sm-order-21{order:21}.ant-col-sm-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-sm-push-20{left:83.33333333%}.ant-col-sm-pull-20{right:83.33333333%}.ant-col-sm-offset-20{margin-left:83.33333333%}.ant-col-sm-order-20{order:20}.ant-col-sm-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-sm-push-19{left:79.16666667%}.ant-col-sm-pull-19{right:79.16666667%}.ant-col-sm-offset-19{margin-left:79.16666667%}.ant-col-sm-order-19{order:19}.ant-col-sm-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-sm-push-18{left:75%}.ant-col-sm-pull-18{right:75%}.ant-col-sm-offset-18{margin-left:75%}.ant-col-sm-order-18{order:18}.ant-col-sm-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-sm-push-17{left:70.83333333%}.ant-col-sm-pull-17{right:70.83333333%}.ant-col-sm-offset-17{margin-left:70.83333333%}.ant-col-sm-order-17{order:17}.ant-col-sm-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-sm-push-16{left:66.66666667%}.ant-col-sm-pull-16{right:66.66666667%}.ant-col-sm-offset-16{margin-left:66.66666667%}.ant-col-sm-order-16{order:16}.ant-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-sm-push-15{left:62.5%}.ant-col-sm-pull-15{right:62.5%}.ant-col-sm-offset-15{margin-left:62.5%}.ant-col-sm-order-15{order:15}.ant-col-sm-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-sm-push-14{left:58.33333333%}.ant-col-sm-pull-14{right:58.33333333%}.ant-col-sm-offset-14{margin-left:58.33333333%}.ant-col-sm-order-14{order:14}.ant-col-sm-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-sm-push-13{left:54.16666667%}.ant-col-sm-pull-13{right:54.16666667%}.ant-col-sm-offset-13{margin-left:54.16666667%}.ant-col-sm-order-13{order:13}.ant-col-sm-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-sm-push-12{left:50%}.ant-col-sm-pull-12{right:50%}.ant-col-sm-offset-12{margin-left:50%}.ant-col-sm-order-12{order:12}.ant-col-sm-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-sm-push-11{left:45.83333333%}.ant-col-sm-pull-11{right:45.83333333%}.ant-col-sm-offset-11{margin-left:45.83333333%}.ant-col-sm-order-11{order:11}.ant-col-sm-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-sm-push-10{left:41.66666667%}.ant-col-sm-pull-10{right:41.66666667%}.ant-col-sm-offset-10{margin-left:41.66666667%}.ant-col-sm-order-10{order:10}.ant-col-sm-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-sm-push-9{left:37.5%}.ant-col-sm-pull-9{right:37.5%}.ant-col-sm-offset-9{margin-left:37.5%}.ant-col-sm-order-9{order:9}.ant-col-sm-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-sm-push-8{left:33.33333333%}.ant-col-sm-pull-8{right:33.33333333%}.ant-col-sm-offset-8{margin-left:33.33333333%}.ant-col-sm-order-8{order:8}.ant-col-sm-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-sm-push-7{left:29.16666667%}.ant-col-sm-pull-7{right:29.16666667%}.ant-col-sm-offset-7{margin-left:29.16666667%}.ant-col-sm-order-7{order:7}.ant-col-sm-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-sm-push-6{left:25%}.ant-col-sm-pull-6{right:25%}.ant-col-sm-offset-6{margin-left:25%}.ant-col-sm-order-6{order:6}.ant-col-sm-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-sm-push-5{left:20.83333333%}.ant-col-sm-pull-5{right:20.83333333%}.ant-col-sm-offset-5{margin-left:20.83333333%}.ant-col-sm-order-5{order:5}.ant-col-sm-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-sm-push-4{left:16.66666667%}.ant-col-sm-pull-4{right:16.66666667%}.ant-col-sm-offset-4{margin-left:16.66666667%}.ant-col-sm-order-4{order:4}.ant-col-sm-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-sm-push-3{left:12.5%}.ant-col-sm-pull-3{right:12.5%}.ant-col-sm-offset-3{margin-left:12.5%}.ant-col-sm-order-3{order:3}.ant-col-sm-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-sm-push-2{left:8.33333333%}.ant-col-sm-pull-2{right:8.33333333%}.ant-col-sm-offset-2{margin-left:8.33333333%}.ant-col-sm-order-2{order:2}.ant-col-sm-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-sm-push-1{left:4.16666667%}.ant-col-sm-pull-1{right:4.16666667%}.ant-col-sm-offset-1{margin-left:4.16666667%}.ant-col-sm-order-1{order:1}.ant-col-sm-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-sm-push-0{left:auto}.ant-col-sm-pull-0{right:auto}.ant-col-sm-offset-0{margin-left:0}.ant-col-sm-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-sm-push-0.ant-col-rtl{right:auto}.ant-col-sm-pull-0.ant-col-rtl{left:auto}.ant-col-sm-offset-0.ant-col-rtl{margin-right:0}.ant-col-sm-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-sm-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-sm-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-sm-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-sm-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-sm-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-sm-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-sm-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-sm-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-sm-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-sm-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-sm-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-sm-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-sm-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-sm-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-sm-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-sm-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-sm-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-sm-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-sm-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-sm-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-sm-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-sm-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-sm-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-sm-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-sm-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-sm-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-sm-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-sm-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-sm-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-sm-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-sm-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-sm-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-sm-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-sm-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-sm-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-sm-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-sm-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-sm-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-sm-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-sm-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-sm-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-sm-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-sm-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-sm-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-sm-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-sm-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-sm-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-sm-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-sm-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-sm-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-sm-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-sm-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-sm-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-sm-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-sm-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-sm-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-sm-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-sm-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-sm-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-sm-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-sm-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-sm-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-sm-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-sm-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-sm-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-sm-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-sm-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-sm-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-sm-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-sm-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-sm-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}}@media (min-width: 768px){.ant-col-md-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-md-push-24{left:100%}.ant-col-md-pull-24{right:100%}.ant-col-md-offset-24{margin-left:100%}.ant-col-md-order-24{order:24}.ant-col-md-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-md-push-23{left:95.83333333%}.ant-col-md-pull-23{right:95.83333333%}.ant-col-md-offset-23{margin-left:95.83333333%}.ant-col-md-order-23{order:23}.ant-col-md-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-md-push-22{left:91.66666667%}.ant-col-md-pull-22{right:91.66666667%}.ant-col-md-offset-22{margin-left:91.66666667%}.ant-col-md-order-22{order:22}.ant-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-md-push-21{left:87.5%}.ant-col-md-pull-21{right:87.5%}.ant-col-md-offset-21{margin-left:87.5%}.ant-col-md-order-21{order:21}.ant-col-md-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-md-push-20{left:83.33333333%}.ant-col-md-pull-20{right:83.33333333%}.ant-col-md-offset-20{margin-left:83.33333333%}.ant-col-md-order-20{order:20}.ant-col-md-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-md-push-19{left:79.16666667%}.ant-col-md-pull-19{right:79.16666667%}.ant-col-md-offset-19{margin-left:79.16666667%}.ant-col-md-order-19{order:19}.ant-col-md-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-md-push-18{left:75%}.ant-col-md-pull-18{right:75%}.ant-col-md-offset-18{margin-left:75%}.ant-col-md-order-18{order:18}.ant-col-md-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-md-push-17{left:70.83333333%}.ant-col-md-pull-17{right:70.83333333%}.ant-col-md-offset-17{margin-left:70.83333333%}.ant-col-md-order-17{order:17}.ant-col-md-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-md-push-16{left:66.66666667%}.ant-col-md-pull-16{right:66.66666667%}.ant-col-md-offset-16{margin-left:66.66666667%}.ant-col-md-order-16{order:16}.ant-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-md-push-15{left:62.5%}.ant-col-md-pull-15{right:62.5%}.ant-col-md-offset-15{margin-left:62.5%}.ant-col-md-order-15{order:15}.ant-col-md-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-md-push-14{left:58.33333333%}.ant-col-md-pull-14{right:58.33333333%}.ant-col-md-offset-14{margin-left:58.33333333%}.ant-col-md-order-14{order:14}.ant-col-md-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-md-push-13{left:54.16666667%}.ant-col-md-pull-13{right:54.16666667%}.ant-col-md-offset-13{margin-left:54.16666667%}.ant-col-md-order-13{order:13}.ant-col-md-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-md-push-12{left:50%}.ant-col-md-pull-12{right:50%}.ant-col-md-offset-12{margin-left:50%}.ant-col-md-order-12{order:12}.ant-col-md-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-md-push-11{left:45.83333333%}.ant-col-md-pull-11{right:45.83333333%}.ant-col-md-offset-11{margin-left:45.83333333%}.ant-col-md-order-11{order:11}.ant-col-md-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-md-push-10{left:41.66666667%}.ant-col-md-pull-10{right:41.66666667%}.ant-col-md-offset-10{margin-left:41.66666667%}.ant-col-md-order-10{order:10}.ant-col-md-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-md-push-9{left:37.5%}.ant-col-md-pull-9{right:37.5%}.ant-col-md-offset-9{margin-left:37.5%}.ant-col-md-order-9{order:9}.ant-col-md-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-md-push-8{left:33.33333333%}.ant-col-md-pull-8{right:33.33333333%}.ant-col-md-offset-8{margin-left:33.33333333%}.ant-col-md-order-8{order:8}.ant-col-md-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-md-push-7{left:29.16666667%}.ant-col-md-pull-7{right:29.16666667%}.ant-col-md-offset-7{margin-left:29.16666667%}.ant-col-md-order-7{order:7}.ant-col-md-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-md-push-6{left:25%}.ant-col-md-pull-6{right:25%}.ant-col-md-offset-6{margin-left:25%}.ant-col-md-order-6{order:6}.ant-col-md-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-md-push-5{left:20.83333333%}.ant-col-md-pull-5{right:20.83333333%}.ant-col-md-offset-5{margin-left:20.83333333%}.ant-col-md-order-5{order:5}.ant-col-md-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-md-push-4{left:16.66666667%}.ant-col-md-pull-4{right:16.66666667%}.ant-col-md-offset-4{margin-left:16.66666667%}.ant-col-md-order-4{order:4}.ant-col-md-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-md-push-3{left:12.5%}.ant-col-md-pull-3{right:12.5%}.ant-col-md-offset-3{margin-left:12.5%}.ant-col-md-order-3{order:3}.ant-col-md-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-md-push-2{left:8.33333333%}.ant-col-md-pull-2{right:8.33333333%}.ant-col-md-offset-2{margin-left:8.33333333%}.ant-col-md-order-2{order:2}.ant-col-md-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-md-push-1{left:4.16666667%}.ant-col-md-pull-1{right:4.16666667%}.ant-col-md-offset-1{margin-left:4.16666667%}.ant-col-md-order-1{order:1}.ant-col-md-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-md-push-0{left:auto}.ant-col-md-pull-0{right:auto}.ant-col-md-offset-0{margin-left:0}.ant-col-md-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-md-push-0.ant-col-rtl{right:auto}.ant-col-md-pull-0.ant-col-rtl{left:auto}.ant-col-md-offset-0.ant-col-rtl{margin-right:0}.ant-col-md-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-md-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-md-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-md-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-md-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-md-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-md-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-md-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-md-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-md-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-md-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-md-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-md-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-md-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-md-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-md-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-md-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-md-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-md-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-md-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-md-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-md-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-md-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-md-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-md-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-md-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-md-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-md-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-md-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-md-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-md-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-md-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-md-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-md-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-md-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-md-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-md-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-md-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-md-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-md-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-md-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-md-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-md-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-md-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-md-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-md-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-md-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-md-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-md-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-md-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-md-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-md-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-md-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-md-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-md-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-md-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-md-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-md-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-md-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-md-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-md-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-md-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-md-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-md-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-md-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-md-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-md-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-md-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-md-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-md-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-md-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-md-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}}@media (min-width: 992px){.ant-col-lg-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-lg-push-24{left:100%}.ant-col-lg-pull-24{right:100%}.ant-col-lg-offset-24{margin-left:100%}.ant-col-lg-order-24{order:24}.ant-col-lg-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-lg-push-23{left:95.83333333%}.ant-col-lg-pull-23{right:95.83333333%}.ant-col-lg-offset-23{margin-left:95.83333333%}.ant-col-lg-order-23{order:23}.ant-col-lg-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-lg-push-22{left:91.66666667%}.ant-col-lg-pull-22{right:91.66666667%}.ant-col-lg-offset-22{margin-left:91.66666667%}.ant-col-lg-order-22{order:22}.ant-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-lg-push-21{left:87.5%}.ant-col-lg-pull-21{right:87.5%}.ant-col-lg-offset-21{margin-left:87.5%}.ant-col-lg-order-21{order:21}.ant-col-lg-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-lg-push-20{left:83.33333333%}.ant-col-lg-pull-20{right:83.33333333%}.ant-col-lg-offset-20{margin-left:83.33333333%}.ant-col-lg-order-20{order:20}.ant-col-lg-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-lg-push-19{left:79.16666667%}.ant-col-lg-pull-19{right:79.16666667%}.ant-col-lg-offset-19{margin-left:79.16666667%}.ant-col-lg-order-19{order:19}.ant-col-lg-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-lg-push-18{left:75%}.ant-col-lg-pull-18{right:75%}.ant-col-lg-offset-18{margin-left:75%}.ant-col-lg-order-18{order:18}.ant-col-lg-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-lg-push-17{left:70.83333333%}.ant-col-lg-pull-17{right:70.83333333%}.ant-col-lg-offset-17{margin-left:70.83333333%}.ant-col-lg-order-17{order:17}.ant-col-lg-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-lg-push-16{left:66.66666667%}.ant-col-lg-pull-16{right:66.66666667%}.ant-col-lg-offset-16{margin-left:66.66666667%}.ant-col-lg-order-16{order:16}.ant-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-lg-push-15{left:62.5%}.ant-col-lg-pull-15{right:62.5%}.ant-col-lg-offset-15{margin-left:62.5%}.ant-col-lg-order-15{order:15}.ant-col-lg-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-lg-push-14{left:58.33333333%}.ant-col-lg-pull-14{right:58.33333333%}.ant-col-lg-offset-14{margin-left:58.33333333%}.ant-col-lg-order-14{order:14}.ant-col-lg-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-lg-push-13{left:54.16666667%}.ant-col-lg-pull-13{right:54.16666667%}.ant-col-lg-offset-13{margin-left:54.16666667%}.ant-col-lg-order-13{order:13}.ant-col-lg-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-lg-push-12{left:50%}.ant-col-lg-pull-12{right:50%}.ant-col-lg-offset-12{margin-left:50%}.ant-col-lg-order-12{order:12}.ant-col-lg-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-lg-push-11{left:45.83333333%}.ant-col-lg-pull-11{right:45.83333333%}.ant-col-lg-offset-11{margin-left:45.83333333%}.ant-col-lg-order-11{order:11}.ant-col-lg-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-lg-push-10{left:41.66666667%}.ant-col-lg-pull-10{right:41.66666667%}.ant-col-lg-offset-10{margin-left:41.66666667%}.ant-col-lg-order-10{order:10}.ant-col-lg-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-lg-push-9{left:37.5%}.ant-col-lg-pull-9{right:37.5%}.ant-col-lg-offset-9{margin-left:37.5%}.ant-col-lg-order-9{order:9}.ant-col-lg-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-lg-push-8{left:33.33333333%}.ant-col-lg-pull-8{right:33.33333333%}.ant-col-lg-offset-8{margin-left:33.33333333%}.ant-col-lg-order-8{order:8}.ant-col-lg-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-lg-push-7{left:29.16666667%}.ant-col-lg-pull-7{right:29.16666667%}.ant-col-lg-offset-7{margin-left:29.16666667%}.ant-col-lg-order-7{order:7}.ant-col-lg-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-lg-push-6{left:25%}.ant-col-lg-pull-6{right:25%}.ant-col-lg-offset-6{margin-left:25%}.ant-col-lg-order-6{order:6}.ant-col-lg-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-lg-push-5{left:20.83333333%}.ant-col-lg-pull-5{right:20.83333333%}.ant-col-lg-offset-5{margin-left:20.83333333%}.ant-col-lg-order-5{order:5}.ant-col-lg-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-lg-push-4{left:16.66666667%}.ant-col-lg-pull-4{right:16.66666667%}.ant-col-lg-offset-4{margin-left:16.66666667%}.ant-col-lg-order-4{order:4}.ant-col-lg-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-lg-push-3{left:12.5%}.ant-col-lg-pull-3{right:12.5%}.ant-col-lg-offset-3{margin-left:12.5%}.ant-col-lg-order-3{order:3}.ant-col-lg-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-lg-push-2{left:8.33333333%}.ant-col-lg-pull-2{right:8.33333333%}.ant-col-lg-offset-2{margin-left:8.33333333%}.ant-col-lg-order-2{order:2}.ant-col-lg-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-lg-push-1{left:4.16666667%}.ant-col-lg-pull-1{right:4.16666667%}.ant-col-lg-offset-1{margin-left:4.16666667%}.ant-col-lg-order-1{order:1}.ant-col-lg-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-lg-push-0{left:auto}.ant-col-lg-pull-0{right:auto}.ant-col-lg-offset-0{margin-left:0}.ant-col-lg-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-lg-push-0.ant-col-rtl{right:auto}.ant-col-lg-pull-0.ant-col-rtl{left:auto}.ant-col-lg-offset-0.ant-col-rtl{margin-right:0}.ant-col-lg-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-lg-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-lg-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-lg-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-lg-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-lg-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-lg-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-lg-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-lg-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-lg-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-lg-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-lg-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-lg-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-lg-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-lg-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-lg-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-lg-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-lg-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-lg-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-lg-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-lg-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-lg-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-lg-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-lg-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-lg-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-lg-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-lg-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-lg-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-lg-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-lg-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-lg-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-lg-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-lg-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-lg-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-lg-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-lg-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-lg-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-lg-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-lg-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-lg-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-lg-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-lg-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-lg-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-lg-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-lg-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-lg-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-lg-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-lg-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-lg-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-lg-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-lg-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-lg-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-lg-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-lg-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-lg-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-lg-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-lg-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-lg-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-lg-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-lg-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-lg-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-lg-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-lg-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-lg-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-lg-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-lg-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-lg-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-lg-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-lg-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-lg-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-lg-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-lg-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}}@media (min-width: 1200px){.ant-col-xl-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-xl-push-24{left:100%}.ant-col-xl-pull-24{right:100%}.ant-col-xl-offset-24{margin-left:100%}.ant-col-xl-order-24{order:24}.ant-col-xl-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-xl-push-23{left:95.83333333%}.ant-col-xl-pull-23{right:95.83333333%}.ant-col-xl-offset-23{margin-left:95.83333333%}.ant-col-xl-order-23{order:23}.ant-col-xl-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-xl-push-22{left:91.66666667%}.ant-col-xl-pull-22{right:91.66666667%}.ant-col-xl-offset-22{margin-left:91.66666667%}.ant-col-xl-order-22{order:22}.ant-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-xl-push-21{left:87.5%}.ant-col-xl-pull-21{right:87.5%}.ant-col-xl-offset-21{margin-left:87.5%}.ant-col-xl-order-21{order:21}.ant-col-xl-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-xl-push-20{left:83.33333333%}.ant-col-xl-pull-20{right:83.33333333%}.ant-col-xl-offset-20{margin-left:83.33333333%}.ant-col-xl-order-20{order:20}.ant-col-xl-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-xl-push-19{left:79.16666667%}.ant-col-xl-pull-19{right:79.16666667%}.ant-col-xl-offset-19{margin-left:79.16666667%}.ant-col-xl-order-19{order:19}.ant-col-xl-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-xl-push-18{left:75%}.ant-col-xl-pull-18{right:75%}.ant-col-xl-offset-18{margin-left:75%}.ant-col-xl-order-18{order:18}.ant-col-xl-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-xl-push-17{left:70.83333333%}.ant-col-xl-pull-17{right:70.83333333%}.ant-col-xl-offset-17{margin-left:70.83333333%}.ant-col-xl-order-17{order:17}.ant-col-xl-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-xl-push-16{left:66.66666667%}.ant-col-xl-pull-16{right:66.66666667%}.ant-col-xl-offset-16{margin-left:66.66666667%}.ant-col-xl-order-16{order:16}.ant-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-xl-push-15{left:62.5%}.ant-col-xl-pull-15{right:62.5%}.ant-col-xl-offset-15{margin-left:62.5%}.ant-col-xl-order-15{order:15}.ant-col-xl-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-xl-push-14{left:58.33333333%}.ant-col-xl-pull-14{right:58.33333333%}.ant-col-xl-offset-14{margin-left:58.33333333%}.ant-col-xl-order-14{order:14}.ant-col-xl-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-xl-push-13{left:54.16666667%}.ant-col-xl-pull-13{right:54.16666667%}.ant-col-xl-offset-13{margin-left:54.16666667%}.ant-col-xl-order-13{order:13}.ant-col-xl-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-xl-push-12{left:50%}.ant-col-xl-pull-12{right:50%}.ant-col-xl-offset-12{margin-left:50%}.ant-col-xl-order-12{order:12}.ant-col-xl-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-xl-push-11{left:45.83333333%}.ant-col-xl-pull-11{right:45.83333333%}.ant-col-xl-offset-11{margin-left:45.83333333%}.ant-col-xl-order-11{order:11}.ant-col-xl-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-xl-push-10{left:41.66666667%}.ant-col-xl-pull-10{right:41.66666667%}.ant-col-xl-offset-10{margin-left:41.66666667%}.ant-col-xl-order-10{order:10}.ant-col-xl-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-xl-push-9{left:37.5%}.ant-col-xl-pull-9{right:37.5%}.ant-col-xl-offset-9{margin-left:37.5%}.ant-col-xl-order-9{order:9}.ant-col-xl-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-xl-push-8{left:33.33333333%}.ant-col-xl-pull-8{right:33.33333333%}.ant-col-xl-offset-8{margin-left:33.33333333%}.ant-col-xl-order-8{order:8}.ant-col-xl-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-xl-push-7{left:29.16666667%}.ant-col-xl-pull-7{right:29.16666667%}.ant-col-xl-offset-7{margin-left:29.16666667%}.ant-col-xl-order-7{order:7}.ant-col-xl-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-xl-push-6{left:25%}.ant-col-xl-pull-6{right:25%}.ant-col-xl-offset-6{margin-left:25%}.ant-col-xl-order-6{order:6}.ant-col-xl-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-xl-push-5{left:20.83333333%}.ant-col-xl-pull-5{right:20.83333333%}.ant-col-xl-offset-5{margin-left:20.83333333%}.ant-col-xl-order-5{order:5}.ant-col-xl-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-xl-push-4{left:16.66666667%}.ant-col-xl-pull-4{right:16.66666667%}.ant-col-xl-offset-4{margin-left:16.66666667%}.ant-col-xl-order-4{order:4}.ant-col-xl-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-xl-push-3{left:12.5%}.ant-col-xl-pull-3{right:12.5%}.ant-col-xl-offset-3{margin-left:12.5%}.ant-col-xl-order-3{order:3}.ant-col-xl-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-xl-push-2{left:8.33333333%}.ant-col-xl-pull-2{right:8.33333333%}.ant-col-xl-offset-2{margin-left:8.33333333%}.ant-col-xl-order-2{order:2}.ant-col-xl-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-xl-push-1{left:4.16666667%}.ant-col-xl-pull-1{right:4.16666667%}.ant-col-xl-offset-1{margin-left:4.16666667%}.ant-col-xl-order-1{order:1}.ant-col-xl-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-xl-push-0{left:auto}.ant-col-xl-pull-0{right:auto}.ant-col-xl-offset-0{margin-left:0}.ant-col-xl-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-xl-push-0.ant-col-rtl{right:auto}.ant-col-xl-pull-0.ant-col-rtl{left:auto}.ant-col-xl-offset-0.ant-col-rtl{margin-right:0}.ant-col-xl-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-xl-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-xl-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-xl-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-xl-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-xl-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-xl-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-xl-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-xl-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-xl-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-xl-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-xl-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-xl-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-xl-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-xl-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-xl-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-xl-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-xl-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-xl-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-xl-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-xl-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-xl-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-xl-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-xl-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-xl-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-xl-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-xl-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-xl-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-xl-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-xl-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-xl-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-xl-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-xl-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-xl-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-xl-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-xl-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-xl-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-xl-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-xl-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-xl-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-xl-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-xl-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-xl-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-xl-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-xl-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-xl-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-xl-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-xl-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-xl-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-xl-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-xl-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-xl-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-xl-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-xl-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-xl-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-xl-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-xl-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-xl-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-xl-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-xl-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-xl-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-xl-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-xl-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-xl-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-xl-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-xl-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-xl-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-xl-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-xl-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-xl-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-xl-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-xl-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}}@media (min-width: 1600px){.ant-col-xxl-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-xxl-push-24{left:100%}.ant-col-xxl-pull-24{right:100%}.ant-col-xxl-offset-24{margin-left:100%}.ant-col-xxl-order-24{order:24}.ant-col-xxl-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-xxl-push-23{left:95.83333333%}.ant-col-xxl-pull-23{right:95.83333333%}.ant-col-xxl-offset-23{margin-left:95.83333333%}.ant-col-xxl-order-23{order:23}.ant-col-xxl-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-xxl-push-22{left:91.66666667%}.ant-col-xxl-pull-22{right:91.66666667%}.ant-col-xxl-offset-22{margin-left:91.66666667%}.ant-col-xxl-order-22{order:22}.ant-col-xxl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-xxl-push-21{left:87.5%}.ant-col-xxl-pull-21{right:87.5%}.ant-col-xxl-offset-21{margin-left:87.5%}.ant-col-xxl-order-21{order:21}.ant-col-xxl-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-xxl-push-20{left:83.33333333%}.ant-col-xxl-pull-20{right:83.33333333%}.ant-col-xxl-offset-20{margin-left:83.33333333%}.ant-col-xxl-order-20{order:20}.ant-col-xxl-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-xxl-push-19{left:79.16666667%}.ant-col-xxl-pull-19{right:79.16666667%}.ant-col-xxl-offset-19{margin-left:79.16666667%}.ant-col-xxl-order-19{order:19}.ant-col-xxl-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-xxl-push-18{left:75%}.ant-col-xxl-pull-18{right:75%}.ant-col-xxl-offset-18{margin-left:75%}.ant-col-xxl-order-18{order:18}.ant-col-xxl-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-xxl-push-17{left:70.83333333%}.ant-col-xxl-pull-17{right:70.83333333%}.ant-col-xxl-offset-17{margin-left:70.83333333%}.ant-col-xxl-order-17{order:17}.ant-col-xxl-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-xxl-push-16{left:66.66666667%}.ant-col-xxl-pull-16{right:66.66666667%}.ant-col-xxl-offset-16{margin-left:66.66666667%}.ant-col-xxl-order-16{order:16}.ant-col-xxl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-xxl-push-15{left:62.5%}.ant-col-xxl-pull-15{right:62.5%}.ant-col-xxl-offset-15{margin-left:62.5%}.ant-col-xxl-order-15{order:15}.ant-col-xxl-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-xxl-push-14{left:58.33333333%}.ant-col-xxl-pull-14{right:58.33333333%}.ant-col-xxl-offset-14{margin-left:58.33333333%}.ant-col-xxl-order-14{order:14}.ant-col-xxl-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-xxl-push-13{left:54.16666667%}.ant-col-xxl-pull-13{right:54.16666667%}.ant-col-xxl-offset-13{margin-left:54.16666667%}.ant-col-xxl-order-13{order:13}.ant-col-xxl-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-xxl-push-12{left:50%}.ant-col-xxl-pull-12{right:50%}.ant-col-xxl-offset-12{margin-left:50%}.ant-col-xxl-order-12{order:12}.ant-col-xxl-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-xxl-push-11{left:45.83333333%}.ant-col-xxl-pull-11{right:45.83333333%}.ant-col-xxl-offset-11{margin-left:45.83333333%}.ant-col-xxl-order-11{order:11}.ant-col-xxl-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-xxl-push-10{left:41.66666667%}.ant-col-xxl-pull-10{right:41.66666667%}.ant-col-xxl-offset-10{margin-left:41.66666667%}.ant-col-xxl-order-10{order:10}.ant-col-xxl-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-xxl-push-9{left:37.5%}.ant-col-xxl-pull-9{right:37.5%}.ant-col-xxl-offset-9{margin-left:37.5%}.ant-col-xxl-order-9{order:9}.ant-col-xxl-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-xxl-push-8{left:33.33333333%}.ant-col-xxl-pull-8{right:33.33333333%}.ant-col-xxl-offset-8{margin-left:33.33333333%}.ant-col-xxl-order-8{order:8}.ant-col-xxl-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-xxl-push-7{left:29.16666667%}.ant-col-xxl-pull-7{right:29.16666667%}.ant-col-xxl-offset-7{margin-left:29.16666667%}.ant-col-xxl-order-7{order:7}.ant-col-xxl-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-xxl-push-6{left:25%}.ant-col-xxl-pull-6{right:25%}.ant-col-xxl-offset-6{margin-left:25%}.ant-col-xxl-order-6{order:6}.ant-col-xxl-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-xxl-push-5{left:20.83333333%}.ant-col-xxl-pull-5{right:20.83333333%}.ant-col-xxl-offset-5{margin-left:20.83333333%}.ant-col-xxl-order-5{order:5}.ant-col-xxl-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-xxl-push-4{left:16.66666667%}.ant-col-xxl-pull-4{right:16.66666667%}.ant-col-xxl-offset-4{margin-left:16.66666667%}.ant-col-xxl-order-4{order:4}.ant-col-xxl-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-xxl-push-3{left:12.5%}.ant-col-xxl-pull-3{right:12.5%}.ant-col-xxl-offset-3{margin-left:12.5%}.ant-col-xxl-order-3{order:3}.ant-col-xxl-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-xxl-push-2{left:8.33333333%}.ant-col-xxl-pull-2{right:8.33333333%}.ant-col-xxl-offset-2{margin-left:8.33333333%}.ant-col-xxl-order-2{order:2}.ant-col-xxl-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-xxl-push-1{left:4.16666667%}.ant-col-xxl-pull-1{right:4.16666667%}.ant-col-xxl-offset-1{margin-left:4.16666667%}.ant-col-xxl-order-1{order:1}.ant-col-xxl-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-xxl-push-0{left:auto}.ant-col-xxl-pull-0{right:auto}.ant-col-xxl-offset-0{margin-left:0}.ant-col-xxl-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-xxl-push-0.ant-col-rtl{right:auto}.ant-col-xxl-pull-0.ant-col-rtl{left:auto}.ant-col-xxl-offset-0.ant-col-rtl{margin-right:0}.ant-col-xxl-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-xxl-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-xxl-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-xxl-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-xxl-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-xxl-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-xxl-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-xxl-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-xxl-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-xxl-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-xxl-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-xxl-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-xxl-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-xxl-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-xxl-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-xxl-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-xxl-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-xxl-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-xxl-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-xxl-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-xxl-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-xxl-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-xxl-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-xxl-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-xxl-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-xxl-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-xxl-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-xxl-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-xxl-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-xxl-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-xxl-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-xxl-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-xxl-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-xxl-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-xxl-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-xxl-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-xxl-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-xxl-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-xxl-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-xxl-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-xxl-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-xxl-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-xxl-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-xxl-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-xxl-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-xxl-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-xxl-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-xxl-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-xxl-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-xxl-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-xxl-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-xxl-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-xxl-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-xxl-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-xxl-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-xxl-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-xxl-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-xxl-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-xxl-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-xxl-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-xxl-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-xxl-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-xxl-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-xxl-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-xxl-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-xxl-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-xxl-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-xxl-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-xxl-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-xxl-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-xxl-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-xxl-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}}.ant-row-rtl{direction:rtl}.ant-pro-inline-error-form-item-multiple{padding:6px 8px 12px}.ant-pro-inline-error-form-item-progress-success .ant-progress-bg{background-color:#52c41a}.ant-pro-inline-error-form-item-progress-error .ant-progress-bg{background-color:#ff4d4f}.ant-pro-inline-error-form-item-progress-warning .ant-progress-bg{background-color:#faad14}.ant-pro-inline-error-form-item-rule{margin:0;padding:0;list-style:none}.ant-pro-inline-error-form-item-rule-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ant-pro-inline-error-form-item-rule-content-icon-default{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:14px;height:22px}.ant-pro-inline-error-form-item-rule-content-icon-default-circle{width:6px;height:6px;background-color:#00000073;border-radius:4px}.ant-pro-inline-error-form-item-rule-content-icon-loading{color:#1890ff}.ant-pro-inline-error-form-item-rule-content-icon-error{color:#ff4d4f}.ant-pro-inline-error-form-item-rule-content-icon-success{color:#52c41a}.ant-pro-inline-error-form-item-rule-content-text{color:#000000d9}.ant-pro-core-label-tip{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.ant-pro-core-label-tip-icon{display:block;margin-left:4px;cursor:pointer}.ant-pro-core-label-tip-icon:hover{color:#40a9ff}.ant-pro-core-label-tip-title{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-pro-core-label-tip-subtitle{margin-left:8px;color:#00000073;font-weight:400;font-size:14px;white-space:nowrap}.ant-pro-core-label-tip-title-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.ant-typography{color:#000000d9;word-break:break-word}.ant-typography.ant-typography-secondary{color:#00000073}.ant-typography.ant-typography-success{color:#52c41a}.ant-typography.ant-typography-warning{color:#faad14}.ant-typography.ant-typography-danger{color:#ff4d4f}a.ant-typography.ant-typography-danger:active,a.ant-typography.ant-typography-danger:focus{color:#d9363e}a.ant-typography.ant-typography-danger:hover{color:#ff7875}.ant-typography.ant-typography-disabled{color:#00000040;cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.ant-typography,.ant-typography p{margin-bottom:1em}h1.ant-typography,div.ant-typography-h1,div.ant-typography-h1>textarea,.ant-typography h1{margin-bottom:.5em;color:#000000d9;font-weight:600;font-size:38px;line-height:1.23}h2.ant-typography,div.ant-typography-h2,div.ant-typography-h2>textarea,.ant-typography h2{margin-bottom:.5em;color:#000000d9;font-weight:600;font-size:30px;line-height:1.35}h3.ant-typography,div.ant-typography-h3,div.ant-typography-h3>textarea,.ant-typography h3{margin-bottom:.5em;color:#000000d9;font-weight:600;font-size:24px;line-height:1.35}h4.ant-typography,div.ant-typography-h4,div.ant-typography-h4>textarea,.ant-typography h4{margin-bottom:.5em;color:#000000d9;font-weight:600;font-size:20px;line-height:1.4}h5.ant-typography,div.ant-typography-h5,div.ant-typography-h5>textarea,.ant-typography h5{margin-bottom:.5em;color:#000000d9;font-weight:600;font-size:16px;line-height:1.5}.ant-typography+h1.ant-typography,.ant-typography+h2.ant-typography,.ant-typography+h3.ant-typography,.ant-typography+h4.ant-typography,.ant-typography+h5.ant-typography{margin-top:1.2em}.ant-typography div+h1,.ant-typography ul+h1,.ant-typography li+h1,.ant-typography p+h1,.ant-typography h1+h1,.ant-typography h2+h1,.ant-typography h3+h1,.ant-typography h4+h1,.ant-typography h5+h1,.ant-typography div+h2,.ant-typography ul+h2,.ant-typography li+h2,.ant-typography p+h2,.ant-typography h1+h2,.ant-typography h2+h2,.ant-typography h3+h2,.ant-typography h4+h2,.ant-typography h5+h2,.ant-typography div+h3,.ant-typography ul+h3,.ant-typography li+h3,.ant-typography p+h3,.ant-typography h1+h3,.ant-typography h2+h3,.ant-typography h3+h3,.ant-typography h4+h3,.ant-typography h5+h3,.ant-typography div+h4,.ant-typography ul+h4,.ant-typography li+h4,.ant-typography p+h4,.ant-typography h1+h4,.ant-typography h2+h4,.ant-typography h3+h4,.ant-typography h4+h4,.ant-typography h5+h4,.ant-typography div+h5,.ant-typography ul+h5,.ant-typography li+h5,.ant-typography p+h5,.ant-typography h1+h5,.ant-typography h2+h5,.ant-typography h3+h5,.ant-typography h4+h5,.ant-typography h5+h5{margin-top:1.2em}a.ant-typography-ellipsis,span.ant-typography-ellipsis{display:inline-block;max-width:100%}a.ant-typography,.ant-typography a{color:#1890ff;outline:none;cursor:pointer;transition:color .3s;text-decoration:none}a.ant-typography:focus-visible,.ant-typography a:focus-visible,a.ant-typography:hover,.ant-typography a:hover{color:#40a9ff}a.ant-typography:active,.ant-typography a:active{color:#096dd9}a.ant-typography:active,.ant-typography a:active,a.ant-typography:hover,.ant-typography a:hover{text-decoration:none}a.ant-typography[disabled],.ant-typography a[disabled],a.ant-typography.ant-typography-disabled,.ant-typography a.ant-typography-disabled{color:#00000040;cursor:not-allowed}a.ant-typography[disabled]:active,.ant-typography a[disabled]:active,a.ant-typography.ant-typography-disabled:active,.ant-typography a.ant-typography-disabled:active,a.ant-typography[disabled]:hover,.ant-typography a[disabled]:hover,a.ant-typography.ant-typography-disabled:hover,.ant-typography a.ant-typography-disabled:hover{color:#00000040}a.ant-typography[disabled]:active,.ant-typography a[disabled]:active,a.ant-typography.ant-typography-disabled:active,.ant-typography a.ant-typography-disabled:active{pointer-events:none}.ant-typography code{margin:0 .2em;padding:.2em .4em .1em;font-size:85%;background:rgba(150,150,150,.1);border:1px solid rgba(100,100,100,.2);border-radius:3px}.ant-typography kbd{margin:0 .2em;padding:.15em .4em .1em;font-size:90%;background:rgba(150,150,150,.06);border:1px solid rgba(100,100,100,.2);border-bottom-width:2px;border-radius:3px}.ant-typography mark{padding:0;background-color:#ffe58f}.ant-typography u,.ant-typography ins{text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.ant-typography s,.ant-typography del{text-decoration:line-through}.ant-typography strong{font-weight:600}.ant-typography-expand,.ant-typography-edit,.ant-typography-copy{color:#1890ff;outline:none;cursor:pointer;transition:color .3s;margin-left:4px}.ant-typography-expand:focus-visible,.ant-typography-edit:focus-visible,.ant-typography-copy:focus-visible,.ant-typography-expand:hover,.ant-typography-edit:hover,.ant-typography-copy:hover{color:#40a9ff}.ant-typography-expand:active,.ant-typography-edit:active,.ant-typography-copy:active{color:#096dd9}.ant-typography-copy-success,.ant-typography-copy-success:hover,.ant-typography-copy-success:focus{color:#52c41a}.ant-typography-edit-content{position:relative}div.ant-typography-edit-content{left:-12px;margin-top:-5px;margin-bottom:calc(1em - 5px)}.ant-typography-edit-content-confirm{position:absolute;right:10px;bottom:8px;color:#00000073;font-weight:400;font-size:14px;font-style:normal;pointer-events:none}.ant-typography-edit-content textarea{height:1em;margin:0!important;-moz-transition:none}.ant-typography ul,.ant-typography ol{margin:0 0 1em;padding:0}.ant-typography ul li,.ant-typography ol li{margin:0 0 0 20px;padding:0 0 0 4px}.ant-typography ul{list-style-type:circle}.ant-typography ul ul{list-style-type:disc}.ant-typography ol{list-style-type:decimal}.ant-typography pre,.ant-typography blockquote{margin:1em 0}.ant-typography pre{padding:.4em .6em;white-space:pre-wrap;word-wrap:break-word;background:rgba(150,150,150,.1);border:1px solid rgba(100,100,100,.2);border-radius:3px}.ant-typography pre code{display:inline;margin:0;padding:0;font-size:inherit;font-family:inherit;background:transparent;border:0}.ant-typography blockquote{padding:0 0 0 .6em;border-left:4px solid rgba(100,100,100,.2);opacity:.85}.ant-typography-single-line{white-space:nowrap}.ant-typography-ellipsis-single-line{overflow:hidden;text-overflow:ellipsis}a.ant-typography-ellipsis-single-line,span.ant-typography-ellipsis-single-line{vertical-align:bottom}.ant-typography-ellipsis-multiple-line{display:-webkit-box;overflow:hidden;-webkit-line-clamp:3;-webkit-box-orient:vertical}.ant-typography-rtl{direction:rtl}.ant-typography-rtl .ant-typography-expand,.ant-typography-rtl .ant-typography-edit,.ant-typography-rtl .ant-typography-copy{margin-right:4px;margin-left:0}.ant-typography-rtl .ant-typography-expand{float:left}div.ant-typography-edit-content.ant-typography-rtl{right:-12px;left:auto}.ant-typography-rtl .ant-typography-edit-content-confirm{right:auto;left:10px}.ant-typography-rtl.ant-typography ul li,.ant-typography-rtl.ant-typography ol li{margin:0 20px 0 0;padding:0 4px 0 0}.ant-input-affix-wrapper{position:relative;display:inline-block;width:100%;min-width:0;padding:4px 11px;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s;display:inline-flex}.ant-input-affix-wrapper::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-input-affix-wrapper:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-input-affix-wrapper::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input-affix-wrapper:-moz-placeholder{text-overflow:ellipsis}.ant-input-affix-wrapper:-ms-input-placeholder{text-overflow:ellipsis}.ant-input-affix-wrapper:placeholder-shown{text-overflow:ellipsis}.ant-input-affix-wrapper:hover{border-color:#40a9ff;border-right-width:1px}.ant-input-rtl .ant-input-affix-wrapper:hover{border-right-width:0;border-left-width:1px!important}.ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-input-rtl .ant-input-affix-wrapper:focus,.ant-input-rtl .ant-input-affix-wrapper-focused{border-right-width:0;border-left-width:1px!important}.ant-input-affix-wrapper-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-affix-wrapper-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-affix-wrapper[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-affix-wrapper[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-affix-wrapper-borderless,.ant-input-affix-wrapper-borderless:hover,.ant-input-affix-wrapper-borderless:focus,.ant-input-affix-wrapper-borderless-focused,.ant-input-affix-wrapper-borderless-disabled,.ant-input-affix-wrapper-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-input-affix-wrapper{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-input-affix-wrapper-lg{padding:6.5px 11px;font-size:16px}.ant-input-affix-wrapper-sm{padding:0 7px}.ant-input-affix-wrapper-rtl{direction:rtl}.ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover{border-color:#40a9ff;border-right-width:1px;z-index:1}.ant-input-rtl .ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover{border-right-width:0;border-left-width:1px!important}.ant-input-search-with-button .ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover{z-index:0}.ant-input-affix-wrapper-focused,.ant-input-affix-wrapper:focus{z-index:1}.ant-input-affix-wrapper-disabled .ant-input[disabled]{background:rgba(255,255,255,0)}.ant-input-affix-wrapper>.ant-input{font-size:inherit;border:none;outline:none}.ant-input-affix-wrapper>.ant-input:focus{box-shadow:none!important}.ant-input-affix-wrapper>.ant-input:not(textarea){padding:0}.ant-input-affix-wrapper:before{display:inline-block;width:0;visibility:hidden;content:" "}.ant-input-prefix,.ant-input-suffix{display:flex;flex:none;align-items:center}.ant-input-prefix>*:not(:last-child),.ant-input-suffix>*:not(:last-child){margin-right:8px}.ant-input-show-count-suffix{color:#00000073}.ant-input-show-count-has-suffix{margin-right:2px}.ant-input-prefix{margin-right:4px}.ant-input-suffix{margin-left:4px}.anticon.ant-input-clear-icon,.ant-input-clear-icon{margin:0;color:#00000040;font-size:12px;vertical-align:-1px;cursor:pointer;transition:color .3s}.anticon.ant-input-clear-icon:hover,.ant-input-clear-icon:hover{color:#00000073}.anticon.ant-input-clear-icon:active,.ant-input-clear-icon:active{color:#000000d9}.anticon.ant-input-clear-icon-hidden,.ant-input-clear-icon-hidden{visibility:hidden}.anticon.ant-input-clear-icon-has-suffix,.ant-input-clear-icon-has-suffix{margin:0 4px}.ant-input-affix-wrapper.ant-input-affix-wrapper-textarea-with-clear-btn{padding:0}.ant-input-affix-wrapper.ant-input-affix-wrapper-textarea-with-clear-btn .ant-input-clear-icon{position:absolute;top:8px;right:8px;z-index:1}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input,.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover{background:#fff;border-color:#ff4d4f}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:focus,.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input-focused{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-input-status-error .ant-input-prefix{color:#ff4d4f}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input,.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover{background:#fff;border-color:#faad14}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:focus,.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input-focused{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-input-status-warning .ant-input-prefix{color:#faad14}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper,.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover{background:#fff;border-color:#ff4d4f}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper-focused{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-input-affix-wrapper-status-error .ant-input-prefix{color:#ff4d4f}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper,.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover{background:#fff;border-color:#faad14}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper-focused{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-input-affix-wrapper-status-warning .ant-input-prefix{color:#faad14}.ant-input-textarea-status-error.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-warning.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-success.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-validating.ant-input-textarea-has-feedback .ant-input{padding-right:24px}.ant-input-group-wrapper-status-error .ant-input-group-addon{color:#ff4d4f;border-color:#ff4d4f}.ant-input-group-wrapper-status-warning .ant-input-group-addon{color:#faad14;border-color:#faad14}.ant-input{box-sizing:border-box;margin:0;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-block;width:100%;min-width:0;padding:4px 11px;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s}.ant-input::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-input:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-input::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input:-moz-placeholder{text-overflow:ellipsis}.ant-input:-ms-input-placeholder{text-overflow:ellipsis}.ant-input:placeholder-shown{text-overflow:ellipsis}.ant-input:hover{border-color:#40a9ff;border-right-width:1px}.ant-input-rtl .ant-input:hover{border-right-width:0;border-left-width:1px!important}.ant-input:focus,.ant-input-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-input-rtl .ant-input:focus,.ant-input-rtl .ant-input-focused{border-right-width:0;border-left-width:1px!important}.ant-input-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-borderless,.ant-input-borderless:hover,.ant-input-borderless:focus,.ant-input-borderless-focused,.ant-input-borderless-disabled,.ant-input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-input{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-input-lg{padding:6.5px 11px;font-size:16px}.ant-input-sm{padding:0 7px}.ant-input-rtl{direction:rtl}.ant-input-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:table;width:100%;border-collapse:separate;border-spacing:0}.ant-input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.ant-input-group>[class*=col-]{padding-right:8px}.ant-input-group>[class*=col-]:last-child{padding-right:0}.ant-input-group-addon,.ant-input-group-wrap,.ant-input-group>.ant-input{display:table-cell}.ant-input-group-addon:not(:first-child):not(:last-child),.ant-input-group-wrap:not(:first-child):not(:last-child),.ant-input-group>.ant-input:not(:first-child):not(:last-child){border-radius:0}.ant-input-group-addon,.ant-input-group-wrap{width:1px;white-space:nowrap;vertical-align:middle}.ant-input-group-wrap>*{display:block!important}.ant-input-group .ant-input{float:left;width:100%;margin-bottom:0;text-align:inherit}.ant-input-group .ant-input:focus{z-index:1;border-right-width:1px}.ant-input-group .ant-input:hover{z-index:1;border-right-width:1px}.ant-input-search-with-button .ant-input-group .ant-input:hover{z-index:0}.ant-input-group-addon{position:relative;padding:0 11px;color:#000000d9;font-weight:400;font-size:14px;text-align:center;background-color:#fafafa;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s}.ant-input-group-addon .ant-select{margin:-5px -11px}.ant-input-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{background-color:inherit;border:1px solid transparent;box-shadow:none}.ant-input-group-addon .ant-select-open .ant-select-selector,.ant-input-group-addon .ant-select-focused .ant-select-selector{color:#1890ff}.ant-input-group-addon .ant-cascader-picker{margin:-9px -12px;background-color:transparent}.ant-input-group-addon .ant-cascader-picker .ant-cascader-input{text-align:left;border:0;box-shadow:none}.ant-input-group>.ant-input:first-child,.ant-input-group-addon:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-group>.ant-input:first-child .ant-select .ant-select-selector,.ant-input-group-addon:first-child .ant-select .ant-select-selector{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-group>.ant-input-affix-wrapper:not(:first-child) .ant-input{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-group>.ant-input-affix-wrapper:not(:last-child) .ant-input{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-group-addon:first-child{border-right:0}.ant-input-group-addon:last-child{border-left:0}.ant-input-group>.ant-input:last-child,.ant-input-group-addon:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-group>.ant-input:last-child .ant-select .ant-select-selector,.ant-input-group-addon:last-child .ant-select .ant-select-selector{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-group-lg .ant-input,.ant-input-group-lg>.ant-input-group-addon{padding:6.5px 11px;font-size:16px}.ant-input-group-sm .ant-input,.ant-input-group-sm>.ant-input-group-addon{padding:0 7px}.ant-input-group-lg .ant-select-single .ant-select-selector{height:40px}.ant-input-group-sm .ant-select-single .ant-select-selector{height:24px}.ant-input-group .ant-input-affix-wrapper:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-search .ant-input-group .ant-input-affix-wrapper:not(:last-child){border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-input-group .ant-input-affix-wrapper:not(:first-child),.ant-input-search .ant-input-group .ant-input-affix-wrapper:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-group.ant-input-group-compact{display:block}.ant-input-group.ant-input-group-compact:before{display:table;content:""}.ant-input-group.ant-input-group-compact:after{display:table;clear:both;content:""}.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child),.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child),.ant-input-group.ant-input-group-compact>.ant-input:not(:first-child):not(:last-child){border-right-width:1px}.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover,.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover,.ant-input-group.ant-input-group-compact>.ant-input:not(:first-child):not(:last-child):hover{z-index:1}.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus,.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus,.ant-input-group.ant-input-group-compact>.ant-input:not(:first-child):not(:last-child):focus{z-index:1}.ant-input-group.ant-input-group-compact>*{display:inline-block;float:none;vertical-align:top;border-radius:0}.ant-input-group.ant-input-group-compact>.ant-input-affix-wrapper,.ant-input-group.ant-input-group-compact>.ant-input-number-affix-wrapper,.ant-input-group.ant-input-group-compact>.ant-picker-range{display:inline-flex}.ant-input-group.ant-input-group-compact>*:not(:last-child){margin-right:-1px;border-right-width:1px}.ant-input-group.ant-input-group-compact .ant-input{float:none}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input{border-right-width:1px;border-radius:0}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector:hover,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input:hover{z-index:1}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector:focus,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input:focus{z-index:1}.ant-input-group.ant-input-group-compact>.ant-select-focused{z-index:1}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-arrow{z-index:1}.ant-input-group.ant-input-group-compact>*:first-child,.ant-input-group.ant-input-group-compact>.ant-select:first-child>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete:first-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker:first-child .ant-input{border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-input-group.ant-input-group-compact>*:last-child,.ant-input-group.ant-input-group-compact>.ant-select:last-child>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-cascader-picker:last-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker-focused:last-child .ant-input{border-right-width:1px;border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input{vertical-align:top}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper{margin-left:-1px}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper .ant-input-affix-wrapper{border-radius:0}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input-group-addon>.ant-input-search-button{border-radius:0}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input{border-radius:2px 0 0 2px}.ant-input-group>.ant-input-rtl:first-child,.ant-input-group-rtl .ant-input-group-addon:first-child{border-radius:0 2px 2px 0}.ant-input-group-rtl .ant-input-group-addon:first-child{border-right:1px solid #d9d9d9;border-left:0}.ant-input-group-rtl .ant-input-group-addon:last-child{border-right:0;border-left:1px solid #d9d9d9;border-radius:2px 0 0 2px}.ant-input-group-rtl.ant-input-group>.ant-input:last-child,.ant-input-group-rtl.ant-input-group-addon:last-child{border-radius:2px 0 0 2px}.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:first-child){border-radius:2px 0 0 2px}.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:last-child){border-radius:0 2px 2px 0}.ant-input-group-rtl.ant-input-group.ant-input-group-compact>*:not(:last-child){margin-right:0;margin-left:-1px;border-left-width:1px}.ant-input-group-rtl.ant-input-group.ant-input-group-compact>*:first-child,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-select:first-child>.ant-select-selector,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-select-auto-complete:first-child .ant-input,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-cascader-picker:first-child .ant-input{border-radius:0 2px 2px 0}.ant-input-group-rtl.ant-input-group.ant-input-group-compact>*:last-child,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-select:last-child>.ant-select-selector,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-select-auto-complete:last-child .ant-input,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-cascader-picker:last-child .ant-input,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-cascader-picker-focused:last-child .ant-input{border-left-width:1px;border-radius:2px 0 0 2px}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper-rtl+.ant-input-group-wrapper-rtl{margin-right:-1px;margin-left:0}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper-rtl:not(:last-child).ant-input-search>.ant-input-group>.ant-input{border-radius:0 2px 2px 0}.ant-input-group-wrapper{display:inline-block;width:100%;text-align:start;vertical-align:top}.ant-input-password-icon.anticon{color:#00000073;cursor:pointer;transition:all .3s}.ant-input-password-icon.anticon:hover{color:#000000d9}.ant-input[type=color]{height:32px}.ant-input[type=color].ant-input-lg{height:40px}.ant-input[type=color].ant-input-sm{height:24px;padding-top:3px;padding-bottom:3px}.ant-input-textarea-show-count>.ant-input{height:100%}.ant-input-textarea-show-count:after{float:right;color:#00000073;white-space:nowrap;content:attr(data-count);pointer-events:none}.ant-input-textarea-show-count.ant-input-textarea-in-form-item:after{margin-bottom:-22px}.ant-input-textarea-suffix{position:absolute;top:0;right:11px;bottom:0;z-index:1;display:inline-flex;align-items:center;margin:auto}.ant-input-compact-item:not(.ant-input-compact-last-item):not(.ant-input-compact-item-rtl){margin-right:-1px}.ant-input-compact-item:not(.ant-input-compact-last-item).ant-input-compact-item-rtl{margin-left:-1px}.ant-input-compact-item:hover,.ant-input-compact-item:focus,.ant-input-compact-item:active{z-index:2}.ant-input-compact-item[disabled]{z-index:0}.ant-input-compact-item:not(.ant-input-compact-first-item):not(.ant-input-compact-last-item).ant-input{border-radius:0}.ant-input-compact-item.ant-input.ant-input-compact-first-item:not(.ant-input-compact-last-item):not(.ant-input-compact-item-rtl){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-compact-item.ant-input.ant-input-compact-last-item:not(.ant-input-compact-first-item):not(.ant-input-compact-item-rtl){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-compact-item.ant-input.ant-input-compact-item-rtl.ant-input-compact-first-item:not(.ant-input-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-compact-item.ant-input.ant-input-compact-item-rtl.ant-input-compact-last-item:not(.ant-input-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-search .ant-input:hover,.ant-input-search .ant-input:focus{border-color:#40a9ff}.ant-input-search .ant-input:hover+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary),.ant-input-search .ant-input:focus+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary){border-left-color:#40a9ff}.ant-input-search .ant-input-affix-wrapper{border-radius:0}.ant-input-search .ant-input-lg{line-height:1.5713}.ant-input-search>.ant-input-group>.ant-input-group-addon:last-child{left:-1px;padding:0;border:0}.ant-input-search>.ant-input-group>.ant-input-group-addon:last-child .ant-input-search-button{padding-top:0;padding-bottom:0;border-radius:0 2px 2px 0}.ant-input-search>.ant-input-group>.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary){color:#00000073}.ant-input-search>.ant-input-group>.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary).ant-btn-loading:before{top:0;right:0;bottom:0;left:0}.ant-input-search-button{height:32px}.ant-input-search-button:hover,.ant-input-search-button:focus{z-index:1}.ant-input-search-large .ant-input-search-button{height:40px}.ant-input-search-small .ant-input-search-button{height:24px}.ant-input-search.ant-input-compact-item:not(.ant-input-compact-item-rtl):not(.ant-input-compact-last-item) .ant-input-group-addon .ant-input-search-button{margin-right:-1px;border-radius:0}.ant-input-search.ant-input-compact-item:not(.ant-input-compact-first-item) .ant-input,.ant-input-search.ant-input-compact-item:not(.ant-input-compact-first-item) .ant-input-affix-wrapper{border-radius:0}.ant-input-search.ant-input-compact-item>.ant-input-group-addon .ant-input-search-button:hover,.ant-input-search.ant-input-compact-item>.ant-input:hover,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:hover,.ant-input-search.ant-input-compact-item>.ant-input-group-addon .ant-input-search-button:focus,.ant-input-search.ant-input-compact-item>.ant-input:focus,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:focus,.ant-input-search.ant-input-compact-item>.ant-input-group-addon .ant-input-search-button:active,.ant-input-search.ant-input-compact-item>.ant-input:active,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:active{z-index:2}.ant-input-search.ant-input-compact-item>.ant-input-affix-wrapper-focused{z-index:2}.ant-input-search.ant-input-compact-item-rtl:not(.ant-input-compact-last-item) .ant-input-group-addon:last-child .ant-input-search-button{margin-left:-1px;border-radius:0}.ant-input-group-wrapper-rtl,.ant-input-group-rtl{direction:rtl}.ant-input-affix-wrapper.ant-input-affix-wrapper-rtl>input.ant-input{border:none;outline:none}.ant-input-affix-wrapper-rtl .ant-input-prefix{margin:0 0 0 4px}.ant-input-affix-wrapper-rtl .ant-input-suffix{margin:0 4px 0 0}.ant-input-textarea-rtl{direction:rtl}.ant-input-textarea-rtl.ant-input-textarea-show-count:after{text-align:left}.ant-input-affix-wrapper-rtl .ant-input-clear-icon-has-suffix{margin-right:0;margin-left:4px}.ant-input-affix-wrapper-rtl .ant-input-clear-icon{right:auto;left:8px}.ant-input-search-rtl{direction:rtl}.ant-input-search-rtl .ant-input:hover+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary),.ant-input-search-rtl .ant-input:focus+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary){border-left-color:#d9d9d9}.ant-input-search-rtl .ant-input:hover+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary):hover,.ant-input-search-rtl .ant-input:focus+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary):hover{border-left-color:#40a9ff}.ant-input-search-rtl>.ant-input-group>.ant-input-affix-wrapper:hover,.ant-input-search-rtl>.ant-input-group>.ant-input-affix-wrapper-focused{border-right-color:#40a9ff}.ant-input-search-rtl>.ant-input-group>.ant-input-group-addon:last-child{right:-1px;left:auto}.ant-input-search-rtl>.ant-input-group>.ant-input-group-addon:last-child .ant-input-search-button{border-radius:2px 0 0 2px}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.ant-input{height:32px}.ant-input-lg{height:40px}.ant-input-sm{height:24px}.ant-input-affix-wrapper>input.ant-input{height:auto}}.ant-message{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:fixed;top:8px;left:0;z-index:1010;width:100%;pointer-events:none}.ant-message-notice{padding:8px;text-align:center}.ant-message-notice-content{display:inline-block;padding:10px 16px;background:#fff;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d;pointer-events:all}.ant-message-success .anticon{color:#52c41a}.ant-message-error .anticon{color:#ff4d4f}.ant-message-warning .anticon{color:#faad14}.ant-message-info .anticon,.ant-message-loading .anticon{color:#1890ff}.ant-message .anticon{position:relative;top:1px;margin-right:8px;font-size:16px}.ant-message-notice.ant-move-up-leave.ant-move-up-leave-active{animation-name:MessageMoveOut;animation-duration:.3s}@keyframes MessageMoveOut{0%{max-height:150px;padding:8px;opacity:1}to{max-height:0;padding:0;opacity:0}}.ant-message-rtl,.ant-message-rtl span{direction:rtl}.ant-message-rtl .anticon{margin-right:0;margin-left:8px}.ant-popconfirm{z-index:1060}.ant-cascader-checkbox{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;top:.2em;line-height:1;white-space:nowrap;outline:none;cursor:pointer}.ant-cascader-checkbox-wrapper:hover .ant-cascader-checkbox-inner,.ant-cascader-checkbox:hover .ant-cascader-checkbox-inner,.ant-cascader-checkbox-input:focus+.ant-cascader-checkbox-inner{border-color:#1890ff}.ant-cascader-checkbox-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:2px;visibility:hidden;animation:antCheckboxEffect .36s ease-in-out;animation-fill-mode:backwards;content:""}.ant-cascader-checkbox:hover:after,.ant-cascader-checkbox-wrapper:hover .ant-cascader-checkbox:after{visibility:visible}.ant-cascader-checkbox-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;direction:ltr;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;border-collapse:separate;transition:all .3s}.ant-cascader-checkbox-inner:after{position:absolute;top:50%;left:21.5%;display:table;width:5.71428571px;height:9.14285714px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;content:" "}.ant-cascader-checkbox-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;cursor:pointer;opacity:0}.ant-cascader-checkbox-checked .ant-cascader-checkbox-inner:after{position:absolute;display:table;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1) translate(-50%,-50%);opacity:1;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;content:" "}.ant-cascader-checkbox-checked .ant-cascader-checkbox-inner{background-color:#1890ff;border-color:#1890ff}.ant-cascader-checkbox-disabled{cursor:not-allowed}.ant-cascader-checkbox-disabled.ant-cascader-checkbox-checked .ant-cascader-checkbox-inner:after{border-color:#00000040;animation-name:none}.ant-cascader-checkbox-disabled .ant-cascader-checkbox-input{cursor:not-allowed;pointer-events:none}.ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9!important}.ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner:after{border-color:#f5f5f5;border-collapse:separate;animation-name:none}.ant-cascader-checkbox-disabled+span{color:#00000040;cursor:not-allowed}.ant-cascader-checkbox-disabled:hover:after,.ant-cascader-checkbox-wrapper:hover .ant-cascader-checkbox-disabled:after{visibility:hidden}.ant-cascader-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-flex;align-items:baseline;line-height:unset;cursor:pointer}.ant-cascader-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:" "}.ant-cascader-checkbox-wrapper.ant-cascader-checkbox-wrapper-disabled{cursor:not-allowed}.ant-cascader-checkbox-wrapper+.ant-cascader-checkbox-wrapper{margin-left:8px}.ant-cascader-checkbox-wrapper.ant-cascader-checkbox-wrapper-in-form-item input[type=checkbox]{width:14px;height:14px}.ant-cascader-checkbox+span{padding-right:8px;padding-left:8px}.ant-cascader-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block}.ant-cascader-checkbox-group-item{margin-right:8px}.ant-cascader-checkbox-group-item:last-child{margin-right:0}.ant-cascader-checkbox-group-item+.ant-cascader-checkbox-group-item{margin-left:0}.ant-cascader-checkbox-indeterminate .ant-cascader-checkbox-inner{background-color:#fff;border-color:#d9d9d9}.ant-cascader-checkbox-indeterminate .ant-cascader-checkbox-inner:after{top:50%;left:50%;width:8px;height:8px;background-color:#1890ff;border:0;transform:translate(-50%,-50%) scale(1);opacity:1;content:" "}.ant-cascader-checkbox-indeterminate.ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner:after{background-color:#00000040;border-color:#00000040}.ant-cascader{width:184px}.ant-cascader-checkbox{top:0;margin-right:8px}.ant-cascader-menus{display:flex;flex-wrap:nowrap;align-items:flex-start}.ant-cascader-menus.ant-cascader-menu-empty .ant-cascader-menu{width:100%;height:auto}.ant-cascader-menu{flex-grow:1;min-width:111px;height:180px;margin:-4px 0;padding:4px 0;overflow:auto;vertical-align:top;list-style:none;border-right:1px solid #f0f0f0;-ms-overflow-style:-ms-autohiding-scrollbar}.ant-cascader-menu-item{display:flex;flex-wrap:nowrap;align-items:center;padding:5px 12px;overflow:hidden;line-height:22px;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;transition:all .3s}.ant-cascader-menu-item:hover{background:#f5f5f5}.ant-cascader-menu-item-disabled{color:#00000040;cursor:not-allowed}.ant-cascader-menu-item-disabled:hover{background:transparent}.ant-cascader-menu-empty .ant-cascader-menu-item{color:#00000040;cursor:default;pointer-events:none}.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled),.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover{font-weight:600;background-color:#e6f7ff}.ant-cascader-menu-item-content{flex:auto}.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,.ant-cascader-menu-item-loading-icon{margin-left:4px;color:#00000073;font-size:10px}.ant-cascader-menu-item-disabled.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,.ant-cascader-menu-item-disabled.ant-cascader-menu-item-loading-icon{color:#00000040}.ant-cascader-menu-item-keyword{color:#ff4d4f}.ant-cascader-compact-item:not(.ant-cascader-compact-last-item):not(.ant-cascader-compact-item-rtl){margin-right:-1px}.ant-cascader-compact-item:not(.ant-cascader-compact-last-item).ant-cascader-compact-item-rtl{margin-left:-1px}.ant-cascader-compact-item:hover,.ant-cascader-compact-item:focus,.ant-cascader-compact-item:active{z-index:2}.ant-cascader-compact-item[disabled]{z-index:0}.ant-cascader-compact-item:not(.ant-cascader-compact-first-item):not(.ant-cascader-compact-last-item).ant-cascader{border-radius:0}.ant-cascader-compact-item.ant-cascader.ant-cascader-compact-first-item:not(.ant-cascader-compact-last-item):not(.ant-cascader-compact-item-rtl){border-top-right-radius:0;border-bottom-right-radius:0}.ant-cascader-compact-item.ant-cascader.ant-cascader-compact-last-item:not(.ant-cascader-compact-first-item):not(.ant-cascader-compact-item-rtl){border-top-left-radius:0;border-bottom-left-radius:0}.ant-cascader-compact-item.ant-cascader.ant-cascader-compact-item-rtl.ant-cascader-compact-first-item:not(.ant-cascader-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-cascader-compact-item.ant-cascader.ant-cascader-compact-item-rtl.ant-cascader-compact-last-item:not(.ant-cascader-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-cascader-rtl .ant-cascader-menu-item-expand-icon,.ant-cascader-rtl .ant-cascader-menu-item-loading-icon{margin-right:4px;margin-left:0}.ant-cascader-rtl .ant-cascader-checkbox{top:0;margin-right:0;margin-left:8px}.ant-empty{margin:0 8px;font-size:14px;line-height:1.5715;text-align:center}.ant-empty-image{height:100px;margin-bottom:8px}.ant-empty-image img{height:100%}.ant-empty-image svg{height:100%;margin:auto}.ant-empty-footer{margin-top:16px}.ant-empty-normal{margin:32px 0;color:#00000040}.ant-empty-normal .ant-empty-image{height:40px}.ant-empty-small{margin:8px 0;color:#00000040}.ant-empty-small .ant-empty-image{height:35px}.ant-empty-img-default-ellipse{fill:#f5f5f5;fill-opacity:.8}.ant-empty-img-default-path-1{fill:#aeb8c2}.ant-empty-img-default-path-2{fill:url(#linearGradient-1)}.ant-empty-img-default-path-3{fill:#f5f5f7}.ant-empty-img-default-path-4,.ant-empty-img-default-path-5{fill:#dce0e6}.ant-empty-img-default-g{fill:#fff}.ant-empty-img-simple-ellipse{fill:#f5f5f5}.ant-empty-img-simple-g{stroke:#d9d9d9}.ant-empty-img-simple-path{fill:#fafafa}.ant-empty-rtl{direction:rtl}.ant-select-single .ant-select-selector{display:flex}.ant-select-single .ant-select-selector .ant-select-selection-search{position:absolute;top:0;right:11px;bottom:0;left:11px}.ant-select-single .ant-select-selector .ant-select-selection-search-input{width:100%}.ant-select-single .ant-select-selector .ant-select-selection-item,.ant-select-single .ant-select-selector .ant-select-selection-placeholder{padding:0;line-height:30px;transition:all .3s,visibility 0s}.ant-select-single .ant-select-selector .ant-select-selection-item{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-single .ant-select-selector .ant-select-selection-placeholder{transition:none;pointer-events:none}.ant-select-single .ant-select-selector:after,.ant-select-single .ant-select-selector .ant-select-selection-item:after,.ant-select-single .ant-select-selector .ant-select-selection-placeholder:after{display:inline-block;width:0;visibility:hidden;content:" "}.ant-select-single.ant-select-show-arrow .ant-select-selection-search{right:25px}.ant-select-single.ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder{padding-right:18px}.ant-select-single.ant-select-open .ant-select-selection-item{color:#bfbfbf}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{width:100%;height:32px;padding:0 11px}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{height:30px}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector:after{line-height:30px}.ant-select-single.ant-select-customize-input .ant-select-selector:after{display:none}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-search{position:static;width:100%}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder{position:absolute;right:0;left:0;padding:0 11px}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder:after{display:none}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector{height:40px}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector:after,.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-placeholder{line-height:38px}.ant-select-single.ant-select-lg:not(.ant-select-customize-input):not(.ant-select-customize-input) .ant-select-selection-search-input{height:38px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector{height:24px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector:after,.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-placeholder{line-height:22px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input):not(.ant-select-customize-input) .ant-select-selection-search-input{height:22px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selection-search{right:7px;left:7px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector{padding:0 7px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search{right:28px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder{padding-right:21px}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector{padding:0 11px}.ant-select-selection-overflow{position:relative;display:flex;flex:auto;flex-wrap:wrap;max-width:100%}.ant-select-selection-overflow-item{flex:none;align-self:center;max-width:100%}.ant-select-multiple .ant-select-selector{display:flex;flex-wrap:wrap;align-items:center;padding:1px 4px}.ant-select-show-search.ant-select-multiple .ant-select-selector{cursor:text}.ant-select-disabled.ant-select-multiple .ant-select-selector{background:#f5f5f5;cursor:not-allowed}.ant-select-multiple .ant-select-selector:after{display:inline-block;width:0;margin:2px 0;line-height:24px;visibility:hidden;content:" "}.ant-select-multiple.ant-select-show-arrow .ant-select-selector,.ant-select-multiple.ant-select-allow-clear .ant-select-selector{padding-right:24px}.ant-select-multiple .ant-select-selection-item{position:relative;display:flex;flex:none;box-sizing:border-box;max-width:100%;height:24px;margin-top:2px;margin-bottom:2px;line-height:22px;background:#f5f5f5;border:1px solid #f0f0f0;border-radius:2px;cursor:default;transition:font-size .3s,line-height .3s,height .3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-inline-end:4px;padding-inline-start:8px;padding-inline-end:4px}.ant-select-disabled.ant-select-multiple .ant-select-selection-item{color:#bfbfbf;border-color:#d9d9d9;cursor:not-allowed}.ant-select-multiple .ant-select-selection-item-content{display:inline-block;margin-right:4px;overflow:hidden;white-space:pre;text-overflow:ellipsis}.ant-select-multiple .ant-select-selection-item-remove{color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-flex;align-items:center;color:#00000073;font-weight:700;font-size:10px;line-height:inherit;cursor:pointer}.ant-select-multiple .ant-select-selection-item-remove>*{line-height:1}.ant-select-multiple .ant-select-selection-item-remove svg{display:inline-block}.ant-select-multiple .ant-select-selection-item-remove:before{display:none}.ant-select-multiple .ant-select-selection-item-remove .ant-select-multiple .ant-select-selection-item-remove-icon{display:block}.ant-select-multiple .ant-select-selection-item-remove>.anticon{vertical-align:middle}.ant-select-multiple .ant-select-selection-item-remove:hover{color:#000000bf}.ant-select-multiple .ant-select-selection-overflow-item+.ant-select-selection-overflow-item .ant-select-selection-search{margin-inline-start:0}.ant-select-multiple .ant-select-selection-search{position:relative;max-width:100%;margin-inline-start:7px}.ant-select-multiple .ant-select-selection-search-input,.ant-select-multiple .ant-select-selection-search-mirror{height:24px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:24px;transition:all .3s}.ant-select-multiple .ant-select-selection-search-input{width:100%;min-width:4.1px}.ant-select-multiple .ant-select-selection-search-mirror{position:absolute;top:0;left:0;z-index:999;white-space:pre;visibility:hidden}.ant-select-multiple .ant-select-selection-placeholder{position:absolute;top:50%;right:11px;left:11px;transform:translateY(-50%);transition:all .3s}.ant-select-multiple.ant-select-lg .ant-select-selector:after{line-height:32px}.ant-select-multiple.ant-select-lg .ant-select-selection-item{height:32px;line-height:30px}.ant-select-multiple.ant-select-lg .ant-select-selection-search{height:32px;line-height:32px}.ant-select-multiple.ant-select-lg .ant-select-selection-search-input,.ant-select-multiple.ant-select-lg .ant-select-selection-search-mirror{height:32px;line-height:30px}.ant-select-multiple.ant-select-sm .ant-select-selector:after{line-height:16px}.ant-select-multiple.ant-select-sm .ant-select-selection-item{height:16px;line-height:14px}.ant-select-multiple.ant-select-sm .ant-select-selection-search{height:16px;line-height:16px}.ant-select-multiple.ant-select-sm .ant-select-selection-search-input,.ant-select-multiple.ant-select-sm .ant-select-selection-search-mirror{height:16px;line-height:14px}.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder{left:7px}.ant-select-multiple.ant-select-sm .ant-select-selection-search{margin-inline-start:3px}.ant-select-disabled .ant-select-selection-item-remove{display:none}.ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{background-color:#fff;border-color:#ff4d4f!important}.ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer).ant-select-open .ant-select-selector,.ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer).ant-select-focused .ant-select-selector{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-select-status-warning.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{background-color:#fff;border-color:#faad14!important}.ant-select-status-warning.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer).ant-select-open .ant-select-selector,.ant-select-status-warning.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer).ant-select-focused .ant-select-selector{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-select-status-error.ant-select-has-feedback .ant-select-clear,.ant-select-status-warning.ant-select-has-feedback .ant-select-clear,.ant-select-status-success.ant-select-has-feedback .ant-select-clear,.ant-select-status-validating.ant-select-has-feedback .ant-select-clear{right:32px}.ant-select-status-error.ant-select-has-feedback .ant-select-selection-selected-value,.ant-select-status-warning.ant-select-has-feedback .ant-select-selection-selected-value,.ant-select-status-success.ant-select-has-feedback .ant-select-selection-selected-value,.ant-select-status-validating.ant-select-has-feedback .ant-select-selection-selected-value{padding-right:42px}.ant-select{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-block;cursor:pointer}.ant-select:not(.ant-select-customize-input) .ant-select-selector{position:relative;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s cubic-bezier(.645,.045,.355,1)}.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:pointer}.ant-select-show-search.ant-select:not(.ant-select-customize-input) .ant-select-selector{cursor:text}.ant-select-show-search.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:auto}.ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector{color:#00000040;background:#f5f5f5;cursor:not-allowed}.ant-select-multiple.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector{background:#f5f5f5}.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:not-allowed}.ant-select:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{margin:0;padding:0;background:transparent;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.ant-select:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input::-webkit-search-cancel-button{display:none;-webkit-appearance:none}.ant-select:not(.ant-select-disabled):hover .ant-select-selector{border-color:#40a9ff;border-right-width:1px}.ant-select-selection-item{flex:1;overflow:hidden;font-weight:400;white-space:nowrap;text-overflow:ellipsis}@media all and (-ms-high-contrast: none){.ant-select-selection-item *::-ms-backdrop,.ant-select-selection-item{flex:auto}}.ant-select-selection-placeholder{flex:1;overflow:hidden;color:#bfbfbf;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}@media all and (-ms-high-contrast: none){.ant-select-selection-placeholder *::-ms-backdrop,.ant-select-selection-placeholder{flex:auto}}.ant-select-arrow{display:inline-flex;color:inherit;font-style:normal;text-transform:none;vertical-align:-.125em;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:50%;right:11px;display:flex;align-items:center;height:12px;margin-top:-6px;color:#00000040;font-size:12px;line-height:1;text-align:center;pointer-events:none}.ant-select-arrow>*{line-height:1}.ant-select-arrow svg{display:inline-block}.ant-select-arrow:before{display:none}.ant-select-arrow .ant-select-arrow-icon{display:block}.ant-select-arrow .anticon{vertical-align:top;transition:transform .3s}.ant-select-arrow .anticon>svg{vertical-align:top}.ant-select-arrow .anticon:not(.ant-select-suffix){pointer-events:auto}.ant-select-disabled .ant-select-arrow{cursor:not-allowed}.ant-select-arrow>*:not(:last-child){margin-inline-end:8px}.ant-select-clear{position:absolute;top:50%;right:11px;z-index:1;display:inline-block;width:12px;height:12px;margin-top:-6px;color:#00000040;font-size:12px;font-style:normal;line-height:1;text-align:center;text-transform:none;background:#fff;cursor:pointer;opacity:0;transition:color .3s ease,opacity .15s ease;text-rendering:auto}.ant-select-clear:before{display:block}.ant-select-clear:hover{color:#00000073}.ant-select:hover .ant-select-clear{opacity:1}.ant-select-dropdown{margin:0;color:#000000d9;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum",;position:absolute;top:-9999px;left:-9999px;z-index:1050;box-sizing:border-box;padding:4px 0;overflow:hidden;font-size:14px;font-variant:initial;background-color:#fff;border-radius:2px;outline:none;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}.ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-bottomLeft,.ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-bottomLeft{animation-name:antSlideUpIn}.ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-topLeft,.ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-topLeft{animation-name:antSlideDownIn}.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-bottomLeft{animation-name:antSlideUpOut}.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-topLeft{animation-name:antSlideDownOut}.ant-select-dropdown-hidden{display:none}.ant-select-dropdown-empty{color:#00000040}.ant-select-item-empty{position:relative;display:block;min-height:32px;padding:5px 12px;color:#000000d9;font-weight:400;font-size:14px;line-height:22px;color:#00000040}.ant-select-item{position:relative;display:block;min-height:32px;padding:5px 12px;color:#000000d9;font-weight:400;font-size:14px;line-height:22px;cursor:pointer;transition:background .3s ease}.ant-select-item-group{color:#00000073;font-size:12px;cursor:default}.ant-select-item-option{display:flex}.ant-select-item-option-content{flex:auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-select-item-option-state{flex:none}.ant-select-item-option-active:not(.ant-select-item-option-disabled){background-color:#f5f5f5}.ant-select-item-option-selected:not(.ant-select-item-option-disabled){color:#000000d9;font-weight:600;background-color:#e6f7ff}.ant-select-item-option-selected:not(.ant-select-item-option-disabled) .ant-select-item-option-state{color:#1890ff}.ant-select-item-option-disabled{color:#00000040;cursor:not-allowed}.ant-select-item-option-disabled.ant-select-item-option-selected{background-color:#f5f5f5}.ant-select-item-option-grouped{padding-left:24px}.ant-select-lg{font-size:16px}.ant-select-borderless .ant-select-selector{background-color:transparent!important;border-color:transparent!important;box-shadow:none!important}.ant-select.ant-select-in-form-item{width:100%}.ant-select-compact-item:not(.ant-select-compact-last-item){margin-right:-1px}.ant-select-compact-item:not(.ant-select-compact-last-item).ant-select-compact-item-rtl{margin-right:0;margin-left:-1px}.ant-select-compact-item:hover>*,.ant-select-compact-item:focus>*,.ant-select-compact-item:active>*{z-index:2}.ant-select-compact-item.ant-select-focused>*{z-index:2}.ant-select-compact-item[disabled]>*{z-index:0}.ant-select-compact-item:not(.ant-select-compact-first-item):not(.ant-select-compact-last-item).ant-select>.ant-select-selector{border-radius:0}.ant-select-compact-item.ant-select-compact-first-item.ant-select:not(.ant-select-compact-last-item):not(.ant-select-compact-item-rtl)>.ant-select-selector{border-top-right-radius:0;border-bottom-right-radius:0}.ant-select-compact-item.ant-select-compact-last-item.ant-select:not(.ant-select-compact-first-item):not(.ant-select-compact-item-rtl)>.ant-select-selector{border-top-left-radius:0;border-bottom-left-radius:0}.ant-select-compact-item.ant-select.ant-select-compact-first-item.ant-select-compact-item-rtl:not(.ant-select-compact-last-item)>.ant-select-selector{border-top-left-radius:0;border-bottom-left-radius:0}.ant-select-compact-item.ant-select.ant-select-compact-last-item.ant-select-compact-item-rtl:not(.ant-select-compact-first-item)>.ant-select-selector{border-top-right-radius:0;border-bottom-right-radius:0}.ant-select-rtl{direction:rtl}.ant-select-rtl .ant-select-arrow,.ant-select-rtl .ant-select-clear{right:initial;left:11px}.ant-select-dropdown-rtl{direction:rtl}.ant-select-dropdown-rtl .ant-select-item-option-grouped{padding-right:24px;padding-left:12px}.ant-select-rtl.ant-select-multiple.ant-select-show-arrow .ant-select-selector,.ant-select-rtl.ant-select-multiple.ant-select-allow-clear .ant-select-selector{padding-right:4px;padding-left:24px}.ant-select-rtl.ant-select-multiple .ant-select-selection-item{text-align:right}.ant-select-rtl.ant-select-multiple .ant-select-selection-item-content{margin-right:0;margin-left:4px;text-align:right}.ant-select-rtl.ant-select-multiple .ant-select-selection-search-mirror{right:0;left:auto}.ant-select-rtl.ant-select-multiple .ant-select-selection-placeholder{right:11px;left:auto}.ant-select-rtl.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder{right:7px}.ant-select-rtl.ant-select-single .ant-select-selector .ant-select-selection-item,.ant-select-rtl.ant-select-single .ant-select-selector .ant-select-selection-placeholder{right:0;left:9px;text-align:right}.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-search{right:11px;left:25px}.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-item,.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder{padding-right:0;padding-left:18px}.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search{right:6px}.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item,.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder{padding-right:0;padding-left:21px}.ant-spin{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;display:none;color:#1890ff;font-size:0;text-align:center;vertical-align:middle;opacity:0;transition:transform .3s cubic-bezier(.78,.14,.15,.86)}.ant-spin-spinning{position:static;display:inline-block;opacity:1}.ant-spin-nested-loading{position:relative}.ant-spin-nested-loading>div>.ant-spin{position:absolute;top:0;left:0;z-index:4;display:block;width:100%;height:100%;max-height:400px}.ant-spin-nested-loading>div>.ant-spin .ant-spin-dot{position:absolute;top:50%;left:50%;margin:-10px}.ant-spin-nested-loading>div>.ant-spin .ant-spin-text{position:absolute;top:50%;width:100%;padding-top:5px;font-size:14px;text-shadow:0 1px 2px #fff}.ant-spin-nested-loading>div>.ant-spin.ant-spin-show-text .ant-spin-dot{margin-top:-20px}.ant-spin-nested-loading>div>.ant-spin-sm .ant-spin-dot{margin:-7px}.ant-spin-nested-loading>div>.ant-spin-sm .ant-spin-text{padding-top:2px}.ant-spin-nested-loading>div>.ant-spin-sm.ant-spin-show-text .ant-spin-dot{margin-top:-17px}.ant-spin-nested-loading>div>.ant-spin-lg .ant-spin-dot{margin:-16px}.ant-spin-nested-loading>div>.ant-spin-lg .ant-spin-text{padding-top:11px}.ant-spin-nested-loading>div>.ant-spin-lg.ant-spin-show-text .ant-spin-dot{margin-top:-26px}.ant-spin-container{position:relative;transition:opacity .3s}.ant-spin-container:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:none \ ;width:100%;height:100%;background:#fff;opacity:0;transition:all .3s;content:"";pointer-events:none}.ant-spin-blur{clear:both;opacity:.5;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}.ant-spin-blur:after{opacity:.4;pointer-events:auto}.ant-spin-tip{color:#00000073}.ant-spin-dot{position:relative;display:inline-block;font-size:20px;width:1em;height:1em}.ant-spin-dot-item{position:absolute;display:block;width:9px;height:9px;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.ant-spin-dot-item:nth-child(1){top:0;left:0}.ant-spin-dot-item:nth-child(2){top:0;right:0;animation-delay:.4s}.ant-spin-dot-item:nth-child(3){right:0;bottom:0;animation-delay:.8s}.ant-spin-dot-item:nth-child(4){bottom:0;left:0;animation-delay:1.2s}.ant-spin-dot-spin{transform:rotate(0);animation:antRotate 1.2s infinite linear}.ant-spin-sm .ant-spin-dot{font-size:14px}.ant-spin-sm .ant-spin-dot i{width:6px;height:6px}.ant-spin-lg .ant-spin-dot{font-size:32px}.ant-spin-lg .ant-spin-dot i{width:14px;height:14px}.ant-spin.ant-spin-show-text .ant-spin-text{display:block}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.ant-spin-blur{background:#fff;opacity:.5}}@keyframes antSpinMove{to{opacity:1}}@keyframes antRotate{to{transform:rotate(360deg)}}.ant-spin-rtl{direction:rtl}.ant-spin-rtl .ant-spin-dot-spin{transform:rotate(-45deg);animation-name:antRotateRtl}@keyframes antRotateRtl{to{transform:rotate(-405deg)}}.ant-badge{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-block;line-height:1}.ant-badge-count{z-index:auto;min-width:20px;height:20px;padding:0 6px;color:#fff;font-weight:400;font-size:12px;line-height:20px;white-space:nowrap;text-align:center;background:#ff4d4f;border-radius:10px;box-shadow:0 0 0 1px #fff}.ant-badge-count a,.ant-badge-count a:hover{color:#fff}.ant-badge-count-sm{min-width:14px;height:14px;padding:0;font-size:12px;line-height:14px;border-radius:7px}.ant-badge-multiple-words{padding:0 8px}.ant-badge-dot{z-index:auto;width:6px;min-width:6px;height:6px;background:#ff4d4f;border-radius:100%;box-shadow:0 0 0 1px #fff}.ant-badge-dot.ant-scroll-number{transition:background 1.5s}.ant-badge-count,.ant-badge-dot,.ant-badge .ant-scroll-number-custom-component{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0%}.ant-badge-count.anticon-spin,.ant-badge-dot.anticon-spin,.ant-badge .ant-scroll-number-custom-component.anticon-spin{animation:antBadgeLoadingCircle 1s infinite linear}.ant-badge-status{line-height:inherit;vertical-align:baseline}.ant-badge-status-dot{position:relative;top:-1px;display:inline-block;width:6px;height:6px;vertical-align:middle;border-radius:50%}.ant-badge-status-success{background-color:#52c41a}.ant-badge-status-processing{position:relative;background-color:#1890ff}.ant-badge-status-processing:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:50%;animation:antStatusProcessing 1.2s infinite ease-in-out;content:""}.ant-badge-status-default{background-color:#d9d9d9}.ant-badge-status-error{background-color:#ff4d4f}.ant-badge-status-warning{background-color:#faad14}.ant-badge-status-pink,.ant-badge-status-magenta{background:#eb2f96}.ant-badge-status-red{background:#f5222d}.ant-badge-status-volcano{background:#fa541c}.ant-badge-status-orange{background:#fa8c16}.ant-badge-status-yellow{background:#fadb14}.ant-badge-status-gold{background:#faad14}.ant-badge-status-cyan{background:#13c2c2}.ant-badge-status-lime{background:#a0d911}.ant-badge-status-green{background:#52c41a}.ant-badge-status-blue{background:#1890ff}.ant-badge-status-geekblue{background:#2f54eb}.ant-badge-status-purple{background:#722ed1}.ant-badge-status-text{margin-left:8px;color:#000000d9;font-size:14px}.ant-badge-zoom-appear,.ant-badge-zoom-enter{animation:antZoomBadgeIn .3s cubic-bezier(.12,.4,.29,1.46);animation-fill-mode:both}.ant-badge-zoom-leave{animation:antZoomBadgeOut .3s cubic-bezier(.71,-.46,.88,.6);animation-fill-mode:both}.ant-badge-not-a-wrapper .ant-badge-zoom-appear,.ant-badge-not-a-wrapper .ant-badge-zoom-enter{animation:antNoWrapperZoomBadgeIn .3s cubic-bezier(.12,.4,.29,1.46)}.ant-badge-not-a-wrapper .ant-badge-zoom-leave{animation:antNoWrapperZoomBadgeOut .3s cubic-bezier(.71,-.46,.88,.6)}.ant-badge-not-a-wrapper:not(.ant-badge-status){vertical-align:middle}.ant-badge-not-a-wrapper .ant-scroll-number-custom-component,.ant-badge-not-a-wrapper .ant-badge-count{transform:none}.ant-badge-not-a-wrapper .ant-scroll-number-custom-component,.ant-badge-not-a-wrapper .ant-scroll-number{position:relative;top:auto;display:block;transform-origin:50% 50%}@keyframes antStatusProcessing{0%{transform:scale(.8);opacity:.5}to{transform:scale(2.4);opacity:0}}.ant-scroll-number{overflow:hidden;direction:ltr}.ant-scroll-number-only{position:relative;display:inline-block;height:20px;transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden}.ant-scroll-number-only>p.ant-scroll-number-only-unit{height:20px;margin:0;-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden}.ant-scroll-number-symbol{vertical-align:top}@keyframes antZoomBadgeIn{0%{transform:scale(0) translate(50%,-50%);opacity:0}to{transform:scale(1) translate(50%,-50%)}}@keyframes antZoomBadgeOut{0%{transform:scale(1) translate(50%,-50%)}to{transform:scale(0) translate(50%,-50%);opacity:0}}@keyframes antNoWrapperZoomBadgeIn{0%{transform:scale(0);opacity:0}to{transform:scale(1)}}@keyframes antNoWrapperZoomBadgeOut{0%{transform:scale(1)}to{transform:scale(0);opacity:0}}@keyframes antBadgeLoadingCircle{0%{transform-origin:50%}to{transform:translate(50%,-50%) rotate(360deg);transform-origin:50%}}.ant-ribbon-wrapper{position:relative}.ant-ribbon{box-sizing:border-box;margin:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;top:8px;height:22px;padding:0 8px;color:#fff;line-height:22px;white-space:nowrap;background-color:#1890ff;border-radius:2px}.ant-ribbon-text{color:#fff}.ant-ribbon-corner{position:absolute;top:100%;width:8px;height:8px;color:currentcolor;border:4px solid;transform:scaleY(.75);transform-origin:top}.ant-ribbon-corner:after{position:absolute;top:-4px;left:-4px;width:inherit;height:inherit;color:#00000040;border:inherit;content:""}.ant-ribbon-color-pink,.ant-ribbon-color-magenta{color:#eb2f96;background:#eb2f96}.ant-ribbon-color-red{color:#f5222d;background:#f5222d}.ant-ribbon-color-volcano{color:#fa541c;background:#fa541c}.ant-ribbon-color-orange{color:#fa8c16;background:#fa8c16}.ant-ribbon-color-yellow{color:#fadb14;background:#fadb14}.ant-ribbon-color-gold{color:#faad14;background:#faad14}.ant-ribbon-color-cyan{color:#13c2c2;background:#13c2c2}.ant-ribbon-color-lime{color:#a0d911;background:#a0d911}.ant-ribbon-color-green{color:#52c41a;background:#52c41a}.ant-ribbon-color-blue{color:#1890ff;background:#1890ff}.ant-ribbon-color-geekblue{color:#2f54eb;background:#2f54eb}.ant-ribbon-color-purple{color:#722ed1;background:#722ed1}.ant-ribbon.ant-ribbon-placement-end{right:-8px;border-bottom-right-radius:0}.ant-ribbon.ant-ribbon-placement-end .ant-ribbon-corner{right:0;border-color:currentcolor transparent transparent currentcolor}.ant-ribbon.ant-ribbon-placement-start{left:-8px;border-bottom-left-radius:0}.ant-ribbon.ant-ribbon-placement-start .ant-ribbon-corner{left:0;border-color:currentcolor currentcolor transparent transparent}.ant-badge-rtl{direction:rtl}.ant-badge-rtl.ant-badge:not(.ant-badge-not-a-wrapper) .ant-badge-count,.ant-badge-rtl.ant-badge:not(.ant-badge-not-a-wrapper) .ant-badge-dot,.ant-badge-rtl.ant-badge:not(.ant-badge-not-a-wrapper) .ant-scroll-number-custom-component{right:auto;left:0;direction:ltr;transform:translate(-50%,-50%);transform-origin:0% 0%}.ant-badge-rtl.ant-badge:not(.ant-badge-not-a-wrapper) .ant-scroll-number-custom-component{right:auto;left:0;transform:translate(-50%,-50%);transform-origin:0% 0%}.ant-badge-rtl .ant-badge-status-text{margin-right:8px;margin-left:0}.ant-badge:not(.ant-badge-not-a-wrapper).ant-badge-rtl .ant-badge-zoom-appear,.ant-badge:not(.ant-badge-not-a-wrapper).ant-badge-rtl .ant-badge-zoom-enter{animation-name:antZoomBadgeInRtl}.ant-badge:not(.ant-badge-not-a-wrapper).ant-badge-rtl .ant-badge-zoom-leave{animation-name:antZoomBadgeOutRtl}.ant-ribbon-rtl{direction:rtl}.ant-ribbon-rtl.ant-ribbon-placement-end{right:unset;left:-8px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.ant-ribbon-rtl.ant-ribbon-placement-end .ant-ribbon-corner{right:unset;left:0;border-color:currentcolor currentcolor transparent transparent}.ant-ribbon-rtl.ant-ribbon-placement-end .ant-ribbon-corner:after{border-color:currentcolor currentcolor transparent transparent}.ant-ribbon-rtl.ant-ribbon-placement-start{right:-8px;left:unset;border-bottom-right-radius:0;border-bottom-left-radius:2px}.ant-ribbon-rtl.ant-ribbon-placement-start .ant-ribbon-corner{right:0;left:unset;border-color:currentcolor transparent transparent currentcolor}.ant-ribbon-rtl.ant-ribbon-placement-start .ant-ribbon-corner:after{border-color:currentcolor transparent transparent currentcolor}@keyframes antZoomBadgeInRtl{0%{transform:scale(0) translate(-50%,-50%);opacity:0}to{transform:scale(1) translate(-50%,-50%)}}@keyframes antZoomBadgeOutRtl{0%{transform:scale(1) translate(-50%,-50%)}to{transform:scale(0) translate(-50%,-50%);opacity:0}}.ant-pro-field-dropdown,.ant-pro-table-dropdown{width:auto}.ant-pro-select-item-option-content-light{color:#1890ff}.ant-pro-select-item-option-content{-webkit-box-flex:1;-ms-flex:auto;flex:auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-pro-field-select-light-select .ant-select{position:absolute;width:153px;height:28px;visibility:hidden}.ant-pro-field-select-light-select .ant-select-selector{height:28px}.ant-pro-field-select-light-select.ant-pro-field-select-light-select-searchable .ant-select{width:200px}.ant-pro-field-select-light-select.ant-pro-field-select-light-select-searchable .ant-select-selector{height:28px}.ant-checkbox{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;top:.2em;line-height:1;white-space:nowrap;outline:none;cursor:pointer}.ant-checkbox-wrapper:hover .ant-checkbox-inner,.ant-checkbox:hover .ant-checkbox-inner,.ant-checkbox-input:focus+.ant-checkbox-inner{border-color:#1890ff}.ant-checkbox-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:2px;visibility:hidden;animation:antCheckboxEffect .36s ease-in-out;animation-fill-mode:backwards;content:""}.ant-checkbox:hover:after,.ant-checkbox-wrapper:hover .ant-checkbox:after{visibility:visible}.ant-checkbox-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;direction:ltr;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;border-collapse:separate;transition:all .3s}.ant-checkbox-inner:after{position:absolute;top:50%;left:21.5%;display:table;width:5.71428571px;height:9.14285714px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;content:" "}.ant-checkbox-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;cursor:pointer;opacity:0}.ant-checkbox-checked .ant-checkbox-inner:after{position:absolute;display:table;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1) translate(-50%,-50%);opacity:1;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;content:" "}.ant-checkbox-checked .ant-checkbox-inner{background-color:#1890ff;border-color:#1890ff}.ant-checkbox-disabled{cursor:not-allowed}.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after{border-color:#00000040;animation-name:none}.ant-checkbox-disabled .ant-checkbox-input{cursor:not-allowed;pointer-events:none}.ant-checkbox-disabled .ant-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9!important}.ant-checkbox-disabled .ant-checkbox-inner:after{border-color:#f5f5f5;border-collapse:separate;animation-name:none}.ant-checkbox-disabled+span{color:#00000040;cursor:not-allowed}.ant-checkbox-disabled:hover:after,.ant-checkbox-wrapper:hover .ant-checkbox-disabled:after{visibility:hidden}.ant-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-flex;align-items:baseline;line-height:unset;cursor:pointer}.ant-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:" "}.ant-checkbox-wrapper.ant-checkbox-wrapper-disabled{cursor:not-allowed}.ant-checkbox-wrapper+.ant-checkbox-wrapper{margin-left:8px}.ant-checkbox-wrapper.ant-checkbox-wrapper-in-form-item input[type=checkbox]{width:14px;height:14px}.ant-checkbox+span{padding-right:8px;padding-left:8px}.ant-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block}.ant-checkbox-group-item{margin-right:8px}.ant-checkbox-group-item:last-child{margin-right:0}.ant-checkbox-group-item+.ant-checkbox-group-item{margin-left:0}.ant-checkbox-indeterminate .ant-checkbox-inner{background-color:#fff;border-color:#d9d9d9}.ant-checkbox-indeterminate .ant-checkbox-inner:after{top:50%;left:50%;width:8px;height:8px;background-color:#1890ff;border:0;transform:translate(-50%,-50%) scale(1);opacity:1;content:" "}.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner:after{background-color:#00000040;border-color:#00000040}.ant-checkbox-rtl{direction:rtl}.ant-checkbox-group-rtl .ant-checkbox-group-item{margin-right:0;margin-left:8px}.ant-checkbox-group-rtl .ant-checkbox-group-item:last-child{margin-left:0!important}.ant-checkbox-group-rtl .ant-checkbox-group-item+.ant-checkbox-group-item{margin-left:8px}.ant-pro-field-checkbox-vertical .ant-checkbox-group-item{display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:0}.ant-picker-status-error.ant-picker,.ant-picker-status-error.ant-picker:not(.ant-picker-disabled):hover{background-color:#fff;border-color:#ff4d4f}.ant-picker-status-error.ant-picker-focused,.ant-picker-status-error.ant-picker:focus{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-picker-status-error.ant-picker .ant-picker-active-bar{background:#ff7875}.ant-picker-status-warning.ant-picker,.ant-picker-status-warning.ant-picker:not(.ant-picker-disabled):hover{background-color:#fff;border-color:#faad14}.ant-picker-status-warning.ant-picker-focused,.ant-picker-status-warning.ant-picker:focus{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-picker-status-warning.ant-picker .ant-picker-active-bar{background:#ffc53d}.ant-picker{box-sizing:border-box;margin:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";padding:4px 11px;position:relative;display:inline-flex;align-items:center;background:#fff;border:1px solid #d9d9d9;border-radius:2px;transition:border .3s,box-shadow .3s}.ant-picker:hover,.ant-picker-focused{border-color:#40a9ff;border-right-width:1px}.ant-picker-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-picker.ant-picker-disabled{background:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}.ant-picker.ant-picker-disabled .ant-picker-suffix{color:#00000040}.ant-picker.ant-picker-borderless{background-color:transparent!important;border-color:transparent!important;box-shadow:none!important}.ant-picker-input{position:relative;display:inline-flex;align-items:center;width:100%}.ant-picker-input>input{position:relative;display:inline-block;width:100%;min-width:0;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s;flex:auto;min-width:1px;height:auto;padding:0;background:transparent;border:0}.ant-picker-input>input::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-picker-input>input:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-picker-input>input::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-picker-input>input:-moz-placeholder{text-overflow:ellipsis}.ant-picker-input>input:-ms-input-placeholder{text-overflow:ellipsis}.ant-picker-input>input:placeholder-shown{text-overflow:ellipsis}.ant-picker-input>input:hover{border-color:#40a9ff;border-right-width:1px}.ant-picker-input>input:focus,.ant-picker-input>input-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-picker-input>input-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-picker-input>input-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-picker-input>input[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-picker-input>input[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-picker-input>input-borderless,.ant-picker-input>input-borderless:hover,.ant-picker-input>input-borderless:focus,.ant-picker-input>input-borderless-focused,.ant-picker-input>input-borderless-disabled,.ant-picker-input>input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-picker-input>input{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-picker-input>input-lg{padding:6.5px 11px;font-size:16px}.ant-picker-input>input-sm{padding:0 7px}.ant-picker-input>input:focus{box-shadow:none}.ant-picker-input>input[disabled]{background:transparent}.ant-picker-input:hover .ant-picker-clear{opacity:1}.ant-picker-input-placeholder>input{color:#bfbfbf}.ant-picker-large{padding:6.5px 11px}.ant-picker-large .ant-picker-input>input{font-size:16px}.ant-picker-small{padding:0 7px}.ant-picker-suffix{display:flex;flex:none;align-self:center;margin-left:4px;color:#00000040;line-height:1;pointer-events:none}.ant-picker-suffix>*{vertical-align:top}.ant-picker-suffix>*:not(:last-child){margin-right:8px}.ant-picker-clear{position:absolute;top:50%;right:0;color:#00000040;line-height:1;background:#fff;transform:translateY(-50%);cursor:pointer;opacity:0;transition:opacity .3s,color .3s}.ant-picker-clear>*{vertical-align:top}.ant-picker-clear:hover{color:#00000073}.ant-picker-separator{position:relative;display:inline-block;width:1em;height:16px;color:#00000040;font-size:16px;vertical-align:top;cursor:default}.ant-picker-focused .ant-picker-separator{color:#00000073}.ant-picker-disabled .ant-picker-range-separator .ant-picker-separator{cursor:not-allowed}.ant-picker-range{position:relative;display:inline-flex}.ant-picker-range .ant-picker-clear{right:11px}.ant-picker-range:hover .ant-picker-clear{opacity:1}.ant-picker-range .ant-picker-active-bar{bottom:-1px;height:2px;margin-left:11px;background:#1890ff;opacity:0;transition:all .3s ease-out;pointer-events:none}.ant-picker-range.ant-picker-focused .ant-picker-active-bar{opacity:1}.ant-picker-range-separator{align-items:center;padding:0 8px;line-height:1}.ant-picker-range.ant-picker-small .ant-picker-clear{right:7px}.ant-picker-range.ant-picker-small .ant-picker-active-bar{margin-left:7px}.ant-picker-dropdown{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;top:-9999px;left:-9999px;z-index:1050}.ant-picker-dropdown-hidden{display:none}.ant-picker-dropdown-placement-bottomLeft .ant-picker-range-arrow{top:2.58561808px;display:block;transform:rotate(-135deg) translateY(1px)}.ant-picker-dropdown-placement-topLeft .ant-picker-range-arrow{bottom:2.58561808px;display:block;transform:rotate(45deg)}.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-topRight,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-topRight{animation-name:antSlideDownIn}.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-bottomRight,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-bottomRight{animation-name:antSlideUpIn}.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-topRight{animation-name:antSlideDownOut}.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-bottomRight{animation-name:antSlideUpOut}.ant-picker-dropdown-range{padding:7.54247233px 0}.ant-picker-dropdown-range-hidden{display:none}.ant-picker-dropdown .ant-picker-panel>.ant-picker-time-panel{padding-top:4px}.ant-picker-ranges{margin-bottom:0;padding:4px 12px;overflow:hidden;line-height:34px;text-align:left;list-style:none}.ant-picker-ranges>li{display:inline-block}.ant-picker-ranges .ant-picker-preset>.ant-tag-blue{color:#1890ff;background:#e6f7ff;border-color:#91d5ff;cursor:pointer}.ant-picker-ranges .ant-picker-ok{float:right;margin-left:8px}.ant-picker-range-wrapper{display:flex}.ant-picker-range-arrow{position:absolute;z-index:1;width:11.3137085px;height:11.3137085px;margin-left:16.5px;box-shadow:2px 2px 6px -2px #0000001a;transition:left .3s ease-out;border-radius:0 0 2px;pointer-events:none}.ant-picker-range-arrow:before{position:absolute;top:-11.3137085px;left:-11.3137085px;width:33.9411255px;height:33.9411255px;background:#fff;background-repeat:no-repeat;background-position:-10px -10px;content:"";clip-path:inset(33% 33%);clip-path:path("M 9.849242404917499 24.091883092036785 A 5 5 0 0 1 13.384776310850237 22.627416997969522 L 20.627416997969522 22.627416997969522 A 2 2 0 0 0 22.627416997969522 20.627416997969522 L 22.627416997969522 13.384776310850237 A 5 5 0 0 1 24.091883092036785 9.849242404917499 L 23.091883092036785 9.849242404917499 L 9.849242404917499 23.091883092036785 Z")}.ant-picker-panel-container{overflow:hidden;vertical-align:top;background:#fff;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d;transition:margin .3s}.ant-picker-panel-container .ant-picker-panels{display:inline-flex;flex-wrap:nowrap;direction:ltr}.ant-picker-panel-container .ant-picker-panel{vertical-align:top;background:transparent;border-width:0 0 1px 0;border-radius:0}.ant-picker-panel-container .ant-picker-panel .ant-picker-content,.ant-picker-panel-container .ant-picker-panel table{text-align:center}.ant-picker-panel-container .ant-picker-panel-focused{border-color:#f0f0f0}.ant-picker-compact-item:not(.ant-picker-compact-last-item):not(.ant-picker-compact-item-rtl){margin-right:-1px}.ant-picker-compact-item:not(.ant-picker-compact-last-item).ant-picker-compact-item-rtl{margin-left:-1px}.ant-picker-compact-item:hover,.ant-picker-compact-item:focus,.ant-picker-compact-item:active{z-index:2}.ant-picker-compact-item.ant-picker-focused{z-index:2}.ant-picker-compact-item[disabled]{z-index:0}.ant-picker-compact-item:not(.ant-picker-compact-first-item):not(.ant-picker-compact-last-item).ant-picker{border-radius:0}.ant-picker-compact-item.ant-picker.ant-picker-compact-first-item:not(.ant-picker-compact-last-item):not(.ant-picker-compact-item-rtl){border-top-right-radius:0;border-bottom-right-radius:0}.ant-picker-compact-item.ant-picker.ant-picker-compact-last-item:not(.ant-picker-compact-first-item):not(.ant-picker-compact-item-rtl){border-top-left-radius:0;border-bottom-left-radius:0}.ant-picker-compact-item.ant-picker.ant-picker-compact-item-rtl.ant-picker-compact-first-item:not(.ant-picker-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-picker-compact-item.ant-picker.ant-picker-compact-item-rtl.ant-picker-compact-last-item:not(.ant-picker-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-picker-panel{display:inline-flex;flex-direction:column;text-align:center;background:#fff;border:1px solid #f0f0f0;border-radius:2px;outline:none}.ant-picker-panel-focused{border-color:#1890ff}.ant-picker-decade-panel,.ant-picker-year-panel,.ant-picker-quarter-panel,.ant-picker-month-panel,.ant-picker-week-panel,.ant-picker-date-panel,.ant-picker-time-panel{display:flex;flex-direction:column;width:280px}.ant-picker-header{display:flex;padding:0 8px;color:#000000d9;border-bottom:1px solid #f0f0f0}.ant-picker-header>*{flex:none}.ant-picker-header button{padding:0;color:#00000040;line-height:40px;background:transparent;border:0;cursor:pointer;transition:color .3s}.ant-picker-header>button{min-width:1.6em;font-size:14px}.ant-picker-header>button:hover{color:#000000d9}.ant-picker-header-view{flex:auto;font-weight:500;line-height:40px}.ant-picker-header-view button{color:inherit;font-weight:inherit}.ant-picker-header-view button:not(:first-child){margin-left:8px}.ant-picker-header-view button:hover{color:#1890ff}.ant-picker-prev-icon,.ant-picker-next-icon,.ant-picker-super-prev-icon,.ant-picker-super-next-icon{position:relative;display:inline-block;width:7px;height:7px}.ant-picker-prev-icon:before,.ant-picker-next-icon:before,.ant-picker-super-prev-icon:before,.ant-picker-super-next-icon:before{position:absolute;top:0;left:0;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-width:1.5px 0 0 1.5px;content:""}.ant-picker-super-prev-icon:after,.ant-picker-super-next-icon:after{position:absolute;top:4px;left:4px;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-width:1.5px 0 0 1.5px;content:""}.ant-picker-prev-icon,.ant-picker-super-prev-icon{transform:rotate(-45deg)}.ant-picker-next-icon,.ant-picker-super-next-icon{transform:rotate(135deg)}.ant-picker-content{width:100%;table-layout:fixed;border-collapse:collapse}.ant-picker-content th,.ant-picker-content td{position:relative;min-width:24px;font-weight:400}.ant-picker-content th{height:30px;color:#000000d9;line-height:30px}.ant-picker-cell{padding:3px 0;color:#00000040;cursor:pointer}.ant-picker-cell-in-view{color:#000000d9}.ant-picker-cell:before{position:absolute;top:50%;right:0;left:0;z-index:1;height:24px;transform:translateY(-50%);transition:all .3s;content:""}.ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner{background:#f5f5f5}.ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;border:1px solid #1890ff;border-radius:2px;content:""}.ant-picker-cell-in-view.ant-picker-cell-in-range{position:relative}.ant-picker-cell-in-view.ant-picker-cell-in-range:before{background:#e6f7ff}.ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner,.ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner{color:#fff;background:#1890ff}.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):before,.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):before{background:#e6f7ff}.ant-picker-cell-in-view.ant-picker-cell-range-start:before{left:50%}.ant-picker-cell-in-view.ant-picker-cell-range-end:before{right:50%}.ant-picker-cell-in-view.ant-picker-cell-range-hover-start:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-end:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start-single:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-end-near-hover:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-start-near-hover:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-end-single:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-in-range):after{position:absolute;top:50%;z-index:0;height:24px;border-top:1px dashed #7ec1ff;border-bottom:1px dashed #7ec1ff;transform:translateY(-50%);transition:all .3s;content:""}.ant-picker-cell-range-hover-start:after,.ant-picker-cell-range-hover-end:after,.ant-picker-cell-range-hover:after{right:0;left:2px}.ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover:before,.ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-hover:before,.ant-picker-cell-in-view.ant-picker-cell-range-end.ant-picker-cell-range-hover:before,.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single).ant-picker-cell-range-hover-start:before,.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single).ant-picker-cell-range-hover-end:before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start:before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end:before{background:#cbe6ff}.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner{border-radius:2px 0 0 2px}.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner{border-radius:0 2px 2px 0}.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner:after,.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner:after{position:absolute;top:0;bottom:0;z-index:-1;background:#cbe6ff;transition:all .3s;content:""}.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner:after{right:-6px;left:0}.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner:after{right:0;left:-6px}.ant-picker-cell-range-hover.ant-picker-cell-range-start:after{right:50%}.ant-picker-cell-range-hover.ant-picker-cell-range-end:after{left:50%}tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover:first-child:after,tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child:after,.ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range):after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-start:after{left:6px;border-left:1px dashed #7ec1ff;border-top-left-radius:2px;border-bottom-left-radius:2px}tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover:last-child:after,tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child:after,.ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range):after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-end:after{right:6px;border-right:1px dashed #7ec1ff;border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-picker-cell-disabled{color:#00000040;pointer-events:none}.ant-picker-cell-disabled .ant-picker-cell-inner{background:transparent}.ant-picker-cell-disabled:before{background:rgba(0,0,0,.04)}.ant-picker-cell-disabled.ant-picker-cell-today .ant-picker-cell-inner:before{border-color:#00000040}.ant-picker-decade-panel .ant-picker-content,.ant-picker-year-panel .ant-picker-content,.ant-picker-quarter-panel .ant-picker-content,.ant-picker-month-panel .ant-picker-content{height:264px}.ant-picker-decade-panel .ant-picker-cell-inner,.ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-month-panel .ant-picker-cell-inner{padding:0 8px}.ant-picker-quarter-panel .ant-picker-content{height:56px}.ant-picker-footer{width:-moz-min-content;width:min-content;min-width:100%;line-height:38px;text-align:center;border-bottom:1px solid transparent}.ant-picker-panel .ant-picker-footer{border-top:1px solid #f0f0f0}.ant-picker-footer-extra{padding:0 12px;line-height:38px;text-align:left}.ant-picker-footer-extra:not(:last-child){border-bottom:1px solid #f0f0f0}.ant-picker-now{text-align:left}.ant-picker-today-btn{color:#1890ff}.ant-picker-today-btn:hover{color:#40a9ff}.ant-picker-today-btn:active{color:#096dd9}.ant-picker-today-btn.ant-picker-today-btn-disabled{color:#00000040;cursor:not-allowed}.ant-picker-decade-panel .ant-picker-cell-inner{padding:0 4px}.ant-picker-decade-panel .ant-picker-cell:before{display:none}.ant-picker-year-panel .ant-picker-body,.ant-picker-quarter-panel .ant-picker-body,.ant-picker-month-panel .ant-picker-body{padding:0 8px}.ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-month-panel .ant-picker-cell-inner{width:60px}.ant-picker-year-panel .ant-picker-cell-range-hover-start:after,.ant-picker-quarter-panel .ant-picker-cell-range-hover-start:after,.ant-picker-month-panel .ant-picker-cell-range-hover-start:after{left:14px;border-left:1px dashed #7ec1ff;border-radius:2px 0 0 2px}.ant-picker-panel-rtl .ant-picker-year-panel .ant-picker-cell-range-hover-start:after,.ant-picker-panel-rtl .ant-picker-quarter-panel .ant-picker-cell-range-hover-start:after,.ant-picker-panel-rtl .ant-picker-month-panel .ant-picker-cell-range-hover-start:after{right:14px;border-right:1px dashed #7ec1ff;border-radius:0 2px 2px 0}.ant-picker-year-panel .ant-picker-cell-range-hover-end:after,.ant-picker-quarter-panel .ant-picker-cell-range-hover-end:after,.ant-picker-month-panel .ant-picker-cell-range-hover-end:after{right:14px;border-right:1px dashed #7ec1ff;border-radius:0 2px 2px 0}.ant-picker-panel-rtl .ant-picker-year-panel .ant-picker-cell-range-hover-end:after,.ant-picker-panel-rtl .ant-picker-quarter-panel .ant-picker-cell-range-hover-end:after,.ant-picker-panel-rtl .ant-picker-month-panel .ant-picker-cell-range-hover-end:after{left:14px;border-left:1px dashed #7ec1ff;border-radius:2px 0 0 2px}.ant-picker-week-panel .ant-picker-body{padding:8px 12px}.ant-picker-week-panel .ant-picker-cell:hover .ant-picker-cell-inner,.ant-picker-week-panel .ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-week-panel .ant-picker-cell .ant-picker-cell-inner{background:transparent!important}.ant-picker-week-panel-row td{transition:background .3s}.ant-picker-week-panel-row:hover td{background:#f5f5f5}.ant-picker-week-panel-row-selected td,.ant-picker-week-panel-row-selected:hover td{background:#1890ff}.ant-picker-week-panel-row-selected td.ant-picker-cell-week,.ant-picker-week-panel-row-selected:hover td.ant-picker-cell-week{color:#ffffff80}.ant-picker-week-panel-row-selected td.ant-picker-cell-today .ant-picker-cell-inner:before,.ant-picker-week-panel-row-selected:hover td.ant-picker-cell-today .ant-picker-cell-inner:before{border-color:#fff}.ant-picker-week-panel-row-selected td .ant-picker-cell-inner,.ant-picker-week-panel-row-selected:hover td .ant-picker-cell-inner{color:#fff}.ant-picker-date-panel .ant-picker-body{padding:8px 12px}.ant-picker-date-panel .ant-picker-content{width:252px}.ant-picker-date-panel .ant-picker-content th{width:36px}.ant-picker-datetime-panel{display:flex}.ant-picker-datetime-panel .ant-picker-time-panel{border-left:1px solid #f0f0f0}.ant-picker-datetime-panel .ant-picker-date-panel,.ant-picker-datetime-panel .ant-picker-time-panel{transition:opacity .3s}.ant-picker-datetime-panel-active .ant-picker-date-panel,.ant-picker-datetime-panel-active .ant-picker-time-panel{opacity:.3}.ant-picker-datetime-panel-active .ant-picker-date-panel-active,.ant-picker-datetime-panel-active .ant-picker-time-panel-active{opacity:1}.ant-picker-time-panel{width:auto;min-width:auto}.ant-picker-time-panel .ant-picker-content{display:flex;flex:auto;height:224px}.ant-picker-time-panel-column{flex:1 0 auto;width:56px;margin:0;padding:0;overflow-y:hidden;text-align:left;list-style:none;transition:background .3s}.ant-picker-time-panel-column:after{display:block;height:196px;content:""}.ant-picker-datetime-panel .ant-picker-time-panel-column:after{height:198px}.ant-picker-time-panel-column:not(:first-child){border-left:1px solid #f0f0f0}.ant-picker-time-panel-column-active{background:rgba(230,247,255,.2)}.ant-picker-time-panel-column:hover{overflow-y:auto}.ant-picker-time-panel-column>li{margin:0;padding:0}.ant-picker-time-panel-column>li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner{display:block;width:100%;height:28px;margin:0;padding:0 0 0 14px;color:#000000d9;line-height:28px;border-radius:0;cursor:pointer;transition:background .3s}.ant-picker-time-panel-column>li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner:hover{background:#f5f5f5}.ant-picker-time-panel-column>li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner{background:#e6f7ff}.ant-picker-time-panel-column>li.ant-picker-time-panel-cell-disabled .ant-picker-time-panel-cell-inner{color:#00000040;background:transparent;cursor:not-allowed}_:-ms-fullscreen .ant-picker-range-wrapper .ant-picker-month-panel .ant-picker-cell,:root .ant-picker-range-wrapper .ant-picker-month-panel .ant-picker-cell,_:-ms-fullscreen .ant-picker-range-wrapper .ant-picker-year-panel .ant-picker-cell,:root .ant-picker-range-wrapper .ant-picker-year-panel .ant-picker-cell{padding:21px 0}.ant-picker-rtl{direction:rtl}.ant-picker-rtl .ant-picker-suffix{margin-right:4px;margin-left:0}.ant-picker-rtl .ant-picker-clear{right:auto;left:0}.ant-picker-rtl .ant-picker-separator{transform:rotate(180deg)}.ant-picker-panel-rtl .ant-picker-header-view button:not(:first-child){margin-right:8px;margin-left:0}.ant-picker-rtl.ant-picker-range .ant-picker-clear{right:auto;left:11px}.ant-picker-rtl.ant-picker-range .ant-picker-active-bar{margin-right:11px;margin-left:0}.ant-picker-rtl.ant-picker-range.ant-picker-small .ant-picker-active-bar{margin-right:7px}.ant-picker-dropdown-rtl .ant-picker-ranges{text-align:right}.ant-picker-dropdown-rtl .ant-picker-ranges .ant-picker-ok{float:left;margin-right:8px;margin-left:0}.ant-picker-panel-rtl{direction:rtl}.ant-picker-panel-rtl .ant-picker-prev-icon,.ant-picker-panel-rtl .ant-picker-super-prev-icon{transform:rotate(135deg)}.ant-picker-panel-rtl .ant-picker-next-icon,.ant-picker-panel-rtl .ant-picker-super-next-icon{transform:rotate(-45deg)}.ant-picker-cell .ant-picker-cell-inner{position:relative;z-index:2;display:inline-block;min-width:24px;height:24px;line-height:24px;border-radius:2px;transition:background .3s,border .3s}.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-start:before{right:50%;left:0}.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-end:before{right:0;left:50%}.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-end:before{right:50%;left:50%}.ant-picker-panel-rtl .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner:after{right:0;left:-6px}.ant-picker-panel-rtl .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner:after{right:-6px;left:0}.ant-picker-panel-rtl .ant-picker-cell-range-hover.ant-picker-cell-range-start:after{right:0;left:50%}.ant-picker-panel-rtl .ant-picker-cell-range-hover.ant-picker-cell-range-end:after{right:50%;left:0}.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner{border-radius:0 2px 2px 0}.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner{border-radius:2px 0 0 2px}.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-selected):first-child:after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range:after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range):after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:after{right:6px;left:0;border-right:1px dashed #7ec1ff;border-left:none;border-radius:0 2px 2px 0}.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-selected):last-child:after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range:after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range):after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:after{right:0;left:6px;border-right:none;border-left:1px dashed #7ec1ff;border-radius:2px 0 0 2px}.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child:after,.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child:after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover):after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-end.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover):after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-start.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover):after,.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover.ant-picker-cell-range-hover-edge-start:last-child:after,.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover.ant-picker-cell-range-hover-edge-end:first-child:after{right:6px;left:6px;border-right:1px dashed #7ec1ff;border-left:1px dashed #7ec1ff;border-radius:2px}.ant-picker-dropdown-rtl .ant-picker-footer-extra{direction:rtl;text-align:right}.ant-picker-panel-rtl .ant-picker-time-panel{direction:ltr}.ant-tag{box-sizing:border-box;margin:0 8px 0 0;color:#000000d9;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block;height:auto;padding:0 7px;font-size:12px;line-height:20px;white-space:nowrap;background:#fafafa;border:1px solid #d9d9d9;border-radius:2px;opacity:1;transition:all .3s}.ant-tag,.ant-tag a,.ant-tag a:hover{color:#000000d9}.ant-tag>a:first-child:last-child{display:inline-block;margin:0 -8px;padding:0 8px}.ant-tag-close-icon{margin-left:3px;color:#00000073;font-size:10px;cursor:pointer;transition:all .3s}.ant-tag-close-icon:hover{color:#000000d9}.ant-tag-has-color{border-color:transparent}.ant-tag-has-color,.ant-tag-has-color a,.ant-tag-has-color a:hover,.ant-tag-has-color .anticon-close,.ant-tag-has-color .anticon-close:hover{color:#fff}.ant-tag-checkable{background-color:transparent;border-color:transparent;cursor:pointer}.ant-tag-checkable:not(.ant-tag-checkable-checked):hover{color:#1890ff}.ant-tag-checkable:active,.ant-tag-checkable-checked{color:#fff}.ant-tag-checkable-checked{background-color:#1890ff}.ant-tag-checkable:active{background-color:#096dd9}.ant-tag-hidden{display:none}.ant-tag-pink{color:#c41d7f;background:#fff0f6;border-color:#ffadd2}.ant-tag-pink-inverse{color:#fff;background:#eb2f96;border-color:#eb2f96}.ant-tag-magenta{color:#c41d7f;background:#fff0f6;border-color:#ffadd2}.ant-tag-magenta-inverse{color:#fff;background:#eb2f96;border-color:#eb2f96}.ant-tag-red{color:#cf1322;background:#fff1f0;border-color:#ffa39e}.ant-tag-red-inverse{color:#fff;background:#f5222d;border-color:#f5222d}.ant-tag-volcano{color:#d4380d;background:#fff2e8;border-color:#ffbb96}.ant-tag-volcano-inverse{color:#fff;background:#fa541c;border-color:#fa541c}.ant-tag-orange{color:#d46b08;background:#fff7e6;border-color:#ffd591}.ant-tag-orange-inverse{color:#fff;background:#fa8c16;border-color:#fa8c16}.ant-tag-yellow{color:#d4b106;background:#feffe6;border-color:#fffb8f}.ant-tag-yellow-inverse{color:#fff;background:#fadb14;border-color:#fadb14}.ant-tag-gold{color:#d48806;background:#fffbe6;border-color:#ffe58f}.ant-tag-gold-inverse{color:#fff;background:#faad14;border-color:#faad14}.ant-tag-cyan{color:#08979c;background:#e6fffb;border-color:#87e8de}.ant-tag-cyan-inverse{color:#fff;background:#13c2c2;border-color:#13c2c2}.ant-tag-lime{color:#7cb305;background:#fcffe6;border-color:#eaff8f}.ant-tag-lime-inverse{color:#fff;background:#a0d911;border-color:#a0d911}.ant-tag-green{color:#389e0d;background:#f6ffed;border-color:#b7eb8f}.ant-tag-green-inverse{color:#fff;background:#52c41a;border-color:#52c41a}.ant-tag-blue{color:#096dd9;background:#e6f7ff;border-color:#91d5ff}.ant-tag-blue-inverse{color:#fff;background:#1890ff;border-color:#1890ff}.ant-tag-geekblue{color:#1d39c4;background:#f0f5ff;border-color:#adc6ff}.ant-tag-geekblue-inverse{color:#fff;background:#2f54eb;border-color:#2f54eb}.ant-tag-purple{color:#531dab;background:#f9f0ff;border-color:#d3adf7}.ant-tag-purple-inverse{color:#fff;background:#722ed1;border-color:#722ed1}.ant-tag-success{color:#52c41a;background:#f6ffed;border-color:#b7eb8f}.ant-tag-processing{color:#1890ff;background:#e6f7ff;border-color:#91d5ff}.ant-tag-error{color:#ff4d4f;background:#fff2f0;border-color:#ffccc7}.ant-tag-warning{color:#faad14;background:#fffbe6;border-color:#ffe58f}.ant-tag>.anticon+span,.ant-tag>span+.anticon{margin-left:7px}.ant-tag.ant-tag-rtl{margin-right:0;margin-left:8px;direction:rtl;text-align:right}.ant-tag-rtl .ant-tag-close-icon{margin-right:3px;margin-left:0}.ant-tag-rtl.ant-tag>.anticon+span,.ant-tag-rtl.ant-tag>span+.anticon{margin-right:7px;margin-left:0}.ant-pro-field-date-picker-light .ant-calendar-picker,.ant-pro-field-date-picker-light .ant-picker{position:absolute;width:80px;height:28px;overflow:hidden;visibility:hidden}.ant-input-number-affix-wrapper{display:inline-block;width:100%;min-width:0;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s;position:relative;display:inline-flex;width:90px;padding:0;padding-inline-start:11px}.ant-input-number-affix-wrapper::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-input-number-affix-wrapper:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-input-number-affix-wrapper::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input-number-affix-wrapper:-moz-placeholder{text-overflow:ellipsis}.ant-input-number-affix-wrapper:-ms-input-placeholder{text-overflow:ellipsis}.ant-input-number-affix-wrapper:placeholder-shown{text-overflow:ellipsis}.ant-input-number-affix-wrapper:hover{border-color:#40a9ff;border-right-width:1px}.ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-input-number-affix-wrapper-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-number-affix-wrapper-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-number-affix-wrapper[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-number-affix-wrapper[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-number-affix-wrapper-borderless,.ant-input-number-affix-wrapper-borderless:hover,.ant-input-number-affix-wrapper-borderless:focus,.ant-input-number-affix-wrapper-borderless-focused,.ant-input-number-affix-wrapper-borderless-disabled,.ant-input-number-affix-wrapper-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-input-number-affix-wrapper{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-input-number-affix-wrapper-lg{padding:6.5px 11px;font-size:16px}.ant-input-number-affix-wrapper-sm{padding:0 7px}.ant-input-number-affix-wrapper:not(.ant-input-number-affix-wrapper-disabled):hover{border-color:#40a9ff;border-right-width:1px;z-index:1}.ant-input-number-affix-wrapper-focused,.ant-input-number-affix-wrapper:focus{z-index:1}.ant-input-number-affix-wrapper-disabled .ant-input-number[disabled]{background:transparent}.ant-input-number-affix-wrapper>div.ant-input-number{width:100%;border:none;outline:none}.ant-input-number-affix-wrapper>div.ant-input-number.ant-input-number-focused{box-shadow:none!important}.ant-input-number-affix-wrapper input.ant-input-number-input{padding:0}.ant-input-number-affix-wrapper:before{display:inline-block;width:0;visibility:hidden;content:" "}.ant-input-number-affix-wrapper .ant-input-number-handler-wrap{z-index:2}.ant-input-number-prefix,.ant-input-number-suffix{display:flex;flex:none;align-items:center;pointer-events:none}.ant-input-number-prefix{margin-inline-end:4px}.ant-input-number-suffix{position:absolute;top:0;right:0;z-index:1;height:100%;margin-right:11px;margin-left:4px}.ant-input-number-group-wrapper .ant-input-number-affix-wrapper{width:100%}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number,.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:hover{background:#fff;border-color:#ff4d4f}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:focus,.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number-focused{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-input-number-status-error .ant-input-number-prefix{color:#ff4d4f}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number,.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:hover{background:#fff;border-color:#faad14}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:focus,.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number-focused{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-input-number-status-warning .ant-input-number-prefix{color:#faad14}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper,.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:hover{background:#fff;border-color:#ff4d4f}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper-focused{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-input-number-affix-wrapper-status-error .ant-input-number-prefix{color:#ff4d4f}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper,.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:hover{background:#fff;border-color:#faad14}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper-focused{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-input-number-affix-wrapper-status-warning .ant-input-number-prefix{color:#faad14}.ant-input-number-group-wrapper-status-error .ant-input-number-group-addon{color:#ff4d4f;border-color:#ff4d4f}.ant-input-number-group-wrapper-status-warning .ant-input-number-group-addon{color:#faad14;border-color:#faad14}.ant-input-number{box-sizing:border-box;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;width:100%;min-width:0;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;transition:all .3s;display:inline-block;width:90px;margin:0;padding:0;border:1px solid #d9d9d9;border-radius:2px}.ant-input-number::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-input-number:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-input-number::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input-number:-moz-placeholder{text-overflow:ellipsis}.ant-input-number:-ms-input-placeholder{text-overflow:ellipsis}.ant-input-number:placeholder-shown{text-overflow:ellipsis}.ant-input-number:focus,.ant-input-number-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-input-number[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-number[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-number-borderless,.ant-input-number-borderless:hover,.ant-input-number-borderless:focus,.ant-input-number-borderless-focused,.ant-input-number-borderless-disabled,.ant-input-number-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-input-number{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-input-number-lg{padding:6.5px 11px;font-size:16px}.ant-input-number-sm{padding:0 7px}.ant-input-number-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:table;width:100%;border-collapse:separate;border-spacing:0}.ant-input-number-group[class*=col-]{float:none;padding-right:0;padding-left:0}.ant-input-number-group>[class*=col-]{padding-right:8px}.ant-input-number-group>[class*=col-]:last-child{padding-right:0}.ant-input-number-group-addon,.ant-input-number-group-wrap,.ant-input-number-group>.ant-input-number{display:table-cell}.ant-input-number-group-addon:not(:first-child):not(:last-child),.ant-input-number-group-wrap:not(:first-child):not(:last-child),.ant-input-number-group>.ant-input-number:not(:first-child):not(:last-child){border-radius:0}.ant-input-number-group-addon,.ant-input-number-group-wrap{width:1px;white-space:nowrap;vertical-align:middle}.ant-input-number-group-wrap>*{display:block!important}.ant-input-number-group .ant-input-number{float:left;width:100%;margin-bottom:0;text-align:inherit}.ant-input-number-group .ant-input-number:focus{z-index:1;border-right-width:1px}.ant-input-number-group .ant-input-number:hover{z-index:1;border-right-width:1px}.ant-input-search-with-button .ant-input-number-group .ant-input-number:hover{z-index:0}.ant-input-number-group-addon{position:relative;padding:0 11px;color:#000000d9;font-weight:400;font-size:14px;text-align:center;background-color:#fafafa;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s}.ant-input-number-group-addon .ant-select{margin:-5px -11px}.ant-input-number-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{background-color:inherit;border:1px solid transparent;box-shadow:none}.ant-input-number-group-addon .ant-select-open .ant-select-selector,.ant-input-number-group-addon .ant-select-focused .ant-select-selector{color:#1890ff}.ant-input-number-group-addon .ant-cascader-picker{margin:-9px -12px;background-color:transparent}.ant-input-number-group-addon .ant-cascader-picker .ant-cascader-input{text-align:left;border:0;box-shadow:none}.ant-input-number-group>.ant-input-number:first-child,.ant-input-number-group-addon:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-number-group>.ant-input-number:first-child .ant-select .ant-select-selector,.ant-input-number-group-addon:first-child .ant-select .ant-select-selector{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-number-group>.ant-input-number-affix-wrapper:not(:first-child) .ant-input-number{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-group>.ant-input-number-affix-wrapper:not(:last-child) .ant-input-number{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-number-group-addon:first-child{border-right:0}.ant-input-number-group-addon:last-child{border-left:0}.ant-input-number-group>.ant-input-number:last-child,.ant-input-number-group-addon:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-group>.ant-input-number:last-child .ant-select .ant-select-selector,.ant-input-number-group-addon:last-child .ant-select .ant-select-selector{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-group-lg .ant-input-number,.ant-input-number-group-lg>.ant-input-number-group-addon{padding:6.5px 11px;font-size:16px}.ant-input-number-group-sm .ant-input-number,.ant-input-number-group-sm>.ant-input-number-group-addon{padding:0 7px}.ant-input-number-group-lg .ant-select-single .ant-select-selector{height:40px}.ant-input-number-group-sm .ant-select-single .ant-select-selector{height:24px}.ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-search .ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child){border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child),.ant-input-search .ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-group.ant-input-number-group-compact{display:block}.ant-input-number-group.ant-input-number-group-compact:before{display:table;content:""}.ant-input-number-group.ant-input-number-group-compact:after{display:table;clear:both;content:""}.ant-input-number-group.ant-input-number-group-compact-addon:not(:first-child):not(:last-child),.ant-input-number-group.ant-input-number-group-compact-wrap:not(:first-child):not(:last-child),.ant-input-number-group.ant-input-number-group-compact>.ant-input-number:not(:first-child):not(:last-child){border-right-width:1px}.ant-input-number-group.ant-input-number-group-compact-addon:not(:first-child):not(:last-child):hover,.ant-input-number-group.ant-input-number-group-compact-wrap:not(:first-child):not(:last-child):hover,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number:not(:first-child):not(:last-child):hover{z-index:1}.ant-input-number-group.ant-input-number-group-compact-addon:not(:first-child):not(:last-child):focus,.ant-input-number-group.ant-input-number-group-compact-wrap:not(:first-child):not(:last-child):focus,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number:not(:first-child):not(:last-child):focus{z-index:1}.ant-input-number-group.ant-input-number-group-compact>*{display:inline-block;float:none;vertical-align:top;border-radius:0}.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-affix-wrapper,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-number-affix-wrapper,.ant-input-number-group.ant-input-number-group-compact>.ant-picker-range{display:inline-flex}.ant-input-number-group.ant-input-number-group-compact>*:not(:last-child){margin-right:-1px;border-right-width:1px}.ant-input-number-group.ant-input-number-group-compact .ant-input-number{float:none}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input,.ant-input-number-group.ant-input-number-group-compact>.ant-input-group-wrapper .ant-input{border-right-width:1px;border-radius:0}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-input-group-wrapper .ant-input:hover{z-index:1}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-input-group-wrapper .ant-input:focus{z-index:1}.ant-input-number-group.ant-input-number-group-compact>.ant-select-focused{z-index:1}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-arrow{z-index:1}.ant-input-number-group.ant-input-number-group-compact>*:first-child,.ant-input-number-group.ant-input-number-group-compact>.ant-select:first-child>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete:first-child .ant-input,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker:first-child .ant-input{border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-input-number-group.ant-input-number-group-compact>*:last-child,.ant-input-number-group.ant-input-number-group-compact>.ant-select:last-child>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker:last-child .ant-input,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker-focused:last-child .ant-input{border-right-width:1px;border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input{vertical-align:top}.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper{margin-left:-1px}.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper .ant-input-affix-wrapper{border-radius:0}.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input-group-addon>.ant-input-search-button{border-radius:0}.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input{border-radius:2px 0 0 2px}.ant-input-number-group>.ant-input-number-rtl:first-child{border-radius:0 2px 2px 0}.ant-input-number-group>.ant-input-number-rtl:last-child{border-radius:2px 0 0 2px}.ant-input-number-group-rtl .ant-input-number-group-addon:first-child{border-right:1px solid #d9d9d9;border-left:0;border-radius:0 2px 2px 0}.ant-input-number-group-rtl .ant-input-number-group-addon:last-child{border-right:0;border-left:1px solid #d9d9d9;border-radius:2px 0 0 2px}.ant-input-number-group-wrapper{display:inline-block;text-align:start;vertical-align:top}.ant-input-number-handler{position:relative;display:block;width:100%;height:50%;overflow:hidden;color:#00000073;font-weight:700;line-height:0;text-align:center;border-left:1px solid #d9d9d9;transition:all .1s linear}.ant-input-number-handler:active{background:#f4f4f4}.ant-input-number-handler:hover .ant-input-number-handler-up-inner,.ant-input-number-handler:hover .ant-input-number-handler-down-inner{color:#40a9ff}.ant-input-number-handler-up-inner,.ant-input-number-handler-down-inner{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;right:4px;width:12px;height:12px;color:#00000073;line-height:12px;transition:all .1s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input-number-handler-up-inner>*,.ant-input-number-handler-down-inner>*{line-height:1}.ant-input-number-handler-up-inner svg,.ant-input-number-handler-down-inner svg{display:inline-block}.ant-input-number-handler-up-inner:before,.ant-input-number-handler-down-inner:before{display:none}.ant-input-number-handler-up-inner .ant-input-number-handler-up-inner-icon,.ant-input-number-handler-up-inner .ant-input-number-handler-down-inner-icon,.ant-input-number-handler-down-inner .ant-input-number-handler-up-inner-icon,.ant-input-number-handler-down-inner .ant-input-number-handler-down-inner-icon{display:block}.ant-input-number:hover{border-color:#40a9ff;border-right-width:1px}.ant-input-number:hover+.ant-form-item-children-icon{opacity:0;transition:opacity .24s linear .24s}.ant-input-number-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-input-number-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-number-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-number-disabled .ant-input-number-input{cursor:not-allowed}.ant-input-number-disabled .ant-input-number-handler-wrap,.ant-input-number-readonly .ant-input-number-handler-wrap{display:none}.ant-input-number-input{width:100%;height:30px;padding:0 11px;text-align:left;background-color:transparent;border:0;border-radius:2px;outline:0;transition:all .3s linear;-webkit-appearance:textfield!important;-moz-appearance:textfield!important;appearance:textfield!important}.ant-input-number-input::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-input-number-input:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-input-number-input::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input-number-input:-moz-placeholder{text-overflow:ellipsis}.ant-input-number-input:-ms-input-placeholder{text-overflow:ellipsis}.ant-input-number-input:placeholder-shown{text-overflow:ellipsis}.ant-input-number-input[type=number]::-webkit-inner-spin-button,.ant-input-number-input[type=number]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;appearance:none}.ant-input-number-lg{padding:0;font-size:16px}.ant-input-number-lg input{height:38px}.ant-input-number-sm{padding:0}.ant-input-number-sm input{height:22px;padding:0 7px}.ant-input-number-handler-wrap{position:absolute;top:0;right:0;width:22px;height:100%;background:#fff;border-radius:0 2px 2px 0;opacity:0;transition:opacity .24s linear .1s}.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner,.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner{display:flex;align-items:center;justify-content:center;min-width:auto;margin-right:0;font-size:7px}.ant-input-number-borderless .ant-input-number-handler-wrap{border-left-width:0}.ant-input-number-handler-wrap:hover .ant-input-number-handler{height:40%}.ant-input-number:hover .ant-input-number-handler-wrap,.ant-input-number-focused .ant-input-number-handler-wrap{opacity:1}.ant-input-number-handler-up{border-top-right-radius:2px;cursor:pointer}.ant-input-number-handler-up-inner{top:50%;margin-top:-5px;text-align:center}.ant-input-number-handler-up:hover{height:60%!important}.ant-input-number-handler-down{top:0;border-top:1px solid #d9d9d9;border-bottom-right-radius:2px;cursor:pointer}.ant-input-number-handler-down-inner{top:50%;text-align:center;transform:translateY(-50%)}.ant-input-number-handler-down:hover{height:60%!important}.ant-input-number-borderless .ant-input-number-handler-down{border-top-width:0}.ant-input-number:hover:not(.ant-input-number-borderless) .ant-input-number-handler-down,.ant-input-number-focused:not(.ant-input-number-borderless) .ant-input-number-handler-down{border-top:1px solid #d9d9d9}.ant-input-number-handler-up-disabled,.ant-input-number-handler-down-disabled{cursor:not-allowed}.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner,.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner{color:#00000040}.ant-input-number-borderless{box-shadow:none}.ant-input-number-out-of-range input{color:#ff4d4f}.ant-input-number-compact-item:not(.ant-input-number-compact-last-item):not(.ant-input-number-compact-item-rtl){margin-right:-1px}.ant-input-number-compact-item:not(.ant-input-number-compact-last-item).ant-input-number-compact-item-rtl{margin-left:-1px}.ant-input-number-compact-item:hover,.ant-input-number-compact-item:focus,.ant-input-number-compact-item:active{z-index:2}.ant-input-number-compact-item.ant-input-number-focused{z-index:2}.ant-input-number-compact-item[disabled]{z-index:0}.ant-input-number-compact-item:not(.ant-input-number-compact-first-item):not(.ant-input-number-compact-last-item).ant-input-number{border-radius:0}.ant-input-number-compact-item.ant-input-number.ant-input-number-compact-first-item:not(.ant-input-number-compact-last-item):not(.ant-input-number-compact-item-rtl){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-number-compact-item.ant-input-number.ant-input-number-compact-last-item:not(.ant-input-number-compact-first-item):not(.ant-input-number-compact-item-rtl){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-compact-item.ant-input-number.ant-input-number-compact-item-rtl.ant-input-number-compact-first-item:not(.ant-input-number-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-compact-item.ant-input-number.ant-input-number-compact-item-rtl.ant-input-number-compact-last-item:not(.ant-input-number-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-number-rtl{direction:rtl}.ant-input-number-rtl .ant-input-number-handler{border-right:1px solid #d9d9d9;border-left:0}.ant-input-number-rtl .ant-input-number-handler-wrap{right:auto;left:0}.ant-input-number-rtl.ant-input-number-borderless .ant-input-number-handler-wrap{border-right-width:0}.ant-input-number-rtl .ant-input-number-handler-up{border-top-right-radius:0}.ant-input-number-rtl .ant-input-number-handler-down{border-bottom-right-radius:0}.ant-input-number-rtl .ant-input-number-input{direction:ltr;text-align:right}.ant-image{position:relative;display:inline-block}.ant-image-img{width:100%;height:auto;vertical-align:middle}.ant-image-img-placeholder{background-color:#f5f5f5;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=);background-repeat:no-repeat;background-position:center center;background-size:30%}.ant-image-mask{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;background:rgba(0,0,0,.5);cursor:pointer;opacity:0;transition:opacity .3s}.ant-image-mask-info{padding:0 4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-image-mask-info .anticon{margin-inline-end:4px}.ant-image-mask:hover{opacity:1}.ant-image-placeholder{position:absolute;top:0;right:0;bottom:0;left:0}.ant-image-preview{pointer-events:none;height:100%;text-align:center}.ant-image-preview.ant-zoom-enter,.ant-image-preview.ant-zoom-appear{transform:none;opacity:0;animation-duration:.3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-image-preview-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;height:100%;background-color:#00000073}.ant-image-preview-mask-hidden{display:none}.ant-image-preview-wrap{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;outline:0}.ant-image-preview-body{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.ant-image-preview-img{max-width:100%;max-height:100%;vertical-align:middle;transform:scaleZ(1);cursor:grab;transition:transform .3s cubic-bezier(.215,.61,.355,1) 0s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:auto}.ant-image-preview-img-wrapper{position:absolute;top:0;right:0;bottom:0;left:0;transition:transform .3s cubic-bezier(.215,.61,.355,1) 0s}.ant-image-preview-img-wrapper:before{display:inline-block;width:1px;height:50%;margin-right:-1px;content:""}.ant-image-preview-moving .ant-image-preview-img{cursor:grabbing}.ant-image-preview-moving .ant-image-preview-img-wrapper{transition-duration:0s}.ant-image-preview-wrap{z-index:1080}.ant-image-preview-operations-wrapper{position:fixed;top:0;right:0;z-index:1081;width:100%}.ant-image-preview-operations{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;font-feature-settings:"tnum","tnum";display:flex;flex-direction:row-reverse;align-items:center;color:#ffffffd9;list-style:none;background:rgba(0,0,0,.1);pointer-events:auto}.ant-image-preview-operations-operation{margin-left:12px;padding:12px;cursor:pointer;transition:all .3s}.ant-image-preview-operations-operation:hover{background:rgba(0,0,0,.2)}.ant-image-preview-operations-operation-disabled{color:#ffffff40;pointer-events:none}.ant-image-preview-operations-operation:last-of-type{margin-left:0}.ant-image-preview-operations-progress{position:absolute;left:50%;transform:translate(-50%)}.ant-image-preview-operations-icon{font-size:18px}.ant-image-preview-switch-left,.ant-image-preview-switch-right{position:fixed;top:50%;right:8px;z-index:1081;display:flex;align-items:center;justify-content:center;width:44px;height:44px;color:#ffffffd9;background:rgba(0,0,0,.1);border-radius:50%;transform:translateY(-50%);cursor:pointer;transition:all .3s;pointer-events:auto}.ant-image-preview-switch-left:hover,.ant-image-preview-switch-right:hover{background:rgba(0,0,0,.2)}.ant-image-preview-switch-left-disabled,.ant-image-preview-switch-right-disabled,.ant-image-preview-switch-left-disabled:hover,.ant-image-preview-switch-right-disabled:hover{color:#ffffff40;background:rgba(0,0,0,.1);cursor:not-allowed}.ant-image-preview-switch-left-disabled>.anticon,.ant-image-preview-switch-right-disabled>.anticon,.ant-image-preview-switch-left-disabled:hover>.anticon,.ant-image-preview-switch-right-disabled:hover>.anticon{cursor:not-allowed}.ant-image-preview-switch-left>.anticon,.ant-image-preview-switch-right>.anticon{font-size:18px}.ant-image-preview-switch-left{left:8px}.ant-image-preview-switch-right{right:8px}.ant-pro-field-index-column{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:18px;height:18px}.ant-pro-field-index-column-border{color:#fff;font-size:12px;line-height:12px;background-color:#314659;border-radius:9px}.ant-pro-field-index-column-border.top-three{background-color:#979797}.ant-progress{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block}.ant-progress-line{position:relative;width:100%;font-size:14px}.ant-progress-steps{display:inline-block}.ant-progress-steps-outer{display:flex;flex-direction:row;align-items:center}.ant-progress-steps-item{flex-shrink:0;min-width:2px;margin-right:2px;background:#f3f3f3;transition:all .3s}.ant-progress-steps-item-active{background:#1890ff}.ant-progress-small.ant-progress-line,.ant-progress-small.ant-progress-line .ant-progress-text .anticon{font-size:12px}.ant-progress-outer{display:inline-block;width:100%;margin-right:0;padding-right:0}.ant-progress-show-info .ant-progress-outer{margin-right:calc(-2em - 8px);padding-right:calc(2em + 8px)}.ant-progress-inner{position:relative;display:inline-block;width:100%;overflow:hidden;vertical-align:middle;background-color:#f5f5f5;border-radius:100px}.ant-progress-circle-trail{stroke:#f5f5f5}.ant-progress-circle-path{animation:ant-progress-appear .3s}.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#1890ff}.ant-progress-success-bg,.ant-progress-bg{position:relative;background-color:#1890ff;border-radius:100px;transition:all .4s cubic-bezier(.08,.82,.17,1) 0s}.ant-progress-success-bg{position:absolute;top:0;left:0;background-color:#52c41a}.ant-progress-text{display:inline-block;width:2em;margin-left:8px;color:#000000d9;font-size:1em;line-height:1;white-space:nowrap;text-align:left;vertical-align:middle;word-break:normal}.ant-progress-text .anticon{font-size:14px}.ant-progress-status-active .ant-progress-bg:before{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;border-radius:10px;opacity:0;animation:ant-progress-active 2.4s cubic-bezier(.23,1,.32,1) infinite;content:""}.ant-progress-status-exception .ant-progress-bg{background-color:#ff4d4f}.ant-progress-status-exception .ant-progress-text{color:#ff4d4f}.ant-progress-status-exception .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#ff4d4f}.ant-progress-status-success .ant-progress-bg{background-color:#52c41a}.ant-progress-status-success .ant-progress-text{color:#52c41a}.ant-progress-status-success .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#52c41a}.ant-progress-circle .ant-progress-inner{position:relative;line-height:1;background-color:transparent}.ant-progress-circle .ant-progress-text{position:absolute;top:50%;left:50%;width:100%;margin:0;padding:0;color:#000000d9;font-size:1em;line-height:1;white-space:normal;text-align:center;transform:translate(-50%,-50%)}.ant-progress-circle .ant-progress-text .anticon{font-size:1.16666667em}.ant-progress-circle.ant-progress-status-exception .ant-progress-text{color:#ff4d4f}.ant-progress-circle.ant-progress-status-success .ant-progress-text{color:#52c41a}@keyframes ant-progress-active{0%{transform:translate(-100%) scaleX(0);opacity:.1}20%{transform:translate(-100%) scaleX(0);opacity:.5}to{transform:translate(0) scaleX(1);opacity:0}}.ant-progress-rtl{direction:rtl}.ant-progress-rtl.ant-progress-show-info .ant-progress-outer{margin-right:0;margin-left:calc(-2em - 8px);padding-right:0;padding-left:calc(2em + 8px)}.ant-progress-rtl .ant-progress-success-bg{right:0;left:auto}.ant-progress-rtl.ant-progress-line .ant-progress-text,.ant-progress-rtl.ant-progress-steps .ant-progress-text{margin-right:8px;margin-left:0;text-align:right}.ant-radio-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block;font-size:0}.ant-radio-group .ant-badge-count{z-index:1}.ant-radio-group>.ant-badge:not(:first-child)>.ant-radio-button-wrapper{border-left:none}.ant-radio-wrapper{box-sizing:border-box;margin:0 8px 0 0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-flex;align-items:baseline;cursor:pointer}.ant-radio-wrapper-disabled{cursor:not-allowed}.ant-radio-wrapper:after{display:inline-block;width:0;overflow:hidden;content:" "}.ant-radio-wrapper.ant-radio-wrapper-in-form-item input[type=radio]{width:14px;height:14px}.ant-radio{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;top:.2em;display:inline-block;outline:none;cursor:pointer}.ant-radio-wrapper:hover .ant-radio,.ant-radio:hover .ant-radio-inner,.ant-radio-input:focus+.ant-radio-inner{border-color:#1890ff}.ant-radio-input:focus+.ant-radio-inner{box-shadow:0 0 0 3px #1890ff1f}.ant-radio-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:50%;visibility:hidden;animation:antRadioEffect .36s ease-in-out;animation-fill-mode:both;content:""}.ant-radio:hover:after,.ant-radio-wrapper:hover .ant-radio:after{visibility:visible}.ant-radio-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;background-color:#fff;border-color:#d9d9d9;border-style:solid;border-width:1px;border-radius:50%;transition:all .3s}.ant-radio-inner:after{position:absolute;top:50%;left:50%;display:block;width:16px;height:16px;margin-top:-8px;margin-left:-8px;background-color:#1890ff;border-top:0;border-left:0;border-radius:16px;transform:scale(0);opacity:0;transition:all .3s cubic-bezier(.78,.14,.15,.86);content:" "}.ant-radio-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;cursor:pointer;opacity:0}.ant-radio.ant-radio-disabled .ant-radio-inner{border-color:#d9d9d9}.ant-radio-checked .ant-radio-inner{border-color:#1890ff}.ant-radio-checked .ant-radio-inner:after{transform:scale(.5);opacity:1;transition:all .3s cubic-bezier(.78,.14,.15,.86)}.ant-radio-disabled{cursor:not-allowed}.ant-radio-disabled .ant-radio-inner{background-color:#f5f5f5;cursor:not-allowed}.ant-radio-disabled .ant-radio-inner:after{background-color:#0003}.ant-radio-disabled .ant-radio-input{cursor:not-allowed}.ant-radio-disabled+span{color:#00000040;cursor:not-allowed}span.ant-radio+*{padding-right:8px;padding-left:8px}.ant-radio-button-wrapper{position:relative;display:inline-block;height:32px;margin:0;padding:0 15px;color:#000000d9;font-size:14px;line-height:30px;background:#fff;border:1px solid #d9d9d9;border-top-width:1.02px;border-left-width:0;cursor:pointer;transition:color .3s,background .3s,border-color .3s,box-shadow .3s}.ant-radio-button-wrapper a{color:#000000d9}.ant-radio-button-wrapper>.ant-radio-button{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%}.ant-radio-group-large .ant-radio-button-wrapper{height:40px;font-size:16px;line-height:38px}.ant-radio-group-small .ant-radio-button-wrapper{height:24px;padding:0 7px;line-height:22px}.ant-radio-button-wrapper:not(:first-child):before{position:absolute;top:-1px;left:-1px;display:block;box-sizing:content-box;width:1px;height:100%;padding:1px 0;background-color:#d9d9d9;transition:background-color .3s;content:""}.ant-radio-button-wrapper:first-child{border-left:1px solid #d9d9d9;border-radius:2px 0 0 2px}.ant-radio-button-wrapper:last-child{border-radius:0 2px 2px 0}.ant-radio-button-wrapper:first-child:last-child{border-radius:2px}.ant-radio-button-wrapper:hover{position:relative;color:#1890ff}.ant-radio-button-wrapper:focus-within{box-shadow:0 0 0 3px #1890ff1f}.ant-radio-button-wrapper .ant-radio-inner,.ant-radio-button-wrapper input[type=checkbox],.ant-radio-button-wrapper input[type=radio]{width:0;height:0;opacity:0;pointer-events:none}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){z-index:1;color:#1890ff;background:#fff;border-color:#1890ff}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before{background-color:#1890ff}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#1890ff}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#40a9ff;border-color:#40a9ff}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover:before{background-color:#40a9ff}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#096dd9;border-color:#096dd9}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active:before{background-color:#096dd9}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{box-shadow:0 0 0 3px #1890ff1f}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#fff;background:#1890ff;border-color:#1890ff}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#fff;background:#40a9ff;border-color:#40a9ff}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#fff;background:#096dd9;border-color:#096dd9}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{box-shadow:0 0 0 3px #1890ff1f}.ant-radio-button-wrapper-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}.ant-radio-button-wrapper-disabled:first-child,.ant-radio-button-wrapper-disabled:hover{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9}.ant-radio-button-wrapper-disabled:first-child{border-left-color:#d9d9d9}.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked{color:#00000040;background-color:#e6e6e6;border-color:#d9d9d9;box-shadow:none}@keyframes antRadioEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}.ant-radio-group.ant-radio-group-rtl{direction:rtl}.ant-radio-wrapper.ant-radio-wrapper-rtl{margin-right:0;margin-left:8px;direction:rtl}.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl{border-right-width:0;border-left-width:1px}.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:not(:first-child):before{right:-1px;left:0}.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:first-child{border-right:1px solid #d9d9d9;border-radius:0 2px 2px 0}.ant-radio-button-wrapper-checked:not([class*=" ant-radio-button-wrapper-disabled"]).ant-radio-button-wrapper:first-child{border-right-color:#40a9ff}.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:last-child{border-radius:2px 0 0 2px}.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper-disabled:first-child{border-right-color:#d9d9d9}.ant-pro-field-radio-vertical .ant-radio-wrapper{display:block;margin-right:0}.ant-rate{box-sizing:border-box;color:#000000d9;font-variant:tabular-nums;line-height:1.5715;font-feature-settings:"tnum","tnum";display:inline-block;margin:0;padding:0;color:#fadb14;font-size:20px;line-height:unset;list-style:none;outline:none}.ant-rate-disabled .ant-rate-star{cursor:default}.ant-rate-disabled .ant-rate-star>div:hover{transform:scale(1)}.ant-rate-star{position:relative;display:inline-block;color:inherit;cursor:pointer}.ant-rate-star:not(:last-child){margin-right:8px}.ant-rate-star>div{transition:all .3s,outline 0s}.ant-rate-star>div:hover{transform:scale(1.1)}.ant-rate-star>div:focus{outline:0}.ant-rate-star>div:focus-visible{outline:1px dashed #fadb14;transform:scale(1.1)}.ant-rate-star-first,.ant-rate-star-second{color:#f0f0f0;transition:all .3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-rate-star-first .anticon,.ant-rate-star-second .anticon{vertical-align:middle}.ant-rate-star-first{position:absolute;top:0;left:0;width:50%;height:100%;overflow:hidden;opacity:0}.ant-rate-star-half .ant-rate-star-first,.ant-rate-star-half .ant-rate-star-second{opacity:1}.ant-rate-star-half .ant-rate-star-first,.ant-rate-star-full .ant-rate-star-second{color:inherit}.ant-rate-text{display:inline-block;margin:0 8px;font-size:14px}.ant-rate-rtl{direction:rtl}.ant-rate-rtl .ant-rate-star:not(:last-child){margin-right:0;margin-left:8px}.ant-rate-rtl .ant-rate-star-first{right:0;left:auto}.ant-slider{box-sizing:border-box;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;height:12px;margin:10px 6px;padding:4px 0;cursor:pointer;touch-action:none}.ant-slider-vertical{width:12px;height:100%;margin:6px 10px;padding:0 4px}.ant-slider-vertical .ant-slider-rail{width:4px;height:100%}.ant-slider-vertical .ant-slider-track{width:4px}.ant-slider-vertical .ant-slider-handle{margin-top:-6px;margin-left:-5px}.ant-slider-vertical .ant-slider-mark{top:0;left:12px;width:18px;height:100%}.ant-slider-vertical .ant-slider-mark-text{left:4px;white-space:nowrap}.ant-slider-vertical .ant-slider-step{width:4px;height:100%}.ant-slider-vertical .ant-slider-dot{top:auto;margin-left:-2px}.ant-slider-tooltip .ant-tooltip-inner{min-width:unset}.ant-slider-rtl.ant-slider-vertical .ant-slider-handle{margin-right:-5px;margin-left:0}.ant-slider-rtl.ant-slider-vertical .ant-slider-mark{right:12px;left:auto}.ant-slider-rtl.ant-slider-vertical .ant-slider-mark-text{right:4px;left:auto}.ant-slider-rtl.ant-slider-vertical .ant-slider-dot{right:2px;left:auto}.ant-slider-with-marks{margin-bottom:28px}.ant-slider-rail{position:absolute;width:100%;height:4px;background-color:#f5f5f5;border-radius:2px;transition:background-color .3s}.ant-slider-track{position:absolute;height:4px;background-color:#91d5ff;border-radius:2px;transition:background-color .3s}.ant-slider-handle{position:absolute;width:14px;height:14px;margin-top:-5px;background-color:#fff;border:solid 2px #91d5ff;border-radius:50%;box-shadow:0;cursor:pointer;transition:border-color .3s,box-shadow .6s,transform .3s cubic-bezier(.18,.89,.32,1.28)}.ant-slider-handle-dragging{z-index:1}.ant-slider-handle:focus{border-color:#46a6ff;outline:none;box-shadow:0 0 0 5px #1890ff1f}.ant-slider-handle.ant-tooltip-open{border-color:#1890ff}.ant-slider-handle:after{position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;content:""}.ant-slider:hover .ant-slider-rail{background-color:#e1e1e1}.ant-slider:hover .ant-slider-track{background-color:#69c0ff}.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open){border-color:#69c0ff}.ant-slider-mark{position:absolute;top:14px;left:0;width:100%;font-size:14px}.ant-slider-mark-text{position:absolute;display:inline-block;color:#00000073;text-align:center;word-break:keep-all;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-slider-mark-text-active{color:#000000d9}.ant-slider-step{position:absolute;width:100%;height:4px;background:transparent;pointer-events:none}.ant-slider-dot{position:absolute;top:-2px;width:8px;height:8px;background-color:#fff;border:2px solid #f0f0f0;border-radius:50%;cursor:pointer}.ant-slider-dot-active{border-color:#8cc8ff}.ant-slider-disabled{cursor:not-allowed}.ant-slider-disabled .ant-slider-rail{background-color:#f5f5f5!important}.ant-slider-disabled .ant-slider-track{background-color:#00000040!important}.ant-slider-disabled .ant-slider-handle,.ant-slider-disabled .ant-slider-dot{background-color:#fff;border-color:#00000040!important;box-shadow:none;cursor:not-allowed}.ant-slider-disabled .ant-slider-mark-text,.ant-slider-disabled .ant-slider-dot{cursor:not-allowed!important}.ant-slider-rtl{direction:rtl}.ant-slider-rtl .ant-slider-mark{right:0;left:auto}.ant-switch{margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-block;box-sizing:border-box;min-width:44px;height:22px;line-height:22px;vertical-align:middle;background-color:#00000040;border:0;border-radius:100px;cursor:pointer;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-switch:focus{outline:0;box-shadow:0 0 0 2px #0000001a}.ant-switch-checked:focus{box-shadow:0 0 0 2px #e6f7ff}.ant-switch:focus:hover{box-shadow:none}.ant-switch-checked{background-color:#1890ff}.ant-switch-loading,.ant-switch-disabled{cursor:not-allowed;opacity:.4}.ant-switch-loading *,.ant-switch-disabled *{box-shadow:none;cursor:not-allowed}.ant-switch-inner{display:block;margin:0 7px 0 25px;color:#fff;font-size:12px;transition:margin .2s}.ant-switch-checked .ant-switch-inner{margin:0 25px 0 7px}.ant-switch-handle{position:absolute;top:2px;left:2px;width:18px;height:18px;transition:all .2s ease-in-out}.ant-switch-handle:before{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#fff;border-radius:9px;box-shadow:0 2px 4px #00230b33;transition:all .2s ease-in-out;content:""}.ant-switch-checked .ant-switch-handle{left:calc(100% - 20px)}.ant-switch:not(.ant-switch-disabled):active .ant-switch-handle:before{right:-30%;left:0}.ant-switch:not(.ant-switch-disabled):active.ant-switch-checked .ant-switch-handle:before{right:0;left:-30%}.ant-switch-loading-icon.anticon{position:relative;top:2px;color:#000000a6;vertical-align:top}.ant-switch-checked .ant-switch-loading-icon{color:#1890ff}.ant-switch-small{min-width:28px;height:16px;line-height:16px}.ant-switch-small .ant-switch-inner{margin:0 5px 0 18px;font-size:12px}.ant-switch-small .ant-switch-handle{width:12px;height:12px}.ant-switch-small .ant-switch-loading-icon{top:1.5px;font-size:9px}.ant-switch-small.ant-switch-checked .ant-switch-inner{margin:0 18px 0 5px}.ant-switch-small.ant-switch-checked .ant-switch-handle{left:calc(100% - 14px)}.ant-switch-rtl{direction:rtl}.ant-switch-rtl .ant-switch-inner{margin:0 25px 0 7px}.ant-switch-rtl .ant-switch-handle{right:2px;left:auto}.ant-switch-rtl:not(.ant-switch-rtl-disabled):active .ant-switch-handle:before{right:0;left:-30%}.ant-switch-rtl:not(.ant-switch-rtl-disabled):active.ant-switch-checked .ant-switch-handle:before{right:-30%;left:0}.ant-switch-rtl.ant-switch-checked .ant-switch-inner{margin:0 7px 0 25px}.ant-switch-rtl.ant-switch-checked .ant-switch-handle{right:calc(100% - 20px)}.ant-switch-rtl.ant-switch-small.ant-switch-checked .ant-switch-handle{right:calc(100% - 14px)}.ant-select-tree-checkbox{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;top:.2em;line-height:1;white-space:nowrap;outline:none;cursor:pointer}.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner,.ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner,.ant-select-tree-checkbox-input:focus+.ant-select-tree-checkbox-inner{border-color:#1890ff}.ant-select-tree-checkbox-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:2px;visibility:hidden;animation:antCheckboxEffect .36s ease-in-out;animation-fill-mode:backwards;content:""}.ant-select-tree-checkbox:hover:after,.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox:after{visibility:visible}.ant-select-tree-checkbox-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;direction:ltr;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;border-collapse:separate;transition:all .3s}.ant-select-tree-checkbox-inner:after{position:absolute;top:50%;left:21.5%;display:table;width:5.71428571px;height:9.14285714px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;content:" "}.ant-select-tree-checkbox-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;cursor:pointer;opacity:0}.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after{position:absolute;display:table;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1) translate(-50%,-50%);opacity:1;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;content:" "}.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner{background-color:#1890ff;border-color:#1890ff}.ant-select-tree-checkbox-disabled{cursor:not-allowed}.ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after{border-color:#00000040;animation-name:none}.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-input{cursor:not-allowed;pointer-events:none}.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9!important}.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after{border-color:#f5f5f5;border-collapse:separate;animation-name:none}.ant-select-tree-checkbox-disabled+span{color:#00000040;cursor:not-allowed}.ant-select-tree-checkbox-disabled:hover:after,.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-disabled:after{visibility:hidden}.ant-select-tree-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-flex;align-items:baseline;line-height:unset;cursor:pointer}.ant-select-tree-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:" "}.ant-select-tree-checkbox-wrapper.ant-select-tree-checkbox-wrapper-disabled{cursor:not-allowed}.ant-select-tree-checkbox-wrapper+.ant-select-tree-checkbox-wrapper{margin-left:8px}.ant-select-tree-checkbox-wrapper.ant-select-tree-checkbox-wrapper-in-form-item input[type=checkbox]{width:14px;height:14px}.ant-select-tree-checkbox+span{padding-right:8px;padding-left:8px}.ant-select-tree-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block}.ant-select-tree-checkbox-group-item{margin-right:8px}.ant-select-tree-checkbox-group-item:last-child{margin-right:0}.ant-select-tree-checkbox-group-item+.ant-select-tree-checkbox-group-item{margin-left:0}.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner{background-color:#fff;border-color:#d9d9d9}.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner:after{top:50%;left:50%;width:8px;height:8px;background-color:#1890ff;border:0;transform:translate(-50%,-50%) scale(1);opacity:1;content:" "}.ant-select-tree-checkbox-indeterminate.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after{background-color:#00000040;border-color:#00000040}.ant-tree-select-dropdown{padding:8px 4px}.ant-tree-select-dropdown-rtl{direction:rtl}.ant-tree-select-dropdown .ant-select-tree{border-radius:0}.ant-tree-select-dropdown .ant-select-tree-list-holder-inner{align-items:stretch}.ant-tree-select-dropdown .ant-select-tree-list-holder-inner .ant-select-tree-treenode .ant-select-tree-node-content-wrapper{flex:auto}.ant-select-tree{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";background:#fff;border-radius:2px;transition:background-color .3s}.ant-select-tree-focused:not(:hover):not(.ant-select-tree-active-focused){background:#e6f7ff}.ant-select-tree-list-holder-inner{align-items:flex-start}.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner{align-items:stretch}.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-node-content-wrapper{flex:auto}.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-treenode.dragging{position:relative}.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-treenode.dragging:after{position:absolute;top:0;right:0;bottom:4px;left:0;border:1px solid #1890ff;opacity:0;animation:ant-tree-node-fx-do-not-use .3s;animation-play-state:running;animation-fill-mode:forwards;content:"";pointer-events:none}.ant-select-tree .ant-select-tree-treenode{display:flex;align-items:flex-start;padding:0 0 4px;outline:none}.ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper{color:#00000040;cursor:not-allowed}.ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper:hover{background:transparent}.ant-select-tree .ant-select-tree-treenode-active .ant-select-tree-node-content-wrapper{background:#f5f5f5}.ant-select-tree .ant-select-tree-treenode:not(.ant-select-tree .ant-select-tree-treenode-disabled).filter-node .ant-select-tree-title{color:inherit;font-weight:500}.ant-select-tree .ant-select-tree-treenode-draggable .ant-select-tree-draggable-icon{width:24px;line-height:24px;text-align:center;visibility:visible;opacity:.2;transition:opacity .3s}.ant-select-tree-treenode:hover .ant-select-tree .ant-select-tree-treenode-draggable .ant-select-tree-draggable-icon{opacity:.45}.ant-select-tree .ant-select-tree-treenode-draggable.ant-select-tree-treenode-disabled .ant-select-tree-draggable-icon{visibility:hidden}.ant-select-tree-indent{align-self:stretch;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-tree-indent-unit{display:inline-block;width:24px}.ant-select-tree-draggable-icon{visibility:hidden}.ant-select-tree-switcher{position:relative;flex:none;align-self:stretch;width:24px;margin:0;line-height:24px;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-tree-switcher .ant-tree-switcher-icon,.ant-select-tree-switcher .ant-select-tree-switcher-icon{display:inline-block;font-size:10px;vertical-align:baseline}.ant-select-tree-switcher .ant-tree-switcher-icon svg,.ant-select-tree-switcher .ant-select-tree-switcher-icon svg{transition:transform .3s}.ant-select-tree-switcher-noop{cursor:default}.ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg{transform:rotate(-90deg)}.ant-select-tree-switcher-loading-icon{color:#1890ff}.ant-select-tree-switcher-leaf-line{position:relative;z-index:1;display:inline-block;width:100%;height:100%}.ant-select-tree-switcher-leaf-line:before{position:absolute;top:0;right:12px;bottom:-4px;margin-left:-1px;border-right:1px solid #d9d9d9;content:" "}.ant-select-tree-switcher-leaf-line:after{position:absolute;width:10px;height:14px;border-bottom:1px solid #d9d9d9;content:" "}.ant-select-tree-checkbox{top:initial;margin:4px 8px 0 0}.ant-select-tree .ant-select-tree-node-content-wrapper{position:relative;z-index:auto;min-height:24px;margin:0;padding:0 4px;color:inherit;line-height:24px;background:transparent;border-radius:2px;cursor:pointer;transition:all .3s,border 0s,line-height 0s,box-shadow 0s}.ant-select-tree .ant-select-tree-node-content-wrapper:hover{background-color:#f5f5f5}.ant-select-tree .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected{background-color:#bae7ff}.ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle{display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;vertical-align:top}.ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle:empty{display:none}.ant-select-tree-unselectable .ant-select-tree-node-content-wrapper:hover{background-color:transparent}.ant-select-tree-node-content-wrapper{line-height:24px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-tree-node-content-wrapper .ant-tree-drop-indicator{position:absolute;z-index:1;height:2px;background-color:#1890ff;border-radius:1px;pointer-events:none}.ant-select-tree-node-content-wrapper .ant-tree-drop-indicator:after{position:absolute;top:-3px;left:-6px;width:8px;height:8px;background-color:transparent;border:2px solid #1890ff;border-radius:50%;content:""}.ant-select-tree .ant-select-tree-treenode.drop-container>[draggable]{box-shadow:0 0 0 2px #1890ff}.ant-select-tree-show-line .ant-select-tree-indent-unit{position:relative;height:100%}.ant-select-tree-show-line .ant-select-tree-indent-unit:before{position:absolute;top:0;right:12px;bottom:-4px;border-right:1px solid #d9d9d9;content:""}.ant-select-tree-show-line .ant-select-tree-indent-unit-end:before{display:none}.ant-select-tree-show-line .ant-select-tree-switcher{background:#fff}.ant-select-tree-show-line .ant-select-tree-switcher-line-icon{vertical-align:-.15em}.ant-select-tree .ant-select-tree-treenode-leaf-last .ant-select-tree-switcher-leaf-line:before{top:auto!important;bottom:auto!important;height:14px!important}.ant-tree-select-dropdown-rtl .ant-select-tree .ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg{transform:rotate(90deg)}.ant-tree-select-dropdown-rtl .ant-select-tree .ant-select-tree-switcher-loading-icon{transform:scaleY(-1)}.ant-table.ant-table-middle{font-size:14px}.ant-table.ant-table-middle .ant-table-title,.ant-table.ant-table-middle .ant-table-footer,.ant-table.ant-table-middle .ant-table-thead>tr>th,.ant-table.ant-table-middle .ant-table-tbody>tr>td,.ant-table.ant-table-middle tfoot>tr>th,.ant-table.ant-table-middle tfoot>tr>td{padding:12px 8px}.ant-table.ant-table-middle .ant-table-filter-trigger{margin-right:-4px}.ant-table.ant-table-middle .ant-table-expanded-row-fixed{margin:-12px -8px}.ant-table.ant-table-middle .ant-table-tbody .ant-table-wrapper:only-child .ant-table{margin:-12px -8px -12px 40px}.ant-table.ant-table-middle .ant-table-selection-column{padding-inline-start:2px}.ant-table.ant-table-small{font-size:14px}.ant-table.ant-table-small .ant-table-title,.ant-table.ant-table-small .ant-table-footer,.ant-table.ant-table-small .ant-table-thead>tr>th,.ant-table.ant-table-small .ant-table-tbody>tr>td,.ant-table.ant-table-small tfoot>tr>th,.ant-table.ant-table-small tfoot>tr>td{padding:8px}.ant-table.ant-table-small .ant-table-filter-trigger{margin-right:-4px}.ant-table.ant-table-small .ant-table-expanded-row-fixed{margin:-8px}.ant-table.ant-table-small .ant-table-tbody .ant-table-wrapper:only-child .ant-table{margin:-8px -8px -8px 40px}.ant-table.ant-table-small .ant-table-selection-column{padding-inline-start:2px}.ant-table.ant-table-bordered>.ant-table-title{border:1px solid #f0f0f0;border-bottom:0}.ant-table.ant-table-bordered>.ant-table-container{border-left:1px solid #f0f0f0}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>thead>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>thead>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>thead>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>thead>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tbody>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tbody>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tbody>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tbody>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tfoot>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tfoot>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tfoot>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tfoot>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tfoot>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tfoot>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tfoot>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tfoot>tr>td{border-right:1px solid #f0f0f0}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>thead>tr:not(:last-child)>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>thead>tr:not(:last-child)>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>thead>tr:not(:last-child)>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>thead>tr:not(:last-child)>th{border-bottom:1px solid #f0f0f0}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>thead>tr>th:before,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>thead>tr>th:before,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>thead>tr>th:before,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>thead>tr>th:before{background-color:transparent!important}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>thead>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>thead>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>thead>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>thead>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tbody>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tbody>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tbody>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tbody>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tfoot>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tfoot>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tfoot>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tfoot>tr>.ant-table-cell-fix-right-first:after{border-right:1px solid #f0f0f0}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tbody>tr>td>.ant-table-expanded-row-fixed,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tbody>tr>td>.ant-table-expanded-row-fixed,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tbody>tr>td>.ant-table-expanded-row-fixed,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tbody>tr>td>.ant-table-expanded-row-fixed{margin:-16px -17px}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tbody>tr>td>.ant-table-expanded-row-fixed:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tbody>tr>td>.ant-table-expanded-row-fixed:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tbody>tr>td>.ant-table-expanded-row-fixed:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tbody>tr>td>.ant-table-expanded-row-fixed:after{position:absolute;top:0;right:1px;bottom:0;border-right:1px solid #f0f0f0;content:""}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table{border-top:1px solid #f0f0f0}.ant-table.ant-table-bordered.ant-table-scroll-horizontal>.ant-table-container>.ant-table-body>table>tbody>tr.ant-table-expanded-row>td,.ant-table.ant-table-bordered.ant-table-scroll-horizontal>.ant-table-container>.ant-table-body>table>tbody>tr.ant-table-placeholder>td{border-right:0}.ant-table.ant-table-bordered.ant-table-middle>.ant-table-container>.ant-table-content>table>tbody>tr>td>.ant-table-expanded-row-fixed,.ant-table.ant-table-bordered.ant-table-middle>.ant-table-container>.ant-table-body>table>tbody>tr>td>.ant-table-expanded-row-fixed{margin:-12px -9px}.ant-table.ant-table-bordered.ant-table-small>.ant-table-container>.ant-table-content>table>tbody>tr>td>.ant-table-expanded-row-fixed,.ant-table.ant-table-bordered.ant-table-small>.ant-table-container>.ant-table-body>table>tbody>tr>td>.ant-table-expanded-row-fixed{margin:-8px -9px}.ant-table.ant-table-bordered>.ant-table-footer{border:1px solid #f0f0f0;border-top:0}.ant-table-cell .ant-table-container:first-child{border-top:0}.ant-table-cell-scrollbar:not([rowspan]){box-shadow:0 1px 0 1px #fafafa}.ant-table-wrapper{clear:both;max-width:100%}.ant-table-wrapper:before{display:table;content:""}.ant-table-wrapper:after{display:table;clear:both;content:""}.ant-table{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;font-size:14px;background:#fff;border-radius:2px}.ant-table table{width:100%;text-align:left;border-radius:2px 2px 0 0;border-collapse:separate;border-spacing:0}.ant-table-thead>tr>th,.ant-table-tbody>tr>td,.ant-table tfoot>tr>th,.ant-table tfoot>tr>td{position:relative;padding:16px;overflow-wrap:break-word}.ant-table-cell-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.ant-table-cell-ellipsis.ant-table-cell-fix-left-last,.ant-table-cell-ellipsis.ant-table-cell-fix-right-first{overflow:visible}.ant-table-cell-ellipsis.ant-table-cell-fix-left-last .ant-table-cell-content,.ant-table-cell-ellipsis.ant-table-cell-fix-right-first .ant-table-cell-content{display:block;overflow:hidden;text-overflow:ellipsis}.ant-table-cell-ellipsis .ant-table-column-title{overflow:hidden;text-overflow:ellipsis;word-break:keep-all}.ant-table-title{padding:16px}.ant-table-footer{padding:16px;color:#000000d9;background:#fafafa}.ant-table-thead>tr>th{position:relative;color:#000000d9;font-weight:500;text-align:left;background:#fafafa;border-bottom:1px solid #f0f0f0;transition:background .3s ease}.ant-table-thead>tr>th[colspan]:not([colspan="1"]){text-align:center}.ant-table-thead>tr>th:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]):before{position:absolute;top:50%;right:0;width:1px;height:1.6em;background-color:#0000000f;transform:translateY(-50%);transition:background-color .3s;content:""}.ant-table-thead>tr:not(:last-child)>th[colspan]{border-bottom:0}.ant-table-tbody>tr>td{border-bottom:1px solid #f0f0f0;transition:background .3s}.ant-table-tbody>tr>td>.ant-table-wrapper:only-child .ant-table,.ant-table-tbody>tr>td>.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table{margin:-16px -16px -16px 32px}.ant-table-tbody>tr>td>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td,.ant-table-tbody>tr>td>.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td{border-bottom:0}.ant-table-tbody>tr>td>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td:first-child,.ant-table-tbody>tr>td>.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td:first-child,.ant-table-tbody>tr>td>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td:last-child,.ant-table-tbody>tr>td>.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td:last-child{border-radius:0}.ant-table-tbody>tr.ant-table-row:hover>td,.ant-table-tbody>tr>td.ant-table-cell-row-hover{background:#fafafa}.ant-table-tbody>tr.ant-table-row-selected>td{background:#e6f7ff;border-color:#00000008}.ant-table-tbody>tr.ant-table-row-selected:hover>td{background:#dcf4ff}.ant-table-summary{position:relative;z-index:2;background:#fff}div.ant-table-summary{box-shadow:0 -1px #f0f0f0}.ant-table-summary>tr>th,.ant-table-summary>tr>td{border-bottom:1px solid #f0f0f0}.ant-table-pagination.ant-pagination{margin:16px 0}.ant-table-pagination{display:flex;flex-wrap:wrap;row-gap:8px}.ant-table-pagination>*{flex:none}.ant-table-pagination-left{justify-content:flex-start}.ant-table-pagination-center{justify-content:center}.ant-table-pagination-right{justify-content:flex-end}.ant-table-thead th.ant-table-column-has-sorters{outline:none;cursor:pointer;transition:all .3s}.ant-table-thead th.ant-table-column-has-sorters:hover{background:rgba(0,0,0,.04)}.ant-table-thead th.ant-table-column-has-sorters:hover:before{background-color:transparent!important}.ant-table-thead th.ant-table-column-has-sorters:focus-visible{color:#1890ff}.ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-left:hover,.ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-right:hover,.ant-table-thead th.ant-table-column-sort{background:#f5f5f5}.ant-table-thead th.ant-table-column-sort:before{background-color:transparent!important}td.ant-table-column-sort{background:#fafafa}.ant-table-column-title{position:relative;z-index:1;flex:1}.ant-table-column-sorters{display:flex;flex:auto;align-items:center;justify-content:space-between}.ant-table-column-sorters:after{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;content:""}.ant-table-column-sorter{margin-left:4px;color:#bfbfbf;font-size:0;transition:color .3s}.ant-table-column-sorter-inner{display:inline-flex;flex-direction:column;align-items:center}.ant-table-column-sorter-up,.ant-table-column-sorter-down{font-size:11px}.ant-table-column-sorter-up.active,.ant-table-column-sorter-down.active{color:#1890ff}.ant-table-column-sorter-up+.ant-table-column-sorter-down{margin-top:-.3em}.ant-table-column-sorters:hover .ant-table-column-sorter{color:#a6a6a6}.ant-table-filter-column{display:flex;justify-content:space-between}.ant-table-filter-trigger{position:relative;display:flex;align-items:center;margin:-4px -8px -4px 4px;padding:0 4px;color:#bfbfbf;font-size:12px;border-radius:2px;cursor:pointer;transition:all .3s}.ant-table-filter-trigger:hover{color:#00000073;background:rgba(0,0,0,.04)}.ant-table-filter-trigger.active{color:#1890ff}.ant-table-filter-dropdown{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";min-width:120px;background-color:#fff;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}.ant-table-filter-dropdown .ant-dropdown-menu{max-height:264px;overflow-x:hidden;border:0;box-shadow:none}.ant-table-filter-dropdown .ant-dropdown-menu:empty:after{display:block;padding:8px 0;color:#00000040;font-size:12px;text-align:center;content:"Not Found"}.ant-table-filter-dropdown-tree{padding:8px 8px 0}.ant-table-filter-dropdown-tree .ant-tree-treenode .ant-tree-node-content-wrapper:hover{background-color:#f5f5f5}.ant-table-filter-dropdown-tree .ant-tree-treenode-checkbox-checked .ant-tree-node-content-wrapper,.ant-table-filter-dropdown-tree .ant-tree-treenode-checkbox-checked .ant-tree-node-content-wrapper:hover{background-color:#bae7ff}.ant-table-filter-dropdown-search{padding:8px;border-bottom:1px #f0f0f0 solid}.ant-table-filter-dropdown-search-input input{min-width:140px}.ant-table-filter-dropdown-search-input .anticon{color:#00000040}.ant-table-filter-dropdown-checkall{width:100%;margin-bottom:4px;margin-left:4px}.ant-table-filter-dropdown-submenu>ul{max-height:calc(100vh - 130px);overflow-x:hidden;overflow-y:auto}.ant-table-filter-dropdown .ant-checkbox-wrapper+span,.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper+span{padding-left:8px}.ant-table-filter-dropdown-btns{display:flex;justify-content:space-between;padding:7px 8px;overflow:hidden;background-color:inherit;border-top:1px solid #f0f0f0}.ant-table-selection-col{width:32px}.ant-table-bordered .ant-table-selection-col{width:50px}table tr th.ant-table-selection-column,table tr td.ant-table-selection-column{padding-right:8px;padding-left:8px;text-align:center}table tr th.ant-table-selection-column .ant-radio-wrapper,table tr td.ant-table-selection-column .ant-radio-wrapper{margin-right:0}table tr th.ant-table-selection-column.ant-table-cell-fix-left{z-index:3}table tr th.ant-table-selection-column:after{background-color:transparent!important}.ant-table-selection{position:relative;display:inline-flex;flex-direction:column}.ant-table-selection-extra{position:absolute;top:0;z-index:1;cursor:pointer;transition:all .3s;margin-inline-start:100%;padding-inline-start:4px}.ant-table-selection-extra .anticon{color:#bfbfbf;font-size:10px}.ant-table-selection-extra .anticon:hover{color:#a6a6a6}.ant-table-expand-icon-col{width:48px}.ant-table-row-expand-icon-cell{text-align:center}.ant-table-row-expand-icon-cell .ant-table-row-expand-icon{display:inline-flex;float:none;vertical-align:sub}.ant-table-row-indent{float:left;height:1px}.ant-table-row-expand-icon{color:#1890ff;outline:none;cursor:pointer;transition:color .3s;position:relative;float:left;box-sizing:border-box;width:17px;height:17px;padding:0;color:inherit;line-height:17px;background:#fff;border:1px solid #f0f0f0;border-radius:2px;transform:scale(.94117647);transition:all .3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-table-row-expand-icon:focus-visible,.ant-table-row-expand-icon:hover{color:#40a9ff}.ant-table-row-expand-icon:active{color:#096dd9}.ant-table-row-expand-icon:focus,.ant-table-row-expand-icon:hover,.ant-table-row-expand-icon:active{border-color:currentcolor}.ant-table-row-expand-icon:before,.ant-table-row-expand-icon:after{position:absolute;background:currentcolor;transition:transform .3s ease-out;content:""}.ant-table-row-expand-icon:before{top:7px;right:3px;left:3px;height:1px}.ant-table-row-expand-icon:after{top:3px;bottom:3px;left:7px;width:1px;transform:rotate(90deg)}.ant-table-row-expand-icon-collapsed:before{transform:rotate(-180deg)}.ant-table-row-expand-icon-collapsed:after{transform:rotate(0)}.ant-table-row-expand-icon-spaced{background:transparent;border:0;visibility:hidden}.ant-table-row-expand-icon-spaced:before,.ant-table-row-expand-icon-spaced:after{display:none;content:none}.ant-table-row-indent+.ant-table-row-expand-icon{margin-top:2.5005px;margin-right:8px}tr.ant-table-expanded-row>td,tr.ant-table-expanded-row:hover>td{background:#fbfbfb}tr.ant-table-expanded-row .ant-descriptions-view{display:flex}tr.ant-table-expanded-row .ant-descriptions-view table{flex:auto;width:auto}.ant-table .ant-table-expanded-row-fixed{position:relative;margin:-16px;padding:16px}.ant-table-tbody>tr.ant-table-placeholder{text-align:center}.ant-table-empty .ant-table-tbody>tr.ant-table-placeholder{color:#00000040}.ant-table-tbody>tr.ant-table-placeholder:hover>td{background:#fff}.ant-table-cell-fix-left,.ant-table-cell-fix-right{position:sticky!important;z-index:2;background:#fff}.ant-table-cell-fix-left-first:after,.ant-table-cell-fix-left-last:after{position:absolute;top:0;right:0;bottom:-1px;width:30px;transform:translate(100%);transition:box-shadow .3s;content:"";pointer-events:none}.ant-table-cell-fix-left-all:after{display:none}.ant-table-cell-fix-right-first:after,.ant-table-cell-fix-right-last:after{position:absolute;top:0;bottom:-1px;left:0;width:30px;transform:translate(-100%);transition:box-shadow .3s;content:"";pointer-events:none}.ant-table .ant-table-container:before,.ant-table .ant-table-container:after{position:absolute;top:0;bottom:0;z-index:4;width:30px;transition:box-shadow .3s;content:"";pointer-events:none}.ant-table .ant-table-container:before{left:0}.ant-table .ant-table-container:after{right:0}.ant-table-ping-left:not(.ant-table-has-fix-left)>.ant-table-container{position:relative}.ant-table-ping-left:not(.ant-table-has-fix-left)>.ant-table-container:before{box-shadow:inset 10px 0 8px -8px #00000026}.ant-table-ping-left .ant-table-cell-fix-left-first:after,.ant-table-ping-left .ant-table-cell-fix-left-last:after{box-shadow:inset 10px 0 8px -8px #00000026}.ant-table-ping-left .ant-table-cell-fix-left-last:before{background-color:transparent!important}.ant-table-ping-right:not(.ant-table-has-fix-right)>.ant-table-container{position:relative}.ant-table-ping-right:not(.ant-table-has-fix-right)>.ant-table-container:after{box-shadow:inset -10px 0 8px -8px #00000026}.ant-table-ping-right .ant-table-cell-fix-right-first:after,.ant-table-ping-right .ant-table-cell-fix-right-last:after{box-shadow:inset -10px 0 8px -8px #00000026}.ant-table-sticky-holder{position:sticky;z-index:3;background:#fff}.ant-table-sticky-scroll{position:sticky;bottom:0;z-index:3;display:flex;align-items:center;background:#ffffff;border-top:1px solid #f0f0f0;opacity:.6}.ant-table-sticky-scroll:hover{transform-origin:center bottom}.ant-table-sticky-scroll-bar{height:8px;background-color:#00000059;border-radius:4px}.ant-table-sticky-scroll-bar:hover,.ant-table-sticky-scroll-bar-active{background-color:#000c}@media all and (-ms-high-contrast: none){.ant-table-ping-left .ant-table-cell-fix-left-last:after{box-shadow:none!important}.ant-table-ping-right .ant-table-cell-fix-right-first:after{box-shadow:none!important}}.ant-table-title{border-radius:2px 2px 0 0}.ant-table-title+.ant-table-container{border-top-left-radius:0;border-top-right-radius:0}.ant-table-title+.ant-table-container table{border-radius:0}.ant-table-title+.ant-table-container table>thead>tr:first-child th:first-child{border-radius:0}.ant-table-title+.ant-table-container table>thead>tr:first-child th:last-child{border-radius:0}.ant-table-container{border-top-left-radius:2px;border-top-right-radius:2px}.ant-table-container table>thead>tr:first-child th:first-child{border-top-left-radius:2px}.ant-table-container table>thead>tr:first-child th:last-child{border-top-right-radius:2px}.ant-table-footer{border-radius:0 0 2px 2px}.ant-table-wrapper-rtl,.ant-table-rtl{direction:rtl}.ant-table-wrapper-rtl .ant-table table{text-align:right}.ant-table-wrapper-rtl .ant-table-thead>tr>th[colspan]:not([colspan="1"]){text-align:center}.ant-table-wrapper-rtl .ant-table-thead>tr>th:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]):before{right:auto;left:0}.ant-table-wrapper-rtl .ant-table-thead>tr>th{text-align:right}.ant-table-tbody>tr .ant-table-wrapper:only-child .ant-table.ant-table-rtl{margin:-16px 33px -16px -16px}.ant-table-wrapper.ant-table-wrapper-rtl .ant-table-pagination-left{justify-content:flex-end}.ant-table-wrapper.ant-table-wrapper-rtl .ant-table-pagination-right{justify-content:flex-start}.ant-table-wrapper-rtl .ant-table-column-sorter{margin-right:4px;margin-left:0}.ant-table-wrapper-rtl .ant-table-filter-column-title{padding:16px 16px 16px 2.3em}.ant-table-rtl .ant-table-thead tr th.ant-table-column-has-sorters .ant-table-filter-column-title{padding:0 0 0 2.3em}.ant-table-wrapper-rtl .ant-table-filter-trigger{margin:-4px 4px -4px -8px}.ant-dropdown-rtl .ant-table-filter-dropdown .ant-checkbox-wrapper+span,.ant-dropdown-rtl .ant-table-filter-dropdown-submenu .ant-checkbox-wrapper+span,.ant-dropdown-menu-submenu-rtl.ant-table-filter-dropdown .ant-checkbox-wrapper+span,.ant-dropdown-menu-submenu-rtl.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper+span{padding-right:8px;padding-left:0}.ant-table-wrapper-rtl .ant-table-selection{text-align:center}.ant-table-wrapper-rtl .ant-table-row-indent,.ant-table-wrapper-rtl .ant-table-row-expand-icon{float:right}.ant-table-wrapper-rtl .ant-table-row-indent+.ant-table-row-expand-icon{margin-right:0;margin-left:8px}.ant-table-wrapper-rtl .ant-table-row-expand-icon:after{transform:rotate(-90deg)}.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed:before{transform:rotate(180deg)}.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed:after{transform:rotate(0)}.ant-pagination{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum"}.ant-pagination ul,.ant-pagination ol{margin:0;padding:0;list-style:none}.ant-pagination:after{display:block;clear:both;height:0;overflow:hidden;visibility:hidden;content:" "}.ant-pagination-total-text{display:inline-block;height:32px;margin-right:8px;line-height:30px;vertical-align:middle}.ant-pagination-item{display:inline-block;min-width:32px;height:32px;margin-right:8px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:30px;text-align:center;vertical-align:middle;list-style:none;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;outline:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-pagination-item a{display:block;padding:0 6px;color:#000000d9;transition:none}.ant-pagination-item a:hover{text-decoration:none}.ant-pagination-item:hover{border-color:#1890ff;transition:all .3s}.ant-pagination-item:hover a{color:#1890ff}.ant-pagination-item:focus-visible{border-color:#1890ff;transition:all .3s}.ant-pagination-item:focus-visible a{color:#1890ff}.ant-pagination-item-active{font-weight:500;background:#fff;border-color:#1890ff}.ant-pagination-item-active a{color:#1890ff}.ant-pagination-item-active:hover{border-color:#40a9ff}.ant-pagination-item-active:focus-visible{border-color:#40a9ff}.ant-pagination-item-active:hover a{color:#40a9ff}.ant-pagination-item-active:focus-visible a{color:#40a9ff}.ant-pagination-jump-prev,.ant-pagination-jump-next{outline:0}.ant-pagination-jump-prev .ant-pagination-item-container,.ant-pagination-jump-next .ant-pagination-item-container{position:relative}.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon{color:#1890ff;font-size:12px;letter-spacing:-1px;opacity:0;transition:all .2s}.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon-svg,.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon-svg{top:0;right:0;bottom:0;left:0;margin:auto}.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis,.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis{position:absolute;top:0;right:0;bottom:0;left:0;display:block;margin:auto;color:#00000040;font-family:Arial,Helvetica,sans-serif;letter-spacing:2px;text-align:center;text-indent:.13em;opacity:1;transition:all .2s}.ant-pagination-jump-prev:hover .ant-pagination-item-link-icon,.ant-pagination-jump-next:hover .ant-pagination-item-link-icon{opacity:1}.ant-pagination-jump-prev:hover .ant-pagination-item-ellipsis,.ant-pagination-jump-next:hover .ant-pagination-item-ellipsis{opacity:0}.ant-pagination-jump-prev:focus-visible .ant-pagination-item-link-icon,.ant-pagination-jump-next:focus-visible .ant-pagination-item-link-icon{opacity:1}.ant-pagination-jump-prev:focus-visible .ant-pagination-item-ellipsis,.ant-pagination-jump-next:focus-visible .ant-pagination-item-ellipsis{opacity:0}.ant-pagination-prev,.ant-pagination-jump-prev,.ant-pagination-jump-next{margin-right:8px}.ant-pagination-prev,.ant-pagination-next,.ant-pagination-jump-prev,.ant-pagination-jump-next{display:inline-block;min-width:32px;height:32px;color:#000000d9;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:32px;text-align:center;vertical-align:middle;list-style:none;border-radius:2px;cursor:pointer;transition:all .3s}.ant-pagination-prev,.ant-pagination-next{font-family:Arial,Helvetica,sans-serif;outline:0}.ant-pagination-prev button,.ant-pagination-next button{color:#000000d9;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-pagination-prev:hover button,.ant-pagination-next:hover button{border-color:#40a9ff}.ant-pagination-prev .ant-pagination-item-link,.ant-pagination-next .ant-pagination-item-link{display:block;width:100%;height:100%;padding:0;font-size:12px;text-align:center;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;outline:none;transition:all .3s}.ant-pagination-prev:focus-visible .ant-pagination-item-link,.ant-pagination-next:focus-visible .ant-pagination-item-link{color:#1890ff;border-color:#1890ff}.ant-pagination-prev:hover .ant-pagination-item-link,.ant-pagination-next:hover .ant-pagination-item-link{color:#1890ff;border-color:#1890ff}.ant-pagination-disabled,.ant-pagination-disabled:hover{cursor:not-allowed}.ant-pagination-disabled .ant-pagination-item-link,.ant-pagination-disabled:hover .ant-pagination-item-link{color:#00000040;border-color:#d9d9d9;cursor:not-allowed}.ant-pagination-disabled:focus-visible{cursor:not-allowed}.ant-pagination-disabled:focus-visible .ant-pagination-item-link{color:#00000040;border-color:#d9d9d9;cursor:not-allowed}.ant-pagination-slash{margin:0 10px 0 5px}.ant-pagination-options{display:inline-block;margin-left:16px;vertical-align:middle}@media all and (-ms-high-contrast: none){.ant-pagination-options *::-ms-backdrop,.ant-pagination-options{vertical-align:top}}.ant-pagination-options-size-changer.ant-select{display:inline-block;width:auto}.ant-pagination-options-quick-jumper{display:inline-block;height:32px;margin-left:8px;line-height:32px;vertical-align:top}.ant-pagination-options-quick-jumper input{position:relative;display:inline-block;width:100%;min-width:0;padding:4px 11px;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s;width:50px;height:32px;margin:0 8px}.ant-pagination-options-quick-jumper input::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-pagination-options-quick-jumper input:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-pagination-options-quick-jumper input::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-pagination-options-quick-jumper input:-moz-placeholder{text-overflow:ellipsis}.ant-pagination-options-quick-jumper input:-ms-input-placeholder{text-overflow:ellipsis}.ant-pagination-options-quick-jumper input:placeholder-shown{text-overflow:ellipsis}.ant-pagination-options-quick-jumper input:hover{border-color:#40a9ff;border-right-width:1px}.ant-pagination-options-quick-jumper input:focus,.ant-pagination-options-quick-jumper input-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-pagination-options-quick-jumper input-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-pagination-options-quick-jumper input-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-pagination-options-quick-jumper input[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-pagination-options-quick-jumper input[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-pagination-options-quick-jumper input-borderless,.ant-pagination-options-quick-jumper input-borderless:hover,.ant-pagination-options-quick-jumper input-borderless:focus,.ant-pagination-options-quick-jumper input-borderless-focused,.ant-pagination-options-quick-jumper input-borderless-disabled,.ant-pagination-options-quick-jumper input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-pagination-options-quick-jumper input{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-pagination-options-quick-jumper input-lg{padding:6.5px 11px;font-size:16px}.ant-pagination-options-quick-jumper input-sm{padding:0 7px}.ant-pagination-simple .ant-pagination-prev,.ant-pagination-simple .ant-pagination-next{height:24px;line-height:24px;vertical-align:top}.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link,.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link{height:24px;background-color:transparent;border:0}.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link:after,.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link:after{height:24px;line-height:24px}.ant-pagination-simple .ant-pagination-simple-pager{display:inline-block;height:24px;margin-right:8px}.ant-pagination-simple .ant-pagination-simple-pager input{box-sizing:border-box;height:100%;margin-right:8px;padding:0 6px;text-align:center;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;outline:none;transition:border-color .3s}.ant-pagination-simple .ant-pagination-simple-pager input:hover{border-color:#1890ff}.ant-pagination-simple .ant-pagination-simple-pager input:focus{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33}.ant-pagination-simple .ant-pagination-simple-pager input[disabled]{color:#00000040;background:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}.ant-pagination.ant-pagination-mini .ant-pagination-total-text,.ant-pagination.ant-pagination-mini .ant-pagination-simple-pager{height:24px;line-height:24px}.ant-pagination.ant-pagination-mini .ant-pagination-item{min-width:24px;height:24px;margin:0;line-height:22px}.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active){background:transparent;border-color:transparent}.ant-pagination.ant-pagination-mini .ant-pagination-prev,.ant-pagination.ant-pagination-mini .ant-pagination-next{min-width:24px;height:24px;margin:0;line-height:24px}.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link,.ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link{background:transparent;border-color:transparent}.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link:after,.ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link:after{height:24px;line-height:24px}.ant-pagination.ant-pagination-mini .ant-pagination-jump-prev,.ant-pagination.ant-pagination-mini .ant-pagination-jump-next{height:24px;margin-right:0;line-height:24px}.ant-pagination.ant-pagination-mini .ant-pagination-options{margin-left:2px}.ant-pagination.ant-pagination-mini .ant-pagination-options-size-changer{top:0}.ant-pagination.ant-pagination-mini .ant-pagination-options-quick-jumper{height:24px;line-height:24px}.ant-pagination.ant-pagination-mini .ant-pagination-options-quick-jumper input{padding:0 7px;width:44px;height:24px}.ant-pagination.ant-pagination-disabled{cursor:not-allowed}.ant-pagination.ant-pagination-disabled .ant-pagination-item{background:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}.ant-pagination.ant-pagination-disabled .ant-pagination-item a{color:#00000040;background:transparent;border:none;cursor:not-allowed}.ant-pagination.ant-pagination-disabled .ant-pagination-item-active{background:#e6e6e6}.ant-pagination.ant-pagination-disabled .ant-pagination-item-active a{color:#00000040}.ant-pagination.ant-pagination-disabled .ant-pagination-item-link{color:#00000040;background:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}.ant-pagination-simple.ant-pagination.ant-pagination-disabled .ant-pagination-item-link{background:transparent}.ant-pagination.ant-pagination-disabled .ant-pagination-item-link-icon{opacity:0}.ant-pagination.ant-pagination-disabled .ant-pagination-item-ellipsis{opacity:1}.ant-pagination.ant-pagination-disabled .ant-pagination-simple-pager{color:#00000040}@media only screen and (max-width: 992px){.ant-pagination-item-after-jump-prev,.ant-pagination-item-before-jump-next{display:none}}@media only screen and (max-width: 576px){.ant-pagination-options{display:none}}.ant-pagination-rtl .ant-pagination-total-text,.ant-pagination-rtl .ant-pagination-item,.ant-pagination-rtl .ant-pagination-prev,.ant-pagination-rtl .ant-pagination-jump-prev,.ant-pagination-rtl .ant-pagination-jump-next{margin-right:0;margin-left:8px}.ant-pagination-rtl .ant-pagination-slash{margin:0 5px 0 10px}.ant-pagination-rtl .ant-pagination-options{margin-right:16px;margin-left:0}.ant-pagination-rtl .ant-pagination-options .ant-pagination-options-size-changer.ant-select{margin-right:0;margin-left:8px}.ant-pagination-rtl .ant-pagination-options .ant-pagination-options-quick-jumper{margin-left:0}.ant-pagination-rtl.ant-pagination-simple .ant-pagination-simple-pager,.ant-pagination-rtl.ant-pagination-simple .ant-pagination-simple-pager input{margin-right:0;margin-left:8px}.ant-pagination-rtl.ant-pagination.mini .ant-pagination-options{margin-right:2px;margin-left:0}@keyframes antCheckboxEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}@keyframes ant-tree-node-fx-do-not-use{0%{opacity:0}to{opacity:1}}.ant-tree.ant-tree-directory .ant-tree-treenode{position:relative}.ant-tree.ant-tree-directory .ant-tree-treenode:before{position:absolute;top:0;right:0;bottom:4px;left:0;transition:background-color .3s;content:"";pointer-events:none}.ant-tree.ant-tree-directory .ant-tree-treenode:hover:before{background:#f5f5f5}.ant-tree.ant-tree-directory .ant-tree-treenode>*{z-index:1}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-switcher{transition:color .3s}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper{border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper:hover{background:transparent}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper.ant-tree-node-selected{color:#fff;background:transparent}.ant-tree.ant-tree-directory .ant-tree-treenode-selected:hover:before,.ant-tree.ant-tree-directory .ant-tree-treenode-selected:before{background:#1890ff}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-switcher{color:#fff}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-node-content-wrapper{color:#fff;background:transparent}.ant-tree-checkbox{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;top:.2em;line-height:1;white-space:nowrap;outline:none;cursor:pointer}.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner,.ant-tree-checkbox:hover .ant-tree-checkbox-inner,.ant-tree-checkbox-input:focus+.ant-tree-checkbox-inner{border-color:#1890ff}.ant-tree-checkbox-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:2px;visibility:hidden;animation:antCheckboxEffect .36s ease-in-out;animation-fill-mode:backwards;content:""}.ant-tree-checkbox:hover:after,.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox:after{visibility:visible}.ant-tree-checkbox-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;direction:ltr;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;border-collapse:separate;transition:all .3s}.ant-tree-checkbox-inner:after{position:absolute;top:50%;left:21.5%;display:table;width:5.71428571px;height:9.14285714px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;content:" "}.ant-tree-checkbox-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;cursor:pointer;opacity:0}.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{position:absolute;display:table;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1) translate(-50%,-50%);opacity:1;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;content:" "}.ant-tree-checkbox-checked .ant-tree-checkbox-inner{background-color:#1890ff;border-color:#1890ff}.ant-tree-checkbox-disabled{cursor:not-allowed}.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{border-color:#00000040;animation-name:none}.ant-tree-checkbox-disabled .ant-tree-checkbox-input{cursor:not-allowed;pointer-events:none}.ant-tree-checkbox-disabled .ant-tree-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9!important}.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after{border-color:#f5f5f5;border-collapse:separate;animation-name:none}.ant-tree-checkbox-disabled+span{color:#00000040;cursor:not-allowed}.ant-tree-checkbox-disabled:hover:after,.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-disabled:after{visibility:hidden}.ant-tree-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-flex;align-items:baseline;line-height:unset;cursor:pointer}.ant-tree-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:" "}.ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-disabled{cursor:not-allowed}.ant-tree-checkbox-wrapper+.ant-tree-checkbox-wrapper{margin-left:8px}.ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-in-form-item input[type=checkbox]{width:14px;height:14px}.ant-tree-checkbox+span{padding-right:8px;padding-left:8px}.ant-tree-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block}.ant-tree-checkbox-group-item{margin-right:8px}.ant-tree-checkbox-group-item:last-child{margin-right:0}.ant-tree-checkbox-group-item+.ant-tree-checkbox-group-item{margin-left:0}.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner{background-color:#fff;border-color:#d9d9d9}.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after{top:50%;left:50%;width:8px;height:8px;background-color:#1890ff;border:0;transform:translate(-50%,-50%) scale(1);opacity:1;content:" "}.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after{background-color:#00000040;border-color:#00000040}.ant-tree{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";background:#fff;border-radius:2px;transition:background-color .3s}.ant-tree-focused:not(:hover):not(.ant-tree-active-focused){background:#e6f7ff}.ant-tree-list-holder-inner{align-items:flex-start}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner{align-items:stretch}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-node-content-wrapper{flex:auto}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-treenode.dragging{position:relative}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-treenode.dragging:after{position:absolute;top:0;right:0;bottom:4px;left:0;border:1px solid #1890ff;opacity:0;animation:ant-tree-node-fx-do-not-use .3s;animation-play-state:running;animation-fill-mode:forwards;content:"";pointer-events:none}.ant-tree .ant-tree-treenode{display:flex;align-items:flex-start;padding:0 0 4px;outline:none}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper{color:#00000040;cursor:not-allowed}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper:hover{background:transparent}.ant-tree .ant-tree-treenode-active .ant-tree-node-content-wrapper{background:#f5f5f5}.ant-tree .ant-tree-treenode:not(.ant-tree .ant-tree-treenode-disabled).filter-node .ant-tree-title{color:inherit;font-weight:500}.ant-tree .ant-tree-treenode-draggable .ant-tree-draggable-icon{width:24px;line-height:24px;text-align:center;visibility:visible;opacity:.2;transition:opacity .3s}.ant-tree-treenode:hover .ant-tree .ant-tree-treenode-draggable .ant-tree-draggable-icon{opacity:.45}.ant-tree .ant-tree-treenode-draggable.ant-tree-treenode-disabled .ant-tree-draggable-icon{visibility:hidden}.ant-tree-indent{align-self:stretch;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-indent-unit{display:inline-block;width:24px}.ant-tree-draggable-icon{visibility:hidden}.ant-tree-switcher{position:relative;flex:none;align-self:stretch;width:24px;margin:0;line-height:24px;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-switcher .ant-tree-switcher-icon,.ant-tree-switcher .ant-select-tree-switcher-icon{display:inline-block;font-size:10px;vertical-align:baseline}.ant-tree-switcher .ant-tree-switcher-icon svg,.ant-tree-switcher .ant-select-tree-switcher-icon svg{transition:transform .3s}.ant-tree-switcher-noop{cursor:default}.ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(-90deg)}.ant-tree-switcher-loading-icon{color:#1890ff}.ant-tree-switcher-leaf-line{position:relative;z-index:1;display:inline-block;width:100%;height:100%}.ant-tree-switcher-leaf-line:before{position:absolute;top:0;right:12px;bottom:-4px;margin-left:-1px;border-right:1px solid #d9d9d9;content:" "}.ant-tree-switcher-leaf-line:after{position:absolute;width:10px;height:14px;border-bottom:1px solid #d9d9d9;content:" "}.ant-tree-checkbox{top:initial;margin:4px 8px 0 0}.ant-tree .ant-tree-node-content-wrapper{position:relative;z-index:auto;min-height:24px;margin:0;padding:0 4px;color:inherit;line-height:24px;background:transparent;border-radius:2px;cursor:pointer;transition:all .3s,border 0s,line-height 0s,box-shadow 0s}.ant-tree .ant-tree-node-content-wrapper:hover{background-color:#f5f5f5}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:#bae7ff}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle{display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;vertical-align:top}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle:empty{display:none}.ant-tree-unselectable .ant-tree-node-content-wrapper:hover{background-color:transparent}.ant-tree-node-content-wrapper{line-height:24px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-node-content-wrapper .ant-tree-drop-indicator{position:absolute;z-index:1;height:2px;background-color:#1890ff;border-radius:1px;pointer-events:none}.ant-tree-node-content-wrapper .ant-tree-drop-indicator:after{position:absolute;top:-3px;left:-6px;width:8px;height:8px;background-color:transparent;border:2px solid #1890ff;border-radius:50%;content:""}.ant-tree .ant-tree-treenode.drop-container>[draggable]{box-shadow:0 0 0 2px #1890ff}.ant-tree-show-line .ant-tree-indent-unit{position:relative;height:100%}.ant-tree-show-line .ant-tree-indent-unit:before{position:absolute;top:0;right:12px;bottom:-4px;border-right:1px solid #d9d9d9;content:""}.ant-tree-show-line .ant-tree-indent-unit-end:before{display:none}.ant-tree-show-line .ant-tree-switcher{background:#fff}.ant-tree-show-line .ant-tree-switcher-line-icon{vertical-align:-.15em}.ant-tree .ant-tree-treenode-leaf-last .ant-tree-switcher-leaf-line:before{top:auto!important;bottom:auto!important;height:14px!important}.ant-tree-rtl{direction:rtl}.ant-tree-rtl .ant-tree-node-content-wrapper[draggable=true] .ant-tree-drop-indicator:after{right:-6px;left:unset}.ant-tree .ant-tree-treenode-rtl{direction:rtl}.ant-tree-rtl .ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(90deg)}.ant-tree-rtl.ant-tree-show-line .ant-tree-indent-unit:before{right:auto;left:-13px;border-right:none;border-left:1px solid #d9d9d9}.ant-tree-rtl .ant-tree-checkbox,.ant-tree-select-dropdown-rtl .ant-select-tree-checkbox{margin:4px 0 0 8px}.ant-tabs-small>.ant-tabs-nav .ant-tabs-tab{padding:8px 0;font-size:14px}.ant-tabs-large>.ant-tabs-nav .ant-tabs-tab{padding:16px 0;font-size:16px}.ant-tabs-card.ant-tabs-small>.ant-tabs-nav .ant-tabs-tab{padding:6px 16px}.ant-tabs-card.ant-tabs-large>.ant-tabs-nav .ant-tabs-tab{padding:7px 16px 6px}.ant-tabs-rtl{direction:rtl}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab{margin:0 0 0 32px}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab:last-of-type{margin-left:0}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .anticon{margin-right:0;margin-left:12px}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove{margin-right:8px;margin-left:-4px}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove .anticon{margin:0}.ant-tabs-rtl.ant-tabs-left>.ant-tabs-nav{order:1}.ant-tabs-rtl.ant-tabs-left>.ant-tabs-content-holder{order:0}.ant-tabs-rtl.ant-tabs-right>.ant-tabs-nav{order:0}.ant-tabs-rtl.ant-tabs-right>.ant-tabs-content-holder{order:1}.ant-tabs-rtl.ant-tabs-card.ant-tabs-top>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-right:2px;margin-left:0}.ant-tabs-rtl.ant-tabs-card.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-add,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-add,.ant-tabs-rtl.ant-tabs-card.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-add,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-add{margin-right:2px;margin-left:0}.ant-tabs-dropdown-rtl{direction:rtl}.ant-tabs-dropdown-rtl .ant-tabs-dropdown-menu-item{text-align:right}.ant-tabs-top,.ant-tabs-bottom{flex-direction:column}.ant-tabs-top>.ant-tabs-nav,.ant-tabs-bottom>.ant-tabs-nav,.ant-tabs-top>div>.ant-tabs-nav,.ant-tabs-bottom>div>.ant-tabs-nav{margin:0 0 16px}.ant-tabs-top>.ant-tabs-nav:before,.ant-tabs-bottom>.ant-tabs-nav:before,.ant-tabs-top>div>.ant-tabs-nav:before,.ant-tabs-bottom>div>.ant-tabs-nav:before{position:absolute;right:0;left:0;border-bottom:1px solid #f0f0f0;content:""}.ant-tabs-top>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-ink-bar{height:2px}.ant-tabs-top>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-ink-bar-animated{transition:width .3s,left .3s,right .3s}.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{top:0;bottom:0;width:30px}.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap:before{left:0;box-shadow:inset 10px 0 8px -8px #00000014}.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{right:0;box-shadow:inset -10px 0 8px -8px #00000014}.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left:before,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left:before,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left:before,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left:before{opacity:1}.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right:after,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right:after,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right:after,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right:after{opacity:1}.ant-tabs-top>.ant-tabs-nav:before,.ant-tabs-top>div>.ant-tabs-nav:before{bottom:0}.ant-tabs-top>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-ink-bar{bottom:0}.ant-tabs-bottom>.ant-tabs-nav,.ant-tabs-bottom>div>.ant-tabs-nav{order:1;margin-top:16px;margin-bottom:0}.ant-tabs-bottom>.ant-tabs-nav:before,.ant-tabs-bottom>div>.ant-tabs-nav:before{top:0}.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-ink-bar{top:0}.ant-tabs-bottom>.ant-tabs-content-holder,.ant-tabs-bottom>div>.ant-tabs-content-holder{order:0}.ant-tabs-left>.ant-tabs-nav,.ant-tabs-right>.ant-tabs-nav,.ant-tabs-left>div>.ant-tabs-nav,.ant-tabs-right>div>.ant-tabs-nav{flex-direction:column;min-width:50px}.ant-tabs-left>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-right>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-tab{padding:8px 24px;text-align:center}.ant-tabs-left>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-right>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin:16px 0 0}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap{flex-direction:column}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{right:0;left:0;height:30px}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap:before{top:0;box-shadow:inset 0 10px 8px -8px #00000014}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{bottom:0;box-shadow:inset 0 -10px 8px -8px #00000014}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top:before,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top:before,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top:before,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top:before{opacity:1}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom:after,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom:after,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom:after,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom:after{opacity:1}.ant-tabs-left>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-ink-bar{width:2px}.ant-tabs-left>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-right>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-ink-bar-animated{transition:height .3s,top .3s}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-operations{flex:1 0 auto;flex-direction:column}.ant-tabs-left>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-ink-bar{right:0}.ant-tabs-left>.ant-tabs-content-holder,.ant-tabs-left>div>.ant-tabs-content-holder{margin-left:-1px;border-left:1px solid #f0f0f0}.ant-tabs-left>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane,.ant-tabs-left>div>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane{padding-left:24px}.ant-tabs-right>.ant-tabs-nav,.ant-tabs-right>div>.ant-tabs-nav{order:1}.ant-tabs-right>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-ink-bar{left:0}.ant-tabs-right>.ant-tabs-content-holder,.ant-tabs-right>div>.ant-tabs-content-holder{order:0;margin-right:-1px;border-right:1px solid #f0f0f0}.ant-tabs-right>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane,.ant-tabs-right>div>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane{padding-right:24px}.ant-tabs-dropdown{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;top:-9999px;left:-9999px;z-index:1050;display:block}.ant-tabs-dropdown-hidden{display:none}.ant-tabs-dropdown-menu{max-height:200px;margin:0;padding:4px 0;overflow-x:hidden;overflow-y:auto;text-align:left;list-style-type:none;background-color:#fff;background-clip:padding-box;border-radius:2px;outline:none;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}.ant-tabs-dropdown-menu-item{display:flex;align-items:center;min-width:120px;margin:0;padding:5px 12px;overflow:hidden;color:#000000d9;font-weight:400;font-size:14px;line-height:22px;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;transition:all .3s}.ant-tabs-dropdown-menu-item>span{flex:1;white-space:nowrap}.ant-tabs-dropdown-menu-item-remove{flex:none;margin-left:12px;color:#00000073;font-size:12px;background:transparent;border:0;cursor:pointer}.ant-tabs-dropdown-menu-item-remove:hover{color:#40a9ff}.ant-tabs-dropdown-menu-item:hover{background:#f5f5f5}.ant-tabs-dropdown-menu-item-disabled,.ant-tabs-dropdown-menu-item-disabled:hover{color:#00000040;background:transparent;cursor:not-allowed}.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab{margin:0;padding:8px 16px;background:#fafafa;border:1px solid #f0f0f0;transition:all .3s cubic-bezier(.645,.045,.355,1)}.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab-active{color:#1890ff;background:#fff}.ant-tabs-card>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-ink-bar{visibility:hidden}.ant-tabs-card.ant-tabs-top>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-left:2px}.ant-tabs-card.ant-tabs-top>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-tab{border-radius:2px 2px 0 0}.ant-tabs-card.ant-tabs-top>.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-tab-active{border-bottom-color:#fff}.ant-tabs-card.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-tab{border-radius:0 0 2px 2px}.ant-tabs-card.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-tab-active{border-top-color:#fff}.ant-tabs-card.ant-tabs-left>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-right>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-top:2px}.ant-tabs-card.ant-tabs-left>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-tab{border-radius:2px 0 0 2px}.ant-tabs-card.ant-tabs-left>.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-tab-active{border-right-color:#fff}.ant-tabs-card.ant-tabs-right>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-tab{border-radius:0 2px 2px 0}.ant-tabs-card.ant-tabs-right>.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-tab-active{border-left-color:#fff}.ant-tabs{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:flex}.ant-tabs>.ant-tabs-nav,.ant-tabs>div>.ant-tabs-nav{position:relative;display:flex;flex:none;align-items:center}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-wrap{position:relative;display:inline-block;display:flex;flex:auto;align-self:stretch;overflow:hidden;white-space:nowrap;transform:translate(0)}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{position:absolute;z-index:1;opacity:0;transition:opacity .3s;content:"";pointer-events:none}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-list{position:relative;display:flex;transition:transform .3s}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-operations{display:flex;align-self:stretch}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-operations-hidden,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-operations-hidden{position:absolute;visibility:hidden;pointer-events:none}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-more,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-more{position:relative;padding:8px 16px;background:transparent;border:0}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-more:after,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-more:after{position:absolute;right:0;bottom:0;left:0;height:5px;transform:translateY(100%);content:""}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-add,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-add{min-width:40px;margin-left:2px;padding:0 8px;background:#fafafa;border:1px solid #f0f0f0;border-radius:2px 2px 0 0;outline:none;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1)}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-add:hover,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-add:hover{color:#40a9ff}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-add:active,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-add:active,.ant-tabs>.ant-tabs-nav .ant-tabs-nav-add:focus,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-add:focus{color:#096dd9}.ant-tabs-extra-content{flex:none}.ant-tabs-centered>.ant-tabs-nav .ant-tabs-nav-wrap:not([class*=ant-tabs-nav-wrap-ping]),.ant-tabs-centered>div>.ant-tabs-nav .ant-tabs-nav-wrap:not([class*=ant-tabs-nav-wrap-ping]){justify-content:center}.ant-tabs-ink-bar{position:absolute;background:#1890ff;pointer-events:none}.ant-tabs-tab{position:relative;display:inline-flex;align-items:center;padding:12px 0;font-size:14px;background:transparent;border:0;outline:none;cursor:pointer}.ant-tabs-tab-btn:focus,.ant-tabs-tab-remove:focus,.ant-tabs-tab-btn:active,.ant-tabs-tab-remove:active{color:#096dd9}.ant-tabs-tab-btn{outline:none;transition:all .3s}.ant-tabs-tab-remove{flex:none;margin-right:-4px;margin-left:8px;color:#00000073;font-size:12px;background:transparent;border:none;outline:none;cursor:pointer;transition:all .3s}.ant-tabs-tab-remove:hover{color:#000000d9}.ant-tabs-tab:hover{color:#40a9ff}.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff;text-shadow:0 0 .25px currentcolor}.ant-tabs-tab.ant-tabs-tab-disabled{color:#00000040;cursor:not-allowed}.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:focus,.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-remove:focus,.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:active,.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-remove:active{color:#00000040}.ant-tabs-tab .ant-tabs-tab-remove .anticon{margin:0}.ant-tabs-tab .anticon{margin-right:12px}.ant-tabs-tab+.ant-tabs-tab{margin:0 0 0 32px}.ant-tabs-content{position:relative;width:100%}.ant-tabs-content-holder{flex:auto;min-width:0;min-height:0}.ant-tabs-tabpane{outline:none}.ant-tabs-tabpane-hidden{display:none}.ant-tabs-switch-appear,.ant-tabs-switch-enter{transition:none}.ant-tabs-switch-appear-start,.ant-tabs-switch-enter-start{opacity:0}.ant-tabs-switch-appear-active,.ant-tabs-switch-enter-active{opacity:1;transition:opacity .3s}.ant-tabs-switch-leave{position:absolute;transition:none;top:0;right:0;bottom:0;left:0}.ant-tabs-switch-leave-start{opacity:1}.ant-tabs-switch-leave-active{opacity:0;transition:opacity .3s}.ant-pro-card-tabs .ant-tabs-top>.ant-tabs-nav{margin-bottom:0}.ant-pro-card-tabs .ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-list{margin-top:8px;padding-left:16px}.ant-pro-card-tabs .ant-tabs-bottom>.ant-tabs-nav{margin-top:0}.ant-pro-card-tabs .ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-list{padding-left:16px}.ant-pro-card-tabs .ant-tabs-left .ant-tabs-content-holder .ant-tabs-content .ant-tabs-tabpane{padding-left:0}.ant-pro-card-tabs .ant-tabs-left>.ant-tabs-nav{margin-right:0}.ant-pro-card-tabs .ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-list{padding-top:16px}.ant-pro-card-tabs .ant-tabs-right .ant-tabs-content-holder .ant-tabs-content .ant-tabs-tabpane{padding-right:0}.ant-pro-card-tabs .ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-list{padding-top:16px}.ant-pro-card-actions{margin:0;padding:0;list-style:none;background:#fff;border-top:1px solid #f0f0f0}.ant-pro-card-actions:before{display:table;content:""}.ant-pro-card-actions:after{display:table;clear:both;content:""}.ant-pro-card-actions .ant-space{gap:0!important;width:100%}.ant-pro-card-actions>li,.ant-pro-card-actions .ant-space-item{-webkit-box-flex:1;-ms-flex:1;flex:1;float:left;margin:12px 0;color:#00000073;text-align:center}.ant-pro-card-actions>li>a,.ant-pro-card-actions .ant-space-item>a{color:#00000073;-webkit-transition:color .3s;transition:color .3s}.ant-pro-card-actions>li>a:hover,.ant-pro-card-actions .ant-space-item>a:hover{color:#40a9ff}.ant-pro-card-actions>li>span,.ant-pro-card-actions .ant-space-item>span{position:relative;display:block;min-width:32px;font-size:14px;line-height:1.5715;cursor:pointer}.ant-pro-card-actions>li>span:hover,.ant-pro-card-actions .ant-space-item>span:hover{color:#40a9ff;-webkit-transition:color .3s;transition:color .3s}.ant-pro-card-actions>li>span a:not(.ant-btn),.ant-pro-card-actions .ant-space-item>span a:not(.ant-btn),.ant-pro-card-actions>li>span>.anticon,.ant-pro-card-actions .ant-space-item>span>.anticon{display:inline-block;width:100%;color:#00000073;line-height:22px;-webkit-transition:color .3s;transition:color .3s}.ant-pro-card-actions>li>span a:not(.ant-btn):hover,.ant-pro-card-actions .ant-space-item>span a:not(.ant-btn):hover,.ant-pro-card-actions>li>span>.anticon:hover,.ant-pro-card-actions .ant-space-item>span>.anticon:hover{color:#40a9ff}.ant-pro-card-actions>li>span>.anticon,.ant-pro-card-actions .ant-space-item>span>.anticon{font-size:16px;line-height:22px}.ant-pro-card-actions>li:not(:last-child),.ant-pro-card-actions .ant-space-item:not(:last-child){border-right:1px solid #f0f0f0}.ant-pro-card-loading{overflow:hidden}.ant-pro-card-loading .ant-pro-card-body{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-pro-card-loading-content{width:100%}.ant-pro-card-loading-content p{margin:0}.ant-pro-card-loading-block{height:14px;margin:4px 0;background:-webkit-gradient(linear,left top,right top,from(rgba(207,216,220,.2)),color-stop(rgba(207,216,220,.4)),to(rgba(207,216,220,.2)));background:linear-gradient(90deg,rgba(207,216,220,.2),rgba(207,216,220,.4),rgba(207,216,220,.2));background-size:600% 600%;border-radius:2px;-webkit-animation:card-loading 1.4s ease infinite;animation:card-loading 1.4s ease infinite}@-webkit-keyframes card-loading{0%,to{background-position:0 50%}50%{background-position:100% 50%}}@keyframes card-loading{0%,to{background-position:0 50%}50%{background-position:100% 50%}}.ant-pro-card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0;padding:0;background-color:#fff;border-radius:2px}.ant-pro-card-col{width:100%}.ant-pro-card-border{border:1px solid #f0f0f0}.ant-pro-card-hoverable{cursor:pointer;-webkit-transition:border-color .3s,-webkit-box-shadow .3s;transition:border-color .3s,-webkit-box-shadow .3s;transition:box-shadow .3s,border-color .3s;transition:box-shadow .3s,border-color .3s,-webkit-box-shadow .3s}.ant-pro-card-hoverable:hover{border-color:transparent;-webkit-box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09);box-shadow:0 1px 2px -2px #00000029,0 3px 6px #0000001f,0 5px 12px 4px #00000017}.ant-pro-card-hoverable.ant-pro-card-checked:hover{border-color:#1890ff}.ant-pro-card-checked{background-color:#e6f7ff;border-color:#1890ff}.ant-pro-card-checked:after{position:absolute;top:2px;right:2px;width:0;height:0;border:6px solid #1890ff;border-bottom:6px solid transparent;border-left:6px solid transparent;border-top-right-radius:2px;content:""}.ant-pro-card:focus{background-color:#e6f7ff;border-color:#1890ff}.ant-pro-card-size-small .ant-pro-card-header{padding:8px 12px 0}.ant-pro-card-size-small .ant-pro-card-header-border{padding-bottom:8px}.ant-pro-card-size-small .ant-pro-card-title{font-size:14px}.ant-pro-card-size-small .ant-pro-card-body{padding:12px}.ant-pro-card-ghost{background-color:transparent}.ant-pro-card-ghost>.ant-pro-card-header{padding-right:0;padding-bottom:16px;padding-left:0}.ant-pro-card-ghost>.ant-pro-card-body{padding:0;background-color:transparent}.ant-pro-card-split>.ant-pro-card-body{padding:0}.ant-pro-card-split-vertical{border-right:1px solid #f0f0f0}.ant-pro-card-split-horizontal{border-bottom:1px solid #f0f0f0}.ant-pro-card-contain-card>.ant-pro-card-body{display:-webkit-box;display:-ms-flexbox;display:flex}.ant-pro-card-body-direction-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ant-pro-card-body-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.ant-pro-card-collapse>.ant-pro-card-header{padding-bottom:16px;border-bottom:0}.ant-pro-card-collapse>.ant-pro-card-body{display:none}.ant-pro-card-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 24px 0}.ant-pro-card-header-border{padding-bottom:16px;border-bottom:1px solid #f0f0f0}.ant-pro-card-header-collapsible{cursor:pointer}.ant-pro-card-title{color:#000000d9;font-weight:500;font-size:16px}.ant-pro-card-extra{color:#000000d9}.ant-pro-card-type-inner .ant-pro-card-header{background-color:#fafafa}.ant-pro-card-collapsible-icon{margin-right:8px;color:#000000bf}.ant-pro-card-collapsible-icon :hover{color:#40a9ff}.ant-pro-card-collapsible-icon svg{-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.ant-pro-card-body{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;padding:24px}.ant-pro-card-body-center{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ant-pro-card-col-0{display:none}.ant-pro-card-col-24{-ms-flex-negative:0;flex-shrink:0;width:100%}.ant-pro-card-col-23{-ms-flex-negative:0;flex-shrink:0;width:95.83333333%}.ant-pro-card-col-22{-ms-flex-negative:0;flex-shrink:0;width:91.66666667%}.ant-pro-card-col-21{-ms-flex-negative:0;flex-shrink:0;width:87.5%}.ant-pro-card-col-20{-ms-flex-negative:0;flex-shrink:0;width:83.33333333%}.ant-pro-card-col-19{-ms-flex-negative:0;flex-shrink:0;width:79.16666667%}.ant-pro-card-col-18{-ms-flex-negative:0;flex-shrink:0;width:75%}.ant-pro-card-col-17{-ms-flex-negative:0;flex-shrink:0;width:70.83333333%}.ant-pro-card-col-16{-ms-flex-negative:0;flex-shrink:0;width:66.66666667%}.ant-pro-card-col-15{-ms-flex-negative:0;flex-shrink:0;width:62.5%}.ant-pro-card-col-14{-ms-flex-negative:0;flex-shrink:0;width:58.33333333%}.ant-pro-card-col-13{-ms-flex-negative:0;flex-shrink:0;width:54.16666667%}.ant-pro-card-col-12{-ms-flex-negative:0;flex-shrink:0;width:50%}.ant-pro-card-col-11{-ms-flex-negative:0;flex-shrink:0;width:45.83333333%}.ant-pro-card-col-10{-ms-flex-negative:0;flex-shrink:0;width:41.66666667%}.ant-pro-card-col-9{-ms-flex-negative:0;flex-shrink:0;width:37.5%}.ant-pro-card-col-8{-ms-flex-negative:0;flex-shrink:0;width:33.33333333%}.ant-pro-card-col-7{-ms-flex-negative:0;flex-shrink:0;width:29.16666667%}.ant-pro-card-col-6{-ms-flex-negative:0;flex-shrink:0;width:25%}.ant-pro-card-col-5{-ms-flex-negative:0;flex-shrink:0;width:20.83333333%}.ant-pro-card-col-4{-ms-flex-negative:0;flex-shrink:0;width:16.66666667%}.ant-pro-card-col-3{-ms-flex-negative:0;flex-shrink:0;width:12.5%}.ant-pro-card-col-2{-ms-flex-negative:0;flex-shrink:0;width:8.33333333%}.ant-pro-card-col-1{-ms-flex-negative:0;flex-shrink:0;width:4.16666667%}.ant-pro-card-divider{-webkit-box-flex:0;-ms-flex:none;flex:none;width:1px;margin:24px 8px;background-color:#f0f0f0}.ant-pro-card-divider-horizontal{width:initial;height:1px;margin:8px 24px}.ant-pro-card-size-small .ant-pro-card-divider{margin:12px 8px}.ant-pro-card-size-small .ant-pro-card-divider-horizontal{margin:8px 12px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field{max-width:100%}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-xs{width:104px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-s{width:216px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-sm{width:216px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-m{width:328px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-md{width:328px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-l{width:440px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-lg{width:440px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-xl{width:552px}.ant-form:not(.ant-form-horizontal) .ant-pro-form-list-item:not(.ant-pro-form-list-item-show-label) .ant-form-item-label{display:none}.ant-pro-form-list{max-width:100%}.ant-pro-form-list-item.ant-pro-form-list-item-show-label .ant-form-item-label{display:inline-block}.ant-pro-form-list-item:first-of-type div:first-of-type .ant-form-item .ant-form-item-label{display:inline-block}.ant-pro-form-list-action{display:-webkit-box;display:-ms-flexbox;display:flex;height:32px;margin-bottom:24px;line-height:32px}.ant-pro-form-list .ant-pro-card .ant-pro-card-extra .ant-pro-form-list-action{margin-bottom:0}.ant-pro-form-list-action-icon{margin-left:8px;cursor:pointer;-webkit-transition:color .3s ease-in-out;transition:color .3s ease-in-out}.ant-pro-form-list-action-icon:hover{color:#40a9ff}.ant-pro-form-list-creator-button-top{margin-bottom:24px}.ant-pro-form-group-title{margin-bottom:16px;font-weight:700}.ant-pro-form-group-container{-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:100%}.ant-pro-form-group-container>div.ant-space-item{max-width:100%}.ant-pro-form-group-twoLine{display:block;width:100%}.ant-pro-form-group-twoLine .ant-pro-form-group-title{width:100%;margin:8px 0}.ant-pro-form-group-twoLine .ant-pro-form-group-container{padding-left:16px}.ant-pro-form-group-twoLine .ant-space-item,.ant-pro-form-group-twoLine .ant-form-item{width:100%}.ant-pro-form-group-twoLine .ant-form-item-control{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ant-pro-form-group-twoLine .ant-form-item-control-input{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ant-pro-form-group-twoLine .ant-form-item-control-input-content{-webkit-box-flex:0;-ms-flex:none;flex:none}.ant-drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;pointer-events:none}.ant-drawer-inline{position:absolute}.ant-drawer-mask{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1000;background:rgba(0,0,0,.45);pointer-events:auto}.ant-drawer-content-wrapper{position:absolute;z-index:1000;transition:all .3s}.ant-drawer-content-wrapper-hidden{display:none}.ant-drawer-left>.ant-drawer-content-wrapper{top:0;bottom:0;left:0;box-shadow:6px 0 16px -8px #00000014,9px 0 28px #0000000d,12px 0 48px 16px #00000008}.ant-drawer-right>.ant-drawer-content-wrapper{top:0;right:0;bottom:0;box-shadow:-6px 0 16px -8px #00000014,-9px 0 28px #0000000d,-12px 0 48px 16px #00000008}.ant-drawer-top>.ant-drawer-content-wrapper{top:0;right:0;left:0;box-shadow:0 6px 16px -8px #00000014,0 9px 28px #0000000d,0 12px 48px 16px #00000008}.ant-drawer-bottom>.ant-drawer-content-wrapper{right:0;bottom:0;left:0;box-shadow:0 -6px 16px -8px #00000014,0 -9px 28px #0000000d,0 -12px 48px 16px #00000008}.ant-drawer-content{width:100%;height:100%;overflow:auto;background:#fff;pointer-events:auto}.ant-drawer-wrapper-body{display:flex;flex-direction:column;width:100%;height:100%}.ant-drawer-header{display:flex;flex:0;align-items:center;padding:16px 24px;font-size:16px;line-height:22px;border-bottom:1px solid #f0f0f0}.ant-drawer-header-title{display:flex;flex:1;align-items:center;min-width:0;min-height:0}.ant-drawer-extra{flex:none}.ant-drawer-close{display:inline-block;margin-right:12px;color:#00000073;font-weight:700;font-size:16px;font-style:normal;line-height:1;text-align:center;text-transform:none;text-decoration:none;background:transparent;border:0;outline:0;cursor:pointer;transition:color .3s;text-rendering:auto}.ant-drawer-close:focus,.ant-drawer-close:hover{color:#000000bf;text-decoration:none}.ant-drawer-title{flex:1;margin:0;color:#000000d9;font-weight:500;font-size:16px;line-height:22px}.ant-drawer-body{flex:1;min-width:0;min-height:0;padding:24px;overflow:auto}.ant-drawer-footer{flex-shrink:0;padding:10px 16px;border-top:1px solid #f0f0f0}.panel-motion-enter-start,.panel-motion-appear-start,.panel-motion-leave-start{transition:none}.panel-motion-enter-active,.panel-motion-appear-active,.panel-motion-leave-active,.ant-drawer-mask-motion-enter-active,.ant-drawer-mask-motion-appear-active,.ant-drawer-mask-motion-leave-active{transition:all .3s}.ant-drawer-mask-motion-enter,.ant-drawer-mask-motion-appear{opacity:0}.ant-drawer-mask-motion-enter-active,.ant-drawer-mask-motion-appear-active,.ant-drawer-mask-motion-leave{opacity:1}.ant-drawer-mask-motion-leave-active{opacity:0}.ant-drawer-panel-motion-left-enter-start,.ant-drawer-panel-motion-left-appear-start,.ant-drawer-panel-motion-left-leave-start{transition:none}.ant-drawer-panel-motion-left-enter-active,.ant-drawer-panel-motion-left-appear-active,.ant-drawer-panel-motion-left-leave-active{transition:all .3s}.ant-drawer-panel-motion-left-enter-start,.ant-drawer-panel-motion-left-appear-start{transform:translate(-100%)!important}.ant-drawer-panel-motion-left-enter-active,.ant-drawer-panel-motion-left-appear-active,.ant-drawer-panel-motion-left-leave{transform:translate(0)}.ant-drawer-panel-motion-left-leave-active{transform:translate(-100%)}.ant-drawer-panel-motion-right-enter-start,.ant-drawer-panel-motion-right-appear-start,.ant-drawer-panel-motion-right-leave-start{transition:none}.ant-drawer-panel-motion-right-enter-active,.ant-drawer-panel-motion-right-appear-active,.ant-drawer-panel-motion-right-leave-active{transition:all .3s}.ant-drawer-panel-motion-right-enter-start,.ant-drawer-panel-motion-right-appear-start{transform:translate(100%)!important}.ant-drawer-panel-motion-right-enter-active,.ant-drawer-panel-motion-right-appear-active,.ant-drawer-panel-motion-right-leave{transform:translate(0)}.ant-drawer-panel-motion-right-leave-active{transform:translate(100%)}.ant-drawer-panel-motion-top-enter-start,.ant-drawer-panel-motion-top-appear-start,.ant-drawer-panel-motion-top-leave-start{transition:none}.ant-drawer-panel-motion-top-enter-active,.ant-drawer-panel-motion-top-appear-active,.ant-drawer-panel-motion-top-leave-active{transition:all .3s}.ant-drawer-panel-motion-top-enter-start,.ant-drawer-panel-motion-top-appear-start{transform:translateY(-100%)!important}.ant-drawer-panel-motion-top-enter-active,.ant-drawer-panel-motion-top-appear-active,.ant-drawer-panel-motion-top-leave{transform:translateY(0)}.ant-drawer-panel-motion-top-leave-active{transform:translateY(-100%)}.ant-drawer-panel-motion-bottom-enter-start,.ant-drawer-panel-motion-bottom-appear-start,.ant-drawer-panel-motion-bottom-leave-start{transition:none}.ant-drawer-panel-motion-bottom-enter-active,.ant-drawer-panel-motion-bottom-appear-active,.ant-drawer-panel-motion-bottom-leave-active{transition:all .3s}.ant-drawer-panel-motion-bottom-enter-start,.ant-drawer-panel-motion-bottom-appear-start{transform:translateY(100%)!important}.ant-drawer-panel-motion-bottom-enter-active,.ant-drawer-panel-motion-bottom-appear-active,.ant-drawer-panel-motion-bottom-leave{transform:translateY(0)}.ant-drawer-panel-motion-bottom-leave-active{transform:translateY(100%)}.ant-drawer-rtl{direction:rtl}.ant-drawer-rtl .ant-drawer-close{margin-right:0;margin-left:12px}.ant-pro-form-light-filter{line-height:30px}.ant-pro-form-light-filter:before{display:block;height:0;visibility:hidden;content:"."}.ant-pro-form-light-filter-small{line-height:1.5715}.ant-pro-form-light-filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:-8px;margin-right:-4px}.ant-pro-form-light-filter-item{margin-top:8px;white-space:nowrap}.ant-pro-form-light-filter-item:not(:last-child){margin-right:8px}.ant-pro-form-light-filter-formlabel{margin-bottom:2px}.ant-pro-form-light-filter-line{min-width:198px}.ant-pro-form-light-filter-line .ant-form-item{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-bottom:0}.ant-pro-form-light-filter-line:not(:first-child){margin-top:16px;margin-bottom:8px}.ant-pro-form-light-filter .ant-form-item{margin-bottom:0}.ant-pro-form-light-filter-collapse-icon{width:32px;height:32px;line-height:35px;border-radius:50%}.ant-pro-form-light-filter-effective .ant-pro-form-light-filter-collapse-icon{background-color:#0000000a}.ant-modal{box-sizing:border-box;padding:0 0 24px;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";pointer-events:none;position:relative;top:100px;width:auto;max-width:calc(100vw - 32px);margin:0 auto}.ant-modal.ant-zoom-enter,.ant-modal.ant-zoom-appear{transform:none;opacity:0;animation-duration:.3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;height:100%;background-color:#00000073}.ant-modal-mask-hidden{display:none}.ant-modal-wrap{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;outline:0;z-index:1000}.ant-modal-title{margin:0;color:#000000d9;font-weight:500;font-size:16px;line-height:22px;word-wrap:break-word}.ant-modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:0;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d;pointer-events:auto}.ant-modal-close{position:absolute;top:0;right:0;z-index:10;padding:0;color:#00000073;font-weight:700;line-height:1;text-decoration:none;background:transparent;border:0;outline:0;cursor:pointer;transition:color .3s}.ant-modal-close-x{display:block;width:54px;height:54px;font-size:16px;font-style:normal;line-height:54px;text-align:center;text-transform:none;text-rendering:auto}.ant-modal-close:focus,.ant-modal-close:hover{color:#000000bf;text-decoration:none}.ant-modal-header{padding:16px 24px;color:#000000d9;background:#fff;border-bottom:1px solid #f0f0f0;border-radius:2px 2px 0 0}.ant-modal-body{padding:24px;font-size:14px;line-height:1.5715;word-wrap:break-word}.ant-modal-footer{padding:10px 16px;text-align:right;background:transparent;border-top:1px solid #f0f0f0;border-radius:0 0 2px 2px}.ant-modal-footer .ant-btn+.ant-btn:not(.ant-dropdown-trigger){margin-bottom:0;margin-left:8px}.ant-modal-open{overflow:hidden}.ant-modal-centered{text-align:center}.ant-modal-centered:before{display:inline-block;width:0;height:100%;vertical-align:middle;content:""}.ant-modal-centered .ant-modal{top:0;display:inline-block;padding-bottom:0;text-align:left;vertical-align:middle}@media (max-width: 767px){.ant-modal{max-width:calc(100vw - 16px);margin:8px auto}.ant-modal-centered .ant-modal{flex:1}}.ant-modal-confirm .ant-modal-header{display:none}.ant-modal-confirm .ant-modal-body{padding:32px 32px 24px}.ant-modal-confirm-body-wrapper:before{display:table;content:""}.ant-modal-confirm-body-wrapper:after{display:table;clear:both;content:""}.ant-modal-confirm-body .ant-modal-confirm-title{display:block;overflow:hidden;color:#000000d9;font-weight:500;font-size:16px;line-height:1.4}.ant-modal-confirm-body .ant-modal-confirm-content{margin-top:8px;color:#000000d9;font-size:14px}.ant-modal-confirm-body>.anticon{float:left;margin-right:16px;font-size:22px}.ant-modal-confirm-body>.anticon+.ant-modal-confirm-title+.ant-modal-confirm-content{margin-left:38px}.ant-modal-confirm .ant-modal-confirm-btns{margin-top:24px;text-align:right}.ant-modal-confirm .ant-modal-confirm-btns .ant-btn+.ant-btn{margin-bottom:0;margin-left:8px}.ant-modal-confirm-error .ant-modal-confirm-body>.anticon{color:#ff4d4f}.ant-modal-confirm-warning .ant-modal-confirm-body>.anticon,.ant-modal-confirm-confirm .ant-modal-confirm-body>.anticon{color:#faad14}.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#1890ff}.ant-modal-confirm-success .ant-modal-confirm-body>.anticon{color:#52c41a}.ant-modal-confirm .ant-zoom-leave .ant-modal-confirm-btns{pointer-events:none}.ant-modal-wrap-rtl{direction:rtl}.ant-modal-wrap-rtl .ant-modal-close{right:initial;left:0}.ant-modal-wrap-rtl .ant-modal-footer{text-align:left}.ant-modal-wrap-rtl .ant-modal-footer .ant-btn+.ant-btn{margin-right:8px;margin-left:0}.ant-modal-wrap-rtl .ant-modal-confirm-body{direction:rtl}.ant-modal-wrap-rtl .ant-modal-confirm-body>.anticon{float:right;margin-right:0;margin-left:16px}.ant-modal-wrap-rtl .ant-modal-confirm-body>.anticon+.ant-modal-confirm-title+.ant-modal-confirm-content{margin-right:38px;margin-left:0}.ant-modal-wrap-rtl .ant-modal-confirm-btns{text-align:left}.ant-modal-wrap-rtl .ant-modal-confirm-btns .ant-btn+.ant-btn{margin-right:8px;margin-left:0}.ant-modal-wrap-rtl.ant-modal-centered .ant-modal{text-align:right}.ant-divider{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";border-top:1px solid rgba(0,0,0,.06)}.ant-divider-vertical{position:relative;top:-.06em;display:inline-block;height:.9em;margin:0 8px;vertical-align:middle;border-top:0;border-left:1px solid rgba(0,0,0,.06)}.ant-divider-horizontal{display:flex;clear:both;width:100%;min-width:100%;margin:24px 0}.ant-divider-horizontal.ant-divider-with-text{display:flex;align-items:center;margin:16px 0;color:#000000d9;font-weight:500;font-size:16px;white-space:nowrap;text-align:center;border-top:0;border-top-color:#0000000f}.ant-divider-horizontal.ant-divider-with-text:before,.ant-divider-horizontal.ant-divider-with-text:after{position:relative;width:50%;border-top:1px solid transparent;border-top-color:inherit;border-bottom:0;transform:translateY(50%);content:""}.ant-divider-horizontal.ant-divider-with-text-left:before{width:5%}.ant-divider-horizontal.ant-divider-with-text-left:after{width:95%}.ant-divider-horizontal.ant-divider-with-text-right:before{width:95%}.ant-divider-horizontal.ant-divider-with-text-right:after{width:5%}.ant-divider-inner-text{display:inline-block;padding:0 1em}.ant-divider-dashed{background:none;border-color:#0000000f;border-style:dashed;border-width:1px 0 0}.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:before,.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:after{border-style:dashed none none}.ant-divider-vertical.ant-divider-dashed{border-width:0 0 0 1px}.ant-divider-plain.ant-divider-with-text{color:#000000d9;font-weight:400;font-size:14px}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left:before{width:0}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left:after{width:100%}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left .ant-divider-inner-text{padding-left:0}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right:before{width:100%}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right:after{width:0}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right .ant-divider-inner-text{padding-right:0}.ant-divider-rtl{direction:rtl}.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-left:before{width:95%}.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-left:after{width:5%}.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-right:before{width:5%}.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-right:after{width:95%}.ant-steps{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:flex;width:100%;font-size:0;text-align:initial}.ant-steps-item{position:relative;display:inline-block;flex:1;overflow:hidden;vertical-align:top}.ant-steps-item-container{outline:none}.ant-steps-item:last-child{flex:none}.ant-steps-item:last-child>.ant-steps-item-container>.ant-steps-item-tail,.ant-steps-item:last-child>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{display:none}.ant-steps-item-icon,.ant-steps-item-content{display:inline-block;vertical-align:top}.ant-steps-item-icon{width:32px;height:32px;margin:0 8px 0 0;font-size:16px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:32px;text-align:center;border:1px solid rgba(0,0,0,.25);border-radius:32px;transition:background-color .3s,border-color .3s}.ant-steps-item-icon .ant-steps-icon{position:relative;top:-.5px;color:#1890ff;line-height:1}.ant-steps-item-tail{position:absolute;top:12px;left:0;width:100%;padding:0 10px}.ant-steps-item-tail:after{display:inline-block;width:100%;height:1px;background:#f0f0f0;border-radius:1px;transition:background .3s;content:""}.ant-steps-item-title{position:relative;display:inline-block;padding-right:16px;color:#000000d9;font-size:16px;line-height:32px}.ant-steps-item-title:after{position:absolute;top:16px;left:100%;display:block;width:9999px;height:1px;background:#f0f0f0;content:""}.ant-steps-item-subtitle{display:inline;margin-left:8px;color:#00000073;font-weight:400;font-size:14px}.ant-steps-item-description{color:#00000073;font-size:14px}.ant-steps-item-wait .ant-steps-item-icon{background-color:#fff;border-color:#00000040}.ant-steps-item-wait .ant-steps-item-icon>.ant-steps-icon{color:#00000040}.ant-steps-item-wait .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:rgba(0,0,0,.25)}.ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:#00000073}.ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#f0f0f0}.ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:#00000073}.ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#f0f0f0}.ant-steps-item-process .ant-steps-item-icon{background-color:#fff;border-color:#1890ff}.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:#000000d9}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#f0f0f0}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:#000000d9}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#f0f0f0}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-icon{background:#1890ff}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-icon .ant-steps-icon{color:#fff}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-title{font-weight:500}.ant-steps-item-finish .ant-steps-item-icon{background-color:#fff;border-color:#1890ff}.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:#000000d9}.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#1890ff}.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:#00000073}.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#1890ff}.ant-steps-item-error .ant-steps-item-icon{background-color:#fff;border-color:#ff4d4f}.ant-steps-item-error .ant-steps-item-icon>.ant-steps-icon{color:#ff4d4f}.ant-steps-item-error .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#ff4d4f}.ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:#ff4d4f}.ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#f0f0f0}.ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:#ff4d4f}.ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#f0f0f0}.ant-steps-item.ant-steps-next-error .ant-steps-item-title:after{background:#ff4d4f}.ant-steps-item-disabled{cursor:not-allowed}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]{cursor:pointer}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button] .ant-steps-item-title,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button] .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button] .ant-steps-item-description,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button] .ant-steps-item-icon .ant-steps-icon{transition:color .3s}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-title,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-description{color:#1890ff}.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon{border-color:#1890ff}.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon{color:#1890ff}.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-left:16px;white-space:nowrap}.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-left:0}.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title{padding-right:0}.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-tail{display:none}.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-description{max-width:140px;white-space:normal}.ant-steps-item-custom>.ant-steps-item-container>.ant-steps-item-icon{height:auto;background:none;border:0}.ant-steps-item-custom>.ant-steps-item-container>.ant-steps-item-icon>.ant-steps-icon{top:0;left:.5px;width:32px;height:32px;font-size:24px;line-height:32px}.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}.ant-steps:not(.ant-steps-vertical) .ant-steps-item-custom .ant-steps-item-icon{width:auto;background:none}.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-left:12px}.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-left:0}.ant-steps-small .ant-steps-item-icon{width:24px;height:24px;margin:0 8px 0 0;font-size:12px;line-height:24px;text-align:center;border-radius:24px}.ant-steps-small .ant-steps-item-title{padding-right:12px;font-size:14px;line-height:24px}.ant-steps-small .ant-steps-item-title:after{top:12px}.ant-steps-small .ant-steps-item-description{color:#00000073;font-size:14px}.ant-steps-small .ant-steps-item-tail{top:8px}.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon{width:inherit;height:inherit;line-height:inherit;background:none;border:0;border-radius:0}.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon>.ant-steps-icon{font-size:24px;line-height:24px;transform:none}.ant-steps-vertical{display:flex;flex-direction:column}.ant-steps-vertical>.ant-steps-item{display:block;flex:1 0 auto;padding-left:0;overflow:visible}.ant-steps-vertical>.ant-steps-item .ant-steps-item-icon{float:left;margin-right:16px}.ant-steps-vertical>.ant-steps-item .ant-steps-item-content{display:block;min-height:48px;overflow:hidden}.ant-steps-vertical>.ant-steps-item .ant-steps-item-title{line-height:32px}.ant-steps-vertical>.ant-steps-item .ant-steps-item-description{padding-bottom:12px}.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{position:absolute;top:0;left:15px;width:1px;height:100%;padding:38px 0 6px}.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail:after{width:1px;height:100%}.ant-steps-vertical>.ant-steps-item:not(:last-child)>.ant-steps-item-container>.ant-steps-item-tail{display:block}.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{display:none}.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail{position:absolute;top:0;left:11px;padding:30px 0 6px}.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-title{line-height:24px}.ant-steps-label-vertical .ant-steps-item{overflow:visible}.ant-steps-label-vertical .ant-steps-item-tail{margin-left:58px;padding:3.5px 24px}.ant-steps-label-vertical .ant-steps-item-content{display:block;width:116px;margin-top:8px;text-align:center}.ant-steps-label-vertical .ant-steps-item-icon{display:inline-block;margin-left:42px}.ant-steps-label-vertical .ant-steps-item-title{padding-right:0;padding-left:0}.ant-steps-label-vertical .ant-steps-item-title:after{display:none}.ant-steps-label-vertical .ant-steps-item-subtitle{display:block;margin-bottom:4px;margin-left:0;line-height:1.5715}.ant-steps-label-vertical.ant-steps-small:not(.ant-steps-dot) .ant-steps-item-icon{margin-left:46px}.ant-steps-dot .ant-steps-item-title,.ant-steps-dot.ant-steps-small .ant-steps-item-title{line-height:1.5715}.ant-steps-dot .ant-steps-item-tail,.ant-steps-dot.ant-steps-small .ant-steps-item-tail{top:2px;width:100%;margin:0 0 0 70px;padding:0}.ant-steps-dot .ant-steps-item-tail:after,.ant-steps-dot.ant-steps-small .ant-steps-item-tail:after{width:calc(100% - 20px);height:3px;margin-left:12px}.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot,.ant-steps-dot.ant-steps-small .ant-steps-item:first-child .ant-steps-icon-dot{left:2px}.ant-steps-dot .ant-steps-item-icon,.ant-steps-dot.ant-steps-small .ant-steps-item-icon{width:8px;height:8px;margin-left:67px;padding-right:0;line-height:8px;background:transparent;border:0}.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot{position:relative;float:left;width:100%;height:100%;border-radius:100px;transition:all .3s}.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot:after,.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot:after{position:absolute;top:-12px;left:-26px;width:60px;height:32px;background:rgba(0,0,0,.001);content:""}.ant-steps-dot .ant-steps-item-content,.ant-steps-dot.ant-steps-small .ant-steps-item-content{width:140px}.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon,.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon{position:relative;top:-1px;width:10px;height:10px;line-height:10px;background:none}.ant-steps-dot .ant-steps-item-process .ant-steps-icon:first-child .ant-steps-icon-dot,.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-icon:first-child .ant-steps-icon-dot{left:0}.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon{margin-top:13px;margin-left:0;background:none}.ant-steps-vertical.ant-steps-dot .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{top:6.5px;left:-9px;margin:0;padding:22px 0 4px}.ant-steps-vertical.ant-steps-dot.ant-steps-small .ant-steps-item-icon{margin-top:10px}.ant-steps-vertical.ant-steps-dot.ant-steps-small .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{top:3.5px}.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot{left:0}.ant-steps-vertical.ant-steps-dot .ant-steps-item-content{width:inherit}.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-item-container .ant-steps-item-icon .ant-steps-icon-dot{top:-1px;left:-1px}.ant-steps-navigation{padding-top:12px}.ant-steps-navigation.ant-steps-small .ant-steps-item-container{margin-left:-12px}.ant-steps-navigation .ant-steps-item{overflow:visible;text-align:center}.ant-steps-navigation .ant-steps-item-container{display:inline-block;height:100%;margin-left:-16px;padding-bottom:12px;text-align:left;transition:opacity .3s}.ant-steps-navigation .ant-steps-item-container .ant-steps-item-content{max-width:auto}.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title{max-width:100%;padding-right:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title:after{display:none}.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role=button]{cursor:pointer}.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role=button]:hover{opacity:.85}.ant-steps-navigation .ant-steps-item:last-child{flex:1}.ant-steps-navigation .ant-steps-item:last-child:after{display:none}.ant-steps-navigation .ant-steps-item:after{position:absolute;top:50%;left:100%;display:inline-block;width:12px;height:12px;margin-top:-14px;margin-left:-2px;border:1px solid rgba(0,0,0,.25);border-bottom:none;border-left:none;transform:rotate(45deg);content:""}.ant-steps-navigation .ant-steps-item:before{position:absolute;bottom:0;left:50%;display:inline-block;width:0;height:2px;background-color:#1890ff;transition:width .3s,left .3s;transition-timing-function:ease-out;content:""}.ant-steps-navigation .ant-steps-item.ant-steps-item-active:before{left:0;width:100%}.ant-steps-navigation.ant-steps-vertical>.ant-steps-item{margin-right:0!important}.ant-steps-navigation.ant-steps-vertical>.ant-steps-item:before{display:none}.ant-steps-navigation.ant-steps-vertical>.ant-steps-item.ant-steps-item-active:before{top:0;right:0;left:unset;display:block;width:3px;height:calc(100% - 24px)}.ant-steps-navigation.ant-steps-vertical>.ant-steps-item:after{position:relative;top:-2px;left:50%;display:block;width:8px;height:8px;margin-bottom:8px;text-align:center;transform:rotate(135deg)}.ant-steps-navigation.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{visibility:hidden}.ant-steps-navigation.ant-steps-horizontal>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{visibility:hidden}.ant-steps-rtl{direction:rtl}.ant-steps.ant-steps-rtl .ant-steps-item-icon{margin-right:0;margin-left:8px}.ant-steps-rtl .ant-steps-item-tail{right:0;left:auto}.ant-steps-rtl .ant-steps-item-title{padding-right:0;padding-left:16px}.ant-steps-rtl .ant-steps-item-title .ant-steps-item-subtitle{float:left;margin-right:8px;margin-left:0}.ant-steps-rtl .ant-steps-item-title:after{right:100%;left:auto}.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-right:16px;padding-left:0}.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-right:0}.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title{padding-left:0}.ant-steps-rtl .ant-steps-item-custom .ant-steps-item-icon>.ant-steps-icon{right:.5px;left:auto}.ant-steps-rtl.ant-steps-navigation.ant-steps-small .ant-steps-item-container{margin-right:-12px;margin-left:0}.ant-steps-rtl.ant-steps-navigation .ant-steps-item-container{margin-right:-16px;margin-left:0;text-align:right}.ant-steps-rtl.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title{padding-left:0}.ant-steps-rtl.ant-steps-navigation .ant-steps-item:after{right:100%;left:auto;margin-right:-2px;margin-left:0;transform:rotate(225deg)}.ant-steps-rtl.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-right:12px;padding-left:0}.ant-steps-rtl.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-right:0}.ant-steps-rtl.ant-steps-small .ant-steps-item-title{padding-right:0;padding-left:12px}.ant-steps-rtl.ant-steps-vertical>.ant-steps-item .ant-steps-item-icon{float:right;margin-right:0;margin-left:16px}.ant-steps-rtl.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{right:16px;left:auto}.ant-steps-rtl.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail{right:12px;left:auto}.ant-steps-rtl.ant-steps-label-vertical .ant-steps-item-title{padding-left:0}.ant-steps-rtl.ant-steps-dot .ant-steps-item-tail,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-tail{margin:0 70px 0 0}.ant-steps-rtl.ant-steps-dot .ant-steps-item-tail:after,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-tail:after{margin-right:12px;margin-left:0}.ant-steps-rtl.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item:first-child .ant-steps-icon-dot{right:2px;left:auto}.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon{margin-right:67px;margin-left:0}.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot{float:right}.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot:after,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot:after{right:-26px;left:auto}.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon{margin-right:0;margin-left:16px}.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{right:-9px;left:auto}.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot{right:0;left:auto}.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-icon-dot{right:-2px;left:auto}.ant-steps-rtl.ant-steps-with-progress.ant-steps-vertical>.ant-steps-item{padding-right:4px}.ant-steps-rtl.ant-steps-with-progress.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{right:19px}.ant-steps-rtl.ant-steps-with-progress.ant-steps-small.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{right:15px}.ant-steps-rtl.ant-steps-with-progress.ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item:first-child{padding-right:4px;padding-left:0}.ant-steps-rtl.ant-steps-with-progress.ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item:first-child.ant-steps-item-active{padding-right:4px}.ant-steps-with-progress .ant-steps-item{padding-top:4px}.ant-steps-with-progress .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{top:4px;left:19px}.ant-steps-with-progress.ant-steps-horizontal .ant-steps-item:first-child,.ant-steps-with-progress.ant-steps-small.ant-steps-horizontal .ant-steps-item:first-child{padding-bottom:4px;padding-left:4px}.ant-steps-with-progress.ant-steps-small>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{left:15px}.ant-steps-with-progress.ant-steps-vertical .ant-steps-item{padding-left:4px}.ant-steps-with-progress.ant-steps-label-vertical .ant-steps-item .ant-steps-item-tail{top:14px!important}.ant-steps-with-progress .ant-steps-item-icon{position:relative}.ant-steps-with-progress .ant-steps-item-icon .ant-progress{position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px}.ant-pro-steps-form-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;min-width:520px;max-width:100%;margin:auto}.ant-pro-steps-form-steps-container{max-width:1160px;margin:auto}.ant-pro-steps-form-steps-container .ant-steps-vertical{height:100%}.ant-pro-steps-form-step{display:none;margin-top:32px}.ant-pro-steps-form-step-active{display:block}.ant-pro-steps-form-step>form{max-width:100%}.ant-pro-field-light-wrapper-collapse-label{padding:1}.ant-pro-field-light-wrapper-container .ant-form-item{margin-bottom:0}.ant-alert{box-sizing:border-box;margin:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:flex;align-items:center;padding:8px 15px;word-wrap:break-word;border-radius:2px}.ant-alert-content{flex:1;min-width:0}.ant-alert-icon{margin-right:8px}.ant-alert-description{display:none;font-size:14px;line-height:22px}.ant-alert-success{background-color:#f6ffed;border:1px solid #b7eb8f}.ant-alert-success .ant-alert-icon{color:#52c41a}.ant-alert-info{background-color:#e6f7ff;border:1px solid #91d5ff}.ant-alert-info .ant-alert-icon{color:#1890ff}.ant-alert-warning{background-color:#fffbe6;border:1px solid #ffe58f}.ant-alert-warning .ant-alert-icon{color:#faad14}.ant-alert-error{background-color:#fff2f0;border:1px solid #ffccc7}.ant-alert-error .ant-alert-icon{color:#ff4d4f}.ant-alert-error .ant-alert-description>pre{margin:0;padding:0}.ant-alert-action{margin-left:8px}.ant-alert-close-icon{margin-left:8px;padding:0;overflow:hidden;font-size:12px;line-height:12px;background-color:transparent;border:none;outline:none;cursor:pointer}.ant-alert-close-icon .anticon-close{color:#00000073;transition:color .3s}.ant-alert-close-icon .anticon-close:hover{color:#000000bf}.ant-alert-close-text{color:#00000073;transition:color .3s}.ant-alert-close-text:hover{color:#000000bf}.ant-alert-with-description{align-items:flex-start;padding:15px 15px 15px 24px}.ant-alert-with-description.ant-alert-no-icon{padding:15px}.ant-alert-with-description .ant-alert-icon{margin-right:15px;font-size:24px}.ant-alert-with-description .ant-alert-message{display:block;margin-bottom:4px;color:#000000d9;font-size:16px}.ant-alert-message{color:#000000d9}.ant-alert-with-description .ant-alert-description{display:block}.ant-alert.ant-alert-motion-leave{overflow:hidden;opacity:1;transition:max-height .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86),padding-top .3s cubic-bezier(.78,.14,.15,.86),padding-bottom .3s cubic-bezier(.78,.14,.15,.86),margin-bottom .3s cubic-bezier(.78,.14,.15,.86)}.ant-alert.ant-alert-motion-leave-active{max-height:0;margin-bottom:0!important;padding-top:0;padding-bottom:0;opacity:0}.ant-alert-banner{margin-bottom:0;border:0;border-radius:0}.ant-alert.ant-alert-rtl{direction:rtl}.ant-alert-rtl .ant-alert-icon{margin-right:auto;margin-left:8px}.ant-alert-rtl .ant-alert-action,.ant-alert-rtl .ant-alert-close-icon{margin-right:8px;margin-left:auto}.ant-alert-rtl.ant-alert-with-description{padding-right:24px;padding-left:15px}.ant-alert-rtl.ant-alert-with-description .ant-alert-icon{margin-right:auto;margin-left:15px}.ant-pro-table-alert{margin-bottom:16px}.ant-pro-table-alert .ant-alert.ant-alert-no-icon{padding:12px 24px}.ant-pro-table-alert-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:all .3s;transition:all .3s}.ant-pro-table-alert-info-content{-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-pro-table-alert-info-option{min-width:48px;padding-left:16px}.ant-pro-table .ant-pro-table-search{margin-bottom:16px;padding:24px 24px 0;background:#fff}.ant-pro-table .ant-pro-table-search-ghost{background:transparent}.ant-pro-table .ant-pro-table-search:before{display:table;content:""}.ant-pro-table .ant-pro-table-search:after{display:table;clear:both;content:""}.ant-pro-table .ant-pro-table-search.ant-pro-table-form{margin:0;padding:0 16px;overflow:unset}.ant-pro-table .ant-pro-table-search-light{margin-bottom:0;padding:16px 0}.ant-pro-table .ant-pro-table-search-form-option .ant-form-item{margin:0}.ant-pro-table .ant-pro-table-search-form-option .ant-form-item-label{opacity:0}.ant-pro-table .ant-pro-table-search-form-option .ant-form-item-control-input{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}@media (max-width: 575px){.ant-pro-table .ant-pro-table-search{height:auto!important;padding-bottom:24px}.ant-pro-table .ant-pro-table-search .ant-form-item-label{min-width:80px;text-align:left}}.ant-pro-table-column-setting{width:auto}.ant-pro-table-column-setting-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:32px}.ant-pro-table-column-setting-overlay .ant-popover-inner-content{width:200px;padding:0 0 8px}.ant-pro-table-column-setting-overlay .ant-tree-node-content-wrapper:hover{background-color:transparent}.ant-pro-table-column-setting-overlay .ant-tree-draggable-icon{cursor:-webkit-grab;cursor:grab}.ant-pro-table-column-setting-overlay .ant-tree-treenode{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ant-pro-table-column-setting-overlay .ant-tree-treenode:hover{background-color:#e6f7ff}.ant-pro-table-column-setting-overlay .ant-tree-treenode:hover .ant-pro-table-column-setting-list-item-option{display:block}.ant-pro-table-column-setting-overlay .ant-tree-treenode .ant-tree-checkbox{top:0;margin:0 4px 0 0}.ant-pro-table-column-setting-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;padding-top:8px}.ant-pro-table-column-setting-list.ant-pro-table-column-setting-list-group{padding-top:0}.ant-pro-table-column-setting-list-title{margin-top:6px;margin-bottom:6px;padding-left:24px;color:#00000073;font-size:12px}.ant-pro-table-column-setting-list-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ant-pro-table-column-setting-list-item-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-pro-table-column-setting-list-item-option{display:none;float:right;cursor:pointer}.ant-pro-table-column-setting-list-item-option>span>span.anticon{color:#1890ff}.ant-pro-table-column-setting-list-item-option>span+span{margin-left:8px}.ant-pro-table-list-toolbar{line-height:1}.ant-pro-table-list-toolbar-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 0}.ant-pro-table-list-toolbar-container-mobile{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ant-pro-table-list-toolbar-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:#000000d9;font-weight:500;font-size:16px}.ant-pro-table-list-toolbar-search:not(:last-child){display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.ant-pro-table-list-toolbar-setting-item{margin:0 4px;color:#000000bf;font-size:16px;cursor:pointer}.ant-pro-table-list-toolbar-setting-item>span{display:block;width:100%;height:100%}.ant-pro-table-list-toolbar-setting-item:hover{color:#40a9ff}.ant-pro-table-list-toolbar-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.ant-pro-table-list-toolbar-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ant-pro-table-list-toolbar-extra-line{margin-bottom:16px}.ant-pro-table-list-toolbar-filter{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ant-pro-table-list-toolbar-filter:not(:last-child){margin-right:16px}.ant-pro-table-list-toolbar-filter div.ant-pro-table-search{margin:0;padding:0}.ant-pro-table-list-toolbar-inline-menu-item{display:inline-block;margin-right:24px;cursor:pointer;opacity:.75}.ant-pro-table-list-toolbar-inline-menu-item-active{font-weight:700;opacity:1}.ant-pro-table-list-toolbar-dropdownmenu-label{font-weight:700;font-size:16px;text-align:center;cursor:pointer}.ant-pro-table-list-toolbar .ant-tabs-top>.ant-tabs-nav{margin-bottom:0}.ant-pro-table-list-toolbar .ant-tabs-top>.ant-tabs-nav:before{border-bottom:0}.ant-pro-table-list-toolbar .ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-list{margin-top:0}.ant-pro-table-list-toolbar .ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-list .ant-tabs-tab{padding-top:0}@media (max-width: 575px){.ant-pro-table-list-toolbar-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.ant-pro-table-list-toolbar-left{margin-bottom:16px}}.ant-pro-table-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:64px;padding:0 24px}.ant-pro-table-toolbar-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ant-pro-table-toolbar-title{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#000000d9;font-weight:500;font-size:16px;line-height:24px;opacity:.85}@media (max-width: 480px){.ant-pro-table .ant-table{width:100%;overflow-x:auto}.ant-pro-table .ant-table-thead>tr>th,.ant-pro-table .ant-table-tbody>tr>th,.ant-pro-table .ant-table-thead>tr>td,.ant-pro-table .ant-table-tbody>tr>td{white-space:pre}.ant-pro-table .ant-table-thead>tr>th>span,.ant-pro-table .ant-table-tbody>tr>th>span,.ant-pro-table .ant-table-thead>tr>td>span,.ant-pro-table .ant-table-tbody>tr>td>span{display:block}}@media (max-width: 575px){.ant-pro-table-toolbar{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;height:auto;margin-bottom:16px;margin-left:16px;padding:16px 8px 8px;line-height:normal}.ant-pro-table-toolbar-title{margin-bottom:16px}.ant-pro-table-toolbar-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.ant-pro-table-toolbar-default-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}}.pro-table-tooltip-text span{color:#fff}.ant-pro-table{z-index:1}.ant-pro-table:not(:root):-webkit-full-screen{min-height:100vh;overflow:auto;background:#fff}.ant-pro-table:not(:root):-ms-fullscreen{min-height:100vh;overflow:auto;background:#fff}.ant-pro-table:not(:root):fullscreen{min-height:100vh;overflow:auto;background:#fff}.ant-pro-table-extra{margin-bottom:16px}.ant-pro-table-polling .ant-pro-table-list-toolbar-setting-item .anticon.anticon-reload{-webkit-transform:rotate(0deg);transform:rotate(0);-webkit-animation:turn 1s linear infinite;animation:turn 1s linear infinite}.ant-pro-table td.ant-table-cell>a{font-size:14px}.ant-pro-table .ant-table .ant-table-tbody .ant-table-wrapper:only-child .ant-table{margin:0}.ant-pro-table .ant-table.ant-table-middle .ant-pro-table{margin:-12px -8px}@-webkit-keyframes turn{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes turn{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}} diff --git a/dist/assets/Table-5199d45f.css b/dist/assets/Table-5199d45f.css new file mode 100644 index 0000000000000000000000000000000000000000..991bdcb3778298fe3c3f81aaae54ede61c9f310f --- /dev/null +++ b/dist/assets/Table-5199d45f.css @@ -0,0 +1 @@ +[class^=ant-]::-ms-clear,[class*=ant-]::-ms-clear,[class^=ant-] input::-ms-clear,[class*=ant-] input::-ms-clear,[class^=ant-] input::-ms-reveal,[class*=ant-] input::-ms-reveal{display:none}html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0;color:#000000d9;font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-variant:tabular-nums;line-height:1.5715;background-color:#fff;font-feature-settings:"tnum","tnum"}[tabindex="-1"]:focus{outline:none!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:#000000d9;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1890ff;text-decoration:none;background-color:transparent;outline:none;cursor:pointer;transition:color .3s;-webkit-text-decoration-skip:objects}a:hover{color:#40a9ff}a:active{color:#096dd9}a:active,a:hover{text-decoration:none;outline:0}a:focus{text-decoration:none;outline:0}a[disabled]{color:#00000040;cursor:not-allowed}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:#00000073;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{color:#fff;background:#1890ff}::selection{color:#fff;background:#1890ff}.clearfix:before{display:table;content:""}.clearfix:after{display:table;clear:both;content:""}.anticon{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon>.anticon{line-height:0;vertical-align:0}.anticon[tabindex]{cursor:pointer}.anticon-spin,.anticon-spin:before{display:inline-block;animation:loadingCircle 1s infinite linear}.ant-fade-enter,.ant-fade-appear,.ant-fade-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-fade-enter.ant-fade-enter-active,.ant-fade-appear.ant-fade-appear-active{animation-name:antFadeIn;animation-play-state:running}.ant-fade-leave.ant-fade-leave-active{animation-name:antFadeOut;animation-play-state:running;pointer-events:none}.ant-fade-enter,.ant-fade-appear{opacity:0;animation-timing-function:linear}.ant-fade-leave{animation-timing-function:linear}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.ant-move-up-enter,.ant-move-up-appear,.ant-move-up-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-move-up-enter.ant-move-up-enter-active,.ant-move-up-appear.ant-move-up-appear-active{animation-name:antMoveUpIn;animation-play-state:running}.ant-move-up-leave.ant-move-up-leave-active{animation-name:antMoveUpOut;animation-play-state:running;pointer-events:none}.ant-move-up-enter,.ant-move-up-appear{opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-move-up-leave{animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.ant-move-down-enter,.ant-move-down-appear,.ant-move-down-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-move-down-enter.ant-move-down-enter-active,.ant-move-down-appear.ant-move-down-appear-active{animation-name:antMoveDownIn;animation-play-state:running}.ant-move-down-leave.ant-move-down-leave-active{animation-name:antMoveDownOut;animation-play-state:running;pointer-events:none}.ant-move-down-enter,.ant-move-down-appear{opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-move-down-leave{animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.ant-move-left-enter,.ant-move-left-appear,.ant-move-left-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-move-left-enter.ant-move-left-enter-active,.ant-move-left-appear.ant-move-left-appear-active{animation-name:antMoveLeftIn;animation-play-state:running}.ant-move-left-leave.ant-move-left-leave-active{animation-name:antMoveLeftOut;animation-play-state:running;pointer-events:none}.ant-move-left-enter,.ant-move-left-appear{opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-move-left-leave{animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.ant-move-right-enter,.ant-move-right-appear,.ant-move-right-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-move-right-enter.ant-move-right-enter-active,.ant-move-right-appear.ant-move-right-appear-active{animation-name:antMoveRightIn;animation-play-state:running}.ant-move-right-leave.ant-move-right-leave-active{animation-name:antMoveRightOut;animation-play-state:running;pointer-events:none}.ant-move-right-enter,.ant-move-right-appear{opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-move-right-leave{animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@keyframes antMoveDownIn{0%{transform:translateY(100%);transform-origin:0 0;opacity:0}to{transform:translateY(0);transform-origin:0 0;opacity:1}}@keyframes antMoveDownOut{0%{transform:translateY(0);transform-origin:0 0;opacity:1}to{transform:translateY(100%);transform-origin:0 0;opacity:0}}@keyframes antMoveLeftIn{0%{transform:translate(-100%);transform-origin:0 0;opacity:0}to{transform:translate(0);transform-origin:0 0;opacity:1}}@keyframes antMoveLeftOut{0%{transform:translate(0);transform-origin:0 0;opacity:1}to{transform:translate(-100%);transform-origin:0 0;opacity:0}}@keyframes antMoveRightIn{0%{transform:translate(100%);transform-origin:0 0;opacity:0}to{transform:translate(0);transform-origin:0 0;opacity:1}}@keyframes antMoveRightOut{0%{transform:translate(0);transform-origin:0 0;opacity:1}to{transform:translate(100%);transform-origin:0 0;opacity:0}}@keyframes antMoveUpIn{0%{transform:translateY(-100%);transform-origin:0 0;opacity:0}to{transform:translateY(0);transform-origin:0 0;opacity:1}}@keyframes antMoveUpOut{0%{transform:translateY(0);transform-origin:0 0;opacity:1}to{transform:translateY(-100%);transform-origin:0 0;opacity:0}}@keyframes loadingCircle{to{transform:rotate(360deg)}}[ant-click-animating=true],[ant-click-animating-without-extra-node=true]{position:relative}html{--antd-wave-shadow-color: #1890ff;--scroll-bar: 0}[ant-click-animating-without-extra-node=true]:after,.ant-click-animating-node{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border-radius:inherit;box-shadow:0 0 #1890ff;box-shadow:0 0 0 0 var(--antd-wave-shadow-color);opacity:.2;animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation-fill-mode:forwards;content:"";pointer-events:none}@keyframes waveEffect{to{box-shadow:0 0 #1890ff;box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@keyframes fadeEffect{to{opacity:0}}.ant-slide-up-enter,.ant-slide-up-appear,.ant-slide-up-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-slide-up-enter.ant-slide-up-enter-active,.ant-slide-up-appear.ant-slide-up-appear-active{animation-name:antSlideUpIn;animation-play-state:running}.ant-slide-up-leave.ant-slide-up-leave-active{animation-name:antSlideUpOut;animation-play-state:running;pointer-events:none}.ant-slide-up-enter,.ant-slide-up-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(.23,1,.32,1)}.ant-slide-up-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.ant-slide-down-enter,.ant-slide-down-appear,.ant-slide-down-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-slide-down-enter.ant-slide-down-enter-active,.ant-slide-down-appear.ant-slide-down-appear-active{animation-name:antSlideDownIn;animation-play-state:running}.ant-slide-down-leave.ant-slide-down-leave-active{animation-name:antSlideDownOut;animation-play-state:running;pointer-events:none}.ant-slide-down-enter,.ant-slide-down-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(.23,1,.32,1)}.ant-slide-down-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.ant-slide-left-enter,.ant-slide-left-appear,.ant-slide-left-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-slide-left-enter.ant-slide-left-enter-active,.ant-slide-left-appear.ant-slide-left-appear-active{animation-name:antSlideLeftIn;animation-play-state:running}.ant-slide-left-leave.ant-slide-left-leave-active{animation-name:antSlideLeftOut;animation-play-state:running;pointer-events:none}.ant-slide-left-enter,.ant-slide-left-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(.23,1,.32,1)}.ant-slide-left-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.ant-slide-right-enter,.ant-slide-right-appear,.ant-slide-right-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-slide-right-enter.ant-slide-right-enter-active,.ant-slide-right-appear.ant-slide-right-appear-active{animation-name:antSlideRightIn;animation-play-state:running}.ant-slide-right-leave.ant-slide-right-leave-active{animation-name:antSlideRightOut;animation-play-state:running;pointer-events:none}.ant-slide-right-enter,.ant-slide-right-appear{transform:scale(0);transform-origin:0% 0%;opacity:0;animation-timing-function:cubic-bezier(.23,1,.32,1)}.ant-slide-right-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@keyframes antSlideUpIn{0%{transform:scaleY(.8);transform-origin:0% 0%;opacity:0}to{transform:scaleY(1);transform-origin:0% 0%;opacity:1}}@keyframes antSlideUpOut{0%{transform:scaleY(1);transform-origin:0% 0%;opacity:1}to{transform:scaleY(.8);transform-origin:0% 0%;opacity:0}}@keyframes antSlideDownIn{0%{transform:scaleY(.8);transform-origin:100% 100%;opacity:0}to{transform:scaleY(1);transform-origin:100% 100%;opacity:1}}@keyframes antSlideDownOut{0%{transform:scaleY(1);transform-origin:100% 100%;opacity:1}to{transform:scaleY(.8);transform-origin:100% 100%;opacity:0}}@keyframes antSlideLeftIn{0%{transform:scaleX(.8);transform-origin:0% 0%;opacity:0}to{transform:scaleX(1);transform-origin:0% 0%;opacity:1}}@keyframes antSlideLeftOut{0%{transform:scaleX(1);transform-origin:0% 0%;opacity:1}to{transform:scaleX(.8);transform-origin:0% 0%;opacity:0}}@keyframes antSlideRightIn{0%{transform:scaleX(.8);transform-origin:100% 0%;opacity:0}to{transform:scaleX(1);transform-origin:100% 0%;opacity:1}}@keyframes antSlideRightOut{0%{transform:scaleX(1);transform-origin:100% 0%;opacity:1}to{transform:scaleX(.8);transform-origin:100% 0%;opacity:0}}.ant-zoom-enter,.ant-zoom-appear,.ant-zoom-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-enter.ant-zoom-enter-active,.ant-zoom-appear.ant-zoom-appear-active{animation-name:antZoomIn;animation-play-state:running}.ant-zoom-leave.ant-zoom-leave-active{animation-name:antZoomOut;animation-play-state:running;pointer-events:none}.ant-zoom-enter,.ant-zoom-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-enter-prepare,.ant-zoom-appear-prepare{transform:none}.ant-zoom-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-big-enter,.ant-zoom-big-appear,.ant-zoom-big-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-big-enter.ant-zoom-big-enter-active,.ant-zoom-big-appear.ant-zoom-big-appear-active{animation-name:antZoomBigIn;animation-play-state:running}.ant-zoom-big-leave.ant-zoom-big-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none}.ant-zoom-big-enter,.ant-zoom-big-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-big-enter-prepare,.ant-zoom-big-appear-prepare{transform:none}.ant-zoom-big-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-big-fast-enter,.ant-zoom-big-fast-appear,.ant-zoom-big-fast-leave{animation-duration:.1s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-big-fast-enter.ant-zoom-big-fast-enter-active,.ant-zoom-big-fast-appear.ant-zoom-big-fast-appear-active{animation-name:antZoomBigIn;animation-play-state:running}.ant-zoom-big-fast-leave.ant-zoom-big-fast-leave-active{animation-name:antZoomBigOut;animation-play-state:running;pointer-events:none}.ant-zoom-big-fast-enter,.ant-zoom-big-fast-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-big-fast-enter-prepare,.ant-zoom-big-fast-appear-prepare{transform:none}.ant-zoom-big-fast-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-up-enter,.ant-zoom-up-appear,.ant-zoom-up-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-up-enter.ant-zoom-up-enter-active,.ant-zoom-up-appear.ant-zoom-up-appear-active{animation-name:antZoomUpIn;animation-play-state:running}.ant-zoom-up-leave.ant-zoom-up-leave-active{animation-name:antZoomUpOut;animation-play-state:running;pointer-events:none}.ant-zoom-up-enter,.ant-zoom-up-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-up-enter-prepare,.ant-zoom-up-appear-prepare{transform:none}.ant-zoom-up-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-down-enter,.ant-zoom-down-appear,.ant-zoom-down-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-down-enter.ant-zoom-down-enter-active,.ant-zoom-down-appear.ant-zoom-down-appear-active{animation-name:antZoomDownIn;animation-play-state:running}.ant-zoom-down-leave.ant-zoom-down-leave-active{animation-name:antZoomDownOut;animation-play-state:running;pointer-events:none}.ant-zoom-down-enter,.ant-zoom-down-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-down-enter-prepare,.ant-zoom-down-appear-prepare{transform:none}.ant-zoom-down-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-left-enter,.ant-zoom-left-appear,.ant-zoom-left-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-left-enter.ant-zoom-left-enter-active,.ant-zoom-left-appear.ant-zoom-left-appear-active{animation-name:antZoomLeftIn;animation-play-state:running}.ant-zoom-left-leave.ant-zoom-left-leave-active{animation-name:antZoomLeftOut;animation-play-state:running;pointer-events:none}.ant-zoom-left-enter,.ant-zoom-left-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-left-enter-prepare,.ant-zoom-left-appear-prepare{transform:none}.ant-zoom-left-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.ant-zoom-right-enter,.ant-zoom-right-appear,.ant-zoom-right-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}.ant-zoom-right-enter.ant-zoom-right-enter-active,.ant-zoom-right-appear.ant-zoom-right-appear-active{animation-name:antZoomRightIn;animation-play-state:running}.ant-zoom-right-leave.ant-zoom-right-leave-active{animation-name:antZoomRightOut;animation-play-state:running;pointer-events:none}.ant-zoom-right-enter,.ant-zoom-right-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}.ant-zoom-right-enter-prepare,.ant-zoom-right-appear-prepare{transform:none}.ant-zoom-right-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@keyframes antZoomIn{0%{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}@keyframes antZoomOut{0%{transform:scale(1)}to{transform:scale(.2);opacity:0}}@keyframes antZoomBigIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes antZoomBigOut{0%{transform:scale(1)}to{transform:scale(.8);opacity:0}}@keyframes antZoomUpIn{0%{transform:scale(.8);transform-origin:50% 0%;opacity:0}to{transform:scale(1);transform-origin:50% 0%}}@keyframes antZoomUpOut{0%{transform:scale(1);transform-origin:50% 0%}to{transform:scale(.8);transform-origin:50% 0%;opacity:0}}@keyframes antZoomLeftIn{0%{transform:scale(.8);transform-origin:0% 50%;opacity:0}to{transform:scale(1);transform-origin:0% 50%}}@keyframes antZoomLeftOut{0%{transform:scale(1);transform-origin:0% 50%}to{transform:scale(.8);transform-origin:0% 50%;opacity:0}}@keyframes antZoomRightIn{0%{transform:scale(.8);transform-origin:100% 50%;opacity:0}to{transform:scale(1);transform-origin:100% 50%}}@keyframes antZoomRightOut{0%{transform:scale(1);transform-origin:100% 50%}to{transform:scale(.8);transform-origin:100% 50%;opacity:0}}@keyframes antZoomDownIn{0%{transform:scale(.8);transform-origin:50% 100%;opacity:0}to{transform:scale(1);transform-origin:50% 100%}}@keyframes antZoomDownOut{0%{transform:scale(1);transform-origin:50% 100%}to{transform:scale(.8);transform-origin:50% 100%;opacity:0}}.ant-motion-collapse-legacy{overflow:hidden}.ant-motion-collapse-legacy-active{transition:height .2s cubic-bezier(.645,.045,.355,1),opacity .2s cubic-bezier(.645,.045,.355,1)!important}.ant-motion-collapse{overflow:hidden;transition:height .2s cubic-bezier(.645,.045,.355,1),opacity .2s cubic-bezier(.645,.045,.355,1)!important}.ant-avatar{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-block;overflow:hidden;color:#fff;white-space:nowrap;text-align:center;vertical-align:middle;background:#ccc;width:32px;height:32px;line-height:32px;border-radius:50%}.ant-avatar-image{background:transparent}.ant-avatar .ant-image-img{display:block}.ant-avatar-string{position:absolute;left:50%;transform-origin:0 center}.ant-avatar.ant-avatar-icon{font-size:18px}.ant-avatar.ant-avatar-icon>.anticon{margin:0}.ant-avatar-lg{width:40px;height:40px;line-height:40px;border-radius:50%}.ant-avatar-lg-string{position:absolute;left:50%;transform-origin:0 center}.ant-avatar-lg.ant-avatar-icon{font-size:24px}.ant-avatar-lg.ant-avatar-icon>.anticon{margin:0}.ant-avatar-sm{width:24px;height:24px;line-height:24px;border-radius:50%}.ant-avatar-sm-string{position:absolute;left:50%;transform-origin:0 center}.ant-avatar-sm.ant-avatar-icon{font-size:14px}.ant-avatar-sm.ant-avatar-icon>.anticon{margin:0}.ant-avatar-square{border-radius:2px}.ant-avatar>img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.ant-avatar-group{display:inline-flex}.ant-avatar-group .ant-avatar{border:1px solid #fff}.ant-avatar-group .ant-avatar:not(:first-child){margin-left:-8px}.ant-avatar-group-popover .ant-avatar+.ant-avatar{margin-left:3px}.ant-avatar-group-rtl .ant-avatar:not(:first-child){margin-right:-8px;margin-left:0}.ant-avatar-group-popover.ant-popover-rtl .ant-avatar+.ant-avatar{margin-right:3px;margin-left:0}.ant-popover{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;top:0;left:0;z-index:1030;max-width:100vw;font-weight:400;white-space:normal;text-align:left;cursor:auto;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ant-popover-content{position:relative}.ant-popover:after{position:absolute;background:rgba(255,255,255,.01);content:""}.ant-popover-hidden{display:none}.ant-popover-placement-top,.ant-popover-placement-topLeft,.ant-popover-placement-topRight{padding-bottom:15.3137085px}.ant-popover-placement-right,.ant-popover-placement-rightTop,.ant-popover-placement-rightBottom{padding-left:15.3137085px}.ant-popover-placement-bottom,.ant-popover-placement-bottomLeft,.ant-popover-placement-bottomRight{padding-top:15.3137085px}.ant-popover-placement-left,.ant-popover-placement-leftTop,.ant-popover-placement-leftBottom{padding-right:15.3137085px}.ant-popover-inner{background-color:#fff;background-clip:padding-box;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.ant-popover-inner{box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}}.ant-popover-title{min-width:177px;min-height:32px;margin:0;padding:5px 16px 4px;color:#000000d9;font-weight:500;border-bottom:1px solid #f0f0f0}.ant-popover-inner-content{width:-moz-max-content;width:max-content;max-width:100%;padding:12px 16px;color:#000000d9}.ant-popover-message{display:flex;padding:4px 0 12px;color:#000000d9;font-size:14px}.ant-popover-message-icon{display:inline-block;margin-right:8px;color:#faad14;font-size:14px}.ant-popover-buttons{margin-bottom:4px;text-align:right}.ant-popover-buttons button:not(:first-child){margin-left:8px}.ant-popover-arrow{position:absolute;display:block;width:22px;height:22px;overflow:hidden;background:transparent;pointer-events:none}.ant-popover-arrow-content{--antd-arrow-background-color: #fff;position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:11.3137085px;height:11.3137085px;margin:auto;content:"";pointer-events:auto;border-radius:0 0 2px;pointer-events:none}.ant-popover-arrow-content:before{position:absolute;top:-11.3137085px;left:-11.3137085px;width:33.9411255px;height:33.9411255px;background:var(--antd-arrow-background-color);background-repeat:no-repeat;background-position:-10px -10px;content:"";clip-path:inset(33% 33%);clip-path:path("M 9.849242404917499 24.091883092036785 A 5 5 0 0 1 13.384776310850237 22.627416997969522 L 20.627416997969522 22.627416997969522 A 2 2 0 0 0 22.627416997969522 20.627416997969522 L 22.627416997969522 13.384776310850237 A 5 5 0 0 1 24.091883092036785 9.849242404917499 L 23.091883092036785 9.849242404917499 L 9.849242404917499 23.091883092036785 Z")}.ant-popover-placement-top .ant-popover-arrow,.ant-popover-placement-topLeft .ant-popover-arrow,.ant-popover-placement-topRight .ant-popover-arrow{bottom:0;transform:translateY(100%)}.ant-popover-placement-top .ant-popover-arrow-content,.ant-popover-placement-topLeft .ant-popover-arrow-content,.ant-popover-placement-topRight .ant-popover-arrow-content{box-shadow:3px 3px 7px #00000012;transform:translateY(-11px) rotate(45deg)}.ant-popover-placement-top .ant-popover-arrow{left:50%;transform:translateY(100%) translate(-50%)}.ant-popover-placement-topLeft .ant-popover-arrow{left:16px}.ant-popover-placement-topRight .ant-popover-arrow{right:16px}.ant-popover-placement-right .ant-popover-arrow,.ant-popover-placement-rightTop .ant-popover-arrow,.ant-popover-placement-rightBottom .ant-popover-arrow{left:0;transform:translate(-100%)}.ant-popover-placement-right .ant-popover-arrow-content,.ant-popover-placement-rightTop .ant-popover-arrow-content,.ant-popover-placement-rightBottom .ant-popover-arrow-content{box-shadow:3px 3px 7px #00000012;transform:translate(11px) rotate(135deg)}.ant-popover-placement-right .ant-popover-arrow{top:50%;transform:translate(-100%) translateY(-50%)}.ant-popover-placement-rightTop .ant-popover-arrow{top:12px}.ant-popover-placement-rightBottom .ant-popover-arrow{bottom:12px}.ant-popover-placement-bottom .ant-popover-arrow,.ant-popover-placement-bottomLeft .ant-popover-arrow,.ant-popover-placement-bottomRight .ant-popover-arrow{top:0;transform:translateY(-100%)}.ant-popover-placement-bottom .ant-popover-arrow-content,.ant-popover-placement-bottomLeft .ant-popover-arrow-content,.ant-popover-placement-bottomRight .ant-popover-arrow-content{box-shadow:2px 2px 5px #0000000f;transform:translateY(11px) rotate(-135deg)}.ant-popover-placement-bottom .ant-popover-arrow{left:50%;transform:translateY(-100%) translate(-50%)}.ant-popover-placement-bottomLeft .ant-popover-arrow{left:16px}.ant-popover-placement-bottomRight .ant-popover-arrow{right:16px}.ant-popover-placement-left .ant-popover-arrow,.ant-popover-placement-leftTop .ant-popover-arrow,.ant-popover-placement-leftBottom .ant-popover-arrow{right:0;transform:translate(100%)}.ant-popover-placement-left .ant-popover-arrow-content,.ant-popover-placement-leftTop .ant-popover-arrow-content,.ant-popover-placement-leftBottom .ant-popover-arrow-content{box-shadow:3px 3px 7px #00000012;transform:translate(-11px) rotate(-45deg)}.ant-popover-placement-left .ant-popover-arrow{top:50%;transform:translate(100%) translateY(-50%)}.ant-popover-placement-leftTop .ant-popover-arrow{top:12px}.ant-popover-placement-leftBottom .ant-popover-arrow{bottom:12px}.ant-popover-pink .ant-popover-inner,.ant-popover-pink .ant-popover-arrow-content,.ant-popover-magenta .ant-popover-inner,.ant-popover-magenta .ant-popover-arrow-content{background-color:#eb2f96}.ant-popover-red .ant-popover-inner,.ant-popover-red .ant-popover-arrow-content{background-color:#f5222d}.ant-popover-volcano .ant-popover-inner,.ant-popover-volcano .ant-popover-arrow-content{background-color:#fa541c}.ant-popover-orange .ant-popover-inner,.ant-popover-orange .ant-popover-arrow-content{background-color:#fa8c16}.ant-popover-yellow .ant-popover-inner,.ant-popover-yellow .ant-popover-arrow-content{background-color:#fadb14}.ant-popover-gold .ant-popover-inner,.ant-popover-gold .ant-popover-arrow-content{background-color:#faad14}.ant-popover-cyan .ant-popover-inner,.ant-popover-cyan .ant-popover-arrow-content{background-color:#13c2c2}.ant-popover-lime .ant-popover-inner,.ant-popover-lime .ant-popover-arrow-content{background-color:#a0d911}.ant-popover-green .ant-popover-inner,.ant-popover-green .ant-popover-arrow-content{background-color:#52c41a}.ant-popover-blue .ant-popover-inner,.ant-popover-blue .ant-popover-arrow-content{background-color:#1890ff}.ant-popover-geekblue .ant-popover-inner,.ant-popover-geekblue .ant-popover-arrow-content{background-color:#2f54eb}.ant-popover-purple .ant-popover-inner,.ant-popover-purple .ant-popover-arrow-content{background-color:#722ed1}.ant-popover-rtl{direction:rtl;text-align:right}.ant-popover-rtl .ant-popover-message-icon{margin-right:0;margin-left:8px}.ant-popover-rtl .ant-popover-message-title{padding-left:16px}.ant-popover-rtl .ant-popover-buttons{text-align:left}.ant-popover-rtl .ant-popover-buttons button{margin-right:8px;margin-left:0}.ant-btn{line-height:1.5715;position:relative;display:inline-block;font-weight:400;white-space:nowrap;text-align:center;background-image:none;border:1px solid transparent;box-shadow:0 2px #00000004;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;touch-action:manipulation;height:32px;padding:4px 15px;font-size:14px;border-radius:2px;color:#000000d9;border-color:#d9d9d9;background:#fff}.ant-btn>.anticon{line-height:1}.ant-btn,.ant-btn:active,.ant-btn:focus{outline:0}.ant-btn:not([disabled]):hover{text-decoration:none}.ant-btn:not([disabled]):active{outline:0;box-shadow:none}.ant-btn[disabled]{cursor:not-allowed}.ant-btn[disabled]>*{pointer-events:none}.ant-btn-lg{height:40px;padding:6.4px 15px;font-size:16px;border-radius:2px}.ant-btn-sm{height:24px;padding:0 7px;font-size:14px;border-radius:2px}.ant-btn>a:only-child{color:currentcolor}.ant-btn>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn:hover,.ant-btn:focus{color:#40a9ff;border-color:#40a9ff;background:#fff}.ant-btn:hover>a:only-child,.ant-btn:focus>a:only-child{color:currentcolor}.ant-btn:hover>a:only-child:after,.ant-btn:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn:active{color:#096dd9;border-color:#096dd9;background:#fff}.ant-btn:active>a:only-child{color:currentcolor}.ant-btn:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn[disabled],.ant-btn[disabled]:hover,.ant-btn[disabled]:focus,.ant-btn[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn[disabled]>a:only-child,.ant-btn[disabled]:hover>a:only-child,.ant-btn[disabled]:focus>a:only-child,.ant-btn[disabled]:active>a:only-child{color:currentcolor}.ant-btn[disabled]>a:only-child:after,.ant-btn[disabled]:hover>a:only-child:after,.ant-btn[disabled]:focus>a:only-child:after,.ant-btn[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn:hover,.ant-btn:focus,.ant-btn:active{text-decoration:none;background:#fff}.ant-btn>span{display:inline-block}.ant-btn-primary{color:#fff;border-color:#1890ff;background:#1890ff;text-shadow:0 -1px 0 rgba(0,0,0,.12);box-shadow:0 2px #0000000b}.ant-btn-primary>a:only-child{color:currentcolor}.ant-btn-primary>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-primary:hover,.ant-btn-primary:focus{color:#fff;border-color:#40a9ff;background:#40a9ff}.ant-btn-primary:hover>a:only-child,.ant-btn-primary:focus>a:only-child{color:currentcolor}.ant-btn-primary:hover>a:only-child:after,.ant-btn-primary:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-primary:active{color:#fff;border-color:#096dd9;background:#096dd9}.ant-btn-primary:active>a:only-child{color:currentcolor}.ant-btn-primary:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-primary[disabled],.ant-btn-primary[disabled]:hover,.ant-btn-primary[disabled]:focus,.ant-btn-primary[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-primary[disabled]>a:only-child,.ant-btn-primary[disabled]:hover>a:only-child,.ant-btn-primary[disabled]:focus>a:only-child,.ant-btn-primary[disabled]:active>a:only-child{color:currentcolor}.ant-btn-primary[disabled]>a:only-child:after,.ant-btn-primary[disabled]:hover>a:only-child:after,.ant-btn-primary[disabled]:focus>a:only-child:after,.ant-btn-primary[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child){border-right-color:#40a9ff;border-left-color:#40a9ff}.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled{border-color:#d9d9d9}.ant-btn-group .ant-btn-primary:first-child:not(:last-child){border-right-color:#40a9ff}.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled]{border-right-color:#d9d9d9}.ant-btn-group .ant-btn-primary:last-child:not(:first-child),.ant-btn-group .ant-btn-primary+.ant-btn-primary{border-left-color:#40a9ff}.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],.ant-btn-group .ant-btn-primary+.ant-btn-primary[disabled]{border-left-color:#d9d9d9}.ant-btn-ghost{color:#000000d9;border-color:#d9d9d9;background:transparent}.ant-btn-ghost>a:only-child{color:currentcolor}.ant-btn-ghost>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-ghost:hover,.ant-btn-ghost:focus{color:#40a9ff;border-color:#40a9ff;background:transparent}.ant-btn-ghost:hover>a:only-child,.ant-btn-ghost:focus>a:only-child{color:currentcolor}.ant-btn-ghost:hover>a:only-child:after,.ant-btn-ghost:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-ghost:active{color:#096dd9;border-color:#096dd9;background:transparent}.ant-btn-ghost:active>a:only-child{color:currentcolor}.ant-btn-ghost:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-ghost[disabled],.ant-btn-ghost[disabled]:hover,.ant-btn-ghost[disabled]:focus,.ant-btn-ghost[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-ghost[disabled]>a:only-child,.ant-btn-ghost[disabled]:hover>a:only-child,.ant-btn-ghost[disabled]:focus>a:only-child,.ant-btn-ghost[disabled]:active>a:only-child{color:currentcolor}.ant-btn-ghost[disabled]>a:only-child:after,.ant-btn-ghost[disabled]:hover>a:only-child:after,.ant-btn-ghost[disabled]:focus>a:only-child:after,.ant-btn-ghost[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed{color:#000000d9;border-color:#d9d9d9;background:#fff;border-style:dashed}.ant-btn-dashed>a:only-child{color:currentcolor}.ant-btn-dashed>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed:hover,.ant-btn-dashed:focus{color:#40a9ff;border-color:#40a9ff;background:#fff}.ant-btn-dashed:hover>a:only-child,.ant-btn-dashed:focus>a:only-child{color:currentcolor}.ant-btn-dashed:hover>a:only-child:after,.ant-btn-dashed:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed:active{color:#096dd9;border-color:#096dd9;background:#fff}.ant-btn-dashed:active>a:only-child{color:currentcolor}.ant-btn-dashed:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed[disabled],.ant-btn-dashed[disabled]:hover,.ant-btn-dashed[disabled]:focus,.ant-btn-dashed[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-dashed[disabled]>a:only-child,.ant-btn-dashed[disabled]:hover>a:only-child,.ant-btn-dashed[disabled]:focus>a:only-child,.ant-btn-dashed[disabled]:active>a:only-child{color:currentcolor}.ant-btn-dashed[disabled]>a:only-child:after,.ant-btn-dashed[disabled]:hover>a:only-child:after,.ant-btn-dashed[disabled]:focus>a:only-child:after,.ant-btn-dashed[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger{color:#fff;border-color:#ff4d4f;background:#ff4d4f;text-shadow:0 -1px 0 rgba(0,0,0,.12);box-shadow:0 2px #0000000b}.ant-btn-danger>a:only-child{color:currentcolor}.ant-btn-danger>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger:hover,.ant-btn-danger:focus{color:#fff;border-color:#ff7875;background:#ff7875}.ant-btn-danger:hover>a:only-child,.ant-btn-danger:focus>a:only-child{color:currentcolor}.ant-btn-danger:hover>a:only-child:after,.ant-btn-danger:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger:active{color:#fff;border-color:#d9363e;background:#d9363e}.ant-btn-danger:active>a:only-child{color:currentcolor}.ant-btn-danger:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger[disabled],.ant-btn-danger[disabled]:hover,.ant-btn-danger[disabled]:focus,.ant-btn-danger[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-danger[disabled]>a:only-child,.ant-btn-danger[disabled]:hover>a:only-child,.ant-btn-danger[disabled]:focus>a:only-child,.ant-btn-danger[disabled]:active>a:only-child{color:currentcolor}.ant-btn-danger[disabled]>a:only-child:after,.ant-btn-danger[disabled]:hover>a:only-child:after,.ant-btn-danger[disabled]:focus>a:only-child:after,.ant-btn-danger[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link{color:#1890ff;border-color:transparent;background:transparent;box-shadow:none}.ant-btn-link>a:only-child{color:currentcolor}.ant-btn-link>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link:hover,.ant-btn-link:focus{color:#40a9ff;border-color:#40a9ff;background:transparent}.ant-btn-link:hover>a:only-child,.ant-btn-link:focus>a:only-child{color:currentcolor}.ant-btn-link:hover>a:only-child:after,.ant-btn-link:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link:active{color:#096dd9;border-color:#096dd9;background:transparent}.ant-btn-link:active>a:only-child{color:currentcolor}.ant-btn-link:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link[disabled],.ant-btn-link[disabled]:hover,.ant-btn-link[disabled]:focus,.ant-btn-link[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-link:hover{background:transparent}.ant-btn-link:hover,.ant-btn-link:focus,.ant-btn-link:active{border-color:transparent}.ant-btn-link[disabled],.ant-btn-link[disabled]:hover,.ant-btn-link[disabled]:focus,.ant-btn-link[disabled]:active{color:#00000040;border-color:transparent;background:transparent;text-shadow:none;box-shadow:none}.ant-btn-link[disabled]>a:only-child,.ant-btn-link[disabled]:hover>a:only-child,.ant-btn-link[disabled]:focus>a:only-child,.ant-btn-link[disabled]:active>a:only-child{color:currentcolor}.ant-btn-link[disabled]>a:only-child:after,.ant-btn-link[disabled]:hover>a:only-child:after,.ant-btn-link[disabled]:focus>a:only-child:after,.ant-btn-link[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-text{color:#000000d9;border-color:transparent;background:transparent;box-shadow:none}.ant-btn-text>a:only-child{color:currentcolor}.ant-btn-text>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-text:hover,.ant-btn-text:focus{color:#40a9ff;border-color:#40a9ff;background:transparent}.ant-btn-text:hover>a:only-child,.ant-btn-text:focus>a:only-child{color:currentcolor}.ant-btn-text:hover>a:only-child:after,.ant-btn-text:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-text:active{color:#096dd9;border-color:#096dd9;background:transparent}.ant-btn-text:active>a:only-child{color:currentcolor}.ant-btn-text:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-text[disabled],.ant-btn-text[disabled]:hover,.ant-btn-text[disabled]:focus,.ant-btn-text[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-text:hover,.ant-btn-text:focus{color:#000000d9;background:rgba(0,0,0,.018);border-color:transparent}.ant-btn-text:active{color:#000000d9;background:rgba(0,0,0,.028);border-color:transparent}.ant-btn-text[disabled],.ant-btn-text[disabled]:hover,.ant-btn-text[disabled]:focus,.ant-btn-text[disabled]:active{color:#00000040;border-color:transparent;background:transparent;text-shadow:none;box-shadow:none}.ant-btn-text[disabled]>a:only-child,.ant-btn-text[disabled]:hover>a:only-child,.ant-btn-text[disabled]:focus>a:only-child,.ant-btn-text[disabled]:active>a:only-child{color:currentcolor}.ant-btn-text[disabled]>a:only-child:after,.ant-btn-text[disabled]:hover>a:only-child:after,.ant-btn-text[disabled]:focus>a:only-child:after,.ant-btn-text[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous{color:#ff4d4f;border-color:#ff4d4f;background:#fff}.ant-btn-dangerous>a:only-child{color:currentcolor}.ant-btn-dangerous>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous:hover,.ant-btn-dangerous:focus{color:#ff7875;border-color:#ff7875;background:#fff}.ant-btn-dangerous:hover>a:only-child,.ant-btn-dangerous:focus>a:only-child{color:currentcolor}.ant-btn-dangerous:hover>a:only-child:after,.ant-btn-dangerous:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous:active{color:#d9363e;border-color:#d9363e;background:#fff}.ant-btn-dangerous:active>a:only-child{color:currentcolor}.ant-btn-dangerous:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous[disabled],.ant-btn-dangerous[disabled]:hover,.ant-btn-dangerous[disabled]:focus,.ant-btn-dangerous[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-dangerous[disabled]>a:only-child,.ant-btn-dangerous[disabled]:hover>a:only-child,.ant-btn-dangerous[disabled]:focus>a:only-child,.ant-btn-dangerous[disabled]:active>a:only-child{color:currentcolor}.ant-btn-dangerous[disabled]>a:only-child:after,.ant-btn-dangerous[disabled]:hover>a:only-child:after,.ant-btn-dangerous[disabled]:focus>a:only-child:after,.ant-btn-dangerous[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-primary{color:#fff;border-color:#ff4d4f;background:#ff4d4f;text-shadow:0 -1px 0 rgba(0,0,0,.12);box-shadow:0 2px #0000000b}.ant-btn-dangerous.ant-btn-primary>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-primary>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-primary:hover,.ant-btn-dangerous.ant-btn-primary:focus{color:#fff;border-color:#ff7875;background:#ff7875}.ant-btn-dangerous.ant-btn-primary:hover>a:only-child,.ant-btn-dangerous.ant-btn-primary:focus>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-primary:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-primary:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-primary:active{color:#fff;border-color:#d9363e;background:#d9363e}.ant-btn-dangerous.ant-btn-primary:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-primary:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-primary[disabled],.ant-btn-dangerous.ant-btn-primary[disabled]:hover,.ant-btn-dangerous.ant-btn-primary[disabled]:focus,.ant-btn-dangerous.ant-btn-primary[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-dangerous.ant-btn-primary[disabled]>a:only-child,.ant-btn-dangerous.ant-btn-primary[disabled]:hover>a:only-child,.ant-btn-dangerous.ant-btn-primary[disabled]:focus>a:only-child,.ant-btn-dangerous.ant-btn-primary[disabled]:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-primary[disabled]>a:only-child:after,.ant-btn-dangerous.ant-btn-primary[disabled]:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-primary[disabled]:focus>a:only-child:after,.ant-btn-dangerous.ant-btn-primary[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-link{color:#ff4d4f;border-color:transparent;background:transparent;box-shadow:none}.ant-btn-dangerous.ant-btn-link>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-link>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-link:hover,.ant-btn-dangerous.ant-btn-link:focus{color:#40a9ff;border-color:#40a9ff;background:transparent}.ant-btn-dangerous.ant-btn-link:active{color:#096dd9;border-color:#096dd9;background:transparent}.ant-btn-dangerous.ant-btn-link[disabled],.ant-btn-dangerous.ant-btn-link[disabled]:hover,.ant-btn-dangerous.ant-btn-link[disabled]:focus,.ant-btn-dangerous.ant-btn-link[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-dangerous.ant-btn-link:hover,.ant-btn-dangerous.ant-btn-link:focus{color:#ff7875;border-color:transparent;background:transparent}.ant-btn-dangerous.ant-btn-link:hover>a:only-child,.ant-btn-dangerous.ant-btn-link:focus>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-link:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-link:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-link:active{color:#d9363e;border-color:transparent;background:transparent}.ant-btn-dangerous.ant-btn-link:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-link:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-link[disabled],.ant-btn-dangerous.ant-btn-link[disabled]:hover,.ant-btn-dangerous.ant-btn-link[disabled]:focus,.ant-btn-dangerous.ant-btn-link[disabled]:active{color:#00000040;border-color:transparent;background:transparent;text-shadow:none;box-shadow:none}.ant-btn-dangerous.ant-btn-link[disabled]>a:only-child,.ant-btn-dangerous.ant-btn-link[disabled]:hover>a:only-child,.ant-btn-dangerous.ant-btn-link[disabled]:focus>a:only-child,.ant-btn-dangerous.ant-btn-link[disabled]:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-link[disabled]>a:only-child:after,.ant-btn-dangerous.ant-btn-link[disabled]:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-link[disabled]:focus>a:only-child:after,.ant-btn-dangerous.ant-btn-link[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-text{color:#ff4d4f;border-color:transparent;background:transparent;box-shadow:none}.ant-btn-dangerous.ant-btn-text>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-text>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-text:hover,.ant-btn-dangerous.ant-btn-text:focus{color:#40a9ff;border-color:#40a9ff;background:transparent}.ant-btn-dangerous.ant-btn-text:active{color:#096dd9;border-color:#096dd9;background:transparent}.ant-btn-dangerous.ant-btn-text[disabled],.ant-btn-dangerous.ant-btn-text[disabled]:hover,.ant-btn-dangerous.ant-btn-text[disabled]:focus,.ant-btn-dangerous.ant-btn-text[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-dangerous.ant-btn-text:hover,.ant-btn-dangerous.ant-btn-text:focus{color:#ff7875;border-color:transparent;background:rgba(0,0,0,.018)}.ant-btn-dangerous.ant-btn-text:hover>a:only-child,.ant-btn-dangerous.ant-btn-text:focus>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-text:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-text:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-text:active{color:#d9363e;border-color:transparent;background:rgba(0,0,0,.028)}.ant-btn-dangerous.ant-btn-text:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-text:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dangerous.ant-btn-text[disabled],.ant-btn-dangerous.ant-btn-text[disabled]:hover,.ant-btn-dangerous.ant-btn-text[disabled]:focus,.ant-btn-dangerous.ant-btn-text[disabled]:active{color:#00000040;border-color:transparent;background:transparent;text-shadow:none;box-shadow:none}.ant-btn-dangerous.ant-btn-text[disabled]>a:only-child,.ant-btn-dangerous.ant-btn-text[disabled]:hover>a:only-child,.ant-btn-dangerous.ant-btn-text[disabled]:focus>a:only-child,.ant-btn-dangerous.ant-btn-text[disabled]:active>a:only-child{color:currentcolor}.ant-btn-dangerous.ant-btn-text[disabled]>a:only-child:after,.ant-btn-dangerous.ant-btn-text[disabled]:hover>a:only-child:after,.ant-btn-dangerous.ant-btn-text[disabled]:focus>a:only-child:after,.ant-btn-dangerous.ant-btn-text[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-icon-only{width:32px;height:32px;padding:2.4px 0;font-size:16px;border-radius:2px;vertical-align:-3px}.ant-btn-icon-only>*{font-size:16px}.ant-btn-icon-only.ant-btn-lg{width:40px;height:40px;padding:4.9px 0;font-size:18px;border-radius:2px}.ant-btn-icon-only.ant-btn-lg>*{font-size:18px}.ant-btn-icon-only.ant-btn-sm{width:24px;height:24px;padding:0;font-size:14px;border-radius:2px}.ant-btn-icon-only.ant-btn-sm>*{font-size:14px}.ant-btn-icon-only>.anticon{display:flex;justify-content:center}.ant-btn-icon-only .anticon-loading{padding:0!important}a.ant-btn-icon-only{vertical-align:-1px}a.ant-btn-icon-only>.anticon{display:inline}.ant-btn-round{height:32px;padding:4px 16px;font-size:14px;border-radius:32px}.ant-btn-round.ant-btn-lg{height:40px;padding:6.4px 20px;font-size:16px;border-radius:40px}.ant-btn-round.ant-btn-sm{height:24px;padding:0 12px;font-size:14px;border-radius:24px}.ant-btn-round.ant-btn-icon-only{width:auto}.ant-btn-circle{min-width:32px;padding-right:0;padding-left:0;text-align:center;border-radius:50%}.ant-btn-circle.ant-btn-lg{min-width:40px;border-radius:50%}.ant-btn-circle.ant-btn-sm{min-width:24px;border-radius:50%}.ant-btn:before{position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;z-index:1;display:none;background:#fff;border-radius:inherit;opacity:.35;transition:opacity .2s;content:"";pointer-events:none}.ant-btn .anticon{transition:margin-left .3s cubic-bezier(.645,.045,.355,1)}.ant-btn .anticon.anticon-plus>svg,.ant-btn .anticon.anticon-minus>svg{shape-rendering:optimizespeed}.ant-btn.ant-btn-loading{position:relative;cursor:default}.ant-btn.ant-btn-loading:before{display:block}.ant-btn>.ant-btn-loading-icon{transition:width .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1)}.ant-btn>.ant-btn-loading-icon .anticon{padding-right:8px;animation:none}.ant-btn>.ant-btn-loading-icon .anticon svg{animation:loadingCircle 1s infinite linear}.ant-btn-group{position:relative;display:inline-flex}.ant-btn-group>.ant-btn,.ant-btn-group>span>.ant-btn{position:relative}.ant-btn-group>.ant-btn:hover,.ant-btn-group>span>.ant-btn:hover,.ant-btn-group>.ant-btn:focus,.ant-btn-group>span>.ant-btn:focus,.ant-btn-group>.ant-btn:active,.ant-btn-group>span>.ant-btn:active{z-index:2}.ant-btn-group>.ant-btn[disabled],.ant-btn-group>span>.ant-btn[disabled]{z-index:0}.ant-btn-group .ant-btn-icon-only{font-size:14px}.ant-btn-group .ant-btn+.ant-btn,.ant-btn+.ant-btn-group,.ant-btn-group span+.ant-btn,.ant-btn-group .ant-btn+span,.ant-btn-group>span+span,.ant-btn-group+.ant-btn,.ant-btn-group+.ant-btn-group{margin-left:-1px}.ant-btn-group .ant-btn-primary+.ant-btn:not(.ant-btn-primary):not([disabled]){border-left-color:transparent}.ant-btn-group .ant-btn{border-radius:0}.ant-btn-group>.ant-btn:first-child,.ant-btn-group>span:first-child>.ant-btn{margin-left:0}.ant-btn-group>.ant-btn:only-child{border-radius:2px}.ant-btn-group>span:only-child>.ant-btn{border-radius:2px}.ant-btn-group>.ant-btn:first-child:not(:last-child),.ant-btn-group>span:first-child:not(:last-child)>.ant-btn{border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-btn-group>.ant-btn:last-child:not(:first-child),.ant-btn-group>span:last-child:not(:first-child)>.ant-btn{border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-btn-group-sm>.ant-btn:only-child{border-radius:2px}.ant-btn-group-sm>span:only-child>.ant-btn{border-radius:2px}.ant-btn-group-sm>.ant-btn:first-child:not(:last-child),.ant-btn-group-sm>span:first-child:not(:last-child)>.ant-btn{border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-btn-group-sm>.ant-btn:last-child:not(:first-child),.ant-btn-group-sm>span:last-child:not(:first-child)>.ant-btn{border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-btn-group>.ant-btn-group{float:left}.ant-btn-group>.ant-btn-group:not(:first-child):not(:last-child)>.ant-btn{border-radius:0}.ant-btn-group>.ant-btn-group:first-child:not(:last-child)>.ant-btn:last-child{padding-right:8px;border-top-right-radius:0;border-bottom-right-radius:0}.ant-btn-group>.ant-btn-group:last-child:not(:first-child)>.ant-btn:first-child{padding-left:8px;border-top-left-radius:0;border-bottom-left-radius:0}.ant-btn-rtl.ant-btn-group .ant-btn+.ant-btn,.ant-btn-rtl.ant-btn+.ant-btn-group,.ant-btn-rtl.ant-btn-group span+.ant-btn,.ant-btn-rtl.ant-btn-group .ant-btn+span,.ant-btn-rtl.ant-btn-group>span+span,.ant-btn-rtl.ant-btn-group+.ant-btn,.ant-btn-rtl.ant-btn-group+.ant-btn-group,.ant-btn-group-rtl.ant-btn-group .ant-btn+.ant-btn,.ant-btn-group-rtl.ant-btn+.ant-btn-group,.ant-btn-group-rtl.ant-btn-group span+.ant-btn,.ant-btn-group-rtl.ant-btn-group .ant-btn+span,.ant-btn-group-rtl.ant-btn-group>span+span,.ant-btn-group-rtl.ant-btn-group+.ant-btn,.ant-btn-group-rtl.ant-btn-group+.ant-btn-group{margin-right:-1px;margin-left:auto}.ant-btn-group.ant-btn-group-rtl{direction:rtl}.ant-btn-group-rtl.ant-btn-group>.ant-btn:first-child:not(:last-child),.ant-btn-group-rtl.ant-btn-group>span:first-child:not(:last-child)>.ant-btn{border-radius:0 2px 2px 0}.ant-btn-group-rtl.ant-btn-group>.ant-btn:last-child:not(:first-child),.ant-btn-group-rtl.ant-btn-group>span:last-child:not(:first-child)>.ant-btn{border-radius:2px 0 0 2px}.ant-btn-group-rtl.ant-btn-group-sm>.ant-btn:first-child:not(:last-child),.ant-btn-group-rtl.ant-btn-group-sm>span:first-child:not(:last-child)>.ant-btn{border-radius:0 2px 2px 0}.ant-btn-group-rtl.ant-btn-group-sm>.ant-btn:last-child:not(:first-child),.ant-btn-group-rtl.ant-btn-group-sm>span:last-child:not(:first-child)>.ant-btn{border-radius:2px 0 0 2px}.ant-btn:focus>span,.ant-btn:active>span{position:relative}.ant-btn>.anticon+span,.ant-btn>span+.anticon{margin-left:8px}.ant-btn.ant-btn-background-ghost{color:#fff;border-color:#fff}.ant-btn.ant-btn-background-ghost,.ant-btn.ant-btn-background-ghost:hover,.ant-btn.ant-btn-background-ghost:active,.ant-btn.ant-btn-background-ghost:focus{background:transparent}.ant-btn.ant-btn-background-ghost:hover,.ant-btn.ant-btn-background-ghost:focus{color:#40a9ff;border-color:#40a9ff}.ant-btn.ant-btn-background-ghost:active{color:#096dd9;border-color:#096dd9}.ant-btn.ant-btn-background-ghost[disabled]{color:#00000040;background:transparent;border-color:#d9d9d9}.ant-btn-background-ghost.ant-btn-primary{color:#1890ff;border-color:#1890ff;text-shadow:none}.ant-btn-background-ghost.ant-btn-primary>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-primary>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-primary:hover,.ant-btn-background-ghost.ant-btn-primary:focus{color:#40a9ff;border-color:#40a9ff}.ant-btn-background-ghost.ant-btn-primary:hover>a:only-child,.ant-btn-background-ghost.ant-btn-primary:focus>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-primary:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-primary:active{color:#096dd9;border-color:#096dd9}.ant-btn-background-ghost.ant-btn-primary:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-primary:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-primary[disabled],.ant-btn-background-ghost.ant-btn-primary[disabled]:hover,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus,.ant-btn-background-ghost.ant-btn-primary[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-primary[disabled]>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-primary[disabled]>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger{color:#ff4d4f;border-color:#ff4d4f;text-shadow:none}.ant-btn-background-ghost.ant-btn-danger>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-danger>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger:hover,.ant-btn-background-ghost.ant-btn-danger:focus{color:#ff7875;border-color:#ff7875}.ant-btn-background-ghost.ant-btn-danger:hover>a:only-child,.ant-btn-background-ghost.ant-btn-danger:focus>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-danger:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger:active{color:#d9363e;border-color:#d9363e}.ant-btn-background-ghost.ant-btn-danger:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-danger:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger[disabled],.ant-btn-background-ghost.ant-btn-danger[disabled]:hover,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus,.ant-btn-background-ghost.ant-btn-danger[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-danger[disabled]>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-danger[disabled]>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous{color:#ff4d4f;border-color:#ff4d4f;text-shadow:none}.ant-btn-background-ghost.ant-btn-dangerous>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous:hover,.ant-btn-background-ghost.ant-btn-dangerous:focus{color:#ff7875;border-color:#ff7875}.ant-btn-background-ghost.ant-btn-dangerous:hover>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous:focus>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous:active{color:#d9363e;border-color:#d9363e}.ant-btn-background-ghost.ant-btn-dangerous:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous[disabled],.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-dangerous[disabled]>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous[disabled]>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link{color:#ff4d4f;border-color:transparent;text-shadow:none}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus{color:#ff7875;border-color:transparent}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active{color:#d9363e;border-color:transparent}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled],.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active{color:#00000040;border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active>a:only-child{color:currentcolor}.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-two-chinese-chars:first-letter{letter-spacing:.34em}.ant-btn-two-chinese-chars>*:not(.anticon){margin-right:-.34em;letter-spacing:.34em}.ant-btn.ant-btn-block{width:100%}.ant-btn:empty{display:inline-block;width:0;visibility:hidden;content:" "}a.ant-btn{padding-top:.01px!important;line-height:30px}a.ant-btn-disabled{cursor:not-allowed}a.ant-btn-disabled>*{pointer-events:none}a.ant-btn-disabled,a.ant-btn-disabled:hover,a.ant-btn-disabled:focus,a.ant-btn-disabled:active{color:#00000040;border-color:transparent;background:transparent;text-shadow:none;box-shadow:none}a.ant-btn-disabled>a:only-child,a.ant-btn-disabled:hover>a:only-child,a.ant-btn-disabled:focus>a:only-child,a.ant-btn-disabled:active>a:only-child{color:currentcolor}a.ant-btn-disabled>a:only-child:after,a.ant-btn-disabled:hover>a:only-child:after,a.ant-btn-disabled:focus>a:only-child:after,a.ant-btn-disabled:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}a.ant-btn-lg{line-height:38px}a.ant-btn-sm{line-height:22px}.ant-btn-compact-item:not(.ant-btn-compact-last-item):not(.ant-btn-compact-item-rtl){margin-right:-1px}.ant-btn-compact-item:not(.ant-btn-compact-last-item).ant-btn-compact-item-rtl{margin-left:-1px}.ant-btn-compact-item:hover,.ant-btn-compact-item:focus,.ant-btn-compact-item:active{z-index:2}.ant-btn-compact-item[disabled]{z-index:0}.ant-btn-compact-item:not(.ant-btn-compact-first-item):not(.ant-btn-compact-last-item).ant-btn{border-radius:0}.ant-btn-compact-item.ant-btn.ant-btn-compact-first-item:not(.ant-btn-compact-last-item):not(.ant-btn-compact-item-rtl){border-top-right-radius:0;border-bottom-right-radius:0}.ant-btn-compact-item.ant-btn.ant-btn-compact-last-item:not(.ant-btn-compact-first-item):not(.ant-btn-compact-item-rtl){border-top-left-radius:0;border-bottom-left-radius:0}.ant-btn-compact-item.ant-btn.ant-btn-compact-item-rtl.ant-btn-compact-first-item:not(.ant-btn-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-btn-compact-item.ant-btn.ant-btn-compact-item-rtl.ant-btn-compact-last-item:not(.ant-btn-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-btn-icon-only.ant-btn-compact-item{flex:none}.ant-btn-compact-item.ant-btn-primary:not([disabled])+.ant-btn-compact-item.ant-btn-primary:not([disabled]){position:relative}.ant-btn-compact-item.ant-btn-primary:not([disabled])+.ant-btn-compact-item.ant-btn-primary:not([disabled]):after{position:absolute;top:-1px;left:-1px;display:inline-block;width:1px;height:calc(100% + 2px);background-color:#40a9ff;content:" "}.ant-btn-compact-item-rtl.ant-btn-compact-first-item.ant-btn-compact-item-rtl:not(.ant-btn-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-btn-compact-item-rtl.ant-btn-compact-last-item.ant-btn-compact-item-rtl:not(.ant-btn-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-btn-compact-item-rtl.ant-btn-sm.ant-btn-compact-first-item.ant-btn-compact-item-rtl.ant-btn-sm:not(.ant-btn-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-btn-compact-item-rtl.ant-btn-sm.ant-btn-compact-last-item.ant-btn-compact-item-rtl.ant-btn-sm:not(.ant-btn-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-btn-compact-item-rtl.ant-btn-primary:not([disabled])+.ant-btn-compact-item-rtl.ant-btn-primary:not([disabled]):after{right:-1px}.ant-btn-compact-vertical-item:not(.ant-btn-compact-vertical-last-item){margin-bottom:-1px}.ant-btn-compact-vertical-item:hover,.ant-btn-compact-vertical-item:focus,.ant-btn-compact-vertical-item:active{z-index:2}.ant-btn-compact-vertical-item[disabled]{z-index:0}.ant-btn-compact-vertical-item:not(.ant-btn-compact-vertical-first-item):not(.ant-btn-compact-vertical-last-item){border-radius:0}.ant-btn-compact-vertical-item.ant-btn-compact-vertical-first-item:not(.ant-btn-compact-vertical-last-item){border-bottom-right-radius:0;border-bottom-left-radius:0}.ant-btn-compact-vertical-item.ant-btn-compact-vertical-last-item:not(.ant-btn-compact-vertical-first-item){border-top-left-radius:0;border-top-right-radius:0}.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled])+.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled]){position:relative}.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled])+.ant-btn-compact-vertical-item.ant-btn-primary:not([disabled]):after{position:absolute;top:-1px;left:-1px;display:inline-block;width:calc(100% + 2px);height:1px;background-color:#40a9ff;content:" "}.ant-btn-rtl{direction:rtl}.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child),.ant-btn-group-rtl.ant-btn-group .ant-btn-primary+.ant-btn-primary{border-right-color:#40a9ff;border-left-color:#d9d9d9}.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],.ant-btn-group-rtl.ant-btn-group .ant-btn-primary+.ant-btn-primary[disabled]{border-right-color:#d9d9d9;border-left-color:#40a9ff}.ant-btn-rtl.ant-btn>.ant-btn-loading-icon .anticon{padding-right:0;padding-left:8px}.ant-btn-rtl.ant-btn>.anticon+span,.ant-btn-rtl.ant-btn>span+.anticon{margin-right:8px;margin-left:0}.ant-result{padding:48px 32px}.ant-result-success .ant-result-icon>.anticon{color:#52c41a}.ant-result-error .ant-result-icon>.anticon{color:#ff4d4f}.ant-result-info .ant-result-icon>.anticon{color:#1890ff}.ant-result-warning .ant-result-icon>.anticon{color:#faad14}.ant-result-image{width:250px;height:295px;margin:auto}.ant-result-icon{margin-bottom:24px;text-align:center}.ant-result-icon>.anticon{font-size:72px}.ant-result-title{color:#000000d9;font-size:24px;line-height:1.8;text-align:center}.ant-result-subtitle{color:#00000073;font-size:14px;line-height:1.6;text-align:center}.ant-result-extra{margin:24px 0 0;text-align:center}.ant-result-extra>*{margin-right:8px}.ant-result-extra>*:last-child{margin-right:0}.ant-result-content{margin-top:24px;padding:24px 40px;background-color:#fafafa}.ant-result-rtl{direction:rtl}.ant-result-rtl .ant-result-extra>*{margin-right:0;margin-left:8px}.ant-result-rtl .ant-result-extra>*:last-child{margin-left:0}.ant-dropdown-menu-item.ant-dropdown-menu-item-danger{color:#ff4d4f}.ant-dropdown-menu-item.ant-dropdown-menu-item-danger:hover{color:#fff;background-color:#ff4d4f}.ant-dropdown{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;top:-9999px;left:-9999px;z-index:1050;display:block}.ant-dropdown:before{position:absolute;top:-4px;right:0;bottom:-4px;left:-7px;z-index:-9999;opacity:.0001;content:" "}.ant-dropdown-wrap{position:relative}.ant-dropdown-wrap .ant-btn>.anticon-down{font-size:10px}.ant-dropdown-wrap .anticon-down:before{transition:transform .2s}.ant-dropdown-wrap-open .anticon-down:before{transform:rotate(180deg)}.ant-dropdown-hidden,.ant-dropdown-menu-hidden,.ant-dropdown-menu-submenu-hidden{display:none}.ant-dropdown-show-arrow.ant-dropdown-placement-topLeft,.ant-dropdown-show-arrow.ant-dropdown-placement-top,.ant-dropdown-show-arrow.ant-dropdown-placement-topRight{padding-bottom:15.3137085px}.ant-dropdown-show-arrow.ant-dropdown-placement-bottomLeft,.ant-dropdown-show-arrow.ant-dropdown-placement-bottom,.ant-dropdown-show-arrow.ant-dropdown-placement-bottomRight{padding-top:15.3137085px}.ant-dropdown-arrow{position:absolute;z-index:1;display:block;width:11.3137085px;height:11.3137085px;border-radius:0 0 2px;pointer-events:none}.ant-dropdown-arrow:before{position:absolute;top:-11.3137085px;left:-11.3137085px;width:33.9411255px;height:33.9411255px;background:#fff;background-repeat:no-repeat;background-position:-10px -10px;content:"";clip-path:inset(33% 33%);clip-path:path("M 9.849242404917499 24.091883092036785 A 5 5 0 0 1 13.384776310850237 22.627416997969522 L 20.627416997969522 22.627416997969522 A 2 2 0 0 0 22.627416997969522 20.627416997969522 L 22.627416997969522 13.384776310850237 A 5 5 0 0 1 24.091883092036785 9.849242404917499 L 23.091883092036785 9.849242404917499 L 9.849242404917499 23.091883092036785 Z")}.ant-dropdown-placement-top>.ant-dropdown-arrow,.ant-dropdown-placement-topLeft>.ant-dropdown-arrow,.ant-dropdown-placement-topRight>.ant-dropdown-arrow{bottom:10px;box-shadow:3px 3px 7px -3px #0000001a;transform:rotate(45deg)}.ant-dropdown-placement-top>.ant-dropdown-arrow{left:50%;transform:translate(-50%) rotate(45deg)}.ant-dropdown-placement-topLeft>.ant-dropdown-arrow{left:16px}.ant-dropdown-placement-topRight>.ant-dropdown-arrow{right:16px}.ant-dropdown-placement-bottom>.ant-dropdown-arrow,.ant-dropdown-placement-bottomLeft>.ant-dropdown-arrow,.ant-dropdown-placement-bottomRight>.ant-dropdown-arrow{top:9.41421356px;box-shadow:2px 2px 5px -2px #0000001a;transform:rotate(-135deg) translateY(-.5px)}.ant-dropdown-placement-bottom>.ant-dropdown-arrow{left:50%;transform:translate(-50%) rotate(-135deg) translateY(-.5px)}.ant-dropdown-placement-bottomLeft>.ant-dropdown-arrow{left:16px}.ant-dropdown-placement-bottomRight>.ant-dropdown-arrow{right:16px}.ant-dropdown-menu{position:relative;margin:0;padding:4px 0;text-align:left;list-style-type:none;background-color:#fff;background-clip:padding-box;border-radius:2px;outline:none;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}.ant-dropdown-menu-item-group-title{padding:5px 12px;color:#00000073;transition:all .3s}.ant-dropdown-menu-submenu-popup{position:absolute;z-index:1050;background:transparent;box-shadow:none;transform-origin:0 0}.ant-dropdown-menu-submenu-popup ul,.ant-dropdown-menu-submenu-popup li{list-style:none}.ant-dropdown-menu-submenu-popup ul{margin-right:.3em;margin-left:.3em}.ant-dropdown-menu-item{position:relative;display:flex;align-items:center}.ant-dropdown-menu-item-icon{min-width:12px;margin-right:8px;font-size:12px}.ant-dropdown-menu-title-content{flex:auto}.ant-dropdown-menu-title-content>a{color:inherit;transition:all .3s}.ant-dropdown-menu-title-content>a:hover{color:inherit}.ant-dropdown-menu-title-content>a:after{position:absolute;top:0;right:0;bottom:0;left:0;content:""}.ant-dropdown-menu-item,.ant-dropdown-menu-submenu-title{clear:both;margin:0;padding:5px 12px;color:#000000d9;font-weight:400;font-size:14px;line-height:22px;cursor:pointer;transition:all .3s}.ant-dropdown-menu-item-selected,.ant-dropdown-menu-submenu-title-selected{color:#1890ff;background-color:#e6f7ff}.ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu-title:hover,.ant-dropdown-menu-item.ant-dropdown-menu-item-active,.ant-dropdown-menu-item.ant-dropdown-menu-submenu-title-active,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-item-active,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-submenu-title-active{background-color:#f5f5f5}.ant-dropdown-menu-item.ant-dropdown-menu-item-disabled,.ant-dropdown-menu-item.ant-dropdown-menu-submenu-title-disabled,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-item-disabled,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-submenu-title-disabled{color:#00000040;cursor:not-allowed}.ant-dropdown-menu-item.ant-dropdown-menu-item-disabled:hover,.ant-dropdown-menu-item.ant-dropdown-menu-submenu-title-disabled:hover,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-item-disabled:hover,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-submenu-title-disabled:hover{color:#00000040;background-color:#fff;cursor:not-allowed}.ant-dropdown-menu-item.ant-dropdown-menu-item-disabled a,.ant-dropdown-menu-item.ant-dropdown-menu-submenu-title-disabled a,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-item-disabled a,.ant-dropdown-menu-submenu-title.ant-dropdown-menu-submenu-title-disabled a{pointer-events:none}.ant-dropdown-menu-item-divider,.ant-dropdown-menu-submenu-title-divider{height:1px;margin:4px 0;overflow:hidden;line-height:0;background-color:#f0f0f0}.ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon,.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon{position:absolute;right:8px}.ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon{margin-right:0!important;color:#00000073;font-size:10px;font-style:normal}.ant-dropdown-menu-item-group-list{margin:0 8px;padding:0;list-style:none}.ant-dropdown-menu-submenu-title{padding-right:24px}.ant-dropdown-menu-submenu-vertical{position:relative}.ant-dropdown-menu-submenu-vertical>.ant-dropdown-menu{position:absolute;top:0;left:100%;min-width:100%;margin-left:4px;transform-origin:0 0}.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon{color:#00000040;background-color:#fff;cursor:not-allowed}.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#1890ff}.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-enter.ant-slide-down-enter-active.ant-dropdown-placement-bottomRight,.ant-dropdown.ant-slide-down-appear.ant-slide-down-appear-active.ant-dropdown-placement-bottomRight{animation-name:antSlideUpIn}.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-dropdown-placement-topRight,.ant-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-dropdown-placement-topRight{animation-name:antSlideDownIn}.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottom,.ant-dropdown.ant-slide-down-leave.ant-slide-down-leave-active.ant-dropdown-placement-bottomRight{animation-name:antSlideUpOut}.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-topLeft,.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-top,.ant-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-dropdown-placement-topRight{animation-name:antSlideDownOut}.ant-dropdown-trigger>.anticon.anticon-down,.ant-dropdown-link>.anticon.anticon-down,.ant-dropdown-button>.anticon.anticon-down{font-size:10px;vertical-align:baseline}.ant-dropdown-button{white-space:nowrap}.ant-dropdown-button.ant-btn-group>.ant-btn-loading,.ant-dropdown-button.ant-btn-group>.ant-btn-loading+.ant-btn{cursor:default;pointer-events:none}.ant-dropdown-button.ant-btn-group>.ant-btn-loading+.ant-btn:before{display:block}.ant-dropdown-button.ant-btn-group>.ant-btn:last-child:not(:first-child):not(.ant-btn-icon-only){padding-right:8px;padding-left:8px}.ant-dropdown-menu-dark,.ant-dropdown-menu-dark .ant-dropdown-menu{background:#001529}.ant-dropdown-menu-dark .ant-dropdown-menu-item,.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-dark .ant-dropdown-menu-item>a,.ant-dropdown-menu-dark .ant-dropdown-menu-item>.anticon+span>a{color:#ffffffa6}.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after,.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after,.ant-dropdown-menu-dark .ant-dropdown-menu-item>a .ant-dropdown-menu-submenu-arrow:after,.ant-dropdown-menu-dark .ant-dropdown-menu-item>.anticon+span>a .ant-dropdown-menu-submenu-arrow:after{color:#ffffffa6}.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item>a:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item>.anticon+span>a:hover{color:#fff;background:transparent}.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected>a{color:#fff;background:#1890ff}.ant-dropdown-rtl{direction:rtl}.ant-dropdown-rtl.ant-dropdown:before{right:-7px;left:0}.ant-dropdown-menu.ant-dropdown-menu-rtl,.ant-dropdown-rtl .ant-dropdown-menu-item-group-title,.ant-dropdown-menu-submenu-rtl .ant-dropdown-menu-item-group-title{direction:rtl;text-align:right}.ant-dropdown-menu-submenu-popup.ant-dropdown-menu-submenu-rtl{transform-origin:100% 0}.ant-dropdown-rtl .ant-dropdown-menu-submenu-popup ul,.ant-dropdown-rtl .ant-dropdown-menu-submenu-popup li,.ant-dropdown-rtl .ant-dropdown-menu-item,.ant-dropdown-rtl .ant-dropdown-menu-submenu-title{text-align:right}.ant-dropdown-rtl .ant-dropdown-menu-item>.anticon:first-child,.ant-dropdown-rtl .ant-dropdown-menu-submenu-title>.anticon:first-child,.ant-dropdown-rtl .ant-dropdown-menu-item>span>.anticon:first-child,.ant-dropdown-rtl .ant-dropdown-menu-submenu-title>span>.anticon:first-child{margin-right:0;margin-left:8px}.ant-dropdown-rtl .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon,.ant-dropdown-rtl .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon{right:auto;left:8px}.ant-dropdown-rtl .ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown-rtl .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon{margin-left:0!important;transform:scaleX(-1)}.ant-dropdown-rtl .ant-dropdown-menu-submenu-title{padding-right:12px;padding-left:24px}.ant-dropdown-rtl .ant-dropdown-menu-submenu-vertical>.ant-dropdown-menu{right:100%;left:0;margin-right:4px;margin-left:0}.ant-menu-item-danger.ant-menu-item,.ant-menu-item-danger.ant-menu-item:hover,.ant-menu-item-danger.ant-menu-item-active{color:#ff4d4f}.ant-menu-item-danger.ant-menu-item:active{background:#fff1f0}.ant-menu-item-danger.ant-menu-item-selected{color:#ff4d4f}.ant-menu-item-danger.ant-menu-item-selected>a,.ant-menu-item-danger.ant-menu-item-selected>a:hover{color:#ff4d4f}.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected{background-color:#fff1f0}.ant-menu-inline .ant-menu-item-danger.ant-menu-item:after{border-right-color:#ff4d4f}.ant-menu-dark .ant-menu-item-danger.ant-menu-item,.ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover,.ant-menu-dark .ant-menu-item-danger.ant-menu-item>a{color:#ff4d4f}.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected{color:#fff;background-color:#ff4d4f}.ant-menu{box-sizing:border-box;margin:0;font-variant:tabular-nums;font-feature-settings:"tnum","tnum";padding:0;color:#000000d9;font-size:14px;line-height:0;text-align:left;list-style:none;background:#fff;outline:none;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d;transition:background .3s,width .3s cubic-bezier(.2,0,0,1) 0s}.ant-menu:before{display:table;content:""}.ant-menu:after{display:table;clear:both;content:""}.ant-menu.ant-menu-root:focus-visible{box-shadow:0 0 0 2px #bae7ff}.ant-menu ul,.ant-menu ol{margin:0;padding:0;list-style:none}.ant-menu-overflow{display:flex}.ant-menu-overflow-item{flex:none}.ant-menu-hidden,.ant-menu-submenu-hidden{display:none}.ant-menu-item-group-title{height:1.5715;padding:8px 16px;color:#00000073;font-size:14px;line-height:1.5715;transition:all .3s}.ant-menu-horizontal .ant-menu-submenu{transition:border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu,.ant-menu-submenu-inline{transition:border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu-selected{color:#1890ff}.ant-menu-item:active,.ant-menu-submenu-title:active{background:#e6f7ff}.ant-menu-submenu .ant-menu-sub{cursor:initial;transition:background .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-title-content{transition:color .3s}.ant-menu-item a{color:#000000d9}.ant-menu-item a:hover{color:#1890ff}.ant-menu-item a:before{position:absolute;top:0;right:0;bottom:0;left:0;background-color:transparent;content:""}.ant-menu-item>.ant-badge a{color:#000000d9}.ant-menu-item>.ant-badge a:hover{color:#1890ff}.ant-menu-item-divider{overflow:hidden;line-height:0;border-color:#f0f0f0;border-style:solid;border-width:1px 0 0}.ant-menu-item-divider-dashed{border-style:dashed}.ant-menu-horizontal .ant-menu-item,.ant-menu-horizontal .ant-menu-submenu{margin-top:-1px}.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-submenu .ant-menu-submenu-title:hover{background-color:transparent}.ant-menu-item-selected,.ant-menu-item-selected a,.ant-menu-item-selected a:hover{color:#1890ff}.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#e6f7ff}.ant-menu-inline,.ant-menu-vertical,.ant-menu-vertical-left{border-right:1px solid #f0f0f0}.ant-menu-vertical-right{border-left:1px solid #f0f0f0}.ant-menu-vertical.ant-menu-sub,.ant-menu-vertical-left.ant-menu-sub,.ant-menu-vertical-right.ant-menu-sub{min-width:160px;max-height:calc(100vh - 100px);padding:0;overflow:hidden;border-right:0}.ant-menu-vertical.ant-menu-sub:not([class*=-active]),.ant-menu-vertical-left.ant-menu-sub:not([class*=-active]),.ant-menu-vertical-right.ant-menu-sub:not([class*=-active]){overflow-x:hidden;overflow-y:auto}.ant-menu-vertical.ant-menu-sub .ant-menu-item,.ant-menu-vertical-left.ant-menu-sub .ant-menu-item,.ant-menu-vertical-right.ant-menu-sub .ant-menu-item{left:0;margin-left:0;border-right:0}.ant-menu-vertical.ant-menu-sub .ant-menu-item:after,.ant-menu-vertical-left.ant-menu-sub .ant-menu-item:after,.ant-menu-vertical-right.ant-menu-sub .ant-menu-item:after{border-right:0}.ant-menu-vertical.ant-menu-sub>.ant-menu-item,.ant-menu-vertical-left.ant-menu-sub>.ant-menu-item,.ant-menu-vertical-right.ant-menu-sub>.ant-menu-item,.ant-menu-vertical.ant-menu-sub>.ant-menu-submenu,.ant-menu-vertical-left.ant-menu-sub>.ant-menu-submenu,.ant-menu-vertical-right.ant-menu-sub>.ant-menu-submenu{transform-origin:0 0}.ant-menu-horizontal.ant-menu-sub{min-width:114px}.ant-menu-horizontal .ant-menu-item,.ant-menu-horizontal .ant-menu-submenu-title{transition:border-color .3s,background .3s}.ant-menu-item,.ant-menu-submenu-title{position:relative;display:block;margin:0;padding:0 20px;white-space:nowrap;cursor:pointer;transition:border-color .3s,background .3s,padding .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-item .ant-menu-item-icon,.ant-menu-submenu-title .ant-menu-item-icon,.ant-menu-item .anticon,.ant-menu-submenu-title .anticon{min-width:14px;font-size:14px;transition:font-size .15s cubic-bezier(.215,.61,.355,1),margin .3s cubic-bezier(.645,.045,.355,1),color .3s}.ant-menu-item .ant-menu-item-icon+span,.ant-menu-submenu-title .ant-menu-item-icon+span,.ant-menu-item .anticon+span,.ant-menu-submenu-title .anticon+span{margin-left:10px;opacity:1;transition:opacity .3s cubic-bezier(.645,.045,.355,1),margin .3s,color .3s}.ant-menu-item .ant-menu-item-icon.svg,.ant-menu-submenu-title .ant-menu-item-icon.svg{vertical-align:-.125em}.ant-menu-item.ant-menu-item-only-child>.anticon,.ant-menu-submenu-title.ant-menu-item-only-child>.anticon,.ant-menu-item.ant-menu-item-only-child>.ant-menu-item-icon,.ant-menu-submenu-title.ant-menu-item-only-child>.ant-menu-item-icon{margin-right:0}.ant-menu-item:not(.ant-menu-item-disabled):focus-visible,.ant-menu-submenu-title:not(.ant-menu-item-disabled):focus-visible{box-shadow:0 0 0 2px #bae7ff}.ant-menu>.ant-menu-item-divider{margin:1px 0;padding:0}.ant-menu-submenu-popup{position:absolute;z-index:1050;background:transparent;border-radius:2px;box-shadow:none;transform-origin:0 0}.ant-menu-submenu-popup:before{position:absolute;top:-7px;right:0;bottom:0;left:0;z-index:-1;width:100%;height:100%;opacity:.0001;content:" "}.ant-menu-submenu-placement-rightTop:before{top:0;left:-7px}.ant-menu-submenu>.ant-menu{background-color:#fff;border-radius:2px}.ant-menu-submenu>.ant-menu-submenu-title:after{transition:transform .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu-popup>.ant-menu{background-color:#fff}.ant-menu-submenu-expand-icon,.ant-menu-submenu-arrow{position:absolute;top:50%;right:16px;width:10px;color:#000000d9;transform:translateY(-50%);transition:transform .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu-arrow:before,.ant-menu-submenu-arrow:after{position:absolute;width:6px;height:1.5px;background-color:currentcolor;border-radius:2px;transition:background .3s cubic-bezier(.645,.045,.355,1),transform .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),color .3s cubic-bezier(.645,.045,.355,1);content:""}.ant-menu-submenu-arrow:before{transform:rotate(45deg) translateY(-2.5px)}.ant-menu-submenu-arrow:after{transform:rotate(-45deg) translateY(2.5px)}.ant-menu-submenu:hover>.ant-menu-submenu-title>.ant-menu-submenu-expand-icon,.ant-menu-submenu:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow{color:#1890ff}.ant-menu-inline-collapsed .ant-menu-submenu-arrow:before,.ant-menu-submenu-inline .ant-menu-submenu-arrow:before{transform:rotate(-45deg) translate(2.5px)}.ant-menu-inline-collapsed .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline .ant-menu-submenu-arrow:after{transform:rotate(45deg) translate(-2.5px)}.ant-menu-submenu-horizontal .ant-menu-submenu-arrow{display:none}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow{transform:translateY(-2px)}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after{transform:rotate(-45deg) translate(-2.5px)}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before{transform:rotate(45deg) translate(2.5px)}.ant-menu-vertical .ant-menu-submenu-selected,.ant-menu-vertical-left .ant-menu-submenu-selected,.ant-menu-vertical-right .ant-menu-submenu-selected{color:#1890ff}.ant-menu-horizontal{line-height:46px;border:0;border-bottom:1px solid #f0f0f0;box-shadow:none}.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu{margin-top:-1px;margin-bottom:0;padding:0 20px}.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item:hover,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu:hover,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-active,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-active,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-open,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-selected{color:#1890ff}.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item:hover:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu:hover:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-active:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-active:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-open:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-open:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-item-selected:after,.ant-menu-horizontal:not(.ant-menu-dark)>.ant-menu-submenu-selected:after{border-bottom:2px solid #1890ff}.ant-menu-horizontal>.ant-menu-item,.ant-menu-horizontal>.ant-menu-submenu{position:relative;top:1px;display:inline-block;vertical-align:bottom}.ant-menu-horizontal>.ant-menu-item:after,.ant-menu-horizontal>.ant-menu-submenu:after{position:absolute;right:20px;bottom:0;left:20px;border-bottom:2px solid transparent;transition:border-color .3s cubic-bezier(.645,.045,.355,1);content:""}.ant-menu-horizontal>.ant-menu-submenu>.ant-menu-submenu-title{padding:0}.ant-menu-horizontal>.ant-menu-item a{color:#000000d9}.ant-menu-horizontal>.ant-menu-item a:hover{color:#1890ff}.ant-menu-horizontal>.ant-menu-item a:before{bottom:-2px}.ant-menu-horizontal>.ant-menu-item-selected a{color:#1890ff}.ant-menu-horizontal:after{display:block;clear:both;height:0;content:" "}.ant-menu-vertical .ant-menu-item,.ant-menu-vertical-left .ant-menu-item,.ant-menu-vertical-right .ant-menu-item,.ant-menu-inline .ant-menu-item{position:relative}.ant-menu-vertical .ant-menu-item:after,.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-vertical-right .ant-menu-item:after,.ant-menu-inline .ant-menu-item:after{position:absolute;top:0;right:0;bottom:0;border-right:3px solid #1890ff;transform:scaleY(.0001);opacity:0;transition:transform .15s cubic-bezier(.215,.61,.355,1),opacity .15s cubic-bezier(.215,.61,.355,1);content:""}.ant-menu-vertical .ant-menu-item,.ant-menu-vertical-left .ant-menu-item,.ant-menu-vertical-right .ant-menu-item,.ant-menu-inline .ant-menu-item,.ant-menu-vertical .ant-menu-submenu-title,.ant-menu-vertical-left .ant-menu-submenu-title,.ant-menu-vertical-right .ant-menu-submenu-title,.ant-menu-inline .ant-menu-submenu-title{height:40px;margin-top:4px;margin-bottom:4px;padding:0 16px;overflow:hidden;line-height:40px;text-overflow:ellipsis}.ant-menu-vertical .ant-menu-submenu,.ant-menu-vertical-left .ant-menu-submenu,.ant-menu-vertical-right .ant-menu-submenu,.ant-menu-inline .ant-menu-submenu{padding-bottom:.02px}.ant-menu-vertical .ant-menu-item:not(:last-child),.ant-menu-vertical-left .ant-menu-item:not(:last-child),.ant-menu-vertical-right .ant-menu-item:not(:last-child),.ant-menu-inline .ant-menu-item:not(:last-child){margin-bottom:8px}.ant-menu-vertical>.ant-menu-item,.ant-menu-vertical-left>.ant-menu-item,.ant-menu-vertical-right>.ant-menu-item,.ant-menu-inline>.ant-menu-item,.ant-menu-vertical>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical-left>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical-right>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px}.ant-menu-vertical .ant-menu-item-group-list .ant-menu-submenu-title,.ant-menu-vertical .ant-menu-submenu-title{padding-right:34px}.ant-menu-inline{width:100%}.ant-menu-inline .ant-menu-selected:after,.ant-menu-inline .ant-menu-item-selected:after{transform:scaleY(1);opacity:1;transition:transform .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)}.ant-menu-inline .ant-menu-item,.ant-menu-inline .ant-menu-submenu-title{width:calc(100% + 1px)}.ant-menu-inline .ant-menu-item-group-list .ant-menu-submenu-title,.ant-menu-inline .ant-menu-submenu-title{padding-right:34px}.ant-menu-inline.ant-menu-root .ant-menu-item,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title{display:flex;align-items:center;transition:border-color .3s,background .3s,padding .1s cubic-bezier(.215,.61,.355,1)}.ant-menu-inline.ant-menu-root .ant-menu-item>.ant-menu-title-content,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title>.ant-menu-title-content{flex:auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.ant-menu-inline.ant-menu-root .ant-menu-item>*,.ant-menu-inline.ant-menu-root .ant-menu-submenu-title>*{flex:none}.ant-menu.ant-menu-inline-collapsed{width:80px}.ant-menu.ant-menu-inline-collapsed>.ant-menu-item,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title{left:0;padding:0 calc(50% - 8px);text-overflow:clip}.ant-menu.ant-menu-inline-collapsed>.ant-menu-item .ant-menu-submenu-arrow,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-submenu-arrow,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow{opacity:0}.ant-menu.ant-menu-inline-collapsed>.ant-menu-item .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item .anticon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .anticon{margin:0;font-size:16px;line-height:40px}.ant-menu.ant-menu-inline-collapsed>.ant-menu-item .ant-menu-item-icon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-item-icon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-item-icon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item .anticon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon+span,.ant-menu.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .anticon+span{display:inline-block;opacity:0}.ant-menu.ant-menu-inline-collapsed .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed .anticon{display:inline-block}.ant-menu.ant-menu-inline-collapsed-tooltip{pointer-events:none}.ant-menu.ant-menu-inline-collapsed-tooltip .ant-menu-item-icon,.ant-menu.ant-menu-inline-collapsed-tooltip .anticon{display:none}.ant-menu.ant-menu-inline-collapsed-tooltip a{color:#ffffffd9}.ant-menu.ant-menu-inline-collapsed .ant-menu-item-group-title{padding-right:4px;padding-left:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-menu-item-group-list{margin:0;padding:0}.ant-menu-item-group-list .ant-menu-item,.ant-menu-item-group-list .ant-menu-submenu-title{padding:0 16px 0 28px}.ant-menu-root.ant-menu-vertical,.ant-menu-root.ant-menu-vertical-left,.ant-menu-root.ant-menu-vertical-right,.ant-menu-root.ant-menu-inline{box-shadow:none}.ant-menu-root.ant-menu-inline-collapsed .ant-menu-item>.ant-menu-inline-collapsed-noicon,.ant-menu-root.ant-menu-inline-collapsed .ant-menu-submenu .ant-menu-submenu-title>.ant-menu-inline-collapsed-noicon{font-size:16px;text-align:center}.ant-menu-sub.ant-menu-inline{padding:0;background:#fafafa;border:0;border-radius:0;box-shadow:none}.ant-menu-sub.ant-menu-inline>.ant-menu-item,.ant-menu-sub.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px;list-style-position:inside;list-style-type:disc}.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title{padding-left:32px}.ant-menu-item-disabled,.ant-menu-submenu-disabled{color:#00000040!important;background:none;cursor:not-allowed}.ant-menu-item-disabled:after,.ant-menu-submenu-disabled:after{border-color:transparent!important}.ant-menu-item-disabled a,.ant-menu-submenu-disabled a{color:#00000040!important;pointer-events:none}.ant-menu-item-disabled>.ant-menu-submenu-title,.ant-menu-submenu-disabled>.ant-menu-submenu-title{color:#00000040!important;cursor:not-allowed}.ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after{background:rgba(0,0,0,.25)!important}.ant-layout-header .ant-menu{line-height:inherit}.ant-menu-inline-collapsed-tooltip a,.ant-menu-inline-collapsed-tooltip a:hover{color:#fff}.ant-menu-light .ant-menu-item:hover,.ant-menu-light .ant-menu-item-active,.ant-menu-light .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,.ant-menu-light .ant-menu-submenu-active,.ant-menu-light .ant-menu-submenu-title:hover{color:#1890ff}.ant-menu.ant-menu-root:focus-visible{box-shadow:0 0 0 2px #096dd9}.ant-menu-dark .ant-menu-item:focus-visible,.ant-menu-dark .ant-menu-submenu-title:focus-visible{box-shadow:0 0 0 2px #096dd9}.ant-menu.ant-menu-dark,.ant-menu-dark .ant-menu-sub,.ant-menu.ant-menu-dark .ant-menu-sub{color:#ffffffa6;background:#001529}.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow{opacity:.45;transition:all .3s}.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before{background:#fff}.ant-menu-dark.ant-menu-submenu-popup{background:transparent}.ant-menu-dark .ant-menu-inline.ant-menu-sub{background:#000c17}.ant-menu-dark.ant-menu-horizontal{border-bottom:0}.ant-menu-dark.ant-menu-horizontal>.ant-menu-item,.ant-menu-dark.ant-menu-horizontal>.ant-menu-submenu{top:0;margin-top:0;padding:0 20px;border-color:#001529;border-bottom:0}.ant-menu-dark.ant-menu-horizontal>.ant-menu-item:hover{background-color:#1890ff}.ant-menu-dark.ant-menu-horizontal>.ant-menu-item>a:before{bottom:0}.ant-menu-dark .ant-menu-item,.ant-menu-dark .ant-menu-item-group-title,.ant-menu-dark .ant-menu-item>a,.ant-menu-dark .ant-menu-item>span>a{color:#ffffffa6}.ant-menu-dark.ant-menu-inline,.ant-menu-dark.ant-menu-vertical,.ant-menu-dark.ant-menu-vertical-left,.ant-menu-dark.ant-menu-vertical-right{border-right:0}.ant-menu-dark.ant-menu-inline .ant-menu-item,.ant-menu-dark.ant-menu-vertical .ant-menu-item,.ant-menu-dark.ant-menu-vertical-left .ant-menu-item,.ant-menu-dark.ant-menu-vertical-right .ant-menu-item{left:0;margin-left:0;border-right:0}.ant-menu-dark.ant-menu-inline .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical-right .ant-menu-item:after{border-right:0}.ant-menu-dark.ant-menu-inline .ant-menu-item,.ant-menu-dark.ant-menu-inline .ant-menu-submenu-title{width:100%}.ant-menu-dark .ant-menu-item:hover,.ant-menu-dark .ant-menu-item-active,.ant-menu-dark .ant-menu-submenu-active,.ant-menu-dark .ant-menu-submenu-open,.ant-menu-dark .ant-menu-submenu-selected,.ant-menu-dark .ant-menu-submenu-title:hover{color:#fff;background-color:transparent}.ant-menu-dark .ant-menu-item:hover>a,.ant-menu-dark .ant-menu-item-active>a,.ant-menu-dark .ant-menu-submenu-active>a,.ant-menu-dark .ant-menu-submenu-open>a,.ant-menu-dark .ant-menu-submenu-selected>a,.ant-menu-dark .ant-menu-submenu-title:hover>a,.ant-menu-dark .ant-menu-item:hover>span>a,.ant-menu-dark .ant-menu-item-active>span>a,.ant-menu-dark .ant-menu-submenu-active>span>a,.ant-menu-dark .ant-menu-submenu-open>span>a,.ant-menu-dark .ant-menu-submenu-selected>span>a,.ant-menu-dark .ant-menu-submenu-title:hover>span>a{color:#fff}.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow{opacity:1}.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before{background:#fff}.ant-menu-dark .ant-menu-item:hover{background-color:transparent}.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#1890ff}.ant-menu-dark .ant-menu-item-selected{color:#fff;border-right:0}.ant-menu-dark .ant-menu-item-selected:after{border-right:0}.ant-menu-dark .ant-menu-item-selected>a,.ant-menu-dark .ant-menu-item-selected>span>a,.ant-menu-dark .ant-menu-item-selected>a:hover,.ant-menu-dark .ant-menu-item-selected>span>a:hover{color:#fff}.ant-menu-dark .ant-menu-item-selected .ant-menu-item-icon,.ant-menu-dark .ant-menu-item-selected .anticon{color:#fff}.ant-menu-dark .ant-menu-item-selected .ant-menu-item-icon+span,.ant-menu-dark .ant-menu-item-selected .anticon+span{color:#fff}.ant-menu.ant-menu-dark .ant-menu-item-selected,.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected{background-color:#1890ff}.ant-menu-dark .ant-menu-item-disabled,.ant-menu-dark .ant-menu-submenu-disabled,.ant-menu-dark .ant-menu-item-disabled>a,.ant-menu-dark .ant-menu-submenu-disabled>a,.ant-menu-dark .ant-menu-item-disabled>span>a,.ant-menu-dark .ant-menu-submenu-disabled>span>a{color:#ffffff59!important;opacity:.8}.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title{color:#ffffff59!important}.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after{background:rgba(255,255,255,.35)!important}.ant-menu.ant-menu-rtl{direction:rtl;text-align:right}.ant-menu-rtl .ant-menu-item-group-title{text-align:right}.ant-menu-rtl.ant-menu-inline,.ant-menu-rtl.ant-menu-vertical{border-right:none;border-left:1px solid #f0f0f0}.ant-menu-rtl.ant-menu-dark.ant-menu-inline,.ant-menu-rtl.ant-menu-dark.ant-menu-vertical{border-left:none}.ant-menu-rtl.ant-menu-vertical.ant-menu-sub>.ant-menu-item,.ant-menu-rtl.ant-menu-vertical-left.ant-menu-sub>.ant-menu-item,.ant-menu-rtl.ant-menu-vertical-right.ant-menu-sub>.ant-menu-item,.ant-menu-rtl.ant-menu-vertical.ant-menu-sub>.ant-menu-submenu,.ant-menu-rtl.ant-menu-vertical-left.ant-menu-sub>.ant-menu-submenu,.ant-menu-rtl.ant-menu-vertical-right.ant-menu-sub>.ant-menu-submenu{transform-origin:top right}.ant-menu-rtl .ant-menu-item .ant-menu-item-icon,.ant-menu-rtl .ant-menu-submenu-title .ant-menu-item-icon,.ant-menu-rtl .ant-menu-item .anticon,.ant-menu-rtl .ant-menu-submenu-title .anticon{margin-right:auto;margin-left:10px}.ant-menu-rtl .ant-menu-item.ant-menu-item-only-child>.ant-menu-item-icon,.ant-menu-rtl .ant-menu-submenu-title.ant-menu-item-only-child>.ant-menu-item-icon,.ant-menu-rtl .ant-menu-item.ant-menu-item-only-child>.anticon,.ant-menu-rtl .ant-menu-submenu-title.ant-menu-item-only-child>.anticon{margin-left:0}.ant-menu-submenu-rtl.ant-menu-submenu-popup{transform-origin:100% 0}.ant-menu-rtl .ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-rtl .ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-rtl .ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-rtl .ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow{right:auto;left:16px}.ant-menu-rtl .ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-rtl .ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-rtl .ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:before{transform:rotate(-45deg) translateY(-2px)}.ant-menu-rtl .ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-rtl .ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-rtl .ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:after{transform:rotate(45deg) translateY(2px)}.ant-menu-rtl.ant-menu-vertical .ant-menu-item:after,.ant-menu-rtl.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-rtl.ant-menu-vertical-right .ant-menu-item:after,.ant-menu-rtl.ant-menu-inline .ant-menu-item:after{right:auto;left:0}.ant-menu-rtl.ant-menu-vertical .ant-menu-item,.ant-menu-rtl.ant-menu-vertical-left .ant-menu-item,.ant-menu-rtl.ant-menu-vertical-right .ant-menu-item,.ant-menu-rtl.ant-menu-inline .ant-menu-item,.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-title,.ant-menu-rtl.ant-menu-vertical-left .ant-menu-submenu-title,.ant-menu-rtl.ant-menu-vertical-right .ant-menu-submenu-title,.ant-menu-rtl.ant-menu-inline .ant-menu-submenu-title{text-align:right}.ant-menu-rtl.ant-menu-inline .ant-menu-submenu-title{padding-right:0;padding-left:34px}.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-title{padding-right:16px;padding-left:34px}.ant-menu-rtl.ant-menu-inline-collapsed.ant-menu-vertical .ant-menu-submenu-title{padding:0 calc(50% - 8px)}.ant-menu-rtl .ant-menu-item-group-list .ant-menu-item,.ant-menu-rtl .ant-menu-item-group-list .ant-menu-submenu-title{padding:0 28px 0 16px}.ant-menu-sub.ant-menu-inline{border:0}.ant-menu-rtl.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title{padding-right:32px;padding-left:0}.ant-tooltip{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;z-index:1070;display:block;width:-moz-max-content;width:max-content;width:intrinsic;max-width:250px;visibility:visible}.ant-tooltip-content{position:relative}.ant-tooltip-hidden{display:none}.ant-tooltip-placement-top,.ant-tooltip-placement-topLeft,.ant-tooltip-placement-topRight{padding-bottom:14.3137085px}.ant-tooltip-placement-right,.ant-tooltip-placement-rightTop,.ant-tooltip-placement-rightBottom{padding-left:14.3137085px}.ant-tooltip-placement-bottom,.ant-tooltip-placement-bottomLeft,.ant-tooltip-placement-bottomRight{padding-top:14.3137085px}.ant-tooltip-placement-left,.ant-tooltip-placement-leftTop,.ant-tooltip-placement-leftBottom{padding-right:14.3137085px}.ant-tooltip-inner{min-width:30px;min-height:32px;padding:6px 8px;color:#fff;text-align:left;text-decoration:none;word-wrap:break-word;background-color:#000000bf;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}.ant-tooltip-arrow{position:absolute;z-index:2;display:block;width:22px;height:22px;overflow:hidden;background:transparent;pointer-events:none}.ant-tooltip-arrow-content{--antd-arrow-background-color: linear-gradient(to right bottom, rgba(0, 0, 0, .65), rgba(0, 0, 0, .75));position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:11.3137085px;height:11.3137085px;margin:auto;content:"";pointer-events:auto;border-radius:0 0 2px;pointer-events:none}.ant-tooltip-arrow-content:before{position:absolute;top:-11.3137085px;left:-11.3137085px;width:33.9411255px;height:33.9411255px;background:var(--antd-arrow-background-color);background-repeat:no-repeat;background-position:-10px -10px;content:"";clip-path:inset(33% 33%);clip-path:path("M 9.849242404917499 24.091883092036785 A 5 5 0 0 1 13.384776310850237 22.627416997969522 L 20.627416997969522 22.627416997969522 A 2 2 0 0 0 22.627416997969522 20.627416997969522 L 22.627416997969522 13.384776310850237 A 5 5 0 0 1 24.091883092036785 9.849242404917499 L 23.091883092036785 9.849242404917499 L 9.849242404917499 23.091883092036785 Z")}.ant-tooltip-placement-top .ant-tooltip-arrow,.ant-tooltip-placement-topLeft .ant-tooltip-arrow,.ant-tooltip-placement-topRight .ant-tooltip-arrow{bottom:0;transform:translateY(100%)}.ant-tooltip-placement-top .ant-tooltip-arrow-content,.ant-tooltip-placement-topLeft .ant-tooltip-arrow-content,.ant-tooltip-placement-topRight .ant-tooltip-arrow-content{box-shadow:3px 3px 7px #00000012;transform:translateY(-11px) rotate(45deg)}.ant-tooltip-placement-top .ant-tooltip-arrow{left:50%;transform:translateY(100%) translate(-50%)}.ant-tooltip-placement-topLeft .ant-tooltip-arrow{left:13px}.ant-tooltip-placement-topRight .ant-tooltip-arrow{right:13px}.ant-tooltip-placement-right .ant-tooltip-arrow,.ant-tooltip-placement-rightTop .ant-tooltip-arrow,.ant-tooltip-placement-rightBottom .ant-tooltip-arrow{left:0;transform:translate(-100%)}.ant-tooltip-placement-right .ant-tooltip-arrow-content,.ant-tooltip-placement-rightTop .ant-tooltip-arrow-content,.ant-tooltip-placement-rightBottom .ant-tooltip-arrow-content{box-shadow:-3px 3px 7px #00000012;transform:translate(11px) rotate(135deg)}.ant-tooltip-placement-right .ant-tooltip-arrow{top:50%;transform:translate(-100%) translateY(-50%)}.ant-tooltip-placement-rightTop .ant-tooltip-arrow{top:5px}.ant-tooltip-placement-rightBottom .ant-tooltip-arrow{bottom:5px}.ant-tooltip-placement-left .ant-tooltip-arrow,.ant-tooltip-placement-leftTop .ant-tooltip-arrow,.ant-tooltip-placement-leftBottom .ant-tooltip-arrow{right:0;transform:translate(100%)}.ant-tooltip-placement-left .ant-tooltip-arrow-content,.ant-tooltip-placement-leftTop .ant-tooltip-arrow-content,.ant-tooltip-placement-leftBottom .ant-tooltip-arrow-content{box-shadow:3px -3px 7px #00000012;transform:translate(-11px) rotate(315deg)}.ant-tooltip-placement-left .ant-tooltip-arrow{top:50%;transform:translate(100%) translateY(-50%)}.ant-tooltip-placement-leftTop .ant-tooltip-arrow{top:5px}.ant-tooltip-placement-leftBottom .ant-tooltip-arrow{bottom:5px}.ant-tooltip-placement-bottom .ant-tooltip-arrow,.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow,.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{top:0;transform:translateY(-100%)}.ant-tooltip-placement-bottom .ant-tooltip-arrow-content,.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow-content,.ant-tooltip-placement-bottomRight .ant-tooltip-arrow-content{box-shadow:-3px -3px 7px #00000012;transform:translateY(11px) rotate(225deg)}.ant-tooltip-placement-bottom .ant-tooltip-arrow{left:50%;transform:translateY(-100%) translate(-50%)}.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow{left:13px}.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{right:13px}.ant-tooltip-pink .ant-tooltip-inner{background-color:#eb2f96}.ant-tooltip-pink .ant-tooltip-arrow-content:before{background:#eb2f96}.ant-tooltip-magenta .ant-tooltip-inner{background-color:#eb2f96}.ant-tooltip-magenta .ant-tooltip-arrow-content:before{background:#eb2f96}.ant-tooltip-red .ant-tooltip-inner{background-color:#f5222d}.ant-tooltip-red .ant-tooltip-arrow-content:before{background:#f5222d}.ant-tooltip-volcano .ant-tooltip-inner{background-color:#fa541c}.ant-tooltip-volcano .ant-tooltip-arrow-content:before{background:#fa541c}.ant-tooltip-orange .ant-tooltip-inner{background-color:#fa8c16}.ant-tooltip-orange .ant-tooltip-arrow-content:before{background:#fa8c16}.ant-tooltip-yellow .ant-tooltip-inner{background-color:#fadb14}.ant-tooltip-yellow .ant-tooltip-arrow-content:before{background:#fadb14}.ant-tooltip-gold .ant-tooltip-inner{background-color:#faad14}.ant-tooltip-gold .ant-tooltip-arrow-content:before{background:#faad14}.ant-tooltip-cyan .ant-tooltip-inner{background-color:#13c2c2}.ant-tooltip-cyan .ant-tooltip-arrow-content:before{background:#13c2c2}.ant-tooltip-lime .ant-tooltip-inner{background-color:#a0d911}.ant-tooltip-lime .ant-tooltip-arrow-content:before{background:#a0d911}.ant-tooltip-green .ant-tooltip-inner{background-color:#52c41a}.ant-tooltip-green .ant-tooltip-arrow-content:before{background:#52c41a}.ant-tooltip-blue .ant-tooltip-inner{background-color:#1890ff}.ant-tooltip-blue .ant-tooltip-arrow-content:before{background:#1890ff}.ant-tooltip-geekblue .ant-tooltip-inner{background-color:#2f54eb}.ant-tooltip-geekblue .ant-tooltip-arrow-content:before{background:#2f54eb}.ant-tooltip-purple .ant-tooltip-inner{background-color:#722ed1}.ant-tooltip-purple .ant-tooltip-arrow-content:before{background:#722ed1}.ant-tooltip-rtl{direction:rtl}.ant-tooltip-rtl .ant-tooltip-inner{text-align:right}.ant-space{display:inline-flex}.ant-space-vertical{flex-direction:column}.ant-space-align-center{align-items:center}.ant-space-align-start{align-items:flex-start}.ant-space-align-end{align-items:flex-end}.ant-space-align-baseline{align-items:baseline}.ant-space-item:empty{display:none}.ant-space-compact{display:inline-flex}.ant-space-compact-block{display:flex;width:100%}.ant-space-compact-vertical{flex-direction:column}.ant-space-rtl,.ant-space-compact-rtl{direction:rtl}.ant-form-item .ant-input-number+.ant-form-text{margin-left:8px}.ant-form-inline{display:flex;flex-wrap:wrap}.ant-form-inline .ant-form-item{flex:none;flex-wrap:nowrap;margin-right:16px;margin-bottom:0}.ant-form-inline .ant-form-item-with-help{margin-bottom:24px}.ant-form-inline .ant-form-item>.ant-form-item-label,.ant-form-inline .ant-form-item>.ant-form-item-control{display:inline-block;vertical-align:top}.ant-form-inline .ant-form-item>.ant-form-item-label{flex:none}.ant-form-inline .ant-form-item .ant-form-text,.ant-form-inline .ant-form-item .ant-form-item-has-feedback{display:inline-block}.ant-form-horizontal .ant-form-item-label{flex-grow:0}.ant-form-horizontal .ant-form-item-control{flex:1 1 0;min-width:0}.ant-form-horizontal .ant-form-item-label[class$="-24"]+.ant-form-item-control,.ant-form-horizontal .ant-form-item-label[class*="-24 "]+.ant-form-item-control{min-width:unset}.ant-form-vertical .ant-form-item-row{flex-direction:column}.ant-form-vertical .ant-form-item-label>label{height:auto}.ant-form-vertical .ant-form-item .ant-form-item-control{width:100%}.ant-form-vertical .ant-form-item-label,.ant-col-24.ant-form-item-label,.ant-col-xl-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-form-vertical .ant-form-item-label>label,.ant-col-24.ant-form-item-label>label,.ant-col-xl-24.ant-form-item-label>label{margin:0}.ant-form-vertical .ant-form-item-label>label:after,.ant-col-24.ant-form-item-label>label:after,.ant-col-xl-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-form-vertical .ant-form-item-label,.ant-form-rtl.ant-col-24.ant-form-item-label,.ant-form-rtl.ant-col-xl-24.ant-form-item-label{text-align:right}@media (max-width: 575px){.ant-form-item .ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-form-item .ant-form-item-label>label{margin:0}.ant-form-item .ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-form-item .ant-form-item-label{text-align:right}.ant-form .ant-form-item{flex-wrap:wrap}.ant-form .ant-form-item .ant-form-item-label,.ant-form .ant-form-item .ant-form-item-control{flex:0 0 100%;max-width:100%}.ant-col-xs-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-col-xs-24.ant-form-item-label>label{margin:0}.ant-col-xs-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-col-xs-24.ant-form-item-label{text-align:right}}@media (max-width: 767px){.ant-col-sm-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-col-sm-24.ant-form-item-label>label{margin:0}.ant-col-sm-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-col-sm-24.ant-form-item-label{text-align:right}}@media (max-width: 991px){.ant-col-md-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-col-md-24.ant-form-item-label>label{margin:0}.ant-col-md-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-col-md-24.ant-form-item-label{text-align:right}}@media (max-width: 1199px){.ant-col-lg-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-col-lg-24.ant-form-item-label>label{margin:0}.ant-col-lg-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-col-lg-24.ant-form-item-label{text-align:right}}@media (max-width: 1599px){.ant-col-xl-24.ant-form-item-label{padding:0 0 8px;line-height:1.5715;white-space:initial;text-align:left}.ant-col-xl-24.ant-form-item-label>label{margin:0}.ant-col-xl-24.ant-form-item-label>label:after{display:none}.ant-form-rtl.ant-col-xl-24.ant-form-item-label{text-align:right}}.ant-form-item-explain-error{color:#ff4d4f}.ant-form-item-explain-warning{color:#faad14}.ant-form-item-has-feedback .ant-switch{margin:2px 0 4px}.ant-form-item-has-warning .ant-form-item-split{color:#faad14}.ant-form-item-has-error .ant-form-item-split{color:#ff4d4f}.ant-form{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum"}.ant-form legend{display:block;width:100%;margin-bottom:20px;padding:0;color:#00000073;font-size:16px;line-height:inherit;border:0;border-bottom:1px solid #d9d9d9}.ant-form label{font-size:14px}.ant-form input[type=search]{box-sizing:border-box}.ant-form input[type=radio],.ant-form input[type=checkbox]{line-height:normal}.ant-form input[type=file]{display:block}.ant-form input[type=range]{display:block;width:100%}.ant-form select[multiple],.ant-form select[size]{height:auto}.ant-form input[type=file]:focus,.ant-form input[type=radio]:focus,.ant-form input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.ant-form output{display:block;padding-top:15px;color:#000000d9;font-size:14px;line-height:1.5715}.ant-form .ant-form-text{display:inline-block;padding-right:8px}.ant-form-small .ant-form-item-label>label{height:24px}.ant-form-small .ant-form-item-control-input{min-height:24px}.ant-form-large .ant-form-item-label>label{height:40px}.ant-form-large .ant-form-item-control-input{min-height:40px}.ant-form-item{box-sizing:border-box;margin:0 0 24px;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";vertical-align:top}.ant-form-item-with-help{transition:none}.ant-form-item-hidden,.ant-form-item-hidden.ant-row{display:none}.ant-form-item-label{display:inline-block;flex-grow:0;overflow:hidden;white-space:nowrap;text-align:right;vertical-align:middle}.ant-form-item-label-left{text-align:left}.ant-form-item-label-wrap{overflow:unset;line-height:1.3215em;white-space:unset}.ant-form-item-label>label{position:relative;display:inline-flex;align-items:center;max-width:100%;height:32px;color:#000000d9;font-size:14px}.ant-form-item-label>label>.anticon{font-size:14px;vertical-align:top}.ant-form-item-label>label.ant-form-item-required:not(.ant-form-item-required-mark-optional):before{display:inline-block;margin-right:4px;color:#ff4d4f;font-size:14px;font-family:SimSun,sans-serif;line-height:1;content:"*"}.ant-form-hide-required-mark .ant-form-item-label>label.ant-form-item-required:not(.ant-form-item-required-mark-optional):before{display:none}.ant-form-item-label>label .ant-form-item-optional{display:inline-block;margin-left:4px;color:#00000073}.ant-form-hide-required-mark .ant-form-item-label>label .ant-form-item-optional{display:none}.ant-form-item-label>label .ant-form-item-tooltip{color:#00000073;cursor:help;-ms-writing-mode:lr-tb;writing-mode:horizontal-tb;margin-inline-start:4px}.ant-form-item-label>label:after{content:":";position:relative;top:-.5px;margin:0 8px 0 2px}.ant-form-item-label>label.ant-form-item-no-colon:after{content:" "}.ant-form-item-control{display:flex;flex-direction:column;flex-grow:1}.ant-form-item-control:first-child:not([class^=ant-col-]):not([class*=" ant-col-"]){width:100%}.ant-form-item-control-input{position:relative;display:flex;align-items:center;min-height:32px}.ant-form-item-control-input-content{flex:auto;max-width:100%}.ant-form-item-explain,.ant-form-item-extra{clear:both;color:#00000073;font-size:14px;line-height:1.5715;transition:color .3s cubic-bezier(.215,.61,.355,1)}.ant-form-item-explain-connected{width:100%}.ant-form-item-extra{min-height:24px}.ant-form-item-with-help .ant-form-item-explain{height:auto;opacity:1}.ant-form-item-feedback-icon{font-size:14px;text-align:center;visibility:visible;animation:zoomIn .3s cubic-bezier(.12,.4,.29,1.46);pointer-events:none}.ant-form-item-feedback-icon-success{color:#52c41a}.ant-form-item-feedback-icon-error{color:#ff4d4f}.ant-form-item-feedback-icon-warning{color:#faad14}.ant-form-item-feedback-icon-validating{color:#1890ff}.ant-show-help{transition:opacity .3s cubic-bezier(.645,.045,.355,1)}.ant-show-help-appear,.ant-show-help-enter{opacity:0}.ant-show-help-appear-active,.ant-show-help-enter-active,.ant-show-help-leave{opacity:1}.ant-show-help-leave-active{opacity:0}.ant-show-help-item{overflow:hidden;transition:height .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1),transform .3s cubic-bezier(.645,.045,.355,1)!important}.ant-show-help-item-appear,.ant-show-help-item-enter{transform:translateY(-5px);opacity:0}.ant-show-help-item-appear-active,.ant-show-help-item-enter-active{transform:translateY(0);opacity:1}.ant-show-help-item-leave{transition:height .2s cubic-bezier(.645,.045,.355,1),opacity .2s cubic-bezier(.645,.045,.355,1),transform .2s cubic-bezier(.645,.045,.355,1)!important}.ant-show-help-item-leave-active{transform:translateY(-5px)}@keyframes diffZoomIn1{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes diffZoomIn2{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes diffZoomIn3{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.ant-form-rtl{direction:rtl}.ant-form-rtl .ant-form-item-label{text-align:left}.ant-form-rtl .ant-form-item-label>label.ant-form-item-required:before{margin-right:0;margin-left:4px}.ant-form-rtl .ant-form-item-label>label:after{margin:0 2px 0 8px}.ant-form-rtl .ant-form-item-label>label .ant-form-item-optional{margin-right:4px;margin-left:0}.ant-col-rtl .ant-form-item-control:first-child{width:100%}.ant-form-rtl .ant-form-item-has-feedback .ant-input{padding-right:11px;padding-left:24px}.ant-form-rtl .ant-form-item-has-feedback .ant-input-affix-wrapper .ant-input-suffix{padding-right:11px;padding-left:18px}.ant-form-rtl .ant-form-item-has-feedback .ant-input-affix-wrapper .ant-input,.ant-form-rtl .ant-form-item-has-feedback .ant-input-number-affix-wrapper .ant-input-number{padding:0}.ant-form-rtl .ant-form-item-has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix{right:auto;left:28px}.ant-form-rtl .ant-form-item-has-feedback .ant-input-number{padding-left:18px}.ant-form-rtl .ant-form-item-has-feedback>.ant-select .ant-select-arrow,.ant-form-rtl .ant-form-item-has-feedback>.ant-select .ant-select-clear,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon)>.ant-select .ant-select-arrow,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon)>.ant-select .ant-select-clear,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-number-group-addon)>.ant-select .ant-select-arrow,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-number-group-addon)>.ant-select .ant-select-clear{right:auto;left:32px}.ant-form-rtl .ant-form-item-has-feedback>.ant-select .ant-select-selection-selected-value,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon)>.ant-select .ant-select-selection-selected-value,.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-number-group-addon)>.ant-select .ant-select-selection-selected-value{padding-right:0;padding-left:42px}.ant-form-rtl .ant-form-item-has-feedback .ant-cascader-picker-arrow{margin-right:0;margin-left:19px}.ant-form-rtl .ant-form-item-has-feedback .ant-cascader-picker-clear{right:auto;left:32px}.ant-form-rtl .ant-form-item-has-feedback .ant-picker,.ant-form-rtl .ant-form-item-has-feedback .ant-picker-large{padding-right:11px;padding-left:29.2px}.ant-form-rtl .ant-form-item-has-feedback .ant-picker-small{padding-right:7px;padding-left:25.2px}.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-success .ant-form-item-children-icon,.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-warning .ant-form-item-children-icon,.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-error .ant-form-item-children-icon,.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-is-validating .ant-form-item-children-icon{right:auto;left:0}.ant-form-rtl.ant-form-inline .ant-form-item{margin-right:0;margin-left:16px}.ant-row{display:flex;flex-flow:row wrap;min-width:0}.ant-row:before,.ant-row:after{display:flex}.ant-row-no-wrap{flex-wrap:nowrap}.ant-row-start{justify-content:flex-start}.ant-row-center{justify-content:center}.ant-row-end{justify-content:flex-end}.ant-row-space-between{justify-content:space-between}.ant-row-space-around{justify-content:space-around}.ant-row-space-evenly{justify-content:space-evenly}.ant-row-top{align-items:flex-start}.ant-row-middle{align-items:center}.ant-row-bottom{align-items:flex-end}.ant-col{position:relative;max-width:100%;min-height:1px}.ant-col-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-push-24{left:100%}.ant-col-pull-24{right:100%}.ant-col-offset-24{margin-left:100%}.ant-col-order-24{order:24}.ant-col-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-push-23{left:95.83333333%}.ant-col-pull-23{right:95.83333333%}.ant-col-offset-23{margin-left:95.83333333%}.ant-col-order-23{order:23}.ant-col-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-push-22{left:91.66666667%}.ant-col-pull-22{right:91.66666667%}.ant-col-offset-22{margin-left:91.66666667%}.ant-col-order-22{order:22}.ant-col-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-push-21{left:87.5%}.ant-col-pull-21{right:87.5%}.ant-col-offset-21{margin-left:87.5%}.ant-col-order-21{order:21}.ant-col-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-push-20{left:83.33333333%}.ant-col-pull-20{right:83.33333333%}.ant-col-offset-20{margin-left:83.33333333%}.ant-col-order-20{order:20}.ant-col-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-push-19{left:79.16666667%}.ant-col-pull-19{right:79.16666667%}.ant-col-offset-19{margin-left:79.16666667%}.ant-col-order-19{order:19}.ant-col-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-push-18{left:75%}.ant-col-pull-18{right:75%}.ant-col-offset-18{margin-left:75%}.ant-col-order-18{order:18}.ant-col-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-push-17{left:70.83333333%}.ant-col-pull-17{right:70.83333333%}.ant-col-offset-17{margin-left:70.83333333%}.ant-col-order-17{order:17}.ant-col-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-push-16{left:66.66666667%}.ant-col-pull-16{right:66.66666667%}.ant-col-offset-16{margin-left:66.66666667%}.ant-col-order-16{order:16}.ant-col-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-push-15{left:62.5%}.ant-col-pull-15{right:62.5%}.ant-col-offset-15{margin-left:62.5%}.ant-col-order-15{order:15}.ant-col-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-push-14{left:58.33333333%}.ant-col-pull-14{right:58.33333333%}.ant-col-offset-14{margin-left:58.33333333%}.ant-col-order-14{order:14}.ant-col-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-push-13{left:54.16666667%}.ant-col-pull-13{right:54.16666667%}.ant-col-offset-13{margin-left:54.16666667%}.ant-col-order-13{order:13}.ant-col-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-push-12{left:50%}.ant-col-pull-12{right:50%}.ant-col-offset-12{margin-left:50%}.ant-col-order-12{order:12}.ant-col-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-push-11{left:45.83333333%}.ant-col-pull-11{right:45.83333333%}.ant-col-offset-11{margin-left:45.83333333%}.ant-col-order-11{order:11}.ant-col-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-push-10{left:41.66666667%}.ant-col-pull-10{right:41.66666667%}.ant-col-offset-10{margin-left:41.66666667%}.ant-col-order-10{order:10}.ant-col-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-push-9{left:37.5%}.ant-col-pull-9{right:37.5%}.ant-col-offset-9{margin-left:37.5%}.ant-col-order-9{order:9}.ant-col-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-push-8{left:33.33333333%}.ant-col-pull-8{right:33.33333333%}.ant-col-offset-8{margin-left:33.33333333%}.ant-col-order-8{order:8}.ant-col-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-push-7{left:29.16666667%}.ant-col-pull-7{right:29.16666667%}.ant-col-offset-7{margin-left:29.16666667%}.ant-col-order-7{order:7}.ant-col-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-push-6{left:25%}.ant-col-pull-6{right:25%}.ant-col-offset-6{margin-left:25%}.ant-col-order-6{order:6}.ant-col-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-push-5{left:20.83333333%}.ant-col-pull-5{right:20.83333333%}.ant-col-offset-5{margin-left:20.83333333%}.ant-col-order-5{order:5}.ant-col-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-push-4{left:16.66666667%}.ant-col-pull-4{right:16.66666667%}.ant-col-offset-4{margin-left:16.66666667%}.ant-col-order-4{order:4}.ant-col-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-push-3{left:12.5%}.ant-col-pull-3{right:12.5%}.ant-col-offset-3{margin-left:12.5%}.ant-col-order-3{order:3}.ant-col-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-push-2{left:8.33333333%}.ant-col-pull-2{right:8.33333333%}.ant-col-offset-2{margin-left:8.33333333%}.ant-col-order-2{order:2}.ant-col-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-push-1{left:4.16666667%}.ant-col-pull-1{right:4.16666667%}.ant-col-offset-1{margin-left:4.16666667%}.ant-col-order-1{order:1}.ant-col-0{display:none}.ant-col-offset-0{margin-left:0}.ant-col-order-0{order:0}.ant-col-offset-0.ant-col-rtl{margin-right:0}.ant-col-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}.ant-col-xs-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-xs-push-24{left:100%}.ant-col-xs-pull-24{right:100%}.ant-col-xs-offset-24{margin-left:100%}.ant-col-xs-order-24{order:24}.ant-col-xs-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-xs-push-23{left:95.83333333%}.ant-col-xs-pull-23{right:95.83333333%}.ant-col-xs-offset-23{margin-left:95.83333333%}.ant-col-xs-order-23{order:23}.ant-col-xs-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-xs-push-22{left:91.66666667%}.ant-col-xs-pull-22{right:91.66666667%}.ant-col-xs-offset-22{margin-left:91.66666667%}.ant-col-xs-order-22{order:22}.ant-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-xs-push-21{left:87.5%}.ant-col-xs-pull-21{right:87.5%}.ant-col-xs-offset-21{margin-left:87.5%}.ant-col-xs-order-21{order:21}.ant-col-xs-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-xs-push-20{left:83.33333333%}.ant-col-xs-pull-20{right:83.33333333%}.ant-col-xs-offset-20{margin-left:83.33333333%}.ant-col-xs-order-20{order:20}.ant-col-xs-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-xs-push-19{left:79.16666667%}.ant-col-xs-pull-19{right:79.16666667%}.ant-col-xs-offset-19{margin-left:79.16666667%}.ant-col-xs-order-19{order:19}.ant-col-xs-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-xs-push-18{left:75%}.ant-col-xs-pull-18{right:75%}.ant-col-xs-offset-18{margin-left:75%}.ant-col-xs-order-18{order:18}.ant-col-xs-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-xs-push-17{left:70.83333333%}.ant-col-xs-pull-17{right:70.83333333%}.ant-col-xs-offset-17{margin-left:70.83333333%}.ant-col-xs-order-17{order:17}.ant-col-xs-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-xs-push-16{left:66.66666667%}.ant-col-xs-pull-16{right:66.66666667%}.ant-col-xs-offset-16{margin-left:66.66666667%}.ant-col-xs-order-16{order:16}.ant-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-xs-push-15{left:62.5%}.ant-col-xs-pull-15{right:62.5%}.ant-col-xs-offset-15{margin-left:62.5%}.ant-col-xs-order-15{order:15}.ant-col-xs-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-xs-push-14{left:58.33333333%}.ant-col-xs-pull-14{right:58.33333333%}.ant-col-xs-offset-14{margin-left:58.33333333%}.ant-col-xs-order-14{order:14}.ant-col-xs-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-xs-push-13{left:54.16666667%}.ant-col-xs-pull-13{right:54.16666667%}.ant-col-xs-offset-13{margin-left:54.16666667%}.ant-col-xs-order-13{order:13}.ant-col-xs-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-xs-push-12{left:50%}.ant-col-xs-pull-12{right:50%}.ant-col-xs-offset-12{margin-left:50%}.ant-col-xs-order-12{order:12}.ant-col-xs-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-xs-push-11{left:45.83333333%}.ant-col-xs-pull-11{right:45.83333333%}.ant-col-xs-offset-11{margin-left:45.83333333%}.ant-col-xs-order-11{order:11}.ant-col-xs-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-xs-push-10{left:41.66666667%}.ant-col-xs-pull-10{right:41.66666667%}.ant-col-xs-offset-10{margin-left:41.66666667%}.ant-col-xs-order-10{order:10}.ant-col-xs-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-xs-push-9{left:37.5%}.ant-col-xs-pull-9{right:37.5%}.ant-col-xs-offset-9{margin-left:37.5%}.ant-col-xs-order-9{order:9}.ant-col-xs-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-xs-push-8{left:33.33333333%}.ant-col-xs-pull-8{right:33.33333333%}.ant-col-xs-offset-8{margin-left:33.33333333%}.ant-col-xs-order-8{order:8}.ant-col-xs-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-xs-push-7{left:29.16666667%}.ant-col-xs-pull-7{right:29.16666667%}.ant-col-xs-offset-7{margin-left:29.16666667%}.ant-col-xs-order-7{order:7}.ant-col-xs-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-xs-push-6{left:25%}.ant-col-xs-pull-6{right:25%}.ant-col-xs-offset-6{margin-left:25%}.ant-col-xs-order-6{order:6}.ant-col-xs-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-xs-push-5{left:20.83333333%}.ant-col-xs-pull-5{right:20.83333333%}.ant-col-xs-offset-5{margin-left:20.83333333%}.ant-col-xs-order-5{order:5}.ant-col-xs-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-xs-push-4{left:16.66666667%}.ant-col-xs-pull-4{right:16.66666667%}.ant-col-xs-offset-4{margin-left:16.66666667%}.ant-col-xs-order-4{order:4}.ant-col-xs-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-xs-push-3{left:12.5%}.ant-col-xs-pull-3{right:12.5%}.ant-col-xs-offset-3{margin-left:12.5%}.ant-col-xs-order-3{order:3}.ant-col-xs-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-xs-push-2{left:8.33333333%}.ant-col-xs-pull-2{right:8.33333333%}.ant-col-xs-offset-2{margin-left:8.33333333%}.ant-col-xs-order-2{order:2}.ant-col-xs-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-xs-push-1{left:4.16666667%}.ant-col-xs-pull-1{right:4.16666667%}.ant-col-xs-offset-1{margin-left:4.16666667%}.ant-col-xs-order-1{order:1}.ant-col-xs-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-xs-push-0{left:auto}.ant-col-xs-pull-0{right:auto}.ant-col-xs-offset-0{margin-left:0}.ant-col-xs-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-xs-push-0.ant-col-rtl{right:auto}.ant-col-xs-pull-0.ant-col-rtl{left:auto}.ant-col-xs-offset-0.ant-col-rtl{margin-right:0}.ant-col-xs-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-xs-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-xs-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-xs-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-xs-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-xs-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-xs-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-xs-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-xs-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-xs-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-xs-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-xs-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-xs-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-xs-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-xs-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-xs-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-xs-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-xs-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-xs-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-xs-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-xs-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-xs-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-xs-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-xs-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-xs-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-xs-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-xs-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-xs-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-xs-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-xs-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-xs-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-xs-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-xs-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-xs-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-xs-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-xs-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-xs-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-xs-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-xs-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-xs-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-xs-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-xs-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-xs-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-xs-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-xs-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-xs-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-xs-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-xs-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-xs-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-xs-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-xs-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-xs-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-xs-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-xs-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-xs-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-xs-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-xs-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-xs-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-xs-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-xs-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-xs-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-xs-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-xs-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-xs-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-xs-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-xs-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-xs-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-xs-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-xs-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-xs-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-xs-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-xs-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}@media (min-width: 576px){.ant-col-sm-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-sm-push-24{left:100%}.ant-col-sm-pull-24{right:100%}.ant-col-sm-offset-24{margin-left:100%}.ant-col-sm-order-24{order:24}.ant-col-sm-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-sm-push-23{left:95.83333333%}.ant-col-sm-pull-23{right:95.83333333%}.ant-col-sm-offset-23{margin-left:95.83333333%}.ant-col-sm-order-23{order:23}.ant-col-sm-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-sm-push-22{left:91.66666667%}.ant-col-sm-pull-22{right:91.66666667%}.ant-col-sm-offset-22{margin-left:91.66666667%}.ant-col-sm-order-22{order:22}.ant-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-sm-push-21{left:87.5%}.ant-col-sm-pull-21{right:87.5%}.ant-col-sm-offset-21{margin-left:87.5%}.ant-col-sm-order-21{order:21}.ant-col-sm-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-sm-push-20{left:83.33333333%}.ant-col-sm-pull-20{right:83.33333333%}.ant-col-sm-offset-20{margin-left:83.33333333%}.ant-col-sm-order-20{order:20}.ant-col-sm-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-sm-push-19{left:79.16666667%}.ant-col-sm-pull-19{right:79.16666667%}.ant-col-sm-offset-19{margin-left:79.16666667%}.ant-col-sm-order-19{order:19}.ant-col-sm-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-sm-push-18{left:75%}.ant-col-sm-pull-18{right:75%}.ant-col-sm-offset-18{margin-left:75%}.ant-col-sm-order-18{order:18}.ant-col-sm-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-sm-push-17{left:70.83333333%}.ant-col-sm-pull-17{right:70.83333333%}.ant-col-sm-offset-17{margin-left:70.83333333%}.ant-col-sm-order-17{order:17}.ant-col-sm-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-sm-push-16{left:66.66666667%}.ant-col-sm-pull-16{right:66.66666667%}.ant-col-sm-offset-16{margin-left:66.66666667%}.ant-col-sm-order-16{order:16}.ant-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-sm-push-15{left:62.5%}.ant-col-sm-pull-15{right:62.5%}.ant-col-sm-offset-15{margin-left:62.5%}.ant-col-sm-order-15{order:15}.ant-col-sm-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-sm-push-14{left:58.33333333%}.ant-col-sm-pull-14{right:58.33333333%}.ant-col-sm-offset-14{margin-left:58.33333333%}.ant-col-sm-order-14{order:14}.ant-col-sm-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-sm-push-13{left:54.16666667%}.ant-col-sm-pull-13{right:54.16666667%}.ant-col-sm-offset-13{margin-left:54.16666667%}.ant-col-sm-order-13{order:13}.ant-col-sm-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-sm-push-12{left:50%}.ant-col-sm-pull-12{right:50%}.ant-col-sm-offset-12{margin-left:50%}.ant-col-sm-order-12{order:12}.ant-col-sm-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-sm-push-11{left:45.83333333%}.ant-col-sm-pull-11{right:45.83333333%}.ant-col-sm-offset-11{margin-left:45.83333333%}.ant-col-sm-order-11{order:11}.ant-col-sm-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-sm-push-10{left:41.66666667%}.ant-col-sm-pull-10{right:41.66666667%}.ant-col-sm-offset-10{margin-left:41.66666667%}.ant-col-sm-order-10{order:10}.ant-col-sm-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-sm-push-9{left:37.5%}.ant-col-sm-pull-9{right:37.5%}.ant-col-sm-offset-9{margin-left:37.5%}.ant-col-sm-order-9{order:9}.ant-col-sm-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-sm-push-8{left:33.33333333%}.ant-col-sm-pull-8{right:33.33333333%}.ant-col-sm-offset-8{margin-left:33.33333333%}.ant-col-sm-order-8{order:8}.ant-col-sm-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-sm-push-7{left:29.16666667%}.ant-col-sm-pull-7{right:29.16666667%}.ant-col-sm-offset-7{margin-left:29.16666667%}.ant-col-sm-order-7{order:7}.ant-col-sm-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-sm-push-6{left:25%}.ant-col-sm-pull-6{right:25%}.ant-col-sm-offset-6{margin-left:25%}.ant-col-sm-order-6{order:6}.ant-col-sm-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-sm-push-5{left:20.83333333%}.ant-col-sm-pull-5{right:20.83333333%}.ant-col-sm-offset-5{margin-left:20.83333333%}.ant-col-sm-order-5{order:5}.ant-col-sm-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-sm-push-4{left:16.66666667%}.ant-col-sm-pull-4{right:16.66666667%}.ant-col-sm-offset-4{margin-left:16.66666667%}.ant-col-sm-order-4{order:4}.ant-col-sm-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-sm-push-3{left:12.5%}.ant-col-sm-pull-3{right:12.5%}.ant-col-sm-offset-3{margin-left:12.5%}.ant-col-sm-order-3{order:3}.ant-col-sm-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-sm-push-2{left:8.33333333%}.ant-col-sm-pull-2{right:8.33333333%}.ant-col-sm-offset-2{margin-left:8.33333333%}.ant-col-sm-order-2{order:2}.ant-col-sm-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-sm-push-1{left:4.16666667%}.ant-col-sm-pull-1{right:4.16666667%}.ant-col-sm-offset-1{margin-left:4.16666667%}.ant-col-sm-order-1{order:1}.ant-col-sm-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-sm-push-0{left:auto}.ant-col-sm-pull-0{right:auto}.ant-col-sm-offset-0{margin-left:0}.ant-col-sm-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-sm-push-0.ant-col-rtl{right:auto}.ant-col-sm-pull-0.ant-col-rtl{left:auto}.ant-col-sm-offset-0.ant-col-rtl{margin-right:0}.ant-col-sm-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-sm-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-sm-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-sm-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-sm-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-sm-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-sm-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-sm-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-sm-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-sm-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-sm-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-sm-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-sm-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-sm-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-sm-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-sm-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-sm-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-sm-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-sm-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-sm-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-sm-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-sm-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-sm-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-sm-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-sm-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-sm-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-sm-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-sm-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-sm-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-sm-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-sm-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-sm-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-sm-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-sm-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-sm-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-sm-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-sm-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-sm-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-sm-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-sm-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-sm-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-sm-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-sm-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-sm-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-sm-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-sm-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-sm-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-sm-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-sm-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-sm-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-sm-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-sm-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-sm-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-sm-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-sm-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-sm-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-sm-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-sm-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-sm-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-sm-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-sm-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-sm-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-sm-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-sm-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-sm-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-sm-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-sm-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-sm-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-sm-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-sm-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-sm-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-sm-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}}@media (min-width: 768px){.ant-col-md-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-md-push-24{left:100%}.ant-col-md-pull-24{right:100%}.ant-col-md-offset-24{margin-left:100%}.ant-col-md-order-24{order:24}.ant-col-md-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-md-push-23{left:95.83333333%}.ant-col-md-pull-23{right:95.83333333%}.ant-col-md-offset-23{margin-left:95.83333333%}.ant-col-md-order-23{order:23}.ant-col-md-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-md-push-22{left:91.66666667%}.ant-col-md-pull-22{right:91.66666667%}.ant-col-md-offset-22{margin-left:91.66666667%}.ant-col-md-order-22{order:22}.ant-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-md-push-21{left:87.5%}.ant-col-md-pull-21{right:87.5%}.ant-col-md-offset-21{margin-left:87.5%}.ant-col-md-order-21{order:21}.ant-col-md-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-md-push-20{left:83.33333333%}.ant-col-md-pull-20{right:83.33333333%}.ant-col-md-offset-20{margin-left:83.33333333%}.ant-col-md-order-20{order:20}.ant-col-md-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-md-push-19{left:79.16666667%}.ant-col-md-pull-19{right:79.16666667%}.ant-col-md-offset-19{margin-left:79.16666667%}.ant-col-md-order-19{order:19}.ant-col-md-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-md-push-18{left:75%}.ant-col-md-pull-18{right:75%}.ant-col-md-offset-18{margin-left:75%}.ant-col-md-order-18{order:18}.ant-col-md-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-md-push-17{left:70.83333333%}.ant-col-md-pull-17{right:70.83333333%}.ant-col-md-offset-17{margin-left:70.83333333%}.ant-col-md-order-17{order:17}.ant-col-md-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-md-push-16{left:66.66666667%}.ant-col-md-pull-16{right:66.66666667%}.ant-col-md-offset-16{margin-left:66.66666667%}.ant-col-md-order-16{order:16}.ant-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-md-push-15{left:62.5%}.ant-col-md-pull-15{right:62.5%}.ant-col-md-offset-15{margin-left:62.5%}.ant-col-md-order-15{order:15}.ant-col-md-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-md-push-14{left:58.33333333%}.ant-col-md-pull-14{right:58.33333333%}.ant-col-md-offset-14{margin-left:58.33333333%}.ant-col-md-order-14{order:14}.ant-col-md-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-md-push-13{left:54.16666667%}.ant-col-md-pull-13{right:54.16666667%}.ant-col-md-offset-13{margin-left:54.16666667%}.ant-col-md-order-13{order:13}.ant-col-md-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-md-push-12{left:50%}.ant-col-md-pull-12{right:50%}.ant-col-md-offset-12{margin-left:50%}.ant-col-md-order-12{order:12}.ant-col-md-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-md-push-11{left:45.83333333%}.ant-col-md-pull-11{right:45.83333333%}.ant-col-md-offset-11{margin-left:45.83333333%}.ant-col-md-order-11{order:11}.ant-col-md-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-md-push-10{left:41.66666667%}.ant-col-md-pull-10{right:41.66666667%}.ant-col-md-offset-10{margin-left:41.66666667%}.ant-col-md-order-10{order:10}.ant-col-md-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-md-push-9{left:37.5%}.ant-col-md-pull-9{right:37.5%}.ant-col-md-offset-9{margin-left:37.5%}.ant-col-md-order-9{order:9}.ant-col-md-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-md-push-8{left:33.33333333%}.ant-col-md-pull-8{right:33.33333333%}.ant-col-md-offset-8{margin-left:33.33333333%}.ant-col-md-order-8{order:8}.ant-col-md-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-md-push-7{left:29.16666667%}.ant-col-md-pull-7{right:29.16666667%}.ant-col-md-offset-7{margin-left:29.16666667%}.ant-col-md-order-7{order:7}.ant-col-md-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-md-push-6{left:25%}.ant-col-md-pull-6{right:25%}.ant-col-md-offset-6{margin-left:25%}.ant-col-md-order-6{order:6}.ant-col-md-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-md-push-5{left:20.83333333%}.ant-col-md-pull-5{right:20.83333333%}.ant-col-md-offset-5{margin-left:20.83333333%}.ant-col-md-order-5{order:5}.ant-col-md-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-md-push-4{left:16.66666667%}.ant-col-md-pull-4{right:16.66666667%}.ant-col-md-offset-4{margin-left:16.66666667%}.ant-col-md-order-4{order:4}.ant-col-md-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-md-push-3{left:12.5%}.ant-col-md-pull-3{right:12.5%}.ant-col-md-offset-3{margin-left:12.5%}.ant-col-md-order-3{order:3}.ant-col-md-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-md-push-2{left:8.33333333%}.ant-col-md-pull-2{right:8.33333333%}.ant-col-md-offset-2{margin-left:8.33333333%}.ant-col-md-order-2{order:2}.ant-col-md-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-md-push-1{left:4.16666667%}.ant-col-md-pull-1{right:4.16666667%}.ant-col-md-offset-1{margin-left:4.16666667%}.ant-col-md-order-1{order:1}.ant-col-md-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-md-push-0{left:auto}.ant-col-md-pull-0{right:auto}.ant-col-md-offset-0{margin-left:0}.ant-col-md-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-md-push-0.ant-col-rtl{right:auto}.ant-col-md-pull-0.ant-col-rtl{left:auto}.ant-col-md-offset-0.ant-col-rtl{margin-right:0}.ant-col-md-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-md-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-md-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-md-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-md-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-md-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-md-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-md-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-md-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-md-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-md-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-md-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-md-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-md-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-md-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-md-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-md-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-md-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-md-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-md-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-md-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-md-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-md-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-md-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-md-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-md-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-md-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-md-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-md-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-md-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-md-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-md-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-md-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-md-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-md-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-md-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-md-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-md-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-md-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-md-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-md-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-md-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-md-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-md-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-md-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-md-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-md-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-md-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-md-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-md-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-md-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-md-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-md-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-md-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-md-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-md-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-md-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-md-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-md-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-md-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-md-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-md-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-md-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-md-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-md-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-md-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-md-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-md-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-md-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-md-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-md-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-md-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}}@media (min-width: 992px){.ant-col-lg-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-lg-push-24{left:100%}.ant-col-lg-pull-24{right:100%}.ant-col-lg-offset-24{margin-left:100%}.ant-col-lg-order-24{order:24}.ant-col-lg-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-lg-push-23{left:95.83333333%}.ant-col-lg-pull-23{right:95.83333333%}.ant-col-lg-offset-23{margin-left:95.83333333%}.ant-col-lg-order-23{order:23}.ant-col-lg-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-lg-push-22{left:91.66666667%}.ant-col-lg-pull-22{right:91.66666667%}.ant-col-lg-offset-22{margin-left:91.66666667%}.ant-col-lg-order-22{order:22}.ant-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-lg-push-21{left:87.5%}.ant-col-lg-pull-21{right:87.5%}.ant-col-lg-offset-21{margin-left:87.5%}.ant-col-lg-order-21{order:21}.ant-col-lg-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-lg-push-20{left:83.33333333%}.ant-col-lg-pull-20{right:83.33333333%}.ant-col-lg-offset-20{margin-left:83.33333333%}.ant-col-lg-order-20{order:20}.ant-col-lg-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-lg-push-19{left:79.16666667%}.ant-col-lg-pull-19{right:79.16666667%}.ant-col-lg-offset-19{margin-left:79.16666667%}.ant-col-lg-order-19{order:19}.ant-col-lg-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-lg-push-18{left:75%}.ant-col-lg-pull-18{right:75%}.ant-col-lg-offset-18{margin-left:75%}.ant-col-lg-order-18{order:18}.ant-col-lg-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-lg-push-17{left:70.83333333%}.ant-col-lg-pull-17{right:70.83333333%}.ant-col-lg-offset-17{margin-left:70.83333333%}.ant-col-lg-order-17{order:17}.ant-col-lg-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-lg-push-16{left:66.66666667%}.ant-col-lg-pull-16{right:66.66666667%}.ant-col-lg-offset-16{margin-left:66.66666667%}.ant-col-lg-order-16{order:16}.ant-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-lg-push-15{left:62.5%}.ant-col-lg-pull-15{right:62.5%}.ant-col-lg-offset-15{margin-left:62.5%}.ant-col-lg-order-15{order:15}.ant-col-lg-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-lg-push-14{left:58.33333333%}.ant-col-lg-pull-14{right:58.33333333%}.ant-col-lg-offset-14{margin-left:58.33333333%}.ant-col-lg-order-14{order:14}.ant-col-lg-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-lg-push-13{left:54.16666667%}.ant-col-lg-pull-13{right:54.16666667%}.ant-col-lg-offset-13{margin-left:54.16666667%}.ant-col-lg-order-13{order:13}.ant-col-lg-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-lg-push-12{left:50%}.ant-col-lg-pull-12{right:50%}.ant-col-lg-offset-12{margin-left:50%}.ant-col-lg-order-12{order:12}.ant-col-lg-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-lg-push-11{left:45.83333333%}.ant-col-lg-pull-11{right:45.83333333%}.ant-col-lg-offset-11{margin-left:45.83333333%}.ant-col-lg-order-11{order:11}.ant-col-lg-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-lg-push-10{left:41.66666667%}.ant-col-lg-pull-10{right:41.66666667%}.ant-col-lg-offset-10{margin-left:41.66666667%}.ant-col-lg-order-10{order:10}.ant-col-lg-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-lg-push-9{left:37.5%}.ant-col-lg-pull-9{right:37.5%}.ant-col-lg-offset-9{margin-left:37.5%}.ant-col-lg-order-9{order:9}.ant-col-lg-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-lg-push-8{left:33.33333333%}.ant-col-lg-pull-8{right:33.33333333%}.ant-col-lg-offset-8{margin-left:33.33333333%}.ant-col-lg-order-8{order:8}.ant-col-lg-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-lg-push-7{left:29.16666667%}.ant-col-lg-pull-7{right:29.16666667%}.ant-col-lg-offset-7{margin-left:29.16666667%}.ant-col-lg-order-7{order:7}.ant-col-lg-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-lg-push-6{left:25%}.ant-col-lg-pull-6{right:25%}.ant-col-lg-offset-6{margin-left:25%}.ant-col-lg-order-6{order:6}.ant-col-lg-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-lg-push-5{left:20.83333333%}.ant-col-lg-pull-5{right:20.83333333%}.ant-col-lg-offset-5{margin-left:20.83333333%}.ant-col-lg-order-5{order:5}.ant-col-lg-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-lg-push-4{left:16.66666667%}.ant-col-lg-pull-4{right:16.66666667%}.ant-col-lg-offset-4{margin-left:16.66666667%}.ant-col-lg-order-4{order:4}.ant-col-lg-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-lg-push-3{left:12.5%}.ant-col-lg-pull-3{right:12.5%}.ant-col-lg-offset-3{margin-left:12.5%}.ant-col-lg-order-3{order:3}.ant-col-lg-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-lg-push-2{left:8.33333333%}.ant-col-lg-pull-2{right:8.33333333%}.ant-col-lg-offset-2{margin-left:8.33333333%}.ant-col-lg-order-2{order:2}.ant-col-lg-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-lg-push-1{left:4.16666667%}.ant-col-lg-pull-1{right:4.16666667%}.ant-col-lg-offset-1{margin-left:4.16666667%}.ant-col-lg-order-1{order:1}.ant-col-lg-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-lg-push-0{left:auto}.ant-col-lg-pull-0{right:auto}.ant-col-lg-offset-0{margin-left:0}.ant-col-lg-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-lg-push-0.ant-col-rtl{right:auto}.ant-col-lg-pull-0.ant-col-rtl{left:auto}.ant-col-lg-offset-0.ant-col-rtl{margin-right:0}.ant-col-lg-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-lg-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-lg-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-lg-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-lg-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-lg-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-lg-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-lg-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-lg-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-lg-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-lg-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-lg-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-lg-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-lg-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-lg-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-lg-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-lg-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-lg-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-lg-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-lg-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-lg-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-lg-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-lg-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-lg-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-lg-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-lg-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-lg-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-lg-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-lg-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-lg-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-lg-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-lg-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-lg-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-lg-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-lg-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-lg-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-lg-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-lg-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-lg-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-lg-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-lg-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-lg-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-lg-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-lg-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-lg-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-lg-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-lg-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-lg-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-lg-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-lg-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-lg-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-lg-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-lg-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-lg-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-lg-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-lg-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-lg-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-lg-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-lg-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-lg-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-lg-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-lg-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-lg-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-lg-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-lg-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-lg-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-lg-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-lg-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-lg-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-lg-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-lg-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-lg-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}}@media (min-width: 1200px){.ant-col-xl-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-xl-push-24{left:100%}.ant-col-xl-pull-24{right:100%}.ant-col-xl-offset-24{margin-left:100%}.ant-col-xl-order-24{order:24}.ant-col-xl-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-xl-push-23{left:95.83333333%}.ant-col-xl-pull-23{right:95.83333333%}.ant-col-xl-offset-23{margin-left:95.83333333%}.ant-col-xl-order-23{order:23}.ant-col-xl-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-xl-push-22{left:91.66666667%}.ant-col-xl-pull-22{right:91.66666667%}.ant-col-xl-offset-22{margin-left:91.66666667%}.ant-col-xl-order-22{order:22}.ant-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-xl-push-21{left:87.5%}.ant-col-xl-pull-21{right:87.5%}.ant-col-xl-offset-21{margin-left:87.5%}.ant-col-xl-order-21{order:21}.ant-col-xl-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-xl-push-20{left:83.33333333%}.ant-col-xl-pull-20{right:83.33333333%}.ant-col-xl-offset-20{margin-left:83.33333333%}.ant-col-xl-order-20{order:20}.ant-col-xl-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-xl-push-19{left:79.16666667%}.ant-col-xl-pull-19{right:79.16666667%}.ant-col-xl-offset-19{margin-left:79.16666667%}.ant-col-xl-order-19{order:19}.ant-col-xl-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-xl-push-18{left:75%}.ant-col-xl-pull-18{right:75%}.ant-col-xl-offset-18{margin-left:75%}.ant-col-xl-order-18{order:18}.ant-col-xl-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-xl-push-17{left:70.83333333%}.ant-col-xl-pull-17{right:70.83333333%}.ant-col-xl-offset-17{margin-left:70.83333333%}.ant-col-xl-order-17{order:17}.ant-col-xl-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-xl-push-16{left:66.66666667%}.ant-col-xl-pull-16{right:66.66666667%}.ant-col-xl-offset-16{margin-left:66.66666667%}.ant-col-xl-order-16{order:16}.ant-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-xl-push-15{left:62.5%}.ant-col-xl-pull-15{right:62.5%}.ant-col-xl-offset-15{margin-left:62.5%}.ant-col-xl-order-15{order:15}.ant-col-xl-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-xl-push-14{left:58.33333333%}.ant-col-xl-pull-14{right:58.33333333%}.ant-col-xl-offset-14{margin-left:58.33333333%}.ant-col-xl-order-14{order:14}.ant-col-xl-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-xl-push-13{left:54.16666667%}.ant-col-xl-pull-13{right:54.16666667%}.ant-col-xl-offset-13{margin-left:54.16666667%}.ant-col-xl-order-13{order:13}.ant-col-xl-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-xl-push-12{left:50%}.ant-col-xl-pull-12{right:50%}.ant-col-xl-offset-12{margin-left:50%}.ant-col-xl-order-12{order:12}.ant-col-xl-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-xl-push-11{left:45.83333333%}.ant-col-xl-pull-11{right:45.83333333%}.ant-col-xl-offset-11{margin-left:45.83333333%}.ant-col-xl-order-11{order:11}.ant-col-xl-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-xl-push-10{left:41.66666667%}.ant-col-xl-pull-10{right:41.66666667%}.ant-col-xl-offset-10{margin-left:41.66666667%}.ant-col-xl-order-10{order:10}.ant-col-xl-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-xl-push-9{left:37.5%}.ant-col-xl-pull-9{right:37.5%}.ant-col-xl-offset-9{margin-left:37.5%}.ant-col-xl-order-9{order:9}.ant-col-xl-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-xl-push-8{left:33.33333333%}.ant-col-xl-pull-8{right:33.33333333%}.ant-col-xl-offset-8{margin-left:33.33333333%}.ant-col-xl-order-8{order:8}.ant-col-xl-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-xl-push-7{left:29.16666667%}.ant-col-xl-pull-7{right:29.16666667%}.ant-col-xl-offset-7{margin-left:29.16666667%}.ant-col-xl-order-7{order:7}.ant-col-xl-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-xl-push-6{left:25%}.ant-col-xl-pull-6{right:25%}.ant-col-xl-offset-6{margin-left:25%}.ant-col-xl-order-6{order:6}.ant-col-xl-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-xl-push-5{left:20.83333333%}.ant-col-xl-pull-5{right:20.83333333%}.ant-col-xl-offset-5{margin-left:20.83333333%}.ant-col-xl-order-5{order:5}.ant-col-xl-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-xl-push-4{left:16.66666667%}.ant-col-xl-pull-4{right:16.66666667%}.ant-col-xl-offset-4{margin-left:16.66666667%}.ant-col-xl-order-4{order:4}.ant-col-xl-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-xl-push-3{left:12.5%}.ant-col-xl-pull-3{right:12.5%}.ant-col-xl-offset-3{margin-left:12.5%}.ant-col-xl-order-3{order:3}.ant-col-xl-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-xl-push-2{left:8.33333333%}.ant-col-xl-pull-2{right:8.33333333%}.ant-col-xl-offset-2{margin-left:8.33333333%}.ant-col-xl-order-2{order:2}.ant-col-xl-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-xl-push-1{left:4.16666667%}.ant-col-xl-pull-1{right:4.16666667%}.ant-col-xl-offset-1{margin-left:4.16666667%}.ant-col-xl-order-1{order:1}.ant-col-xl-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-xl-push-0{left:auto}.ant-col-xl-pull-0{right:auto}.ant-col-xl-offset-0{margin-left:0}.ant-col-xl-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-xl-push-0.ant-col-rtl{right:auto}.ant-col-xl-pull-0.ant-col-rtl{left:auto}.ant-col-xl-offset-0.ant-col-rtl{margin-right:0}.ant-col-xl-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-xl-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-xl-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-xl-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-xl-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-xl-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-xl-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-xl-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-xl-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-xl-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-xl-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-xl-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-xl-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-xl-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-xl-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-xl-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-xl-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-xl-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-xl-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-xl-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-xl-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-xl-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-xl-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-xl-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-xl-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-xl-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-xl-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-xl-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-xl-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-xl-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-xl-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-xl-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-xl-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-xl-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-xl-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-xl-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-xl-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-xl-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-xl-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-xl-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-xl-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-xl-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-xl-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-xl-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-xl-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-xl-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-xl-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-xl-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-xl-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-xl-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-xl-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-xl-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-xl-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-xl-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-xl-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-xl-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-xl-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-xl-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-xl-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-xl-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-xl-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-xl-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-xl-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-xl-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-xl-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-xl-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-xl-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-xl-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-xl-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-xl-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-xl-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-xl-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}}@media (min-width: 1600px){.ant-col-xxl-24{display:block;flex:0 0 100%;max-width:100%}.ant-col-xxl-push-24{left:100%}.ant-col-xxl-pull-24{right:100%}.ant-col-xxl-offset-24{margin-left:100%}.ant-col-xxl-order-24{order:24}.ant-col-xxl-23{display:block;flex:0 0 95.83333333%;max-width:95.83333333%}.ant-col-xxl-push-23{left:95.83333333%}.ant-col-xxl-pull-23{right:95.83333333%}.ant-col-xxl-offset-23{margin-left:95.83333333%}.ant-col-xxl-order-23{order:23}.ant-col-xxl-22{display:block;flex:0 0 91.66666667%;max-width:91.66666667%}.ant-col-xxl-push-22{left:91.66666667%}.ant-col-xxl-pull-22{right:91.66666667%}.ant-col-xxl-offset-22{margin-left:91.66666667%}.ant-col-xxl-order-22{order:22}.ant-col-xxl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.ant-col-xxl-push-21{left:87.5%}.ant-col-xxl-pull-21{right:87.5%}.ant-col-xxl-offset-21{margin-left:87.5%}.ant-col-xxl-order-21{order:21}.ant-col-xxl-20{display:block;flex:0 0 83.33333333%;max-width:83.33333333%}.ant-col-xxl-push-20{left:83.33333333%}.ant-col-xxl-pull-20{right:83.33333333%}.ant-col-xxl-offset-20{margin-left:83.33333333%}.ant-col-xxl-order-20{order:20}.ant-col-xxl-19{display:block;flex:0 0 79.16666667%;max-width:79.16666667%}.ant-col-xxl-push-19{left:79.16666667%}.ant-col-xxl-pull-19{right:79.16666667%}.ant-col-xxl-offset-19{margin-left:79.16666667%}.ant-col-xxl-order-19{order:19}.ant-col-xxl-18{display:block;flex:0 0 75%;max-width:75%}.ant-col-xxl-push-18{left:75%}.ant-col-xxl-pull-18{right:75%}.ant-col-xxl-offset-18{margin-left:75%}.ant-col-xxl-order-18{order:18}.ant-col-xxl-17{display:block;flex:0 0 70.83333333%;max-width:70.83333333%}.ant-col-xxl-push-17{left:70.83333333%}.ant-col-xxl-pull-17{right:70.83333333%}.ant-col-xxl-offset-17{margin-left:70.83333333%}.ant-col-xxl-order-17{order:17}.ant-col-xxl-16{display:block;flex:0 0 66.66666667%;max-width:66.66666667%}.ant-col-xxl-push-16{left:66.66666667%}.ant-col-xxl-pull-16{right:66.66666667%}.ant-col-xxl-offset-16{margin-left:66.66666667%}.ant-col-xxl-order-16{order:16}.ant-col-xxl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.ant-col-xxl-push-15{left:62.5%}.ant-col-xxl-pull-15{right:62.5%}.ant-col-xxl-offset-15{margin-left:62.5%}.ant-col-xxl-order-15{order:15}.ant-col-xxl-14{display:block;flex:0 0 58.33333333%;max-width:58.33333333%}.ant-col-xxl-push-14{left:58.33333333%}.ant-col-xxl-pull-14{right:58.33333333%}.ant-col-xxl-offset-14{margin-left:58.33333333%}.ant-col-xxl-order-14{order:14}.ant-col-xxl-13{display:block;flex:0 0 54.16666667%;max-width:54.16666667%}.ant-col-xxl-push-13{left:54.16666667%}.ant-col-xxl-pull-13{right:54.16666667%}.ant-col-xxl-offset-13{margin-left:54.16666667%}.ant-col-xxl-order-13{order:13}.ant-col-xxl-12{display:block;flex:0 0 50%;max-width:50%}.ant-col-xxl-push-12{left:50%}.ant-col-xxl-pull-12{right:50%}.ant-col-xxl-offset-12{margin-left:50%}.ant-col-xxl-order-12{order:12}.ant-col-xxl-11{display:block;flex:0 0 45.83333333%;max-width:45.83333333%}.ant-col-xxl-push-11{left:45.83333333%}.ant-col-xxl-pull-11{right:45.83333333%}.ant-col-xxl-offset-11{margin-left:45.83333333%}.ant-col-xxl-order-11{order:11}.ant-col-xxl-10{display:block;flex:0 0 41.66666667%;max-width:41.66666667%}.ant-col-xxl-push-10{left:41.66666667%}.ant-col-xxl-pull-10{right:41.66666667%}.ant-col-xxl-offset-10{margin-left:41.66666667%}.ant-col-xxl-order-10{order:10}.ant-col-xxl-9{display:block;flex:0 0 37.5%;max-width:37.5%}.ant-col-xxl-push-9{left:37.5%}.ant-col-xxl-pull-9{right:37.5%}.ant-col-xxl-offset-9{margin-left:37.5%}.ant-col-xxl-order-9{order:9}.ant-col-xxl-8{display:block;flex:0 0 33.33333333%;max-width:33.33333333%}.ant-col-xxl-push-8{left:33.33333333%}.ant-col-xxl-pull-8{right:33.33333333%}.ant-col-xxl-offset-8{margin-left:33.33333333%}.ant-col-xxl-order-8{order:8}.ant-col-xxl-7{display:block;flex:0 0 29.16666667%;max-width:29.16666667%}.ant-col-xxl-push-7{left:29.16666667%}.ant-col-xxl-pull-7{right:29.16666667%}.ant-col-xxl-offset-7{margin-left:29.16666667%}.ant-col-xxl-order-7{order:7}.ant-col-xxl-6{display:block;flex:0 0 25%;max-width:25%}.ant-col-xxl-push-6{left:25%}.ant-col-xxl-pull-6{right:25%}.ant-col-xxl-offset-6{margin-left:25%}.ant-col-xxl-order-6{order:6}.ant-col-xxl-5{display:block;flex:0 0 20.83333333%;max-width:20.83333333%}.ant-col-xxl-push-5{left:20.83333333%}.ant-col-xxl-pull-5{right:20.83333333%}.ant-col-xxl-offset-5{margin-left:20.83333333%}.ant-col-xxl-order-5{order:5}.ant-col-xxl-4{display:block;flex:0 0 16.66666667%;max-width:16.66666667%}.ant-col-xxl-push-4{left:16.66666667%}.ant-col-xxl-pull-4{right:16.66666667%}.ant-col-xxl-offset-4{margin-left:16.66666667%}.ant-col-xxl-order-4{order:4}.ant-col-xxl-3{display:block;flex:0 0 12.5%;max-width:12.5%}.ant-col-xxl-push-3{left:12.5%}.ant-col-xxl-pull-3{right:12.5%}.ant-col-xxl-offset-3{margin-left:12.5%}.ant-col-xxl-order-3{order:3}.ant-col-xxl-2{display:block;flex:0 0 8.33333333%;max-width:8.33333333%}.ant-col-xxl-push-2{left:8.33333333%}.ant-col-xxl-pull-2{right:8.33333333%}.ant-col-xxl-offset-2{margin-left:8.33333333%}.ant-col-xxl-order-2{order:2}.ant-col-xxl-1{display:block;flex:0 0 4.16666667%;max-width:4.16666667%}.ant-col-xxl-push-1{left:4.16666667%}.ant-col-xxl-pull-1{right:4.16666667%}.ant-col-xxl-offset-1{margin-left:4.16666667%}.ant-col-xxl-order-1{order:1}.ant-col-xxl-0{display:none}.ant-col-push-0{left:auto}.ant-col-pull-0{right:auto}.ant-col-xxl-push-0{left:auto}.ant-col-xxl-pull-0{right:auto}.ant-col-xxl-offset-0{margin-left:0}.ant-col-xxl-order-0{order:0}.ant-col-push-0.ant-col-rtl{right:auto}.ant-col-pull-0.ant-col-rtl{left:auto}.ant-col-xxl-push-0.ant-col-rtl{right:auto}.ant-col-xxl-pull-0.ant-col-rtl{left:auto}.ant-col-xxl-offset-0.ant-col-rtl{margin-right:0}.ant-col-xxl-push-1.ant-col-rtl{right:4.16666667%;left:auto}.ant-col-xxl-pull-1.ant-col-rtl{right:auto;left:4.16666667%}.ant-col-xxl-offset-1.ant-col-rtl{margin-right:4.16666667%;margin-left:0}.ant-col-xxl-push-2.ant-col-rtl{right:8.33333333%;left:auto}.ant-col-xxl-pull-2.ant-col-rtl{right:auto;left:8.33333333%}.ant-col-xxl-offset-2.ant-col-rtl{margin-right:8.33333333%;margin-left:0}.ant-col-xxl-push-3.ant-col-rtl{right:12.5%;left:auto}.ant-col-xxl-pull-3.ant-col-rtl{right:auto;left:12.5%}.ant-col-xxl-offset-3.ant-col-rtl{margin-right:12.5%;margin-left:0}.ant-col-xxl-push-4.ant-col-rtl{right:16.66666667%;left:auto}.ant-col-xxl-pull-4.ant-col-rtl{right:auto;left:16.66666667%}.ant-col-xxl-offset-4.ant-col-rtl{margin-right:16.66666667%;margin-left:0}.ant-col-xxl-push-5.ant-col-rtl{right:20.83333333%;left:auto}.ant-col-xxl-pull-5.ant-col-rtl{right:auto;left:20.83333333%}.ant-col-xxl-offset-5.ant-col-rtl{margin-right:20.83333333%;margin-left:0}.ant-col-xxl-push-6.ant-col-rtl{right:25%;left:auto}.ant-col-xxl-pull-6.ant-col-rtl{right:auto;left:25%}.ant-col-xxl-offset-6.ant-col-rtl{margin-right:25%;margin-left:0}.ant-col-xxl-push-7.ant-col-rtl{right:29.16666667%;left:auto}.ant-col-xxl-pull-7.ant-col-rtl{right:auto;left:29.16666667%}.ant-col-xxl-offset-7.ant-col-rtl{margin-right:29.16666667%;margin-left:0}.ant-col-xxl-push-8.ant-col-rtl{right:33.33333333%;left:auto}.ant-col-xxl-pull-8.ant-col-rtl{right:auto;left:33.33333333%}.ant-col-xxl-offset-8.ant-col-rtl{margin-right:33.33333333%;margin-left:0}.ant-col-xxl-push-9.ant-col-rtl{right:37.5%;left:auto}.ant-col-xxl-pull-9.ant-col-rtl{right:auto;left:37.5%}.ant-col-xxl-offset-9.ant-col-rtl{margin-right:37.5%;margin-left:0}.ant-col-xxl-push-10.ant-col-rtl{right:41.66666667%;left:auto}.ant-col-xxl-pull-10.ant-col-rtl{right:auto;left:41.66666667%}.ant-col-xxl-offset-10.ant-col-rtl{margin-right:41.66666667%;margin-left:0}.ant-col-xxl-push-11.ant-col-rtl{right:45.83333333%;left:auto}.ant-col-xxl-pull-11.ant-col-rtl{right:auto;left:45.83333333%}.ant-col-xxl-offset-11.ant-col-rtl{margin-right:45.83333333%;margin-left:0}.ant-col-xxl-push-12.ant-col-rtl{right:50%;left:auto}.ant-col-xxl-pull-12.ant-col-rtl{right:auto;left:50%}.ant-col-xxl-offset-12.ant-col-rtl{margin-right:50%;margin-left:0}.ant-col-xxl-push-13.ant-col-rtl{right:54.16666667%;left:auto}.ant-col-xxl-pull-13.ant-col-rtl{right:auto;left:54.16666667%}.ant-col-xxl-offset-13.ant-col-rtl{margin-right:54.16666667%;margin-left:0}.ant-col-xxl-push-14.ant-col-rtl{right:58.33333333%;left:auto}.ant-col-xxl-pull-14.ant-col-rtl{right:auto;left:58.33333333%}.ant-col-xxl-offset-14.ant-col-rtl{margin-right:58.33333333%;margin-left:0}.ant-col-xxl-push-15.ant-col-rtl{right:62.5%;left:auto}.ant-col-xxl-pull-15.ant-col-rtl{right:auto;left:62.5%}.ant-col-xxl-offset-15.ant-col-rtl{margin-right:62.5%;margin-left:0}.ant-col-xxl-push-16.ant-col-rtl{right:66.66666667%;left:auto}.ant-col-xxl-pull-16.ant-col-rtl{right:auto;left:66.66666667%}.ant-col-xxl-offset-16.ant-col-rtl{margin-right:66.66666667%;margin-left:0}.ant-col-xxl-push-17.ant-col-rtl{right:70.83333333%;left:auto}.ant-col-xxl-pull-17.ant-col-rtl{right:auto;left:70.83333333%}.ant-col-xxl-offset-17.ant-col-rtl{margin-right:70.83333333%;margin-left:0}.ant-col-xxl-push-18.ant-col-rtl{right:75%;left:auto}.ant-col-xxl-pull-18.ant-col-rtl{right:auto;left:75%}.ant-col-xxl-offset-18.ant-col-rtl{margin-right:75%;margin-left:0}.ant-col-xxl-push-19.ant-col-rtl{right:79.16666667%;left:auto}.ant-col-xxl-pull-19.ant-col-rtl{right:auto;left:79.16666667%}.ant-col-xxl-offset-19.ant-col-rtl{margin-right:79.16666667%;margin-left:0}.ant-col-xxl-push-20.ant-col-rtl{right:83.33333333%;left:auto}.ant-col-xxl-pull-20.ant-col-rtl{right:auto;left:83.33333333%}.ant-col-xxl-offset-20.ant-col-rtl{margin-right:83.33333333%;margin-left:0}.ant-col-xxl-push-21.ant-col-rtl{right:87.5%;left:auto}.ant-col-xxl-pull-21.ant-col-rtl{right:auto;left:87.5%}.ant-col-xxl-offset-21.ant-col-rtl{margin-right:87.5%;margin-left:0}.ant-col-xxl-push-22.ant-col-rtl{right:91.66666667%;left:auto}.ant-col-xxl-pull-22.ant-col-rtl{right:auto;left:91.66666667%}.ant-col-xxl-offset-22.ant-col-rtl{margin-right:91.66666667%;margin-left:0}.ant-col-xxl-push-23.ant-col-rtl{right:95.83333333%;left:auto}.ant-col-xxl-pull-23.ant-col-rtl{right:auto;left:95.83333333%}.ant-col-xxl-offset-23.ant-col-rtl{margin-right:95.83333333%;margin-left:0}.ant-col-xxl-push-24.ant-col-rtl{right:100%;left:auto}.ant-col-xxl-pull-24.ant-col-rtl{right:auto;left:100%}.ant-col-xxl-offset-24.ant-col-rtl{margin-right:100%;margin-left:0}}.ant-row-rtl{direction:rtl}.ant-pro-inline-error-form-item-multiple{padding:6px 8px 12px}.ant-pro-inline-error-form-item-progress-success .ant-progress-bg{background-color:#52c41a}.ant-pro-inline-error-form-item-progress-error .ant-progress-bg{background-color:#ff4d4f}.ant-pro-inline-error-form-item-progress-warning .ant-progress-bg{background-color:#faad14}.ant-pro-inline-error-form-item-rule{margin:0;padding:0;list-style:none}.ant-pro-inline-error-form-item-rule-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ant-pro-inline-error-form-item-rule-content-icon-default{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:14px;height:22px}.ant-pro-inline-error-form-item-rule-content-icon-default-circle{width:6px;height:6px;background-color:#00000073;border-radius:4px}.ant-pro-inline-error-form-item-rule-content-icon-loading{color:#1890ff}.ant-pro-inline-error-form-item-rule-content-icon-error{color:#ff4d4f}.ant-pro-inline-error-form-item-rule-content-icon-success{color:#52c41a}.ant-pro-inline-error-form-item-rule-content-text{color:#000000d9}.ant-typography{color:#000000d9;word-break:break-word}.ant-typography.ant-typography-secondary{color:#00000073}.ant-typography.ant-typography-success{color:#52c41a}.ant-typography.ant-typography-warning{color:#faad14}.ant-typography.ant-typography-danger{color:#ff4d4f}a.ant-typography.ant-typography-danger:active,a.ant-typography.ant-typography-danger:focus{color:#d9363e}a.ant-typography.ant-typography-danger:hover{color:#ff7875}.ant-typography.ant-typography-disabled{color:#00000040;cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.ant-typography,.ant-typography p{margin-bottom:1em}h1.ant-typography,div.ant-typography-h1,div.ant-typography-h1>textarea,.ant-typography h1{margin-bottom:.5em;color:#000000d9;font-weight:600;font-size:38px;line-height:1.23}h2.ant-typography,div.ant-typography-h2,div.ant-typography-h2>textarea,.ant-typography h2{margin-bottom:.5em;color:#000000d9;font-weight:600;font-size:30px;line-height:1.35}h3.ant-typography,div.ant-typography-h3,div.ant-typography-h3>textarea,.ant-typography h3{margin-bottom:.5em;color:#000000d9;font-weight:600;font-size:24px;line-height:1.35}h4.ant-typography,div.ant-typography-h4,div.ant-typography-h4>textarea,.ant-typography h4{margin-bottom:.5em;color:#000000d9;font-weight:600;font-size:20px;line-height:1.4}h5.ant-typography,div.ant-typography-h5,div.ant-typography-h5>textarea,.ant-typography h5{margin-bottom:.5em;color:#000000d9;font-weight:600;font-size:16px;line-height:1.5}.ant-typography+h1.ant-typography,.ant-typography+h2.ant-typography,.ant-typography+h3.ant-typography,.ant-typography+h4.ant-typography,.ant-typography+h5.ant-typography{margin-top:1.2em}.ant-typography div+h1,.ant-typography ul+h1,.ant-typography li+h1,.ant-typography p+h1,.ant-typography h1+h1,.ant-typography h2+h1,.ant-typography h3+h1,.ant-typography h4+h1,.ant-typography h5+h1,.ant-typography div+h2,.ant-typography ul+h2,.ant-typography li+h2,.ant-typography p+h2,.ant-typography h1+h2,.ant-typography h2+h2,.ant-typography h3+h2,.ant-typography h4+h2,.ant-typography h5+h2,.ant-typography div+h3,.ant-typography ul+h3,.ant-typography li+h3,.ant-typography p+h3,.ant-typography h1+h3,.ant-typography h2+h3,.ant-typography h3+h3,.ant-typography h4+h3,.ant-typography h5+h3,.ant-typography div+h4,.ant-typography ul+h4,.ant-typography li+h4,.ant-typography p+h4,.ant-typography h1+h4,.ant-typography h2+h4,.ant-typography h3+h4,.ant-typography h4+h4,.ant-typography h5+h4,.ant-typography div+h5,.ant-typography ul+h5,.ant-typography li+h5,.ant-typography p+h5,.ant-typography h1+h5,.ant-typography h2+h5,.ant-typography h3+h5,.ant-typography h4+h5,.ant-typography h5+h5{margin-top:1.2em}a.ant-typography-ellipsis,span.ant-typography-ellipsis{display:inline-block;max-width:100%}a.ant-typography,.ant-typography a{color:#1890ff;outline:none;cursor:pointer;transition:color .3s;text-decoration:none}a.ant-typography:focus-visible,.ant-typography a:focus-visible,a.ant-typography:hover,.ant-typography a:hover{color:#40a9ff}a.ant-typography:active,.ant-typography a:active{color:#096dd9}a.ant-typography:active,.ant-typography a:active,a.ant-typography:hover,.ant-typography a:hover{text-decoration:none}a.ant-typography[disabled],.ant-typography a[disabled],a.ant-typography.ant-typography-disabled,.ant-typography a.ant-typography-disabled{color:#00000040;cursor:not-allowed}a.ant-typography[disabled]:active,.ant-typography a[disabled]:active,a.ant-typography.ant-typography-disabled:active,.ant-typography a.ant-typography-disabled:active,a.ant-typography[disabled]:hover,.ant-typography a[disabled]:hover,a.ant-typography.ant-typography-disabled:hover,.ant-typography a.ant-typography-disabled:hover{color:#00000040}a.ant-typography[disabled]:active,.ant-typography a[disabled]:active,a.ant-typography.ant-typography-disabled:active,.ant-typography a.ant-typography-disabled:active{pointer-events:none}.ant-typography code{margin:0 .2em;padding:.2em .4em .1em;font-size:85%;background:rgba(150,150,150,.1);border:1px solid rgba(100,100,100,.2);border-radius:3px}.ant-typography kbd{margin:0 .2em;padding:.15em .4em .1em;font-size:90%;background:rgba(150,150,150,.06);border:1px solid rgba(100,100,100,.2);border-bottom-width:2px;border-radius:3px}.ant-typography mark{padding:0;background-color:#ffe58f}.ant-typography u,.ant-typography ins{text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.ant-typography s,.ant-typography del{text-decoration:line-through}.ant-typography strong{font-weight:600}.ant-typography-expand,.ant-typography-edit,.ant-typography-copy{color:#1890ff;outline:none;cursor:pointer;transition:color .3s;margin-left:4px}.ant-typography-expand:focus-visible,.ant-typography-edit:focus-visible,.ant-typography-copy:focus-visible,.ant-typography-expand:hover,.ant-typography-edit:hover,.ant-typography-copy:hover{color:#40a9ff}.ant-typography-expand:active,.ant-typography-edit:active,.ant-typography-copy:active{color:#096dd9}.ant-typography-copy-success,.ant-typography-copy-success:hover,.ant-typography-copy-success:focus{color:#52c41a}.ant-typography-edit-content{position:relative}div.ant-typography-edit-content{left:-12px;margin-top:-5px;margin-bottom:calc(1em - 5px)}.ant-typography-edit-content-confirm{position:absolute;right:10px;bottom:8px;color:#00000073;font-weight:400;font-size:14px;font-style:normal;pointer-events:none}.ant-typography-edit-content textarea{height:1em;margin:0!important;-moz-transition:none}.ant-typography ul,.ant-typography ol{margin:0 0 1em;padding:0}.ant-typography ul li,.ant-typography ol li{margin:0 0 0 20px;padding:0 0 0 4px}.ant-typography ul{list-style-type:circle}.ant-typography ul ul{list-style-type:disc}.ant-typography ol{list-style-type:decimal}.ant-typography pre,.ant-typography blockquote{margin:1em 0}.ant-typography pre{padding:.4em .6em;white-space:pre-wrap;word-wrap:break-word;background:rgba(150,150,150,.1);border:1px solid rgba(100,100,100,.2);border-radius:3px}.ant-typography pre code{display:inline;margin:0;padding:0;font-size:inherit;font-family:inherit;background:transparent;border:0}.ant-typography blockquote{padding:0 0 0 .6em;border-left:4px solid rgba(100,100,100,.2);opacity:.85}.ant-typography-single-line{white-space:nowrap}.ant-typography-ellipsis-single-line{overflow:hidden;text-overflow:ellipsis}a.ant-typography-ellipsis-single-line,span.ant-typography-ellipsis-single-line{vertical-align:bottom}.ant-typography-ellipsis-multiple-line{display:-webkit-box;overflow:hidden;-webkit-line-clamp:3;-webkit-box-orient:vertical}.ant-typography-rtl{direction:rtl}.ant-typography-rtl .ant-typography-expand,.ant-typography-rtl .ant-typography-edit,.ant-typography-rtl .ant-typography-copy{margin-right:4px;margin-left:0}.ant-typography-rtl .ant-typography-expand{float:left}div.ant-typography-edit-content.ant-typography-rtl{right:-12px;left:auto}.ant-typography-rtl .ant-typography-edit-content-confirm{right:auto;left:10px}.ant-typography-rtl.ant-typography ul li,.ant-typography-rtl.ant-typography ol li{margin:0 20px 0 0;padding:0 4px 0 0}.ant-input-affix-wrapper{position:relative;display:inline-block;width:100%;min-width:0;padding:4px 11px;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s;display:inline-flex}.ant-input-affix-wrapper::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-input-affix-wrapper:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-input-affix-wrapper::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input-affix-wrapper:-moz-placeholder{text-overflow:ellipsis}.ant-input-affix-wrapper:-ms-input-placeholder{text-overflow:ellipsis}.ant-input-affix-wrapper:placeholder-shown{text-overflow:ellipsis}.ant-input-affix-wrapper:hover{border-color:#40a9ff;border-right-width:1px}.ant-input-rtl .ant-input-affix-wrapper:hover{border-right-width:0;border-left-width:1px!important}.ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-input-rtl .ant-input-affix-wrapper:focus,.ant-input-rtl .ant-input-affix-wrapper-focused{border-right-width:0;border-left-width:1px!important}.ant-input-affix-wrapper-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-affix-wrapper-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-affix-wrapper[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-affix-wrapper[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-affix-wrapper-borderless,.ant-input-affix-wrapper-borderless:hover,.ant-input-affix-wrapper-borderless:focus,.ant-input-affix-wrapper-borderless-focused,.ant-input-affix-wrapper-borderless-disabled,.ant-input-affix-wrapper-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-input-affix-wrapper{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-input-affix-wrapper-lg{padding:6.5px 11px;font-size:16px}.ant-input-affix-wrapper-sm{padding:0 7px}.ant-input-affix-wrapper-rtl{direction:rtl}.ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover{border-color:#40a9ff;border-right-width:1px;z-index:1}.ant-input-rtl .ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover{border-right-width:0;border-left-width:1px!important}.ant-input-search-with-button .ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover{z-index:0}.ant-input-affix-wrapper-focused,.ant-input-affix-wrapper:focus{z-index:1}.ant-input-affix-wrapper-disabled .ant-input[disabled]{background:rgba(255,255,255,0)}.ant-input-affix-wrapper>.ant-input{font-size:inherit;border:none;outline:none}.ant-input-affix-wrapper>.ant-input:focus{box-shadow:none!important}.ant-input-affix-wrapper>.ant-input:not(textarea){padding:0}.ant-input-affix-wrapper:before{display:inline-block;width:0;visibility:hidden;content:" "}.ant-input-prefix,.ant-input-suffix{display:flex;flex:none;align-items:center}.ant-input-prefix>*:not(:last-child),.ant-input-suffix>*:not(:last-child){margin-right:8px}.ant-input-show-count-suffix{color:#00000073}.ant-input-show-count-has-suffix{margin-right:2px}.ant-input-prefix{margin-right:4px}.ant-input-suffix{margin-left:4px}.anticon.ant-input-clear-icon,.ant-input-clear-icon{margin:0;color:#00000040;font-size:12px;vertical-align:-1px;cursor:pointer;transition:color .3s}.anticon.ant-input-clear-icon:hover,.ant-input-clear-icon:hover{color:#00000073}.anticon.ant-input-clear-icon:active,.ant-input-clear-icon:active{color:#000000d9}.anticon.ant-input-clear-icon-hidden,.ant-input-clear-icon-hidden{visibility:hidden}.anticon.ant-input-clear-icon-has-suffix,.ant-input-clear-icon-has-suffix{margin:0 4px}.ant-input-affix-wrapper.ant-input-affix-wrapper-textarea-with-clear-btn{padding:0}.ant-input-affix-wrapper.ant-input-affix-wrapper-textarea-with-clear-btn .ant-input-clear-icon{position:absolute;top:8px;right:8px;z-index:1}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input,.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover{background:#fff;border-color:#ff4d4f}.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:focus,.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input-focused{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-input-status-error .ant-input-prefix{color:#ff4d4f}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input,.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover{background:#fff;border-color:#faad14}.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:focus,.ant-input-status-warning:not(.ant-input-disabled):not(.ant-input-borderless).ant-input-focused{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-input-status-warning .ant-input-prefix{color:#faad14}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper,.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover{background:#fff;border-color:#ff4d4f}.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper-focused{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-input-affix-wrapper-status-error .ant-input-prefix{color:#ff4d4f}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper,.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover{background:#fff;border-color:#faad14}.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-status-warning:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper-focused{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-input-affix-wrapper-status-warning .ant-input-prefix{color:#faad14}.ant-input-textarea-status-error.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-warning.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-success.ant-input-textarea-has-feedback .ant-input,.ant-input-textarea-status-validating.ant-input-textarea-has-feedback .ant-input{padding-right:24px}.ant-input-group-wrapper-status-error .ant-input-group-addon{color:#ff4d4f;border-color:#ff4d4f}.ant-input-group-wrapper-status-warning .ant-input-group-addon{color:#faad14;border-color:#faad14}.ant-input{box-sizing:border-box;margin:0;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-block;width:100%;min-width:0;padding:4px 11px;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s}.ant-input::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-input:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-input::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input:-moz-placeholder{text-overflow:ellipsis}.ant-input:-ms-input-placeholder{text-overflow:ellipsis}.ant-input:placeholder-shown{text-overflow:ellipsis}.ant-input:hover{border-color:#40a9ff;border-right-width:1px}.ant-input-rtl .ant-input:hover{border-right-width:0;border-left-width:1px!important}.ant-input:focus,.ant-input-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-input-rtl .ant-input:focus,.ant-input-rtl .ant-input-focused{border-right-width:0;border-left-width:1px!important}.ant-input-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-borderless,.ant-input-borderless:hover,.ant-input-borderless:focus,.ant-input-borderless-focused,.ant-input-borderless-disabled,.ant-input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-input{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-input-lg{padding:6.5px 11px;font-size:16px}.ant-input-sm{padding:0 7px}.ant-input-rtl{direction:rtl}.ant-input-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:table;width:100%;border-collapse:separate;border-spacing:0}.ant-input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.ant-input-group>[class*=col-]{padding-right:8px}.ant-input-group>[class*=col-]:last-child{padding-right:0}.ant-input-group-addon,.ant-input-group-wrap,.ant-input-group>.ant-input{display:table-cell}.ant-input-group-addon:not(:first-child):not(:last-child),.ant-input-group-wrap:not(:first-child):not(:last-child),.ant-input-group>.ant-input:not(:first-child):not(:last-child){border-radius:0}.ant-input-group-addon,.ant-input-group-wrap{width:1px;white-space:nowrap;vertical-align:middle}.ant-input-group-wrap>*{display:block!important}.ant-input-group .ant-input{float:left;width:100%;margin-bottom:0;text-align:inherit}.ant-input-group .ant-input:focus{z-index:1;border-right-width:1px}.ant-input-group .ant-input:hover{z-index:1;border-right-width:1px}.ant-input-search-with-button .ant-input-group .ant-input:hover{z-index:0}.ant-input-group-addon{position:relative;padding:0 11px;color:#000000d9;font-weight:400;font-size:14px;text-align:center;background-color:#fafafa;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s}.ant-input-group-addon .ant-select{margin:-5px -11px}.ant-input-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{background-color:inherit;border:1px solid transparent;box-shadow:none}.ant-input-group-addon .ant-select-open .ant-select-selector,.ant-input-group-addon .ant-select-focused .ant-select-selector{color:#1890ff}.ant-input-group-addon .ant-cascader-picker{margin:-9px -12px;background-color:transparent}.ant-input-group-addon .ant-cascader-picker .ant-cascader-input{text-align:left;border:0;box-shadow:none}.ant-input-group>.ant-input:first-child,.ant-input-group-addon:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-group>.ant-input:first-child .ant-select .ant-select-selector,.ant-input-group-addon:first-child .ant-select .ant-select-selector{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-group>.ant-input-affix-wrapper:not(:first-child) .ant-input{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-group>.ant-input-affix-wrapper:not(:last-child) .ant-input{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-group-addon:first-child{border-right:0}.ant-input-group-addon:last-child{border-left:0}.ant-input-group>.ant-input:last-child,.ant-input-group-addon:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-group>.ant-input:last-child .ant-select .ant-select-selector,.ant-input-group-addon:last-child .ant-select .ant-select-selector{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-group-lg .ant-input,.ant-input-group-lg>.ant-input-group-addon{padding:6.5px 11px;font-size:16px}.ant-input-group-sm .ant-input,.ant-input-group-sm>.ant-input-group-addon{padding:0 7px}.ant-input-group-lg .ant-select-single .ant-select-selector{height:40px}.ant-input-group-sm .ant-select-single .ant-select-selector{height:24px}.ant-input-group .ant-input-affix-wrapper:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-search .ant-input-group .ant-input-affix-wrapper:not(:last-child){border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-input-group .ant-input-affix-wrapper:not(:first-child),.ant-input-search .ant-input-group .ant-input-affix-wrapper:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-group.ant-input-group-compact{display:block}.ant-input-group.ant-input-group-compact:before{display:table;content:""}.ant-input-group.ant-input-group-compact:after{display:table;clear:both;content:""}.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child),.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child),.ant-input-group.ant-input-group-compact>.ant-input:not(:first-child):not(:last-child){border-right-width:1px}.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover,.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover,.ant-input-group.ant-input-group-compact>.ant-input:not(:first-child):not(:last-child):hover{z-index:1}.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus,.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus,.ant-input-group.ant-input-group-compact>.ant-input:not(:first-child):not(:last-child):focus{z-index:1}.ant-input-group.ant-input-group-compact>*{display:inline-block;float:none;vertical-align:top;border-radius:0}.ant-input-group.ant-input-group-compact>.ant-input-affix-wrapper,.ant-input-group.ant-input-group-compact>.ant-input-number-affix-wrapper,.ant-input-group.ant-input-group-compact>.ant-picker-range{display:inline-flex}.ant-input-group.ant-input-group-compact>*:not(:last-child){margin-right:-1px;border-right-width:1px}.ant-input-group.ant-input-group-compact .ant-input{float:none}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input{border-right-width:1px;border-radius:0}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector:hover,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input:hover{z-index:1}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector:focus,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input:focus{z-index:1}.ant-input-group.ant-input-group-compact>.ant-select-focused{z-index:1}.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-arrow{z-index:1}.ant-input-group.ant-input-group-compact>*:first-child,.ant-input-group.ant-input-group-compact>.ant-select:first-child>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete:first-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker:first-child .ant-input{border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-input-group.ant-input-group-compact>*:last-child,.ant-input-group.ant-input-group-compact>.ant-select:last-child>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-cascader-picker:last-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker-focused:last-child .ant-input{border-right-width:1px;border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input{vertical-align:top}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper{margin-left:-1px}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper .ant-input-affix-wrapper{border-radius:0}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input-group-addon>.ant-input-search-button{border-radius:0}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input{border-radius:2px 0 0 2px}.ant-input-group>.ant-input-rtl:first-child,.ant-input-group-rtl .ant-input-group-addon:first-child{border-radius:0 2px 2px 0}.ant-input-group-rtl .ant-input-group-addon:first-child{border-right:1px solid #d9d9d9;border-left:0}.ant-input-group-rtl .ant-input-group-addon:last-child{border-right:0;border-left:1px solid #d9d9d9;border-radius:2px 0 0 2px}.ant-input-group-rtl.ant-input-group>.ant-input:last-child,.ant-input-group-rtl.ant-input-group-addon:last-child{border-radius:2px 0 0 2px}.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:first-child){border-radius:2px 0 0 2px}.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:last-child){border-radius:0 2px 2px 0}.ant-input-group-rtl.ant-input-group.ant-input-group-compact>*:not(:last-child){margin-right:0;margin-left:-1px;border-left-width:1px}.ant-input-group-rtl.ant-input-group.ant-input-group-compact>*:first-child,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-select:first-child>.ant-select-selector,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-select-auto-complete:first-child .ant-input,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-cascader-picker:first-child .ant-input{border-radius:0 2px 2px 0}.ant-input-group-rtl.ant-input-group.ant-input-group-compact>*:last-child,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-select:last-child>.ant-select-selector,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-select-auto-complete:last-child .ant-input,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-cascader-picker:last-child .ant-input,.ant-input-group-rtl.ant-input-group.ant-input-group-compact>.ant-cascader-picker-focused:last-child .ant-input{border-left-width:1px;border-radius:2px 0 0 2px}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper-rtl+.ant-input-group-wrapper-rtl{margin-right:-1px;margin-left:0}.ant-input-group.ant-input-group-compact .ant-input-group-wrapper-rtl:not(:last-child).ant-input-search>.ant-input-group>.ant-input{border-radius:0 2px 2px 0}.ant-input-group-wrapper{display:inline-block;width:100%;text-align:start;vertical-align:top}.ant-input-password-icon.anticon{color:#00000073;cursor:pointer;transition:all .3s}.ant-input-password-icon.anticon:hover{color:#000000d9}.ant-input[type=color]{height:32px}.ant-input[type=color].ant-input-lg{height:40px}.ant-input[type=color].ant-input-sm{height:24px;padding-top:3px;padding-bottom:3px}.ant-input-textarea-show-count>.ant-input{height:100%}.ant-input-textarea-show-count:after{float:right;color:#00000073;white-space:nowrap;content:attr(data-count);pointer-events:none}.ant-input-textarea-show-count.ant-input-textarea-in-form-item:after{margin-bottom:-22px}.ant-input-textarea-suffix{position:absolute;top:0;right:11px;bottom:0;z-index:1;display:inline-flex;align-items:center;margin:auto}.ant-input-compact-item:not(.ant-input-compact-last-item):not(.ant-input-compact-item-rtl){margin-right:-1px}.ant-input-compact-item:not(.ant-input-compact-last-item).ant-input-compact-item-rtl{margin-left:-1px}.ant-input-compact-item:hover,.ant-input-compact-item:focus,.ant-input-compact-item:active{z-index:2}.ant-input-compact-item[disabled]{z-index:0}.ant-input-compact-item:not(.ant-input-compact-first-item):not(.ant-input-compact-last-item).ant-input{border-radius:0}.ant-input-compact-item.ant-input.ant-input-compact-first-item:not(.ant-input-compact-last-item):not(.ant-input-compact-item-rtl){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-compact-item.ant-input.ant-input-compact-last-item:not(.ant-input-compact-first-item):not(.ant-input-compact-item-rtl){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-compact-item.ant-input.ant-input-compact-item-rtl.ant-input-compact-first-item:not(.ant-input-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-compact-item.ant-input.ant-input-compact-item-rtl.ant-input-compact-last-item:not(.ant-input-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-search .ant-input:hover,.ant-input-search .ant-input:focus{border-color:#40a9ff}.ant-input-search .ant-input:hover+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary),.ant-input-search .ant-input:focus+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary){border-left-color:#40a9ff}.ant-input-search .ant-input-affix-wrapper{border-radius:0}.ant-input-search .ant-input-lg{line-height:1.5713}.ant-input-search>.ant-input-group>.ant-input-group-addon:last-child{left:-1px;padding:0;border:0}.ant-input-search>.ant-input-group>.ant-input-group-addon:last-child .ant-input-search-button{padding-top:0;padding-bottom:0;border-radius:0 2px 2px 0}.ant-input-search>.ant-input-group>.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary){color:#00000073}.ant-input-search>.ant-input-group>.ant-input-group-addon:last-child .ant-input-search-button:not(.ant-btn-primary).ant-btn-loading:before{top:0;right:0;bottom:0;left:0}.ant-input-search-button{height:32px}.ant-input-search-button:hover,.ant-input-search-button:focus{z-index:1}.ant-input-search-large .ant-input-search-button{height:40px}.ant-input-search-small .ant-input-search-button{height:24px}.ant-input-search.ant-input-compact-item:not(.ant-input-compact-item-rtl):not(.ant-input-compact-last-item) .ant-input-group-addon .ant-input-search-button{margin-right:-1px;border-radius:0}.ant-input-search.ant-input-compact-item:not(.ant-input-compact-first-item) .ant-input,.ant-input-search.ant-input-compact-item:not(.ant-input-compact-first-item) .ant-input-affix-wrapper{border-radius:0}.ant-input-search.ant-input-compact-item>.ant-input-group-addon .ant-input-search-button:hover,.ant-input-search.ant-input-compact-item>.ant-input:hover,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:hover,.ant-input-search.ant-input-compact-item>.ant-input-group-addon .ant-input-search-button:focus,.ant-input-search.ant-input-compact-item>.ant-input:focus,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:focus,.ant-input-search.ant-input-compact-item>.ant-input-group-addon .ant-input-search-button:active,.ant-input-search.ant-input-compact-item>.ant-input:active,.ant-input-search.ant-input-compact-item .ant-input-affix-wrapper:active{z-index:2}.ant-input-search.ant-input-compact-item>.ant-input-affix-wrapper-focused{z-index:2}.ant-input-search.ant-input-compact-item-rtl:not(.ant-input-compact-last-item) .ant-input-group-addon:last-child .ant-input-search-button{margin-left:-1px;border-radius:0}.ant-input-group-wrapper-rtl,.ant-input-group-rtl{direction:rtl}.ant-input-affix-wrapper.ant-input-affix-wrapper-rtl>input.ant-input{border:none;outline:none}.ant-input-affix-wrapper-rtl .ant-input-prefix{margin:0 0 0 4px}.ant-input-affix-wrapper-rtl .ant-input-suffix{margin:0 4px 0 0}.ant-input-textarea-rtl{direction:rtl}.ant-input-textarea-rtl.ant-input-textarea-show-count:after{text-align:left}.ant-input-affix-wrapper-rtl .ant-input-clear-icon-has-suffix{margin-right:0;margin-left:4px}.ant-input-affix-wrapper-rtl .ant-input-clear-icon{right:auto;left:8px}.ant-input-search-rtl{direction:rtl}.ant-input-search-rtl .ant-input:hover+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary),.ant-input-search-rtl .ant-input:focus+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary){border-left-color:#d9d9d9}.ant-input-search-rtl .ant-input:hover+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary):hover,.ant-input-search-rtl .ant-input:focus+.ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary):hover{border-left-color:#40a9ff}.ant-input-search-rtl>.ant-input-group>.ant-input-affix-wrapper:hover,.ant-input-search-rtl>.ant-input-group>.ant-input-affix-wrapper-focused{border-right-color:#40a9ff}.ant-input-search-rtl>.ant-input-group>.ant-input-group-addon:last-child{right:-1px;left:auto}.ant-input-search-rtl>.ant-input-group>.ant-input-group-addon:last-child .ant-input-search-button{border-radius:2px 0 0 2px}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.ant-input{height:32px}.ant-input-lg{height:40px}.ant-input-sm{height:24px}.ant-input-affix-wrapper>input.ant-input{height:auto}}.ant-message{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:fixed;top:8px;left:0;z-index:1010;width:100%;pointer-events:none}.ant-message-notice{padding:8px;text-align:center}.ant-message-notice-content{display:inline-block;padding:10px 16px;background:#fff;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d;pointer-events:all}.ant-message-success .anticon{color:#52c41a}.ant-message-error .anticon{color:#ff4d4f}.ant-message-warning .anticon{color:#faad14}.ant-message-info .anticon,.ant-message-loading .anticon{color:#1890ff}.ant-message .anticon{position:relative;top:1px;margin-right:8px;font-size:16px}.ant-message-notice.ant-move-up-leave.ant-move-up-leave-active{animation-name:MessageMoveOut;animation-duration:.3s}@keyframes MessageMoveOut{0%{max-height:150px;padding:8px;opacity:1}to{max-height:0;padding:0;opacity:0}}.ant-message-rtl,.ant-message-rtl span{direction:rtl}.ant-message-rtl .anticon{margin-right:0;margin-left:8px}.ant-popconfirm{z-index:1060}.ant-cascader-checkbox{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;top:.2em;line-height:1;white-space:nowrap;outline:none;cursor:pointer}.ant-cascader-checkbox-wrapper:hover .ant-cascader-checkbox-inner,.ant-cascader-checkbox:hover .ant-cascader-checkbox-inner,.ant-cascader-checkbox-input:focus+.ant-cascader-checkbox-inner{border-color:#1890ff}.ant-cascader-checkbox-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:2px;visibility:hidden;animation:antCheckboxEffect .36s ease-in-out;animation-fill-mode:backwards;content:""}.ant-cascader-checkbox:hover:after,.ant-cascader-checkbox-wrapper:hover .ant-cascader-checkbox:after{visibility:visible}.ant-cascader-checkbox-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;direction:ltr;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;border-collapse:separate;transition:all .3s}.ant-cascader-checkbox-inner:after{position:absolute;top:50%;left:21.5%;display:table;width:5.71428571px;height:9.14285714px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;content:" "}.ant-cascader-checkbox-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;cursor:pointer;opacity:0}.ant-cascader-checkbox-checked .ant-cascader-checkbox-inner:after{position:absolute;display:table;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1) translate(-50%,-50%);opacity:1;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;content:" "}.ant-cascader-checkbox-checked .ant-cascader-checkbox-inner{background-color:#1890ff;border-color:#1890ff}.ant-cascader-checkbox-disabled{cursor:not-allowed}.ant-cascader-checkbox-disabled.ant-cascader-checkbox-checked .ant-cascader-checkbox-inner:after{border-color:#00000040;animation-name:none}.ant-cascader-checkbox-disabled .ant-cascader-checkbox-input{cursor:not-allowed;pointer-events:none}.ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9!important}.ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner:after{border-color:#f5f5f5;border-collapse:separate;animation-name:none}.ant-cascader-checkbox-disabled+span{color:#00000040;cursor:not-allowed}.ant-cascader-checkbox-disabled:hover:after,.ant-cascader-checkbox-wrapper:hover .ant-cascader-checkbox-disabled:after{visibility:hidden}.ant-cascader-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-flex;align-items:baseline;line-height:unset;cursor:pointer}.ant-cascader-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:" "}.ant-cascader-checkbox-wrapper.ant-cascader-checkbox-wrapper-disabled{cursor:not-allowed}.ant-cascader-checkbox-wrapper+.ant-cascader-checkbox-wrapper{margin-left:8px}.ant-cascader-checkbox-wrapper.ant-cascader-checkbox-wrapper-in-form-item input[type=checkbox]{width:14px;height:14px}.ant-cascader-checkbox+span{padding-right:8px;padding-left:8px}.ant-cascader-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block}.ant-cascader-checkbox-group-item{margin-right:8px}.ant-cascader-checkbox-group-item:last-child{margin-right:0}.ant-cascader-checkbox-group-item+.ant-cascader-checkbox-group-item{margin-left:0}.ant-cascader-checkbox-indeterminate .ant-cascader-checkbox-inner{background-color:#fff;border-color:#d9d9d9}.ant-cascader-checkbox-indeterminate .ant-cascader-checkbox-inner:after{top:50%;left:50%;width:8px;height:8px;background-color:#1890ff;border:0;transform:translate(-50%,-50%) scale(1);opacity:1;content:" "}.ant-cascader-checkbox-indeterminate.ant-cascader-checkbox-disabled .ant-cascader-checkbox-inner:after{background-color:#00000040;border-color:#00000040}.ant-cascader{width:184px}.ant-cascader-checkbox{top:0;margin-right:8px}.ant-cascader-menus{display:flex;flex-wrap:nowrap;align-items:flex-start}.ant-cascader-menus.ant-cascader-menu-empty .ant-cascader-menu{width:100%;height:auto}.ant-cascader-menu{flex-grow:1;min-width:111px;height:180px;margin:-4px 0;padding:4px 0;overflow:auto;vertical-align:top;list-style:none;border-right:1px solid #f0f0f0;-ms-overflow-style:-ms-autohiding-scrollbar}.ant-cascader-menu-item{display:flex;flex-wrap:nowrap;align-items:center;padding:5px 12px;overflow:hidden;line-height:22px;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;transition:all .3s}.ant-cascader-menu-item:hover{background:#f5f5f5}.ant-cascader-menu-item-disabled{color:#00000040;cursor:not-allowed}.ant-cascader-menu-item-disabled:hover{background:transparent}.ant-cascader-menu-empty .ant-cascader-menu-item{color:#00000040;cursor:default;pointer-events:none}.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled),.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover{font-weight:600;background-color:#e6f7ff}.ant-cascader-menu-item-content{flex:auto}.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,.ant-cascader-menu-item-loading-icon{margin-left:4px;color:#00000073;font-size:10px}.ant-cascader-menu-item-disabled.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,.ant-cascader-menu-item-disabled.ant-cascader-menu-item-loading-icon{color:#00000040}.ant-cascader-menu-item-keyword{color:#ff4d4f}.ant-cascader-compact-item:not(.ant-cascader-compact-last-item):not(.ant-cascader-compact-item-rtl){margin-right:-1px}.ant-cascader-compact-item:not(.ant-cascader-compact-last-item).ant-cascader-compact-item-rtl{margin-left:-1px}.ant-cascader-compact-item:hover,.ant-cascader-compact-item:focus,.ant-cascader-compact-item:active{z-index:2}.ant-cascader-compact-item[disabled]{z-index:0}.ant-cascader-compact-item:not(.ant-cascader-compact-first-item):not(.ant-cascader-compact-last-item).ant-cascader{border-radius:0}.ant-cascader-compact-item.ant-cascader.ant-cascader-compact-first-item:not(.ant-cascader-compact-last-item):not(.ant-cascader-compact-item-rtl){border-top-right-radius:0;border-bottom-right-radius:0}.ant-cascader-compact-item.ant-cascader.ant-cascader-compact-last-item:not(.ant-cascader-compact-first-item):not(.ant-cascader-compact-item-rtl){border-top-left-radius:0;border-bottom-left-radius:0}.ant-cascader-compact-item.ant-cascader.ant-cascader-compact-item-rtl.ant-cascader-compact-first-item:not(.ant-cascader-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-cascader-compact-item.ant-cascader.ant-cascader-compact-item-rtl.ant-cascader-compact-last-item:not(.ant-cascader-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-cascader-rtl .ant-cascader-menu-item-expand-icon,.ant-cascader-rtl .ant-cascader-menu-item-loading-icon{margin-right:4px;margin-left:0}.ant-cascader-rtl .ant-cascader-checkbox{top:0;margin-right:0;margin-left:8px}.ant-empty{margin:0 8px;font-size:14px;line-height:1.5715;text-align:center}.ant-empty-image{height:100px;margin-bottom:8px}.ant-empty-image img{height:100%}.ant-empty-image svg{height:100%;margin:auto}.ant-empty-footer{margin-top:16px}.ant-empty-normal{margin:32px 0;color:#00000040}.ant-empty-normal .ant-empty-image{height:40px}.ant-empty-small{margin:8px 0;color:#00000040}.ant-empty-small .ant-empty-image{height:35px}.ant-empty-img-default-ellipse{fill:#f5f5f5;fill-opacity:.8}.ant-empty-img-default-path-1{fill:#aeb8c2}.ant-empty-img-default-path-2{fill:url(#linearGradient-1)}.ant-empty-img-default-path-3{fill:#f5f5f7}.ant-empty-img-default-path-4,.ant-empty-img-default-path-5{fill:#dce0e6}.ant-empty-img-default-g{fill:#fff}.ant-empty-img-simple-ellipse{fill:#f5f5f5}.ant-empty-img-simple-g{stroke:#d9d9d9}.ant-empty-img-simple-path{fill:#fafafa}.ant-empty-rtl{direction:rtl}.ant-select-single .ant-select-selector{display:flex}.ant-select-single .ant-select-selector .ant-select-selection-search{position:absolute;top:0;right:11px;bottom:0;left:11px}.ant-select-single .ant-select-selector .ant-select-selection-search-input{width:100%}.ant-select-single .ant-select-selector .ant-select-selection-item,.ant-select-single .ant-select-selector .ant-select-selection-placeholder{padding:0;line-height:30px;transition:all .3s,visibility 0s}.ant-select-single .ant-select-selector .ant-select-selection-item{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-single .ant-select-selector .ant-select-selection-placeholder{transition:none;pointer-events:none}.ant-select-single .ant-select-selector:after,.ant-select-single .ant-select-selector .ant-select-selection-item:after,.ant-select-single .ant-select-selector .ant-select-selection-placeholder:after{display:inline-block;width:0;visibility:hidden;content:" "}.ant-select-single.ant-select-show-arrow .ant-select-selection-search{right:25px}.ant-select-single.ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder{padding-right:18px}.ant-select-single.ant-select-open .ant-select-selection-item{color:#bfbfbf}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{width:100%;height:32px;padding:0 11px}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{height:30px}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector:after{line-height:30px}.ant-select-single.ant-select-customize-input .ant-select-selector:after{display:none}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-search{position:static;width:100%}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder{position:absolute;right:0;left:0;padding:0 11px}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder:after{display:none}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector{height:40px}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector:after,.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-placeholder{line-height:38px}.ant-select-single.ant-select-lg:not(.ant-select-customize-input):not(.ant-select-customize-input) .ant-select-selection-search-input{height:38px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector{height:24px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector:after,.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-placeholder{line-height:22px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input):not(.ant-select-customize-input) .ant-select-selection-search-input{height:22px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selection-search{right:7px;left:7px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector{padding:0 7px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search{right:28px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder{padding-right:21px}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector{padding:0 11px}.ant-select-selection-overflow{position:relative;display:flex;flex:auto;flex-wrap:wrap;max-width:100%}.ant-select-selection-overflow-item{flex:none;align-self:center;max-width:100%}.ant-select-multiple .ant-select-selector{display:flex;flex-wrap:wrap;align-items:center;padding:1px 4px}.ant-select-show-search.ant-select-multiple .ant-select-selector{cursor:text}.ant-select-disabled.ant-select-multiple .ant-select-selector{background:#f5f5f5;cursor:not-allowed}.ant-select-multiple .ant-select-selector:after{display:inline-block;width:0;margin:2px 0;line-height:24px;visibility:hidden;content:" "}.ant-select-multiple.ant-select-show-arrow .ant-select-selector,.ant-select-multiple.ant-select-allow-clear .ant-select-selector{padding-right:24px}.ant-select-multiple .ant-select-selection-item{position:relative;display:flex;flex:none;box-sizing:border-box;max-width:100%;height:24px;margin-top:2px;margin-bottom:2px;line-height:22px;background:#f5f5f5;border:1px solid #f0f0f0;border-radius:2px;cursor:default;transition:font-size .3s,line-height .3s,height .3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-inline-end:4px;padding-inline-start:8px;padding-inline-end:4px}.ant-select-disabled.ant-select-multiple .ant-select-selection-item{color:#bfbfbf;border-color:#d9d9d9;cursor:not-allowed}.ant-select-multiple .ant-select-selection-item-content{display:inline-block;margin-right:4px;overflow:hidden;white-space:pre;text-overflow:ellipsis}.ant-select-multiple .ant-select-selection-item-remove{color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-flex;align-items:center;color:#00000073;font-weight:700;font-size:10px;line-height:inherit;cursor:pointer}.ant-select-multiple .ant-select-selection-item-remove>*{line-height:1}.ant-select-multiple .ant-select-selection-item-remove svg{display:inline-block}.ant-select-multiple .ant-select-selection-item-remove:before{display:none}.ant-select-multiple .ant-select-selection-item-remove .ant-select-multiple .ant-select-selection-item-remove-icon{display:block}.ant-select-multiple .ant-select-selection-item-remove>.anticon{vertical-align:middle}.ant-select-multiple .ant-select-selection-item-remove:hover{color:#000000bf}.ant-select-multiple .ant-select-selection-overflow-item+.ant-select-selection-overflow-item .ant-select-selection-search{margin-inline-start:0}.ant-select-multiple .ant-select-selection-search{position:relative;max-width:100%;margin-inline-start:7px}.ant-select-multiple .ant-select-selection-search-input,.ant-select-multiple .ant-select-selection-search-mirror{height:24px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:24px;transition:all .3s}.ant-select-multiple .ant-select-selection-search-input{width:100%;min-width:4.1px}.ant-select-multiple .ant-select-selection-search-mirror{position:absolute;top:0;left:0;z-index:999;white-space:pre;visibility:hidden}.ant-select-multiple .ant-select-selection-placeholder{position:absolute;top:50%;right:11px;left:11px;transform:translateY(-50%);transition:all .3s}.ant-select-multiple.ant-select-lg .ant-select-selector:after{line-height:32px}.ant-select-multiple.ant-select-lg .ant-select-selection-item{height:32px;line-height:30px}.ant-select-multiple.ant-select-lg .ant-select-selection-search{height:32px;line-height:32px}.ant-select-multiple.ant-select-lg .ant-select-selection-search-input,.ant-select-multiple.ant-select-lg .ant-select-selection-search-mirror{height:32px;line-height:30px}.ant-select-multiple.ant-select-sm .ant-select-selector:after{line-height:16px}.ant-select-multiple.ant-select-sm .ant-select-selection-item{height:16px;line-height:14px}.ant-select-multiple.ant-select-sm .ant-select-selection-search{height:16px;line-height:16px}.ant-select-multiple.ant-select-sm .ant-select-selection-search-input,.ant-select-multiple.ant-select-sm .ant-select-selection-search-mirror{height:16px;line-height:14px}.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder{left:7px}.ant-select-multiple.ant-select-sm .ant-select-selection-search{margin-inline-start:3px}.ant-select-disabled .ant-select-selection-item-remove{display:none}.ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{background-color:#fff;border-color:#ff4d4f!important}.ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer).ant-select-open .ant-select-selector,.ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer).ant-select-focused .ant-select-selector{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-select-status-warning.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer) .ant-select-selector{background-color:#fff;border-color:#faad14!important}.ant-select-status-warning.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer).ant-select-open .ant-select-selector,.ant-select-status-warning.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input):not(.ant-pagination-size-changer).ant-select-focused .ant-select-selector{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-select-status-error.ant-select-has-feedback .ant-select-clear,.ant-select-status-warning.ant-select-has-feedback .ant-select-clear,.ant-select-status-success.ant-select-has-feedback .ant-select-clear,.ant-select-status-validating.ant-select-has-feedback .ant-select-clear{right:32px}.ant-select-status-error.ant-select-has-feedback .ant-select-selection-selected-value,.ant-select-status-warning.ant-select-has-feedback .ant-select-selection-selected-value,.ant-select-status-success.ant-select-has-feedback .ant-select-selection-selected-value,.ant-select-status-validating.ant-select-has-feedback .ant-select-selection-selected-value{padding-right:42px}.ant-select{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-block;cursor:pointer}.ant-select:not(.ant-select-customize-input) .ant-select-selector{position:relative;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s cubic-bezier(.645,.045,.355,1)}.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:pointer}.ant-select-show-search.ant-select:not(.ant-select-customize-input) .ant-select-selector{cursor:text}.ant-select-show-search.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:auto}.ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector{color:#00000040;background:#f5f5f5;cursor:not-allowed}.ant-select-multiple.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector{background:#f5f5f5}.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector input{cursor:not-allowed}.ant-select:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{margin:0;padding:0;background:transparent;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.ant-select:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input::-webkit-search-cancel-button{display:none;-webkit-appearance:none}.ant-select:not(.ant-select-disabled):hover .ant-select-selector{border-color:#40a9ff;border-right-width:1px}.ant-select-selection-item{flex:1;overflow:hidden;font-weight:400;white-space:nowrap;text-overflow:ellipsis}@media all and (-ms-high-contrast: none){.ant-select-selection-item *::-ms-backdrop,.ant-select-selection-item{flex:auto}}.ant-select-selection-placeholder{flex:1;overflow:hidden;color:#bfbfbf;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}@media all and (-ms-high-contrast: none){.ant-select-selection-placeholder *::-ms-backdrop,.ant-select-selection-placeholder{flex:auto}}.ant-select-arrow{display:inline-flex;color:inherit;font-style:normal;text-transform:none;vertical-align:-.125em;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:50%;right:11px;display:flex;align-items:center;height:12px;margin-top:-6px;color:#00000040;font-size:12px;line-height:1;text-align:center;pointer-events:none}.ant-select-arrow>*{line-height:1}.ant-select-arrow svg{display:inline-block}.ant-select-arrow:before{display:none}.ant-select-arrow .ant-select-arrow-icon{display:block}.ant-select-arrow .anticon{vertical-align:top;transition:transform .3s}.ant-select-arrow .anticon>svg{vertical-align:top}.ant-select-arrow .anticon:not(.ant-select-suffix){pointer-events:auto}.ant-select-disabled .ant-select-arrow{cursor:not-allowed}.ant-select-arrow>*:not(:last-child){margin-inline-end:8px}.ant-select-clear{position:absolute;top:50%;right:11px;z-index:1;display:inline-block;width:12px;height:12px;margin-top:-6px;color:#00000040;font-size:12px;font-style:normal;line-height:1;text-align:center;text-transform:none;background:#fff;cursor:pointer;opacity:0;transition:color .3s ease,opacity .15s ease;text-rendering:auto}.ant-select-clear:before{display:block}.ant-select-clear:hover{color:#00000073}.ant-select:hover .ant-select-clear{opacity:1}.ant-select-dropdown{margin:0;color:#000000d9;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum",;position:absolute;top:-9999px;left:-9999px;z-index:1050;box-sizing:border-box;padding:4px 0;overflow:hidden;font-size:14px;font-variant:initial;background-color:#fff;border-radius:2px;outline:none;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}.ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-bottomLeft,.ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-bottomLeft{animation-name:antSlideUpIn}.ant-select-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-select-dropdown-placement-topLeft,.ant-select-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-select-dropdown-placement-topLeft{animation-name:antSlideDownIn}.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-bottomLeft{animation-name:antSlideUpOut}.ant-select-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-select-dropdown-placement-topLeft{animation-name:antSlideDownOut}.ant-select-dropdown-hidden{display:none}.ant-select-dropdown-empty{color:#00000040}.ant-select-item-empty{position:relative;display:block;min-height:32px;padding:5px 12px;color:#000000d9;font-weight:400;font-size:14px;line-height:22px;color:#00000040}.ant-select-item{position:relative;display:block;min-height:32px;padding:5px 12px;color:#000000d9;font-weight:400;font-size:14px;line-height:22px;cursor:pointer;transition:background .3s ease}.ant-select-item-group{color:#00000073;font-size:12px;cursor:default}.ant-select-item-option{display:flex}.ant-select-item-option-content{flex:auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-select-item-option-state{flex:none}.ant-select-item-option-active:not(.ant-select-item-option-disabled){background-color:#f5f5f5}.ant-select-item-option-selected:not(.ant-select-item-option-disabled){color:#000000d9;font-weight:600;background-color:#e6f7ff}.ant-select-item-option-selected:not(.ant-select-item-option-disabled) .ant-select-item-option-state{color:#1890ff}.ant-select-item-option-disabled{color:#00000040;cursor:not-allowed}.ant-select-item-option-disabled.ant-select-item-option-selected{background-color:#f5f5f5}.ant-select-item-option-grouped{padding-left:24px}.ant-select-lg{font-size:16px}.ant-select-borderless .ant-select-selector{background-color:transparent!important;border-color:transparent!important;box-shadow:none!important}.ant-select.ant-select-in-form-item{width:100%}.ant-select-compact-item:not(.ant-select-compact-last-item){margin-right:-1px}.ant-select-compact-item:not(.ant-select-compact-last-item).ant-select-compact-item-rtl{margin-right:0;margin-left:-1px}.ant-select-compact-item:hover>*,.ant-select-compact-item:focus>*,.ant-select-compact-item:active>*{z-index:2}.ant-select-compact-item.ant-select-focused>*{z-index:2}.ant-select-compact-item[disabled]>*{z-index:0}.ant-select-compact-item:not(.ant-select-compact-first-item):not(.ant-select-compact-last-item).ant-select>.ant-select-selector{border-radius:0}.ant-select-compact-item.ant-select-compact-first-item.ant-select:not(.ant-select-compact-last-item):not(.ant-select-compact-item-rtl)>.ant-select-selector{border-top-right-radius:0;border-bottom-right-radius:0}.ant-select-compact-item.ant-select-compact-last-item.ant-select:not(.ant-select-compact-first-item):not(.ant-select-compact-item-rtl)>.ant-select-selector{border-top-left-radius:0;border-bottom-left-radius:0}.ant-select-compact-item.ant-select.ant-select-compact-first-item.ant-select-compact-item-rtl:not(.ant-select-compact-last-item)>.ant-select-selector{border-top-left-radius:0;border-bottom-left-radius:0}.ant-select-compact-item.ant-select.ant-select-compact-last-item.ant-select-compact-item-rtl:not(.ant-select-compact-first-item)>.ant-select-selector{border-top-right-radius:0;border-bottom-right-radius:0}.ant-select-rtl{direction:rtl}.ant-select-rtl .ant-select-arrow,.ant-select-rtl .ant-select-clear{right:initial;left:11px}.ant-select-dropdown-rtl{direction:rtl}.ant-select-dropdown-rtl .ant-select-item-option-grouped{padding-right:24px;padding-left:12px}.ant-select-rtl.ant-select-multiple.ant-select-show-arrow .ant-select-selector,.ant-select-rtl.ant-select-multiple.ant-select-allow-clear .ant-select-selector{padding-right:4px;padding-left:24px}.ant-select-rtl.ant-select-multiple .ant-select-selection-item{text-align:right}.ant-select-rtl.ant-select-multiple .ant-select-selection-item-content{margin-right:0;margin-left:4px;text-align:right}.ant-select-rtl.ant-select-multiple .ant-select-selection-search-mirror{right:0;left:auto}.ant-select-rtl.ant-select-multiple .ant-select-selection-placeholder{right:11px;left:auto}.ant-select-rtl.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder{right:7px}.ant-select-rtl.ant-select-single .ant-select-selector .ant-select-selection-item,.ant-select-rtl.ant-select-single .ant-select-selector .ant-select-selection-placeholder{right:0;left:9px;text-align:right}.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-search{right:11px;left:25px}.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-item,.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder{padding-right:0;padding-left:18px}.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search{right:6px}.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item,.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder{padding-right:0;padding-left:21px}.ant-spin{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;display:none;color:#1890ff;font-size:0;text-align:center;vertical-align:middle;opacity:0;transition:transform .3s cubic-bezier(.78,.14,.15,.86)}.ant-spin-spinning{position:static;display:inline-block;opacity:1}.ant-spin-nested-loading{position:relative}.ant-spin-nested-loading>div>.ant-spin{position:absolute;top:0;left:0;z-index:4;display:block;width:100%;height:100%;max-height:400px}.ant-spin-nested-loading>div>.ant-spin .ant-spin-dot{position:absolute;top:50%;left:50%;margin:-10px}.ant-spin-nested-loading>div>.ant-spin .ant-spin-text{position:absolute;top:50%;width:100%;padding-top:5px;font-size:14px;text-shadow:0 1px 2px #fff}.ant-spin-nested-loading>div>.ant-spin.ant-spin-show-text .ant-spin-dot{margin-top:-20px}.ant-spin-nested-loading>div>.ant-spin-sm .ant-spin-dot{margin:-7px}.ant-spin-nested-loading>div>.ant-spin-sm .ant-spin-text{padding-top:2px}.ant-spin-nested-loading>div>.ant-spin-sm.ant-spin-show-text .ant-spin-dot{margin-top:-17px}.ant-spin-nested-loading>div>.ant-spin-lg .ant-spin-dot{margin:-16px}.ant-spin-nested-loading>div>.ant-spin-lg .ant-spin-text{padding-top:11px}.ant-spin-nested-loading>div>.ant-spin-lg.ant-spin-show-text .ant-spin-dot{margin-top:-26px}.ant-spin-container{position:relative;transition:opacity .3s}.ant-spin-container:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:none \ ;width:100%;height:100%;background:#fff;opacity:0;transition:all .3s;content:"";pointer-events:none}.ant-spin-blur{clear:both;opacity:.5;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}.ant-spin-blur:after{opacity:.4;pointer-events:auto}.ant-spin-tip{color:#00000073}.ant-spin-dot{position:relative;display:inline-block;font-size:20px;width:1em;height:1em}.ant-spin-dot-item{position:absolute;display:block;width:9px;height:9px;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.ant-spin-dot-item:nth-child(1){top:0;left:0}.ant-spin-dot-item:nth-child(2){top:0;right:0;animation-delay:.4s}.ant-spin-dot-item:nth-child(3){right:0;bottom:0;animation-delay:.8s}.ant-spin-dot-item:nth-child(4){bottom:0;left:0;animation-delay:1.2s}.ant-spin-dot-spin{transform:rotate(0);animation:antRotate 1.2s infinite linear}.ant-spin-sm .ant-spin-dot{font-size:14px}.ant-spin-sm .ant-spin-dot i{width:6px;height:6px}.ant-spin-lg .ant-spin-dot{font-size:32px}.ant-spin-lg .ant-spin-dot i{width:14px;height:14px}.ant-spin.ant-spin-show-text .ant-spin-text{display:block}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.ant-spin-blur{background:#fff;opacity:.5}}@keyframes antSpinMove{to{opacity:1}}@keyframes antRotate{to{transform:rotate(360deg)}}.ant-spin-rtl{direction:rtl}.ant-spin-rtl .ant-spin-dot-spin{transform:rotate(-45deg);animation-name:antRotateRtl}@keyframes antRotateRtl{to{transform:rotate(-405deg)}}.ant-badge{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-block;line-height:1}.ant-badge-count{z-index:auto;min-width:20px;height:20px;padding:0 6px;color:#fff;font-weight:400;font-size:12px;line-height:20px;white-space:nowrap;text-align:center;background:#ff4d4f;border-radius:10px;box-shadow:0 0 0 1px #fff}.ant-badge-count a,.ant-badge-count a:hover{color:#fff}.ant-badge-count-sm{min-width:14px;height:14px;padding:0;font-size:12px;line-height:14px;border-radius:7px}.ant-badge-multiple-words{padding:0 8px}.ant-badge-dot{z-index:auto;width:6px;min-width:6px;height:6px;background:#ff4d4f;border-radius:100%;box-shadow:0 0 0 1px #fff}.ant-badge-dot.ant-scroll-number{transition:background 1.5s}.ant-badge-count,.ant-badge-dot,.ant-badge .ant-scroll-number-custom-component{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0%}.ant-badge-count.anticon-spin,.ant-badge-dot.anticon-spin,.ant-badge .ant-scroll-number-custom-component.anticon-spin{animation:antBadgeLoadingCircle 1s infinite linear}.ant-badge-status{line-height:inherit;vertical-align:baseline}.ant-badge-status-dot{position:relative;top:-1px;display:inline-block;width:6px;height:6px;vertical-align:middle;border-radius:50%}.ant-badge-status-success{background-color:#52c41a}.ant-badge-status-processing{position:relative;background-color:#1890ff}.ant-badge-status-processing:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:50%;animation:antStatusProcessing 1.2s infinite ease-in-out;content:""}.ant-badge-status-default{background-color:#d9d9d9}.ant-badge-status-error{background-color:#ff4d4f}.ant-badge-status-warning{background-color:#faad14}.ant-badge-status-pink,.ant-badge-status-magenta{background:#eb2f96}.ant-badge-status-red{background:#f5222d}.ant-badge-status-volcano{background:#fa541c}.ant-badge-status-orange{background:#fa8c16}.ant-badge-status-yellow{background:#fadb14}.ant-badge-status-gold{background:#faad14}.ant-badge-status-cyan{background:#13c2c2}.ant-badge-status-lime{background:#a0d911}.ant-badge-status-green{background:#52c41a}.ant-badge-status-blue{background:#1890ff}.ant-badge-status-geekblue{background:#2f54eb}.ant-badge-status-purple{background:#722ed1}.ant-badge-status-text{margin-left:8px;color:#000000d9;font-size:14px}.ant-badge-zoom-appear,.ant-badge-zoom-enter{animation:antZoomBadgeIn .3s cubic-bezier(.12,.4,.29,1.46);animation-fill-mode:both}.ant-badge-zoom-leave{animation:antZoomBadgeOut .3s cubic-bezier(.71,-.46,.88,.6);animation-fill-mode:both}.ant-badge-not-a-wrapper .ant-badge-zoom-appear,.ant-badge-not-a-wrapper .ant-badge-zoom-enter{animation:antNoWrapperZoomBadgeIn .3s cubic-bezier(.12,.4,.29,1.46)}.ant-badge-not-a-wrapper .ant-badge-zoom-leave{animation:antNoWrapperZoomBadgeOut .3s cubic-bezier(.71,-.46,.88,.6)}.ant-badge-not-a-wrapper:not(.ant-badge-status){vertical-align:middle}.ant-badge-not-a-wrapper .ant-scroll-number-custom-component,.ant-badge-not-a-wrapper .ant-badge-count{transform:none}.ant-badge-not-a-wrapper .ant-scroll-number-custom-component,.ant-badge-not-a-wrapper .ant-scroll-number{position:relative;top:auto;display:block;transform-origin:50% 50%}@keyframes antStatusProcessing{0%{transform:scale(.8);opacity:.5}to{transform:scale(2.4);opacity:0}}.ant-scroll-number{overflow:hidden;direction:ltr}.ant-scroll-number-only{position:relative;display:inline-block;height:20px;transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden}.ant-scroll-number-only>p.ant-scroll-number-only-unit{height:20px;margin:0;-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden}.ant-scroll-number-symbol{vertical-align:top}@keyframes antZoomBadgeIn{0%{transform:scale(0) translate(50%,-50%);opacity:0}to{transform:scale(1) translate(50%,-50%)}}@keyframes antZoomBadgeOut{0%{transform:scale(1) translate(50%,-50%)}to{transform:scale(0) translate(50%,-50%);opacity:0}}@keyframes antNoWrapperZoomBadgeIn{0%{transform:scale(0);opacity:0}to{transform:scale(1)}}@keyframes antNoWrapperZoomBadgeOut{0%{transform:scale(1)}to{transform:scale(0);opacity:0}}@keyframes antBadgeLoadingCircle{0%{transform-origin:50%}to{transform:translate(50%,-50%) rotate(360deg);transform-origin:50%}}.ant-ribbon-wrapper{position:relative}.ant-ribbon{box-sizing:border-box;margin:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;top:8px;height:22px;padding:0 8px;color:#fff;line-height:22px;white-space:nowrap;background-color:#1890ff;border-radius:2px}.ant-ribbon-text{color:#fff}.ant-ribbon-corner{position:absolute;top:100%;width:8px;height:8px;color:currentcolor;border:4px solid;transform:scaleY(.75);transform-origin:top}.ant-ribbon-corner:after{position:absolute;top:-4px;left:-4px;width:inherit;height:inherit;color:#00000040;border:inherit;content:""}.ant-ribbon-color-pink,.ant-ribbon-color-magenta{color:#eb2f96;background:#eb2f96}.ant-ribbon-color-red{color:#f5222d;background:#f5222d}.ant-ribbon-color-volcano{color:#fa541c;background:#fa541c}.ant-ribbon-color-orange{color:#fa8c16;background:#fa8c16}.ant-ribbon-color-yellow{color:#fadb14;background:#fadb14}.ant-ribbon-color-gold{color:#faad14;background:#faad14}.ant-ribbon-color-cyan{color:#13c2c2;background:#13c2c2}.ant-ribbon-color-lime{color:#a0d911;background:#a0d911}.ant-ribbon-color-green{color:#52c41a;background:#52c41a}.ant-ribbon-color-blue{color:#1890ff;background:#1890ff}.ant-ribbon-color-geekblue{color:#2f54eb;background:#2f54eb}.ant-ribbon-color-purple{color:#722ed1;background:#722ed1}.ant-ribbon.ant-ribbon-placement-end{right:-8px;border-bottom-right-radius:0}.ant-ribbon.ant-ribbon-placement-end .ant-ribbon-corner{right:0;border-color:currentcolor transparent transparent currentcolor}.ant-ribbon.ant-ribbon-placement-start{left:-8px;border-bottom-left-radius:0}.ant-ribbon.ant-ribbon-placement-start .ant-ribbon-corner{left:0;border-color:currentcolor currentcolor transparent transparent}.ant-badge-rtl{direction:rtl}.ant-badge-rtl.ant-badge:not(.ant-badge-not-a-wrapper) .ant-badge-count,.ant-badge-rtl.ant-badge:not(.ant-badge-not-a-wrapper) .ant-badge-dot,.ant-badge-rtl.ant-badge:not(.ant-badge-not-a-wrapper) .ant-scroll-number-custom-component{right:auto;left:0;direction:ltr;transform:translate(-50%,-50%);transform-origin:0% 0%}.ant-badge-rtl.ant-badge:not(.ant-badge-not-a-wrapper) .ant-scroll-number-custom-component{right:auto;left:0;transform:translate(-50%,-50%);transform-origin:0% 0%}.ant-badge-rtl .ant-badge-status-text{margin-right:8px;margin-left:0}.ant-badge:not(.ant-badge-not-a-wrapper).ant-badge-rtl .ant-badge-zoom-appear,.ant-badge:not(.ant-badge-not-a-wrapper).ant-badge-rtl .ant-badge-zoom-enter{animation-name:antZoomBadgeInRtl}.ant-badge:not(.ant-badge-not-a-wrapper).ant-badge-rtl .ant-badge-zoom-leave{animation-name:antZoomBadgeOutRtl}.ant-ribbon-rtl{direction:rtl}.ant-ribbon-rtl.ant-ribbon-placement-end{right:unset;left:-8px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.ant-ribbon-rtl.ant-ribbon-placement-end .ant-ribbon-corner{right:unset;left:0;border-color:currentcolor currentcolor transparent transparent}.ant-ribbon-rtl.ant-ribbon-placement-end .ant-ribbon-corner:after{border-color:currentcolor currentcolor transparent transparent}.ant-ribbon-rtl.ant-ribbon-placement-start{right:-8px;left:unset;border-bottom-right-radius:0;border-bottom-left-radius:2px}.ant-ribbon-rtl.ant-ribbon-placement-start .ant-ribbon-corner{right:0;left:unset;border-color:currentcolor transparent transparent currentcolor}.ant-ribbon-rtl.ant-ribbon-placement-start .ant-ribbon-corner:after{border-color:currentcolor transparent transparent currentcolor}@keyframes antZoomBadgeInRtl{0%{transform:scale(0) translate(-50%,-50%);opacity:0}to{transform:scale(1) translate(-50%,-50%)}}@keyframes antZoomBadgeOutRtl{0%{transform:scale(1) translate(-50%,-50%)}to{transform:scale(0) translate(-50%,-50%);opacity:0}}.ant-pro-table-dropdown{width:auto}.ant-checkbox{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;top:.2em;line-height:1;white-space:nowrap;outline:none;cursor:pointer}.ant-checkbox-wrapper:hover .ant-checkbox-inner,.ant-checkbox:hover .ant-checkbox-inner,.ant-checkbox-input:focus+.ant-checkbox-inner{border-color:#1890ff}.ant-checkbox-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:2px;visibility:hidden;animation:antCheckboxEffect .36s ease-in-out;animation-fill-mode:backwards;content:""}.ant-checkbox:hover:after,.ant-checkbox-wrapper:hover .ant-checkbox:after{visibility:visible}.ant-checkbox-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;direction:ltr;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;border-collapse:separate;transition:all .3s}.ant-checkbox-inner:after{position:absolute;top:50%;left:21.5%;display:table;width:5.71428571px;height:9.14285714px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;content:" "}.ant-checkbox-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;cursor:pointer;opacity:0}.ant-checkbox-checked .ant-checkbox-inner:after{position:absolute;display:table;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1) translate(-50%,-50%);opacity:1;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;content:" "}.ant-checkbox-checked .ant-checkbox-inner{background-color:#1890ff;border-color:#1890ff}.ant-checkbox-disabled{cursor:not-allowed}.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after{border-color:#00000040;animation-name:none}.ant-checkbox-disabled .ant-checkbox-input{cursor:not-allowed;pointer-events:none}.ant-checkbox-disabled .ant-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9!important}.ant-checkbox-disabled .ant-checkbox-inner:after{border-color:#f5f5f5;border-collapse:separate;animation-name:none}.ant-checkbox-disabled+span{color:#00000040;cursor:not-allowed}.ant-checkbox-disabled:hover:after,.ant-checkbox-wrapper:hover .ant-checkbox-disabled:after{visibility:hidden}.ant-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-flex;align-items:baseline;line-height:unset;cursor:pointer}.ant-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:" "}.ant-checkbox-wrapper.ant-checkbox-wrapper-disabled{cursor:not-allowed}.ant-checkbox-wrapper+.ant-checkbox-wrapper{margin-left:8px}.ant-checkbox-wrapper.ant-checkbox-wrapper-in-form-item input[type=checkbox]{width:14px;height:14px}.ant-checkbox+span{padding-right:8px;padding-left:8px}.ant-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block}.ant-checkbox-group-item{margin-right:8px}.ant-checkbox-group-item:last-child{margin-right:0}.ant-checkbox-group-item+.ant-checkbox-group-item{margin-left:0}.ant-checkbox-indeterminate .ant-checkbox-inner{background-color:#fff;border-color:#d9d9d9}.ant-checkbox-indeterminate .ant-checkbox-inner:after{top:50%;left:50%;width:8px;height:8px;background-color:#1890ff;border:0;transform:translate(-50%,-50%) scale(1);opacity:1;content:" "}.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner:after{background-color:#00000040;border-color:#00000040}.ant-checkbox-rtl{direction:rtl}.ant-checkbox-group-rtl .ant-checkbox-group-item{margin-right:0;margin-left:8px}.ant-checkbox-group-rtl .ant-checkbox-group-item:last-child{margin-left:0!important}.ant-checkbox-group-rtl .ant-checkbox-group-item+.ant-checkbox-group-item{margin-left:8px}.ant-picker-status-error.ant-picker,.ant-picker-status-error.ant-picker:not(.ant-picker-disabled):hover{background-color:#fff;border-color:#ff4d4f}.ant-picker-status-error.ant-picker-focused,.ant-picker-status-error.ant-picker:focus{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-picker-status-error.ant-picker .ant-picker-active-bar{background:#ff7875}.ant-picker-status-warning.ant-picker,.ant-picker-status-warning.ant-picker:not(.ant-picker-disabled):hover{background-color:#fff;border-color:#faad14}.ant-picker-status-warning.ant-picker-focused,.ant-picker-status-warning.ant-picker:focus{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-picker-status-warning.ant-picker .ant-picker-active-bar{background:#ffc53d}.ant-picker{box-sizing:border-box;margin:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";padding:4px 11px;position:relative;display:inline-flex;align-items:center;background:#fff;border:1px solid #d9d9d9;border-radius:2px;transition:border .3s,box-shadow .3s}.ant-picker:hover,.ant-picker-focused{border-color:#40a9ff;border-right-width:1px}.ant-picker-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-picker.ant-picker-disabled{background:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}.ant-picker.ant-picker-disabled .ant-picker-suffix{color:#00000040}.ant-picker.ant-picker-borderless{background-color:transparent!important;border-color:transparent!important;box-shadow:none!important}.ant-picker-input{position:relative;display:inline-flex;align-items:center;width:100%}.ant-picker-input>input{position:relative;display:inline-block;width:100%;min-width:0;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s;flex:auto;min-width:1px;height:auto;padding:0;background:transparent;border:0}.ant-picker-input>input::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-picker-input>input:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-picker-input>input::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-picker-input>input:-moz-placeholder{text-overflow:ellipsis}.ant-picker-input>input:-ms-input-placeholder{text-overflow:ellipsis}.ant-picker-input>input:placeholder-shown{text-overflow:ellipsis}.ant-picker-input>input:hover{border-color:#40a9ff;border-right-width:1px}.ant-picker-input>input:focus,.ant-picker-input>input-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-picker-input>input-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-picker-input>input-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-picker-input>input[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-picker-input>input[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-picker-input>input-borderless,.ant-picker-input>input-borderless:hover,.ant-picker-input>input-borderless:focus,.ant-picker-input>input-borderless-focused,.ant-picker-input>input-borderless-disabled,.ant-picker-input>input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-picker-input>input{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-picker-input>input-lg{padding:6.5px 11px;font-size:16px}.ant-picker-input>input-sm{padding:0 7px}.ant-picker-input>input:focus{box-shadow:none}.ant-picker-input>input[disabled]{background:transparent}.ant-picker-input:hover .ant-picker-clear{opacity:1}.ant-picker-input-placeholder>input{color:#bfbfbf}.ant-picker-large{padding:6.5px 11px}.ant-picker-large .ant-picker-input>input{font-size:16px}.ant-picker-small{padding:0 7px}.ant-picker-suffix{display:flex;flex:none;align-self:center;margin-left:4px;color:#00000040;line-height:1;pointer-events:none}.ant-picker-suffix>*{vertical-align:top}.ant-picker-suffix>*:not(:last-child){margin-right:8px}.ant-picker-clear{position:absolute;top:50%;right:0;color:#00000040;line-height:1;background:#fff;transform:translateY(-50%);cursor:pointer;opacity:0;transition:opacity .3s,color .3s}.ant-picker-clear>*{vertical-align:top}.ant-picker-clear:hover{color:#00000073}.ant-picker-separator{position:relative;display:inline-block;width:1em;height:16px;color:#00000040;font-size:16px;vertical-align:top;cursor:default}.ant-picker-focused .ant-picker-separator{color:#00000073}.ant-picker-disabled .ant-picker-range-separator .ant-picker-separator{cursor:not-allowed}.ant-picker-range{position:relative;display:inline-flex}.ant-picker-range .ant-picker-clear{right:11px}.ant-picker-range:hover .ant-picker-clear{opacity:1}.ant-picker-range .ant-picker-active-bar{bottom:-1px;height:2px;margin-left:11px;background:#1890ff;opacity:0;transition:all .3s ease-out;pointer-events:none}.ant-picker-range.ant-picker-focused .ant-picker-active-bar{opacity:1}.ant-picker-range-separator{align-items:center;padding:0 8px;line-height:1}.ant-picker-range.ant-picker-small .ant-picker-clear{right:7px}.ant-picker-range.ant-picker-small .ant-picker-active-bar{margin-left:7px}.ant-picker-dropdown{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;top:-9999px;left:-9999px;z-index:1050}.ant-picker-dropdown-hidden{display:none}.ant-picker-dropdown-placement-bottomLeft .ant-picker-range-arrow{top:2.58561808px;display:block;transform:rotate(-135deg) translateY(1px)}.ant-picker-dropdown-placement-topLeft .ant-picker-range-arrow{bottom:2.58561808px;display:block;transform:rotate(45deg)}.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-topRight,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-topRight{animation-name:antSlideDownIn}.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-enter.ant-slide-up-enter-active.ant-picker-dropdown-placement-bottomRight,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-appear.ant-slide-up-appear-active.ant-picker-dropdown-placement-bottomRight{animation-name:antSlideUpIn}.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-topLeft,.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-topRight{animation-name:antSlideDownOut}.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-bottomLeft,.ant-picker-dropdown.ant-slide-up-leave.ant-slide-up-leave-active.ant-picker-dropdown-placement-bottomRight{animation-name:antSlideUpOut}.ant-picker-dropdown-range{padding:7.54247233px 0}.ant-picker-dropdown-range-hidden{display:none}.ant-picker-dropdown .ant-picker-panel>.ant-picker-time-panel{padding-top:4px}.ant-picker-ranges{margin-bottom:0;padding:4px 12px;overflow:hidden;line-height:34px;text-align:left;list-style:none}.ant-picker-ranges>li{display:inline-block}.ant-picker-ranges .ant-picker-preset>.ant-tag-blue{color:#1890ff;background:#e6f7ff;border-color:#91d5ff;cursor:pointer}.ant-picker-ranges .ant-picker-ok{float:right;margin-left:8px}.ant-picker-range-wrapper{display:flex}.ant-picker-range-arrow{position:absolute;z-index:1;width:11.3137085px;height:11.3137085px;margin-left:16.5px;box-shadow:2px 2px 6px -2px #0000001a;transition:left .3s ease-out;border-radius:0 0 2px;pointer-events:none}.ant-picker-range-arrow:before{position:absolute;top:-11.3137085px;left:-11.3137085px;width:33.9411255px;height:33.9411255px;background:#fff;background-repeat:no-repeat;background-position:-10px -10px;content:"";clip-path:inset(33% 33%);clip-path:path("M 9.849242404917499 24.091883092036785 A 5 5 0 0 1 13.384776310850237 22.627416997969522 L 20.627416997969522 22.627416997969522 A 2 2 0 0 0 22.627416997969522 20.627416997969522 L 22.627416997969522 13.384776310850237 A 5 5 0 0 1 24.091883092036785 9.849242404917499 L 23.091883092036785 9.849242404917499 L 9.849242404917499 23.091883092036785 Z")}.ant-picker-panel-container{overflow:hidden;vertical-align:top;background:#fff;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d;transition:margin .3s}.ant-picker-panel-container .ant-picker-panels{display:inline-flex;flex-wrap:nowrap;direction:ltr}.ant-picker-panel-container .ant-picker-panel{vertical-align:top;background:transparent;border-width:0 0 1px 0;border-radius:0}.ant-picker-panel-container .ant-picker-panel .ant-picker-content,.ant-picker-panel-container .ant-picker-panel table{text-align:center}.ant-picker-panel-container .ant-picker-panel-focused{border-color:#f0f0f0}.ant-picker-compact-item:not(.ant-picker-compact-last-item):not(.ant-picker-compact-item-rtl){margin-right:-1px}.ant-picker-compact-item:not(.ant-picker-compact-last-item).ant-picker-compact-item-rtl{margin-left:-1px}.ant-picker-compact-item:hover,.ant-picker-compact-item:focus,.ant-picker-compact-item:active{z-index:2}.ant-picker-compact-item.ant-picker-focused{z-index:2}.ant-picker-compact-item[disabled]{z-index:0}.ant-picker-compact-item:not(.ant-picker-compact-first-item):not(.ant-picker-compact-last-item).ant-picker{border-radius:0}.ant-picker-compact-item.ant-picker.ant-picker-compact-first-item:not(.ant-picker-compact-last-item):not(.ant-picker-compact-item-rtl){border-top-right-radius:0;border-bottom-right-radius:0}.ant-picker-compact-item.ant-picker.ant-picker-compact-last-item:not(.ant-picker-compact-first-item):not(.ant-picker-compact-item-rtl){border-top-left-radius:0;border-bottom-left-radius:0}.ant-picker-compact-item.ant-picker.ant-picker-compact-item-rtl.ant-picker-compact-first-item:not(.ant-picker-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-picker-compact-item.ant-picker.ant-picker-compact-item-rtl.ant-picker-compact-last-item:not(.ant-picker-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-picker-panel{display:inline-flex;flex-direction:column;text-align:center;background:#fff;border:1px solid #f0f0f0;border-radius:2px;outline:none}.ant-picker-panel-focused{border-color:#1890ff}.ant-picker-decade-panel,.ant-picker-year-panel,.ant-picker-quarter-panel,.ant-picker-month-panel,.ant-picker-week-panel,.ant-picker-date-panel,.ant-picker-time-panel{display:flex;flex-direction:column;width:280px}.ant-picker-header{display:flex;padding:0 8px;color:#000000d9;border-bottom:1px solid #f0f0f0}.ant-picker-header>*{flex:none}.ant-picker-header button{padding:0;color:#00000040;line-height:40px;background:transparent;border:0;cursor:pointer;transition:color .3s}.ant-picker-header>button{min-width:1.6em;font-size:14px}.ant-picker-header>button:hover{color:#000000d9}.ant-picker-header-view{flex:auto;font-weight:500;line-height:40px}.ant-picker-header-view button{color:inherit;font-weight:inherit}.ant-picker-header-view button:not(:first-child){margin-left:8px}.ant-picker-header-view button:hover{color:#1890ff}.ant-picker-prev-icon,.ant-picker-next-icon,.ant-picker-super-prev-icon,.ant-picker-super-next-icon{position:relative;display:inline-block;width:7px;height:7px}.ant-picker-prev-icon:before,.ant-picker-next-icon:before,.ant-picker-super-prev-icon:before,.ant-picker-super-next-icon:before{position:absolute;top:0;left:0;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-width:1.5px 0 0 1.5px;content:""}.ant-picker-super-prev-icon:after,.ant-picker-super-next-icon:after{position:absolute;top:4px;left:4px;display:inline-block;width:7px;height:7px;border:0 solid currentcolor;border-width:1.5px 0 0 1.5px;content:""}.ant-picker-prev-icon,.ant-picker-super-prev-icon{transform:rotate(-45deg)}.ant-picker-next-icon,.ant-picker-super-next-icon{transform:rotate(135deg)}.ant-picker-content{width:100%;table-layout:fixed;border-collapse:collapse}.ant-picker-content th,.ant-picker-content td{position:relative;min-width:24px;font-weight:400}.ant-picker-content th{height:30px;color:#000000d9;line-height:30px}.ant-picker-cell{padding:3px 0;color:#00000040;cursor:pointer}.ant-picker-cell-in-view{color:#000000d9}.ant-picker-cell:before{position:absolute;top:50%;right:0;left:0;z-index:1;height:24px;transform:translateY(-50%);transition:all .3s;content:""}.ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner{background:#f5f5f5}.ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;border:1px solid #1890ff;border-radius:2px;content:""}.ant-picker-cell-in-view.ant-picker-cell-in-range{position:relative}.ant-picker-cell-in-view.ant-picker-cell-in-range:before{background:#e6f7ff}.ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner,.ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner{color:#fff;background:#1890ff}.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):before,.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):before{background:#e6f7ff}.ant-picker-cell-in-view.ant-picker-cell-range-start:before{left:50%}.ant-picker-cell-in-view.ant-picker-cell-range-end:before{right:50%}.ant-picker-cell-in-view.ant-picker-cell-range-hover-start:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-end:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start-single:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-end-near-hover:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-start.ant-picker-cell-range-end.ant-picker-cell-range-start-near-hover:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-end-single:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-in-range):after{position:absolute;top:50%;z-index:0;height:24px;border-top:1px dashed #7ec1ff;border-bottom:1px dashed #7ec1ff;transform:translateY(-50%);transition:all .3s;content:""}.ant-picker-cell-range-hover-start:after,.ant-picker-cell-range-hover-end:after,.ant-picker-cell-range-hover:after{right:0;left:2px}.ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover:before,.ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-hover:before,.ant-picker-cell-in-view.ant-picker-cell-range-end.ant-picker-cell-range-hover:before,.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single).ant-picker-cell-range-hover-start:before,.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single).ant-picker-cell-range-hover-end:before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start:before,.ant-picker-panel>:not(.ant-picker-date-panel) .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end:before{background:#cbe6ff}.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner{border-radius:2px 0 0 2px}.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner{border-radius:0 2px 2px 0}.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner:after,.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner:after{position:absolute;top:0;bottom:0;z-index:-1;background:#cbe6ff;transition:all .3s;content:""}.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner:after{right:-6px;left:0}.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner:after{right:0;left:-6px}.ant-picker-cell-range-hover.ant-picker-cell-range-start:after{right:50%}.ant-picker-cell-range-hover.ant-picker-cell-range-end:after{left:50%}tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover:first-child:after,tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child:after,.ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range):after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-start:after{left:6px;border-left:1px dashed #7ec1ff;border-top-left-radius:2px;border-bottom-left-radius:2px}tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover:last-child:after,tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child:after,.ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range:after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range):after,.ant-picker-cell-in-view.ant-picker-cell-range-hover-end:after{right:6px;border-right:1px dashed #7ec1ff;border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-picker-cell-disabled{color:#00000040;pointer-events:none}.ant-picker-cell-disabled .ant-picker-cell-inner{background:transparent}.ant-picker-cell-disabled:before{background:rgba(0,0,0,.04)}.ant-picker-cell-disabled.ant-picker-cell-today .ant-picker-cell-inner:before{border-color:#00000040}.ant-picker-decade-panel .ant-picker-content,.ant-picker-year-panel .ant-picker-content,.ant-picker-quarter-panel .ant-picker-content,.ant-picker-month-panel .ant-picker-content{height:264px}.ant-picker-decade-panel .ant-picker-cell-inner,.ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-month-panel .ant-picker-cell-inner{padding:0 8px}.ant-picker-quarter-panel .ant-picker-content{height:56px}.ant-picker-footer{width:-moz-min-content;width:min-content;min-width:100%;line-height:38px;text-align:center;border-bottom:1px solid transparent}.ant-picker-panel .ant-picker-footer{border-top:1px solid #f0f0f0}.ant-picker-footer-extra{padding:0 12px;line-height:38px;text-align:left}.ant-picker-footer-extra:not(:last-child){border-bottom:1px solid #f0f0f0}.ant-picker-now{text-align:left}.ant-picker-today-btn{color:#1890ff}.ant-picker-today-btn:hover{color:#40a9ff}.ant-picker-today-btn:active{color:#096dd9}.ant-picker-today-btn.ant-picker-today-btn-disabled{color:#00000040;cursor:not-allowed}.ant-picker-decade-panel .ant-picker-cell-inner{padding:0 4px}.ant-picker-decade-panel .ant-picker-cell:before{display:none}.ant-picker-year-panel .ant-picker-body,.ant-picker-quarter-panel .ant-picker-body,.ant-picker-month-panel .ant-picker-body{padding:0 8px}.ant-picker-year-panel .ant-picker-cell-inner,.ant-picker-quarter-panel .ant-picker-cell-inner,.ant-picker-month-panel .ant-picker-cell-inner{width:60px}.ant-picker-year-panel .ant-picker-cell-range-hover-start:after,.ant-picker-quarter-panel .ant-picker-cell-range-hover-start:after,.ant-picker-month-panel .ant-picker-cell-range-hover-start:after{left:14px;border-left:1px dashed #7ec1ff;border-radius:2px 0 0 2px}.ant-picker-panel-rtl .ant-picker-year-panel .ant-picker-cell-range-hover-start:after,.ant-picker-panel-rtl .ant-picker-quarter-panel .ant-picker-cell-range-hover-start:after,.ant-picker-panel-rtl .ant-picker-month-panel .ant-picker-cell-range-hover-start:after{right:14px;border-right:1px dashed #7ec1ff;border-radius:0 2px 2px 0}.ant-picker-year-panel .ant-picker-cell-range-hover-end:after,.ant-picker-quarter-panel .ant-picker-cell-range-hover-end:after,.ant-picker-month-panel .ant-picker-cell-range-hover-end:after{right:14px;border-right:1px dashed #7ec1ff;border-radius:0 2px 2px 0}.ant-picker-panel-rtl .ant-picker-year-panel .ant-picker-cell-range-hover-end:after,.ant-picker-panel-rtl .ant-picker-quarter-panel .ant-picker-cell-range-hover-end:after,.ant-picker-panel-rtl .ant-picker-month-panel .ant-picker-cell-range-hover-end:after{left:14px;border-left:1px dashed #7ec1ff;border-radius:2px 0 0 2px}.ant-picker-week-panel .ant-picker-body{padding:8px 12px}.ant-picker-week-panel .ant-picker-cell:hover .ant-picker-cell-inner,.ant-picker-week-panel .ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-week-panel .ant-picker-cell .ant-picker-cell-inner{background:transparent!important}.ant-picker-week-panel-row td{transition:background .3s}.ant-picker-week-panel-row:hover td{background:#f5f5f5}.ant-picker-week-panel-row-selected td,.ant-picker-week-panel-row-selected:hover td{background:#1890ff}.ant-picker-week-panel-row-selected td.ant-picker-cell-week,.ant-picker-week-panel-row-selected:hover td.ant-picker-cell-week{color:#ffffff80}.ant-picker-week-panel-row-selected td.ant-picker-cell-today .ant-picker-cell-inner:before,.ant-picker-week-panel-row-selected:hover td.ant-picker-cell-today .ant-picker-cell-inner:before{border-color:#fff}.ant-picker-week-panel-row-selected td .ant-picker-cell-inner,.ant-picker-week-panel-row-selected:hover td .ant-picker-cell-inner{color:#fff}.ant-picker-date-panel .ant-picker-body{padding:8px 12px}.ant-picker-date-panel .ant-picker-content{width:252px}.ant-picker-date-panel .ant-picker-content th{width:36px}.ant-picker-datetime-panel{display:flex}.ant-picker-datetime-panel .ant-picker-time-panel{border-left:1px solid #f0f0f0}.ant-picker-datetime-panel .ant-picker-date-panel,.ant-picker-datetime-panel .ant-picker-time-panel{transition:opacity .3s}.ant-picker-datetime-panel-active .ant-picker-date-panel,.ant-picker-datetime-panel-active .ant-picker-time-panel{opacity:.3}.ant-picker-datetime-panel-active .ant-picker-date-panel-active,.ant-picker-datetime-panel-active .ant-picker-time-panel-active{opacity:1}.ant-picker-time-panel{width:auto;min-width:auto}.ant-picker-time-panel .ant-picker-content{display:flex;flex:auto;height:224px}.ant-picker-time-panel-column{flex:1 0 auto;width:56px;margin:0;padding:0;overflow-y:hidden;text-align:left;list-style:none;transition:background .3s}.ant-picker-time-panel-column:after{display:block;height:196px;content:""}.ant-picker-datetime-panel .ant-picker-time-panel-column:after{height:198px}.ant-picker-time-panel-column:not(:first-child){border-left:1px solid #f0f0f0}.ant-picker-time-panel-column-active{background:rgba(230,247,255,.2)}.ant-picker-time-panel-column:hover{overflow-y:auto}.ant-picker-time-panel-column>li{margin:0;padding:0}.ant-picker-time-panel-column>li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner{display:block;width:100%;height:28px;margin:0;padding:0 0 0 14px;color:#000000d9;line-height:28px;border-radius:0;cursor:pointer;transition:background .3s}.ant-picker-time-panel-column>li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner:hover{background:#f5f5f5}.ant-picker-time-panel-column>li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner{background:#e6f7ff}.ant-picker-time-panel-column>li.ant-picker-time-panel-cell-disabled .ant-picker-time-panel-cell-inner{color:#00000040;background:transparent;cursor:not-allowed}_:-ms-fullscreen .ant-picker-range-wrapper .ant-picker-month-panel .ant-picker-cell,:root .ant-picker-range-wrapper .ant-picker-month-panel .ant-picker-cell,_:-ms-fullscreen .ant-picker-range-wrapper .ant-picker-year-panel .ant-picker-cell,:root .ant-picker-range-wrapper .ant-picker-year-panel .ant-picker-cell{padding:21px 0}.ant-picker-rtl{direction:rtl}.ant-picker-rtl .ant-picker-suffix{margin-right:4px;margin-left:0}.ant-picker-rtl .ant-picker-clear{right:auto;left:0}.ant-picker-rtl .ant-picker-separator{transform:rotate(180deg)}.ant-picker-panel-rtl .ant-picker-header-view button:not(:first-child){margin-right:8px;margin-left:0}.ant-picker-rtl.ant-picker-range .ant-picker-clear{right:auto;left:11px}.ant-picker-rtl.ant-picker-range .ant-picker-active-bar{margin-right:11px;margin-left:0}.ant-picker-rtl.ant-picker-range.ant-picker-small .ant-picker-active-bar{margin-right:7px}.ant-picker-dropdown-rtl .ant-picker-ranges{text-align:right}.ant-picker-dropdown-rtl .ant-picker-ranges .ant-picker-ok{float:left;margin-right:8px;margin-left:0}.ant-picker-panel-rtl{direction:rtl}.ant-picker-panel-rtl .ant-picker-prev-icon,.ant-picker-panel-rtl .ant-picker-super-prev-icon{transform:rotate(135deg)}.ant-picker-panel-rtl .ant-picker-next-icon,.ant-picker-panel-rtl .ant-picker-super-next-icon{transform:rotate(-45deg)}.ant-picker-cell .ant-picker-cell-inner{position:relative;z-index:2;display:inline-block;min-width:24px;height:24px;line-height:24px;border-radius:2px;transition:background .3s,border .3s}.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-start:before{right:50%;left:0}.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-end:before{right:0;left:50%}.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-end:before{right:50%;left:50%}.ant-picker-panel-rtl .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner:after{right:0;left:-6px}.ant-picker-panel-rtl .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner:after{right:-6px;left:0}.ant-picker-panel-rtl .ant-picker-cell-range-hover.ant-picker-cell-range-start:after{right:0;left:50%}.ant-picker-panel-rtl .ant-picker-cell-range-hover.ant-picker-cell-range-end:after{right:50%;left:0}.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner{border-radius:0 2px 2px 0}.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner{border-radius:2px 0 0 2px}.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-selected):first-child:after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start.ant-picker-cell-range-hover-edge-start-near-range:after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range):after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:after{right:6px;left:0;border-right:1px dashed #7ec1ff;border-left:none;border-radius:0 2px 2px 0}.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-selected):last-child:after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-edge-end.ant-picker-cell-range-hover-edge-end-near-range:after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range):after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:after{right:0;left:6px;border-right:none;border-left:1px dashed #7ec1ff;border-radius:2px 0 0 2px}.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child:after,.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child:after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover):after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover-end.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover):after,.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover-start.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover):after,.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-start.ant-picker-cell-range-hover.ant-picker-cell-range-hover-edge-start:last-child:after,.ant-picker-panel-rtl tr>.ant-picker-cell-in-view.ant-picker-cell-end.ant-picker-cell-range-hover.ant-picker-cell-range-hover-edge-end:first-child:after{right:6px;left:6px;border-right:1px dashed #7ec1ff;border-left:1px dashed #7ec1ff;border-radius:2px}.ant-picker-dropdown-rtl .ant-picker-footer-extra{direction:rtl;text-align:right}.ant-picker-panel-rtl .ant-picker-time-panel{direction:ltr}.ant-tag{box-sizing:border-box;margin:0 8px 0 0;color:#000000d9;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block;height:auto;padding:0 7px;font-size:12px;line-height:20px;white-space:nowrap;background:#fafafa;border:1px solid #d9d9d9;border-radius:2px;opacity:1;transition:all .3s}.ant-tag,.ant-tag a,.ant-tag a:hover{color:#000000d9}.ant-tag>a:first-child:last-child{display:inline-block;margin:0 -8px;padding:0 8px}.ant-tag-close-icon{margin-left:3px;color:#00000073;font-size:10px;cursor:pointer;transition:all .3s}.ant-tag-close-icon:hover{color:#000000d9}.ant-tag-has-color{border-color:transparent}.ant-tag-has-color,.ant-tag-has-color a,.ant-tag-has-color a:hover,.ant-tag-has-color .anticon-close,.ant-tag-has-color .anticon-close:hover{color:#fff}.ant-tag-checkable{background-color:transparent;border-color:transparent;cursor:pointer}.ant-tag-checkable:not(.ant-tag-checkable-checked):hover{color:#1890ff}.ant-tag-checkable:active,.ant-tag-checkable-checked{color:#fff}.ant-tag-checkable-checked{background-color:#1890ff}.ant-tag-checkable:active{background-color:#096dd9}.ant-tag-hidden{display:none}.ant-tag-pink{color:#c41d7f;background:#fff0f6;border-color:#ffadd2}.ant-tag-pink-inverse{color:#fff;background:#eb2f96;border-color:#eb2f96}.ant-tag-magenta{color:#c41d7f;background:#fff0f6;border-color:#ffadd2}.ant-tag-magenta-inverse{color:#fff;background:#eb2f96;border-color:#eb2f96}.ant-tag-red{color:#cf1322;background:#fff1f0;border-color:#ffa39e}.ant-tag-red-inverse{color:#fff;background:#f5222d;border-color:#f5222d}.ant-tag-volcano{color:#d4380d;background:#fff2e8;border-color:#ffbb96}.ant-tag-volcano-inverse{color:#fff;background:#fa541c;border-color:#fa541c}.ant-tag-orange{color:#d46b08;background:#fff7e6;border-color:#ffd591}.ant-tag-orange-inverse{color:#fff;background:#fa8c16;border-color:#fa8c16}.ant-tag-yellow{color:#d4b106;background:#feffe6;border-color:#fffb8f}.ant-tag-yellow-inverse{color:#fff;background:#fadb14;border-color:#fadb14}.ant-tag-gold{color:#d48806;background:#fffbe6;border-color:#ffe58f}.ant-tag-gold-inverse{color:#fff;background:#faad14;border-color:#faad14}.ant-tag-cyan{color:#08979c;background:#e6fffb;border-color:#87e8de}.ant-tag-cyan-inverse{color:#fff;background:#13c2c2;border-color:#13c2c2}.ant-tag-lime{color:#7cb305;background:#fcffe6;border-color:#eaff8f}.ant-tag-lime-inverse{color:#fff;background:#a0d911;border-color:#a0d911}.ant-tag-green{color:#389e0d;background:#f6ffed;border-color:#b7eb8f}.ant-tag-green-inverse{color:#fff;background:#52c41a;border-color:#52c41a}.ant-tag-blue{color:#096dd9;background:#e6f7ff;border-color:#91d5ff}.ant-tag-blue-inverse{color:#fff;background:#1890ff;border-color:#1890ff}.ant-tag-geekblue{color:#1d39c4;background:#f0f5ff;border-color:#adc6ff}.ant-tag-geekblue-inverse{color:#fff;background:#2f54eb;border-color:#2f54eb}.ant-tag-purple{color:#531dab;background:#f9f0ff;border-color:#d3adf7}.ant-tag-purple-inverse{color:#fff;background:#722ed1;border-color:#722ed1}.ant-tag-success{color:#52c41a;background:#f6ffed;border-color:#b7eb8f}.ant-tag-processing{color:#1890ff;background:#e6f7ff;border-color:#91d5ff}.ant-tag-error{color:#ff4d4f;background:#fff2f0;border-color:#ffccc7}.ant-tag-warning{color:#faad14;background:#fffbe6;border-color:#ffe58f}.ant-tag>.anticon+span,.ant-tag>span+.anticon{margin-left:7px}.ant-tag.ant-tag-rtl{margin-right:0;margin-left:8px;direction:rtl;text-align:right}.ant-tag-rtl .ant-tag-close-icon{margin-right:3px;margin-left:0}.ant-tag-rtl.ant-tag>.anticon+span,.ant-tag-rtl.ant-tag>span+.anticon{margin-right:7px;margin-left:0}.ant-input-number-affix-wrapper{display:inline-block;width:100%;min-width:0;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s;position:relative;display:inline-flex;width:90px;padding:0;padding-inline-start:11px}.ant-input-number-affix-wrapper::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-input-number-affix-wrapper:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-input-number-affix-wrapper::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input-number-affix-wrapper:-moz-placeholder{text-overflow:ellipsis}.ant-input-number-affix-wrapper:-ms-input-placeholder{text-overflow:ellipsis}.ant-input-number-affix-wrapper:placeholder-shown{text-overflow:ellipsis}.ant-input-number-affix-wrapper:hover{border-color:#40a9ff;border-right-width:1px}.ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-input-number-affix-wrapper-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-number-affix-wrapper-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-number-affix-wrapper[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-number-affix-wrapper[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-number-affix-wrapper-borderless,.ant-input-number-affix-wrapper-borderless:hover,.ant-input-number-affix-wrapper-borderless:focus,.ant-input-number-affix-wrapper-borderless-focused,.ant-input-number-affix-wrapper-borderless-disabled,.ant-input-number-affix-wrapper-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-input-number-affix-wrapper{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-input-number-affix-wrapper-lg{padding:6.5px 11px;font-size:16px}.ant-input-number-affix-wrapper-sm{padding:0 7px}.ant-input-number-affix-wrapper:not(.ant-input-number-affix-wrapper-disabled):hover{border-color:#40a9ff;border-right-width:1px;z-index:1}.ant-input-number-affix-wrapper-focused,.ant-input-number-affix-wrapper:focus{z-index:1}.ant-input-number-affix-wrapper-disabled .ant-input-number[disabled]{background:transparent}.ant-input-number-affix-wrapper>div.ant-input-number{width:100%;border:none;outline:none}.ant-input-number-affix-wrapper>div.ant-input-number.ant-input-number-focused{box-shadow:none!important}.ant-input-number-affix-wrapper input.ant-input-number-input{padding:0}.ant-input-number-affix-wrapper:before{display:inline-block;width:0;visibility:hidden;content:" "}.ant-input-number-affix-wrapper .ant-input-number-handler-wrap{z-index:2}.ant-input-number-prefix,.ant-input-number-suffix{display:flex;flex:none;align-items:center;pointer-events:none}.ant-input-number-prefix{margin-inline-end:4px}.ant-input-number-suffix{position:absolute;top:0;right:0;z-index:1;height:100%;margin-right:11px;margin-left:4px}.ant-input-number-group-wrapper .ant-input-number-affix-wrapper{width:100%}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number,.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:hover{background:#fff;border-color:#ff4d4f}.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:focus,.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number-focused{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-input-number-status-error .ant-input-number-prefix{color:#ff4d4f}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number,.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:hover{background:#fff;border-color:#faad14}.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:focus,.ant-input-number-status-warning:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number-focused{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-input-number-status-warning .ant-input-number-prefix{color:#faad14}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper,.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:hover{background:#fff;border-color:#ff4d4f}.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-status-error:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper-focused{border-color:#ff7875;box-shadow:0 0 0 2px #ff4d4f33;border-right-width:1px;outline:0}.ant-input-number-affix-wrapper-status-error .ant-input-number-prefix{color:#ff4d4f}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper,.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:hover{background:#fff;border-color:#faad14}.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper:focus,.ant-input-number-affix-wrapper-status-warning:not(.ant-input-number-affix-wrapper-disabled):not(.ant-input-number-affix-wrapper-borderless).ant-input-number-affix-wrapper-focused{border-color:#ffc53d;box-shadow:0 0 0 2px #faad1433;border-right-width:1px;outline:0}.ant-input-number-affix-wrapper-status-warning .ant-input-number-prefix{color:#faad14}.ant-input-number-group-wrapper-status-error .ant-input-number-group-addon{color:#ff4d4f;border-color:#ff4d4f}.ant-input-number-group-wrapper-status-warning .ant-input-number-group-addon{color:#faad14;border-color:#faad14}.ant-input-number{box-sizing:border-box;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;width:100%;min-width:0;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;transition:all .3s;display:inline-block;width:90px;margin:0;padding:0;border:1px solid #d9d9d9;border-radius:2px}.ant-input-number::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-input-number:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-input-number::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input-number:-moz-placeholder{text-overflow:ellipsis}.ant-input-number:-ms-input-placeholder{text-overflow:ellipsis}.ant-input-number:placeholder-shown{text-overflow:ellipsis}.ant-input-number:focus,.ant-input-number-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-input-number[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-number[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-number-borderless,.ant-input-number-borderless:hover,.ant-input-number-borderless:focus,.ant-input-number-borderless-focused,.ant-input-number-borderless-disabled,.ant-input-number-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-input-number{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-input-number-lg{padding:6.5px 11px;font-size:16px}.ant-input-number-sm{padding:0 7px}.ant-input-number-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:table;width:100%;border-collapse:separate;border-spacing:0}.ant-input-number-group[class*=col-]{float:none;padding-right:0;padding-left:0}.ant-input-number-group>[class*=col-]{padding-right:8px}.ant-input-number-group>[class*=col-]:last-child{padding-right:0}.ant-input-number-group-addon,.ant-input-number-group-wrap,.ant-input-number-group>.ant-input-number{display:table-cell}.ant-input-number-group-addon:not(:first-child):not(:last-child),.ant-input-number-group-wrap:not(:first-child):not(:last-child),.ant-input-number-group>.ant-input-number:not(:first-child):not(:last-child){border-radius:0}.ant-input-number-group-addon,.ant-input-number-group-wrap{width:1px;white-space:nowrap;vertical-align:middle}.ant-input-number-group-wrap>*{display:block!important}.ant-input-number-group .ant-input-number{float:left;width:100%;margin-bottom:0;text-align:inherit}.ant-input-number-group .ant-input-number:focus{z-index:1;border-right-width:1px}.ant-input-number-group .ant-input-number:hover{z-index:1;border-right-width:1px}.ant-input-search-with-button .ant-input-number-group .ant-input-number:hover{z-index:0}.ant-input-number-group-addon{position:relative;padding:0 11px;color:#000000d9;font-weight:400;font-size:14px;text-align:center;background-color:#fafafa;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s}.ant-input-number-group-addon .ant-select{margin:-5px -11px}.ant-input-number-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{background-color:inherit;border:1px solid transparent;box-shadow:none}.ant-input-number-group-addon .ant-select-open .ant-select-selector,.ant-input-number-group-addon .ant-select-focused .ant-select-selector{color:#1890ff}.ant-input-number-group-addon .ant-cascader-picker{margin:-9px -12px;background-color:transparent}.ant-input-number-group-addon .ant-cascader-picker .ant-cascader-input{text-align:left;border:0;box-shadow:none}.ant-input-number-group>.ant-input-number:first-child,.ant-input-number-group-addon:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-number-group>.ant-input-number:first-child .ant-select .ant-select-selector,.ant-input-number-group-addon:first-child .ant-select .ant-select-selector{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-number-group>.ant-input-number-affix-wrapper:not(:first-child) .ant-input-number{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-group>.ant-input-number-affix-wrapper:not(:last-child) .ant-input-number{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-number-group-addon:first-child{border-right:0}.ant-input-number-group-addon:last-child{border-left:0}.ant-input-number-group>.ant-input-number:last-child,.ant-input-number-group-addon:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-group>.ant-input-number:last-child .ant-select .ant-select-selector,.ant-input-number-group-addon:last-child .ant-select .ant-select-selector{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-group-lg .ant-input-number,.ant-input-number-group-lg>.ant-input-number-group-addon{padding:6.5px 11px;font-size:16px}.ant-input-number-group-sm .ant-input-number,.ant-input-number-group-sm>.ant-input-number-group-addon{padding:0 7px}.ant-input-number-group-lg .ant-select-single .ant-select-selector{height:40px}.ant-input-number-group-sm .ant-select-single .ant-select-selector{height:24px}.ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-search .ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child){border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child),.ant-input-search .ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-group.ant-input-number-group-compact{display:block}.ant-input-number-group.ant-input-number-group-compact:before{display:table;content:""}.ant-input-number-group.ant-input-number-group-compact:after{display:table;clear:both;content:""}.ant-input-number-group.ant-input-number-group-compact-addon:not(:first-child):not(:last-child),.ant-input-number-group.ant-input-number-group-compact-wrap:not(:first-child):not(:last-child),.ant-input-number-group.ant-input-number-group-compact>.ant-input-number:not(:first-child):not(:last-child){border-right-width:1px}.ant-input-number-group.ant-input-number-group-compact-addon:not(:first-child):not(:last-child):hover,.ant-input-number-group.ant-input-number-group-compact-wrap:not(:first-child):not(:last-child):hover,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number:not(:first-child):not(:last-child):hover{z-index:1}.ant-input-number-group.ant-input-number-group-compact-addon:not(:first-child):not(:last-child):focus,.ant-input-number-group.ant-input-number-group-compact-wrap:not(:first-child):not(:last-child):focus,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number:not(:first-child):not(:last-child):focus{z-index:1}.ant-input-number-group.ant-input-number-group-compact>*{display:inline-block;float:none;vertical-align:top;border-radius:0}.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-affix-wrapper,.ant-input-number-group.ant-input-number-group-compact>.ant-input-number-number-affix-wrapper,.ant-input-number-group.ant-input-number-group-compact>.ant-picker-range{display:inline-flex}.ant-input-number-group.ant-input-number-group-compact>*:not(:last-child){margin-right:-1px;border-right-width:1px}.ant-input-number-group.ant-input-number-group-compact .ant-input-number{float:none}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input,.ant-input-number-group.ant-input-number-group-compact>.ant-input-group-wrapper .ant-input{border-right-width:1px;border-radius:0}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input:hover,.ant-input-number-group.ant-input-number-group-compact>.ant-input-group-wrapper .ant-input:hover{z-index:1}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-selector:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker .ant-input:focus,.ant-input-number-group.ant-input-number-group-compact>.ant-input-group-wrapper .ant-input:focus{z-index:1}.ant-input-number-group.ant-input-number-group-compact>.ant-select-focused{z-index:1}.ant-input-number-group.ant-input-number-group-compact>.ant-select>.ant-select-arrow{z-index:1}.ant-input-number-group.ant-input-number-group-compact>*:first-child,.ant-input-number-group.ant-input-number-group-compact>.ant-select:first-child>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete:first-child .ant-input,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker:first-child .ant-input{border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-input-number-group.ant-input-number-group-compact>*:last-child,.ant-input-number-group.ant-input-number-group-compact>.ant-select:last-child>.ant-select-selector,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker:last-child .ant-input,.ant-input-number-group.ant-input-number-group-compact>.ant-cascader-picker-focused:last-child .ant-input{border-right-width:1px;border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-input-number-group.ant-input-number-group-compact>.ant-select-auto-complete .ant-input{vertical-align:top}.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper{margin-left:-1px}.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper+.ant-input-group-wrapper .ant-input-affix-wrapper{border-radius:0}.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input-group-addon>.ant-input-search-button{border-radius:0}.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search>.ant-input-group>.ant-input{border-radius:2px 0 0 2px}.ant-input-number-group>.ant-input-number-rtl:first-child{border-radius:0 2px 2px 0}.ant-input-number-group>.ant-input-number-rtl:last-child{border-radius:2px 0 0 2px}.ant-input-number-group-rtl .ant-input-number-group-addon:first-child{border-right:1px solid #d9d9d9;border-left:0;border-radius:0 2px 2px 0}.ant-input-number-group-rtl .ant-input-number-group-addon:last-child{border-right:0;border-left:1px solid #d9d9d9;border-radius:2px 0 0 2px}.ant-input-number-group-wrapper{display:inline-block;text-align:start;vertical-align:top}.ant-input-number-handler{position:relative;display:block;width:100%;height:50%;overflow:hidden;color:#00000073;font-weight:700;line-height:0;text-align:center;border-left:1px solid #d9d9d9;transition:all .1s linear}.ant-input-number-handler:active{background:#f4f4f4}.ant-input-number-handler:hover .ant-input-number-handler-up-inner,.ant-input-number-handler:hover .ant-input-number-handler-down-inner{color:#40a9ff}.ant-input-number-handler-up-inner,.ant-input-number-handler-down-inner{display:inline-flex;align-items:center;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;right:4px;width:12px;height:12px;color:#00000073;line-height:12px;transition:all .1s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input-number-handler-up-inner>*,.ant-input-number-handler-down-inner>*{line-height:1}.ant-input-number-handler-up-inner svg,.ant-input-number-handler-down-inner svg{display:inline-block}.ant-input-number-handler-up-inner:before,.ant-input-number-handler-down-inner:before{display:none}.ant-input-number-handler-up-inner .ant-input-number-handler-up-inner-icon,.ant-input-number-handler-up-inner .ant-input-number-handler-down-inner-icon,.ant-input-number-handler-down-inner .ant-input-number-handler-up-inner-icon,.ant-input-number-handler-down-inner .ant-input-number-handler-down-inner-icon{display:block}.ant-input-number:hover{border-color:#40a9ff;border-right-width:1px}.ant-input-number:hover+.ant-form-item-children-icon{opacity:0;transition:opacity .24s linear .24s}.ant-input-number-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-input-number-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-input-number-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-input-number-disabled .ant-input-number-input{cursor:not-allowed}.ant-input-number-disabled .ant-input-number-handler-wrap,.ant-input-number-readonly .ant-input-number-handler-wrap{display:none}.ant-input-number-input{width:100%;height:30px;padding:0 11px;text-align:left;background-color:transparent;border:0;border-radius:2px;outline:0;transition:all .3s linear;-webkit-appearance:textfield!important;-moz-appearance:textfield!important;appearance:textfield!important}.ant-input-number-input::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-input-number-input:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-input-number-input::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input-number-input:-moz-placeholder{text-overflow:ellipsis}.ant-input-number-input:-ms-input-placeholder{text-overflow:ellipsis}.ant-input-number-input:placeholder-shown{text-overflow:ellipsis}.ant-input-number-input[type=number]::-webkit-inner-spin-button,.ant-input-number-input[type=number]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;appearance:none}.ant-input-number-lg{padding:0;font-size:16px}.ant-input-number-lg input{height:38px}.ant-input-number-sm{padding:0}.ant-input-number-sm input{height:22px;padding:0 7px}.ant-input-number-handler-wrap{position:absolute;top:0;right:0;width:22px;height:100%;background:#fff;border-radius:0 2px 2px 0;opacity:0;transition:opacity .24s linear .1s}.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner,.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner{display:flex;align-items:center;justify-content:center;min-width:auto;margin-right:0;font-size:7px}.ant-input-number-borderless .ant-input-number-handler-wrap{border-left-width:0}.ant-input-number-handler-wrap:hover .ant-input-number-handler{height:40%}.ant-input-number:hover .ant-input-number-handler-wrap,.ant-input-number-focused .ant-input-number-handler-wrap{opacity:1}.ant-input-number-handler-up{border-top-right-radius:2px;cursor:pointer}.ant-input-number-handler-up-inner{top:50%;margin-top:-5px;text-align:center}.ant-input-number-handler-up:hover{height:60%!important}.ant-input-number-handler-down{top:0;border-top:1px solid #d9d9d9;border-bottom-right-radius:2px;cursor:pointer}.ant-input-number-handler-down-inner{top:50%;text-align:center;transform:translateY(-50%)}.ant-input-number-handler-down:hover{height:60%!important}.ant-input-number-borderless .ant-input-number-handler-down{border-top-width:0}.ant-input-number:hover:not(.ant-input-number-borderless) .ant-input-number-handler-down,.ant-input-number-focused:not(.ant-input-number-borderless) .ant-input-number-handler-down{border-top:1px solid #d9d9d9}.ant-input-number-handler-up-disabled,.ant-input-number-handler-down-disabled{cursor:not-allowed}.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner,.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner{color:#00000040}.ant-input-number-borderless{box-shadow:none}.ant-input-number-out-of-range input{color:#ff4d4f}.ant-input-number-compact-item:not(.ant-input-number-compact-last-item):not(.ant-input-number-compact-item-rtl){margin-right:-1px}.ant-input-number-compact-item:not(.ant-input-number-compact-last-item).ant-input-number-compact-item-rtl{margin-left:-1px}.ant-input-number-compact-item:hover,.ant-input-number-compact-item:focus,.ant-input-number-compact-item:active{z-index:2}.ant-input-number-compact-item.ant-input-number-focused{z-index:2}.ant-input-number-compact-item[disabled]{z-index:0}.ant-input-number-compact-item:not(.ant-input-number-compact-first-item):not(.ant-input-number-compact-last-item).ant-input-number{border-radius:0}.ant-input-number-compact-item.ant-input-number.ant-input-number-compact-first-item:not(.ant-input-number-compact-last-item):not(.ant-input-number-compact-item-rtl){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-number-compact-item.ant-input-number.ant-input-number-compact-last-item:not(.ant-input-number-compact-first-item):not(.ant-input-number-compact-item-rtl){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-compact-item.ant-input-number.ant-input-number-compact-item-rtl.ant-input-number-compact-first-item:not(.ant-input-number-compact-last-item){border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-number-compact-item.ant-input-number.ant-input-number-compact-item-rtl.ant-input-number-compact-last-item:not(.ant-input-number-compact-first-item){border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-number-rtl{direction:rtl}.ant-input-number-rtl .ant-input-number-handler{border-right:1px solid #d9d9d9;border-left:0}.ant-input-number-rtl .ant-input-number-handler-wrap{right:auto;left:0}.ant-input-number-rtl.ant-input-number-borderless .ant-input-number-handler-wrap{border-right-width:0}.ant-input-number-rtl .ant-input-number-handler-up{border-top-right-radius:0}.ant-input-number-rtl .ant-input-number-handler-down{border-bottom-right-radius:0}.ant-input-number-rtl .ant-input-number-input{direction:ltr;text-align:right}.ant-image{position:relative;display:inline-block}.ant-image-img{width:100%;height:auto;vertical-align:middle}.ant-image-img-placeholder{background-color:#f5f5f5;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=);background-repeat:no-repeat;background-position:center center;background-size:30%}.ant-image-mask{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;background:rgba(0,0,0,.5);cursor:pointer;opacity:0;transition:opacity .3s}.ant-image-mask-info{padding:0 4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-image-mask-info .anticon{margin-inline-end:4px}.ant-image-mask:hover{opacity:1}.ant-image-placeholder{position:absolute;top:0;right:0;bottom:0;left:0}.ant-image-preview{pointer-events:none;height:100%;text-align:center}.ant-image-preview.ant-zoom-enter,.ant-image-preview.ant-zoom-appear{transform:none;opacity:0;animation-duration:.3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-image-preview-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;height:100%;background-color:#00000073}.ant-image-preview-mask-hidden{display:none}.ant-image-preview-wrap{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;outline:0}.ant-image-preview-body{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.ant-image-preview-img{max-width:100%;max-height:100%;vertical-align:middle;transform:scaleZ(1);cursor:grab;transition:transform .3s cubic-bezier(.215,.61,.355,1) 0s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:auto}.ant-image-preview-img-wrapper{position:absolute;top:0;right:0;bottom:0;left:0;transition:transform .3s cubic-bezier(.215,.61,.355,1) 0s}.ant-image-preview-img-wrapper:before{display:inline-block;width:1px;height:50%;margin-right:-1px;content:""}.ant-image-preview-moving .ant-image-preview-img{cursor:grabbing}.ant-image-preview-moving .ant-image-preview-img-wrapper{transition-duration:0s}.ant-image-preview-wrap{z-index:1080}.ant-image-preview-operations-wrapper{position:fixed;top:0;right:0;z-index:1081;width:100%}.ant-image-preview-operations{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;font-feature-settings:"tnum","tnum";display:flex;flex-direction:row-reverse;align-items:center;color:#ffffffd9;list-style:none;background:rgba(0,0,0,.1);pointer-events:auto}.ant-image-preview-operations-operation{margin-left:12px;padding:12px;cursor:pointer;transition:all .3s}.ant-image-preview-operations-operation:hover{background:rgba(0,0,0,.2)}.ant-image-preview-operations-operation-disabled{color:#ffffff40;pointer-events:none}.ant-image-preview-operations-operation:last-of-type{margin-left:0}.ant-image-preview-operations-progress{position:absolute;left:50%;transform:translate(-50%)}.ant-image-preview-operations-icon{font-size:18px}.ant-image-preview-switch-left,.ant-image-preview-switch-right{position:fixed;top:50%;right:8px;z-index:1081;display:flex;align-items:center;justify-content:center;width:44px;height:44px;color:#ffffffd9;background:rgba(0,0,0,.1);border-radius:50%;transform:translateY(-50%);cursor:pointer;transition:all .3s;pointer-events:auto}.ant-image-preview-switch-left:hover,.ant-image-preview-switch-right:hover{background:rgba(0,0,0,.2)}.ant-image-preview-switch-left-disabled,.ant-image-preview-switch-right-disabled,.ant-image-preview-switch-left-disabled:hover,.ant-image-preview-switch-right-disabled:hover{color:#ffffff40;background:rgba(0,0,0,.1);cursor:not-allowed}.ant-image-preview-switch-left-disabled>.anticon,.ant-image-preview-switch-right-disabled>.anticon,.ant-image-preview-switch-left-disabled:hover>.anticon,.ant-image-preview-switch-right-disabled:hover>.anticon{cursor:not-allowed}.ant-image-preview-switch-left>.anticon,.ant-image-preview-switch-right>.anticon{font-size:18px}.ant-image-preview-switch-left{left:8px}.ant-image-preview-switch-right{right:8px}.ant-progress{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block}.ant-progress-line{position:relative;width:100%;font-size:14px}.ant-progress-steps{display:inline-block}.ant-progress-steps-outer{display:flex;flex-direction:row;align-items:center}.ant-progress-steps-item{flex-shrink:0;min-width:2px;margin-right:2px;background:#f3f3f3;transition:all .3s}.ant-progress-steps-item-active{background:#1890ff}.ant-progress-small.ant-progress-line,.ant-progress-small.ant-progress-line .ant-progress-text .anticon{font-size:12px}.ant-progress-outer{display:inline-block;width:100%;margin-right:0;padding-right:0}.ant-progress-show-info .ant-progress-outer{margin-right:calc(-2em - 8px);padding-right:calc(2em + 8px)}.ant-progress-inner{position:relative;display:inline-block;width:100%;overflow:hidden;vertical-align:middle;background-color:#f5f5f5;border-radius:100px}.ant-progress-circle-trail{stroke:#f5f5f5}.ant-progress-circle-path{animation:ant-progress-appear .3s}.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#1890ff}.ant-progress-success-bg,.ant-progress-bg{position:relative;background-color:#1890ff;border-radius:100px;transition:all .4s cubic-bezier(.08,.82,.17,1) 0s}.ant-progress-success-bg{position:absolute;top:0;left:0;background-color:#52c41a}.ant-progress-text{display:inline-block;width:2em;margin-left:8px;color:#000000d9;font-size:1em;line-height:1;white-space:nowrap;text-align:left;vertical-align:middle;word-break:normal}.ant-progress-text .anticon{font-size:14px}.ant-progress-status-active .ant-progress-bg:before{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;border-radius:10px;opacity:0;animation:ant-progress-active 2.4s cubic-bezier(.23,1,.32,1) infinite;content:""}.ant-progress-status-exception .ant-progress-bg{background-color:#ff4d4f}.ant-progress-status-exception .ant-progress-text{color:#ff4d4f}.ant-progress-status-exception .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#ff4d4f}.ant-progress-status-success .ant-progress-bg{background-color:#52c41a}.ant-progress-status-success .ant-progress-text{color:#52c41a}.ant-progress-status-success .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#52c41a}.ant-progress-circle .ant-progress-inner{position:relative;line-height:1;background-color:transparent}.ant-progress-circle .ant-progress-text{position:absolute;top:50%;left:50%;width:100%;margin:0;padding:0;color:#000000d9;font-size:1em;line-height:1;white-space:normal;text-align:center;transform:translate(-50%,-50%)}.ant-progress-circle .ant-progress-text .anticon{font-size:1.16666667em}.ant-progress-circle.ant-progress-status-exception .ant-progress-text{color:#ff4d4f}.ant-progress-circle.ant-progress-status-success .ant-progress-text{color:#52c41a}@keyframes ant-progress-active{0%{transform:translate(-100%) scaleX(0);opacity:.1}20%{transform:translate(-100%) scaleX(0);opacity:.5}to{transform:translate(0) scaleX(1);opacity:0}}.ant-progress-rtl{direction:rtl}.ant-progress-rtl.ant-progress-show-info .ant-progress-outer{margin-right:0;margin-left:calc(-2em - 8px);padding-right:0;padding-left:calc(2em + 8px)}.ant-progress-rtl .ant-progress-success-bg{right:0;left:auto}.ant-progress-rtl.ant-progress-line .ant-progress-text,.ant-progress-rtl.ant-progress-steps .ant-progress-text{margin-right:8px;margin-left:0;text-align:right}.ant-radio-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block;font-size:0}.ant-radio-group .ant-badge-count{z-index:1}.ant-radio-group>.ant-badge:not(:first-child)>.ant-radio-button-wrapper{border-left:none}.ant-radio-wrapper{box-sizing:border-box;margin:0 8px 0 0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-flex;align-items:baseline;cursor:pointer}.ant-radio-wrapper-disabled{cursor:not-allowed}.ant-radio-wrapper:after{display:inline-block;width:0;overflow:hidden;content:" "}.ant-radio-wrapper.ant-radio-wrapper-in-form-item input[type=radio]{width:14px;height:14px}.ant-radio{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;top:.2em;display:inline-block;outline:none;cursor:pointer}.ant-radio-wrapper:hover .ant-radio,.ant-radio:hover .ant-radio-inner,.ant-radio-input:focus+.ant-radio-inner{border-color:#1890ff}.ant-radio-input:focus+.ant-radio-inner{box-shadow:0 0 0 3px #1890ff1f}.ant-radio-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:50%;visibility:hidden;animation:antRadioEffect .36s ease-in-out;animation-fill-mode:both;content:""}.ant-radio:hover:after,.ant-radio-wrapper:hover .ant-radio:after{visibility:visible}.ant-radio-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;background-color:#fff;border-color:#d9d9d9;border-style:solid;border-width:1px;border-radius:50%;transition:all .3s}.ant-radio-inner:after{position:absolute;top:50%;left:50%;display:block;width:16px;height:16px;margin-top:-8px;margin-left:-8px;background-color:#1890ff;border-top:0;border-left:0;border-radius:16px;transform:scale(0);opacity:0;transition:all .3s cubic-bezier(.78,.14,.15,.86);content:" "}.ant-radio-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;cursor:pointer;opacity:0}.ant-radio.ant-radio-disabled .ant-radio-inner{border-color:#d9d9d9}.ant-radio-checked .ant-radio-inner{border-color:#1890ff}.ant-radio-checked .ant-radio-inner:after{transform:scale(.5);opacity:1;transition:all .3s cubic-bezier(.78,.14,.15,.86)}.ant-radio-disabled{cursor:not-allowed}.ant-radio-disabled .ant-radio-inner{background-color:#f5f5f5;cursor:not-allowed}.ant-radio-disabled .ant-radio-inner:after{background-color:#0003}.ant-radio-disabled .ant-radio-input{cursor:not-allowed}.ant-radio-disabled+span{color:#00000040;cursor:not-allowed}span.ant-radio+*{padding-right:8px;padding-left:8px}.ant-radio-button-wrapper{position:relative;display:inline-block;height:32px;margin:0;padding:0 15px;color:#000000d9;font-size:14px;line-height:30px;background:#fff;border:1px solid #d9d9d9;border-top-width:1.02px;border-left-width:0;cursor:pointer;transition:color .3s,background .3s,border-color .3s,box-shadow .3s}.ant-radio-button-wrapper a{color:#000000d9}.ant-radio-button-wrapper>.ant-radio-button{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%}.ant-radio-group-large .ant-radio-button-wrapper{height:40px;font-size:16px;line-height:38px}.ant-radio-group-small .ant-radio-button-wrapper{height:24px;padding:0 7px;line-height:22px}.ant-radio-button-wrapper:not(:first-child):before{position:absolute;top:-1px;left:-1px;display:block;box-sizing:content-box;width:1px;height:100%;padding:1px 0;background-color:#d9d9d9;transition:background-color .3s;content:""}.ant-radio-button-wrapper:first-child{border-left:1px solid #d9d9d9;border-radius:2px 0 0 2px}.ant-radio-button-wrapper:last-child{border-radius:0 2px 2px 0}.ant-radio-button-wrapper:first-child:last-child{border-radius:2px}.ant-radio-button-wrapper:hover{position:relative;color:#1890ff}.ant-radio-button-wrapper:focus-within{box-shadow:0 0 0 3px #1890ff1f}.ant-radio-button-wrapper .ant-radio-inner,.ant-radio-button-wrapper input[type=checkbox],.ant-radio-button-wrapper input[type=radio]{width:0;height:0;opacity:0;pointer-events:none}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){z-index:1;color:#1890ff;background:#fff;border-color:#1890ff}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before{background-color:#1890ff}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#1890ff}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#40a9ff;border-color:#40a9ff}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover:before{background-color:#40a9ff}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#096dd9;border-color:#096dd9}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active:before{background-color:#096dd9}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{box-shadow:0 0 0 3px #1890ff1f}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#fff;background:#1890ff;border-color:#1890ff}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#fff;background:#40a9ff;border-color:#40a9ff}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#fff;background:#096dd9;border-color:#096dd9}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{box-shadow:0 0 0 3px #1890ff1f}.ant-radio-button-wrapper-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}.ant-radio-button-wrapper-disabled:first-child,.ant-radio-button-wrapper-disabled:hover{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9}.ant-radio-button-wrapper-disabled:first-child{border-left-color:#d9d9d9}.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked{color:#00000040;background-color:#e6e6e6;border-color:#d9d9d9;box-shadow:none}@keyframes antRadioEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}.ant-radio-group.ant-radio-group-rtl{direction:rtl}.ant-radio-wrapper.ant-radio-wrapper-rtl{margin-right:0;margin-left:8px;direction:rtl}.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl{border-right-width:0;border-left-width:1px}.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:not(:first-child):before{right:-1px;left:0}.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:first-child{border-right:1px solid #d9d9d9;border-radius:0 2px 2px 0}.ant-radio-button-wrapper-checked:not([class*=" ant-radio-button-wrapper-disabled"]).ant-radio-button-wrapper:first-child{border-right-color:#40a9ff}.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:last-child{border-radius:2px 0 0 2px}.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper-disabled:first-child{border-right-color:#d9d9d9}.ant-rate{box-sizing:border-box;color:#000000d9;font-variant:tabular-nums;line-height:1.5715;font-feature-settings:"tnum","tnum";display:inline-block;margin:0;padding:0;color:#fadb14;font-size:20px;line-height:unset;list-style:none;outline:none}.ant-rate-disabled .ant-rate-star{cursor:default}.ant-rate-disabled .ant-rate-star>div:hover{transform:scale(1)}.ant-rate-star{position:relative;display:inline-block;color:inherit;cursor:pointer}.ant-rate-star:not(:last-child){margin-right:8px}.ant-rate-star>div{transition:all .3s,outline 0s}.ant-rate-star>div:hover{transform:scale(1.1)}.ant-rate-star>div:focus{outline:0}.ant-rate-star>div:focus-visible{outline:1px dashed #fadb14;transform:scale(1.1)}.ant-rate-star-first,.ant-rate-star-second{color:#f0f0f0;transition:all .3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-rate-star-first .anticon,.ant-rate-star-second .anticon{vertical-align:middle}.ant-rate-star-first{position:absolute;top:0;left:0;width:50%;height:100%;overflow:hidden;opacity:0}.ant-rate-star-half .ant-rate-star-first,.ant-rate-star-half .ant-rate-star-second{opacity:1}.ant-rate-star-half .ant-rate-star-first,.ant-rate-star-full .ant-rate-star-second{color:inherit}.ant-rate-text{display:inline-block;margin:0 8px;font-size:14px}.ant-rate-rtl{direction:rtl}.ant-rate-rtl .ant-rate-star:not(:last-child){margin-right:0;margin-left:8px}.ant-rate-rtl .ant-rate-star-first{right:0;left:auto}.ant-slider{box-sizing:border-box;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;height:12px;margin:10px 6px;padding:4px 0;cursor:pointer;touch-action:none}.ant-slider-vertical{width:12px;height:100%;margin:6px 10px;padding:0 4px}.ant-slider-vertical .ant-slider-rail{width:4px;height:100%}.ant-slider-vertical .ant-slider-track{width:4px}.ant-slider-vertical .ant-slider-handle{margin-top:-6px;margin-left:-5px}.ant-slider-vertical .ant-slider-mark{top:0;left:12px;width:18px;height:100%}.ant-slider-vertical .ant-slider-mark-text{left:4px;white-space:nowrap}.ant-slider-vertical .ant-slider-step{width:4px;height:100%}.ant-slider-vertical .ant-slider-dot{top:auto;margin-left:-2px}.ant-slider-tooltip .ant-tooltip-inner{min-width:unset}.ant-slider-rtl.ant-slider-vertical .ant-slider-handle{margin-right:-5px;margin-left:0}.ant-slider-rtl.ant-slider-vertical .ant-slider-mark{right:12px;left:auto}.ant-slider-rtl.ant-slider-vertical .ant-slider-mark-text{right:4px;left:auto}.ant-slider-rtl.ant-slider-vertical .ant-slider-dot{right:2px;left:auto}.ant-slider-with-marks{margin-bottom:28px}.ant-slider-rail{position:absolute;width:100%;height:4px;background-color:#f5f5f5;border-radius:2px;transition:background-color .3s}.ant-slider-track{position:absolute;height:4px;background-color:#91d5ff;border-radius:2px;transition:background-color .3s}.ant-slider-handle{position:absolute;width:14px;height:14px;margin-top:-5px;background-color:#fff;border:solid 2px #91d5ff;border-radius:50%;box-shadow:0;cursor:pointer;transition:border-color .3s,box-shadow .6s,transform .3s cubic-bezier(.18,.89,.32,1.28)}.ant-slider-handle-dragging{z-index:1}.ant-slider-handle:focus{border-color:#46a6ff;outline:none;box-shadow:0 0 0 5px #1890ff1f}.ant-slider-handle.ant-tooltip-open{border-color:#1890ff}.ant-slider-handle:after{position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;content:""}.ant-slider:hover .ant-slider-rail{background-color:#e1e1e1}.ant-slider:hover .ant-slider-track{background-color:#69c0ff}.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open){border-color:#69c0ff}.ant-slider-mark{position:absolute;top:14px;left:0;width:100%;font-size:14px}.ant-slider-mark-text{position:absolute;display:inline-block;color:#00000073;text-align:center;word-break:keep-all;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-slider-mark-text-active{color:#000000d9}.ant-slider-step{position:absolute;width:100%;height:4px;background:transparent;pointer-events:none}.ant-slider-dot{position:absolute;top:-2px;width:8px;height:8px;background-color:#fff;border:2px solid #f0f0f0;border-radius:50%;cursor:pointer}.ant-slider-dot-active{border-color:#8cc8ff}.ant-slider-disabled{cursor:not-allowed}.ant-slider-disabled .ant-slider-rail{background-color:#f5f5f5!important}.ant-slider-disabled .ant-slider-track{background-color:#00000040!important}.ant-slider-disabled .ant-slider-handle,.ant-slider-disabled .ant-slider-dot{background-color:#fff;border-color:#00000040!important;box-shadow:none;cursor:not-allowed}.ant-slider-disabled .ant-slider-mark-text,.ant-slider-disabled .ant-slider-dot{cursor:not-allowed!important}.ant-slider-rtl{direction:rtl}.ant-slider-rtl .ant-slider-mark{right:0;left:auto}.ant-switch{margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:inline-block;box-sizing:border-box;min-width:44px;height:22px;line-height:22px;vertical-align:middle;background-color:#00000040;border:0;border-radius:100px;cursor:pointer;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-switch:focus{outline:0;box-shadow:0 0 0 2px #0000001a}.ant-switch-checked:focus{box-shadow:0 0 0 2px #e6f7ff}.ant-switch:focus:hover{box-shadow:none}.ant-switch-checked{background-color:#1890ff}.ant-switch-loading,.ant-switch-disabled{cursor:not-allowed;opacity:.4}.ant-switch-loading *,.ant-switch-disabled *{box-shadow:none;cursor:not-allowed}.ant-switch-inner{display:block;margin:0 7px 0 25px;color:#fff;font-size:12px;transition:margin .2s}.ant-switch-checked .ant-switch-inner{margin:0 25px 0 7px}.ant-switch-handle{position:absolute;top:2px;left:2px;width:18px;height:18px;transition:all .2s ease-in-out}.ant-switch-handle:before{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#fff;border-radius:9px;box-shadow:0 2px 4px #00230b33;transition:all .2s ease-in-out;content:""}.ant-switch-checked .ant-switch-handle{left:calc(100% - 20px)}.ant-switch:not(.ant-switch-disabled):active .ant-switch-handle:before{right:-30%;left:0}.ant-switch:not(.ant-switch-disabled):active.ant-switch-checked .ant-switch-handle:before{right:0;left:-30%}.ant-switch-loading-icon.anticon{position:relative;top:2px;color:#000000a6;vertical-align:top}.ant-switch-checked .ant-switch-loading-icon{color:#1890ff}.ant-switch-small{min-width:28px;height:16px;line-height:16px}.ant-switch-small .ant-switch-inner{margin:0 5px 0 18px;font-size:12px}.ant-switch-small .ant-switch-handle{width:12px;height:12px}.ant-switch-small .ant-switch-loading-icon{top:1.5px;font-size:9px}.ant-switch-small.ant-switch-checked .ant-switch-inner{margin:0 18px 0 5px}.ant-switch-small.ant-switch-checked .ant-switch-handle{left:calc(100% - 14px)}.ant-switch-rtl{direction:rtl}.ant-switch-rtl .ant-switch-inner{margin:0 25px 0 7px}.ant-switch-rtl .ant-switch-handle{right:2px;left:auto}.ant-switch-rtl:not(.ant-switch-rtl-disabled):active .ant-switch-handle:before{right:0;left:-30%}.ant-switch-rtl:not(.ant-switch-rtl-disabled):active.ant-switch-checked .ant-switch-handle:before{right:-30%;left:0}.ant-switch-rtl.ant-switch-checked .ant-switch-inner{margin:0 7px 0 25px}.ant-switch-rtl.ant-switch-checked .ant-switch-handle{right:calc(100% - 20px)}.ant-switch-rtl.ant-switch-small.ant-switch-checked .ant-switch-handle{right:calc(100% - 14px)}.ant-select-tree-checkbox{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;top:.2em;line-height:1;white-space:nowrap;outline:none;cursor:pointer}.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner,.ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner,.ant-select-tree-checkbox-input:focus+.ant-select-tree-checkbox-inner{border-color:#1890ff}.ant-select-tree-checkbox-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:2px;visibility:hidden;animation:antCheckboxEffect .36s ease-in-out;animation-fill-mode:backwards;content:""}.ant-select-tree-checkbox:hover:after,.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox:after{visibility:visible}.ant-select-tree-checkbox-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;direction:ltr;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;border-collapse:separate;transition:all .3s}.ant-select-tree-checkbox-inner:after{position:absolute;top:50%;left:21.5%;display:table;width:5.71428571px;height:9.14285714px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;content:" "}.ant-select-tree-checkbox-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;cursor:pointer;opacity:0}.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after{position:absolute;display:table;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1) translate(-50%,-50%);opacity:1;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;content:" "}.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner{background-color:#1890ff;border-color:#1890ff}.ant-select-tree-checkbox-disabled{cursor:not-allowed}.ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after{border-color:#00000040;animation-name:none}.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-input{cursor:not-allowed;pointer-events:none}.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9!important}.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after{border-color:#f5f5f5;border-collapse:separate;animation-name:none}.ant-select-tree-checkbox-disabled+span{color:#00000040;cursor:not-allowed}.ant-select-tree-checkbox-disabled:hover:after,.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-disabled:after{visibility:hidden}.ant-select-tree-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-flex;align-items:baseline;line-height:unset;cursor:pointer}.ant-select-tree-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:" "}.ant-select-tree-checkbox-wrapper.ant-select-tree-checkbox-wrapper-disabled{cursor:not-allowed}.ant-select-tree-checkbox-wrapper+.ant-select-tree-checkbox-wrapper{margin-left:8px}.ant-select-tree-checkbox-wrapper.ant-select-tree-checkbox-wrapper-in-form-item input[type=checkbox]{width:14px;height:14px}.ant-select-tree-checkbox+span{padding-right:8px;padding-left:8px}.ant-select-tree-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block}.ant-select-tree-checkbox-group-item{margin-right:8px}.ant-select-tree-checkbox-group-item:last-child{margin-right:0}.ant-select-tree-checkbox-group-item+.ant-select-tree-checkbox-group-item{margin-left:0}.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner{background-color:#fff;border-color:#d9d9d9}.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner:after{top:50%;left:50%;width:8px;height:8px;background-color:#1890ff;border:0;transform:translate(-50%,-50%) scale(1);opacity:1;content:" "}.ant-select-tree-checkbox-indeterminate.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after{background-color:#00000040;border-color:#00000040}.ant-tree-select-dropdown{padding:8px 4px}.ant-tree-select-dropdown-rtl{direction:rtl}.ant-tree-select-dropdown .ant-select-tree{border-radius:0}.ant-tree-select-dropdown .ant-select-tree-list-holder-inner{align-items:stretch}.ant-tree-select-dropdown .ant-select-tree-list-holder-inner .ant-select-tree-treenode .ant-select-tree-node-content-wrapper{flex:auto}.ant-select-tree{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";background:#fff;border-radius:2px;transition:background-color .3s}.ant-select-tree-focused:not(:hover):not(.ant-select-tree-active-focused){background:#e6f7ff}.ant-select-tree-list-holder-inner{align-items:flex-start}.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner{align-items:stretch}.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-node-content-wrapper{flex:auto}.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-treenode.dragging{position:relative}.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-treenode.dragging:after{position:absolute;top:0;right:0;bottom:4px;left:0;border:1px solid #1890ff;opacity:0;animation:ant-tree-node-fx-do-not-use .3s;animation-play-state:running;animation-fill-mode:forwards;content:"";pointer-events:none}.ant-select-tree .ant-select-tree-treenode{display:flex;align-items:flex-start;padding:0 0 4px;outline:none}.ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper{color:#00000040;cursor:not-allowed}.ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper:hover{background:transparent}.ant-select-tree .ant-select-tree-treenode-active .ant-select-tree-node-content-wrapper{background:#f5f5f5}.ant-select-tree .ant-select-tree-treenode:not(.ant-select-tree .ant-select-tree-treenode-disabled).filter-node .ant-select-tree-title{color:inherit;font-weight:500}.ant-select-tree .ant-select-tree-treenode-draggable .ant-select-tree-draggable-icon{width:24px;line-height:24px;text-align:center;visibility:visible;opacity:.2;transition:opacity .3s}.ant-select-tree-treenode:hover .ant-select-tree .ant-select-tree-treenode-draggable .ant-select-tree-draggable-icon{opacity:.45}.ant-select-tree .ant-select-tree-treenode-draggable.ant-select-tree-treenode-disabled .ant-select-tree-draggable-icon{visibility:hidden}.ant-select-tree-indent{align-self:stretch;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-tree-indent-unit{display:inline-block;width:24px}.ant-select-tree-draggable-icon{visibility:hidden}.ant-select-tree-switcher{position:relative;flex:none;align-self:stretch;width:24px;margin:0;line-height:24px;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-tree-switcher .ant-tree-switcher-icon,.ant-select-tree-switcher .ant-select-tree-switcher-icon{display:inline-block;font-size:10px;vertical-align:baseline}.ant-select-tree-switcher .ant-tree-switcher-icon svg,.ant-select-tree-switcher .ant-select-tree-switcher-icon svg{transition:transform .3s}.ant-select-tree-switcher-noop{cursor:default}.ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg{transform:rotate(-90deg)}.ant-select-tree-switcher-loading-icon{color:#1890ff}.ant-select-tree-switcher-leaf-line{position:relative;z-index:1;display:inline-block;width:100%;height:100%}.ant-select-tree-switcher-leaf-line:before{position:absolute;top:0;right:12px;bottom:-4px;margin-left:-1px;border-right:1px solid #d9d9d9;content:" "}.ant-select-tree-switcher-leaf-line:after{position:absolute;width:10px;height:14px;border-bottom:1px solid #d9d9d9;content:" "}.ant-select-tree-checkbox{top:initial;margin:4px 8px 0 0}.ant-select-tree .ant-select-tree-node-content-wrapper{position:relative;z-index:auto;min-height:24px;margin:0;padding:0 4px;color:inherit;line-height:24px;background:transparent;border-radius:2px;cursor:pointer;transition:all .3s,border 0s,line-height 0s,box-shadow 0s}.ant-select-tree .ant-select-tree-node-content-wrapper:hover{background-color:#f5f5f5}.ant-select-tree .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected{background-color:#bae7ff}.ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle{display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;vertical-align:top}.ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle:empty{display:none}.ant-select-tree-unselectable .ant-select-tree-node-content-wrapper:hover{background-color:transparent}.ant-select-tree-node-content-wrapper{line-height:24px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-tree-node-content-wrapper .ant-tree-drop-indicator{position:absolute;z-index:1;height:2px;background-color:#1890ff;border-radius:1px;pointer-events:none}.ant-select-tree-node-content-wrapper .ant-tree-drop-indicator:after{position:absolute;top:-3px;left:-6px;width:8px;height:8px;background-color:transparent;border:2px solid #1890ff;border-radius:50%;content:""}.ant-select-tree .ant-select-tree-treenode.drop-container>[draggable]{box-shadow:0 0 0 2px #1890ff}.ant-select-tree-show-line .ant-select-tree-indent-unit{position:relative;height:100%}.ant-select-tree-show-line .ant-select-tree-indent-unit:before{position:absolute;top:0;right:12px;bottom:-4px;border-right:1px solid #d9d9d9;content:""}.ant-select-tree-show-line .ant-select-tree-indent-unit-end:before{display:none}.ant-select-tree-show-line .ant-select-tree-switcher{background:#fff}.ant-select-tree-show-line .ant-select-tree-switcher-line-icon{vertical-align:-.15em}.ant-select-tree .ant-select-tree-treenode-leaf-last .ant-select-tree-switcher-leaf-line:before{top:auto!important;bottom:auto!important;height:14px!important}.ant-tree-select-dropdown-rtl .ant-select-tree .ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg{transform:rotate(90deg)}.ant-tree-select-dropdown-rtl .ant-select-tree .ant-select-tree-switcher-loading-icon{transform:scaleY(-1)}.ant-table.ant-table-middle{font-size:14px}.ant-table.ant-table-middle .ant-table-title,.ant-table.ant-table-middle .ant-table-footer,.ant-table.ant-table-middle .ant-table-thead>tr>th,.ant-table.ant-table-middle .ant-table-tbody>tr>td,.ant-table.ant-table-middle tfoot>tr>th,.ant-table.ant-table-middle tfoot>tr>td{padding:12px 8px}.ant-table.ant-table-middle .ant-table-filter-trigger{margin-right:-4px}.ant-table.ant-table-middle .ant-table-expanded-row-fixed{margin:-12px -8px}.ant-table.ant-table-middle .ant-table-tbody .ant-table-wrapper:only-child .ant-table{margin:-12px -8px -12px 40px}.ant-table.ant-table-middle .ant-table-selection-column{padding-inline-start:2px}.ant-table.ant-table-small{font-size:14px}.ant-table.ant-table-small .ant-table-title,.ant-table.ant-table-small .ant-table-footer,.ant-table.ant-table-small .ant-table-thead>tr>th,.ant-table.ant-table-small .ant-table-tbody>tr>td,.ant-table.ant-table-small tfoot>tr>th,.ant-table.ant-table-small tfoot>tr>td{padding:8px}.ant-table.ant-table-small .ant-table-filter-trigger{margin-right:-4px}.ant-table.ant-table-small .ant-table-expanded-row-fixed{margin:-8px}.ant-table.ant-table-small .ant-table-tbody .ant-table-wrapper:only-child .ant-table{margin:-8px -8px -8px 40px}.ant-table.ant-table-small .ant-table-selection-column{padding-inline-start:2px}.ant-table.ant-table-bordered>.ant-table-title{border:1px solid #f0f0f0;border-bottom:0}.ant-table.ant-table-bordered>.ant-table-container{border-left:1px solid #f0f0f0}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>thead>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>thead>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>thead>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>thead>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tbody>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tbody>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tbody>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tbody>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tfoot>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tfoot>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tfoot>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tfoot>tr>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tfoot>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tfoot>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tfoot>tr>td,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tfoot>tr>td{border-right:1px solid #f0f0f0}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>thead>tr:not(:last-child)>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>thead>tr:not(:last-child)>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>thead>tr:not(:last-child)>th,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>thead>tr:not(:last-child)>th{border-bottom:1px solid #f0f0f0}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>thead>tr>th:before,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>thead>tr>th:before,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>thead>tr>th:before,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>thead>tr>th:before{background-color:transparent!important}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>thead>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>thead>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>thead>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>thead>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tbody>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tbody>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tbody>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tbody>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tfoot>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tfoot>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tfoot>tr>.ant-table-cell-fix-right-first:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tfoot>tr>.ant-table-cell-fix-right-first:after{border-right:1px solid #f0f0f0}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tbody>tr>td>.ant-table-expanded-row-fixed,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tbody>tr>td>.ant-table-expanded-row-fixed,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tbody>tr>td>.ant-table-expanded-row-fixed,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tbody>tr>td>.ant-table-expanded-row-fixed{margin:-16px -17px}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table>tbody>tr>td>.ant-table-expanded-row-fixed:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table>tbody>tr>td>.ant-table-expanded-row-fixed:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-body>table>tbody>tr>td>.ant-table-expanded-row-fixed:after,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-summary>table>tbody>tr>td>.ant-table-expanded-row-fixed:after{position:absolute;top:0;right:1px;bottom:0;border-right:1px solid #f0f0f0;content:""}.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table,.ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table{border-top:1px solid #f0f0f0}.ant-table.ant-table-bordered.ant-table-scroll-horizontal>.ant-table-container>.ant-table-body>table>tbody>tr.ant-table-expanded-row>td,.ant-table.ant-table-bordered.ant-table-scroll-horizontal>.ant-table-container>.ant-table-body>table>tbody>tr.ant-table-placeholder>td{border-right:0}.ant-table.ant-table-bordered.ant-table-middle>.ant-table-container>.ant-table-content>table>tbody>tr>td>.ant-table-expanded-row-fixed,.ant-table.ant-table-bordered.ant-table-middle>.ant-table-container>.ant-table-body>table>tbody>tr>td>.ant-table-expanded-row-fixed{margin:-12px -9px}.ant-table.ant-table-bordered.ant-table-small>.ant-table-container>.ant-table-content>table>tbody>tr>td>.ant-table-expanded-row-fixed,.ant-table.ant-table-bordered.ant-table-small>.ant-table-container>.ant-table-body>table>tbody>tr>td>.ant-table-expanded-row-fixed{margin:-8px -9px}.ant-table.ant-table-bordered>.ant-table-footer{border:1px solid #f0f0f0;border-top:0}.ant-table-cell .ant-table-container:first-child{border-top:0}.ant-table-cell-scrollbar:not([rowspan]){box-shadow:0 1px 0 1px #fafafa}.ant-table-wrapper{clear:both;max-width:100%}.ant-table-wrapper:before{display:table;content:""}.ant-table-wrapper:after{display:table;clear:both;content:""}.ant-table{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;font-size:14px;background:#fff;border-radius:2px}.ant-table table{width:100%;text-align:left;border-radius:2px 2px 0 0;border-collapse:separate;border-spacing:0}.ant-table-thead>tr>th,.ant-table-tbody>tr>td,.ant-table tfoot>tr>th,.ant-table tfoot>tr>td{position:relative;padding:16px;overflow-wrap:break-word}.ant-table-cell-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.ant-table-cell-ellipsis.ant-table-cell-fix-left-last,.ant-table-cell-ellipsis.ant-table-cell-fix-right-first{overflow:visible}.ant-table-cell-ellipsis.ant-table-cell-fix-left-last .ant-table-cell-content,.ant-table-cell-ellipsis.ant-table-cell-fix-right-first .ant-table-cell-content{display:block;overflow:hidden;text-overflow:ellipsis}.ant-table-cell-ellipsis .ant-table-column-title{overflow:hidden;text-overflow:ellipsis;word-break:keep-all}.ant-table-title{padding:16px}.ant-table-footer{padding:16px;color:#000000d9;background:#fafafa}.ant-table-thead>tr>th{position:relative;color:#000000d9;font-weight:500;text-align:left;background:#fafafa;border-bottom:1px solid #f0f0f0;transition:background .3s ease}.ant-table-thead>tr>th[colspan]:not([colspan="1"]){text-align:center}.ant-table-thead>tr>th:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]):before{position:absolute;top:50%;right:0;width:1px;height:1.6em;background-color:#0000000f;transform:translateY(-50%);transition:background-color .3s;content:""}.ant-table-thead>tr:not(:last-child)>th[colspan]{border-bottom:0}.ant-table-tbody>tr>td{border-bottom:1px solid #f0f0f0;transition:background .3s}.ant-table-tbody>tr>td>.ant-table-wrapper:only-child .ant-table,.ant-table-tbody>tr>td>.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table{margin:-16px -16px -16px 32px}.ant-table-tbody>tr>td>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td,.ant-table-tbody>tr>td>.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td{border-bottom:0}.ant-table-tbody>tr>td>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td:first-child,.ant-table-tbody>tr>td>.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td:first-child,.ant-table-tbody>tr>td>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td:last-child,.ant-table-tbody>tr>td>.ant-table-expanded-row-fixed>.ant-table-wrapper:only-child .ant-table-tbody>tr:last-child>td:last-child{border-radius:0}.ant-table-tbody>tr.ant-table-row:hover>td,.ant-table-tbody>tr>td.ant-table-cell-row-hover{background:#fafafa}.ant-table-tbody>tr.ant-table-row-selected>td{background:#e6f7ff;border-color:#00000008}.ant-table-tbody>tr.ant-table-row-selected:hover>td{background:#dcf4ff}.ant-table-summary{position:relative;z-index:2;background:#fff}div.ant-table-summary{box-shadow:0 -1px #f0f0f0}.ant-table-summary>tr>th,.ant-table-summary>tr>td{border-bottom:1px solid #f0f0f0}.ant-table-pagination.ant-pagination{margin:16px 0}.ant-table-pagination{display:flex;flex-wrap:wrap;row-gap:8px}.ant-table-pagination>*{flex:none}.ant-table-pagination-left{justify-content:flex-start}.ant-table-pagination-center{justify-content:center}.ant-table-pagination-right{justify-content:flex-end}.ant-table-thead th.ant-table-column-has-sorters{outline:none;cursor:pointer;transition:all .3s}.ant-table-thead th.ant-table-column-has-sorters:hover{background:rgba(0,0,0,.04)}.ant-table-thead th.ant-table-column-has-sorters:hover:before{background-color:transparent!important}.ant-table-thead th.ant-table-column-has-sorters:focus-visible{color:#1890ff}.ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-left:hover,.ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-right:hover,.ant-table-thead th.ant-table-column-sort{background:#f5f5f5}.ant-table-thead th.ant-table-column-sort:before{background-color:transparent!important}td.ant-table-column-sort{background:#fafafa}.ant-table-column-title{position:relative;z-index:1;flex:1}.ant-table-column-sorters{display:flex;flex:auto;align-items:center;justify-content:space-between}.ant-table-column-sorters:after{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;content:""}.ant-table-column-sorter{margin-left:4px;color:#bfbfbf;font-size:0;transition:color .3s}.ant-table-column-sorter-inner{display:inline-flex;flex-direction:column;align-items:center}.ant-table-column-sorter-up,.ant-table-column-sorter-down{font-size:11px}.ant-table-column-sorter-up.active,.ant-table-column-sorter-down.active{color:#1890ff}.ant-table-column-sorter-up+.ant-table-column-sorter-down{margin-top:-.3em}.ant-table-column-sorters:hover .ant-table-column-sorter{color:#a6a6a6}.ant-table-filter-column{display:flex;justify-content:space-between}.ant-table-filter-trigger{position:relative;display:flex;align-items:center;margin:-4px -8px -4px 4px;padding:0 4px;color:#bfbfbf;font-size:12px;border-radius:2px;cursor:pointer;transition:all .3s}.ant-table-filter-trigger:hover{color:#00000073;background:rgba(0,0,0,.04)}.ant-table-filter-trigger.active{color:#1890ff}.ant-table-filter-dropdown{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";min-width:120px;background-color:#fff;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}.ant-table-filter-dropdown .ant-dropdown-menu{max-height:264px;overflow-x:hidden;border:0;box-shadow:none}.ant-table-filter-dropdown .ant-dropdown-menu:empty:after{display:block;padding:8px 0;color:#00000040;font-size:12px;text-align:center;content:"Not Found"}.ant-table-filter-dropdown-tree{padding:8px 8px 0}.ant-table-filter-dropdown-tree .ant-tree-treenode .ant-tree-node-content-wrapper:hover{background-color:#f5f5f5}.ant-table-filter-dropdown-tree .ant-tree-treenode-checkbox-checked .ant-tree-node-content-wrapper,.ant-table-filter-dropdown-tree .ant-tree-treenode-checkbox-checked .ant-tree-node-content-wrapper:hover{background-color:#bae7ff}.ant-table-filter-dropdown-search{padding:8px;border-bottom:1px #f0f0f0 solid}.ant-table-filter-dropdown-search-input input{min-width:140px}.ant-table-filter-dropdown-search-input .anticon{color:#00000040}.ant-table-filter-dropdown-checkall{width:100%;margin-bottom:4px;margin-left:4px}.ant-table-filter-dropdown-submenu>ul{max-height:calc(100vh - 130px);overflow-x:hidden;overflow-y:auto}.ant-table-filter-dropdown .ant-checkbox-wrapper+span,.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper+span{padding-left:8px}.ant-table-filter-dropdown-btns{display:flex;justify-content:space-between;padding:7px 8px;overflow:hidden;background-color:inherit;border-top:1px solid #f0f0f0}.ant-table-selection-col{width:32px}.ant-table-bordered .ant-table-selection-col{width:50px}table tr th.ant-table-selection-column,table tr td.ant-table-selection-column{padding-right:8px;padding-left:8px;text-align:center}table tr th.ant-table-selection-column .ant-radio-wrapper,table tr td.ant-table-selection-column .ant-radio-wrapper{margin-right:0}table tr th.ant-table-selection-column.ant-table-cell-fix-left{z-index:3}table tr th.ant-table-selection-column:after{background-color:transparent!important}.ant-table-selection{position:relative;display:inline-flex;flex-direction:column}.ant-table-selection-extra{position:absolute;top:0;z-index:1;cursor:pointer;transition:all .3s;margin-inline-start:100%;padding-inline-start:4px}.ant-table-selection-extra .anticon{color:#bfbfbf;font-size:10px}.ant-table-selection-extra .anticon:hover{color:#a6a6a6}.ant-table-expand-icon-col{width:48px}.ant-table-row-expand-icon-cell{text-align:center}.ant-table-row-expand-icon-cell .ant-table-row-expand-icon{display:inline-flex;float:none;vertical-align:sub}.ant-table-row-indent{float:left;height:1px}.ant-table-row-expand-icon{color:#1890ff;outline:none;cursor:pointer;transition:color .3s;position:relative;float:left;box-sizing:border-box;width:17px;height:17px;padding:0;color:inherit;line-height:17px;background:#fff;border:1px solid #f0f0f0;border-radius:2px;transform:scale(.94117647);transition:all .3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-table-row-expand-icon:focus-visible,.ant-table-row-expand-icon:hover{color:#40a9ff}.ant-table-row-expand-icon:active{color:#096dd9}.ant-table-row-expand-icon:focus,.ant-table-row-expand-icon:hover,.ant-table-row-expand-icon:active{border-color:currentcolor}.ant-table-row-expand-icon:before,.ant-table-row-expand-icon:after{position:absolute;background:currentcolor;transition:transform .3s ease-out;content:""}.ant-table-row-expand-icon:before{top:7px;right:3px;left:3px;height:1px}.ant-table-row-expand-icon:after{top:3px;bottom:3px;left:7px;width:1px;transform:rotate(90deg)}.ant-table-row-expand-icon-collapsed:before{transform:rotate(-180deg)}.ant-table-row-expand-icon-collapsed:after{transform:rotate(0)}.ant-table-row-expand-icon-spaced{background:transparent;border:0;visibility:hidden}.ant-table-row-expand-icon-spaced:before,.ant-table-row-expand-icon-spaced:after{display:none;content:none}.ant-table-row-indent+.ant-table-row-expand-icon{margin-top:2.5005px;margin-right:8px}tr.ant-table-expanded-row>td,tr.ant-table-expanded-row:hover>td{background:#fbfbfb}tr.ant-table-expanded-row .ant-descriptions-view{display:flex}tr.ant-table-expanded-row .ant-descriptions-view table{flex:auto;width:auto}.ant-table .ant-table-expanded-row-fixed{position:relative;margin:-16px;padding:16px}.ant-table-tbody>tr.ant-table-placeholder{text-align:center}.ant-table-empty .ant-table-tbody>tr.ant-table-placeholder{color:#00000040}.ant-table-tbody>tr.ant-table-placeholder:hover>td{background:#fff}.ant-table-cell-fix-left,.ant-table-cell-fix-right{position:sticky!important;z-index:2;background:#fff}.ant-table-cell-fix-left-first:after,.ant-table-cell-fix-left-last:after{position:absolute;top:0;right:0;bottom:-1px;width:30px;transform:translate(100%);transition:box-shadow .3s;content:"";pointer-events:none}.ant-table-cell-fix-left-all:after{display:none}.ant-table-cell-fix-right-first:after,.ant-table-cell-fix-right-last:after{position:absolute;top:0;bottom:-1px;left:0;width:30px;transform:translate(-100%);transition:box-shadow .3s;content:"";pointer-events:none}.ant-table .ant-table-container:before,.ant-table .ant-table-container:after{position:absolute;top:0;bottom:0;z-index:4;width:30px;transition:box-shadow .3s;content:"";pointer-events:none}.ant-table .ant-table-container:before{left:0}.ant-table .ant-table-container:after{right:0}.ant-table-ping-left:not(.ant-table-has-fix-left)>.ant-table-container{position:relative}.ant-table-ping-left:not(.ant-table-has-fix-left)>.ant-table-container:before{box-shadow:inset 10px 0 8px -8px #00000026}.ant-table-ping-left .ant-table-cell-fix-left-first:after,.ant-table-ping-left .ant-table-cell-fix-left-last:after{box-shadow:inset 10px 0 8px -8px #00000026}.ant-table-ping-left .ant-table-cell-fix-left-last:before{background-color:transparent!important}.ant-table-ping-right:not(.ant-table-has-fix-right)>.ant-table-container{position:relative}.ant-table-ping-right:not(.ant-table-has-fix-right)>.ant-table-container:after{box-shadow:inset -10px 0 8px -8px #00000026}.ant-table-ping-right .ant-table-cell-fix-right-first:after,.ant-table-ping-right .ant-table-cell-fix-right-last:after{box-shadow:inset -10px 0 8px -8px #00000026}.ant-table-sticky-holder{position:sticky;z-index:3;background:#fff}.ant-table-sticky-scroll{position:sticky;bottom:0;z-index:3;display:flex;align-items:center;background:#ffffff;border-top:1px solid #f0f0f0;opacity:.6}.ant-table-sticky-scroll:hover{transform-origin:center bottom}.ant-table-sticky-scroll-bar{height:8px;background-color:#00000059;border-radius:4px}.ant-table-sticky-scroll-bar:hover,.ant-table-sticky-scroll-bar-active{background-color:#000c}@media all and (-ms-high-contrast: none){.ant-table-ping-left .ant-table-cell-fix-left-last:after{box-shadow:none!important}.ant-table-ping-right .ant-table-cell-fix-right-first:after{box-shadow:none!important}}.ant-table-title{border-radius:2px 2px 0 0}.ant-table-title+.ant-table-container{border-top-left-radius:0;border-top-right-radius:0}.ant-table-title+.ant-table-container table{border-radius:0}.ant-table-title+.ant-table-container table>thead>tr:first-child th:first-child{border-radius:0}.ant-table-title+.ant-table-container table>thead>tr:first-child th:last-child{border-radius:0}.ant-table-container{border-top-left-radius:2px;border-top-right-radius:2px}.ant-table-container table>thead>tr:first-child th:first-child{border-top-left-radius:2px}.ant-table-container table>thead>tr:first-child th:last-child{border-top-right-radius:2px}.ant-table-footer{border-radius:0 0 2px 2px}.ant-table-wrapper-rtl,.ant-table-rtl{direction:rtl}.ant-table-wrapper-rtl .ant-table table{text-align:right}.ant-table-wrapper-rtl .ant-table-thead>tr>th[colspan]:not([colspan="1"]){text-align:center}.ant-table-wrapper-rtl .ant-table-thead>tr>th:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]):before{right:auto;left:0}.ant-table-wrapper-rtl .ant-table-thead>tr>th{text-align:right}.ant-table-tbody>tr .ant-table-wrapper:only-child .ant-table.ant-table-rtl{margin:-16px 33px -16px -16px}.ant-table-wrapper.ant-table-wrapper-rtl .ant-table-pagination-left{justify-content:flex-end}.ant-table-wrapper.ant-table-wrapper-rtl .ant-table-pagination-right{justify-content:flex-start}.ant-table-wrapper-rtl .ant-table-column-sorter{margin-right:4px;margin-left:0}.ant-table-wrapper-rtl .ant-table-filter-column-title{padding:16px 16px 16px 2.3em}.ant-table-rtl .ant-table-thead tr th.ant-table-column-has-sorters .ant-table-filter-column-title{padding:0 0 0 2.3em}.ant-table-wrapper-rtl .ant-table-filter-trigger{margin:-4px 4px -4px -8px}.ant-dropdown-rtl .ant-table-filter-dropdown .ant-checkbox-wrapper+span,.ant-dropdown-rtl .ant-table-filter-dropdown-submenu .ant-checkbox-wrapper+span,.ant-dropdown-menu-submenu-rtl.ant-table-filter-dropdown .ant-checkbox-wrapper+span,.ant-dropdown-menu-submenu-rtl.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper+span{padding-right:8px;padding-left:0}.ant-table-wrapper-rtl .ant-table-selection{text-align:center}.ant-table-wrapper-rtl .ant-table-row-indent,.ant-table-wrapper-rtl .ant-table-row-expand-icon{float:right}.ant-table-wrapper-rtl .ant-table-row-indent+.ant-table-row-expand-icon{margin-right:0;margin-left:8px}.ant-table-wrapper-rtl .ant-table-row-expand-icon:after{transform:rotate(-90deg)}.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed:before{transform:rotate(180deg)}.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed:after{transform:rotate(0)}.ant-pagination{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum"}.ant-pagination ul,.ant-pagination ol{margin:0;padding:0;list-style:none}.ant-pagination:after{display:block;clear:both;height:0;overflow:hidden;visibility:hidden;content:" "}.ant-pagination-total-text{display:inline-block;height:32px;margin-right:8px;line-height:30px;vertical-align:middle}.ant-pagination-item{display:inline-block;min-width:32px;height:32px;margin-right:8px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:30px;text-align:center;vertical-align:middle;list-style:none;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;outline:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-pagination-item a{display:block;padding:0 6px;color:#000000d9;transition:none}.ant-pagination-item a:hover{text-decoration:none}.ant-pagination-item:hover{border-color:#1890ff;transition:all .3s}.ant-pagination-item:hover a{color:#1890ff}.ant-pagination-item:focus-visible{border-color:#1890ff;transition:all .3s}.ant-pagination-item:focus-visible a{color:#1890ff}.ant-pagination-item-active{font-weight:500;background:#fff;border-color:#1890ff}.ant-pagination-item-active a{color:#1890ff}.ant-pagination-item-active:hover{border-color:#40a9ff}.ant-pagination-item-active:focus-visible{border-color:#40a9ff}.ant-pagination-item-active:hover a{color:#40a9ff}.ant-pagination-item-active:focus-visible a{color:#40a9ff}.ant-pagination-jump-prev,.ant-pagination-jump-next{outline:0}.ant-pagination-jump-prev .ant-pagination-item-container,.ant-pagination-jump-next .ant-pagination-item-container{position:relative}.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon{color:#1890ff;font-size:12px;letter-spacing:-1px;opacity:0;transition:all .2s}.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon-svg,.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon-svg{top:0;right:0;bottom:0;left:0;margin:auto}.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis,.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis{position:absolute;top:0;right:0;bottom:0;left:0;display:block;margin:auto;color:#00000040;font-family:Arial,Helvetica,sans-serif;letter-spacing:2px;text-align:center;text-indent:.13em;opacity:1;transition:all .2s}.ant-pagination-jump-prev:hover .ant-pagination-item-link-icon,.ant-pagination-jump-next:hover .ant-pagination-item-link-icon{opacity:1}.ant-pagination-jump-prev:hover .ant-pagination-item-ellipsis,.ant-pagination-jump-next:hover .ant-pagination-item-ellipsis{opacity:0}.ant-pagination-jump-prev:focus-visible .ant-pagination-item-link-icon,.ant-pagination-jump-next:focus-visible .ant-pagination-item-link-icon{opacity:1}.ant-pagination-jump-prev:focus-visible .ant-pagination-item-ellipsis,.ant-pagination-jump-next:focus-visible .ant-pagination-item-ellipsis{opacity:0}.ant-pagination-prev,.ant-pagination-jump-prev,.ant-pagination-jump-next{margin-right:8px}.ant-pagination-prev,.ant-pagination-next,.ant-pagination-jump-prev,.ant-pagination-jump-next{display:inline-block;min-width:32px;height:32px;color:#000000d9;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:32px;text-align:center;vertical-align:middle;list-style:none;border-radius:2px;cursor:pointer;transition:all .3s}.ant-pagination-prev,.ant-pagination-next{font-family:Arial,Helvetica,sans-serif;outline:0}.ant-pagination-prev button,.ant-pagination-next button{color:#000000d9;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-pagination-prev:hover button,.ant-pagination-next:hover button{border-color:#40a9ff}.ant-pagination-prev .ant-pagination-item-link,.ant-pagination-next .ant-pagination-item-link{display:block;width:100%;height:100%;padding:0;font-size:12px;text-align:center;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;outline:none;transition:all .3s}.ant-pagination-prev:focus-visible .ant-pagination-item-link,.ant-pagination-next:focus-visible .ant-pagination-item-link{color:#1890ff;border-color:#1890ff}.ant-pagination-prev:hover .ant-pagination-item-link,.ant-pagination-next:hover .ant-pagination-item-link{color:#1890ff;border-color:#1890ff}.ant-pagination-disabled,.ant-pagination-disabled:hover{cursor:not-allowed}.ant-pagination-disabled .ant-pagination-item-link,.ant-pagination-disabled:hover .ant-pagination-item-link{color:#00000040;border-color:#d9d9d9;cursor:not-allowed}.ant-pagination-disabled:focus-visible{cursor:not-allowed}.ant-pagination-disabled:focus-visible .ant-pagination-item-link{color:#00000040;border-color:#d9d9d9;cursor:not-allowed}.ant-pagination-slash{margin:0 10px 0 5px}.ant-pagination-options{display:inline-block;margin-left:16px;vertical-align:middle}@media all and (-ms-high-contrast: none){.ant-pagination-options *::-ms-backdrop,.ant-pagination-options{vertical-align:top}}.ant-pagination-options-size-changer.ant-select{display:inline-block;width:auto}.ant-pagination-options-quick-jumper{display:inline-block;height:32px;margin-left:8px;line-height:32px;vertical-align:top}.ant-pagination-options-quick-jumper input{position:relative;display:inline-block;width:100%;min-width:0;padding:4px 11px;color:#000000d9;font-size:14px;line-height:1.5715;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s;width:50px;height:32px;margin:0 8px}.ant-pagination-options-quick-jumper input::-moz-placeholder{color:#bfbfbf;-moz-user-select:none;user-select:none}.ant-pagination-options-quick-jumper input:-ms-input-placeholder{color:#bfbfbf;-ms-user-select:none;user-select:none}.ant-pagination-options-quick-jumper input::placeholder{color:#bfbfbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-pagination-options-quick-jumper input:-moz-placeholder{text-overflow:ellipsis}.ant-pagination-options-quick-jumper input:-ms-input-placeholder{text-overflow:ellipsis}.ant-pagination-options-quick-jumper input:placeholder-shown{text-overflow:ellipsis}.ant-pagination-options-quick-jumper input:hover{border-color:#40a9ff;border-right-width:1px}.ant-pagination-options-quick-jumper input:focus,.ant-pagination-options-quick-jumper input-focused{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33;border-right-width:1px;outline:0}.ant-pagination-options-quick-jumper input-disabled{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-pagination-options-quick-jumper input-disabled:hover{border-color:#d9d9d9;border-right-width:1px}.ant-pagination-options-quick-jumper input[disabled]{color:#00000040;background-color:#f5f5f5;border-color:#d9d9d9;box-shadow:none;cursor:not-allowed;opacity:1}.ant-pagination-options-quick-jumper input[disabled]:hover{border-color:#d9d9d9;border-right-width:1px}.ant-pagination-options-quick-jumper input-borderless,.ant-pagination-options-quick-jumper input-borderless:hover,.ant-pagination-options-quick-jumper input-borderless:focus,.ant-pagination-options-quick-jumper input-borderless-focused,.ant-pagination-options-quick-jumper input-borderless-disabled,.ant-pagination-options-quick-jumper input-borderless[disabled]{background-color:transparent;border:none;box-shadow:none}textarea.ant-pagination-options-quick-jumper input{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-pagination-options-quick-jumper input-lg{padding:6.5px 11px;font-size:16px}.ant-pagination-options-quick-jumper input-sm{padding:0 7px}.ant-pagination-simple .ant-pagination-prev,.ant-pagination-simple .ant-pagination-next{height:24px;line-height:24px;vertical-align:top}.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link,.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link{height:24px;background-color:transparent;border:0}.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link:after,.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link:after{height:24px;line-height:24px}.ant-pagination-simple .ant-pagination-simple-pager{display:inline-block;height:24px;margin-right:8px}.ant-pagination-simple .ant-pagination-simple-pager input{box-sizing:border-box;height:100%;margin-right:8px;padding:0 6px;text-align:center;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;outline:none;transition:border-color .3s}.ant-pagination-simple .ant-pagination-simple-pager input:hover{border-color:#1890ff}.ant-pagination-simple .ant-pagination-simple-pager input:focus{border-color:#40a9ff;box-shadow:0 0 0 2px #1890ff33}.ant-pagination-simple .ant-pagination-simple-pager input[disabled]{color:#00000040;background:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}.ant-pagination.ant-pagination-mini .ant-pagination-total-text,.ant-pagination.ant-pagination-mini .ant-pagination-simple-pager{height:24px;line-height:24px}.ant-pagination.ant-pagination-mini .ant-pagination-item{min-width:24px;height:24px;margin:0;line-height:22px}.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active){background:transparent;border-color:transparent}.ant-pagination.ant-pagination-mini .ant-pagination-prev,.ant-pagination.ant-pagination-mini .ant-pagination-next{min-width:24px;height:24px;margin:0;line-height:24px}.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link,.ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link{background:transparent;border-color:transparent}.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link:after,.ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link:after{height:24px;line-height:24px}.ant-pagination.ant-pagination-mini .ant-pagination-jump-prev,.ant-pagination.ant-pagination-mini .ant-pagination-jump-next{height:24px;margin-right:0;line-height:24px}.ant-pagination.ant-pagination-mini .ant-pagination-options{margin-left:2px}.ant-pagination.ant-pagination-mini .ant-pagination-options-size-changer{top:0}.ant-pagination.ant-pagination-mini .ant-pagination-options-quick-jumper{height:24px;line-height:24px}.ant-pagination.ant-pagination-mini .ant-pagination-options-quick-jumper input{padding:0 7px;width:44px;height:24px}.ant-pagination.ant-pagination-disabled{cursor:not-allowed}.ant-pagination.ant-pagination-disabled .ant-pagination-item{background:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}.ant-pagination.ant-pagination-disabled .ant-pagination-item a{color:#00000040;background:transparent;border:none;cursor:not-allowed}.ant-pagination.ant-pagination-disabled .ant-pagination-item-active{background:#e6e6e6}.ant-pagination.ant-pagination-disabled .ant-pagination-item-active a{color:#00000040}.ant-pagination.ant-pagination-disabled .ant-pagination-item-link{color:#00000040;background:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}.ant-pagination-simple.ant-pagination.ant-pagination-disabled .ant-pagination-item-link{background:transparent}.ant-pagination.ant-pagination-disabled .ant-pagination-item-link-icon{opacity:0}.ant-pagination.ant-pagination-disabled .ant-pagination-item-ellipsis{opacity:1}.ant-pagination.ant-pagination-disabled .ant-pagination-simple-pager{color:#00000040}@media only screen and (max-width: 992px){.ant-pagination-item-after-jump-prev,.ant-pagination-item-before-jump-next{display:none}}@media only screen and (max-width: 576px){.ant-pagination-options{display:none}}.ant-pagination-rtl .ant-pagination-total-text,.ant-pagination-rtl .ant-pagination-item,.ant-pagination-rtl .ant-pagination-prev,.ant-pagination-rtl .ant-pagination-jump-prev,.ant-pagination-rtl .ant-pagination-jump-next{margin-right:0;margin-left:8px}.ant-pagination-rtl .ant-pagination-slash{margin:0 5px 0 10px}.ant-pagination-rtl .ant-pagination-options{margin-right:16px;margin-left:0}.ant-pagination-rtl .ant-pagination-options .ant-pagination-options-size-changer.ant-select{margin-right:0;margin-left:8px}.ant-pagination-rtl .ant-pagination-options .ant-pagination-options-quick-jumper{margin-left:0}.ant-pagination-rtl.ant-pagination-simple .ant-pagination-simple-pager,.ant-pagination-rtl.ant-pagination-simple .ant-pagination-simple-pager input{margin-right:0;margin-left:8px}.ant-pagination-rtl.ant-pagination.mini .ant-pagination-options{margin-right:2px;margin-left:0}@keyframes antCheckboxEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}@keyframes ant-tree-node-fx-do-not-use{0%{opacity:0}to{opacity:1}}.ant-tree.ant-tree-directory .ant-tree-treenode{position:relative}.ant-tree.ant-tree-directory .ant-tree-treenode:before{position:absolute;top:0;right:0;bottom:4px;left:0;transition:background-color .3s;content:"";pointer-events:none}.ant-tree.ant-tree-directory .ant-tree-treenode:hover:before{background:#f5f5f5}.ant-tree.ant-tree-directory .ant-tree-treenode>*{z-index:1}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-switcher{transition:color .3s}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper{border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper:hover{background:transparent}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper.ant-tree-node-selected{color:#fff;background:transparent}.ant-tree.ant-tree-directory .ant-tree-treenode-selected:hover:before,.ant-tree.ant-tree-directory .ant-tree-treenode-selected:before{background:#1890ff}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-switcher{color:#fff}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-node-content-wrapper{color:#fff;background:transparent}.ant-tree-checkbox{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum","tnum";position:relative;top:.2em;line-height:1;white-space:nowrap;outline:none;cursor:pointer}.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner,.ant-tree-checkbox:hover .ant-tree-checkbox-inner,.ant-tree-checkbox-input:focus+.ant-tree-checkbox-inner{border-color:#1890ff}.ant-tree-checkbox-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:2px;visibility:hidden;animation:antCheckboxEffect .36s ease-in-out;animation-fill-mode:backwards;content:""}.ant-tree-checkbox:hover:after,.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox:after{visibility:visible}.ant-tree-checkbox-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;direction:ltr;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;border-collapse:separate;transition:all .3s}.ant-tree-checkbox-inner:after{position:absolute;top:50%;left:21.5%;display:table;width:5.71428571px;height:9.14285714px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;content:" "}.ant-tree-checkbox-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;cursor:pointer;opacity:0}.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{position:absolute;display:table;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1) translate(-50%,-50%);opacity:1;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;content:" "}.ant-tree-checkbox-checked .ant-tree-checkbox-inner{background-color:#1890ff;border-color:#1890ff}.ant-tree-checkbox-disabled{cursor:not-allowed}.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{border-color:#00000040;animation-name:none}.ant-tree-checkbox-disabled .ant-tree-checkbox-input{cursor:not-allowed;pointer-events:none}.ant-tree-checkbox-disabled .ant-tree-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9!important}.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after{border-color:#f5f5f5;border-collapse:separate;animation-name:none}.ant-tree-checkbox-disabled+span{color:#00000040;cursor:not-allowed}.ant-tree-checkbox-disabled:hover:after,.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-disabled:after{visibility:hidden}.ant-tree-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-flex;align-items:baseline;line-height:unset;cursor:pointer}.ant-tree-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:" "}.ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-disabled{cursor:not-allowed}.ant-tree-checkbox-wrapper+.ant-tree-checkbox-wrapper{margin-left:8px}.ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-in-form-item input[type=checkbox]{width:14px;height:14px}.ant-tree-checkbox+span{padding-right:8px;padding-left:8px}.ant-tree-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:inline-block}.ant-tree-checkbox-group-item{margin-right:8px}.ant-tree-checkbox-group-item:last-child{margin-right:0}.ant-tree-checkbox-group-item+.ant-tree-checkbox-group-item{margin-left:0}.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner{background-color:#fff;border-color:#d9d9d9}.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after{top:50%;left:50%;width:8px;height:8px;background-color:#1890ff;border:0;transform:translate(-50%,-50%) scale(1);opacity:1;content:" "}.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after{background-color:#00000040;border-color:#00000040}.ant-tree{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";background:#fff;border-radius:2px;transition:background-color .3s}.ant-tree-focused:not(:hover):not(.ant-tree-active-focused){background:#e6f7ff}.ant-tree-list-holder-inner{align-items:flex-start}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner{align-items:stretch}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-node-content-wrapper{flex:auto}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-treenode.dragging{position:relative}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-treenode.dragging:after{position:absolute;top:0;right:0;bottom:4px;left:0;border:1px solid #1890ff;opacity:0;animation:ant-tree-node-fx-do-not-use .3s;animation-play-state:running;animation-fill-mode:forwards;content:"";pointer-events:none}.ant-tree .ant-tree-treenode{display:flex;align-items:flex-start;padding:0 0 4px;outline:none}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper{color:#00000040;cursor:not-allowed}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper:hover{background:transparent}.ant-tree .ant-tree-treenode-active .ant-tree-node-content-wrapper{background:#f5f5f5}.ant-tree .ant-tree-treenode:not(.ant-tree .ant-tree-treenode-disabled).filter-node .ant-tree-title{color:inherit;font-weight:500}.ant-tree .ant-tree-treenode-draggable .ant-tree-draggable-icon{width:24px;line-height:24px;text-align:center;visibility:visible;opacity:.2;transition:opacity .3s}.ant-tree-treenode:hover .ant-tree .ant-tree-treenode-draggable .ant-tree-draggable-icon{opacity:.45}.ant-tree .ant-tree-treenode-draggable.ant-tree-treenode-disabled .ant-tree-draggable-icon{visibility:hidden}.ant-tree-indent{align-self:stretch;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-indent-unit{display:inline-block;width:24px}.ant-tree-draggable-icon{visibility:hidden}.ant-tree-switcher{position:relative;flex:none;align-self:stretch;width:24px;margin:0;line-height:24px;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-switcher .ant-tree-switcher-icon,.ant-tree-switcher .ant-select-tree-switcher-icon{display:inline-block;font-size:10px;vertical-align:baseline}.ant-tree-switcher .ant-tree-switcher-icon svg,.ant-tree-switcher .ant-select-tree-switcher-icon svg{transition:transform .3s}.ant-tree-switcher-noop{cursor:default}.ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(-90deg)}.ant-tree-switcher-loading-icon{color:#1890ff}.ant-tree-switcher-leaf-line{position:relative;z-index:1;display:inline-block;width:100%;height:100%}.ant-tree-switcher-leaf-line:before{position:absolute;top:0;right:12px;bottom:-4px;margin-left:-1px;border-right:1px solid #d9d9d9;content:" "}.ant-tree-switcher-leaf-line:after{position:absolute;width:10px;height:14px;border-bottom:1px solid #d9d9d9;content:" "}.ant-tree-checkbox{top:initial;margin:4px 8px 0 0}.ant-tree .ant-tree-node-content-wrapper{position:relative;z-index:auto;min-height:24px;margin:0;padding:0 4px;color:inherit;line-height:24px;background:transparent;border-radius:2px;cursor:pointer;transition:all .3s,border 0s,line-height 0s,box-shadow 0s}.ant-tree .ant-tree-node-content-wrapper:hover{background-color:#f5f5f5}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:#bae7ff}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle{display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;vertical-align:top}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle:empty{display:none}.ant-tree-unselectable .ant-tree-node-content-wrapper:hover{background-color:transparent}.ant-tree-node-content-wrapper{line-height:24px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-node-content-wrapper .ant-tree-drop-indicator{position:absolute;z-index:1;height:2px;background-color:#1890ff;border-radius:1px;pointer-events:none}.ant-tree-node-content-wrapper .ant-tree-drop-indicator:after{position:absolute;top:-3px;left:-6px;width:8px;height:8px;background-color:transparent;border:2px solid #1890ff;border-radius:50%;content:""}.ant-tree .ant-tree-treenode.drop-container>[draggable]{box-shadow:0 0 0 2px #1890ff}.ant-tree-show-line .ant-tree-indent-unit{position:relative;height:100%}.ant-tree-show-line .ant-tree-indent-unit:before{position:absolute;top:0;right:12px;bottom:-4px;border-right:1px solid #d9d9d9;content:""}.ant-tree-show-line .ant-tree-indent-unit-end:before{display:none}.ant-tree-show-line .ant-tree-switcher{background:#fff}.ant-tree-show-line .ant-tree-switcher-line-icon{vertical-align:-.15em}.ant-tree .ant-tree-treenode-leaf-last .ant-tree-switcher-leaf-line:before{top:auto!important;bottom:auto!important;height:14px!important}.ant-tree-rtl{direction:rtl}.ant-tree-rtl .ant-tree-node-content-wrapper[draggable=true] .ant-tree-drop-indicator:after{right:-6px;left:unset}.ant-tree .ant-tree-treenode-rtl{direction:rtl}.ant-tree-rtl .ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(90deg)}.ant-tree-rtl.ant-tree-show-line .ant-tree-indent-unit:before{right:auto;left:-13px;border-right:none;border-left:1px solid #d9d9d9}.ant-tree-rtl .ant-tree-checkbox,.ant-tree-select-dropdown-rtl .ant-select-tree-checkbox{margin:4px 0 0 8px}.ant-tabs-small>.ant-tabs-nav .ant-tabs-tab{padding:8px 0;font-size:14px}.ant-tabs-large>.ant-tabs-nav .ant-tabs-tab{padding:16px 0;font-size:16px}.ant-tabs-card.ant-tabs-small>.ant-tabs-nav .ant-tabs-tab{padding:6px 16px}.ant-tabs-card.ant-tabs-large>.ant-tabs-nav .ant-tabs-tab{padding:7px 16px 6px}.ant-tabs-rtl{direction:rtl}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab{margin:0 0 0 32px}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab:last-of-type{margin-left:0}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .anticon{margin-right:0;margin-left:12px}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove{margin-right:8px;margin-left:-4px}.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove .anticon{margin:0}.ant-tabs-rtl.ant-tabs-left>.ant-tabs-nav{order:1}.ant-tabs-rtl.ant-tabs-left>.ant-tabs-content-holder{order:0}.ant-tabs-rtl.ant-tabs-right>.ant-tabs-nav{order:0}.ant-tabs-rtl.ant-tabs-right>.ant-tabs-content-holder{order:1}.ant-tabs-rtl.ant-tabs-card.ant-tabs-top>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-right:2px;margin-left:0}.ant-tabs-rtl.ant-tabs-card.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-add,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-add,.ant-tabs-rtl.ant-tabs-card.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-add,.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-add{margin-right:2px;margin-left:0}.ant-tabs-dropdown-rtl{direction:rtl}.ant-tabs-dropdown-rtl .ant-tabs-dropdown-menu-item{text-align:right}.ant-tabs-top,.ant-tabs-bottom{flex-direction:column}.ant-tabs-top>.ant-tabs-nav,.ant-tabs-bottom>.ant-tabs-nav,.ant-tabs-top>div>.ant-tabs-nav,.ant-tabs-bottom>div>.ant-tabs-nav{margin:0 0 16px}.ant-tabs-top>.ant-tabs-nav:before,.ant-tabs-bottom>.ant-tabs-nav:before,.ant-tabs-top>div>.ant-tabs-nav:before,.ant-tabs-bottom>div>.ant-tabs-nav:before{position:absolute;right:0;left:0;border-bottom:1px solid #f0f0f0;content:""}.ant-tabs-top>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-ink-bar{height:2px}.ant-tabs-top>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-ink-bar-animated{transition:width .3s,left .3s,right .3s}.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{top:0;bottom:0;width:30px}.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap:before{left:0;box-shadow:inset 10px 0 8px -8px #00000014}.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{right:0;box-shadow:inset -10px 0 8px -8px #00000014}.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left:before,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left:before,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left:before,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left:before{opacity:1}.ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right:after,.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right:after,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right:after,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right:after{opacity:1}.ant-tabs-top>.ant-tabs-nav:before,.ant-tabs-top>div>.ant-tabs-nav:before{bottom:0}.ant-tabs-top>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-ink-bar{bottom:0}.ant-tabs-bottom>.ant-tabs-nav,.ant-tabs-bottom>div>.ant-tabs-nav{order:1;margin-top:16px;margin-bottom:0}.ant-tabs-bottom>.ant-tabs-nav:before,.ant-tabs-bottom>div>.ant-tabs-nav:before{top:0}.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-ink-bar{top:0}.ant-tabs-bottom>.ant-tabs-content-holder,.ant-tabs-bottom>div>.ant-tabs-content-holder{order:0}.ant-tabs-left>.ant-tabs-nav,.ant-tabs-right>.ant-tabs-nav,.ant-tabs-left>div>.ant-tabs-nav,.ant-tabs-right>div>.ant-tabs-nav{flex-direction:column;min-width:50px}.ant-tabs-left>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-right>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-tab{padding:8px 24px;text-align:center}.ant-tabs-left>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-right>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin:16px 0 0}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap{flex-direction:column}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{right:0;left:0;height:30px}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap:before{top:0;box-shadow:inset 0 10px 8px -8px #00000014}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{bottom:0;box-shadow:inset 0 -10px 8px -8px #00000014}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top:before,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top:before,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top:before,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top:before{opacity:1}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom:after,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom:after,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom:after,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom:after{opacity:1}.ant-tabs-left>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-ink-bar{width:2px}.ant-tabs-left>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-right>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-ink-bar-animated,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-ink-bar-animated{transition:height .3s,top .3s}.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-nav-operations{flex:1 0 auto;flex-direction:column}.ant-tabs-left>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-ink-bar{right:0}.ant-tabs-left>.ant-tabs-content-holder,.ant-tabs-left>div>.ant-tabs-content-holder{margin-left:-1px;border-left:1px solid #f0f0f0}.ant-tabs-left>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane,.ant-tabs-left>div>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane{padding-left:24px}.ant-tabs-right>.ant-tabs-nav,.ant-tabs-right>div>.ant-tabs-nav{order:1}.ant-tabs-right>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-ink-bar{left:0}.ant-tabs-right>.ant-tabs-content-holder,.ant-tabs-right>div>.ant-tabs-content-holder{order:0;margin-right:-1px;border-right:1px solid #f0f0f0}.ant-tabs-right>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane,.ant-tabs-right>div>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane{padding-right:24px}.ant-tabs-dropdown{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:absolute;top:-9999px;left:-9999px;z-index:1050;display:block}.ant-tabs-dropdown-hidden{display:none}.ant-tabs-dropdown-menu{max-height:200px;margin:0;padding:4px 0;overflow-x:hidden;overflow-y:auto;text-align:left;list-style-type:none;background-color:#fff;background-clip:padding-box;border-radius:2px;outline:none;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d}.ant-tabs-dropdown-menu-item{display:flex;align-items:center;min-width:120px;margin:0;padding:5px 12px;overflow:hidden;color:#000000d9;font-weight:400;font-size:14px;line-height:22px;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;transition:all .3s}.ant-tabs-dropdown-menu-item>span{flex:1;white-space:nowrap}.ant-tabs-dropdown-menu-item-remove{flex:none;margin-left:12px;color:#00000073;font-size:12px;background:transparent;border:0;cursor:pointer}.ant-tabs-dropdown-menu-item-remove:hover{color:#40a9ff}.ant-tabs-dropdown-menu-item:hover{background:#f5f5f5}.ant-tabs-dropdown-menu-item-disabled,.ant-tabs-dropdown-menu-item-disabled:hover{color:#00000040;background:transparent;cursor:not-allowed}.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab{margin:0;padding:8px 16px;background:#fafafa;border:1px solid #f0f0f0;transition:all .3s cubic-bezier(.645,.045,.355,1)}.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab-active{color:#1890ff;background:#fff}.ant-tabs-card>.ant-tabs-nav .ant-tabs-ink-bar,.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-ink-bar{visibility:hidden}.ant-tabs-card.ant-tabs-top>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-left:2px}.ant-tabs-card.ant-tabs-top>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-tab{border-radius:2px 2px 0 0}.ant-tabs-card.ant-tabs-top>.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-top>div>.ant-tabs-nav .ant-tabs-tab-active{border-bottom-color:#fff}.ant-tabs-card.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-tab{border-radius:0 0 2px 2px}.ant-tabs-card.ant-tabs-bottom>.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-bottom>div>.ant-tabs-nav .ant-tabs-tab-active{border-top-color:#fff}.ant-tabs-card.ant-tabs-left>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-right>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab,.ant-tabs-card.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-top:2px}.ant-tabs-card.ant-tabs-left>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-tab{border-radius:2px 0 0 2px}.ant-tabs-card.ant-tabs-left>.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-left>div>.ant-tabs-nav .ant-tabs-tab-active{border-right-color:#fff}.ant-tabs-card.ant-tabs-right>.ant-tabs-nav .ant-tabs-tab,.ant-tabs-card.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-tab{border-radius:0 2px 2px 0}.ant-tabs-card.ant-tabs-right>.ant-tabs-nav .ant-tabs-tab-active,.ant-tabs-card.ant-tabs-right>div>.ant-tabs-nav .ant-tabs-tab-active{border-left-color:#fff}.ant-tabs{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:flex}.ant-tabs>.ant-tabs-nav,.ant-tabs>div>.ant-tabs-nav{position:relative;display:flex;flex:none;align-items:center}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-wrap,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-wrap{position:relative;display:inline-block;display:flex;flex:auto;align-self:stretch;overflow:hidden;white-space:nowrap;transform:translate(0)}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.ant-tabs>.ant-tabs-nav .ant-tabs-nav-wrap:after,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{position:absolute;z-index:1;opacity:0;transition:opacity .3s;content:"";pointer-events:none}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-list,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-list{position:relative;display:flex;transition:transform .3s}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-operations,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-operations{display:flex;align-self:stretch}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-operations-hidden,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-operations-hidden{position:absolute;visibility:hidden;pointer-events:none}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-more,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-more{position:relative;padding:8px 16px;background:transparent;border:0}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-more:after,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-more:after{position:absolute;right:0;bottom:0;left:0;height:5px;transform:translateY(100%);content:""}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-add,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-add{min-width:40px;margin-left:2px;padding:0 8px;background:#fafafa;border:1px solid #f0f0f0;border-radius:2px 2px 0 0;outline:none;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1)}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-add:hover,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-add:hover{color:#40a9ff}.ant-tabs>.ant-tabs-nav .ant-tabs-nav-add:active,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-add:active,.ant-tabs>.ant-tabs-nav .ant-tabs-nav-add:focus,.ant-tabs>div>.ant-tabs-nav .ant-tabs-nav-add:focus{color:#096dd9}.ant-tabs-extra-content{flex:none}.ant-tabs-centered>.ant-tabs-nav .ant-tabs-nav-wrap:not([class*=ant-tabs-nav-wrap-ping]),.ant-tabs-centered>div>.ant-tabs-nav .ant-tabs-nav-wrap:not([class*=ant-tabs-nav-wrap-ping]){justify-content:center}.ant-tabs-ink-bar{position:absolute;background:#1890ff;pointer-events:none}.ant-tabs-tab{position:relative;display:inline-flex;align-items:center;padding:12px 0;font-size:14px;background:transparent;border:0;outline:none;cursor:pointer}.ant-tabs-tab-btn:focus,.ant-tabs-tab-remove:focus,.ant-tabs-tab-btn:active,.ant-tabs-tab-remove:active{color:#096dd9}.ant-tabs-tab-btn{outline:none;transition:all .3s}.ant-tabs-tab-remove{flex:none;margin-right:-4px;margin-left:8px;color:#00000073;font-size:12px;background:transparent;border:none;outline:none;cursor:pointer;transition:all .3s}.ant-tabs-tab-remove:hover{color:#000000d9}.ant-tabs-tab:hover{color:#40a9ff}.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff;text-shadow:0 0 .25px currentcolor}.ant-tabs-tab.ant-tabs-tab-disabled{color:#00000040;cursor:not-allowed}.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:focus,.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-remove:focus,.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-btn:active,.ant-tabs-tab.ant-tabs-tab-disabled .ant-tabs-tab-remove:active{color:#00000040}.ant-tabs-tab .ant-tabs-tab-remove .anticon{margin:0}.ant-tabs-tab .anticon{margin-right:12px}.ant-tabs-tab+.ant-tabs-tab{margin:0 0 0 32px}.ant-tabs-content{position:relative;width:100%}.ant-tabs-content-holder{flex:auto;min-width:0;min-height:0}.ant-tabs-tabpane{outline:none}.ant-tabs-tabpane-hidden{display:none}.ant-tabs-switch-appear,.ant-tabs-switch-enter{transition:none}.ant-tabs-switch-appear-start,.ant-tabs-switch-enter-start{opacity:0}.ant-tabs-switch-appear-active,.ant-tabs-switch-enter-active{opacity:1;transition:opacity .3s}.ant-tabs-switch-leave{position:absolute;transition:none;top:0;right:0;bottom:0;left:0}.ant-tabs-switch-leave-start{opacity:1}.ant-tabs-switch-leave-active{opacity:0;transition:opacity .3s}.ant-pro-card-tabs .ant-tabs-top>.ant-tabs-nav{margin-bottom:0}.ant-pro-card-tabs .ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-list{margin-top:8px;padding-left:16px}.ant-pro-card-tabs .ant-tabs-bottom>.ant-tabs-nav{margin-top:0}.ant-pro-card-tabs .ant-tabs-bottom>.ant-tabs-nav .ant-tabs-nav-list{padding-left:16px}.ant-pro-card-tabs .ant-tabs-left .ant-tabs-content-holder .ant-tabs-content .ant-tabs-tabpane{padding-left:0}.ant-pro-card-tabs .ant-tabs-left>.ant-tabs-nav{margin-right:0}.ant-pro-card-tabs .ant-tabs-left>.ant-tabs-nav .ant-tabs-nav-list{padding-top:16px}.ant-pro-card-tabs .ant-tabs-right .ant-tabs-content-holder .ant-tabs-content .ant-tabs-tabpane{padding-right:0}.ant-pro-card-tabs .ant-tabs-right>.ant-tabs-nav .ant-tabs-nav-list{padding-top:16px}.ant-pro-card-actions{margin:0;padding:0;list-style:none;background:#fff;border-top:1px solid #f0f0f0}.ant-pro-card-actions:before{display:table;content:""}.ant-pro-card-actions:after{display:table;clear:both;content:""}.ant-pro-card-actions .ant-space{gap:0!important;width:100%}.ant-pro-card-actions>li,.ant-pro-card-actions .ant-space-item{-webkit-box-flex:1;-ms-flex:1;flex:1;float:left;margin:12px 0;color:#00000073;text-align:center}.ant-pro-card-actions>li>a,.ant-pro-card-actions .ant-space-item>a{color:#00000073;-webkit-transition:color .3s;transition:color .3s}.ant-pro-card-actions>li>a:hover,.ant-pro-card-actions .ant-space-item>a:hover{color:#40a9ff}.ant-pro-card-actions>li>span,.ant-pro-card-actions .ant-space-item>span{position:relative;display:block;min-width:32px;font-size:14px;line-height:1.5715;cursor:pointer}.ant-pro-card-actions>li>span:hover,.ant-pro-card-actions .ant-space-item>span:hover{color:#40a9ff;-webkit-transition:color .3s;transition:color .3s}.ant-pro-card-actions>li>span a:not(.ant-btn),.ant-pro-card-actions .ant-space-item>span a:not(.ant-btn),.ant-pro-card-actions>li>span>.anticon,.ant-pro-card-actions .ant-space-item>span>.anticon{display:inline-block;width:100%;color:#00000073;line-height:22px;-webkit-transition:color .3s;transition:color .3s}.ant-pro-card-actions>li>span a:not(.ant-btn):hover,.ant-pro-card-actions .ant-space-item>span a:not(.ant-btn):hover,.ant-pro-card-actions>li>span>.anticon:hover,.ant-pro-card-actions .ant-space-item>span>.anticon:hover{color:#40a9ff}.ant-pro-card-actions>li>span>.anticon,.ant-pro-card-actions .ant-space-item>span>.anticon{font-size:16px;line-height:22px}.ant-pro-card-actions>li:not(:last-child),.ant-pro-card-actions .ant-space-item:not(:last-child){border-right:1px solid #f0f0f0}.ant-pro-card-loading{overflow:hidden}.ant-pro-card-loading .ant-pro-card-body{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-pro-card-loading-content{width:100%}.ant-pro-card-loading-content p{margin:0}.ant-pro-card-loading-block{height:14px;margin:4px 0;background:-webkit-gradient(linear,left top,right top,from(rgba(207,216,220,.2)),color-stop(rgba(207,216,220,.4)),to(rgba(207,216,220,.2)));background:linear-gradient(90deg,rgba(207,216,220,.2),rgba(207,216,220,.4),rgba(207,216,220,.2));background-size:600% 600%;border-radius:2px;-webkit-animation:card-loading 1.4s ease infinite;animation:card-loading 1.4s ease infinite}@-webkit-keyframes card-loading{0%,to{background-position:0 50%}50%{background-position:100% 50%}}@keyframes card-loading{0%,to{background-position:0 50%}50%{background-position:100% 50%}}.ant-pro-card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0;padding:0;background-color:#fff;border-radius:2px}.ant-pro-card-col{width:100%}.ant-pro-card-border{border:1px solid #f0f0f0}.ant-pro-card-hoverable{cursor:pointer;-webkit-transition:border-color .3s,-webkit-box-shadow .3s;transition:border-color .3s,-webkit-box-shadow .3s;transition:box-shadow .3s,border-color .3s;transition:box-shadow .3s,border-color .3s,-webkit-box-shadow .3s}.ant-pro-card-hoverable:hover{border-color:transparent;-webkit-box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09);box-shadow:0 1px 2px -2px #00000029,0 3px 6px #0000001f,0 5px 12px 4px #00000017}.ant-pro-card-hoverable.ant-pro-card-checked:hover{border-color:#1890ff}.ant-pro-card-checked{background-color:#e6f7ff;border-color:#1890ff}.ant-pro-card-checked:after{position:absolute;top:2px;right:2px;width:0;height:0;border:6px solid #1890ff;border-bottom:6px solid transparent;border-left:6px solid transparent;border-top-right-radius:2px;content:""}.ant-pro-card:focus{background-color:#e6f7ff;border-color:#1890ff}.ant-pro-card-size-small .ant-pro-card-header{padding:8px 12px 0}.ant-pro-card-size-small .ant-pro-card-header-border{padding-bottom:8px}.ant-pro-card-size-small .ant-pro-card-title{font-size:14px}.ant-pro-card-size-small .ant-pro-card-body{padding:12px}.ant-pro-card-ghost{background-color:transparent}.ant-pro-card-ghost>.ant-pro-card-header{padding-right:0;padding-bottom:16px;padding-left:0}.ant-pro-card-ghost>.ant-pro-card-body{padding:0;background-color:transparent}.ant-pro-card-split>.ant-pro-card-body{padding:0}.ant-pro-card-split-vertical{border-right:1px solid #f0f0f0}.ant-pro-card-split-horizontal{border-bottom:1px solid #f0f0f0}.ant-pro-card-contain-card>.ant-pro-card-body{display:-webkit-box;display:-ms-flexbox;display:flex}.ant-pro-card-body-direction-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ant-pro-card-body-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.ant-pro-card-collapse>.ant-pro-card-header{padding-bottom:16px;border-bottom:0}.ant-pro-card-collapse>.ant-pro-card-body{display:none}.ant-pro-card-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 24px 0}.ant-pro-card-header-border{padding-bottom:16px;border-bottom:1px solid #f0f0f0}.ant-pro-card-header-collapsible{cursor:pointer}.ant-pro-card-title{color:#000000d9;font-weight:500;font-size:16px}.ant-pro-card-extra{color:#000000d9}.ant-pro-card-type-inner .ant-pro-card-header{background-color:#fafafa}.ant-pro-card-collapsible-icon{margin-right:8px;color:#000000bf}.ant-pro-card-collapsible-icon :hover{color:#40a9ff}.ant-pro-card-collapsible-icon svg{-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.ant-pro-card-body{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;padding:24px}.ant-pro-card-body-center{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ant-pro-card-col-0{display:none}.ant-pro-card-col-24{-ms-flex-negative:0;flex-shrink:0;width:100%}.ant-pro-card-col-23{-ms-flex-negative:0;flex-shrink:0;width:95.83333333%}.ant-pro-card-col-22{-ms-flex-negative:0;flex-shrink:0;width:91.66666667%}.ant-pro-card-col-21{-ms-flex-negative:0;flex-shrink:0;width:87.5%}.ant-pro-card-col-20{-ms-flex-negative:0;flex-shrink:0;width:83.33333333%}.ant-pro-card-col-19{-ms-flex-negative:0;flex-shrink:0;width:79.16666667%}.ant-pro-card-col-18{-ms-flex-negative:0;flex-shrink:0;width:75%}.ant-pro-card-col-17{-ms-flex-negative:0;flex-shrink:0;width:70.83333333%}.ant-pro-card-col-16{-ms-flex-negative:0;flex-shrink:0;width:66.66666667%}.ant-pro-card-col-15{-ms-flex-negative:0;flex-shrink:0;width:62.5%}.ant-pro-card-col-14{-ms-flex-negative:0;flex-shrink:0;width:58.33333333%}.ant-pro-card-col-13{-ms-flex-negative:0;flex-shrink:0;width:54.16666667%}.ant-pro-card-col-12{-ms-flex-negative:0;flex-shrink:0;width:50%}.ant-pro-card-col-11{-ms-flex-negative:0;flex-shrink:0;width:45.83333333%}.ant-pro-card-col-10{-ms-flex-negative:0;flex-shrink:0;width:41.66666667%}.ant-pro-card-col-9{-ms-flex-negative:0;flex-shrink:0;width:37.5%}.ant-pro-card-col-8{-ms-flex-negative:0;flex-shrink:0;width:33.33333333%}.ant-pro-card-col-7{-ms-flex-negative:0;flex-shrink:0;width:29.16666667%}.ant-pro-card-col-6{-ms-flex-negative:0;flex-shrink:0;width:25%}.ant-pro-card-col-5{-ms-flex-negative:0;flex-shrink:0;width:20.83333333%}.ant-pro-card-col-4{-ms-flex-negative:0;flex-shrink:0;width:16.66666667%}.ant-pro-card-col-3{-ms-flex-negative:0;flex-shrink:0;width:12.5%}.ant-pro-card-col-2{-ms-flex-negative:0;flex-shrink:0;width:8.33333333%}.ant-pro-card-col-1{-ms-flex-negative:0;flex-shrink:0;width:4.16666667%}.ant-pro-card-divider{-webkit-box-flex:0;-ms-flex:none;flex:none;width:1px;margin:24px 8px;background-color:#f0f0f0}.ant-pro-card-divider-horizontal{width:initial;height:1px;margin:8px 24px}.ant-pro-card-size-small .ant-pro-card-divider{margin:12px 8px}.ant-pro-card-size-small .ant-pro-card-divider-horizontal{margin:8px 12px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field{max-width:100%}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-xs{width:104px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-s{width:216px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-sm{width:216px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-m{width:328px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-md{width:328px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-l{width:440px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-lg{width:440px}.ant-form>div:not(.ant-pro-form-light-filter) .pro-field-xl{width:552px}.ant-pro-core-dropdown-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 16px 16px 8px;border-top:1px solid #f0f0f0}.ant-pro-core-field-label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:4px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:30px;padding:0 4px;font-size:14px;line-height:30px;border-radius:2px;cursor:pointer}.ant-pro-core-field-label:hover{background-color:#0000001a}.ant-pro-core-field-label-active{padding:0 12px;background-color:#0000000a}.ant-pro-core-field-label-active.ant-pro-core-field-label-allow-clear:hover:not(.ant-pro-core-field-label-disabled) .ant-pro-core-field-label-arrow{display:none}.ant-pro-core-field-label-active.ant-pro-core-field-label-allow-clear:hover:not(.ant-pro-core-field-label-disabled) .ant-pro-core-field-label-close{display:inline-block}.ant-pro-core-field-label-icon{height:12px;padding:1px;color:#00000073;font-size:12px;vertical-align:middle}.ant-pro-core-field-label-icon.ant-pro-core-field-label-close{display:none;height:14px;padding:3px;color:#fff;font-size:8px;background-color:#00000040;border-radius:50%}.ant-pro-core-field-label-icon.ant-pro-core-field-label-close:hover{background-color:#00000073}.ant-pro-core-field-label-disabled{color:#00000040;cursor:not-allowed}.ant-pro-core-field-label-disabled .ant-pro-core-field-label-icon{color:#00000040}.ant-pro-core-field-label-small{height:24px;padding:0 4px;font-size:12px;line-height:24px}.ant-pro-core-field-label-small.ant-pro-core-field-label-active{padding:0 8px}.ant-pro-core-field-label-small .ant-pro-core-field-label-icon{padding:0}.ant-pro-core-field-label-small .ant-pro-core-field-label-close{margin-top:-2px;padding:3px;font-size:6px}.ant-pro-core-field-label-bordered{height:32px;padding:0 12px;border:1px solid #d9d9d9;border-radius:2px}.ant-pro-core-field-label-bordered.ant-pro-core-field-label-small{height:24px;padding:0 8px}.ant-pro-core-field-label-bordered.ant-pro-core-field-label-active{background-color:#fff}.ant-pro-core-field-dropdown-label{cursor:pointer}.ant-pro-core-field-dropdown-overlay{min-width:200px;margin-top:4px;background-color:#fff;-webkit-box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09);box-shadow:0 1px 2px -2px #00000029,0 3px 6px #0000001f,0 5px 12px 4px #00000017}.ant-pro-core-field-dropdown-content{padding:16px}.ant-pro-core-label-tip{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.ant-pro-core-label-tip-icon{display:block;margin-left:4px;cursor:pointer}.ant-pro-core-label-tip-icon:hover{color:#40a9ff}.ant-pro-core-label-tip-title{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-pro-core-label-tip-subtitle{margin-left:8px;color:#00000073;font-weight:400;font-size:14px;white-space:nowrap}.ant-pro-core-label-tip-title-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.ant-pro-field-dropdown,.ant-pro-table-dropdown{width:auto}.ant-pro-select-item-option-content-light{color:#1890ff}.ant-pro-select-item-option-content{-webkit-box-flex:1;-ms-flex:auto;flex:auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-pro-field-select-light-select .ant-select{position:absolute;width:153px;height:28px;visibility:hidden}.ant-pro-field-select-light-select .ant-select-selector{height:28px}.ant-pro-field-select-light-select.ant-pro-field-select-light-select-searchable .ant-select{width:200px}.ant-pro-field-select-light-select.ant-pro-field-select-light-select-searchable .ant-select-selector{height:28px}.ant-pro-field-checkbox-vertical .ant-checkbox-group-item{display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:0}.ant-pro-field-date-picker-light .ant-calendar-picker,.ant-pro-field-date-picker-light .ant-picker{position:absolute;width:80px;height:28px;overflow:hidden;visibility:hidden}.ant-pro-field-index-column{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:18px;height:18px}.ant-pro-field-index-column-border{color:#fff;font-size:12px;line-height:12px;background-color:#314659;border-radius:9px}.ant-pro-field-index-column-border.top-three{background-color:#979797}.ant-pro-field-radio-vertical .ant-radio-wrapper{display:block;margin-right:0}.ant-form:not(.ant-form-horizontal) .ant-pro-form-list-item:not(.ant-pro-form-list-item-show-label) .ant-form-item-label{display:none}.ant-pro-form-list{max-width:100%}.ant-pro-form-list-item.ant-pro-form-list-item-show-label .ant-form-item-label{display:inline-block}.ant-pro-form-list-item:first-of-type div:first-of-type .ant-form-item .ant-form-item-label{display:inline-block}.ant-pro-form-list-action{display:-webkit-box;display:-ms-flexbox;display:flex;height:32px;margin-bottom:24px;line-height:32px}.ant-pro-form-list .ant-pro-card .ant-pro-card-extra .ant-pro-form-list-action{margin-bottom:0}.ant-pro-form-list-action-icon{margin-left:8px;cursor:pointer;-webkit-transition:color .3s ease-in-out;transition:color .3s ease-in-out}.ant-pro-form-list-action-icon:hover{color:#40a9ff}.ant-pro-form-list-creator-button-top{margin-bottom:24px}.ant-pro-form-group-title{margin-bottom:16px;font-weight:700}.ant-pro-form-group-container{-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:100%}.ant-pro-form-group-container>div.ant-space-item{max-width:100%}.ant-pro-form-group-twoLine{display:block;width:100%}.ant-pro-form-group-twoLine .ant-pro-form-group-title{width:100%;margin:8px 0}.ant-pro-form-group-twoLine .ant-pro-form-group-container{padding-left:16px}.ant-pro-form-group-twoLine .ant-space-item,.ant-pro-form-group-twoLine .ant-form-item{width:100%}.ant-pro-form-group-twoLine .ant-form-item-control{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ant-pro-form-group-twoLine .ant-form-item-control-input{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ant-pro-form-group-twoLine .ant-form-item-control-input-content{-webkit-box-flex:0;-ms-flex:none;flex:none}.ant-drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;pointer-events:none}.ant-drawer-inline{position:absolute}.ant-drawer-mask{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1000;background:rgba(0,0,0,.45);pointer-events:auto}.ant-drawer-content-wrapper{position:absolute;z-index:1000;transition:all .3s}.ant-drawer-content-wrapper-hidden{display:none}.ant-drawer-left>.ant-drawer-content-wrapper{top:0;bottom:0;left:0;box-shadow:6px 0 16px -8px #00000014,9px 0 28px #0000000d,12px 0 48px 16px #00000008}.ant-drawer-right>.ant-drawer-content-wrapper{top:0;right:0;bottom:0;box-shadow:-6px 0 16px -8px #00000014,-9px 0 28px #0000000d,-12px 0 48px 16px #00000008}.ant-drawer-top>.ant-drawer-content-wrapper{top:0;right:0;left:0;box-shadow:0 6px 16px -8px #00000014,0 9px 28px #0000000d,0 12px 48px 16px #00000008}.ant-drawer-bottom>.ant-drawer-content-wrapper{right:0;bottom:0;left:0;box-shadow:0 -6px 16px -8px #00000014,0 -9px 28px #0000000d,0 -12px 48px 16px #00000008}.ant-drawer-content{width:100%;height:100%;overflow:auto;background:#fff;pointer-events:auto}.ant-drawer-wrapper-body{display:flex;flex-direction:column;width:100%;height:100%}.ant-drawer-header{display:flex;flex:0;align-items:center;padding:16px 24px;font-size:16px;line-height:22px;border-bottom:1px solid #f0f0f0}.ant-drawer-header-title{display:flex;flex:1;align-items:center;min-width:0;min-height:0}.ant-drawer-extra{flex:none}.ant-drawer-close{display:inline-block;margin-right:12px;color:#00000073;font-weight:700;font-size:16px;font-style:normal;line-height:1;text-align:center;text-transform:none;text-decoration:none;background:transparent;border:0;outline:0;cursor:pointer;transition:color .3s;text-rendering:auto}.ant-drawer-close:focus,.ant-drawer-close:hover{color:#000000bf;text-decoration:none}.ant-drawer-title{flex:1;margin:0;color:#000000d9;font-weight:500;font-size:16px;line-height:22px}.ant-drawer-body{flex:1;min-width:0;min-height:0;padding:24px;overflow:auto}.ant-drawer-footer{flex-shrink:0;padding:10px 16px;border-top:1px solid #f0f0f0}.panel-motion-enter-start,.panel-motion-appear-start,.panel-motion-leave-start{transition:none}.panel-motion-enter-active,.panel-motion-appear-active,.panel-motion-leave-active,.ant-drawer-mask-motion-enter-active,.ant-drawer-mask-motion-appear-active,.ant-drawer-mask-motion-leave-active{transition:all .3s}.ant-drawer-mask-motion-enter,.ant-drawer-mask-motion-appear{opacity:0}.ant-drawer-mask-motion-enter-active,.ant-drawer-mask-motion-appear-active,.ant-drawer-mask-motion-leave{opacity:1}.ant-drawer-mask-motion-leave-active{opacity:0}.ant-drawer-panel-motion-left-enter-start,.ant-drawer-panel-motion-left-appear-start,.ant-drawer-panel-motion-left-leave-start{transition:none}.ant-drawer-panel-motion-left-enter-active,.ant-drawer-panel-motion-left-appear-active,.ant-drawer-panel-motion-left-leave-active{transition:all .3s}.ant-drawer-panel-motion-left-enter-start,.ant-drawer-panel-motion-left-appear-start{transform:translate(-100%)!important}.ant-drawer-panel-motion-left-enter-active,.ant-drawer-panel-motion-left-appear-active,.ant-drawer-panel-motion-left-leave{transform:translate(0)}.ant-drawer-panel-motion-left-leave-active{transform:translate(-100%)}.ant-drawer-panel-motion-right-enter-start,.ant-drawer-panel-motion-right-appear-start,.ant-drawer-panel-motion-right-leave-start{transition:none}.ant-drawer-panel-motion-right-enter-active,.ant-drawer-panel-motion-right-appear-active,.ant-drawer-panel-motion-right-leave-active{transition:all .3s}.ant-drawer-panel-motion-right-enter-start,.ant-drawer-panel-motion-right-appear-start{transform:translate(100%)!important}.ant-drawer-panel-motion-right-enter-active,.ant-drawer-panel-motion-right-appear-active,.ant-drawer-panel-motion-right-leave{transform:translate(0)}.ant-drawer-panel-motion-right-leave-active{transform:translate(100%)}.ant-drawer-panel-motion-top-enter-start,.ant-drawer-panel-motion-top-appear-start,.ant-drawer-panel-motion-top-leave-start{transition:none}.ant-drawer-panel-motion-top-enter-active,.ant-drawer-panel-motion-top-appear-active,.ant-drawer-panel-motion-top-leave-active{transition:all .3s}.ant-drawer-panel-motion-top-enter-start,.ant-drawer-panel-motion-top-appear-start{transform:translateY(-100%)!important}.ant-drawer-panel-motion-top-enter-active,.ant-drawer-panel-motion-top-appear-active,.ant-drawer-panel-motion-top-leave{transform:translateY(0)}.ant-drawer-panel-motion-top-leave-active{transform:translateY(-100%)}.ant-drawer-panel-motion-bottom-enter-start,.ant-drawer-panel-motion-bottom-appear-start,.ant-drawer-panel-motion-bottom-leave-start{transition:none}.ant-drawer-panel-motion-bottom-enter-active,.ant-drawer-panel-motion-bottom-appear-active,.ant-drawer-panel-motion-bottom-leave-active{transition:all .3s}.ant-drawer-panel-motion-bottom-enter-start,.ant-drawer-panel-motion-bottom-appear-start{transform:translateY(100%)!important}.ant-drawer-panel-motion-bottom-enter-active,.ant-drawer-panel-motion-bottom-appear-active,.ant-drawer-panel-motion-bottom-leave{transform:translateY(0)}.ant-drawer-panel-motion-bottom-leave-active{transform:translateY(100%)}.ant-drawer-rtl{direction:rtl}.ant-drawer-rtl .ant-drawer-close{margin-right:0;margin-left:12px}.ant-pro-form-light-filter{line-height:30px}.ant-pro-form-light-filter:before{display:block;height:0;visibility:hidden;content:"."}.ant-pro-form-light-filter-small{line-height:1.5715}.ant-pro-form-light-filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:-8px;margin-right:-4px}.ant-pro-form-light-filter-item{margin-top:8px;white-space:nowrap}.ant-pro-form-light-filter-item:not(:last-child){margin-right:8px}.ant-pro-form-light-filter-formlabel{margin-bottom:2px}.ant-pro-form-light-filter-line{min-width:198px}.ant-pro-form-light-filter-line .ant-form-item{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-bottom:0}.ant-pro-form-light-filter-line:not(:first-child){margin-top:16px;margin-bottom:8px}.ant-pro-form-light-filter .ant-form-item{margin-bottom:0}.ant-pro-form-light-filter-collapse-icon{width:32px;height:32px;line-height:35px;border-radius:50%}.ant-pro-form-light-filter-effective .ant-pro-form-light-filter-collapse-icon{background-color:#0000000a}.ant-modal{box-sizing:border-box;padding:0 0 24px;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";pointer-events:none;position:relative;top:100px;width:auto;max-width:calc(100vw - 32px);margin:0 auto}.ant-modal.ant-zoom-enter,.ant-modal.ant-zoom-appear{transform:none;opacity:0;animation-duration:.3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;height:100%;background-color:#00000073}.ant-modal-mask-hidden{display:none}.ant-modal-wrap{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;outline:0;z-index:1000}.ant-modal-title{margin:0;color:#000000d9;font-weight:500;font-size:16px;line-height:22px;word-wrap:break-word}.ant-modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:0;border-radius:2px;box-shadow:0 3px 6px -4px #0000001f,0 6px 16px #00000014,0 9px 28px 8px #0000000d;pointer-events:auto}.ant-modal-close{position:absolute;top:0;right:0;z-index:10;padding:0;color:#00000073;font-weight:700;line-height:1;text-decoration:none;background:transparent;border:0;outline:0;cursor:pointer;transition:color .3s}.ant-modal-close-x{display:block;width:54px;height:54px;font-size:16px;font-style:normal;line-height:54px;text-align:center;text-transform:none;text-rendering:auto}.ant-modal-close:focus,.ant-modal-close:hover{color:#000000bf;text-decoration:none}.ant-modal-header{padding:16px 24px;color:#000000d9;background:#fff;border-bottom:1px solid #f0f0f0;border-radius:2px 2px 0 0}.ant-modal-body{padding:24px;font-size:14px;line-height:1.5715;word-wrap:break-word}.ant-modal-footer{padding:10px 16px;text-align:right;background:transparent;border-top:1px solid #f0f0f0;border-radius:0 0 2px 2px}.ant-modal-footer .ant-btn+.ant-btn:not(.ant-dropdown-trigger){margin-bottom:0;margin-left:8px}.ant-modal-open{overflow:hidden}.ant-modal-centered{text-align:center}.ant-modal-centered:before{display:inline-block;width:0;height:100%;vertical-align:middle;content:""}.ant-modal-centered .ant-modal{top:0;display:inline-block;padding-bottom:0;text-align:left;vertical-align:middle}@media (max-width: 767px){.ant-modal{max-width:calc(100vw - 16px);margin:8px auto}.ant-modal-centered .ant-modal{flex:1}}.ant-modal-confirm .ant-modal-header{display:none}.ant-modal-confirm .ant-modal-body{padding:32px 32px 24px}.ant-modal-confirm-body-wrapper:before{display:table;content:""}.ant-modal-confirm-body-wrapper:after{display:table;clear:both;content:""}.ant-modal-confirm-body .ant-modal-confirm-title{display:block;overflow:hidden;color:#000000d9;font-weight:500;font-size:16px;line-height:1.4}.ant-modal-confirm-body .ant-modal-confirm-content{margin-top:8px;color:#000000d9;font-size:14px}.ant-modal-confirm-body>.anticon{float:left;margin-right:16px;font-size:22px}.ant-modal-confirm-body>.anticon+.ant-modal-confirm-title+.ant-modal-confirm-content{margin-left:38px}.ant-modal-confirm .ant-modal-confirm-btns{margin-top:24px;text-align:right}.ant-modal-confirm .ant-modal-confirm-btns .ant-btn+.ant-btn{margin-bottom:0;margin-left:8px}.ant-modal-confirm-error .ant-modal-confirm-body>.anticon{color:#ff4d4f}.ant-modal-confirm-warning .ant-modal-confirm-body>.anticon,.ant-modal-confirm-confirm .ant-modal-confirm-body>.anticon{color:#faad14}.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#1890ff}.ant-modal-confirm-success .ant-modal-confirm-body>.anticon{color:#52c41a}.ant-modal-confirm .ant-zoom-leave .ant-modal-confirm-btns{pointer-events:none}.ant-modal-wrap-rtl{direction:rtl}.ant-modal-wrap-rtl .ant-modal-close{right:initial;left:0}.ant-modal-wrap-rtl .ant-modal-footer{text-align:left}.ant-modal-wrap-rtl .ant-modal-footer .ant-btn+.ant-btn{margin-right:8px;margin-left:0}.ant-modal-wrap-rtl .ant-modal-confirm-body{direction:rtl}.ant-modal-wrap-rtl .ant-modal-confirm-body>.anticon{float:right;margin-right:0;margin-left:16px}.ant-modal-wrap-rtl .ant-modal-confirm-body>.anticon+.ant-modal-confirm-title+.ant-modal-confirm-content{margin-right:38px;margin-left:0}.ant-modal-wrap-rtl .ant-modal-confirm-btns{text-align:left}.ant-modal-wrap-rtl .ant-modal-confirm-btns .ant-btn+.ant-btn{margin-right:8px;margin-left:0}.ant-modal-wrap-rtl.ant-modal-centered .ant-modal{text-align:right}.ant-divider{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";border-top:1px solid rgba(0,0,0,.06)}.ant-divider-vertical{position:relative;top:-.06em;display:inline-block;height:.9em;margin:0 8px;vertical-align:middle;border-top:0;border-left:1px solid rgba(0,0,0,.06)}.ant-divider-horizontal{display:flex;clear:both;width:100%;min-width:100%;margin:24px 0}.ant-divider-horizontal.ant-divider-with-text{display:flex;align-items:center;margin:16px 0;color:#000000d9;font-weight:500;font-size:16px;white-space:nowrap;text-align:center;border-top:0;border-top-color:#0000000f}.ant-divider-horizontal.ant-divider-with-text:before,.ant-divider-horizontal.ant-divider-with-text:after{position:relative;width:50%;border-top:1px solid transparent;border-top-color:inherit;border-bottom:0;transform:translateY(50%);content:""}.ant-divider-horizontal.ant-divider-with-text-left:before{width:5%}.ant-divider-horizontal.ant-divider-with-text-left:after{width:95%}.ant-divider-horizontal.ant-divider-with-text-right:before{width:95%}.ant-divider-horizontal.ant-divider-with-text-right:after{width:5%}.ant-divider-inner-text{display:inline-block;padding:0 1em}.ant-divider-dashed{background:none;border-color:#0000000f;border-style:dashed;border-width:1px 0 0}.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:before,.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed:after{border-style:dashed none none}.ant-divider-vertical.ant-divider-dashed{border-width:0 0 0 1px}.ant-divider-plain.ant-divider-with-text{color:#000000d9;font-weight:400;font-size:14px}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left:before{width:0}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left:after{width:100%}.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-no-default-orientation-margin-left .ant-divider-inner-text{padding-left:0}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right:before{width:100%}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right:after{width:0}.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-no-default-orientation-margin-right .ant-divider-inner-text{padding-right:0}.ant-divider-rtl{direction:rtl}.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-left:before{width:95%}.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-left:after{width:5%}.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-right:before{width:5%}.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-right:after{width:95%}.ant-steps{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";display:flex;width:100%;font-size:0;text-align:initial}.ant-steps-item{position:relative;display:inline-block;flex:1;overflow:hidden;vertical-align:top}.ant-steps-item-container{outline:none}.ant-steps-item:last-child{flex:none}.ant-steps-item:last-child>.ant-steps-item-container>.ant-steps-item-tail,.ant-steps-item:last-child>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{display:none}.ant-steps-item-icon,.ant-steps-item-content{display:inline-block;vertical-align:top}.ant-steps-item-icon{width:32px;height:32px;margin:0 8px 0 0;font-size:16px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:32px;text-align:center;border:1px solid rgba(0,0,0,.25);border-radius:32px;transition:background-color .3s,border-color .3s}.ant-steps-item-icon .ant-steps-icon{position:relative;top:-.5px;color:#1890ff;line-height:1}.ant-steps-item-tail{position:absolute;top:12px;left:0;width:100%;padding:0 10px}.ant-steps-item-tail:after{display:inline-block;width:100%;height:1px;background:#f0f0f0;border-radius:1px;transition:background .3s;content:""}.ant-steps-item-title{position:relative;display:inline-block;padding-right:16px;color:#000000d9;font-size:16px;line-height:32px}.ant-steps-item-title:after{position:absolute;top:16px;left:100%;display:block;width:9999px;height:1px;background:#f0f0f0;content:""}.ant-steps-item-subtitle{display:inline;margin-left:8px;color:#00000073;font-weight:400;font-size:14px}.ant-steps-item-description{color:#00000073;font-size:14px}.ant-steps-item-wait .ant-steps-item-icon{background-color:#fff;border-color:#00000040}.ant-steps-item-wait .ant-steps-item-icon>.ant-steps-icon{color:#00000040}.ant-steps-item-wait .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:rgba(0,0,0,.25)}.ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:#00000073}.ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#f0f0f0}.ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:#00000073}.ant-steps-item-wait>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#f0f0f0}.ant-steps-item-process .ant-steps-item-icon{background-color:#fff;border-color:#1890ff}.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:#000000d9}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#f0f0f0}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:#000000d9}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#f0f0f0}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-icon{background:#1890ff}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-icon .ant-steps-icon{color:#fff}.ant-steps-item-process>.ant-steps-item-container>.ant-steps-item-title{font-weight:500}.ant-steps-item-finish .ant-steps-item-icon{background-color:#fff;border-color:#1890ff}.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:#000000d9}.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#1890ff}.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:#00000073}.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#1890ff}.ant-steps-item-error .ant-steps-item-icon{background-color:#fff;border-color:#ff4d4f}.ant-steps-item-error .ant-steps-item-icon>.ant-steps-icon{color:#ff4d4f}.ant-steps-item-error .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#ff4d4f}.ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title{color:#ff4d4f}.ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#f0f0f0}.ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-description{color:#ff4d4f}.ant-steps-item-error>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#f0f0f0}.ant-steps-item.ant-steps-next-error .ant-steps-item-title:after{background:#ff4d4f}.ant-steps-item-disabled{cursor:not-allowed}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]{cursor:pointer}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button] .ant-steps-item-title,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button] .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button] .ant-steps-item-description,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button] .ant-steps-item-icon .ant-steps-icon{transition:color .3s}.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-title,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-description{color:#1890ff}.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon{border-color:#1890ff}.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon{color:#1890ff}.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-left:16px;white-space:nowrap}.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-left:0}.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title{padding-right:0}.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-tail{display:none}.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-description{max-width:140px;white-space:normal}.ant-steps-item-custom>.ant-steps-item-container>.ant-steps-item-icon{height:auto;background:none;border:0}.ant-steps-item-custom>.ant-steps-item-container>.ant-steps-item-icon>.ant-steps-icon{top:0;left:.5px;width:32px;height:32px;font-size:24px;line-height:32px}.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}.ant-steps:not(.ant-steps-vertical) .ant-steps-item-custom .ant-steps-item-icon{width:auto;background:none}.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-left:12px}.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-left:0}.ant-steps-small .ant-steps-item-icon{width:24px;height:24px;margin:0 8px 0 0;font-size:12px;line-height:24px;text-align:center;border-radius:24px}.ant-steps-small .ant-steps-item-title{padding-right:12px;font-size:14px;line-height:24px}.ant-steps-small .ant-steps-item-title:after{top:12px}.ant-steps-small .ant-steps-item-description{color:#00000073;font-size:14px}.ant-steps-small .ant-steps-item-tail{top:8px}.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon{width:inherit;height:inherit;line-height:inherit;background:none;border:0;border-radius:0}.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon>.ant-steps-icon{font-size:24px;line-height:24px;transform:none}.ant-steps-vertical{display:flex;flex-direction:column}.ant-steps-vertical>.ant-steps-item{display:block;flex:1 0 auto;padding-left:0;overflow:visible}.ant-steps-vertical>.ant-steps-item .ant-steps-item-icon{float:left;margin-right:16px}.ant-steps-vertical>.ant-steps-item .ant-steps-item-content{display:block;min-height:48px;overflow:hidden}.ant-steps-vertical>.ant-steps-item .ant-steps-item-title{line-height:32px}.ant-steps-vertical>.ant-steps-item .ant-steps-item-description{padding-bottom:12px}.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{position:absolute;top:0;left:15px;width:1px;height:100%;padding:38px 0 6px}.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail:after{width:1px;height:100%}.ant-steps-vertical>.ant-steps-item:not(:last-child)>.ant-steps-item-container>.ant-steps-item-tail{display:block}.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{display:none}.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail{position:absolute;top:0;left:11px;padding:30px 0 6px}.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-title{line-height:24px}.ant-steps-label-vertical .ant-steps-item{overflow:visible}.ant-steps-label-vertical .ant-steps-item-tail{margin-left:58px;padding:3.5px 24px}.ant-steps-label-vertical .ant-steps-item-content{display:block;width:116px;margin-top:8px;text-align:center}.ant-steps-label-vertical .ant-steps-item-icon{display:inline-block;margin-left:42px}.ant-steps-label-vertical .ant-steps-item-title{padding-right:0;padding-left:0}.ant-steps-label-vertical .ant-steps-item-title:after{display:none}.ant-steps-label-vertical .ant-steps-item-subtitle{display:block;margin-bottom:4px;margin-left:0;line-height:1.5715}.ant-steps-label-vertical.ant-steps-small:not(.ant-steps-dot) .ant-steps-item-icon{margin-left:46px}.ant-steps-dot .ant-steps-item-title,.ant-steps-dot.ant-steps-small .ant-steps-item-title{line-height:1.5715}.ant-steps-dot .ant-steps-item-tail,.ant-steps-dot.ant-steps-small .ant-steps-item-tail{top:2px;width:100%;margin:0 0 0 70px;padding:0}.ant-steps-dot .ant-steps-item-tail:after,.ant-steps-dot.ant-steps-small .ant-steps-item-tail:after{width:calc(100% - 20px);height:3px;margin-left:12px}.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot,.ant-steps-dot.ant-steps-small .ant-steps-item:first-child .ant-steps-icon-dot{left:2px}.ant-steps-dot .ant-steps-item-icon,.ant-steps-dot.ant-steps-small .ant-steps-item-icon{width:8px;height:8px;margin-left:67px;padding-right:0;line-height:8px;background:transparent;border:0}.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot{position:relative;float:left;width:100%;height:100%;border-radius:100px;transition:all .3s}.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot:after,.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot:after{position:absolute;top:-12px;left:-26px;width:60px;height:32px;background:rgba(0,0,0,.001);content:""}.ant-steps-dot .ant-steps-item-content,.ant-steps-dot.ant-steps-small .ant-steps-item-content{width:140px}.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon,.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon{position:relative;top:-1px;width:10px;height:10px;line-height:10px;background:none}.ant-steps-dot .ant-steps-item-process .ant-steps-icon:first-child .ant-steps-icon-dot,.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-icon:first-child .ant-steps-icon-dot{left:0}.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon{margin-top:13px;margin-left:0;background:none}.ant-steps-vertical.ant-steps-dot .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{top:6.5px;left:-9px;margin:0;padding:22px 0 4px}.ant-steps-vertical.ant-steps-dot.ant-steps-small .ant-steps-item-icon{margin-top:10px}.ant-steps-vertical.ant-steps-dot.ant-steps-small .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{top:3.5px}.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot{left:0}.ant-steps-vertical.ant-steps-dot .ant-steps-item-content{width:inherit}.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-item-container .ant-steps-item-icon .ant-steps-icon-dot{top:-1px;left:-1px}.ant-steps-navigation{padding-top:12px}.ant-steps-navigation.ant-steps-small .ant-steps-item-container{margin-left:-12px}.ant-steps-navigation .ant-steps-item{overflow:visible;text-align:center}.ant-steps-navigation .ant-steps-item-container{display:inline-block;height:100%;margin-left:-16px;padding-bottom:12px;text-align:left;transition:opacity .3s}.ant-steps-navigation .ant-steps-item-container .ant-steps-item-content{max-width:auto}.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title{max-width:100%;padding-right:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title:after{display:none}.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role=button]{cursor:pointer}.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role=button]:hover{opacity:.85}.ant-steps-navigation .ant-steps-item:last-child{flex:1}.ant-steps-navigation .ant-steps-item:last-child:after{display:none}.ant-steps-navigation .ant-steps-item:after{position:absolute;top:50%;left:100%;display:inline-block;width:12px;height:12px;margin-top:-14px;margin-left:-2px;border:1px solid rgba(0,0,0,.25);border-bottom:none;border-left:none;transform:rotate(45deg);content:""}.ant-steps-navigation .ant-steps-item:before{position:absolute;bottom:0;left:50%;display:inline-block;width:0;height:2px;background-color:#1890ff;transition:width .3s,left .3s;transition-timing-function:ease-out;content:""}.ant-steps-navigation .ant-steps-item.ant-steps-item-active:before{left:0;width:100%}.ant-steps-navigation.ant-steps-vertical>.ant-steps-item{margin-right:0!important}.ant-steps-navigation.ant-steps-vertical>.ant-steps-item:before{display:none}.ant-steps-navigation.ant-steps-vertical>.ant-steps-item.ant-steps-item-active:before{top:0;right:0;left:unset;display:block;width:3px;height:calc(100% - 24px)}.ant-steps-navigation.ant-steps-vertical>.ant-steps-item:after{position:relative;top:-2px;left:50%;display:block;width:8px;height:8px;margin-bottom:8px;text-align:center;transform:rotate(135deg)}.ant-steps-navigation.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{visibility:hidden}.ant-steps-navigation.ant-steps-horizontal>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{visibility:hidden}.ant-steps-rtl{direction:rtl}.ant-steps.ant-steps-rtl .ant-steps-item-icon{margin-right:0;margin-left:8px}.ant-steps-rtl .ant-steps-item-tail{right:0;left:auto}.ant-steps-rtl .ant-steps-item-title{padding-right:0;padding-left:16px}.ant-steps-rtl .ant-steps-item-title .ant-steps-item-subtitle{float:left;margin-right:8px;margin-left:0}.ant-steps-rtl .ant-steps-item-title:after{right:100%;left:auto}.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-right:16px;padding-left:0}.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-right:0}.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title{padding-left:0}.ant-steps-rtl .ant-steps-item-custom .ant-steps-item-icon>.ant-steps-icon{right:.5px;left:auto}.ant-steps-rtl.ant-steps-navigation.ant-steps-small .ant-steps-item-container{margin-right:-12px;margin-left:0}.ant-steps-rtl.ant-steps-navigation .ant-steps-item-container{margin-right:-16px;margin-left:0;text-align:right}.ant-steps-rtl.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title{padding-left:0}.ant-steps-rtl.ant-steps-navigation .ant-steps-item:after{right:100%;left:auto;margin-right:-2px;margin-left:0;transform:rotate(225deg)}.ant-steps-rtl.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item{padding-right:12px;padding-left:0}.ant-steps-rtl.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:first-child{padding-right:0}.ant-steps-rtl.ant-steps-small .ant-steps-item-title{padding-right:0;padding-left:12px}.ant-steps-rtl.ant-steps-vertical>.ant-steps-item .ant-steps-item-icon{float:right;margin-right:0;margin-left:16px}.ant-steps-rtl.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{right:16px;left:auto}.ant-steps-rtl.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail{right:12px;left:auto}.ant-steps-rtl.ant-steps-label-vertical .ant-steps-item-title{padding-left:0}.ant-steps-rtl.ant-steps-dot .ant-steps-item-tail,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-tail{margin:0 70px 0 0}.ant-steps-rtl.ant-steps-dot .ant-steps-item-tail:after,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-tail:after{margin-right:12px;margin-left:0}.ant-steps-rtl.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item:first-child .ant-steps-icon-dot{right:2px;left:auto}.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon{margin-right:67px;margin-left:0}.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot{float:right}.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot:after,.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot:after{right:-26px;left:auto}.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon{margin-right:0;margin-left:16px}.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{right:-9px;left:auto}.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot{right:0;left:auto}.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-icon-dot{right:-2px;left:auto}.ant-steps-rtl.ant-steps-with-progress.ant-steps-vertical>.ant-steps-item{padding-right:4px}.ant-steps-rtl.ant-steps-with-progress.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{right:19px}.ant-steps-rtl.ant-steps-with-progress.ant-steps-small.ant-steps-vertical>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{right:15px}.ant-steps-rtl.ant-steps-with-progress.ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item:first-child{padding-right:4px;padding-left:0}.ant-steps-rtl.ant-steps-with-progress.ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item:first-child.ant-steps-item-active{padding-right:4px}.ant-steps-with-progress .ant-steps-item{padding-top:4px}.ant-steps-with-progress .ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{top:4px;left:19px}.ant-steps-with-progress.ant-steps-horizontal .ant-steps-item:first-child,.ant-steps-with-progress.ant-steps-small.ant-steps-horizontal .ant-steps-item:first-child{padding-bottom:4px;padding-left:4px}.ant-steps-with-progress.ant-steps-small>.ant-steps-item>.ant-steps-item-container>.ant-steps-item-tail{left:15px}.ant-steps-with-progress.ant-steps-vertical .ant-steps-item{padding-left:4px}.ant-steps-with-progress.ant-steps-label-vertical .ant-steps-item .ant-steps-item-tail{top:14px!important}.ant-steps-with-progress .ant-steps-item-icon{position:relative}.ant-steps-with-progress .ant-steps-item-icon .ant-progress{position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px}.ant-pro-steps-form-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;min-width:520px;max-width:100%;margin:auto}.ant-pro-steps-form-steps-container{max-width:1160px;margin:auto}.ant-pro-steps-form-steps-container .ant-steps-vertical{height:100%}.ant-pro-steps-form-step{display:none;margin-top:32px}.ant-pro-steps-form-step-active{display:block}.ant-pro-steps-form-step>form{max-width:100%}.ant-pro-field-light-wrapper-collapse-label{padding:1}.ant-pro-field-light-wrapper-container .ant-form-item{margin-bottom:0}.ant-alert{box-sizing:border-box;margin:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum","tnum";position:relative;display:flex;align-items:center;padding:8px 15px;word-wrap:break-word;border-radius:2px}.ant-alert-content{flex:1;min-width:0}.ant-alert-icon{margin-right:8px}.ant-alert-description{display:none;font-size:14px;line-height:22px}.ant-alert-success{background-color:#f6ffed;border:1px solid #b7eb8f}.ant-alert-success .ant-alert-icon{color:#52c41a}.ant-alert-info{background-color:#e6f7ff;border:1px solid #91d5ff}.ant-alert-info .ant-alert-icon{color:#1890ff}.ant-alert-warning{background-color:#fffbe6;border:1px solid #ffe58f}.ant-alert-warning .ant-alert-icon{color:#faad14}.ant-alert-error{background-color:#fff2f0;border:1px solid #ffccc7}.ant-alert-error .ant-alert-icon{color:#ff4d4f}.ant-alert-error .ant-alert-description>pre{margin:0;padding:0}.ant-alert-action{margin-left:8px}.ant-alert-close-icon{margin-left:8px;padding:0;overflow:hidden;font-size:12px;line-height:12px;background-color:transparent;border:none;outline:none;cursor:pointer}.ant-alert-close-icon .anticon-close{color:#00000073;transition:color .3s}.ant-alert-close-icon .anticon-close:hover{color:#000000bf}.ant-alert-close-text{color:#00000073;transition:color .3s}.ant-alert-close-text:hover{color:#000000bf}.ant-alert-with-description{align-items:flex-start;padding:15px 15px 15px 24px}.ant-alert-with-description.ant-alert-no-icon{padding:15px}.ant-alert-with-description .ant-alert-icon{margin-right:15px;font-size:24px}.ant-alert-with-description .ant-alert-message{display:block;margin-bottom:4px;color:#000000d9;font-size:16px}.ant-alert-message{color:#000000d9}.ant-alert-with-description .ant-alert-description{display:block}.ant-alert.ant-alert-motion-leave{overflow:hidden;opacity:1;transition:max-height .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86),padding-top .3s cubic-bezier(.78,.14,.15,.86),padding-bottom .3s cubic-bezier(.78,.14,.15,.86),margin-bottom .3s cubic-bezier(.78,.14,.15,.86)}.ant-alert.ant-alert-motion-leave-active{max-height:0;margin-bottom:0!important;padding-top:0;padding-bottom:0;opacity:0}.ant-alert-banner{margin-bottom:0;border:0;border-radius:0}.ant-alert.ant-alert-rtl{direction:rtl}.ant-alert-rtl .ant-alert-icon{margin-right:auto;margin-left:8px}.ant-alert-rtl .ant-alert-action,.ant-alert-rtl .ant-alert-close-icon{margin-right:8px;margin-left:auto}.ant-alert-rtl.ant-alert-with-description{padding-right:24px;padding-left:15px}.ant-alert-rtl.ant-alert-with-description .ant-alert-icon{margin-right:auto;margin-left:15px}.ant-pro-table-alert{margin-bottom:16px}.ant-pro-table-alert .ant-alert.ant-alert-no-icon{padding:12px 24px}.ant-pro-table-alert-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:all .3s;transition:all .3s}.ant-pro-table-alert-info-content{-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-pro-table-alert-info-option{min-width:48px;padding-left:16px}.ant-pro-table .ant-pro-table-search{margin-bottom:16px;padding:24px 24px 0;background:#fff}.ant-pro-table .ant-pro-table-search-ghost{background:transparent}.ant-pro-table .ant-pro-table-search:before{display:table;content:""}.ant-pro-table .ant-pro-table-search:after{display:table;clear:both;content:""}.ant-pro-table .ant-pro-table-search.ant-pro-table-form{margin:0;padding:0 16px;overflow:unset}.ant-pro-table .ant-pro-table-search-light{margin-bottom:0;padding:16px 0}.ant-pro-table .ant-pro-table-search-form-option .ant-form-item{margin:0}.ant-pro-table .ant-pro-table-search-form-option .ant-form-item-label{opacity:0}.ant-pro-table .ant-pro-table-search-form-option .ant-form-item-control-input{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}@media (max-width: 575px){.ant-pro-table .ant-pro-table-search{height:auto!important;padding-bottom:24px}.ant-pro-table .ant-pro-table-search .ant-form-item-label{min-width:80px;text-align:left}}.ant-pro-table-column-setting{width:auto}.ant-pro-table-column-setting-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:32px}.ant-pro-table-column-setting-overlay .ant-popover-inner-content{width:200px;padding:0 0 8px}.ant-pro-table-column-setting-overlay .ant-tree-node-content-wrapper:hover{background-color:transparent}.ant-pro-table-column-setting-overlay .ant-tree-draggable-icon{cursor:-webkit-grab;cursor:grab}.ant-pro-table-column-setting-overlay .ant-tree-treenode{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ant-pro-table-column-setting-overlay .ant-tree-treenode:hover{background-color:#e6f7ff}.ant-pro-table-column-setting-overlay .ant-tree-treenode:hover .ant-pro-table-column-setting-list-item-option{display:block}.ant-pro-table-column-setting-overlay .ant-tree-treenode .ant-tree-checkbox{top:0;margin:0 4px 0 0}.ant-pro-table-column-setting-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;padding-top:8px}.ant-pro-table-column-setting-list.ant-pro-table-column-setting-list-group{padding-top:0}.ant-pro-table-column-setting-list-title{margin-top:6px;margin-bottom:6px;padding-left:24px;color:#00000073;font-size:12px}.ant-pro-table-column-setting-list-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ant-pro-table-column-setting-list-item-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-pro-table-column-setting-list-item-option{display:none;float:right;cursor:pointer}.ant-pro-table-column-setting-list-item-option>span>span.anticon{color:#1890ff}.ant-pro-table-column-setting-list-item-option>span+span{margin-left:8px}.ant-pro-table-list-toolbar{line-height:1}.ant-pro-table-list-toolbar-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 0}.ant-pro-table-list-toolbar-container-mobile{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ant-pro-table-list-toolbar-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:#000000d9;font-weight:500;font-size:16px}.ant-pro-table-list-toolbar-search:not(:last-child){display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.ant-pro-table-list-toolbar-setting-item{margin:0 4px;color:#000000bf;font-size:16px;cursor:pointer}.ant-pro-table-list-toolbar-setting-item>span{display:block;width:100%;height:100%}.ant-pro-table-list-toolbar-setting-item:hover{color:#40a9ff}.ant-pro-table-list-toolbar-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.ant-pro-table-list-toolbar-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ant-pro-table-list-toolbar-extra-line{margin-bottom:16px}.ant-pro-table-list-toolbar-filter{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ant-pro-table-list-toolbar-filter:not(:last-child){margin-right:16px}.ant-pro-table-list-toolbar-filter div.ant-pro-table-search{margin:0;padding:0}.ant-pro-table-list-toolbar-inline-menu-item{display:inline-block;margin-right:24px;cursor:pointer;opacity:.75}.ant-pro-table-list-toolbar-inline-menu-item-active{font-weight:700;opacity:1}.ant-pro-table-list-toolbar-dropdownmenu-label{font-weight:700;font-size:16px;text-align:center;cursor:pointer}.ant-pro-table-list-toolbar .ant-tabs-top>.ant-tabs-nav{margin-bottom:0}.ant-pro-table-list-toolbar .ant-tabs-top>.ant-tabs-nav:before{border-bottom:0}.ant-pro-table-list-toolbar .ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-list{margin-top:0}.ant-pro-table-list-toolbar .ant-tabs-top>.ant-tabs-nav .ant-tabs-nav-list .ant-tabs-tab{padding-top:0}@media (max-width: 575px){.ant-pro-table-list-toolbar-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.ant-pro-table-list-toolbar-left{margin-bottom:16px}}.ant-pro-table-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:64px;padding:0 24px}.ant-pro-table-toolbar-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ant-pro-table-toolbar-title{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#000000d9;font-weight:500;font-size:16px;line-height:24px;opacity:.85}@media (max-width: 480px){.ant-pro-table .ant-table{width:100%;overflow-x:auto}.ant-pro-table .ant-table-thead>tr>th,.ant-pro-table .ant-table-tbody>tr>th,.ant-pro-table .ant-table-thead>tr>td,.ant-pro-table .ant-table-tbody>tr>td{white-space:pre}.ant-pro-table .ant-table-thead>tr>th>span,.ant-pro-table .ant-table-tbody>tr>th>span,.ant-pro-table .ant-table-thead>tr>td>span,.ant-pro-table .ant-table-tbody>tr>td>span{display:block}}@media (max-width: 575px){.ant-pro-table-toolbar{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;height:auto;margin-bottom:16px;margin-left:16px;padding:16px 8px 8px;line-height:normal}.ant-pro-table-toolbar-title{margin-bottom:16px}.ant-pro-table-toolbar-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.ant-pro-table-toolbar-default-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}}.pro-table-tooltip-text span{color:#fff}.ant-pro-table{z-index:1}.ant-pro-table:not(:root):-webkit-full-screen{min-height:100vh;overflow:auto;background:#fff}.ant-pro-table:not(:root):-ms-fullscreen{min-height:100vh;overflow:auto;background:#fff}.ant-pro-table:not(:root):fullscreen{min-height:100vh;overflow:auto;background:#fff}.ant-pro-table-extra{margin-bottom:16px}.ant-pro-table-polling .ant-pro-table-list-toolbar-setting-item .anticon.anticon-reload{-webkit-transform:rotate(0deg);transform:rotate(0);-webkit-animation:turn 1s linear infinite;animation:turn 1s linear infinite}.ant-pro-table td.ant-table-cell>a{font-size:14px}.ant-pro-table .ant-table .ant-table-tbody .ant-table-wrapper:only-child .ant-table{margin:0}.ant-pro-table .ant-table.ant-table-middle .ant-pro-table{margin:-12px -8px}@-webkit-keyframes turn{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes turn{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}} diff --git a/dist/assets/Table-5d4bbec4.js b/dist/assets/Table-5d4bbec4.js new file mode 100644 index 0000000000000000000000000000000000000000..8c9fd0b842192c2a3a22733934b08c96f0ae694e --- /dev/null +++ b/dist/assets/Table-5d4bbec4.js @@ -0,0 +1,44 @@ +import{A as Tt,f as h,w as Jr,a as U,a1 as uu,C as Bt,O as He,c as ve,b as B,e as xa,d as rl,a2 as Xf,a3 as tn,_ as Ke,a4 as cu,a5 as on,V as yn,a6 as bn,U as Cn,T as xn,Z as ze,a7 as Zf,a8 as Gh,a9 as Ia,I as al,o as _a,aa as ol,L as La,ab as du,ac as Qf,ad as fu,ae as qh,af as fs,ag as Xh,ah as Zh,ai as Qh,aj as Jh,Y as Bn,ak as eg,al as ic,am as vu,an as Jf,ao as ev,ap as aa,aq as tv,ar as mu,as as nv,at as sr,au as il,av as rv,aw as oa,ax as tg,ay as av,az as ov,aA as iv,aB as ll,aC as ng,N as lc,aD as lv,aE as rg,aF as ag,aG as og,aH as pt,aI as sv,aJ as xt,aK as Ve,m as Bl,aL as pn,aM as hn,aN as pu,aO as Nr,aP as uv,aQ as ig,aR as cv,aS as dv,aT as lg,aU as fv,aV as vv,aW as sg,aX as ug}from"./_setToString-038b76d7.js";import{r as i,_ as J,k as Nt,R as Z,g as ja,j as x,c as hi,e as mv}from"./umi-2135699e.js";import{d as pv,g as sc,r as cg,h as Tr,P as dg,K as Be,j as hv,u as kt,k as fg,l as uc,m as vg,p as mg,q as ir,F as sl,s as ul,t as gv,v as cl,w as hu,x as Do,y as pg,a as rr,D as hg,z as yv,T as nn,A as Er,B as cc,G as dc,J as gu,M as gg,I as kn,N as bv,E as fc,e as Sa,O as yg,R as Hn,C as Zt,Q as bg,S as Xt,U as Cg}from"./util-e99b60d9.js";import{T as xg,s as yu,a as fo,w as Sg,F as zt,I as ea,b as wg,D as Cv,A as Pg,S as xv,R as Eg}from"./useDebounce-ed4013a1.js";import{t as Rn,u as dl,B as _n}from"./button-eb671c5b.js";import{a as Sv,u as fl,c as wv,B as Pv,d as bu,g as Ev,b as $r,C as kv,P as Rv,L as kg,e as So,S as Rg,D as Mg}from"./index-c4a8d365.js";import{S as Fr,a as Tg,d as Fg}from"./index-eb226363.js";import{_ as Oo,a as Ng,b as $g,c as Dg,d as Og,D as Io,e as Ig,O as _g,E as Lg,P as jg,M as Ag}from"./index-bbd283be.js";import{D as Mv}from"./DeleteOutlined-1f8a2958.js";var Kg={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z"}}]},name:"calendar",theme:"outlined"};const Vg=Kg;var zg=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:Vg}))},Bg=i.forwardRef(zg);const Tv=Bg;var Hg={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"filled"};const Wg=Hg;var Ug=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:Wg}))},Yg=i.forwardRef(Ug);const Gg=Yg;var qg={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"outlined"};const Xg=qg;var Zg=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:Xg}))},Qg=i.forwardRef(Zg);const Jg=Qg;var e0={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z"}}]},name:"caret-up",theme:"outlined"};const t0=e0;var n0=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:t0}))},r0=i.forwardRef(n0);const a0=r0;var o0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"}}]},name:"clock-circle",theme:"outlined"};const i0=o0;var l0=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:i0}))},s0=i.forwardRef(l0);const Fv=s0;var u0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 00-11.3 0L403.6 366.3a7.23 7.23 0 005.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"}}]},name:"column-height",theme:"outlined"};const c0=u0;var d0=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:c0}))},f0=i.forwardRef(d0);const v0=f0;var m0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"}}]},name:"copy",theme:"outlined"};const p0=m0;var h0=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:p0}))},g0=i.forwardRef(h0);const Cu=g0;var y0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z"}}]},name:"double-left",theme:"outlined"};const b0=y0;var C0=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:b0}))},x0=i.forwardRef(C0);const S0=x0;var w0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z"}}]},name:"double-right",theme:"outlined"};const P0=w0;var E0=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:P0}))},k0=i.forwardRef(E0);const R0=k0;var M0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 000 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z"}}]},name:"enter",theme:"outlined"};const T0=M0;var F0=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:T0}))},N0=i.forwardRef(F0);const $0=N0;var D0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z"}}]},name:"file",theme:"outlined"};const O0=D0;var I0=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:O0}))},_0=i.forwardRef(I0);const Nv=_0;var L0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z"}}]},name:"filter",theme:"filled"};const j0=L0;var A0=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:j0}))},K0=i.forwardRef(A0);const V0=K0;var z0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z"}}]},name:"filter",theme:"outlined"};const B0=z0;var H0=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:B0}))},W0=i.forwardRef(H0);const U0=W0;var Y0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 00-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z"}}]},name:"folder-open",theme:"outlined"};const G0=Y0;var q0=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:G0}))},X0=i.forwardRef(q0);const Z0=X0;var Q0={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"}}]},name:"folder",theme:"outlined"};const J0=Q0;var e1=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:J0}))},t1=i.forwardRef(e1);const n1=t1;var r1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 000 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 00391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6 877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 00-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z"}}]},name:"fullscreen-exit",theme:"outlined"};const a1=r1;var o1=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:a1}))},i1=i.forwardRef(o1);const l1=i1;var s1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M290 236.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7a8.01 8.01 0 0013.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 000 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 00-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z"}}]},name:"fullscreen",theme:"outlined"};const u1=s1;var c1=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:u1}))},d1=i.forwardRef(c1);const f1=d1;var v1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M300 276.5a56 56 0 1056-97 56 56 0 00-56 97zm0 284a56 56 0 1056-97 56 56 0 00-56 97zM640 228a56 56 0 10112 0 56 56 0 00-112 0zm0 284a56 56 0 10112 0 56 56 0 00-112 0zM300 844.5a56 56 0 1056-97 56 56 0 00-56 97zM640 796a56 56 0 10112 0 56 56 0 00-112 0z"}}]},name:"holder",theme:"outlined"};const m1=v1;var p1=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:m1}))},h1=i.forwardRef(p1);const g1=h1;var y1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"}},{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"minus-square",theme:"outlined"};const b1=y1;var C1=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:b1}))},x1=i.forwardRef(C1);const S1=x1;var w1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"}},{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"plus-square",theme:"outlined"};const P1=w1;var E1=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:P1}))},k1=i.forwardRef(E1);const R1=k1;var M1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H188V494h440v326z"}},{tag:"path",attrs:{d:"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7.4 12.6-6.1v-63.9c12.9.1 25.9.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8a325.95 325.95 0 016.5 140.9h74.9c14.8-103.6-11.3-213-81-302.3z"}}]},name:"rotate-left",theme:"outlined"};const T1=M1;var F1=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:T1}))},N1=i.forwardRef(F1);const $1=N1;var D1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M480.5 251.2c13-1.6 25.9-2.4 38.8-2.5v63.9c0 6.5 7.5 10.1 12.6 6.1L660 217.6c4-3.2 4-9.2 0-12.3l-128-101c-5.1-4-12.6-.4-12.6 6.1l-.2 64c-118.6.5-235.8 53.4-314.6 154.2A399.75 399.75 0 00123.5 631h74.9c-.9-5.3-1.7-10.7-2.4-16.1-5.1-42.1-2.1-84.1 8.9-124.8 11.4-42.2 31-81.1 58.1-115.8 27.2-34.7 60.3-63.2 98.4-84.3 37-20.6 76.9-33.6 119.1-38.8z"}},{tag:"path",attrs:{d:"M880 418H352c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H396V494h440v326z"}}]},name:"rotate-right",theme:"outlined"};const O1=D1;var I1=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:O1}))},_1=i.forwardRef(I1);const L1=_1;var j1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z"}}]},name:"star",theme:"filled"};const A1=j1;var K1=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:A1}))},V1=i.forwardRef(K1);const z1=V1;var B1={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z"}}]},name:"swap-right",theme:"outlined"};const H1=B1;var W1=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:H1}))},U1=i.forwardRef(W1);const Y1=U1;var G1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M859.9 780H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM505.7 669a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V176c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8z"}}]},name:"vertical-align-bottom",theme:"outlined"};const q1=G1;var X1=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:q1}))},Z1=i.forwardRef(X1);const Q1=Z1;var J1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M859.9 474H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zm-353.6-74.7c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H550V104c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v156h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.6zm11.4 225.4a7.14 7.14 0 00-11.3 0L405.6 752.3a7.23 7.23 0 005.7 11.7H474v156c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V764h62.8c6 0 9.4-7 5.7-11.7L517.7 624.7z"}}]},name:"vertical-align-middle",theme:"outlined"};const ey=J1;var ty=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:ey}))},ny=i.forwardRef(ty);const ry=ny;var ay={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z"}}]},name:"vertical-align-top",theme:"outlined"};const oy=ay;var iy=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:oy}))},ly=i.forwardRef(iy);const sy=ly;var uy={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"warning",theme:"filled"};const cy=uy;var dy=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:cy}))},fy=i.forwardRef(dy);const vy=fy;var my={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"}}]},name:"zoom-in",theme:"outlined"};const py=my;var hy=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:py}))},gy=i.forwardRef(hy);const yy=gy;var by={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"}}]},name:"zoom-out",theme:"outlined"};const Cy=by;var xy=function(t,r){return i.createElement(Tt,h(h({},t),{},{ref:r,icon:Cy}))},Sy=i.forwardRef(xy);const wy=Sy;function vs(e){return e!=null&&e===e.window}function Py(e,t){var r,n;if(typeof window>"u")return 0;var a=t?"scrollTop":"scrollLeft",o=0;return vs(e)?o=e[t?"pageYOffset":"pageXOffset"]:e instanceof Document?o=e.documentElement[a]:(e instanceof HTMLElement||e)&&(o=e[a]),e&&!vs(e)&&typeof o!="number"&&(o=(n=((r=e.ownerDocument)!==null&&r!==void 0?r:e).documentElement)===null||n===void 0?void 0:n[a]),o}function Ey(e,t,r,n){var a=r-t;return e/=n/2,e<1?a/2*e*e*e+t:a/2*((e-=2)*e*e+2)+t}function ky(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.getContainer,n=r===void 0?function(){return window}:r,a=t.callback,o=t.duration,s=o===void 0?450:o,l=n(),u=Py(l,!0),c=Date.now(),d=function f(){var v=Date.now(),m=v-c,p=Ey(m>s?s:m,u,e,s);vs(l)?l.scrollTo(window.pageXOffset,p):l instanceof Document||l.constructor.name==="HTMLDocument"?l.documentElement.scrollTop=p:l.scrollTop=p,m0&&arguments[0]!==void 0?arguments[0]:!0,t=i.useRef({}),r=pv();return i.useEffect(function(){var n=sc.subscribe(function(a){t.current=a,e&&r()});return function(){return sc.unsubscribe(n)}},[]),t.current}var ms=i.createContext("default"),vc=function(t){var r=t.children,n=t.size;return i.createElement(ms.Consumer,null,function(a){return i.createElement(ms.Provider,{value:n||a},r)})},Ry=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);af?"".concat(f,"+"):c,R=D==="0"||D===0,T=c===null||R&&!E,N=(o!=null||l!=null)&&T,M=m&&!R,I=M?"":D,L=i.useMemo(function(){var ue=I==null||I==="";return(ue||R&&!E)&&!M},[I,R,E,M]),j=i.useRef(c);L||(j.current=c);var _=j.current,K=i.useRef(I);L||(K.current=I);var z=K.current,A=i.useRef(M);L||(A.current=M);var V=i.useMemo(function(){if(!b)return J({},C);var ue={marginTop:b[1]};return k==="rtl"?ue.left=parseInt(b[0],10):ue.right=-parseInt(b[0],10),J(J({},ue),C)},[k,b,C]),X=y??(typeof _=="string"||typeof _=="number"?_:void 0),H=L||!s?null:i.createElement("span",{className:"".concat(O,"-status-text")},s),Q=!_||He(_)!=="object"?void 0:xa(_,function(ue){return{style:J(J({},V),ue.style)}}),Y=ve(B(B(B({},"".concat(O,"-status-dot"),N),"".concat(O,"-status-").concat(o),!!o),"".concat(O,"-status-").concat(l),lo(l))),ae={};l&&!lo(l)&&(ae.background=l);var q=ve(O,B(B(B({},"".concat(O,"-status"),N),"".concat(O,"-not-a-wrapper"),!a),"".concat(O,"-rtl"),k==="rtl"),S);if(!a&&N){var ne=V.color;return i.createElement("span",J({},w,{className:q,style:V}),i.createElement("span",{className:Y,style:ae}),s&&i.createElement("span",{style:{color:ne},className:"".concat(O,"-status-text")},s))}return i.createElement("span",J({},w,{className:q}),a,i.createElement(rl,{visible:!L,motionName:"".concat(O,"-zoom"),motionAppear:!1,motionDeadline:1e3},function(ue){var G=ue.className,te=$("scroll-number",n),ee=A.current,le=ve(B(B(B(B(B(B({},"".concat(O,"-dot"),ee),"".concat(O,"-count"),!ee),"".concat(O,"-count-sm"),g==="small"),"".concat(O,"-multiple-words"),!ee&&z&&z.toString().length>1),"".concat(O,"-status-").concat(o),!!o),"".concat(O,"-status-").concat(l),lo(l))),re=J({},V);return l&&!lo(l)&&(re=re||{},re.background=l),i.createElement(Ay,{prefixCls:te,show:!L,motionClassName:G,className:le,count:z,title:X,style:re,key:"scrollNumber"},Q)}),H)};Ov.Ribbon=Oy;const $n=Ov;var Iv=function(t){if(Xf()&&window.document.documentElement){var r=Array.isArray(t)?t:[t],n=window.document.documentElement;return r.some(function(a){return a in n.style})}return!1},Vy=function(t,r){if(!Iv(t))return!1;var n=document.createElement("div"),a=n.style[t];return n.style[t]=r,n.style[t]!==a};function ps(e,t){return!Array.isArray(e)&&t!==void 0?Vy(e,t):Iv(e)}var zy={getNow:function(){return Nt()},getFixedDate:function(t){return Nt(t,"YYYY-MM-DD")},getEndDate:function(t){var r=t.clone();return r.endOf("month")},getWeekDay:function(t){var r=t.clone().locale("en_US");return r.weekday()+r.localeData().firstDayOfWeek()},getYear:function(t){return t.year()},getMonth:function(t){return t.month()},getDate:function(t){return t.date()},getHour:function(t){return t.hour()},getMinute:function(t){return t.minute()},getSecond:function(t){return t.second()},addYear:function(t,r){var n=t.clone();return n.add(r,"year")},addMonth:function(t,r){var n=t.clone();return n.add(r,"month")},addDate:function(t,r){var n=t.clone();return n.add(r,"day")},setYear:function(t,r){var n=t.clone();return n.year(r)},setMonth:function(t,r){var n=t.clone();return n.month(r)},setDate:function(t,r){var n=t.clone();return n.date(r)},setHour:function(t,r){var n=t.clone();return n.hour(r)},setMinute:function(t,r){var n=t.clone();return n.minute(r)},setSecond:function(t,r){var n=t.clone();return n.second(r)},isAfter:function(t,r){return t.isAfter(r)},isValidate:function(t){return t.isValid()},locale:{getWeekFirstDay:function(t){var r=Nt().locale(t);return r.localeData().firstDayOfWeek()},getWeekFirstDate:function(t,r){var n=r.clone(),a=n.locale(t);return a.weekday(0)},getWeek:function(t,r){var n=r.clone(),a=n.locale(t);return a.week()},getShortWeekDays:function(t){var r=Nt().locale(t);return r.localeData().weekdaysMin()},getShortMonths:function(t){var r=Nt().locale(t);return r.localeData().monthsShort()},format:function(t,r,n){var a=r.clone(),o=a.locale(t);return o.format(n)},parse:function(t,r,n){for(var a=[],o=0;o1&&(s=t.addDate(s,-7)),s}function mo(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;switch(t){case"year":return r.addYear(e,n*10);case"quarter":case"month":return r.addYear(e,n);default:return r.addMonth(e,n)}}function en(e,t){var r=t.generateConfig,n=t.locale,a=t.format;return typeof a=="function"?a(e):r.locale.format(n.locale,e,a)}function Bv(e,t){var r=t.generateConfig,n=t.locale,a=t.formatList;return!e||typeof a[0]=="function"?null:r.locale.parse(n.locale,e,a)}function bs(e){var t=e.cellDate,r=e.mode,n=e.disabledDate,a=e.generateConfig;if(!n)return!1;var o=function(p,g,y){for(var b=g;b<=y;){var C=void 0;switch(p){case"date":{if(C=a.setDate(t,b),!n(C))return!1;break}case"month":{if(C=a.setMonth(t,b),!bs({cellDate:C,mode:"month",generateConfig:a,disabledDate:n}))return!1;break}case"year":{if(C=a.setYear(t,b),!bs({cellDate:C,mode:"year",generateConfig:a,disabledDate:n}))return!1;break}}b+=1}return!0};switch(r){case"date":case"week":return n(t);case"month":{var s=1,l=a.getDate(a.getEndDate(t));return o("date",s,l)}case"quarter":{var u=Math.floor(a.getMonth(t)/3)*3,c=u+2;return o("month",u,c)}case"year":return o("month",0,11);case"decade":{var d=a.getYear(t),f=Math.floor(d/On)*On,v=f+On-1;return o("year",f,v)}}}function lb(e){var t=i.useContext(gn),r=t.hideHeader;if(r)return null;var n=e.prefixCls,a=e.generateConfig,o=e.locale,s=e.value,l=e.format,u="".concat(n,"-header");return i.createElement(Aa,{prefixCls:u},s?en(s,{locale:o,format:l,generateConfig:a}):" ")}function sb(e){var t=e.value,r=e.generateConfig,n=e.disabledMinutes,a=e.disabledSeconds,o=e.minutes,s=e.seconds,l=e.use12Hours,u=function(d,f,v,m){var p=t||r.getNow(),g=Math.max(0,f),y=Math.max(0,v),b=Math.max(0,m),C=n&&n(g);if(C!=null&&C.includes(y)){var S=o.find(function(w){return!C.includes(w.value)});if(S)y=S.value;else return null}var P=a&&a(g,y);if(P!=null&&P.includes(b)){var E=s.find(function(w){return!P.includes(w.value)});if(E)b=E.value;else return null}return p=_v(r,p,!l||!d?g:g+12,y,b),p};return u}function Hv(e,t){for(var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0",n=String(e);n.length=1?r|0:1,s=e;s<=t;s+=o)a.push({label:Hv(s,2),value:s,disabled:(n||[]).includes(s)});return a}function db(e){var t=e.generateConfig,r=e.prefixCls,n=e.operationRef,a=e.activeColumnIndex,o=e.value,s=e.showHour,l=e.showMinute,u=e.showSecond,c=e.use12Hours,d=e.hourStep,f=d===void 0?1:d,v=e.minuteStep,m=v===void 0?1:v,p=e.secondStep,g=p===void 0?1:p,y=e.disabledHours,b=e.disabledMinutes,C=e.disabledSeconds,S=e.disabledTime,P=e.hideDisabledOptions,E=e.onSelect,w=[],F="".concat(r,"-content"),$="".concat(r,"-time-panel"),k,O=o?t.getHour(o):-1,D=O,R=o?t.getMinute(o):-1,T=o?t.getSecond(o):-1,N=t.getNow(),M=i.useMemo(function(){if(S){var G=S(N);return[G.disabledHours,G.disabledMinutes,G.disabledSeconds]}return[y,b,C]},[y,b,C,S,N]),I=U(M,3),L=I[0],j=I[1],_=I[2],K=Hl(0,23,f,L&&L()),z=cu(function(){return K},K,cb);c&&(k=D>=12,D%=12);var A=i.useMemo(function(){if(!c)return[!1,!1];var G=[!0,!0];return z.forEach(function(te){var ee=te.disabled,le=te.value;ee||(le>=12?G[1]=!1:G[0]=!1)}),G},[c,z]),V=U(A,2),X=V[0],H=V[1],Q=i.useMemo(function(){return c?z.filter(k?function(G){return G.value>=12}:function(G){return G.value<12}).map(function(G){var te=G.value%12,ee=te===0?"12":Hv(te,2);return h(h({},G),{},{label:ee,value:te})}):z},[c,k,z]),Y=Hl(0,59,m,j&&j(O)),ae=Hl(0,59,g,_&&_(O,R)),q=sb({value:o,generateConfig:t,disabledMinutes:j,disabledSeconds:_,minutes:Y,seconds:ae,use12Hours:c});n.current={onUpDown:function(te){var ee=w[a];if(ee)for(var le=ee.units.findIndex(function(me){return me.value===ee.value}),re=ee.units.length,ge=1;ge2&&arguments[2]!==void 0?arguments[2]:!1;(Pe===g||dt)&&(fe(xe),F&&F(xe),ae&&ae(xe,Je),$&&!wa(l,xe,ce)&&!(v!=null&&v(xe))&&$(xe))},mt=function(xe){if(Fb.includes(Pe)){var Je,dt,ut=Pe==="date";switch(xe===Be.PAGE_UP||xe===Be.PAGE_DOWN?dt=ut?l.addMonth:l.addYear:dt=ut?l.addDate:l.addMonth,xe){case Be.LEFT:case Be.PAGE_UP:Je=dt(pe,-1);break;case Be.RIGHT:case Be.PAGE_DOWN:Je=dt(pe,1);break;case Be.UP:case Be.DOWN:Je=dt(pe,Number("".concat(xe===Be.UP?"-":"").concat(ut?vo:wu)));break}if(Je)return!(v!=null&&v(Je))}return!0},tt=function(xe){if(re.current&&re.current.onKeyDown){var Je=!0,dt=xe.which;if([Be.LEFT,Be.RIGHT,Be.UP,Be.DOWN,Be.PAGE_UP,Be.PAGE_DOWN,Be.ENTER].includes(dt)&&(xe.preventDefault(),dt!==Be.ENTER&&b===0&&(Je=mt(dt))),Je)return re.current.onKeyDown(xe)}return on(!1,"Panel not correct handle keyDown event. Please help to fire issue about this."),!1},we=function(xe){re.current&&re.current.onBlur&&re.current.onBlur(xe)};Q&&te!=="right"&&(Q.current={onKeyDown:tt,onClose:function(){re.current&&re.current.onClose&&re.current.onClose()}}),i.useEffect(function(){u&&!ge.current&&Ce(u)},[u]),i.useEffect(function(){ge.current=!1},[]);var We,Te=h(h({},e),{},{operationRef:re,prefixCls:n,viewDate:pe,value:ce,onViewDateChange:Re,sourceMode:ct,onPanelChange:Ge,disabledDate:v});switch(delete Te.onChange,delete Te.onSelect,Pe){case"decade":We=i.createElement(rb,J({},Te,{onSelect:function(xe,Je){Re(xe),_e(xe,Je)}}));break;case"year":We=i.createElement(Tb,J({},Te,{onSelect:function(xe,Je){Re(xe),_e(xe,Je)}}));break;case"month":We=i.createElement(xb,J({},Te,{onSelect:function(xe,Je){Re(xe),_e(xe,Je)}}));break;case"quarter":We=i.createElement(kb,J({},Te,{onSelect:function(xe,Je){Re(xe),_e(xe,Je)}}));break;case"week":We=i.createElement(gb,J({},Te,{onSelect:function(xe,Je){Re(xe),_e(xe,Je)}}));break;case"time":delete Te.showTime,We=i.createElement(Yv,J({},Te,He(S)==="object"?S:null,{onSelect:function(xe,Je){Re(xe),_e(xe,Je)}}));break;default:S?We=i.createElement(hb,J({},Te,{onSelect:function(xe,Je){Re(xe),_e(xe,Je)}})):We=i.createElement(Su,J({},Te,{onSelect:function(xe,Je){Re(xe),_e(xe,Je)}}))}var Le,ye,de=function(){var xe=l.getNow(),Je=Uy(l.getHour(xe),l.getMinute(xe),l.getSecond(xe),A?I:1,V?j:1,X?K:1),dt=_v(l,xe,Je[0],Je[1],Je[2]);_e(dt,"submit")};q||(Le=Gv(n,Pe,E),ye=qv({prefixCls:n,components:T,needConfirmButton:z,okDisabled:!ce||v&&v(ce),locale:s,showNow:C,onNow:z&&de,onOk:function(){ce&&(_e(ce,"submit",!0),R&&R(ce))}}));var be;if(P&&Pe==="date"&&g==="date"&&!S){var Me=l.getNow(),Ye="".concat(n,"-today-btn"),lt=v&&v(Me);be=i.createElement("a",{className:ve(Ye,lt&&"".concat(Ye,"-disabled")),"aria-disabled":lt,onClick:function(){lt||_e(Me,"mouse",!0)}},s.today)}return i.createElement(gn.Provider,{value:h(h({},H),{},{mode:Pe,hideHeader:"hideHeader"in e?w:H.hideHeader,hidePrevBtn:G&&te==="right",hideNextBtn:G&&te==="left"})},i.createElement("div",{tabIndex:b,className:ve("".concat(n,"-panel"),a,(t={},B(t,"".concat(n,"-panel-has-range"),ee&&ee[0]&&ee[1]),B(t,"".concat(n,"-panel-has-range-hover"),le&&le[0]&&le[1]),B(t,"".concat(n,"-panel-rtl"),N==="rtl"),t)),style:o,onKeyDown:tt,onBlur:we,onMouseDown:O,ref:Y},We,Le||ye||be?i.createElement("div",{className:"".concat(n,"-footer")},Le,ye,be):null))}var Nb={bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}}};function Zv(e){var t,r=e.prefixCls,n=e.popupElement,a=e.popupStyle,o=e.visible,s=e.dropdownClassName,l=e.dropdownAlign,u=e.transitionName,c=e.getPopupContainer,d=e.children,f=e.range,v=e.popupPlacement,m=e.direction,p="".concat(r,"-dropdown"),g=function(){return v!==void 0?v:m==="rtl"?"bottomRight":"bottomLeft"};return i.createElement(fg,{showAction:[],hideAction:[],popupPlacement:g(),builtinPlacements:Nb,prefixCls:p,popupTransitionName:u,popup:n,popupAlign:l,popupVisible:o,popupClassName:ve(s,(t={},B(t,"".concat(p,"-range"),f),B(t,"".concat(p,"-rtl"),m==="rtl"),t)),popupStyle:a,getPopupContainer:c},d)}function xs(e){var t=e.open,r=e.value,n=e.isClickOutside,a=e.triggerOpen,o=e.forwardKeyDown,s=e.onKeyDown,l=e.blurToCancel,u=e.onSubmit,c=e.onCancel,d=e.onFocus,f=e.onBlur,v=e.currentFocusedKey,m=e.key,p=m===void 0?"start":m,g=i.useState(!1),y=U(g,2),b=y[0],C=y[1],S=i.useState(!1),P=U(S,2),E=P[0],w=P[1],F=i.useRef(),$=i.useRef(!1),k=i.useRef(!1),O=i.useRef(!1),D={onMouseDown:function(){C(!0),a(!0)},onKeyDown:function(T){var N=function(){O.current=!0};if(s(T,N),!O.current){switch(T.which){case Be.ENTER:{t?u()!==!1&&C(!0):a(!0),T.preventDefault();return}case Be.TAB:{b&&t&&!T.shiftKey?(C(!1),T.preventDefault()):!b&&t&&!o(T)&&T.shiftKey&&(C(!0),T.preventDefault());return}case Be.ESC:{C(!0),c();return}}!t&&![Be.SHIFT].includes(T.which)?a(!0):b||o(T)}},onFocus:function(T){C(!0),w(!0),v&&(v.current=p),clearTimeout(F.current),d&&d(T)},onBlur:function(T){if($.current||!n(document.activeElement)){$.current=!1;return}l?setTimeout(function(){for(var N=document,M=N.activeElement;M&&M.shadowRoot;)M=M.shadowRoot.activeElement;n(M)&&c()},0):t&&(a(!1),k.current&&u()),w(!1),v?(v.current="",F.current=setTimeout(function(){v.current||f==null||f(T)},100)):f==null||f(T)}};return i.useEffect(function(){k.current=!1},[t]),i.useEffect(function(){k.current=!0},[r]),i.useEffect(function(){return Xy(function(R){var T=Zy(R),N=n(T);t?N?(!E||N)&&a(!1):($.current=!0,requestAnimationFrame(function(){$.current=!1})):E&&!N&&($.current=!0)})}),i.useEffect(function(){return function(){return clearTimeout(F.current)}},[]),[D,{focused:E,typing:b}]}function Ss(e){var t=e.valueTexts,r=e.onTextChange,n=i.useState(""),a=U(n,2),o=a[0],s=a[1],l=i.useRef([]);l.current=t;function u(d){s(d),r(d)}function c(){s(l.current[0])}return i.useEffect(function(){t.every(function(d){return d!==o})&&c()},[t.join("||")]),[o,u,c]}function ji(e,t){var r=t.formatList,n=t.generateConfig,a=t.locale;return cu(function(){if(!e)return[[""],""];for(var o="",s=[],l=0;l1&&arguments[1]!==void 0?arguments[1]:!1;if(cancelAnimationFrame(c.current),b){u(y);return}c.current=requestAnimationFrame(function(){u(y)})}var f=ji(l,{formatList:r,generateConfig:n,locale:a}),v=U(f,2),m=v[1];function p(y){d(y)}function g(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;d(null,y)}return i.useEffect(function(){g(!0)},[e]),i.useEffect(function(){return function(){return cancelAnimationFrame(c.current)}},[]),[m,p,g]}function $b(e){var t,r=e.prefixCls,n=r===void 0?"rc-picker":r,a=e.id,o=e.tabIndex,s=e.style,l=e.className,u=e.dropdownClassName,c=e.dropdownAlign,d=e.popupStyle,f=e.transitionName,v=e.generateConfig,m=e.locale,p=e.inputReadOnly,g=e.allowClear,y=e.autoFocus,b=e.showTime,C=e.picker,S=C===void 0?"date":C,P=e.format,E=e.use12Hours,w=e.value,F=e.defaultValue,$=e.open,k=e.defaultOpen,O=e.defaultOpenValue,D=e.suffixIcon,R=e.clearIcon,T=e.disabled,N=e.disabledDate,M=e.placeholder,I=e.getPopupContainer,L=e.pickerRef,j=e.panelRender,_=e.onChange,K=e.onOpenChange,z=e.onFocus,A=e.onBlur,V=e.onMouseDown,X=e.onMouseUp,H=e.onMouseEnter,Q=e.onMouseLeave,Y=e.onContextMenu,ae=e.onClick,q=e.onKeyDown,ne=e.onSelect,ue=e.direction,G=e.autoComplete,te=G===void 0?"off":G,ee=e.inputRender,le=i.useRef(null),re=S==="date"&&!!b||S==="time",ge=Wv(jv(P,S,b,E)),Ee=i.useRef(null),me=i.useRef(null),ce=i.useRef(null),fe=kt(null,{value:w,defaultValue:F}),ie=U(fe,2),se=ie[0],pe=ie[1],Ce=i.useState(se),Re=U(Ce,2),Fe=Re[0],Se=Re[1],ke=i.useRef(null),Pe=kt(!1,{value:$,defaultValue:k,postState:function(De){return T?!1:De},onChange:function(De){K&&K(De),!De&&ke.current&&ke.current.onClose&&ke.current.onClose()}}),Qe=U(Pe,2),et=Qe[0],vt=Qe[1],ct=ji(Fe,{formatList:ge,generateConfig:v,locale:m}),ht=U(ct,2),Ge=ht[0],_e=ht[1],mt=Ss({valueTexts:Ge,onTextChange:function(De){var Oe=Bv(De,{locale:m,formatList:ge,generateConfig:v});Oe&&(!N||!N(Oe))&&Se(Oe)}}),tt=U(mt,3),we=tt[0],We=tt[1],Te=tt[2],Le=function(De){Se(De),pe(De),_&&!wa(v,se,De)&&_(De,De?en(De,{generateConfig:v,locale:m,format:ge[0]}):"")},ye=function(De){T&&De||vt(De)},de=function(De){return et&&ke.current&&ke.current.onKeyDown?ke.current.onKeyDown(De):(on(!1,"Picker not correct forward KeyDown operation. Please help to fire issue about this."),!1)},be=function(){for(var De=arguments.length,Oe=new Array(De),Ue=0;Uem(d);case"month":return v(y)>v(d);case"week":return f(y)>f(d);default:return!or(u,y,d)&&u.isAfter(y,d)}return!1},[s,l[1],d,t]),g=i.useCallback(function(y){if(s&&s(y))return!0;if(l[0]&&c)return!or(u,y,d)&&u.isAfter(c,y);if(r&&c)switch(n){case"quarter":return m(y)0&&arguments[0]!==void 0?arguments[0]:!1,Ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},rt=null;Ie&&Tn&&Tn[0]&&Tn[1]&&p.isAfter(Tn[1],Tn[0])&&(rt=Tn);var wt=w;if(w&&He(w)==="object"&&w.defaultValue){var Ut=w.defaultValue;wt=h(h({},w),{},{defaultValue:Et(Ut,we)||void 0})}var Wr=null;return L&&(Wr=function(Nn,An){return L(Nn,An,{range:we?"end":"start"})}),i.createElement(Va.Provider,{value:{inRange:!0,panelPosition:bt,rangedValue:pr||ut,hoverRangedValue:rt}},i.createElement(Xv,J({},e,Ae,{dateRender:Wr,showTime:wt,mode:Ft[we],generateConfig:p,style:void 0,direction:se,disabledDate:we===0?Ze:Xe,disabledTime:function(Nn){return I?I(Nn,we===0?"start":"end"):!1},className:ve(B({},"".concat(o,"-panel-focused"),we===0?!qe:!ln)),value:Et(ut,we),locale:g,tabIndex:-1,onPanelChange:function(Nn,An){we===0&&Br(!0),we===1&&va(!0),ot(wn(Ft,An,we),wn(ut,Nn,we));var Jn=Nn;bt==="right"&&Ft[we]===An&&(Jn=mo(Jn,An,p,-1)),xe(Jn,we)},onOk:null,onSelect:void 0,onChange:void 0,defaultValue:we===0?Et(ut,1):Et(ut,0)})))}var br=0,nc=0;if(we&&Qe.current&&vt.current&&Pe.current){br=Qe.current.offsetWidth+vt.current.offsetWidth;var zh=Ge.current.offsetLeft>br?Ge.current.offsetLeft-br:Ge.current.offsetLeft;Pe.current.offsetWidth&&Ge.current.offsetWidth&&br>Pe.current.offsetWidth-Ge.current.offsetWidth-(se==="rtl"?0:zh)&&(nc=br)}var Bh=se==="rtl"?{right:br}:{left:br};function Hh(){var bt,Ae=Gv(o,Ft[we],Y),rt=qv({prefixCls:o,components:fe,needConfirmButton:Fe,okDisabled:!Et(ut,we)||M&&M(ut[we]),locale:g,rangeList:Vh,onOk:function(){Et(ut,we)&&(Xn(ut,we),me&&me(ut))}});if(E!=="time"&&!w){var wt=$e(we),Ut=mo(wt,E,p),Wr=Ft[we],Qn=Wr===E,Nn=Kl(Qn?"left":!1,{pickerValue:wt,onPickerValueChange:function(dn){xe(dn,we)}}),An=Kl("right",{pickerValue:Ut,onPickerValueChange:function(dn){xe(mo(dn,E,p,-1),we)}});se==="rtl"?bt=i.createElement(i.Fragment,null,An,Qn&&Nn):bt=i.createElement(i.Fragment,null,Nn,Qn&&An)}else bt=Kl();var Jn=i.createElement(i.Fragment,null,i.createElement("div",{className:"".concat(o,"-panels")},bt),(Ae||rt)&&i.createElement("div",{className:"".concat(o,"-footer")},Ae,rt));return j&&(Jn=j(Jn)),i.createElement("div",{className:"".concat(o,"-panel-container"),style:{marginLeft:nc},ref:Pe,onMouseDown:function(dn){dn.preventDefault()}},Jn)}var Wh=i.createElement("div",{className:ve("".concat(o,"-range-wrapper"),"".concat(o,"-").concat(E,"-range-wrapper")),style:{minWidth:At}},i.createElement("div",{ref:Ge,className:"".concat(o,"-range-arrow"),style:Bh}),Hh()),rc;A&&(rc=i.createElement("span",{className:"".concat(o,"-suffix")},A));var ac;z&&(Et(be,0)&&!Le[0]||Et(be,1)&&!Le[1])&&(ac=i.createElement("span",{onMouseDown:function(Ae){Ae.preventDefault(),Ae.stopPropagation()},onMouseUp:function(Ae){Ae.preventDefault(),Ae.stopPropagation();var rt=be;Le[0]||(rt=wn(rt,null,0)),Le[1]||(rt=wn(rt,null,1)),Xn(rt,null),Sn(!1,we)},className:"".concat(o,"-clear")},V||i.createElement("span",{className:"".concat(o,"-clear-btn")})));var oc={size:Av(E,_e[0],p)},Vl=0,zl=0;Qe.current&&et.current&&vt.current&&(we===0?zl=Qe.current.offsetWidth:(Vl=br,zl=et.current.offsetWidth));var Uh=se==="rtl"?{right:Vl}:{left:Vl},Yh=function(Ae,rt){var wt=wn(ut,Ae,we);rt==="submit"||rt!=="key"&&!Fe?(Xn(wt,we),we===0?Br():va()):$t(wt)};return i.createElement(gn.Provider,{value:{operationRef:Te,hideHeader:E==="time",onDateMouseEnter:Al,onDateMouseLeave:ci,hideRanges:!0,onSelect:Yh,open:Ie}},i.createElement(Zv,{visible:Ie,popupElement:Wh,popupStyle:c,prefixCls:o,dropdownClassName:d,dropdownAlign:v,getPopupContainer:m,transitionName:f,range:!0,direction:se},i.createElement("div",J({ref:ke,className:ve(o,"".concat(o,"-range"),u,(t={},B(t,"".concat(o,"-disabled"),Le[0]&&Le[1]),B(t,"".concat(o,"-focused"),we===0?he:Ot),B(t,"".concat(o,"-rtl"),se==="rtl"),t)),style:l,onClick:sn,onMouseEnter:re,onMouseLeave:ge,onMouseDown:Hr,onMouseUp:le},Uv(e)),i.createElement("div",{className:ve("".concat(o,"-input"),(r={},B(r,"".concat(o,"-input-active"),we===0),B(r,"".concat(o,"-input-placeholder"),!!li),r)),ref:Qe},i.createElement("input",J({id:s,disabled:Le[0],readOnly:H||typeof _e[0]=="function"||!qe,value:li||mr,onChange:function(Ae){da(Ae.target.value)},autoFocus:b,placeholder:Et(y,0)||"",ref:ct},W,oc,{autoComplete:Re}))),i.createElement("div",{className:"".concat(o,"-range-separator"),ref:vt},k),i.createElement("div",{className:ve("".concat(o,"-input"),(n={},B(n,"".concat(o,"-input-active"),we===1),B(n,"".concat(o,"-input-placeholder"),!!yr),n)),ref:et},i.createElement("input",J({disabled:Le[1],readOnly:H||typeof _e[0]=="function"||!ln,value:yr||Ct,onChange:function(Ae){_t(Ae.target.value)},placeholder:Et(y,1)||"",ref:ht},Lt,oc,{autoComplete:Re}))),i.createElement("div",{className:"".concat(o,"-active-bar"),style:h(h({},Uh),{},{width:zl,position:"absolute"})}),rc,ac)))}var Ab=function(e){yn(r,e);var t=bn(r);function r(){var n;Cn(this,r);for(var a=arguments.length,o=new Array(a),s=0;sN?(R=O,w.current="x"):(R=D,w.current="y"),t(-R,-R)&&k.preventDefault()}var $=i.useRef(null);$.current={onTouchStart:S,onTouchMove:P,onTouchEnd:E,onWheel:F},i.useEffect(function(){function k(T){$.current.onTouchStart(T)}function O(T){$.current.onTouchMove(T)}function D(T){$.current.onTouchEnd(T)}function R(T){$.current.onWheel(T)}return document.addEventListener("touchmove",O,{passive:!1}),document.addEventListener("touchend",D,{passive:!1}),e.current.addEventListener("touchstart",k,{passive:!1}),e.current.addEventListener("wheel",R),function(){document.removeEventListener("touchmove",O),document.removeEventListener("touchend",D)}},[])}function Jv(e){var t=i.useState(0),r=U(t,2),n=r[0],a=r[1],o=i.useRef(0),s=i.useRef();return s.current=e,vg(function(){var l;(l=s.current)===null||l===void 0||l.call(s)},[n]),function(){o.current===n&&(o.current+=1,a(o.current))}}function Wb(e){var t=i.useRef([]),r=i.useState({}),n=U(r,2),a=n[1],o=i.useRef(typeof e=="function"?e():e),s=Jv(function(){var u=o.current;t.current.forEach(function(c){u=c(u)}),t.current=[],o.current=u,a({})});function l(u){t.current.push(u),s()}return[o.current,l]}var Pc={width:0,height:0,left:0,top:0,right:0};function Ub(e,t,r,n,a,o,s){var l=s.tabs,u=s.tabPosition,c=s.rtl,d,f,v;return["top","bottom"].includes(u)?(d="width",f=c?"right":"left",v=Math.abs(r)):(d="height",f="top",v=-r),i.useMemo(function(){if(!l.length)return[0,0];for(var m=l.length,p=m,g=0;gv+t){p=g-1;break}}for(var b=0,C=m-1;C>=0;C-=1){var S=e.get(l[C].key)||Pc;if(S[f]Xe?"left":"right"})}),T=U(R,2),N=T[0],M=T[1],I=xc(0,function(Ze,Xe){!D&&S&&S({direction:Ze>Xe?"top":"bottom"})}),L=U(I,2),j=L[0],_=L[1],K=i.useState([0,0]),z=U(K,2),A=z[0],V=z[1],X=i.useState([0,0]),H=U(X,2),Q=H[0],Y=H[1],ae=i.useState([0,0]),q=U(ae,2),ne=q[0],ue=q[1],G=i.useState([0,0]),te=U(G,2),ee=te[0],le=te[1],re=Wb(new Map),ge=U(re,2),Ee=ge[0],me=ge[1],ce=zb(o,Ee,Q[0]),fe=Si(A,D),ie=Si(Q,D),se=Si(ne,D),pe=Si(ee,D),Ce=feke?ke:Ze}var Qe=i.useRef(),et=i.useState(),vt=U(et,2),ct=vt[0],ht=vt[1];function Ge(){ht(Date.now())}function _e(){window.clearTimeout(Qe.current)}Hb(F,function(Ze,Xe){function Ne(je,Ie){je(function(De){var Oe=Pe(De+Ie);return Oe})}return Ce?(D?Ne(M,Ze):Ne(_,Xe),_e(),Ge(),!0):!1}),i.useEffect(function(){return _e(),ct&&(Qe.current=window.setTimeout(function(){ht(0)},100)),_e},[ct]);var mt=Ub(ce,Re,D?N:j,ie,se,pe,h(h({},e),{},{tabs:o})),tt=U(mt,2),we=tt[0],We=tt[1],Te=Zf(function(){var Ze=arguments.length>0&&arguments[0]!==void 0?arguments[0]:d,Xe=ce.get(Ze)||{width:0,height:0,left:0,right:0,top:0};if(D){var Ne=N;f?Xe.rightN+Re&&(Ne=Xe.right+Xe.width-Re):Xe.left<-N?Ne=-Xe.left:Xe.left+Xe.width>-N+Re&&(Ne=-(Xe.left+Xe.width-Re)),_(0),M(Pe(Ne))}else{var je=j;Xe.top<-j?je=-Xe.top:Xe.top+Xe.height>-j+Re&&(je=-(Xe.top+Xe.height-Re)),M(0),_(Pe(je))}}),Le={};g==="top"||g==="bottom"?Le[f?"marginRight":"marginLeft"]=y:Le.marginTop=y;var ye=o.map(function(Ze,Xe){var Ne=Ze.key;return i.createElement(Zb,{id:u,prefixCls:a,key:Ne,tab:Ze,style:Xe===0?void 0:Le,closable:Ze.closable,editable:m,active:Ne===d,renderWrapper:b,removeAriaLabel:p==null?void 0:p.removeAriaLabel,onClick:function(Ie){C(Ne,Ie)},onFocus:function(){Te(Ne),Ge(),F.current&&(f||(F.current.scrollLeft=0),F.current.scrollTop=0)}})}),de=function(){return me(function(){var Xe=new Map;return o.forEach(function(Ne){var je,Ie=Ne.key,De=(je=$.current)===null||je===void 0?void 0:je.querySelector('[data-node-key="'.concat(em(Ie),'"]'));De&&Xe.set(Ie,{width:De.offsetWidth,height:De.offsetHeight,left:De.offsetLeft,top:De.offsetTop})}),Xe})};i.useEffect(function(){de()},[o.map(function(Ze){return Ze.key}).join("_")]);var be=Jv(function(){var Ze=ma(P),Xe=ma(E),Ne=ma(w);V([Ze[0]-Xe[0]-Ne[0],Ze[1]-Xe[1]-Ne[1]]);var je=ma(O);ue(je);var Ie=ma(k);le(Ie);var De=ma($);Y([De[0]-je[0],De[1]-je[1]]),de()}),Me=o.slice(0,we),Ye=o.slice(We+1),lt=[].concat(Ke(Me),Ke(Ye)),$e=i.useState(),xe=U($e,2),Je=xe[0],dt=xe[1],ut=ce.get(d),$t=i.useRef();function Dt(){Jr.cancel($t.current)}i.useEffect(function(){var Ze={};return ut&&(D?(f?Ze.right=ut.right:Ze.left=ut.left,Ze.width=ut.width):(Ze.top=ut.top,Ze.height=ut.height)),Dt(),$t.current=Jr(function(){dt(Ze)}),Dt},[ut,D,f]),i.useEffect(function(){Te()},[d,Se,ke,Ec(ut),Ec(ce),D]),i.useEffect(function(){be()},[f]);var Rt=!!lt.length,Ft="".concat(a,"-nav-wrap"),nt,ot,ft,it;return D?f?(ot=N>0,nt=N!==ke):(nt=N<0,ot=N!==Se):(ft=j<0,it=j!==Se),i.createElement(Tr,{onResize:be},i.createElement("div",{ref:Gh(t,P),role:"tablist",className:ve("".concat(a,"-nav"),s),style:l,onKeyDown:function(){Ge()}},i.createElement(kc,{ref:E,position:"left",extra:v,prefixCls:a}),i.createElement("div",{className:ve(Ft,(r={},B(r,"".concat(Ft,"-ping-left"),nt),B(r,"".concat(Ft,"-ping-right"),ot),B(r,"".concat(Ft,"-ping-top"),ft),B(r,"".concat(Ft,"-ping-bottom"),it),r)),ref:F},i.createElement(Tr,{onResize:be},i.createElement("div",{ref:$,className:"".concat(a,"-nav-list"),style:{transform:"translate(".concat(N,"px, ").concat(j,"px)"),transition:ct?"none":void 0}},ye,i.createElement(tm,{ref:O,prefixCls:a,locale:p,editable:m,style:h(h({},ye.length===0?void 0:Le),{},{visibility:Rt?"hidden":null})}),i.createElement("div",{className:ve("".concat(a,"-ink-bar"),B({},"".concat(a,"-ink-bar-animated"),c.inkBar)),style:Je})))),i.createElement(Xb,J({},e,{removeAriaLabel:p==null?void 0:p.removeAriaLabel,ref:k,prefixCls:a,tabs:lt,className:!Rt&&Fe,tabMoving:!!ct})),i.createElement(kc,{ref:w,position:"right",extra:v,prefixCls:a})))}const Rc=i.forwardRef(Qb);var Jb=["renderTabBar"],eC=["label","key"];function tC(e){var t=e.renderTabBar,r=ze(e,Jb),n=i.useContext(ml),a=n.tabs;if(t){var o=h(h({},r),{},{panes:a.map(function(s){var l=s.label,u=s.key,c=ze(s,eC);return i.createElement(Qv,J({tab:l,key:u,tabKey:u},c))})});return t(o,Rc)}return i.createElement(Rc,r)}function nC(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{inkBar:!0,tabPane:!1},t;return e===!1?t={inkBar:!1,tabPane:!1}:e===!0?t={inkBar:!0,tabPane:!1}:t=h({inkBar:!0},He(e)==="object"?e:{}),t.tabPaneMotion&&t.tabPane===void 0&&(t.tabPane=!0),!t.tabPaneMotion&&t.tabPane&&(t.tabPane=!1),t}var rC=["id","prefixCls","className","items","direction","activeKey","defaultActiveKey","editable","animated","tabPosition","tabBarGutter","tabBarStyle","tabBarExtraContent","locale","moreIcon","moreTransitionName","destroyInactiveTabPane","renderTabBar","onChange","onTabClick","onTabScroll","getPopupContainer","popupClassName"],Mc=0;function aC(e,t){var r,n=e.id,a=e.prefixCls,o=a===void 0?"rc-tabs":a,s=e.className,l=e.items,u=e.direction,c=e.activeKey,d=e.defaultActiveKey,f=e.editable,v=e.animated,m=e.tabPosition,p=m===void 0?"top":m,g=e.tabBarGutter,y=e.tabBarStyle,b=e.tabBarExtraContent,C=e.locale,S=e.moreIcon,P=e.moreTransitionName,E=e.destroyInactiveTabPane,w=e.renderTabBar,F=e.onChange,$=e.onTabClick,k=e.onTabScroll,O=e.getPopupContainer,D=e.popupClassName,R=ze(e,rC),T=i.useMemo(function(){return(l||[]).filter(function(re){return re&&He(re)==="object"&&"key"in re})},[l]),N=u==="rtl",M=nC(v),I=i.useState(!1),L=U(I,2),j=L[0],_=L[1];i.useEffect(function(){_(mg())},[]);var K=kt(function(){var re;return(re=T[0])===null||re===void 0?void 0:re.key},{value:c,defaultValue:d}),z=U(K,2),A=z[0],V=z[1],X=i.useState(function(){return T.findIndex(function(re){return re.key===A})}),H=U(X,2),Q=H[0],Y=H[1];i.useEffect(function(){var re=T.findIndex(function(Ee){return Ee.key===A});if(re===-1){var ge;re=Math.max(0,Math.min(Q,T.length-1)),V((ge=T[re])===null||ge===void 0?void 0:ge.key)}Y(re)},[T.map(function(re){return re.key}).join("_"),A,Q]);var ae=kt(null,{value:n}),q=U(ae,2),ne=q[0],ue=q[1];i.useEffect(function(){n||(ue("rc-tabs-".concat(Mc)),Mc+=1)},[]);function G(re,ge){$==null||$(re,ge);var Ee=re!==A;V(re),Ee&&(F==null||F(re))}var te={id:ne,activeKey:A,animated:M,tabPosition:p,rtl:N,mobile:j},ee,le=h(h({},te),{},{editable:f,locale:C,moreIcon:S,moreTransitionName:P,tabBarGutter:g,onTabClick:G,onTabScroll:k,extra:b,style:y,panes:null,getPopupContainer:O,popupClassName:D});return i.createElement(ml.Provider,{value:{tabs:T,prefixCls:o}},i.createElement("div",J({ref:t,id:n,className:ve(o,"".concat(o,"-").concat(p),(r={},B(r,"".concat(o,"-mobile"),j),B(r,"".concat(o,"-editable"),f),B(r,"".concat(o,"-rtl"),N),r),s)},R),ee,i.createElement(tC,J({},le,{renderTabBar:w})),i.createElement(Vb,J({destroyInactiveTabPane:E},te,{animated:M}))))}var oC=i.forwardRef(aC),iC={motionAppear:!1,motionEnter:!0,motionLeave:!0};function lC(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inkBar:!0,tabPane:!1},r;return t===!1?r={inkBar:!1,tabPane:!1}:t===!0?r={inkBar:!0,tabPane:!0}:r=J({inkBar:!0},He(t)==="object"?t:{}),r.tabPane&&(r.tabPaneMotion=J(J({},iC),{motionName:ir(e,"switch")})),r}var sC=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a=0;c-=1){var d=t.get(c)||new Set;d.forEach(function(f){var v=f.parent,m=f.node;if(!(n(m)||!f.parent||u.has(f.parent.key))){if(n(f.parent.node)){u.add(v.key);return}var p=!0,g=!1;(v.children||[]).filter(function(y){return!n(y.node)}).forEach(function(y){var b=y.key,C=a.has(b);p&&!C&&(p=!1),!g&&(C||o.has(b))&&(g=!0)}),p&&a.add(v.key),g&&o.add(v.key),u.add(v.key)}})}return{checkedKeys:Array.from(a),halfCheckedKeys:Array.from(nm(o,a))}}function hC(e,t,r,n,a){for(var o=new Set(e),s=new Set(t),l=0;l<=n;l+=1){var u=r.get(l)||new Set;u.forEach(function(v){var m=v.key,p=v.node,g=v.children,y=g===void 0?[]:g;!o.has(m)&&!s.has(m)&&!a(p)&&y.filter(function(b){return!a(b.node)}).forEach(function(b){o.delete(b.key)})})}s=new Set;for(var c=new Set,d=n;d>=0;d-=1){var f=r.get(d)||new Set;f.forEach(function(v){var m=v.parent,p=v.node;if(!(a(p)||!v.parent||c.has(v.parent.key))){if(a(v.parent.node)){c.add(m.key);return}var g=!0,y=!1;(m.children||[]).filter(function(b){return!a(b.node)}).forEach(function(b){var C=b.key,S=o.has(C);g&&!S&&(g=!1),!y&&(S||s.has(C))&&(y=!0)}),g||o.delete(m.key),y&&s.add(m.key),c.add(m.key)}})}return{checkedKeys:Array.from(o),halfCheckedKeys:Array.from(nm(s,o))}}function En(e,t,r,n){var a=[],o;n?o=n:o=mC;var s=new Set(e.filter(function(d){var f=!!mn(r,d);return f||a.push(d),f})),l=new Map,u=0;Object.keys(r).forEach(function(d){var f=r[d],v=f.level,m=l.get(v);m||(m=new Set,l.set(v,m)),m.add(f),u=Math.max(u,v)}),on(!a.length,"Tree missing follow keys: ".concat(a.slice(0,100).map(function(d){return"'".concat(d,"'")}).join(", ")));var c;return t===!0?c=pC(s,l,u,o):c=hC(s,t.halfCheckedKeys,l,u,o),c}var Ao=i.createContext(null),Pu="__RC_CASCADER_SPLIT__",rm="SHOW_PARENT",am="SHOW_CHILD";function kr(e){return e.join(Pu)}function ga(e){return e.map(kr)}function gC(e){return e.split(Pu)}function yC(e){var t=e||{},r=t.label,n=t.value,a=t.children,o=n||"value";return{label:r||"label",value:o,key:o,children:a||"children"}}function so(e,t){var r,n;return(r=e.isLeaf)!==null&&r!==void 0?r:!(!((n=e[t.children])===null||n===void 0)&&n.length)}function bC(e){var t=e.parentElement;if(t){var r=e.offsetTop-t.offsetTop;r-t.scrollTop<0?t.scrollTo({top:r}):r+e.offsetHeight-t.scrollTop>t.offsetHeight&&t.scrollTo({top:r+e.offsetHeight-t.offsetHeight})}}function Tc(e,t,r){var n=new Set(e),a=t();return e.filter(function(o){var s=a[o],l=s?s.parent:null,u=s?s.children:null;return r===am?!(u&&u.some(function(c){return c.key&&n.has(c.key)})):!(l&&!l.node.disabled&&n.has(l.key))})}function wo(e,t,r){for(var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=t,o=[],s=function(){var c,d,f,v=e[l],m=(c=a)===null||c===void 0?void 0:c.findIndex(function(g){var y=g[r.value];return n?String(y)===String(v):y===v}),p=m!==-1?(d=a)===null||d===void 0?void 0:d[m]:null;o.push({value:(f=p==null?void 0:p[r.value])!==null&&f!==void 0?f:v,index:m,option:p}),a=p==null?void 0:p[r.children]},l=0;l1&&arguments[1]!==void 0?arguments[1]:null;return d.map(function(v,m){for(var p=om(f?f.pos:"0",m),g=Ko(v[o],p),y,b=0;b1&&arguments[1]!==void 0?arguments[1]:{},r=t.initWrapper,n=t.processEntity,a=t.onProcessFinished,o=t.externalGetKey,s=t.childrenPropName,l=t.fieldNames,u=arguments.length>2?arguments[2]:void 0,c=o||u,d={},f={},v={posEntities:d,keyEntities:f};return r&&(v=r(v)||v),wC(e,function(m){var p=m.node,g=m.index,y=m.pos,b=m.key,C=m.parentPos,S=m.level,P=m.nodes,E={node:p,nodes:P,index:g,key:b,pos:y,level:S},w=Ko(b,y);d[y]=E,f[w]=E,E.parent=d[C],E.parent&&(E.parent.children=E.parent.children||[],E.parent.children.push(E)),n&&n(E,v)},{externalGetKey:c,childrenPropName:s,fieldNames:l}),a&&a(v),v}function po(e,t){var r=t.expandedKeys,n=t.selectedKeys,a=t.loadedKeys,o=t.loadingKeys,s=t.checkedKeys,l=t.halfCheckedKeys,u=t.dragOverNodeKey,c=t.dropPosition,d=t.keyEntities,f=mn(d,e),v={eventKey:e,expanded:r.indexOf(e)!==-1,selected:n.indexOf(e)!==-1,loaded:a.indexOf(e)!==-1,loading:o.indexOf(e)!==-1,checked:s.indexOf(e)!==-1,halfChecked:l.indexOf(e)!==-1,pos:String(f?f.pos:""),dragOver:u===e&&c===0,dragOverGapTop:u===e&&c===-1,dragOverGapBottom:u===e&&c===1};return v}function Yt(e){var t=e.data,r=e.expanded,n=e.selected,a=e.checked,o=e.loaded,s=e.loading,l=e.halfChecked,u=e.dragOver,c=e.dragOverGapTop,d=e.dragOverGapBottom,f=e.pos,v=e.active,m=e.eventKey,p=h(h({},t),{},{expanded:r,selected:n,checked:a,loaded:o,loading:s,halfChecked:l,dragOver:u,dragOverGapTop:c,dragOverGapBottom:d,pos:f,active:v,key:m});return"props"in p||Object.defineProperty(p,"props",{get:function(){return on(!1,"Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`."),e}}),p}const PC=function(e,t){var r=i.useRef({options:null,info:null}),n=i.useCallback(function(){return r.current.options!==e&&(r.current.options=e,r.current.info=Vo(e,{fieldNames:t,initWrapper:function(o){return h(h({},o),{},{pathKeyEntities:{}})},processEntity:function(o,s){var l=o.nodes.map(function(u){return u[t.value]}).join(Pu);s.pathKeyEntities[l]=o,o.key=l}})),r.current.info.pathKeyEntities},[t,e]);return n},EC=function(e,t){return i.useCallback(function(r){var n=[],a=[];return r.forEach(function(o){var s=wo(o,e,t);s.every(function(l){return l.option})?a.push(o):n.push(o)}),[a,n]},[e,t])};function Fc(e){var t=i.useRef();t.current=e;var r=i.useCallback(function(){return t.current.apply(t,arguments)},[]);return r}function kC(e){return i.useMemo(function(){if(!e)return[!1,{}];var t={matchInputWidth:!0,limit:50};return e&&He(e)==="object"&&(t=h(h({},t),e)),t.limit<=0&&delete t.limit,[!0,t]},[e])}var ho="__rc_cascader_search_mark__",RC=function(t,r,n){var a=n.label;return r.some(function(o){return String(o[a]).toLowerCase().includes(t.toLowerCase())})},MC=function(t,r,n,a){return r.map(function(o){return o[a.label]}).join(" / ")};const TC=function(e,t,r,n,a,o){var s=a.filter,l=s===void 0?RC:s,u=a.render,c=u===void 0?MC:u,d=a.limit,f=d===void 0?50:d,v=a.sort;return i.useMemo(function(){var m=[];if(!e)return[];function p(g,y){g.forEach(function(b){if(!(!v&&f>0&&m.length>=f)){var C=[].concat(Ke(y),[b]),S=b[r.children];if((!S||S.length===0||o)&&l(e,C,{label:r.label})){var P;m.push(h(h({},b),{},(P={},B(P,r.label,c(e,C,n,r)),B(P,ho,C),B(P,r.children,void 0),P)))}S&&p(b[r.children],C)}})}return p(t,[]),v&&m.sort(function(g,y){return v(g[ho],y[ho],e,r)}),f>0?m.slice(0,f):m},[e,t,r,n,c,o,l,v,f])};function FC(e){var t,r=e.prefixCls,n=e.checked,a=e.halfChecked,o=e.disabled,s=e.onClick,l=i.useContext(Ao),u=l.checkable,c=typeof u!="boolean"?u:null;return i.createElement("span",{className:ve("".concat(r),(t={},B(t,"".concat(r,"-checked"),n),B(t,"".concat(r,"-indeterminate"),!n&&a),B(t,"".concat(r,"-disabled"),o),t)),onClick:s},c)}var lm="__cascader_fix_label__";function NC(e){var t=e.prefixCls,r=e.multiple,n=e.options,a=e.activeValue,o=e.prevValuePath,s=e.onToggleOpen,l=e.onSelect,u=e.onActive,c=e.checkedSet,d=e.halfCheckedSet,f=e.loadingKeys,v=e.isSelectable,m="".concat(t,"-menu"),p="".concat(t,"-menu-item"),g=i.useContext(Ao),y=g.fieldNames,b=g.changeOnSelect,C=g.expandTrigger,S=g.expandIcon,P=g.loadingIcon,E=g.dropdownMenuColumnStyle,w=C==="hover",F=i.useMemo(function(){return n.map(function($){var k,O=$.disabled,D=$[ho],R=(k=$[lm])!==null&&k!==void 0?k:$[y.label],T=$[y.value],N=so($,y),M=D?D.map(function(K){return K[y.value]}):[].concat(Ke(o),[T]),I=kr(M),L=f.includes(I),j=c.has(I),_=d.has(I);return{disabled:O,label:R,value:T,isLeaf:N,isLoading:L,checked:j,halfChecked:_,option:$,fullPath:M,fullPathKey:I}})},[n,c,y,d,f,o]);return i.createElement("ul",{className:m,role:"menu"},F.map(function($){var k,O=$.disabled,D=$.label,R=$.value,T=$.isLeaf,N=$.isLoading,M=$.checked,I=$.halfChecked,L=$.option,j=$.fullPath,_=$.fullPathKey,K=function(){if(!O){var X=Ke(j);w&&T&&X.pop(),u(X)}},z=function(){v(L)&&l(j,T)},A;return typeof L.title=="string"?A=L.title:typeof D=="string"&&(A=D),i.createElement("li",{key:_,className:ve(p,(k={},B(k,"".concat(p,"-expand"),!T),B(k,"".concat(p,"-active"),a===R),B(k,"".concat(p,"-disabled"),O),B(k,"".concat(p,"-loading"),N),k)),style:E,role:"menuitemcheckbox",title:A,"aria-checked":M,"data-path-key":_,onClick:function(){K(),(!r||T)&&z()},onDoubleClick:function(){b&&s(!1)},onMouseEnter:function(){w&&K()},onMouseDown:function(X){X.preventDefault()}},r&&i.createElement(FC,{prefixCls:"".concat(t,"-checkbox"),checked:M,halfChecked:I,disabled:O,onClick:function(X){X.stopPropagation(),z()}}),i.createElement("div",{className:"".concat(p,"-content")},D),!N&&S&&!T&&i.createElement("div",{className:"".concat(p,"-expand-icon")},S),N&&P&&i.createElement("div",{className:"".concat(p,"-loading-icon")},P))}))}const $C=function(){var e=fl(),t=e.multiple,r=e.open,n=i.useContext(Ao),a=n.values,o=i.useState([]),s=U(o,2),l=s[0],u=s[1];return i.useEffect(function(){if(r&&!t){var c=a[0];u(c||[])}},[r]),[l,u]},DC=function(e,t,r,n,a,o){var s=fl(),l=s.direction,u=s.searchValue,c=s.toggleOpen,d=s.open,f=l==="rtl",v=i.useMemo(function(){for(var E=-1,w=t,F=[],$=[],k=n.length,O=function(I){var L=w.findIndex(function(j){return j[r.value]===n[I]});if(L===-1)return"break";E=L,F.push(E),$.push(n[I]),w=w[E][r.children]},D=0;D1){var w=p.slice(0,-1);b(w)}else c(!1)},P=function(){var w,F=((w=y[g])===null||w===void 0?void 0:w[r.children])||[],$=F.find(function(O){return!O.disabled});if($){var k=[].concat(Ke(p),[$[r.value]]);b(k)}};i.useImperativeHandle(e,function(){return{onKeyDown:function(w){var F=w.which;switch(F){case Be.UP:case Be.DOWN:{var $=0;F===Be.UP?$=-1:F===Be.DOWN&&($=1),$!==0&&C($);break}case Be.LEFT:{if(u)break;f?P():S();break}case Be.RIGHT:{if(u)break;f?S():P();break}case Be.BACKSPACE:{u||S();break}case Be.ENTER:{if(p.length){var k=y[g],O=(k==null?void 0:k[ho])||[];O.length?o(O.map(function(D){return D[r.value]}),O[O.length-1]):o(p,y[g])}break}case Be.ESC:c(!1),d&&w.stopPropagation()}},onKeyUp:function(){}}})};var OC=i.forwardRef(function(e,t){var r,n,a,o,s=fl(),l=s.prefixCls,u=s.multiple,c=s.searchValue,d=s.toggleOpen,f=s.notFoundContent,v=s.direction,m=i.useRef(),p=v==="rtl",g=i.useContext(Ao),y=g.options,b=g.values,C=g.halfValues,S=g.fieldNames,P=g.changeOnSelect,E=g.onSelect,w=g.searchOptions,F=g.dropdownPrefixCls,$=g.loadData,k=g.expandTrigger,O=F||l,D=i.useState([]),R=U(D,2),T=R[0],N=R[1],M=function(ee){if(!(!$||c)){var le=wo(ee,y,S),re=le.map(function(me){var ce=me.option;return ce}),ge=re[re.length-1];if(ge&&!so(ge,S)){var Ee=kr(ee);N(function(me){return[].concat(Ke(me),[Ee])}),$(re)}}};i.useEffect(function(){T.length&&T.forEach(function(te){var ee=gC(te),le=wo(ee,y,S,!0).map(function(ge){var Ee=ge.option;return Ee}),re=le[le.length-1];(!re||re[S.children]||so(re,S))&&N(function(ge){return ge.filter(function(Ee){return Ee!==te})})})},[y,T,S]);var I=i.useMemo(function(){return new Set(ga(b))},[b]),L=i.useMemo(function(){return new Set(ga(C))},[C]),j=$C(),_=U(j,2),K=_[0],z=_[1],A=function(ee){z(ee),M(ee)},V=function(ee){var le=ee.disabled,re=so(ee,S);return!le&&(re||P||u)},X=function(ee,le){var re=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;E(ee),!u&&(le||P&&(k==="hover"||re))&&d(!1)},H=i.useMemo(function(){return c?w:y},[c,w,y]),Q=i.useMemo(function(){for(var te=[{options:H}],ee=H,le=function(){var me=K[re],ce=ee.find(function(ie){return ie[S.value]===me}),fe=ce==null?void 0:ce[S.children];if(!(fe!=null&&fe.length))return"break";ee=fe,te.push({options:fe})},re=0;re":R,N=e.loadingIcon,M=e.children,I=e.dropdownMatchSelectWidth,L=I===void 0?!1:I,j=e.showCheckedStrategy,_=j===void 0?rm:j,K=ze(e,IC),z=wv(r),A=!!f,V=kt(s,{value:l,postState:Nc}),X=U(V,2),H=X[0],Q=X[1],Y=i.useMemo(function(){return yC(o)},[JSON.stringify(o)]),ae=i.useMemo(function(){return y||[]},[y]),q=PC(ae,Y),ne=i.useCallback(function(tt){var we=q();return tt.map(function(We){var Te=we[We].nodes;return Te.map(function(Le){return Le[Y.value]})})},[q,Y]),ue=kt("",{value:v,postState:function(we){return we||""}}),G=U(ue,2),te=G[0],ee=G[1],le=function(we,We){ee(we),We.source!=="blur"&&m&&m(we)},re=kC(p),ge=U(re,2),Ee=ge[0],me=ge[1],ce=TC(te,ae,Y,b||a,me,u),fe=EC(ae,Y),ie=i.useMemo(function(){var tt=fe(H),we=U(tt,2),We=we[0],Te=we[1];if(!A||!H.length)return[We,[],Te];var Le=ga(We),ye=q(),de=En(Le,!0,ye),be=de.checkedKeys,Me=de.halfCheckedKeys;return[ne(be),ne(Me),Te]},[A,H,q,ne,fe]),se=U(ie,3),pe=se[0],Ce=se[1],Re=se[2],Fe=i.useMemo(function(){var tt=ga(pe),we=Tc(tt,q,_);return[].concat(Ke(Re),Ke(ne(we)))},[pe,q,ne,Re,_]),Se=CC(Fe,ae,Y,A,d),ke=Fc(function(tt){if(Q(tt),c){var we=Nc(tt),We=we.map(function(ye){return wo(ye,ae,Y).map(function(de){return de.option})}),Te=A?we:we[0],Le=A?We:We[0];c(Te,Le)}}),Pe=Fc(function(tt){if(ee(""),!A)ke(tt);else{var we=kr(tt),We=ga(pe),Te=ga(Ce),Le=We.includes(we),ye=Re.some(function(dt){return kr(dt)===we}),de=pe,be=Re;if(ye&&!Le)be=Re.filter(function(dt){return kr(dt)!==we});else{var Me=Le?We.filter(function(dt){return dt!==we}):[].concat(Ke(We),[we]),Ye=q(),lt;if(Le){var $e=En(Me,{checked:!1,halfCheckedKeys:Te},Ye);lt=$e.checkedKeys}else{var xe=En(Me,!0,Ye);lt=xe.checkedKeys}var Je=Tc(lt,q,_);de=ne(Je)}ke([].concat(Ke(be),Ke(de)))}}),Qe=function(we,We){if(We.type==="clear"){ke([]);return}var Te=We.values[0].valueCells;Pe(Te)},et=P!==void 0?P:S,vt=w||E,ct=k||$,ht=function(we){O==null||O(we),D==null||D(we)},Ge=i.useMemo(function(){return{options:ae,fieldNames:Y,values:pe,halfValues:Ce,changeOnSelect:u,onSelect:Pe,checkable:f,searchOptions:ce,dropdownPrefixCls:b,loadData:C,expandTrigger:g,expandIcon:T,loadingIcon:N,dropdownMenuColumnStyle:F}},[ae,Y,pe,Ce,u,Pe,f,ce,b,C,g,T,N,F]),_e=!(te?ce:ae).length,mt=te&&me.matchInputWidth||_e?{}:{minWidth:"auto"};return i.createElement(Ao.Provider,{value:Ge},i.createElement(Pv,J({},K,{ref:t,id:z,prefixCls:a,dropdownMatchSelectWidth:L,dropdownStyle:mt,displayValues:Se,onDisplayValuesChange:Qe,mode:A?"multiple":void 0,searchValue:te,onSearch:le,showSearch:Ee,OptionList:OC,emptyOptions:_e,open:et,dropdownClassName:vt,placement:ct,onDropdownVisibleChange:ht,getRawInputElement:function(){return M}})))});zo.SHOW_PARENT=rm;zo.SHOW_CHILD=am;var LC=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a2&&arguments[2]!==void 0?arguments[2]:!0,ne=function(){F(function(G){var te=new Map(G),ee=te.delete(Y);return ee?te:G})};return F(function(ue){return new Map(ue).set(Y,{url:ae,canPreview:q})}),ne},H=function(Y){Y.stopPropagation(),M(!1),_(null)};return i.useEffect(function(){D(A)},[A]),i.useEffect(function(){!N&&K&&D(A)},[A,K,N]),i.createElement(rx,{value:{isPreviewGroup:!0,previewUrls:V,setPreviewUrls:F,current:O,setCurrent:D,setShowPreview:M,setMousePosition:_,registerImage:X}},a,i.createElement(dm,J({"aria-hidden":!N,visible:N,prefixCls:n,onClose:H,mousePosition:j,src:V.get(O),icons:s,getContainer:p,countRender:C},S)))},Ni=1,$i=50,ro=1,ox=.2,ix=function(t){var r,n=t.visible,a=t.maskTransitionName,o=t.getContainer,s=t.prefixCls,l=t.rootClassName,u=t.icons,c=t.countRender,d=t.showSwitch,f=t.showProgress,v=t.current,m=t.count,p=t.scale,g=t.onSwitchLeft,y=t.onSwitchRight,b=t.onClose,C=t.onZoomIn,S=t.onZoomOut,P=t.onRotateRight,E=t.onRotateLeft,w=u.rotateLeft,F=u.rotateRight,$=u.zoomIn,k=u.zoomOut,O=u.close,D=u.left,R=u.right,T="".concat(s,"-operations-operation"),N="".concat(s,"-operations-icon"),M=[{icon:O,onClick:b,type:"close"},{icon:$,onClick:C,type:"zoomIn",disabled:p===$i},{icon:k,onClick:S,type:"zoomOut",disabled:p===Ni},{icon:F,onClick:P,type:"rotateRight"},{icon:w,onClick:E,type:"rotateLeft"}],I=i.createElement(i.Fragment,null,d&&i.createElement(i.Fragment,null,i.createElement("div",{className:ve("".concat(s,"-switch-left"),B({},"".concat(s,"-switch-left-disabled"),v===0)),onClick:g},D),i.createElement("div",{className:ve("".concat(s,"-switch-right"),B({},"".concat(s,"-switch-right-disabled"),v===m-1)),onClick:y},R)),i.createElement("ul",{className:"".concat(s,"-operations")},f&&i.createElement("li",{className:"".concat(s,"-operations-progress")},(r=c==null?void 0:c(v+1,m))!==null&&r!==void 0?r:"".concat(v+1," / ").concat(m)),M.map(function(L){var j,_=L.icon,K=L.onClick,z=L.type,A=L.disabled;return i.createElement("li",{className:ve(T,(j={},B(j,"".concat(s,"-operations-operation-").concat(z),!0),B(j,"".concat(s,"-operations-operation-disabled"),!!A),j)),onClick:K,key:z},i.isValidElement(_)?i.cloneElement(_,{className:N}):_)})));return i.createElement(rl,{visible:n,motionName:a},function(L){var j=L.className,_=L.style;return i.createElement(pg,{open:!0,getContainer:o??document.body},i.createElement("div",{className:ve("".concat(s,"-operations-wrapper"),j,l),style:_},I))})},$c={x:0,y:0,rotate:0,scale:1};function lx(e){var t=i.useRef(null),r=i.useRef([]),n=i.useState($c),a=U(n,2),o=a[0],s=a[1],l=function(){s($c)},u=function(f){t.current===null&&(r.current=[],t.current=Jr(function(){s(function(v){var m=v;return r.current.forEach(function(p){m=h(h({},m),p)}),t.current=null,m})})),r.current.push(h(h({},o),f))},c=function(f,v,m){var p=e.current,g=p.width,y=p.height,b=p.offsetWidth,C=p.offsetHeight,S=p.offsetLeft,P=p.offsetTop,E=f,w=o.scale*f;w>$i?(E=$i/o.scale,w=$i):wn){if(t>0)return B({},e,o);if(t<0&&an)return B({},e,t<0?o:-o);return{}}function sx(e,t,r,n){var a=cm(),o=a.width,s=a.height,l=null;return e<=o&&t<=s?l={x:0,y:0}:(e>o||t>s)&&(l=h(h({},Dc("x",r,e,o)),Dc("y",n,t,s))),l}var ux=["prefixCls","src","alt","onClose","afterClose","visible","icons","rootClassName","getContainer","countRender","scaleStep","transitionName","maskTransitionName"],dm=function(t){var r=t.prefixCls,n=t.src,a=t.alt,o=t.onClose;t.afterClose;var s=t.visible,l=t.icons,u=l===void 0?{}:l,c=t.rootClassName,d=t.getContainer,f=t.countRender,v=t.scaleStep,m=v===void 0?.5:v,p=t.transitionName,g=p===void 0?"zoom":p,y=t.maskTransitionName,b=y===void 0?"fade":y,C=ze(t,ux),S=i.useRef(),P=i.useRef({deltaX:0,deltaY:0,transformX:0,transformY:0}),E=i.useState(!1),w=U(E,2),F=w[0],$=w[1],k=i.useContext(ku),O=k.previewUrls,D=k.current,R=k.isPreviewGroup,T=k.setCurrent,N=O.size,M=Array.from(O.keys()),I=M.indexOf(D),L=R?O.get(D):n,j=R&&N>1,_=R&&N>=1,K=lx(S),z=K.transform,A=K.resetTransform,V=K.updateTransform,X=K.dispatchZoonChange,H=z.rotate,Q=z.scale,Y=ve(B({},"".concat(r,"-moving"),F)),ae=function(){A()},q=function(){X(ro+m)},ne=function(){X(ro-m)},ue=function(){V({rotate:H+90})},G=function(){V({rotate:H-90})},te=function(ie){ie.preventDefault(),ie.stopPropagation(),I>0&&T(M[I-1])},ee=function(ie){ie.preventDefault(),ie.stopPropagation(),I0&&(Ce=ro/Ce),X(Ce,ie.clientX,ie.clientY)}},me=i.useCallback(function(fe){!s||!j||(fe.keyCode===Be.LEFT?I>0&&T(M[I-1]):fe.keyCode===Be.RIGHT&&I=0||l.relatedTarget.className.indexOf("".concat(f,"-item"))>=0))&&d(n.getValidValue()))},n.go=function(l){var u=n.state.goInputText;u!==""&&(l.keyCode===Ur.ENTER||l.type==="click")&&(n.setState({goInputText:""}),n.props.quickGo(n.getValidValue()))},n}return xn(r,[{key:"getValidValue",value:function(){var a=this.state.goInputText;return!a||isNaN(a)?void 0:Number(a)}},{key:"getPageSizeOptions",value:function(){var a=this.props,o=a.pageSize,s=a.pageSizeOptions;return s.some(function(l){return l.toString()===o.toString()})?s:s.concat([o.toString()]).sort(function(l,u){var c=isNaN(Number(l))?0:Number(l),d=isNaN(Number(u))?0:Number(u);return c-d})}},{key:"render",value:function(){var a=this,o=this.props,s=o.pageSize,l=o.locale,u=o.rootPrefixCls,c=o.changeSize,d=o.quickGo,f=o.goButton,v=o.selectComponentClass,m=o.buildOptionText,p=o.selectPrefixCls,g=o.disabled,y=this.state.goInputText,b="".concat(u,"-options"),C=v,S=null,P=null,E=null;if(!c&&!d)return null;var w=this.getPageSizeOptions();if(c&&C){var F=w.map(function($,k){return Z.createElement(C.Option,{key:k,value:$.toString()},(m||a.buildOptionText)($))});S=Z.createElement(C,{disabled:g,prefixCls:p,showSearch:!1,className:"".concat(b,"-size-changer"),optionLabelProp:"children",dropdownMatchSelectWidth:!1,value:(s||w[0]).toString(),onChange:this.changeSize,getPopupContainer:function(k){return k.parentNode},"aria-label":l.page_size,defaultOpen:!1},F)}return d&&(f&&(E=typeof f=="boolean"?Z.createElement("button",{type:"button",onClick:this.go,onKeyUp:this.go,disabled:g,className:"".concat(b,"-quick-jumper-button")},l.jump_to_confirm):Z.createElement("span",{onClick:this.go,onKeyUp:this.go},f)),P=Z.createElement("div",{className:"".concat(b,"-quick-jumper")},l.jump_to,Z.createElement("input",{disabled:g,type:"text",value:y,onChange:this.handleChange,onKeyUp:this.go,onBlur:this.handleBlur,"aria-label":l.page}),l.page,E)),Z.createElement("li",{className:"".concat(b)},S,P)}}]),r}(Z.Component);mm.defaultProps={pageSizeOptions:["10","20","50","100"]};const pm={items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页",page_size:"页码"};function Es(){}function _c(e){var t=Number(e);return typeof t=="number"&&!isNaN(t)&&isFinite(t)&&Math.floor(t)===t}function hx(e,t,r){return r}function Cr(e,t,r){var n=typeof e>"u"?t.pageSize:e;return Math.floor((r.total-1)/n)+1}var hm=function(e){yn(r,e);var t=bn(r);function r(n){var a;Cn(this,r),a=t.call(this,n),a.getJumpPrevPage=function(){return Math.max(1,a.state.current-(a.props.showLessItems?3:5))},a.getJumpNextPage=function(){return Math.min(Cr(void 0,a.state,a.props),a.state.current+(a.props.showLessItems?3:5))},a.getItemIcon=function(c,d){var f=a.props.prefixCls,v=c||Z.createElement("button",{type:"button","aria-label":d,className:"".concat(f,"-item-link")});return typeof c=="function"&&(v=Z.createElement(c,h({},a.props))),v},a.savePaginationNode=function(c){a.paginationNode=c},a.isValid=function(c){var d=a.props.total;return _c(c)&&c!==a.state.current&&_c(d)&&d>0},a.shouldDisplayQuickJumper=function(){var c=a.props,d=c.showQuickJumper,f=c.total,v=a.state.pageSize;return f<=v?!1:d},a.handleKeyDown=function(c){(c.keyCode===Ur.ARROW_UP||c.keyCode===Ur.ARROW_DOWN)&&c.preventDefault()},a.handleKeyUp=function(c){var d=a.getValidValue(c),f=a.state.currentInputValue;d!==f&&a.setState({currentInputValue:d}),c.keyCode===Ur.ENTER?a.handleChange(d):c.keyCode===Ur.ARROW_UP?a.handleChange(d-1):c.keyCode===Ur.ARROW_DOWN&&a.handleChange(d+1)},a.handleBlur=function(c){var d=a.getValidValue(c);a.handleChange(d)},a.changePageSize=function(c){var d=a.state.current,f=Cr(c,a.state,a.props);d=d>f?f:d,f===0&&(d=a.state.current),typeof c=="number"&&("pageSize"in a.props||a.setState({pageSize:c}),"current"in a.props||a.setState({current:d,currentInputValue:d})),a.props.onShowSizeChange(d,c),"onChange"in a.props&&a.props.onChange&&a.props.onChange(d,c)},a.handleChange=function(c){var d=a.props,f=d.disabled,v=d.onChange,m=a.state,p=m.pageSize,g=m.current,y=m.currentInputValue;if(a.isValid(c)&&!f){var b=Cr(void 0,a.state,a.props),C=c;return c>b?C=b:c<1&&(C=1),"current"in a.props||a.setState({current:C}),C!==y&&a.setState({currentInputValue:C}),v(C,p),C}return g},a.prev=function(){a.hasPrev()&&a.handleChange(a.state.current-1)},a.next=function(){a.hasNext()&&a.handleChange(a.state.current+1)},a.jumpPrev=function(){a.handleChange(a.getJumpPrevPage())},a.jumpNext=function(){a.handleChange(a.getJumpNextPage())},a.hasPrev=function(){return a.state.current>1},a.hasNext=function(){return a.state.current2?f-2:0),m=2;m=s?u=s:u=Number(o),u}},{key:"getShowSizeChanger",value:function(){var a=this.props,o=a.showSizeChanger,s=a.total,l=a.totalBoundaryShowSizeChanger;return typeof o<"u"?o:s>l}},{key:"renderPrev",value:function(a){var o=this.props,s=o.prevIcon,l=o.itemRender,u=l(a,"prev",this.getItemIcon(s,"prev page")),c=!this.hasPrev();return i.isValidElement(u)?i.cloneElement(u,{disabled:c}):u}},{key:"renderNext",value:function(a){var o=this.props,s=o.nextIcon,l=o.itemRender,u=l(a,"next",this.getItemIcon(s,"next page")),c=!this.hasNext();return i.isValidElement(u)?i.cloneElement(u,{disabled:c}):u}},{key:"render",value:function(){var a=this,o=this.props,s=o.prefixCls,l=o.className,u=o.style,c=o.disabled,d=o.hideOnSinglePage,f=o.total,v=o.locale,m=o.showQuickJumper,p=o.showLessItems,g=o.showTitle,y=o.showTotal,b=o.simple,C=o.itemRender,S=o.showPrevNextJumpers,P=o.jumpPrevIcon,E=o.jumpNextIcon,w=o.selectComponentClass,F=o.selectPrefixCls,$=o.pageSizeOptions,k=this.state,O=k.current,D=k.pageSize,R=k.currentInputValue;if(d===!0&&f<=D)return null;var T=Cr(void 0,this.state,this.props),N=[],M=null,I=null,L=null,j=null,_=null,K=m&&m.goButton,z=p?1:2,A=O-1>0?O-1:0,V=O+1f?f:O*D]));if(b)return K&&(typeof K=="boolean"?_=Z.createElement("button",{type:"button",onClick:this.handleGoTO,onKeyUp:this.handleGoTO},v.jump_to_confirm):_=Z.createElement("span",{onClick:this.handleGoTO,onKeyUp:this.handleGoTO},K),_=Z.createElement("li",{title:g?"".concat(v.jump_to).concat(O,"/").concat(T):null,className:"".concat(s,"-simple-pager")},_)),Z.createElement("ul",J({className:ve(s,"".concat(s,"-simple"),B({},"".concat(s,"-disabled"),c),l),style:u,ref:this.savePaginationNode},X),H,Z.createElement("li",{title:g?v.prev_page:null,onClick:this.prev,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterPrev,className:ve("".concat(s,"-prev"),B({},"".concat(s,"-disabled"),!this.hasPrev())),"aria-disabled":!this.hasPrev()},this.renderPrev(A)),Z.createElement("li",{title:g?"".concat(O,"/").concat(T):null,className:"".concat(s,"-simple-pager")},Z.createElement("input",{type:"text",value:R,disabled:c,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,onChange:this.handleKeyUp,onBlur:this.handleBlur,size:"3"}),Z.createElement("span",{className:"".concat(s,"-slash")},"/"),T),Z.createElement("li",{title:g?v.next_page:null,onClick:this.next,tabIndex:this.hasPrev()?0:null,onKeyPress:this.runIfEnterNext,className:ve("".concat(s,"-next"),B({},"".concat(s,"-disabled"),!this.hasNext())),"aria-disabled":!this.hasNext()},this.renderNext(V)),_);if(T<=3+z*2){var Q={locale:v,rootPrefixCls:s,onClick:this.handleChange,onKeyPress:this.runIfEnter,showTitle:g,itemRender:C};T||N.push(Z.createElement(ao,J({},Q,{key:"noPager",page:1,className:"".concat(s,"-item-disabled")})));for(var Y=1;Y<=T;Y+=1){var ae=O===Y;N.push(Z.createElement(ao,J({},Q,{key:Y,page:Y,active:ae})))}}else{var q=p?v.prev_3:v.prev_5,ne=p?v.next_3:v.next_5;S&&(M=Z.createElement("li",{title:g?q:null,key:"prev",onClick:this.jumpPrev,tabIndex:"0",onKeyPress:this.runIfEnterJumpPrev,className:ve("".concat(s,"-jump-prev"),B({},"".concat(s,"-jump-prev-custom-icon"),!!P))},C(this.getJumpPrevPage(),"jump-prev",this.getItemIcon(P,"prev page"))),I=Z.createElement("li",{title:g?ne:null,key:"next",tabIndex:"0",onClick:this.jumpNext,onKeyPress:this.runIfEnterJumpNext,className:ve("".concat(s,"-jump-next"),B({},"".concat(s,"-jump-next-custom-icon"),!!E))},C(this.getJumpNextPage(),"jump-next",this.getItemIcon(E,"next page")))),j=Z.createElement(ao,{locale:v,last:!0,rootPrefixCls:s,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:T,page:T,active:!1,showTitle:g,itemRender:C}),L=Z.createElement(ao,{locale:v,rootPrefixCls:s,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:1,page:1,active:!1,showTitle:g,itemRender:C});var ue=Math.max(1,O-z),G=Math.min(O+z,T);O-1<=z&&(G=1+z*2),T-O<=z&&(ue=T-z*2);for(var te=ue;te<=G;te+=1){var ee=O===te;N.push(Z.createElement(ao,{locale:v,rootPrefixCls:s,onClick:this.handleChange,onKeyPress:this.runIfEnter,key:te,page:te,active:ee,showTitle:g,itemRender:C}))}O-1>=z*2&&O!==1+2&&(N[0]=i.cloneElement(N[0],{className:"".concat(s,"-item-after-jump-prev")}),N.unshift(M)),T-O>=z*2&&O!==T-2&&(N[N.length-1]=i.cloneElement(N[N.length-1],{className:"".concat(s,"-item-before-jump-next")}),N.push(I)),ue!==1&&N.unshift(L),G!==T&&N.push(j)}var le=!this.hasPrev()||!T,re=!this.hasNext()||!T;return Z.createElement("ul",J({className:ve(s,l,B({},"".concat(s,"-disabled"),c)),style:u,ref:this.savePaginationNode},X),H,Z.createElement("li",{title:g?v.prev_page:null,onClick:this.prev,tabIndex:le?null:0,onKeyPress:this.runIfEnterPrev,className:ve("".concat(s,"-prev"),B({},"".concat(s,"-disabled"),le)),"aria-disabled":le},this.renderPrev(A)),N,Z.createElement("li",{title:g?v.next_page:null,onClick:this.next,tabIndex:re?null:0,onKeyPress:this.runIfEnterNext,className:ve("".concat(s,"-next"),B({},"".concat(s,"-disabled"),re)),"aria-disabled":re},this.renderNext(V)),Z.createElement(mm,{disabled:c,locale:v,rootPrefixCls:s,selectComponentClass:w,selectPrefixCls:F,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:O,pageSize:D,pageSizeOptions:$,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:K}))}}],[{key:"getDerivedStateFromProps",value:function(a,o){var s={};if("current"in a&&(s.current=a.current,a.current!==o.current&&(s.currentInputValue=s.current)),"pageSize"in a&&a.pageSize!==o.pageSize){var l=o.current,u=Cr(a.pageSize,o,a);l=l>u?u:l,"current"in a||(s.current=l,s.currentInputValue=l),s.pageSize=a.pageSize}return s}}]),r}(Z.Component);hm.defaultProps={defaultCurrent:1,total:0,defaultPageSize:10,onChange:Es,className:"",selectPrefixCls:"rc-select",prefixCls:"rc-pagination",selectComponentClass:null,hideOnSinglePage:!1,showPrevNextJumpers:!0,showQuickJumper:!1,showLessItems:!1,showTitle:!0,onShowSizeChange:Es,locale:pm,style:{},itemRender:hx,totalBoundaryShowSizeChanger:50};var gm=function(t){return i.createElement($r,J({},t,{size:"small"}))},ym=function(t){return i.createElement($r,J({},t,{size:"middle"}))};gm.Option=$r.Option;ym.Option=$r.Option;var gx=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a=d&&lv?"true":"false","aria-posinset":v+1,"aria-setsize":m,tabIndex:u?-1:0},Z.createElement("div",{className:"".concat(c,"-first")},g),Z.createElement("div",{className:"".concat(c,"-second")},g)));return f&&(y=f(y,this.props)),y}}]),r}(Z.Component);function jc(){}var bm=function(e){yn(r,e);var t=bn(r);function r(n){var a;Cn(this,r),a=t.call(this,n),a.stars=void 0,a.rate=void 0,a.onHover=function(s,l){var u=a.props.onHoverChange,c=a.getStarValue(l,s.pageX),d=a.state.cleanedValue;c!==d&&a.setState({hoverValue:c,cleanedValue:null}),u(c)},a.onMouseLeave=function(){var s=a.props.onHoverChange;a.setState({hoverValue:void 0,cleanedValue:null}),s(void 0)},a.onClick=function(s,l){var u=a.props.allowClear,c=a.state.value,d=a.getStarValue(l,s.pageX),f=!1;u&&(f=d===c),a.onMouseLeave(),a.changeValue(f?0:d),a.setState({cleanedValue:f?d:null})},a.onFocus=function(){var s=a.props.onFocus;a.setState({focused:!0}),s&&s()},a.onBlur=function(){var s=a.props.onBlur;a.setState({focused:!1}),s&&s()},a.onKeyDown=function(s){var l=s.keyCode,u=a.props,c=u.count,d=u.allowHalf,f=u.onKeyDown,v=u.direction,m=v==="rtl",p=a.state.value;l===Be.RIGHT&&p0&&!m||l===Be.RIGHT&&p>0&&m?(d?p-=.5:p-=1,a.changeValue(p),s.preventDefault()):l===Be.LEFT&&pm/2||!c&&o-v=r}function Qx(e){return e&&He(e)==="object"&&!Array.isArray(e)&&!i.isValidElement(e)}function Jx(e){return typeof e=="string"?!0:eg(e)}var e2=function(t){var r=t.ellipsis,n=t.rowType,a=t.children,o,s=r===!0?{showTitle:!0}:r;return s&&(s.showTitle||n==="header")&&(typeof a=="string"||typeof a=="number"?o=a.toString():i.isValidElement(a)&&typeof a.props.children=="string"&&(o=a.props.children)),o};function t2(e,t){var r,n,a,o=e.prefixCls,s=e.className,l=e.record,u=e.index,c=e.renderIndex,d=e.dataIndex,f=e.render,v=e.children,m=e.component,p=m===void 0?"td":m,g=e.colSpan,y=e.rowSpan,b=e.fixLeft,C=e.fixRight,S=e.firstFixLeft,P=e.lastFixLeft,E=e.firstFixRight,w=e.lastFixRight,F=e.appendNode,$=e.additionalProps,k=$===void 0?{}:$,O=e.ellipsis,D=e.align,R=e.rowType,T=e.isSticky,N=e.hovering,M=e.onHover,I="".concat(o,"-cell"),L=i.useContext(km),j=i.useContext(Pm),_=i.useContext(bl),K=_.allColumnsFixedLeft,z=i.useMemo(function(){if(ks(v))return[v];var ie=wm(l,d),se=ie,pe=void 0;if(f){var Ce=f(ie,l,c);Qx(Ce)?(se=Ce.children,pe=Ce.props,L.renderWithProps=!0):se=Ce}return[se,pe]},[L.renderWithProps?Math.random():0,v,d,L,l,f,c]),A=U(z,2),V=A[0],X=A[1],H=V;He(H)==="object"&&!Array.isArray(H)&&!i.isValidElement(H)&&(H=null),O&&(P||E)&&(H=i.createElement("span",{className:"".concat(I,"-content")},H));var Q=X||{},Y=Q.colSpan,ae=Q.rowSpan,q=Q.style,ne=Q.className,ue=ze(Q,Xx),G=(r=Y!==void 0?Y:g)!==null&&r!==void 0?r:1,te=(n=ae!==void 0?ae:y)!==null&&n!==void 0?n:1;if(G===0||te===0)return null;var ee={},le=typeof b=="number"&&j,re=typeof C=="number"&&j;le&&(ee.position="sticky",ee.left=b),re&&(ee.position="sticky",ee.right=C);var ge={};D&&(ge.textAlign=D);var Ee=function(se){var pe;l&&M(u,u+te-1),k==null||(pe=k.onMouseEnter)===null||pe===void 0||pe.call(k,se)},me=function(se){var pe;l&&M(-1,-1),k==null||(pe=k.onMouseLeave)===null||pe===void 0||pe.call(k,se)},ce=e2({rowType:R,ellipsis:O,children:V}),fe=h(h(h({title:ce},ue),k),{},{colSpan:G!==1?G:null,rowSpan:te!==1?te:null,className:ve(I,s,(a={},B(a,"".concat(I,"-fix-left"),le&&j),B(a,"".concat(I,"-fix-left-first"),S&&j),B(a,"".concat(I,"-fix-left-last"),P&&j),B(a,"".concat(I,"-fix-left-all"),P&&K&&j),B(a,"".concat(I,"-fix-right"),re&&j),B(a,"".concat(I,"-fix-right-first"),E&&j),B(a,"".concat(I,"-fix-right-last"),w&&j),B(a,"".concat(I,"-ellipsis"),O),B(a,"".concat(I,"-with-append"),F),B(a,"".concat(I,"-fix-sticky"),(le||re)&&T&&j),B(a,"".concat(I,"-row-hover"),!X&&N),a),k.className,ne),style:h(h(h(h({},k.style),ge),ee),q),onMouseEnter:Ee,onMouseLeave:me,ref:Jx(p)?t:null});return i.createElement(p,fe,F,H)}var Rm=i.forwardRef(t2);Rm.displayName="Cell";var n2=["expanded","className","hovering"],r2=i.memo(Rm,function(e,t){return t.shouldCellUpdate?n2.every(function(r){return e[r]===t[r]})&&!t.shouldCellUpdate(t.record,e.record):yu(e,t)}),Ho=i.forwardRef(function(e,t){var r=e.index,n=e.additionalProps,a=n===void 0?{}:n,o=e.colSpan,s=e.rowSpan,l=a.colSpan,u=a.rowSpan,c=o??l,d=s??u,f=qx(Em,function(p){var g=Zx(r,d||1,p==null?void 0:p.startRow,p==null?void 0:p.endRow);return{onHover:p==null?void 0:p.onHover,hovering:g}}),v=f.onHover,m=f.hovering;return i.createElement(r2,J({},e,{colSpan:c,rowSpan:d,hovering:m,ref:t,onHover:v}))});Ho.displayName="WrappedCell";var Gn=i.createContext(null);function Ru(e,t,r,n,a){var o=r[e]||{},s=r[t]||{},l,u;o.fixed==="left"?l=n.left[e]:s.fixed==="right"&&(u=n.right[t]);var c=!1,d=!1,f=!1,v=!1,m=r[t+1],p=r[e-1];if(a==="rtl"){if(l!==void 0){var g=p&&p.fixed==="left";v=!g}else if(u!==void 0){var y=m&&m.fixed==="right";f=!y}}else if(l!==void 0){var b=m&&m.fixed==="left";c=!b}else if(u!==void 0){var C=p&&p.fixed==="right";d=!C}return{fixLeft:l,fixRight:u,lastFixLeft:c,firstFixRight:d,lastFixRight:f,firstFixLeft:v,isSticky:n.isSticky}}function Mm(e){var t=e.cells,r=e.stickyOffsets,n=e.flattenColumns,a=e.rowComponent,o=e.cellComponent,s=e.onHeaderRow,l=e.index,u=i.useContext(Gn),c=u.prefixCls,d=u.direction,f;s&&(f=s(t.map(function(m){return m.column}),l));var v=yl(t.map(function(m){return m.column}));return i.createElement(a,f,t.map(function(m,p){var g=m.column,y=Ru(m.colStart,m.colEnd,n,r,d),b;return g&&g.onHeaderCell&&(b=m.column.onHeaderCell(g)),i.createElement(Ho,J({},m,{ellipsis:g.ellipsis,align:g.align,component:o,prefixCls:c,key:v[p]},y,{additionalProps:b,rowType:"header"}))}))}Mm.displayName="HeaderRow";function a2(e){var t=[];function r(s,l){var u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;t[u]=t[u]||[];var c=l,d=s.filter(Boolean).map(function(f){var v={key:f.key,className:f.className||"",children:f.title,column:f,colStart:c},m=1,p=f.children;return p&&p.length>0&&(m=r(p,c,u+1).reduce(function(g,y){return g+y},0),v.hasSubColumns=!0),"colSpan"in f&&(m=f.colSpan),"rowSpan"in f&&(v.rowSpan=f.rowSpan),v.colSpan=m,v.colEnd=v.colStart+m-1,t[u].push(v),c+=m,m});return d}r(e,0);for(var n=t.length,a=function(l){t[l].forEach(function(u){!("rowSpan"in u)&&!u.hasSubColumns&&(u.rowSpan=n-l)})},o=0;o1?le-1:0),ge=1;ge0?[].concat(Ke(t),Ke(Rs(o).map(function(s){return h({fixed:a},s)}))):[].concat(Ke(t),[h(h({},r),{},{fixed:a})])},[])}function v2(e){return e.map(function(t){var r=t.fixed,n=ze(t,f2),a=r;return r==="left"?a="right":r==="right"&&(a="left"),h({fixed:a},n)})}function m2(e,t){var r=e.prefixCls,n=e.columns,a=e.children,o=e.expandable,s=e.expandedKeys,l=e.columnTitle,u=e.getRowKey,c=e.onTriggerExpand,d=e.expandIcon,f=e.rowExpandable,v=e.expandIconColumnIndex,m=e.direction,p=e.expandRowByClick,g=e.columnWidth,y=e.fixed,b=i.useMemo(function(){return n||Mu(a)},[n,a]),C=i.useMemo(function(){if(o){var E,w=b.slice();if(!w.includes(Yr)){var F=v||0;F>=0&&w.splice(F,0,Yr)}var $=w.indexOf(Yr);w=w.filter(function(R,T){return R!==Yr||T===$});var k=b[$],O;(y==="left"||y)&&!v?O="left":(y==="right"||y)&&v===b.length?O="right":O=k?k.fixed:null;var D=(E={},B(E,go,{className:"".concat(r,"-expand-icon-col"),columnType:"EXPAND_COLUMN"}),B(E,"title",l),B(E,"fixed",O),B(E,"className","".concat(r,"-row-expand-icon-cell")),B(E,"width",g),B(E,"render",function(T,N,M){var I=u(N,M),L=s.has(I),j=f?f(N):!0,_=d({prefixCls:r,expanded:L,expandable:j,record:N,onExpand:c});return p?i.createElement("span",{onClick:function(z){return z.stopPropagation()}},_):_}),E);return w.map(function(R){return R===Yr?D:R})}return b.filter(function(R){return R!==Yr})},[o,b,u,s,d,m]),S=i.useMemo(function(){var E=C;return t&&(E=t(E)),E.length||(E=[{render:function(){return null}}]),E},[t,C,m]),P=i.useMemo(function(){return m==="rtl"?v2(Rs(S)):Rs(S)},[S,m]);return[S,P]}function Im(e){var t=i.useRef(e),r=i.useState({}),n=U(r,2),a=n[1],o=i.useRef(null),s=i.useRef([]);function l(u){s.current.push(u);var c=Promise.resolve();o.current=c,c.then(function(){if(o.current===c){var d=s.current,f=t.current;s.current=[],d.forEach(function(v){t.current=v(t.current)}),o.current=null,f!==t.current&&a({})}})}return i.useEffect(function(){return function(){o.current=null}},[]),[t.current,l]}function p2(e){var t=i.useRef(e||null),r=i.useRef();function n(){window.clearTimeout(r.current)}function a(s){t.current=s,n(),r.current=window.setTimeout(function(){t.current=null,r.current=void 0},100)}function o(){return t.current}return i.useEffect(function(){return n},[]),[a,o]}function h2(e,t,r){var n=i.useMemo(function(){for(var a=[],o=[],s=0,l=0,u=0;u=0;l-=1){var u=t[l],c=r&&r[l],d=c&&c[go];if(u||d||s){var f=d||{};f.columnType;var v=ze(f,g2);a.unshift(i.createElement("col",J({key:l,style:{width:u}},v))),s=!0}}return i.createElement("colgroup",null,a)}function Bc(e){var t=e.className,r=e.children;return i.createElement("div",{className:t},r)}var Lm=i.createContext({});function y2(e){var t=e.className,r=e.index,n=e.children,a=e.colSpan,o=a===void 0?1:a,s=e.rowSpan,l=e.align,u=i.useContext(Gn),c=u.prefixCls,d=u.direction,f=i.useContext(Lm),v=f.scrollColumnIndex,m=f.stickyOffsets,p=f.flattenColumns,g=r+o-1,y=g+1===v?o+1:o,b=Ru(r,r+y-1,p,m,d);return i.createElement(Ho,J({className:t,index:r,component:"td",prefixCls:c,record:null,dataIndex:null,align:l,colSpan:y,rowSpan:s,render:function(){return n}},b))}var b2=["children"];function C2(e){var t=e.children,r=ze(e,b2);return i.createElement("tr",r,t)}function Cl(e){var t=e.children;return t}Cl.Row=C2;Cl.Cell=y2;function wi(e){var t=e.children,r=e.stickyOffsets,n=e.flattenColumns,a=i.useContext(Gn),o=a.prefixCls,s=n.length-1,l=n[s],u=i.useMemo(function(){return{stickyOffsets:r,flattenColumns:n,scrollColumnIndex:l!=null&&l.scrollbar?s:null}},[l,n,s,r]);return i.createElement(Lm.Provider,{value:u},i.createElement("tfoot",{className:"".concat(o,"-summary")},t))}var jm=Cl;function x2(e){var t,r=e.prefixCls,n=e.record,a=e.onExpand,o=e.expanded,s=e.expandable,l="".concat(r,"-row-expand-icon");if(!s)return i.createElement("span",{className:ve(l,"".concat(r,"-row-spaced"))});var u=function(d){a(n,d),d.stopPropagation()};return i.createElement("span",{className:ve(l,(t={},B(t,"".concat(r,"-row-expanded"),o),B(t,"".concat(r,"-row-collapsed"),!o),t)),onClick:u})}function S2(e,t,r){var n=[];function a(o){(o||[]).forEach(function(s,l){n.push(t(s,l)),a(s[r])})}return a(e),n}var w2=function(t,r){var n,a,o=t.scrollBodyRef,s=t.onScroll,l=t.offsetScroll,u=t.container,c=i.useContext(Gn),d=c.prefixCls,f=((n=o.current)===null||n===void 0?void 0:n.scrollWidth)||0,v=((a=o.current)===null||a===void 0?void 0:a.clientWidth)||0,m=f&&v*(v/f),p=i.useRef(),g=Im({scrollLeft:0,isHiddenScrollBar:!1}),y=U(g,2),b=y[0],C=y[1],S=i.useRef({delta:0,x:0}),P=i.useState(!1),E=U(P,2),w=E[0],F=E[1],$=function(){F(!1)},k=function(N){N.persist(),S.current.delta=N.pageX-b.scrollLeft,S.current.x=0,F(!0),N.preventDefault()},O=function(N){var M,I=N||((M=window)===null||M===void 0?void 0:M.event),L=I.buttons;if(!w||L===0){w&&F(!1);return}var j=S.current.x+N.pageX-S.current.x-S.current.delta;j<=0&&(j=0),j+m>=v&&(j=v-m),s({scrollLeft:j/v*(f+2)}),S.current.x=N.pageX},D=function(){if(o.current){var N=Ps(o.current).top,M=N+o.current.offsetHeight,I=u===window?document.documentElement.scrollTop+window.innerHeight:Ps(u).top+u.clientHeight;M-cc()<=I||N>=I-l?C(function(L){return h(h({},L),{},{isHiddenScrollBar:!0})}):C(function(L){return h(h({},L),{},{isHiddenScrollBar:!1})})}},R=function(N){C(function(M){return h(h({},M),{},{scrollLeft:N/f*v||0})})};return i.useImperativeHandle(r,function(){return{setScrollLeft:R}}),i.useEffect(function(){var T=rr(document.body,"mouseup",$,!1),N=rr(document.body,"mousemove",O,!1);return D(),function(){T.remove(),N.remove()}},[m,w]),i.useEffect(function(){var T=rr(u,"scroll",D,!1),N=rr(window,"resize",D,!1);return function(){T.remove(),N.remove()}},[u]),i.useEffect(function(){b.isHiddenScrollBar||C(function(T){var N=o.current;return N?h(h({},T),{},{scrollLeft:N.scrollLeft/N.scrollWidth*N.clientWidth}):T})},[b.isHiddenScrollBar]),f<=v||!m||b.isHiddenScrollBar?null:i.createElement("div",{style:{height:cc(),width:v,bottom:l},className:"".concat(d,"-sticky-scroll")},i.createElement("div",{onMouseDown:k,ref:p,className:ve("".concat(d,"-sticky-scroll-bar"),B({},"".concat(d,"-sticky-scroll-bar-active"),w)),style:{width:"".concat(m,"px"),transform:"translate3d(".concat(b.scrollLeft,"px, 0, 0)")}}))};const P2=i.forwardRef(w2);var Hc=Xf()?window:null;function E2(e,t){var r=He(e)==="object"?e:{},n=r.offsetHeader,a=n===void 0?0:n,o=r.offsetSummary,s=o===void 0?0:o,l=r.offsetScroll,u=l===void 0?0:l,c=r.getContainer,d=c===void 0?function(){return Hc}:c,f=d()||Hc;return i.useMemo(function(){var v=!!e;return{isSticky:v,stickyClassName:v?"".concat(t,"-sticky-holder"):"",offsetHeader:a,offsetSummary:s,offsetScroll:u,container:f}},[u,a,s,t,f])}var k2=["className","noData","columns","flattenColumns","colWidths","columCount","stickyOffsets","direction","fixHeader","stickyTopOffset","stickyBottomOffset","stickyClassName","onScroll","maxContentScroll","children"];function R2(e,t){return i.useMemo(function(){for(var r=[],n=0;n=0})},[o]),O=o[o.length-1],D={fixed:O?O.fixed:null,scrollbar:!0,onHeaderCell:function(){return{className:"".concat(S,"-cell-scrollbar")}}},R=i.useMemo(function(){return w?[].concat(Ke(a),[D]):a},[w,a]),T=i.useMemo(function(){return w?[].concat(Ke(o),[D]):o},[w,o]),N=i.useMemo(function(){var I=u.right,L=u.left;return h(h({},u),{},{left:c==="rtl"?[].concat(Ke(L.map(function(j){return j+w})),[0]):L,right:c==="rtl"?I:[].concat(Ke(I.map(function(j){return j+w})),[0]),isSticky:E})},[w,u,E]),M=R2(s,l);return i.createElement("div",{style:h({overflow:"hidden"},E?{top:f,bottom:v}:{}),ref:$,className:ve(r,B({},m,!!m))},i.createElement("table",{style:{tableLayout:"fixed",visibility:n||M?null:"hidden"}},(!n||!g||k)&&i.createElement(_m,{colWidths:M?[].concat(Ke(M),[w]):[],columCount:l+1,columns:T}),y(h(h({},b),{},{stickyOffsets:N,columns:R,flattenColumns:T}))))});Ms.displayName="FixedHolder";var M2=[],T2={},Di="rc-table-internal-hook",F2=i.memo(function(e){var t=e.children;return t},function(e,t){return yu(e.props,t.props)?e.pingLeft!==t.pingLeft||e.pingRight!==t.pingRight:!1});function la(e){var t,r=e.prefixCls,n=e.className,a=e.rowClassName,o=e.style,s=e.data,l=e.rowKey,u=e.scroll,c=e.tableLayout,d=e.direction,f=e.title,v=e.footer,m=e.summary,p=e.id,g=e.showHeader,y=e.components,b=e.emptyText,C=e.onRow,S=e.onHeaderRow,P=e.internalHooks,E=e.transformColumns,w=e.internalRefs,F=e.sticky,$=s||M2,k=!!$.length,O=i.useCallback(function(yt,Ct){return wm(y||{},yt)||Ct},[y]),D=i.useMemo(function(){return typeof l=="function"?l:function(yt){var Ct=yt&&yt[l];return Ct}},[l]),R=c2(e),T=R.expandIcon,N=R.expandedRowKeys,M=R.defaultExpandedRowKeys,I=R.defaultExpandAllRows,L=R.expandedRowRender,j=R.columnTitle,_=R.onExpand,K=R.onExpandedRowsChange,z=R.expandRowByClick,A=R.rowExpandable,V=R.expandIconColumnIndex,X=R.expandedRowClassName,H=R.childrenColumnName,Q=R.indentSize,Y=T||x2,ae=H||"children",q=i.useMemo(function(){return L?"row":e.expandable&&P===Di&&e.expandable.__PARENT_RENDER_ICON__||$.some(function(yt){return yt&&He(yt)==="object"&&yt[ae]})?"nest":!1},[!!L,$]),ne=i.useState(function(){return M||(I?S2($,D,ae):[])}),ue=U(ne,2),G=ue[0],te=ue[1],ee=i.useMemo(function(){return new Set(N||G||[])},[N,G]),le=i.useCallback(function(yt){var Ct=D(yt,$.indexOf(yt)),_t,Qt=ee.has(Ct);Qt?(ee.delete(Ct),_t=Ke(ee)):_t=[].concat(Ke(ee),[Ct]),te(_t),_&&_(!Qt,yt),K&&K(_t)},[D,ee,$,_,K]),re=i.useState(0),ge=U(re,2),Ee=ge[0],me=ge[1],ce=m2(h(h(h({},e),R),{},{expandable:!!L,columnTitle:j,expandedKeys:ee,getRowKey:D,onTriggerExpand:le,expandIcon:Y,expandIconColumnIndex:V,direction:d}),P===Di?E:null),fe=U(ce,2),ie=fe[0],se=fe[1],pe=i.useMemo(function(){return{columns:ie,flattenColumns:se}},[ie,se]),Ce=i.useRef(),Re=i.useRef(),Fe=i.useRef(),Se=i.useRef(),ke=i.useRef(),Pe=i.useState(!1),Qe=U(Pe,2),et=Qe[0],vt=Qe[1],ct=i.useState(!1),ht=U(ct,2),Ge=ht[0],_e=ht[1],mt=Im(new Map),tt=U(mt,2),we=tt[0],We=tt[1],Te=yl(se),Le=Te.map(function(yt){return we.get(yt)}),ye=i.useMemo(function(){return Le},[Le.join("_")]),de=h2(ye,se.length,d),be=u&&ks(u.y),Me=u&&ks(u.x)||!!R.fixed,Ye=Me&&se.some(function(yt){var Ct=yt.fixed;return Ct}),lt=i.useRef(),$e=E2(F,r),xe=$e.isSticky,Je=$e.offsetHeader,dt=$e.offsetSummary,ut=$e.offsetScroll,$t=$e.stickyClassName,Dt=$e.container,Rt=m==null?void 0:m($),Ft=(be||xe)&&i.isValidElement(Rt)&&Rt.type===Cl&&Rt.props.fixed,nt,ot,ft;be&&(ot={overflowY:"scroll",maxHeight:u.y}),Me&&(nt={overflowX:"auto"},be||(ot={overflowY:"hidden"}),ft={width:(u==null?void 0:u.x)===!0?"auto":u==null?void 0:u.x,minWidth:"100%"});var it=i.useCallback(function(yt,Ct){hv(Ce.current)&&We(function(_t){if(_t.get(yt)!==Ct){var Qt=new Map(_t);return Qt.set(yt,Ct),Qt}return _t})},[]),Ze=p2(null),Xe=U(Ze,2),Ne=Xe[0],je=Xe[1];function Ie(yt,Ct){Ct&&(typeof Ct=="function"?Ct(yt):Ct.scrollLeft!==yt&&(Ct.scrollLeft=yt))}var De=function(Ct){var _t=Ct.currentTarget,Qt=Ct.scrollLeft,Za=d==="rtl",cn=typeof Qt=="number"?Qt:_t.scrollLeft,pr=_t||T2;if(!je()||je()===pr){var hr;Ne(pr),Ie(cn,Re.current),Ie(cn,Fe.current),Ie(cn,ke.current),Ie(cn,(hr=lt.current)===null||hr===void 0?void 0:hr.setScrollLeft)}if(_t){var Vr=_t.scrollWidth,gr=_t.clientWidth;if(Vr===gr){vt(!1),_e(!1);return}Za?(vt(-cn0)):(vt(cn>0),_e(cnl))return!1;var c=o.get(e),d=o.get(t);if(c&&d)return c==t&&d==e;var f=-1,v=!0,m=r&bS?new pS:void 0;for(o.set(e,t),o.set(t,e);++f0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=e.length,n=t.length;if(Math.abs(r-n)!==1)return{add:!1,key:null};function a(o,s){var l=new Map;o.forEach(function(c){l.set(c,!0)});var u=s.filter(function(c){return!l.has(c)});return u.length===1?u[0]:null}return r ").concat(t);return t}var Zm=i.forwardRef(function(e,t){var r=e.prefixCls,n=e.data;e.selectable,e.checkable;var a=e.expandedKeys,o=e.selectedKeys,s=e.checkedKeys,l=e.loadedKeys,u=e.loadingKeys,c=e.halfCheckedKeys,d=e.keyEntities,f=e.disabled,v=e.dragging,m=e.dragOverNodeKey,p=e.dropPosition,g=e.motion,y=e.height,b=e.itemHeight,C=e.virtual,S=e.focusable,P=e.activeItem,E=e.focused,w=e.tabIndex,F=e.onKeyDown,$=e.onFocus,k=e.onBlur,O=e.onActiveChange,D=e.onListChangeStart,R=e.onListChangeEnd,T=ze(e,vw),N=i.useRef(null),M=i.useRef(null);i.useImperativeHandle(t,function(){return{scrollTo:function(fe){N.current.scrollTo(fe)},getIndentWidth:function(){return M.current.offsetWidth}}});var I=i.useState(a),L=U(I,2),j=L[0],_=L[1],K=i.useState(n),z=U(K,2),A=z[0],V=z[1],X=i.useState(n),H=U(X,2),Q=H[0],Y=H[1],ae=i.useState([]),q=U(ae,2),ne=q[0],ue=q[1],G=i.useState(null),te=U(G,2),ee=te[0],le=te[1],re=i.useRef(n);re.current=n;function ge(){var ce=re.current;V(ce),Y(ce),ue([]),le(null),R()}Er(function(){_(a);var ce=fw(j,a);if(ce.key!==null)if(ce.add){var fe=A.findIndex(function(Fe){var Se=Fe.key;return Se===ce.key}),ie=hd(vd(A,n,ce.key),C,y,b),se=A.slice();se.splice(fe+1,0,pd),Y(se),ue(ie),le("show")}else{var pe=n.findIndex(function(Fe){var Se=Fe.key;return Se===ce.key}),Ce=hd(vd(n,A,ce.key),C,y,b),Re=n.slice();Re.splice(pe+1,0,pd),Y(Re),ue(Ce),le("hide")}else A!==n&&(V(n),Y(n))},[a,n]),i.useEffect(function(){v||ge()},[v]);var Ee=g?Q:n,me={expandedKeys:a,selectedKeys:o,loadedKeys:l,loadingKeys:u,checkedKeys:s,halfCheckedKeys:c,dragOverNodeKey:m,dropPosition:p,keyEntities:d};return i.createElement(i.Fragment,null,E&&P&&i.createElement("span",{style:md,"aria-live":"assertive"},pw(P)),i.createElement("div",null,i.createElement("input",{style:md,disabled:S===!1||f,tabIndex:S!==!1?w:null,onKeyDown:F,onFocus:$,onBlur:k,value:"",onChange:mw,"aria-label":"for screen reader"})),i.createElement("div",{className:"".concat(r,"-treenode"),"aria-hidden":!0,style:{position:"absolute",pointerEvents:"none",visibility:"hidden",height:0,overflow:"hidden",border:0,padding:0}},i.createElement("div",{className:"".concat(r,"-indent")},i.createElement("div",{ref:M,className:"".concat(r,"-indent-unit")}))),i.createElement(kg,J({},T,{data:Ee,itemKey:gd,height:y,fullHeight:!1,virtual:C,itemHeight:b,prefixCls:"".concat(r,"-list"),ref:N,onVisibleChange:function(fe,ie){var se=new Set(fe),pe=ie.filter(function(Ce){return!se.has(Ce)});pe.some(function(Ce){return gd(Ce)===ra})&&ge()}}),function(ce){var fe=ce.pos,ie=J({},(Gm(ce.data),ce.data)),se=ce.title,pe=ce.key,Ce=ce.isStart,Re=ce.isEnd,Fe=Ko(pe,fe);delete ie.key,delete ie.children;var Se=po(Fe,me);return i.createElement(dw,J({},ie,Se,{title:se,active:!!P&&pe===P.key,pos:fe,data:ce.data,isStart:Ce,isEnd:Re,motion:g,motionNodes:pe===ra?ne:null,motionType:ee,onMotionStart:D,onMotionEnd:ge,treeNodeRequiredProps:me,onMouseMove:function(){O(null)}}))}))});Zm.displayName="NodeList";function Vn(e,t){if(!e)return[];var r=e.slice(),n=r.indexOf(t);return n>=0&&r.splice(n,1),r}function tr(e,t){var r=(e||[]).slice();return r.indexOf(t)===-1&&r.push(t),r}function _u(e){return e.split("-")}function hw(e,t){var r=[],n=mn(t,e);function a(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];o.forEach(function(s){var l=s.key,u=s.children;r.push(l),a(u)})}return a(n.children),r}function gw(e){if(e.parent){var t=_u(e.pos);return Number(t[t.length-1])===e.parent.children.length-1}return!1}function yw(e){var t=_u(e.pos);return Number(t[t.length-1])===0}function yd(e,t,r,n,a,o,s,l,u,c){var d,f=e.clientX,v=e.clientY,m=e.target.getBoundingClientRect(),p=m.top,g=m.height,y=(c==="rtl"?-1:1)*(((a==null?void 0:a.x)||0)-f),b=(y-12)/n,C=mn(l,r.props.eventKey);if(v-1.5?o({dragNode:R,dropNode:T,dropPosition:1})?k=1:N=!1:o({dragNode:R,dropNode:T,dropPosition:0})?k=0:o({dragNode:R,dropNode:T,dropPosition:1})?k=1:N=!1:o({dragNode:R,dropNode:T,dropPosition:1})?k=1:N=!1,{dropPosition:k,dropLevelOffset:O,dropTargetKey:C.key,dropTargetPos:C.pos,dragOverNodeKey:$,dropContainerKey:k===0?null:((d=C.parent)===null||d===void 0?void 0:d.key)||null,dropAllowed:N}}function bd(e,t){if(e){var r=t.multiple;return r?e.slice():e.length?[e[0]]:e}}function Gl(e){if(!e)return null;var t;if(Array.isArray(e))t={checkedKeys:e,halfCheckedKeys:void 0};else if(He(e)==="object")t={checkedKeys:e.checked||void 0,halfCheckedKeys:e.halfChecked||void 0};else return on(!1,"`checkedKeys` is not an array or an object"),null;return t}function Is(e,t){var r=new Set;function n(a){if(!r.has(a)){var o=mn(t,a);if(o){r.add(a);var s=o.parent,l=o.node;l.disabled||s&&n(s.key)}}}return(e||[]).forEach(function(a){n(a)}),Ke(r)}var bw=10,kl=function(e){yn(r,e);var t=bn(r);function r(){var n;Cn(this,r);for(var a=arguments.length,o=new Array(a),s=0;s2&&arguments[2]!==void 0?arguments[2]:!1,f=n.state,v=f.dragChildrenKeys,m=f.dropPosition,p=f.dropTargetKey,g=f.dropTargetPos,y=f.dropAllowed;if(y){var b=n.props.onDrop;if(n.setState({dragOverNodeKey:null}),n.cleanDragState(),p!==null){var C=h(h({},po(p,n.getTreeNodeRequiredProps())),{},{active:((c=n.getActiveItem())===null||c===void 0?void 0:c.key)===p,data:mn(n.state.keyEntities,p).node}),S=v.indexOf(p)!==-1;on(!S,"Can not drop to dragNode's children node. This is a bug of rc-tree. Please report an issue.");var P=_u(g),E={event:l,node:Yt(C),dragNode:n.dragNode?Yt(n.dragNode.props):null,dragNodesKeys:[n.dragNode.props.eventKey].concat(v),dropToGap:m!==0,dropPosition:m+Number(P[P.length-1])};d||b==null||b(E),n.dragNode=null}}},n.cleanDragState=function(){var l=n.state.draggingNodeKey;l!==null&&n.setState({draggingNodeKey:null,dropPosition:null,dropContainerKey:null,dropTargetKey:null,dropLevelOffset:null,dropAllowed:!0,dragOverNodeKey:null}),n.dragStartMousePosition=null,n.currentMouseOverDroppableNodeKey=null},n.triggerExpandActionExpand=function(l,u){var c=n.state,d=c.expandedKeys,f=c.flattenNodes,v=u.expanded,m=u.key,p=u.isLeaf;if(!(p||l.shiftKey||l.metaKey||l.ctrlKey)){var g=f.filter(function(b){return b.key===m})[0],y=Yt(h(h({},po(m,n.getTreeNodeRequiredProps())),{},{data:g.data}));n.setExpandedKeys(v?Vn(d,m):tr(d,m)),n.onNodeExpand(l,y)}},n.onNodeClick=function(l,u){var c=n.props,d=c.onClick,f=c.expandAction;f==="click"&&n.triggerExpandActionExpand(l,u),d==null||d(l,u)},n.onNodeDoubleClick=function(l,u){var c=n.props,d=c.onDoubleClick,f=c.expandAction;f==="doubleClick"&&n.triggerExpandActionExpand(l,u),d==null||d(l,u)},n.onNodeSelect=function(l,u){var c=n.state.selectedKeys,d=n.state,f=d.keyEntities,v=d.fieldNames,m=n.props,p=m.onSelect,g=m.multiple,y=u.selected,b=u[v.key],C=!y;C?g?c=tr(c,b):c=[b]:c=Vn(c,b);var S=c.map(function(P){var E=mn(f,P);return E?E.node:null}).filter(function(P){return P});n.setUncontrolledState({selectedKeys:c}),p==null||p(c,{event:"select",selected:C,node:u,selectedNodes:S,nativeEvent:l.nativeEvent})},n.onNodeCheck=function(l,u,c){var d=n.state,f=d.keyEntities,v=d.checkedKeys,m=d.halfCheckedKeys,p=n.props,g=p.checkStrictly,y=p.onCheck,b=u.key,C,S={event:"check",node:u,checked:c,nativeEvent:l.nativeEvent};if(g){var P=c?tr(v,b):Vn(v,b),E=Vn(m,b);C={checked:P,halfChecked:E},S.checkedNodes=P.map(function(D){return mn(f,D)}).filter(function(D){return D}).map(function(D){return D.node}),n.setUncontrolledState({checkedKeys:P})}else{var w=En([].concat(Ke(v),[b]),!0,f),F=w.checkedKeys,$=w.halfCheckedKeys;if(!c){var k=new Set(F);k.delete(b);var O=En(Array.from(k),{checked:!1,halfCheckedKeys:$},f);F=O.checkedKeys,$=O.halfCheckedKeys}C=F,S.checkedNodes=[],S.checkedNodesPositions=[],S.halfCheckedKeys=$,F.forEach(function(D){var R=mn(f,D);if(R){var T=R.node,N=R.pos;S.checkedNodes.push(T),S.checkedNodesPositions.push({node:T,pos:N})}}),n.setUncontrolledState({checkedKeys:F},!1,{halfCheckedKeys:$})}y==null||y(C,S)},n.onNodeLoad=function(l){var u=l.key,c=new Promise(function(d,f){n.setState(function(v){var m=v.loadedKeys,p=m===void 0?[]:m,g=v.loadingKeys,y=g===void 0?[]:g,b=n.props,C=b.loadData,S=b.onLoad;if(!C||p.indexOf(u)!==-1||y.indexOf(u)!==-1)return null;var P=C(l);return P.then(function(){var E=n.state.loadedKeys,w=tr(E,u);S==null||S(w,{event:"load",node:l}),n.setUncontrolledState({loadedKeys:w}),n.setState(function(F){return{loadingKeys:Vn(F.loadingKeys,u)}}),d()}).catch(function(E){if(n.setState(function(F){return{loadingKeys:Vn(F.loadingKeys,u)}}),n.loadingRetryTimes[u]=(n.loadingRetryTimes[u]||0)+1,n.loadingRetryTimes[u]>=bw){var w=n.state.loadedKeys;on(!1,"Retry for `loadData` many times but still failed. No more retry."),n.setUncontrolledState({loadedKeys:tr(w,u)}),d()}f(E)}),{loadingKeys:tr(y,u)}})});return c.catch(function(){}),c},n.onNodeMouseEnter=function(l,u){var c=n.props.onMouseEnter;c==null||c({event:l,node:u})},n.onNodeMouseLeave=function(l,u){var c=n.props.onMouseLeave;c==null||c({event:l,node:u})},n.onNodeContextMenu=function(l,u){var c=n.props.onRightClick;c&&(l.preventDefault(),c({event:l,node:u}))},n.onFocus=function(){var l=n.props.onFocus;n.setState({focused:!0});for(var u=arguments.length,c=new Array(u),d=0;d1&&arguments[1]!==void 0?arguments[1]:!1,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;if(!n.destroyed){var d=!1,f=!0,v={};Object.keys(l).forEach(function(m){if(m in n.props){f=!1;return}d=!0,v[m]=l[m]}),d&&(!u||f)&&n.setState(h(h({},v),c))}},n.scrollTo=function(l){n.listRef.current.scrollTo(l)},n}return xn(r,[{key:"componentDidMount",value:function(){this.destroyed=!1,this.onUpdated()}},{key:"componentDidUpdate",value:function(){this.onUpdated()}},{key:"onUpdated",value:function(){var a=this.props.activeKey;a!==void 0&&a!==this.state.activeKey&&(this.setState({activeKey:a}),a!==null&&this.scrollTo({key:a}))}},{key:"componentWillUnmount",value:function(){window.removeEventListener("dragend",this.onWindowDragEnd),this.destroyed=!0}},{key:"resetDragState",value:function(){this.setState({dragOverNodeKey:null,dropPosition:null,dropLevelOffset:null,dropTargetKey:null,dropContainerKey:null,dropTargetPos:null,dropAllowed:!1})}},{key:"render",value:function(){var a,o=this.state,s=o.focused,l=o.flattenNodes,u=o.keyEntities,c=o.draggingNodeKey,d=o.activeKey,f=o.dropLevelOffset,v=o.dropContainerKey,m=o.dropTargetKey,p=o.dropPosition,g=o.dragOverNodeKey,y=o.indent,b=this.props,C=b.prefixCls,S=b.className,P=b.style,E=b.showLine,w=b.focusable,F=b.tabIndex,$=F===void 0?0:F,k=b.selectable,O=b.showIcon,D=b.icon,R=b.switcherIcon,T=b.draggable,N=b.checkable,M=b.checkStrictly,I=b.disabled,L=b.motion,j=b.loadData,_=b.filterTreeNode,K=b.height,z=b.itemHeight,A=b.virtual,V=b.titleRender,X=b.dropIndicatorRender,H=b.onContextMenu,Q=b.onScroll,Y=b.direction,ae=b.rootClassName,q=b.rootStyle,ne=gu(this.props,{aria:!0,data:!0}),ue;return T&&(He(T)==="object"?ue=T:typeof T=="function"?ue={nodeDraggable:T}:ue={}),i.createElement(Iu.Provider,{value:{prefixCls:C,selectable:k,showIcon:O,icon:D,switcherIcon:R,draggable:ue,draggingNodeKey:c,checkable:N,checkStrictly:M,disabled:I,keyEntities:u,dropLevelOffset:f,dropContainerKey:v,dropTargetKey:m,dropPosition:p,dragOverNodeKey:g,indent:y,direction:Y,dropIndicatorRender:X,loadData:j,filterTreeNode:_,titleRender:V,onNodeClick:this.onNodeClick,onNodeDoubleClick:this.onNodeDoubleClick,onNodeExpand:this.onNodeExpand,onNodeSelect:this.onNodeSelect,onNodeCheck:this.onNodeCheck,onNodeLoad:this.onNodeLoad,onNodeMouseEnter:this.onNodeMouseEnter,onNodeMouseLeave:this.onNodeMouseLeave,onNodeContextMenu:this.onNodeContextMenu,onNodeDragStart:this.onNodeDragStart,onNodeDragEnter:this.onNodeDragEnter,onNodeDragOver:this.onNodeDragOver,onNodeDragLeave:this.onNodeDragLeave,onNodeDragEnd:this.onNodeDragEnd,onNodeDrop:this.onNodeDrop}},i.createElement("div",{role:"tree",className:ve(C,S,ae,(a={},B(a,"".concat(C,"-show-line"),E),B(a,"".concat(C,"-focused"),s),B(a,"".concat(C,"-active-focused"),d!==null),a)),style:q},i.createElement(Zm,J({ref:this.listRef,prefixCls:C,style:P,data:l,disabled:I,selectable:k,checkable:!!N,motion:L,dragging:c!==null,height:K,itemHeight:z,virtual:A,focusable:w,focused:s,tabIndex:$,activeItem:this.getActiveItem(),onFocus:this.onFocus,onBlur:this.onBlur,onKeyDown:this.onKeyDown,onActiveChange:this.onActiveChange,onListChangeStart:this.onListChangeStart,onListChangeEnd:this.onListChangeEnd,onContextMenu:H,onScroll:Q},this.getTreeNodeRequiredProps(),ne))))}}],[{key:"getDerivedStateFromProps",value:function(a,o){var s=o.prevProps,l={prevProps:a};function u(w){return!s&&w in a||s&&s[w]!==a[w]}var c,d=o.fieldNames;if(u("fieldNames")&&(d=Ai(a.fieldNames),l.fieldNames=d),u("treeData")?c=a.treeData:u("children")&&(on(!1,"`children` of Tree is deprecated. Please use `treeData` instead."),c=im(a.children)),c){l.treeData=c;var f=Vo(c,{fieldNames:d});l.keyEntities=h(B({},ra,Xm),f.keyEntities)}var v=l.keyEntities||o.keyEntities;if(u("expandedKeys")||s&&u("autoExpandParent"))l.expandedKeys=a.autoExpandParent||!s&&a.defaultExpandParent?Is(a.expandedKeys,v):a.expandedKeys;else if(!s&&a.defaultExpandAll){var m=h({},v);delete m[ra],l.expandedKeys=Object.keys(m).map(function(w){return m[w].key})}else!s&&a.defaultExpandedKeys&&(l.expandedKeys=a.autoExpandParent||a.defaultExpandParent?Is(a.defaultExpandedKeys,v):a.defaultExpandedKeys);if(l.expandedKeys||delete l.expandedKeys,c||l.expandedKeys){var p=Wl(c||o.treeData,l.expandedKeys||o.expandedKeys,d);l.flattenNodes=p}if(a.selectable&&(u("selectedKeys")?l.selectedKeys=bd(a.selectedKeys,a):!s&&a.defaultSelectedKeys&&(l.selectedKeys=bd(a.defaultSelectedKeys,a))),a.checkable){var g;if(u("checkedKeys")?g=Gl(a.checkedKeys)||{}:!s&&a.defaultCheckedKeys?g=Gl(a.defaultCheckedKeys)||{}:c&&(g=Gl(a.checkedKeys)||{checkedKeys:o.checkedKeys,halfCheckedKeys:o.halfCheckedKeys}),g){var y=g,b=y.checkedKeys,C=b===void 0?[]:b,S=y.halfCheckedKeys,P=S===void 0?[]:S;if(!a.checkStrictly){var E=En(C,!0,v);C=E.checkedKeys,P=E.halfCheckedKeys}l.checkedKeys=C,l.halfCheckedKeys=P}}return u("loadedKeys")&&(l.loadedKeys=a.loadedKeys),l}}]),r}(i.Component);kl.defaultProps={prefixCls:"rc-tree",showLine:!1,showIcon:!0,selectable:!0,multiple:!1,checkable:!1,disabled:!1,checkStrictly:!1,draggable:!1,defaultExpandParent:!0,autoExpandParent:!1,defaultExpandAll:!1,defaultExpandedKeys:[],defaultCheckedKeys:[],defaultSelectedKeys:[],dropIndicatorRender:rw,allowDrop:function(){return!0},expandAction:!1};kl.TreeNode=Ea;var Cd=4;function Cw(e){var t=e.dropPosition,r=e.dropLevelOffset,n=e.prefixCls,a=e.indent,o=e.direction,s=o===void 0?"ltr":o,l=s==="ltr"?"left":"right",u=s==="ltr"?"right":"left",c=B(B({},l,-r*a+Cd),u,0);switch(t){case-1:c.top=-3;break;case 1:c.bottom=-3;break;default:c.bottom=-3,c[l]=a+Cd;break}return Z.createElement("div",{style:c,className:"".concat(n,"-drop-indicator")})}function Qm(e,t,r,n){var a=n.isLeaf,o=n.expanded,s=n.loading;if(s)return i.createElement(La,{className:"".concat(e,"-switcher-loading-icon")});var l;if(r&&He(r)==="object"&&(l=r.showLeafIcon),a){if(!r)return null;if(typeof l!="boolean"&&l){var u=typeof l=="function"?l(n):l,c="".concat(e,"-switcher-line-custom-icon");return lc(u)?xa(u,{className:ve(u.props.className||"",c)}):u}return l?i.createElement(Nv,{className:"".concat(e,"-switcher-line-icon")}):i.createElement("span",{className:"".concat(e,"-switcher-leaf-line")})}var d="".concat(e,"-switcher-icon"),f=typeof t=="function"?t(n):t;return lc(f)?xa(f,{className:ve(f.props.className||"",d)}):f||(r?o?i.createElement(S1,{className:"".concat(e,"-switcher-line-icon")}):i.createElement(R1,{className:"".concat(e,"-switcher-line-icon")}):i.createElement(Gg,{className:d}))}var xw=i.forwardRef(function(e,t){var r=i.useContext(Bt),n=r.getPrefixCls,a=r.direction,o=r.virtual,s=e.prefixCls,l=e.className,u=e.showIcon,c=u===void 0?!1:u,d=e.showLine,f=e.switcherIcon,v=e.blockNode,m=v===void 0?!1:v,p=e.children,g=e.checkable,y=g===void 0?!1:g,b=e.selectable,C=b===void 0?!0:b,S=e.draggable,P=e.motion,E=P===void 0?J(J({},gg),{motionAppear:!1}):P,w=n("tree",s),F=J(J({},e),{checkable:y,selectable:C,showIcon:c,motion:E,blockNode:m,showLine:!!d,dropIndicatorRender:Cw}),$=i.useMemo(function(){if(!S)return!1;var k={};switch(He(S)){case"function":k.nodeDraggable=S;break;case"object":k=J({},S);break}return k.icon!==!1&&(k.icon=k.icon||i.createElement(g1,null)),k},[S]);return i.createElement(kl,J({itemHeight:20,ref:t,virtual:o},F,{prefixCls:w,className:ve(B(B(B(B({},"".concat(w,"-icon-hide"),!c),"".concat(w,"-block-node"),m),"".concat(w,"-unselectable"),!C),"".concat(w,"-rtl"),a==="rtl"),l),direction:a,checkable:y&&i.createElement("span",{className:"".concat(w,"-checkbox-inner")}),selectable:C,switcherIcon:function(O){return Qm(w,f,d,O)},draggable:$}),p)});const Jm=xw;var nr;(function(e){e[e.None=0]="None",e[e.Start=1]="Start",e[e.End=2]="End"})(nr||(nr={}));function Lu(e,t){function r(n){var a=n.key,o=n.children;t(a,n)!==!1&&Lu(o||[],t)}e.forEach(r)}function Sw(e){var t=e.treeData,r=e.expandedKeys,n=e.startKey,a=e.endKey,o=[],s=nr.None;if(n&&n===a)return[n];if(!n||!a)return[];function l(u){return u===n||u===a}return Lu(t,function(u){if(s===nr.End)return!1;if(l(u)){if(o.push(u),s===nr.None)s=nr.Start;else if(s===nr.Start)return s=nr.End,!1}else s===nr.Start&&o.push(u);return r.includes(u)}),o}function ql(e,t){var r=Ke(t),n=[];return Lu(e,function(a,o){var s=r.indexOf(a);return s!==-1&&(n.push(o),r.splice(s,1)),!!r.length}),n}var xd=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a0&&arguments[0]!==void 0?arguments[0]:{confirm:!1,closeDropdown:!1},Pe=ke.confirm,Qe=ke.closeDropdown;Pe&&ue([]),Qe&&R(!1),q(""),j(E?(w||[]).map(function(et){return String(et)}):[])},ee=function(){var ke=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{closeDropdown:!0},Pe=ke.closeDropdown;Pe&&R(!1),ue(L())},le=function(ke){ke&&N!==void 0&&j(Xl(N)),R(ke),!ke&&!a.filterDropdown&&G()},re=ve(B({},"".concat(o,"-menu-without-submenu"),!Nw(a.filters||[]))),ge=function(ke){if(ke.target.checked){var Pe=ba(a==null?void 0:a.filters).map(function(Qe){return String(Qe)});j(Pe)}else j([])},Ee=function Se(ke){var Pe=ke.filters;return(Pe||[]).map(function(Qe,et){var vt=String(Qe.value),ct={title:Qe.text,key:Qe.value!==void 0?vt:String(et)};return Qe.children&&(ct.children=Se({filters:Qe.children})),ct})},me=function Se(ke){var Pe;return J(J({},ke),{text:ke.title,value:ke.key,children:((Pe=ke.children)===null||Pe===void 0?void 0:Pe.map(function(Qe){return Se(Qe)}))||[]})},ce;if(typeof a.filterDropdown=="function")ce=a.filterDropdown({prefixCls:"".concat(o,"-custom"),setSelectedKeys:function(ke){return _({selectedKeys:ke})},selectedKeys:L(),confirm:ee,clearFilters:te,filters:a.filters,visible:T,close:function(){R(!1)}});else if(a.filterDropdown)ce=a.filterDropdown;else{var fe=L()||[],ie=function(){return(a.filters||[]).length===0?i.createElement(fc,{image:fc.PRESENTED_IMAGE_SIMPLE,description:p.filterEmptyText,imageStyle:{height:24},style:{margin:0,padding:"16px 0"}}):c==="tree"?i.createElement(i.Fragment,null,i.createElement(wd,{filterSearch:f,value:ae,onChange:ne,tablePrefixCls:r,locale:p}),i.createElement("div",{className:"".concat(r,"-filter-dropdown-tree")},l?i.createElement(Sa,{checked:fe.length===ba(a.filters).length,indeterminate:fe.length>0&&fe.length0?o:e}),v=Math.ceil((o||e)/f.pageSize);f.current>v&&(f.current=v||1);var m=function(y,b){d({current:y??1,pageSize:b||f.pageSize})},p=function(y,b){var C;t&&((C=t.onChange)===null||C===void 0||C.call(t,y,b)),m(y,b),r(y,b||(f==null?void 0:f.pageSize))};return t===!1?[{},function(){}]:[J(J({},f),{onChange:p}),m]}var xr={},Ls="SELECT_ALL",js="SELECT_INVERT",As="SELECT_NONE",kd=[];function ip(e,t){var r=[];return(e||[]).forEach(function(n){r.push(n),n&&He(n)==="object"&&t in n&&(r=[].concat(Ke(r),Ke(ip(n[t],t))))}),r}function jw(e,t){var r=e||{},n=r.preserveSelectedRowKeys,a=r.selectedRowKeys,o=r.defaultSelectedRowKeys,s=r.getCheckboxProps,l=r.onChange,u=r.onSelect,c=r.onSelectAll,d=r.onSelectInvert,f=r.onSelectNone,v=r.onSelectMultiple,m=r.columnWidth,p=r.type,g=r.selections,y=r.fixed,b=r.renderCell,C=r.hideSelectAll,S=r.checkStrictly,P=S===void 0?!0:S,E=t.prefixCls,w=t.data,F=t.pageData,$=t.getRecordByKey,k=t.getRowKey,O=t.expandType,D=t.childrenColumnName,R=t.locale,T=t.getPopupContainer,N=kt(a||o||kd,{value:a}),M=U(N,2),I=M[0],L=M[1],j=i.useRef(new Map),_=i.useCallback(function(me){if(n){var ce=new Map;me.forEach(function(fe){var ie=$(fe);!ie&&j.current.has(fe)&&(ie=j.current.get(fe)),ce.set(fe,ie)}),j.current=ce}},[$,n]);i.useEffect(function(){_(I)},[I]);var K=i.useMemo(function(){return P?{keyEntities:null}:Vo(w,{externalGetKey:k,childrenPropName:D})},[w,k,P,D]),z=K.keyEntities,A=i.useMemo(function(){return ip(F,D)},[F,D]),V=i.useMemo(function(){var me=new Map;return A.forEach(function(ce,fe){var ie=k(ce,fe),se=(s?s(ce):null)||{};me.set(ie,se)}),me},[A,k,s]),X=i.useCallback(function(me){var ce;return!!(!((ce=V.get(k(me)))===null||ce===void 0)&&ce.disabled)},[V,k]),H=i.useMemo(function(){if(P)return[I||[],[]];var me=En(I,!0,z,X),ce=me.checkedKeys,fe=me.halfCheckedKeys;return[ce||[],fe]},[I,P,z,X]),Q=U(H,2),Y=Q[0],ae=Q[1],q=i.useMemo(function(){var me=p==="radio"?Y.slice(0,1):Y;return new Set(me)},[Y,p]),ne=i.useMemo(function(){return p==="radio"?new Set:new Set(ae)},[ae,p]),ue=i.useState(null),G=U(ue,2),te=G[0],ee=G[1];i.useEffect(function(){e||L(kd)},[!!e]);var le=i.useCallback(function(me,ce){var fe,ie;_(me),n?(fe=me,ie=me.map(function(se){return j.current.get(se)})):(fe=[],ie=[],me.forEach(function(se){var pe=$(se);pe!==void 0&&(fe.push(se),ie.push(pe))})),L(fe),l==null||l(fe,ie,{type:ce})},[L,$,l,n]),re=i.useCallback(function(me,ce,fe,ie){if(u){var se=fe.map(function(pe){return $(pe)});u($(me),ce,se,ie)}le(fe,"single")},[u,$,le]),ge=i.useMemo(function(){if(!g||C)return null;var me=g===!0?[Ls,js,As]:g;return me.map(function(ce){return ce===Ls?{key:"all",text:R.selectionAll,onSelect:function(){le(w.map(function(ie,se){return k(ie,se)}).filter(function(ie){var se=V.get(ie);return!(se!=null&&se.disabled)||q.has(ie)}),"all")}}:ce===js?{key:"invert",text:R.selectInvert,onSelect:function(){var ie=new Set(q);F.forEach(function(pe,Ce){var Re=k(pe,Ce),Fe=V.get(Re);Fe!=null&&Fe.disabled||(ie.has(Re)?ie.delete(Re):ie.add(Re))});var se=Array.from(ie);d&&d(se),le(se,"invert")}}:ce===As?{key:"none",text:R.selectNone,onSelect:function(){f==null||f(),le(Array.from(q).filter(function(ie){var se=V.get(ie);return se==null?void 0:se.disabled}),"none")}}:ce}).map(function(ce){return J(J({},ce),{onSelect:function(){for(var ie,se,pe=arguments.length,Ce=new Array(pe),Re=0;Re2&&arguments[2]!==void 0?arguments[2]:!1,Oe=J(J({},fe),je);De&&(fe.resetPagination(),Oe.pagination.current&&(Oe.pagination.current=1),c&&c.onChange&&c.onChange(1,Oe.pagination.pageSize)),k&&k.scrollToFirstRowOnChange!==!1&&re.body.current&&ky(0,{getContainer:function(){return re.body.current}}),b==null||b(Oe.pagination,Oe.filters,Oe.sorter,{currentDataSource:Ed(Vs(Y,Oe.sorterStates,ee),Oe.filterStates),action:Ie})},se=function(je,Ie){ie({sorter:je,sorterStates:Ie},"sort",!1)},pe=Kw({prefixCls:ne,mergedColumns:L,onSorterChange:se,sortDirections:O||["ascend","descend"],tableLocale:Q,showSorterTooltip:T}),Ce=U(pe,4),Re=Ce[0],Fe=Ce[1],Se=Ce[2],ke=Ce[3],Pe=i.useMemo(function(){return Vs(Y,Fe,ee)},[Y,Fe]);fe.sorter=ke(),fe.sorterStates=Fe;var Qe=function(je,Ie){ie({filters:je,filterStates:Ie},"filter",!0)},et=Dw({prefixCls:ne,locale:Q,dropdownPrefixCls:ue,mergedColumns:L,onFilterChange:Qe,getPopupContainer:C}),vt=U(et,3),ct=vt[0],ht=vt[1],Ge=vt[2],_e=Ed(Pe,ht);fe.filters=Ge,fe.filterStates=ht;var mt=i.useMemo(function(){var Ne={};return Object.keys(Ge).forEach(function(je){Ge[je]!==null&&(Ne[je]=Ge[je])}),J(J({},Se),{filters:Ne})},[Se,Ge]),tt=Vw(mt),we=U(tt,1),We=we[0],Te=function(je,Ie){ie({pagination:J(J({},fe.pagination),{current:je,pageSize:Ie})},"paginate")},Le=Lw(_e.length,c,Te),ye=U(Le,2),de=ye[0],be=ye[1];fe.pagination=c===!1?{}:Iw(c,de),fe.resetPagination=be;var Me=i.useMemo(function(){if(c===!1||!de.pageSize)return _e;var Ne=de.current,je=Ne===void 0?1:Ne,Ie=de.total,De=de.pageSize,Oe=De===void 0?op:De;return _e.lengthOe?_e.slice((je-1)*Oe,je*Oe):_e:_e.slice((je-1)*Oe,je*Oe)},[!!c,_e,de&&de.current,de&&de.pageSize,de&&de.total]),Ye=jw(d,{prefixCls:ne,data:_e,pageData:Me,getRowKey:ge,getRecordByKey:ce,expandType:le,childrenColumnName:ee,locale:Q,getPopupContainer:C}),lt=U(Ye,2),$e=lt[0],xe=lt[1],Je=function(je,Ie,De){var Oe;return typeof m=="function"?Oe=ve(m(je,Ie,De)):Oe=ve(m),ve(B({},"".concat(ne,"-row-selected"),xe.has(ge(je,Ie))),Oe)};G.__PARENT_RENDER_ICON__=G.expandIcon,G.expandIcon=G.expandIcon||P||D2(Q),le==="nest"&&G.expandIconColumnIndex===void 0?G.expandIconColumnIndex=d?1:0:G.expandIconColumnIndex>0&&d&&(G.expandIconColumnIndex-=1),typeof G.indentSize!="number"&&(G.indentSize=typeof $=="number"?$:15);var dt=i.useCallback(function(Ne){return We($e(ct(Re(Ne))))},[Re,ct,$e]),ut,$t;if(c!==!1&&(de!=null&&de.total)){var Dt;de.size?Dt=de.size:Dt=H==="small"||H==="middle"?"small":void 0;var Rt=function(je){return i.createElement(bx,J({},de,{className:ve("".concat(ne,"-pagination ").concat(ne,"-pagination-").concat(je),de.className),size:Dt}))},Ft=X==="rtl"?"left":"right",nt=de.position;if(nt!==null&&Array.isArray(nt)){var ot=nt.find(function(Ne){return Ne.includes("top")}),ft=nt.find(function(Ne){return Ne.includes("bottom")}),it=nt.every(function(Ne){return"".concat(Ne)==="none"});!ot&&!ft&&!it&&($t=Rt(Ft)),ot&&(ut=Rt(ot.toLowerCase().replace("top",""))),ft&&($t=Rt(ft.toLowerCase().replace("bottom","")))}else $t=Rt(Ft)}var Ze;typeof S=="boolean"?Ze={spinning:S}:He(S)==="object"&&(Ze=J({spinning:!0},S));var Xe=ve("".concat(ne,"-wrapper"),B({},"".concat(ne,"-wrapper-rtl"),X==="rtl"),n);return i.createElement("div",{ref:t,className:Xe,style:a},i.createElement(Fr,J({spinning:!1},Ze),ut,i.createElement(la,J({},j,{columns:L,direction:X,expandable:G,prefixCls:ne,className:ve(B(B(B(B({},"".concat(ne,"-middle"),H==="middle"),"".concat(ne,"-small"),H==="small"),"".concat(ne,"-bordered"),s),"".concat(ne,"-empty"),Y.length===0)),data:Me,rowKey:ge,rowClassName:Je,emptyText:D&&D.emptyText||(V||bu)("Table"),internalHooks:Di,internalRefs:re,transformColumns:dt})),$t))}var Hw=i.forwardRef(Bw),ur=Hw;ur.SELECTION_COLUMN=xr;ur.EXPAND_COLUMN=la.EXPAND_COLUMN;ur.SELECTION_ALL=Ls;ur.SELECTION_INVERT=js;ur.SELECTION_NONE=As;ur.Column=N2;ur.ColumnGroup=$2;ur.Summary=jm;const ka=ur;var Ww=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a1&&arguments[1]!==void 0?arguments[1]:"0",v=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return d.map(function(m,p){var g="".concat(f,"-").concat(p),y=m[o.value],b=r.includes(y),C=c(m[o.children]||[],g,b),S=i.createElement(Au,m,C.map(function(E){return E.node}));if(t===y&&(s=S),b){var P={pos:g,node:S,children:C};return v||l.push(P),P}return null}).filter(function(m){return m})}l||(l=[],c(n),l.sort(function(d,f){var v=d.node.props.value,m=f.node.props.value,p=r.indexOf(v),g=r.indexOf(m);return p-g}))}Object.defineProperty(e,"triggerNode",{get:function(){return on(!1,"`triggerNode` is deprecated. Please consider decoupling data with node."),u(),s}}),Object.defineProperty(e,"allCheckedNodes",{get:function(){return on(!1,"`allCheckedNodes` is deprecated. Please consider decoupling data with node."),u(),a?l:l.map(function(d){var f=d.node;return f})}})}function n6(e,t){var r=t.id,n=t.pId,a=t.rootPId,o={},s=[],l=e.map(function(u){var c=h({},u),d=c[r];return o[d]=c,c.key=c.key||d,c});return l.forEach(function(u){var c=u[n],d=o[c];d&&(d.children=d.children||[],d.children.push(u)),(c===a||!d&&a===null)&&s.push(u)}),s}function r6(e,t,r){return i.useMemo(function(){return e?r?n6(e,h({id:"id",pId:"pId",rootPId:null},r!==!0?r:{})):e:pp(t)},[t,r,e])}const a6=function(e){var t=i.useRef({valueLabels:new Map});return i.useMemo(function(){var r=t.current.valueLabels,n=new Map,a=e.map(function(o){var s,l=o.value,u=(s=o.label)!==null&&s!==void 0?s:r.get(l);return n.set(l,u),h(h({},o),{},{label:u})});return t.current.valueLabels=n,[a]},[e])};function $d(e){var t=i.useRef();t.current=e;var r=i.useCallback(function(){return t.current.apply(t,arguments)},[]);return r}const o6=function(e,t){return i.useMemo(function(){var r=Vo(e,{fieldNames:t,initWrapper:function(a){return h(h({},a),{},{valueEntities:new Map})},processEntity:function(a,o){var s=a.node[t.value];o.valueEntities.set(s,a)}});return r},[e,t])},i6=function(e,t,r,n){return i.useMemo(function(){var a=e.map(function(u){var c=u.value;return c}),o=t.map(function(u){var c=u.value;return c}),s=a.filter(function(u){return!n[u]});if(r){var l=En(a,!0,n);a=l.checkedKeys,o=l.halfCheckedKeys}return[Array.from(new Set([].concat(Ke(s),Ke(a)))),o]},[e,t,r,n])},l6=function(e,t,r){var n=r.treeNodeFilterProp,a=r.filterTreeNode,o=r.fieldNames,s=o.children;return i.useMemo(function(){if(!t||a===!1)return e;var l;if(typeof a=="function")l=a;else{var u=t.toUpperCase();l=function(f,v){var m=v[n];return String(m).toUpperCase().includes(u)}}function c(d){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return d.map(function(v){var m=v[s],p=f||l(t,Bs(v)),g=c(m||[],p);return p||g.length?h(h({},v),{},B({isLeaf:void 0},s,g)):null}).filter(function(v){return v})}return c(e)},[e,t,s,n,a])};var s6=["id","prefixCls","value","defaultValue","onChange","onSelect","onDeselect","searchValue","inputValue","onSearch","autoClearSearchValue","filterTreeNode","treeNodeFilterProp","showCheckedStrategy","treeNodeLabelProp","multiple","treeCheckable","treeCheckStrictly","labelInValue","fieldNames","treeDataSimpleMode","treeData","children","loadData","treeLoadedKeys","onTreeLoad","treeDefaultExpandAll","treeExpandedKeys","treeDefaultExpandedKeys","onTreeExpand","treeExpandAction","virtual","listHeight","listItemHeight","onDropdownVisibleChange","dropdownMatchSelectWidth","treeLine","treeIcon","showTreeIcon","switcherIcon","treeMotion"];function u6(e){return!e||He(e)!=="object"}var c6=i.forwardRef(function(e,t){var r=e.id,n=e.prefixCls,a=n===void 0?"rc-tree-select":n,o=e.value,s=e.defaultValue,l=e.onChange,u=e.onSelect,c=e.onDeselect,d=e.searchValue,f=e.inputValue,v=e.onSearch,m=e.autoClearSearchValue,p=m===void 0?!0:m,g=e.filterTreeNode,y=e.treeNodeFilterProp,b=y===void 0?"value":y,C=e.showCheckedStrategy,S=C===void 0?Rl:C,P=e.treeNodeLabelProp,E=e.multiple,w=e.treeCheckable,F=e.treeCheckStrictly,$=e.labelInValue,k=e.fieldNames,O=e.treeDataSimpleMode,D=e.treeData,R=e.children,T=e.loadData,N=e.treeLoadedKeys,M=e.onTreeLoad,I=e.treeDefaultExpandAll,L=e.treeExpandedKeys,j=e.treeDefaultExpandedKeys,_=e.onTreeExpand,K=e.treeExpandAction,z=e.virtual,A=e.listHeight,V=A===void 0?200:A,X=e.listItemHeight,H=X===void 0?20:X,Q=e.onDropdownVisibleChange,Y=e.dropdownMatchSelectWidth,ae=Y===void 0?!0:Y,q=e.treeLine,ne=e.treeIcon,ue=e.showTreeIcon,G=e.switcherIcon,te=e.treeMotion,ee=ze(e,s6),le=wv(r),re=w&&!F,ge=w||F,Ee=F||$,me=ge||E,ce=kt(s,{value:o}),fe=U(ce,2),ie=fe[0],se=fe[1],pe=i.useMemo(function(){return Xw(k)},[JSON.stringify(k)]),Ce=kt("",{value:d!==void 0?d:f,postState:function(ot){return ot||""}}),Re=U(Ce,2),Fe=Re[0],Se=Re[1],ke=function(ot){Se(ot),v==null||v(ot)},Pe=r6(D,R,O),Qe=o6(Pe,pe),et=Qe.keyEntities,vt=Qe.valueEntities,ct=i.useCallback(function(nt){var ot=[],ft=[];return nt.forEach(function(it){vt.has(it)?ft.push(it):ot.push(it)}),{missingRawValues:ot,existRawValues:ft}},[vt]),ht=l6(Pe,Fe,{fieldNames:pe,treeNodeFilterProp:b,filterTreeNode:g}),Ge=i.useCallback(function(nt){if(nt){if(P)return nt[P];for(var ot=pe._title,ft=0;ftt){var c=t-r;return n.push(String(o).slice(0,c)),n}n.push(o),r=u}return e}var S6=0,Ei=1,Od=2,Jl=3,Id=4,w6=function(t){var r=t.enabledMeasure,n=t.children,a=t.text,o=t.width,s=t.fontSize,l=t.rows,u=t.onEllipsis,c=i.useState([0,0,0]),d=U(c,2),f=U(d[0],3),v=f[0],m=f[1],p=f[2],g=d[1],y=i.useState(S6),b=U(y,2),C=b[0],S=b[1],P=i.useState(0),E=U(P,2),w=E[0],F=E[1],$=i.useRef(null),k=i.useRef(null),O=i.useMemo(function(){return Rn(a)},[a]),D=i.useMemo(function(){return x6(O)},[O]),R=i.useMemo(function(){return!r||C!==Jl?n(O,!1):n(Dd(O,m),m1&&Me,xe=function(Ue){var st;Re(!0),(st=Te.onExpand)===null||st===void 0||st.call(Te,Ue)},Je=i.useState(0),dt=U(Je,2),ut=dt[0],$t=dt[1],Dt=i.useState(0),Rt=U(Dt,2),Ft=Rt[0],nt=Rt[1],ot=function(Ue,st){var gt=Ue.offsetWidth,At;$t(gt),nt(parseInt((At=window.getComputedStyle)===null||At===void 0?void 0:At.call(window,st).fontSize,10)||0)},ft=function(Ue){var st;Pe(Ue),ke!==Ue&&((st=Te.onEllipsis)===null||st===void 0||st.call(Te,Ue))};i.useEffect(function(){var Oe=E.current;if(We&&Me&&Oe){var Ue=$e?Oe.offsetHeight"u"||!Oe||!Me||!Le)){var Ue=new IntersectionObserver(function(){mt(!!Oe.offsetParent)});return Ue.observe(Oe),function(){Ue.disconnect()}}},[Me,Le]);var it={};Te.tooltip===!0?it={title:(r=R.text)!==null&&r!==void 0?r:d}:i.isValidElement(Te.tooltip)?it={title:Te.tooltip}:He(Te.tooltip)==="object"?it=J({title:(n=R.text)!==null&&n!==void 0?n:d},Te.tooltip):it={title:Te.tooltip};var Ze=i.useMemo(function(){var Oe=function(st){return["string","number"].includes(He(st))};if(!(!We||Me)){if(Oe(R.text))return R.text;if(Oe(d))return d;if(Oe(g))return g;if(Oe(it.title))return it.title}},[We,Me,g,it.title,Ye]);if(M)return i.createElement(h6,{value:(a=R.text)!==null&&a!==void 0?a:typeof d=="string"?d:"",onSave:z,onCancel:A,onEnd:R.onEnd,prefixCls:F,className:s,style:l,direction:S,component:p,maxLength:R.maxLength,autoSize:R.autoSize,enterIcon:R.enterIcon});var Xe=function(){var Ue=Te.expandable,st=Te.symbol;if(!Ue)return null;var gt;return st?gt=st:gt=P.expand,i.createElement("a",{key:"expand",className:"".concat(F,"-expand"),onClick:xe,"aria-label":P.expand},gt)},Ne=function(){if(D){var Ue=R.icon,st=R.tooltip,gt=Rn(st)[0]||P.edit,At=typeof gt=="string"?gt:"";return j.includes("icon")?i.createElement(nn,{key:"edit",title:st===!1?"":gt},i.createElement(Lc,{ref:w,className:"".concat(F,"-edit"),onClick:K,"aria-label":At},Ue||i.createElement(Lg,{role:"button"}))):null}},je=function(){if(H){var Ue=Q.tooltips,st=Q.icon,gt=_d(Ue),At=_d(st),It=q?ki(gt[1],P.copied):ki(gt[0],P.copy),qt=q?P.copied:P.copy,Sn=typeof It=="string"?It:qt;return i.createElement(nn,{key:"copy",title:It},i.createElement(Lc,{className:ve("".concat(F,"-copy"),q&&"".concat(F,"-copy-success")),onClick:ee,"aria-label":Sn},q?ki(At[1],i.createElement(kv,null),!0):ki(At[0],i.createElement(Cu,null),!0)))}},Ie=function(Ue){return[Ue&&Xe(),Ne(),je()]},De=function(Ue){return[Ue&&i.createElement("span",{"aria-hidden":!0,key:"ellipsis"},T6),Te.suffix,Ie(Ue)]};return i.createElement(Tr,{onResize:ot,disabled:!Le||Me},function(Oe){return i.createElement(k6,{tooltipProps:it,enabledEllipsis:Le,isEllipsis:Ye},i.createElement(hp,J({className:ve(B(B(B(B(B(B({},"".concat(F,"-").concat(u),u),"".concat(F,"-disabled"),c),"".concat(F,"-ellipsis"),We),"".concat(F,"-single-line"),Le&&de===1),"".concat(F,"-ellipsis-single-line"),lt),"".concat(F,"-ellipsis-multiple-line"),$e),s),prefixCls:o,style:J(J({},l),{WebkitLineClamp:$e?de:void 0}),component:p,ref:uu(Oe,E,t),direction:S,onClick:j.includes("text")?K:void 0,"aria-label":Ze==null?void 0:Ze.toString(),title:g},$),i.createElement(P6,{enabledMeasure:Le&&!Me,text:d,rows:de,width:ut,fontSize:Ft,onEllipsis:ft},function(Ue,st){var gt=Ue;Ue.length&&st&&Ze&&(gt=i.createElement("span",{key:"show-content","aria-hidden":!0},gt));var At=M6(e,i.createElement(i.Fragment,null,gt,De(st)));return At})))})});const Ml=F6;var N6=globalThis&&globalThis.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(e);a=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(c){throw c},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o,s=!0,l=!1;return{s:function(){r=r.call(e)},n:function(){var c=r.next();return s=c.done,c},e:function(c){l=!0,o=c},f:function(){try{s||r.return==null||r.return()}finally{if(l)throw o}}}}var H6={locale:"zh_CN",today:"今天",now:"此刻",backToToday:"返回今天",ok:"确定",timeSelect:"选择时间",dateSelect:"选择日期",weekSelect:"选择周",clear:"清除",month:"月",year:"年",previousMonth:"上个月 (翻页上键)",nextMonth:"下个月 (翻页下键)",monthSelect:"选择月份",yearSelect:"选择年份",decadeSelect:"选择年代",yearFormat:"YYYY年",dayFormat:"D日",dateFormat:"YYYY年M月D日",dateTimeFormat:"YYYY年M月D日 HH时mm分ss秒",previousYear:"上一年 (Control键加左方向键)",nextYear:"下一年 (Control键加右方向键)",previousDecade:"上一年代",nextDecade:"下一年代",previousCentury:"上一世纪",nextCentury:"下一世纪"},W6={placeholder:"请选择时间",rangePlaceholder:["开始时间","结束时间"]};const yp=W6;var bp={lang:J({placeholder:"请选择日期",yearPlaceholder:"请选择年份",quarterPlaceholder:"请选择季度",monthPlaceholder:"请选择月份",weekPlaceholder:"请选择周",rangePlaceholder:["开始日期","结束日期"],rangeYearPlaceholder:["开始年份","结束年份"],rangeMonthPlaceholder:["开始月份","结束月份"],rangeQuarterPlaceholder:["开始季度","结束季度"],rangeWeekPlaceholder:["开始周","结束周"]},H6),timePickerLocale:J({},yp)};bp.lang.ok="确定";const Ld=bp;var fn="${label}不是一个有效的${type}",Cp={locale:"zh-cn",Pagination:pm,DatePicker:Ld,TimePicker:yp,Calendar:Ld,global:{placeholder:"请选择"},Table:{filterTitle:"筛选",filterConfirm:"确定",filterReset:"重置",filterEmptyText:"无筛选项",filterCheckall:"全选",filterSearchPlaceholder:"在筛选项中搜索",selectAll:"全选当页",selectInvert:"反选当页",selectNone:"清空所有",selectionAll:"全选所有",sortTitle:"排序",expand:"展开行",collapse:"关闭行",triggerDesc:"点击降序",triggerAsc:"点击升序",cancelSort:"取消排序"},Modal:{okText:"确定",cancelText:"取消",justOkText:"知道了"},Popconfirm:{cancelText:"取消",okText:"确定"},Transfer:{titles:["",""],searchPlaceholder:"请输入搜索内容",itemUnit:"项",itemsUnit:"项",remove:"删除",selectCurrent:"全选当页",removeCurrent:"删除当页",selectAll:"全选所有",removeAll:"删除全部",selectInvert:"反选当页"},Upload:{uploading:"文件上传中",removeFile:"删除文件",uploadError:"上传错误",previewFile:"预览文件",downloadFile:"下载文件"},Empty:{description:"暂无数据"},Icon:{icon:"图标"},Text:{edit:"编辑",copy:"复制",copied:"复制成功",expand:"展开"},PageHeader:{back:"返回"},Form:{optional:"(可选)",defaultValidateMessages:{default:"字段验证错误${label}",required:"请输入${label}",enum:"${label}必须是其中一个[${enum}]",whitespace:"${label}不能为空字符",date:{format:"${label}日期格式无效",parse:"${label}不能转换为日期",invalid:"${label}是一个无效日期"},types:{string:fn,method:fn,array:fn,object:fn,number:fn,date:fn,boolean:fn,integer:fn,float:fn,regexp:fn,email:fn,url:fn,hex:fn},string:{len:"${label}须为${len}个字符",min:"${label}最少${min}个字符",max:"${label}最多${max}个字符",range:"${label}须在${min}-${max}字符之间"},number:{len:"${label}必须等于${len}",min:"${label}最小值为${min}",max:"${label}最大值为${max}",range:"${label}须在${min}-${max}之间"},array:{len:"须为${len}个${label}",min:"最少${min}个${label}",max:"最多${max}个${label}",range:"${label}数量须在${min}-${max}之间"},pattern:{mismatch:"${label}与模式不匹配${pattern}"}}},Image:{preview:"预览"}};/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */function xp(e,t,r,n){function a(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function l(d){try{c(n.next(d))}catch(f){s(f)}}function u(d){try{c(n.throw(d))}catch(f){s(f)}}function c(d){d.done?o(d.value):a(d.value).then(l,u)}c((n=n.apply(e,t||[])).next())})}function Sp(e,t){var r={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,a,o,s;return s={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function l(c){return function(d){return u([c,d])}}function u(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,a&&(o=c[0]&2?a.return:c[0]?a.throw||((o=a.return)&&o.call(a),0):a.next)&&!(o=o.call(a,c[1])).done)return o;switch(a=0,o&&(c=[c[0]&2,o.value]),c[0]){case 0:case 1:o=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,a=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(o=r.trys,!(o=o.length>0&&o[o.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]o||setTimeout(n,l,a)},Fp=Tp(new Map),Np=Fp[0],iP=Fp[1],$p=lr({onLoadingSlow:Un,onSuccess:Un,onError:Un,onErrorRetry:oP,onDiscarded:Un,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:jd?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:jd?5e3:3e3,compare:function(e,t){return Po(e)==Po(t)},isPaused:function(){return!1},cache:Np,mutate:iP,fallback:{}},tP),Dp=function(e,t){var r=lr(e,t);if(t){var n=e.use,a=e.fallback,o=t.use,s=t.fallback;n&&o&&(r.use=n.concat(o)),a&&s&&(r.fallback=lr(a,s))}return r},Gs=i.createContext({}),lP=function(e){var t=e.value,r=Dp(i.useContext(Gs),t),n=t&&t.provider,a=i.useState(function(){return n?Tp(n(r.cache||Np),t):an})[0];return a&&(r.cache=a[0],r.mutate=a[1]),bo(function(){return a?a[2]:an},[]),i.createElement(Gs.Provider,lr(e,{value:r}))},sP=function(e,t){var r=i.useState({})[1],n=i.useRef(e),a=i.useRef({data:!1,error:!1,isValidating:!1}),o=i.useCallback(function(s){var l=!1,u=n.current;for(var c in s){var d=c;u[d]!==s[d]&&(u[d]=s[d],a.current[d]&&(l=!0))}l&&!t.current&&r({})},[]);return bo(function(){n.current=e}),[n,a.current,o]},uP=function(e){return Pr(e[1])?[e[0],e[1],e[2]||{}]:[e[0],null,(e[1]===null?e[2]:e[1])||{}]},Hu=function(){return lr($p,i.useContext(Gs))},cP=function(e){return function(){for(var r=[],n=0;n0;)d=f[v](d);return d(s,l||c.fetcher,c)}},Kd=function(e,t,r){var n=t[e]||(t[e]=[]);return n.push(r),function(){var a=n.indexOf(r);a>=0&&(n[a]=n[n.length-1],n.pop())}},ts={dedupe:!0},dP=function(e,t,r){var n=r.cache,a=r.compare,o=r.fallbackData,s=r.suspense,l=r.revalidateOnMount,u=r.refreshInterval,c=r.refreshWhenHidden,d=r.refreshWhenOffline,f=qr.get(n),v=f[0],m=f[1],p=f[2],g=f[3],y=Pp(e),b=y[0],C=y[1],S=y[2],P=i.useRef(!1),E=i.useRef(!1),w=i.useRef(b),F=i.useRef(t),$=i.useRef(r),k=function(){return $.current},O=function(){return k().isVisible()&&k().isOnline()},D=function(Y){return n.set(S,lr(n.get(S),Y))},R=n.get(b),T=un(o)?r.fallback[b]:o,N=un(R)?T:R,M=n.get(S)||{},I=M.error,L=!P.current,j=function(){return L&&!un(l)?l:k().isPaused()?!1:s?un(N)?!1:r.revalidateIfStale:un(N)||r.revalidateIfStale},_=function(){return!b||!t?!1:M.isValidating?!0:L&&j()},K=_(),z=sP({data:N,error:I,isValidating:K},E),A=z[0],V=z[1],X=z[2],H=i.useCallback(function(Y){return xp(void 0,void 0,void 0,function(){var ae,q,ne,ue,G,te,ee,le,re,ge,Ee,me,ce;return Sp(this,function(fe){switch(fe.label){case 0:if(ae=F.current,!b||!ae||E.current||k().isPaused())return[2,!1];ue=!0,G=Y||{},te=!g[b]||!G.dedupe,ee=function(){return!E.current&&b===w.current&&P.current},le=function(){var ie=g[b];ie&&ie[1]===ne&&delete g[b]},re={isValidating:!1},ge=function(){D({isValidating:!1}),ee()&&X(re)},D({isValidating:!0}),X({isValidating:!0}),fe.label=1;case 1:return fe.trys.push([1,3,,4]),te&&(Co(n,b,A.current.data,A.current.error,!0),r.loadingTimeout&&!n.get(b)&&setTimeout(function(){ue&&ee()&&k().onLoadingSlow(b,r)},r.loadingTimeout),g[b]=[ae.apply(void 0,C),Ys()]),ce=g[b],q=ce[0],ne=ce[1],[4,q];case 2:return q=fe.sent(),te&&setTimeout(le,r.dedupingInterval),!g[b]||g[b][1]!==ne?(te&&ee()&&k().onDiscarded(b),[2,!1]):(D({error:an}),re.error=an,Ee=p[b],!un(Ee)&&(ne<=Ee[0]||ne<=Ee[1]||Ee[1]===0)?(ge(),te&&ee()&&k().onDiscarded(b),[2,!1]):(a(A.current.data,q)?re.data=A.current.data:re.data=q,a(n.get(b),q)||n.set(b,q),te&&ee()&&k().onSuccess(q,b,r),[3,4]));case 3:return me=fe.sent(),le(),k().isPaused()||(D({error:me}),re.error=me,te&&ee()&&(k().onError(me,b,r),(typeof r.shouldRetryOnError=="boolean"&&r.shouldRetryOnError||Pr(r.shouldRetryOnError)&&r.shouldRetryOnError(me))&&O()&&k().onErrorRetry(me,b,r,H,{retryCount:(G.retryCount||0)+1,dedupe:!0}))),[3,4];case 4:return ue=!1,ge(),ee()&&te&&Co(n,b,re.data,re.error,!1),[2,!0]}})})},[b]),Q=i.useCallback(Mp.bind(an,n,function(){return w.current}),[]);if(bo(function(){F.current=t,$.current=r}),bo(function(){if(b){var Y=b!==w.current,ae=H.bind(an,ts),q=function(ee,le,re){X(lr({error:le,isValidating:re},a(A.current.data,ee)?an:{data:ee}))},ne=0,ue=function(ee){if(ee==Ep){var le=Date.now();k().revalidateOnFocus&&le>ne&&O()&&(ne=le+k().focusThrottleInterval,ae())}else if(ee==kp)k().revalidateOnReconnect&&O()&&ae();else if(ee==Rp)return H()},G=Kd(b,m,q),te=Kd(b,v,ue);return E.current=!1,w.current=b,P.current=!0,Y&&X({data:N,error:I,isValidating:K}),j()&&(un(N)||Tl?ae():rP(ae)),function(){E.current=!0,G(),te()}}},[b,H]),bo(function(){var Y;function ae(){var ne=Pr(u)?u(N):u;ne&&Y!==-1&&(Y=setTimeout(q,ne))}function q(){!A.current.error&&(c||k().isVisible())&&(d||k().isOnline())?H(ts).then(ae):ae()}return ae(),function(){Y&&(clearTimeout(Y),Y=-1)}},[u,c,d,H]),i.useDebugValue(N),s&&un(N)&&b)throw F.current=t,$.current=r,E.current=!1,un(I)?H(ts):I;return{mutate:Q,get data(){return V.data=!0,N},get error(){return V.error=!0,I},get isValidating(){return V.isValidating=!0,K}}},Op=yo.defineProperty(lP,"default",{value:$p}),Ip=cP(dP);const fP={moneySymbol:"$",form:{lightFilter:{more:"المزيد",clear:"نظف",confirm:"تأكيد",itemUnit:"عناصر"}},tableForm:{search:"ابحث",reset:"إعادة تعيين",submit:"ارسال",collapsed:"مُقلص",expand:"مُوسع",inputPlaceholder:"الرجاء الإدخال",selectPlaceholder:"الرجاء الإختيار"},alert:{clear:"نظف",selected:"محدد",item:"عنصر"},pagination:{total:{range:" ",total:"من",item:"عناصر"}},tableToolBar:{leftPin:"ثبت على اليسار",rightPin:"ثبت على اليمين",noPin:"الغاء التثبيت",leftFixedTitle:"لصق على اليسار",rightFixedTitle:"لصق على اليمين",noFixedTitle:"إلغاء الإلصاق",reset:"إعادة تعيين",columnDisplay:"الأعمدة المعروضة",columnSetting:"الإعدادات",fullScreen:"وضع كامل الشاشة",exitFullScreen:"الخروج من وضع كامل الشاشة",reload:"تحديث",density:"الكثافة",densityDefault:"افتراضي",densityLarger:"أكبر",densityMiddle:"وسط",densitySmall:"مدمج"},stepsForm:{next:"التالي",prev:"السابق",submit:"أنهى"},loginForm:{submitText:"تسجيل الدخول"},editableTable:{action:{save:"أنقذ",cancel:"إلغاء الأمر",delete:"حذف",add:"إضافة صف من البيانات"}},switch:{open:"مفتوح",close:"غلق"}},vP={moneySymbol:"€",form:{lightFilter:{more:"Máis",clear:"Limpar",confirm:"Confirmar",itemUnit:"Elementos"}},tableForm:{search:"Cercar",reset:"Netejar",submit:"Enviar",collapsed:"Expandir",expand:"Col·lapsar",inputPlaceholder:"Introduïu valor",selectPlaceholder:"Seleccioneu valor"},alert:{clear:"Netejar",selected:"Seleccionat",item:"Article"},pagination:{total:{range:" ",total:"de",item:"articles"}},tableToolBar:{leftPin:"Pin a l'esquerra",rightPin:"Pin a la dreta",noPin:"Sense Pin",leftFixedTitle:"Fixat a l'esquerra",rightFixedTitle:"Fixat a la dreta",noFixedTitle:"Sense fixar",reset:"Reiniciar",columnDisplay:"Mostrar Columna",columnSetting:"Configuració",fullScreen:"Pantalla Completa",exitFullScreen:"Sortir Pantalla Completa",reload:"Refrescar",density:"Densitat",densityDefault:"Per Defecte",densityLarger:"Llarg",densityMiddle:"Mitjà",densitySmall:"Compacte"},stepsForm:{next:"Següent",prev:"Anterior",submit:"Finalizar"},loginForm:{submitText:"Entrar"},editableTable:{action:{save:"Gardar",cancel:"Cancelar",delete:"Eliminar",add:"engadir unha fila de datos"}},switch:{open:"aberto",close:"pechar"}},mP={moneySymbol:"€",form:{lightFilter:{more:"Mehr",clear:"Zurücksetzen",confirm:"Bestätigen",itemUnit:"Einträge"}},tableForm:{search:"Suchen",reset:"Zurücksetzen",submit:"Absenden",collapsed:"Zeige mehr",expand:"Zeige weniger",inputPlaceholder:"Bitte eingeben",selectPlaceholder:"Bitte auswählen"},alert:{clear:"Zurücksetzen",selected:"Ausgewählt",item:"Eintrag"},pagination:{total:{range:" ",total:"von",item:"Einträgen"}},tableToolBar:{leftPin:"Links anheften",rightPin:"Rechts anheften",noPin:"Nicht angeheftet",leftFixedTitle:"Links fixiert",rightFixedTitle:"Rechts fixiert",noFixedTitle:"Nicht fixiert",reset:"Zurücksetzen",columnDisplay:"Angezeigte Reihen",columnSetting:"Einstellungen",fullScreen:"Vollbild",exitFullScreen:"Vollbild verlassen",reload:"Aktualisieren",density:"Abstand",densityDefault:"Standard",densityLarger:"Größer",densityMiddle:"Mittel",densitySmall:"Kompakt"},stepsForm:{next:"Weiter",prev:"Zurück",submit:"Abschließen"},loginForm:{submitText:"Anmelden"},editableTable:{action:{save:"Retten",cancel:"Abbrechen",delete:"Löschen",add:"Hinzufügen einer Datenzeile"}},switch:{open:"offen",close:"schließen"}},pP={moneySymbol:"£",form:{lightFilter:{more:"More",clear:"Clear",confirm:"Confirm",itemUnit:"Items"}},tableForm:{search:"Query",reset:"Reset",submit:"Submit",collapsed:"Expand",expand:"Collapse",inputPlaceholder:"Please enter",selectPlaceholder:"Please select"},alert:{clear:"Clear",selected:"Selected",item:"Item"},pagination:{total:{range:" ",total:"of",item:"items"}},tableToolBar:{leftPin:"Pin to left",rightPin:"Pin to right",noPin:"Unpinned",leftFixedTitle:"Fixed the left",rightFixedTitle:"Fixed the right",noFixedTitle:"Not Fixed",reset:"Reset",columnDisplay:"Column Display",columnSetting:"Settings",fullScreen:"Full Screen",exitFullScreen:"Exit Full Screen",reload:"Refresh",density:"Density",densityDefault:"Default",densityLarger:"Larger",densityMiddle:"Middle",densitySmall:"Compact"},stepsForm:{next:"Next",prev:"Previous",submit:"Finish"},loginForm:{submitText:"Login"},editableTable:{action:{save:"Save",cancel:"Cancel",delete:"Delete",add:"add a row of data"}},switch:{open:"open",close:"close"}},hP={moneySymbol:"$",deleteThisLine:"Delete this line",copyThisLine:"Copy this line",form:{lightFilter:{more:"More",clear:"Clear",confirm:"Confirm",itemUnit:"Items"}},tableForm:{search:"Query",reset:"Reset",submit:"Submit",collapsed:"Expand",expand:"Collapse",inputPlaceholder:"Please enter",selectPlaceholder:"Please select"},alert:{clear:"Clear",selected:"Selected",item:"Item"},pagination:{total:{range:" ",total:"of",item:"items"}},tableToolBar:{leftPin:"Pin to left",rightPin:"Pin to right",noPin:"Unpinned",leftFixedTitle:"Fixed the left",rightFixedTitle:"Fixed the right",noFixedTitle:"Not Fixed",reset:"Reset",columnDisplay:"Column Display",columnSetting:"Settings",fullScreen:"Full Screen",exitFullScreen:"Exit Full Screen",reload:"Refresh",density:"Density",densityDefault:"Default",densityLarger:"Larger",densityMiddle:"Middle",densitySmall:"Compact"},stepsForm:{next:"Next",prev:"Previous",submit:"Finish"},loginForm:{submitText:"Login"},editableTable:{onlyOneLineEditor:"Only one line can be edited",action:{save:"Save",cancel:"Cancel",delete:"Delete",add:"add a row of data"}},switch:{open:"open",close:"close"}},gP={moneySymbol:"€",form:{lightFilter:{more:"Más",clear:"Limpiar",confirm:"Confirmar",itemUnit:"artículos"}},tableForm:{search:"Buscar",reset:"Limpiar",submit:"Submit",collapsed:"Expandir",expand:"Colapsar",inputPlaceholder:"Ingrese valor",selectPlaceholder:"Seleccione valor"},alert:{clear:"Limpiar",selected:"Seleccionado",item:"Articulo"},pagination:{total:{range:" ",total:"de",item:"artículos"}},tableToolBar:{leftPin:"Pin a la izquierda",rightPin:"Pin a la derecha",noPin:"Sin Pin",leftFixedTitle:"Fijado a la izquierda",rightFixedTitle:"Fijado a la derecha",noFixedTitle:"Sin Fijar",reset:"Reiniciar",columnDisplay:"Mostrar Columna",columnSetting:"Configuración",fullScreen:"Pantalla Completa",exitFullScreen:"Salir Pantalla Completa",reload:"Refrescar",density:"Densidad",densityDefault:"Por Defecto",densityLarger:"Largo",densityMiddle:"Medio",densitySmall:"Compacto"},stepsForm:{next:"Siguiente",prev:"Anterior",submit:"Finalizar"},loginForm:{submitText:"Entrar"},editableTable:{action:{save:"Guardar",cancel:"Descartar",delete:"Borrar",add:"añadir una fila de datos"}},switch:{open:"abrir",close:"cerrar"}},yP={moneySymbol:"تومان",form:{lightFilter:{more:"بیشتر",clear:"پاک کردن",confirm:"تایید",itemUnit:"مورد"}},tableForm:{search:"جستجو",reset:"بازنشانی",submit:"تایید",collapsed:"نمایش بیشتر",expand:"نمایش کمتر",inputPlaceholder:"پیدا کنید",selectPlaceholder:"انتخاب کنید"},alert:{clear:"پاک سازی",selected:"انتخاب",item:"مورد"},pagination:{total:{range:" ",total:"از",item:"مورد"}},tableToolBar:{leftPin:"سنجاق به چپ",rightPin:"سنجاق به راست",noPin:"سنجاق نشده",leftFixedTitle:"ثابت شده در چپ",rightFixedTitle:"ثابت شده در راست",noFixedTitle:"شناور",reset:"بازنشانی",columnDisplay:"نمایش همه",columnSetting:"تنظیمات",fullScreen:"تمام صفحه",exitFullScreen:"خروج از حالت تمام صفحه",reload:"تازه سازی",density:"تراکم",densityDefault:"پیش فرض",densityLarger:"بزرگ",densityMiddle:"متوسط",densitySmall:"کوچک"},stepsForm:{next:"بعدی",prev:"قبلی",submit:"اتمام"},loginForm:{submitText:"ورود"},editableTable:{action:{save:"ذخیره",cancel:"لغو",delete:"حذف",add:"یک ردیف داده اضافه کنید"}},switch:{open:"باز",close:"نزدیک"}},bP={moneySymbol:"€",form:{lightFilter:{more:"Plus",clear:"Effacer",confirm:"Confirmer",itemUnit:"Items"}},tableForm:{search:"Rechercher",reset:"Réinitialiser",submit:"Envoyer",collapsed:"Agrandir",expand:"Réduire",inputPlaceholder:"Entrer une valeur",selectPlaceholder:"Sélectionner une valeur"},alert:{clear:"Réinitialiser",selected:"Sélectionné",item:"Item"},pagination:{total:{range:" ",total:"sur",item:"éléments"}},tableToolBar:{leftPin:"Épingler à gauche",rightPin:"Épingler à gauche",noPin:"Sans épingle",leftFixedTitle:"Fixer à gauche",rightFixedTitle:"Fixer à droite",noFixedTitle:"Non fixé",reset:"Réinitialiser",columnDisplay:"Affichage colonne",columnSetting:"Réglages",fullScreen:"Plein écran",exitFullScreen:"Quitter Plein écran",reload:"Rafraichir",density:"Densité",densityDefault:"Par défaut",densityLarger:"Larger",densityMiddle:"Moyenne",densitySmall:"Compacte"},stepsForm:{next:"Suivante",prev:"Précédente",submit:"Finaliser"},loginForm:{submitText:"Se connecter"},editableTable:{action:{save:"Sauvegarder",cancel:"Annuler",delete:"Supprimer",add:"ajouter une ligne de données"}},switch:{open:"ouvert",close:"près"}},CP={moneySymbol:"kn",form:{lightFilter:{more:"Više",clear:"Očisti",confirm:"Potvrdi",itemUnit:"Stavke"}},tableForm:{search:"Pretraži",reset:"Poništi",submit:"Potvrdi",collapsed:"Raširi",expand:"Skupi",inputPlaceholder:"Unesite",selectPlaceholder:"Odaberite"},alert:{clear:"Očisti",selected:"Odaberi",item:"stavke"},pagination:{total:{range:" ",total:"od",item:"stavke"}},tableToolBar:{leftPin:"Prikači lijevo",rightPin:"Prikači desno",noPin:"Bez prikačenja",leftFixedTitle:"Fiksiraj lijevo",rightFixedTitle:"Fiksiraj desno",noFixedTitle:"Bez fiksiranja",reset:"Resetiraj",columnDisplay:"Prikaz stupaca",columnSetting:"Postavke",fullScreen:"Puni zaslon",exitFullScreen:"Izađi iz punog zaslona",reload:"Ponovno učitaj",density:"Veličina",densityDefault:"Zadano",densityLarger:"Veliko",densityMiddle:"Srednje",densitySmall:"Malo"},stepsForm:{next:"Sljedeći",prev:"Prethodni",submit:"Kraj"},loginForm:{submitText:"Prijava"},editableTable:{action:{save:"Spremi",cancel:"Odustani",delete:"Obriši",add:"dodajte red podataka"}},switch:{open:"otvori",close:"zatvori"}},xP={moneySymbol:"RP",form:{lightFilter:{more:"Lebih",clear:"Hapus",confirm:"Konfirmasi",itemUnit:"Unit"}},tableForm:{search:"Cari",reset:"Atur ulang",submit:"Kirim",collapsed:"Lebih sedikit",expand:"Lebih banyak",inputPlaceholder:"Masukkan pencarian",selectPlaceholder:"Pilih"},alert:{clear:"Hapus",selected:"Dipilih",item:"Butir"},pagination:{total:{range:" ",total:"Dari",item:"Butir"}},tableToolBar:{leftPin:"Pin kiri",rightPin:"Pin kanan",noPin:"Tidak ada pin",leftFixedTitle:"Rata kiri",rightFixedTitle:"Rata kanan",noFixedTitle:"Tidak tetap",reset:"Atur ulang",columnDisplay:"Tampilan kolom",columnSetting:"Pengaturan",fullScreen:"Layar penuh",exitFullScreen:"Keluar layar penuh",reload:"Atur ulang",density:"Kerapatan",densityDefault:"Standar",densityLarger:"Lebih besar",densityMiddle:"Sedang",densitySmall:"Rapat"},stepsForm:{next:"Selanjutnya",prev:"Sebelumnya",submit:"Selesai"},loginForm:{submitText:"Login"},editableTable:{action:{save:"simpan",cancel:"batal",delete:"hapus",add:"Tambahkan baris data"}},switch:{open:"buka",close:"tutup"}},SP={moneySymbol:"€",form:{lightFilter:{more:"più",clear:"pulisci",confirm:"conferma",itemUnit:"elementi"}},tableForm:{search:"Filtra",reset:"Pulisci",submit:"Invia",collapsed:"Espandi",expand:"Contrai",inputPlaceholder:"Digita",selectPlaceholder:"Seleziona"},alert:{clear:"Rimuovi",selected:"Selezionati",item:"elementi"},pagination:{total:{range:" ",total:"di",item:"elementi"}},tableToolBar:{leftPin:"Fissa a sinistra",rightPin:"Fissa a destra",noPin:"Ripristina posizione",leftFixedTitle:"Fissato a sinistra",rightFixedTitle:"Fissato a destra",noFixedTitle:"Non fissato",reset:"Ripristina",columnDisplay:"Disposizione colonne",columnSetting:"Impostazioni",fullScreen:"Modalità schermo intero",exitFullScreen:"Esci da modalità schermo intero",reload:"Ricarica",density:"Grandezza tabella",densityDefault:"predefinito",densityLarger:"Grande",densityMiddle:"Media",densitySmall:"Compatta"},stepsForm:{next:"successivo",prev:"precedente",submit:"finisci"},loginForm:{submitText:"Accedi"},editableTable:{action:{save:"salva",cancel:"annulla",delete:"Delete",add:"add a row of data"}},switch:{open:"open",close:"chiudi"}},wP={moneySymbol:"¥",form:{lightFilter:{more:"もっと",clear:"明確",confirm:"確認",itemUnit:"項目"}},tableForm:{search:"検索",reset:"リセット",submit:"提交",collapsed:"展開",expand:"収納",inputPlaceholder:"入力してください",selectPlaceholder:"選択してください"},alert:{clear:"クリア",selected:"選択した",item:"項目"},pagination:{total:{range:"記事",total:"/合計",item:" "}},tableToolBar:{leftPin:"左に固定",rightPin:"右に固定",noPin:"キャンセル",leftFixedTitle:"左に固定された項目",rightFixedTitle:"右に固定された項目",noFixedTitle:"固定されてない項目",reset:"リセット",columnDisplay:"表示列",columnSetting:"列表示設定",fullScreen:"フルスクリーン",exitFullScreen:"終了",reload:"更新",density:"行高",densityDefault:"デフォルト",densityLarger:"默认",densityMiddle:"中",densitySmall:"小"},stepsForm:{next:"次のステップ",prev:"前",submit:"送信"},loginForm:{submitText:"ログイン"},editableTable:{action:{save:"救う",cancel:"キャンセル",delete:"削除",add:"1行のデータを追加します"}},switch:{open:"オープン",close:"近い"}},PP={moneySymbol:"₩",form:{lightFilter:{more:"더보기",clear:"취소",confirm:"확인",itemUnit:"건수"}},tableForm:{search:"조회",reset:"초기화",submit:"제출",collapsed:"확장",expand:"닫기",inputPlaceholder:"입력해 주세요",selectPlaceholder:"선택해 주세요"},alert:{clear:"취소",selected:"선택",item:"건"},pagination:{total:{range:" ",total:"/ 총",item:"건"}},tableToolBar:{leftPin:"왼쪽으로 핀",rightPin:"오른쪽으로 핀",noPin:"핀 제거",leftFixedTitle:"왼쪽으로 고정",rightFixedTitle:"오른쪽으로 고정",noFixedTitle:"비고정",reset:"초기화",columnDisplay:"컬럼 표시",columnSetting:"설정",fullScreen:"전체 화면",exitFullScreen:"전체 화면 취소",reload:"다시 읽기",density:"여백",densityDefault:"기본",densityLarger:"많은 여백",densityMiddle:"중간 여백",densitySmall:"좁은 여백"},stepsForm:{next:"다음",prev:"이전",submit:"종료"},loginForm:{submitText:"로그인"},editableTable:{action:{save:"저장",cancel:"취소",delete:"삭제",add:"데이터 행 추가"}},switch:{open:"열",close:"가까 운"}},EP={moneySymbol:"₮",form:{lightFilter:{more:"Илүү",clear:"Цэвэрлэх",confirm:"Баталгаажуулах",itemUnit:"Нэгжүүд"}},tableForm:{search:"Хайх",reset:"Шинэчлэх",submit:"Илгээх",collapsed:"Өргөтгөх",expand:"Хураах",inputPlaceholder:"Утга оруулна уу",selectPlaceholder:"Утга сонгоно уу"},alert:{clear:"Цэвэрлэх",selected:"Сонгогдсон",item:"Нэгж"},pagination:{total:{range:" ",total:"Нийт",item:"мөр"}},tableToolBar:{leftPin:"Зүүн тийш бэхлэх",rightPin:"Баруун тийш бэхлэх",noPin:"Бэхлэхгүй",leftFixedTitle:"Зүүн зэрэгцүүлэх",rightFixedTitle:"Баруун зэрэгцүүлэх",noFixedTitle:"Зэрэгцүүлэхгүй",reset:"Шинэчлэх",columnDisplay:"Баганаар харуулах",columnSetting:"Тохиргоо",fullScreen:"Бүтэн дэлгэцээр",exitFullScreen:"Бүтэн дэлгэц цуцлах",reload:"Шинэчлэх",density:"Хэмжээ",densityDefault:"Хэвийн",densityLarger:"Том",densityMiddle:"Дунд",densitySmall:"Жижиг"},stepsForm:{next:"Дараах",prev:"Өмнөх",submit:"Дуусгах"},loginForm:{submitText:"Нэвтрэх"},editableTable:{action:{save:"Хадгалах",cancel:"Цуцлах",delete:"Устгах",add:"Мөр нэмэх"}},switch:{open:"Нээх",close:"Хаах"}},kP={moneySymbol:"RM",form:{lightFilter:{more:"Lebih banyak",clear:"Jelas",confirm:"Mengesahkan",itemUnit:"Item"}},tableForm:{search:"Cari",reset:"Menetapkan semula",submit:"Hantar",collapsed:"Kembang",expand:"Kuncup",inputPlaceholder:"Sila masuk",selectPlaceholder:"Sila pilih"},alert:{clear:"Padam",selected:"Dipilih",item:"Item"},pagination:{total:{range:" ",total:"daripada",item:"item"}},tableToolBar:{leftPin:"Pin ke kiri",rightPin:"Pin ke kanan",noPin:"Tidak pin",leftFixedTitle:"Tetap ke kiri",rightFixedTitle:"Tetap ke kanan",noFixedTitle:"Tidak Tetap",reset:"Menetapkan semula",columnDisplay:"Lajur",columnSetting:"Settings",fullScreen:"Full Screen",exitFullScreen:"Keluar Full Screen",reload:"Muat Semula",density:"Densiti",densityDefault:"Biasa",densityLarger:"Besar",densityMiddle:"Tengah",densitySmall:"Kecil"},stepsForm:{next:"Seterusnya",prev:"Sebelumnya",submit:"Selesai"},loginForm:{submitText:"Log Masuk"},editableTable:{action:{save:"Simpan",cancel:"Membatalkan",delete:"Menghapuskan",add:"tambah baris data"}},switch:{open:"Terbuka",close:"Tutup"}},RP={moneySymbol:"zł",form:{lightFilter:{more:"Więcej",clear:"Wyczyść",confirm:"Potwierdź",itemUnit:"Ilość"}},tableForm:{search:"Szukaj",reset:"Reset",submit:"Zatwierdź",collapsed:"Pokaż wiecej",expand:"Pokaż mniej",inputPlaceholder:"Proszę podać",selectPlaceholder:"Proszę wybrać"},alert:{clear:"Wyczyść",selected:"Wybrane",item:"Wpis"},pagination:{total:{range:" ",total:"z",item:"Wpisów"}},tableToolBar:{leftPin:"Przypnij do lewej",rightPin:"Przypnij do prawej",noPin:"Odepnij",leftFixedTitle:"Przypięte do lewej",rightFixedTitle:"Przypięte do prawej",noFixedTitle:"Nieprzypięte",reset:"Reset",columnDisplay:"Wyświetlane wiersze",columnSetting:"Ustawienia",fullScreen:"Pełen ekran",exitFullScreen:"Zamknij pełen ekran",reload:"Odśwież",density:"Odstęp",densityDefault:"Standard",densityLarger:"Wiekszy",densityMiddle:"Sredni",densitySmall:"Kompaktowy"},stepsForm:{next:"Weiter",prev:"Zurück",submit:"Abschließen"},loginForm:{submitText:"Zaloguj się"},editableTable:{action:{save:"Zapisać",cancel:"Anuluj",delete:"Usunąć",add:"dodawanie wiersza danych"}},switch:{open:"otwierać",close:"zamykać"}},MP={moneySymbol:"R$",form:{lightFilter:{more:"Mais",clear:"Limpar",confirm:"Confirmar",itemUnit:"Itens"}},tableForm:{search:"Filtrar",reset:"Limpar",submit:"Confirmar",collapsed:"Expandir",expand:"Colapsar",inputPlaceholder:"Por favor insira",selectPlaceholder:"Por favor selecione"},alert:{clear:"Limpar",selected:"Selecionado(s)",item:"Item(s)"},pagination:{total:{range:" ",total:"de",item:"itens"}},tableToolBar:{leftPin:"Fixar à esquerda",rightPin:"Fixar à direita",noPin:"Desfixado",leftFixedTitle:"Fixado à esquerda",rightFixedTitle:"Fixado à direita",noFixedTitle:"Não fixado",reset:"Limpar",columnDisplay:"Mostrar Coluna",columnSetting:"Configurações",fullScreen:"Tela Cheia",exitFullScreen:"Sair da Tela Cheia",reload:"Atualizar",density:"Densidade",densityDefault:"Padrão",densityLarger:"Largo",densityMiddle:"Médio",densitySmall:"Compacto"},stepsForm:{next:"Próximo",prev:"Anterior",submit:"Enviar"},loginForm:{submitText:"Entrar"},editableTable:{action:{save:"Salvar",cancel:"Cancelar",delete:"Apagar",add:"adicionar uma linha de dados"}},switch:{open:"abrir",close:"fechar"}},TP={moneySymbol:"₽",form:{lightFilter:{more:"Еще",clear:"Очистить",confirm:"ОК",itemUnit:"Позиции"}},tableForm:{search:"Найти",reset:"Сброс",submit:"Отправить",collapsed:"Развернуть",expand:"Свернуть",inputPlaceholder:"Введите значение",selectPlaceholder:"Выберите значение"},alert:{clear:"Очистить",selected:"Выбрано",item:"элементов"},pagination:{total:{range:" ",total:"из",item:"элементов"}},tableToolBar:{leftPin:"Закрепить слева",rightPin:"Закрепить справа",noPin:"Открепить",leftFixedTitle:"Закреплено слева",rightFixedTitle:"Закреплено справа",noFixedTitle:"Не закреплено",reset:"Сброс",columnDisplay:"Отображение столбца",columnSetting:"Настройки",fullScreen:"Полный экран",exitFullScreen:"Выйти из полноэкранного режима",reload:"Обновить",density:"Размер",densityDefault:"По умолчанию",densityLarger:"Большой",densityMiddle:"Средний",densitySmall:"Сжатый"},stepsForm:{next:"Следующий",prev:"Предыдущий",submit:"Завершить"},loginForm:{submitText:"Вход"},editableTable:{action:{save:"Сохранить",cancel:"Отменить",delete:"Удалить",add:"добавить ряд данных"}},switch:{open:"Открытый чемпионат мира по теннису",close:"По адресу:"}},FP={moneySymbol:"RSD",form:{lightFilter:{more:"Više",clear:"Očisti",confirm:"Potvrdi",itemUnit:"Stavke"}},tableForm:{search:"Pronađi",reset:"Resetuj",submit:"Pošalji",collapsed:"Proširi",expand:"Skupi",inputPlaceholder:"Molimo unesite",selectPlaceholder:"Molimo odaberite"},alert:{clear:"Očisti",selected:"Odabrano",item:"Stavka"},pagination:{total:{range:" ",total:"od",item:"stavki"}},tableToolBar:{leftPin:"Zakači levo",rightPin:"Zakači desno",noPin:"Nije zakačeno",leftFixedTitle:"Fiksirano levo",rightFixedTitle:"Fiksirano desno",noFixedTitle:"Nije fiksirano",reset:"Resetuj",columnDisplay:"Prikaz kolona",columnSetting:"Podešavanja",fullScreen:"Pun ekran",exitFullScreen:"Zatvori pun ekran",reload:"Osveži",density:"Veličina",densityDefault:"Podrazumevana",densityLarger:"Veća",densityMiddle:"Srednja",densitySmall:"Kompaktna"},stepsForm:{next:"Dalje",prev:"Nazad",submit:"Gotovo"},loginForm:{submitText:"Prijavi se"},editableTable:{action:{save:"Sačuvaj",cancel:"Poništi",delete:"Obriši",add:"dodajte red podataka"}},switch:{open:"Отворите",close:"Затворите"}},NP={moneySymbol:"₺",form:{lightFilter:{more:"Daha Fazla",clear:"Temizle",confirm:"Onayla",itemUnit:"Öğeler"}},tableForm:{search:"Filtrele",reset:"Sıfırla",submit:"Gönder",collapsed:"Daha fazla",expand:"Daha az",inputPlaceholder:"Filtrelemek için bir değer girin",selectPlaceholder:"Filtrelemek için bir değer seçin"},alert:{clear:"Temizle",selected:"Seçili",item:"Öğe"},pagination:{total:{range:" ",total:"Toplam",item:"Öğe"}},tableToolBar:{leftPin:"Sola sabitle",rightPin:"Sağa sabitle",noPin:"Sabitlemeyi kaldır",leftFixedTitle:"Sola sabitlendi",rightFixedTitle:"Sağa sabitlendi",noFixedTitle:"Sabitlenmedi",reset:"Sıfırla",columnDisplay:"Kolon Görünümü",columnSetting:"Ayarlar",fullScreen:"Tam Ekran",exitFullScreen:"Tam Ekrandan Çık",reload:"Yenile",density:"Kalınlık",densityDefault:"Varsayılan",densityLarger:"Büyük",densityMiddle:"Orta",densitySmall:"Küçük"},stepsForm:{next:"Sıradaki",prev:"Önceki",submit:"Gönder"},loginForm:{submitText:"Giriş Yap"},editableTable:{action:{save:"Kaydet",cancel:"Vazgeç",delete:"Sil",add:"foegje in rige gegevens ta"}},switch:{open:"açık",close:"kapatmak"}},$P={moneySymbol:"₫",form:{lightFilter:{more:"Nhiều hơn",clear:"Trong",confirm:"Xác nhận",itemUnit:"Mục"}},tableForm:{search:"Tìm kiếm",reset:"Làm lại",submit:"Gửi đi",collapsed:"Mở rộng",expand:"Thu gọn",inputPlaceholder:"nhập dữ liệu",selectPlaceholder:"Vui lòng chọn"},alert:{clear:"Xóa",selected:"đã chọn",item:"mục"},pagination:{total:{range:" ",total:"trên",item:"mặt hàng"}},tableToolBar:{leftPin:"Ghim trái",rightPin:"Ghim phải",noPin:"Bỏ ghim",leftFixedTitle:"Cố định trái",rightFixedTitle:"Cố định phải",noFixedTitle:"Chưa cố định",reset:"Làm lại",columnDisplay:"Cột hiển thị",columnSetting:"Cấu hình",fullScreen:"Chế độ toàn màn hình",exitFullScreen:"Thoát chế độ toàn màn hình",reload:"Làm mới",density:"Mật độ hiển thị",densityDefault:"Mặc định",densityLarger:"Mặc định",densityMiddle:"Trung bình",densitySmall:"Chật"},stepsForm:{next:"Sau",prev:"Trước",submit:"Kết thúc"},loginForm:{submitText:"Đăng nhập"},editableTable:{action:{save:"Cứu",cancel:"Hủy",delete:"Xóa",add:"thêm một hàng dữ liệu"}},switch:{open:"mở",close:"đóng"}},DP={moneySymbol:"¥",deleteThisLine:"删除此行",copyThisLine:"复制此行",form:{lightFilter:{more:"更多筛选",clear:"清除",confirm:"确认",itemUnit:"项"}},tableForm:{search:"查询",reset:"重置",submit:"提交",collapsed:"展开",expand:"收起",inputPlaceholder:"请输入",selectPlaceholder:"请选择"},alert:{clear:"取消选择",selected:"已选择",item:"项"},pagination:{total:{range:"第",total:"条/总共",item:"条"}},tableToolBar:{leftPin:"固定在列首",rightPin:"固定在列尾",noPin:"不固定",leftFixedTitle:"固定在左侧",rightFixedTitle:"固定在右侧",noFixedTitle:"不固定",reset:"重置",columnDisplay:"列展示",columnSetting:"列设置",fullScreen:"全屏",exitFullScreen:"退出全屏",reload:"刷新",density:"密度",densityDefault:"正常",densityLarger:"默认",densityMiddle:"中等",densitySmall:"紧凑"},stepsForm:{next:"下一步",prev:"上一步",submit:"提交"},loginForm:{submitText:"登录"},editableTable:{onlyOneLineEditor:"只能同时编辑一行",action:{save:"保存",cancel:"取消",delete:"删除",add:"添加一行数据"}},switch:{open:"打开",close:"关闭"}},OP={moneySymbol:"NT$",form:{lightFilter:{more:"更多篩選",clear:"清除",confirm:"確認",itemUnit:"項"}},tableForm:{search:"查詢",reset:"重置",submit:"提交",collapsed:"展開",expand:"收起",inputPlaceholder:"請輸入",selectPlaceholder:"請選擇"},alert:{clear:"取消選擇",selected:"已選擇",item:"項"},pagination:{total:{range:"第",total:"條/總共",item:"條"}},tableToolBar:{leftPin:"固定到左邊",rightPin:"固定到右邊",noPin:"不固定",leftFixedTitle:"固定在左側",rightFixedTitle:"固定在右側",noFixedTitle:"不固定",reset:"重置",columnDisplay:"列展示",columnSetting:"列設置",fullScreen:"全屏",exitFullScreen:"退出全屏",reload:"刷新",density:"密度",densityDefault:"正常",densityLarger:"默認",densityMiddle:"中等",densitySmall:"緊湊"},stepsForm:{next:"下一個",prev:"以前的",submit:"完成"},loginForm:{submitText:"登入"},editableTable:{action:{save:"保存",cancel:"取消",delete:"刪除",add:"添加一行數據"}},switch:{open:"打開",close:"關閉"}};function IP(e,t,r){var n=t.replace(/\[(\d+)\]/g,".$1").split("."),a=e,o=r,s=Rr(n),l;try{for(s.s();!(l=s.n()).done;){var u=l.value;if(o=Object(a)[u],a=Object(a)[u],o===void 0)return r}}catch(c){s.e(c)}finally{s.f()}return o}var Ht=function(t,r){return{getMessage:function(a,o){return IP(r,a,o)||o},locale:t}},_P=Ht("mn_MN",EP),LP=Ht("ar_EG",fP),Fl=Ht("zh_CN",DP),jP=Ht("en_US",hP),AP=Ht("en_GB",pP),KP=Ht("vi_VN",$P),VP=Ht("it_IT",SP),zP=Ht("ja_JP",wP),BP=Ht("es_ES",gP),HP=Ht("ca_ES",vP),WP=Ht("ru_RU",TP),UP=Ht("sr_RS",FP),YP=Ht("ms_MY",kP),GP=Ht("zh_TW",OP),qP=Ht("fr_FR",bP),XP=Ht("pt_BR",MP),ZP=Ht("ko_KR",PP),QP=Ht("id_ID",xP),JP=Ht("de_DE",mP),e8=Ht("fa_IR",yP),t8=Ht("tr_TR",NP),n8=Ht("pl_PL",RP),r8=Ht("hr_",CP),Wi={"mn-MN":_P,"ar-EG":LP,"zh-CN":Fl,"en-US":jP,"en-GB":AP,"vi-VN":KP,"it-IT":VP,"ja-JP":zP,"es-ES":BP,"ca-ES":HP,"ru-RU":WP,"sr-RS":UP,"ms-MY":YP,"zh-TW":GP,"fr-FR":qP,"pt-BR":XP,"ko-KR":ZP,"id-ID":QP,"de-DE":JP,"fa-IR":e8,"tr-TR":t8,"pl-PL":n8,"hr-HR":r8},a8=Object.keys(Wi),Wu=Z.createContext({intl:h(h({},Fl),{},{locale:"default"}),valueTypeMap:{}}),o8=Wu.Consumer,i8=Wu.Provider,_p=function(t){if(!t)return"zh-CN";var r=t.toLocaleLowerCase();return a8.find(function(n){var a=n.toLocaleLowerCase();return a.includes(r)})},l8=function(){var t=Hu(),r=t.cache;return i.useEffect(function(){return function(){r.clear()}},[]),null},s8=function(t){var r=t.children,n=t.autoClearCache,a=n===void 0?!1:n,o=i.useContext(pt.ConfigContext),s=o.locale,l=s===void 0?pt:Z.Fragment,u=x.jsx(o8,{children:function(d){var f,v=s==null?void 0:s.locale,m=_p(v),p=v&&((f=d.intl)===null||f===void 0?void 0:f.locale)==="default"?Wi[m]:d.intl||Wi[m],g=s===void 0?{locale:Cp}:{};return x.jsx(l,h(h({},g),{},{children:x.jsx(i8,{value:h(h({},d),{},{intl:p||Fl}),children:x.jsxs(x.Fragment,{children:[a&&x.jsx(l8,{}),r]})})}))}});return a?x.jsx(Op,{value:{provider:function(){return new Map}},children:u}):u};function qn(){var e=i.useContext(pt.ConfigContext),t=e.locale,r=i.useContext(Wu),n=r.intl;return n&&n.locale!=="default"?n:t!=null&&t.locale?Wi[_p(t.locale)]:Fl}var u8=function(e){yn(r,e);var t=bn(r);function r(){var n;Cn(this,r);for(var a=arguments.length,o=new Array(a),s=0;s1?t-1:0),n=1;n1&&(w=lv(t),F=w.slice(1),$=pn(E,F),hn(E,F,$)),k=S?hn({},P,E,!0):E,R.next=13,r==null?void 0:r(t,M8({},n,k),n,o);case 13:return O=R.sent,m(!1),R.abrupt("return",O);case 18:return R.prev=18,R.t0=R.catch(2),console.log(R.t0),m(!1),R.abrupt("return",null);case 23:case"end":return R.stop()}},y,null,[[2,18]])}));function g(y){return p.apply(this,arguments)}return g}(),children:[v?x.jsx(La,{style:{marginRight:8}}):null,a||"保存"]},"save")}var j8=function(t){var r=t.recordKey,n=t.onDelete,a=t.row,o=t.children,s=t.deletePopconfirmMessage,l=Yn(function(){return!1}),u=U(l,2),c=u[0],d=u[1],f=Jt(xt(Ve().mark(function v(){var m;return Ve().wrap(function(g){for(;;)switch(g.prev=g.next){case 0:return g.prev=0,d(!0),g.next=4,n==null?void 0:n(r,a);case 4:return m=g.sent,d(!1),g.abrupt("return",m);case 9:return g.prev=9,g.t0=g.catch(0),console.log(g.t0),d(!1),g.abrupt("return",null);case 14:case"end":return g.stop()}},v,null,[[0,9]])})));return o!==!1?x.jsx(jg,{title:s,onConfirm:function(){return f()},children:x.jsxs("a",{children:[c?x.jsx(La,{style:{marginRight:8}}):null,o||"删除"]})},"delete"):null},A8=function(t){var r=t.recordKey,n=t.tableName,a=t.newLineConfig,o=t.editorType,s=t.onCancel,l=t.cancelEditable,u=t.row,c=t.cancelText,d=i.useContext(jp),f=zt.useFormInstance();return x.jsx("a",{onClick:function(){var v=xt(Ve().mark(function p(g){var y,b,C,S,P,E;return Ve().wrap(function(F){for(;;)switch(F.prev=F.next){case 0:return g.stopPropagation(),g.preventDefault(),b=o==="Map",C=[n,r].flat(1).filter(Boolean),S=((y=d.getFieldFormatValue)===null||y===void 0?void 0:y.call(d,C))||f.getFieldValue(C),P=b?hn({},C,S):S,F.next=8,s==null?void 0:s(r,P,u,a);case 8:return E=F.sent,l(r),f.setFieldsValue(B({},r,b?pn(u,C):u)),F.abrupt("return",E);case 12:case"end":return F.stop()}},p)}));function m(p){return v.apply(this,arguments)}return m}(),children:c||"取消"},"cancel")};function K8(e,t){var r=t.recordKey,n=t.newLineConfig,a=t.saveText,o=t.deleteText;return[x.jsx(L8,h(h({},t),{},{row:e,children:a}),"save"+r),(n==null?void 0:n.options.recordKey)!==r?x.jsx(j8,h(h({},t),{},{row:e,children:o}),"delete"+r):null,x.jsx(A8,h(h({},t),{},{row:e}),"cancel"+r)]}function V8(e){var t=i.useState(void 0),r=U(t,2),n=r[0],a=r[1],o=i.useRef(new Map),s=i.useRef(void 0);Kp(function(){var M=new Map,I=function L(j,_){j==null||j.forEach(function(K,z){var A,V=_==null?z.toString():_+"_"+z.toString();M.set(V,zn(e.getRowKey(K,-1))),M.set((A=zn(e.getRowKey(K,-1)))===null||A===void 0?void 0:A.toString(),V),e.childrenColumnName&&K[e.childrenColumnName]&&L(K[e.childrenColumnName],V)})};I(e.dataSource),o.current=M},[e.dataSource]),s.current=n;var l=e.type||"single",u=ap(e.dataSource,"children",e.getRowKey),c=U(u,1),d=c[0],f=kt([],{value:e.editableKeys,onChange:e.onChange?function(M){var I;e==null||(I=e.onChange)===null||I===void 0||I.call(e,M.filter(function(L){return L!==void 0}),M.map(function(L){return d(L)}).filter(function(L){return L!==void 0}))}:void 0}),v=U(f,2),m=v[0],p=v[1],g=i.useMemo(function(){var M=l==="single"?m==null?void 0:m.slice(0,1):m;return new Set(M)},[(m||[]).join(","),l]),y=Ii(m),b=Jt(function(M){var I,L,j,_,K=(I=e.getRowKey(M,M.index))===null||I===void 0||(L=I.toString)===null||L===void 0?void 0:L.call(I),z=(j=e.getRowKey(M,-1))===null||j===void 0||(_=j.toString)===null||_===void 0?void 0:_.call(j),A=m.map(function(H){return H==null?void 0:H.toString()}),V=(y==null?void 0:y.map(function(H){return H==null?void 0:H.toString()}))||[],X=e.tableName&&!!(V!=null&&V.includes(z))||!!(V!=null&&V.includes(K));return{recordKey:z,isEditable:e.tableName&&(A==null?void 0:A.includes(z))||(A==null?void 0:A.includes(K)),preIsEditable:X}}),C=Jt(function(M){return g.size>0&&l==="single"&&e.onlyOneLineEditorAlertMessage!==!1?(Bl.warn(e.onlyOneLineEditorAlertMessage||"只能同时编辑一行"),!1):(g.add(M),p(Array.from(g)),!0)}),S=Jt(function(){var M=xt(Ve().mark(function I(L,j){var _,K;return Ve().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:if(_=zn(L).toString(),K=o.current.get(_),!(!g.has(_)&&K&&(j??!0)&&e.tableName)){A.next=5;break}return S(K,!1),A.abrupt("return");case 5:return n&&n.options.recordKey===L&&a(void 0),g.delete(_),g.delete(zn(L)),p(Array.from(g)),A.abrupt("return",!0);case 10:case"end":return A.stop()}},I)}));return function(I,L){return M.apply(this,arguments)}}()),P=Uu(xt(Ve().mark(function M(){var I,L,j,_,K=arguments;return Ve().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:for(L=K.length,j=new Array(L),_=0;_0&&l==="single"&&e.onlyOneLineEditorAlertMessage!==!1)return Bl.warn(e.onlyOneLineEditorAlertMessage||"只能同时编辑一行"),!1;var L=e.getRowKey(M,-1);if(!L)throw tn(!!L,`请设置 recordCreatorProps.record 并返回一个唯一的key + https://procomponents.ant.design/components/editable-table#editable-%E6%96%B0%E5%BB%BA%E8%A1%8C`),new Error("请设置 recordCreatorProps.record 并返回一个唯一的key");if(g.add(L),p(Array.from(g)),(I==null?void 0:I.newRecordType)==="dataSource"||e.tableName){var j,_={data:e.dataSource,getRowKey:e.getRowKey,row:h(h({},M),{},{map_row_parentKey:I!=null&&I.parentKey?(j=zn(I==null?void 0:I.parentKey))===null||j===void 0?void 0:j.toString():void 0}),key:L,childrenColumnName:e.childrenColumnName||"children"};e.setDataSource(uo(_,(I==null?void 0:I.position)==="top"?"top":"update"))}else a({defaultValue:M,options:h(h({},I),{},{recordKey:L})});return!0}),F=qn(),$=(e==null?void 0:e.saveText)||F.getMessage("editableTable.action.save","保存"),k=(e==null?void 0:e.deleteText)||F.getMessage("editableTable.action.delete","删除"),O=(e==null?void 0:e.cancelText)||F.getMessage("editableTable.action.cancel","取消"),D=Jt(function(){var M=xt(Ve().mark(function I(L,j,_,K){var z,A,V,X,H,Q,Y;return Ve().wrap(function(q){for(;;)switch(q.prev=q.next){case 0:return X=K||s.current||{},H=X.options,q.next=3,e==null||(z=e.onSave)===null||z===void 0?void 0:z.call(e,L,j,_,K);case 3:if(Q=q.sent,S(L),!(!(H!=null&&H.parentKey)&&(H==null?void 0:H.recordKey)===L)){q.next=8;break}return(H==null?void 0:H.position)==="top"?e.setDataSource([j].concat(Ke(e.dataSource))):e.setDataSource([].concat(Ke(e.dataSource),[j])),q.abrupt("return",Q);case 8:return Y={data:e.dataSource,getRowKey:e.getRowKey,row:H?h(h({},j),{},{map_row_parentKey:(A=zn((V=H==null?void 0:H.parentKey)!==null&&V!==void 0?V:""))===null||A===void 0?void 0:A.toString()}):j,key:L,childrenColumnName:e.childrenColumnName||"children"},e.setDataSource(uo(Y,(H==null?void 0:H.position)==="top"?"top":"update")),q.abrupt("return",Q);case 11:case"end":return q.stop()}},I)}));return function(I,L,j,_){return M.apply(this,arguments)}}()),R=Jt(function(){var M=xt(Ve().mark(function I(L,j){var _,K,z;return Ve().wrap(function(V){for(;;)switch(V.prev=V.next){case 0:return K={data:e.dataSource,getRowKey:e.getRowKey,row:j,key:L,childrenColumnName:e.childrenColumnName||"children"},V.next=3,e==null||(_=e.onDelete)===null||_===void 0?void 0:_.call(e,L,j);case 3:return z=V.sent,V.next=6,S(L);case 6:return e.setDataSource(uo(K,"delete")),V.abrupt("return",z);case 8:case"end":return V.stop()}},I)}));return function(I,L){return M.apply(this,arguments)}}()),T=Jt(function(){var M=xt(Ve().mark(function I(L,j,_,K){var z,A;return Ve().wrap(function(X){for(;;)switch(X.prev=X.next){case 0:return X.next=2,e==null||(z=e.onCancel)===null||z===void 0?void 0:z.call(e,L,j,_,K);case 2:return A=X.sent,X.abrupt("return",A);case 4:case"end":return X.stop()}},I)}));return function(I,L,j,_){return M.apply(this,arguments)}}()),N=function(I){var L=e.getRowKey(I,I.index),j={saveText:$,cancelText:O,deleteText:k,addEditRecord:w,recordKey:L,cancelEditable:S,index:I.index,tableName:e.tableName,newLineConfig:n,onCancel:T,onDelete:R,onSave:D,editableKeys:m,setEditableRowKeys:p,deletePopconfirmMessage:e.deletePopconfirmMessage||"".concat(F.getMessage("deleteThisLine","删除此行"),"?")},_=K8(I,j);return e.actionRender?e.actionRender(I,j,{save:_[0],delete:_[1],cancel:_[2]}):_};return{editableKeys:m,setEditableRowKeys:p,isEditable:b,actionRender:N,startEditable:C,cancelEditable:S,addEditRecord:w,newLineRecord:n,preEditableKeys:y,onValuesChange:E}}var z8=function(t){return B8(t)==="map"?t:new Map(Object.entries(t||{}))};function B8(e){var t=Object.prototype.toString.call(e).match(/^\[object (.*)\]$/)[1].toLowerCase();return t==="string"&&He(e)==="object"?"object":e===null?"null":e===void 0?"undefined":t}var H8=function(t){var r=[],n=z8(t);return n.forEach(function(a,o){var s=n.get(o)||n.get("".concat(o));if(s){if(He(s)==="object"&&(s!=null&&s.text)){r.push({text:s==null?void 0:s.text,value:o,label:s==null?void 0:s.text,disabled:s.disabled});return}r.push({text:s,value:o})}}),r};var Pn={},qo={},W8=il,U8=sr,Y8=oa,G8="[object String]";function q8(e){return typeof e=="string"||!U8(e)&&Y8(e)&&W8(e)==G8}var X8=q8;function Z8(e){return function(t,r,n){for(var a=-1,o=Object(t),s=n(t),l=s.length;l--;){var u=s[e?l:++a];if(r(o[u],u,o)===!1)break}return t}}var Q8=Z8,J8=Q8,eE=J8(),Vp=eE,tE=Vp,nE=Wo;function rE(e,t){return e&&tE(e,t,nE)}var zp=rE,aE=pu;function oE(e){return typeof e=="function"?e:aE}var Bp=oE,iE=zp,lE=Bp;function sE(e,t){return e&&iE(e,lE(t))}var Yu=sE,uE=Hm,cE=uE(Object.getPrototypeOf,Object),Gu=cE,dE=il,fE=Gu,vE=oa,mE="[object Object]",pE=Function.prototype,hE=Object.prototype,Hp=pE.toString,gE=hE.hasOwnProperty,yE=Hp.call(Object);function bE(e){if(!vE(e)||dE(e)!=mE)return!1;var t=fE(e);if(t===null)return!0;var r=gE.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Hp.call(r)==yE}var Wp=bE,CE=wl,xE=Ou,SE=1,wE=2;function PE(e,t,r,n){var a=r.length,o=a,s=!n;if(e==null)return!o;for(e=Object(e);a--;){var l=r[a];if(s&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++a0&&arguments[0]!==void 0?arguments[0]:[],r=[];return(0,L5.default)(t,function(n){Array.isArray(n)?e(n).map(function(a){return r.push(a)}):(0,I5.default)(n)?(0,D5.default)(n,function(a,o){a===!0&&r.push(o),r.push(o+"-"+a)}):(0,N5.default)(n)&&r.push(n)}),r};qo.default=j5;var Xo={};function A5(e,t){for(var r=-1,n=e==null?0:e.length;++r1&&arguments[1]!==void 0?arguments[1]:[],n=t.default&&(0,WR.default)(t.default)||{};return r.map(function(a){var o=t[a];return o&&(0,BR.default)(o,function(s,l){n[l]||(n[l]={}),n[l]=UR({},n[l],o[l])}),a}),n};Xo.default=YR;var Jo={};Object.defineProperty(Jo,"__esModule",{value:!0});Jo.autoprefix=void 0;var GR=Yu,Xd=XR(GR),qR=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:"span";return function(n){rM(a,n);function a(){var o,s,l,u;nM(this,a);for(var c=arguments.length,d=Array(c),f=0;f1&&arguments[1]!==void 0?arguments[1]:"span";return function(n){uM(a,n);function a(){var o,s,l,u;sM(this,a);for(var c=arguments.length,d=Array(c),f=0;f1&&arguments[1]!==void 0?arguments[1]:!0;n[s]=l};return t===0&&a("first-child"),t===r-1&&a("last-child"),(t===0||t%2===0)&&a("even"),Math.abs(t%2)===1&&a("odd"),a("nth-child",t),n};Xu.default=dM;Object.defineProperty(Pn,"__esModule",{value:!0});Pn.ReactCSS=Pn.loop=Pn.handleActive=Pn.handleHover=Pn.hover=void 0;var fM=qo,vM=Wa(fM),mM=Xo,pM=Wa(mM),hM=Jo,gM=Wa(hM),yM=ei,oh=Wa(yM),bM=ti,CM=Wa(bM),xM=Xu,SM=Wa(xM);function Wa(e){return e&&e.__esModule?e:{default:e}}Pn.hover=oh.default;Pn.handleHover=oh.default;Pn.handleActive=CM.default;Pn.loop=SM.default;var wM=Pn.ReactCSS=function(t){for(var r=arguments.length,n=Array(r>1?r-1:0),a=1;a1?r[a-1]:void 0,s=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,s&&pT(r[0],r[1],s)&&(o=a<3?void 0:o,a=1),t=Object(t);++nl?v=1:v=Math.round(f*100/l)/100,r.a!==v)return{h:r.h,s:r.s,l:r.l,a:v,source:"rgb"}}else{var m;if(d<0?m=0:d>s?m=1:m=Math.round(d*100/s)/100,a!==m)return{h:r.h,s:r.s,l:r.l,a:m,source:"rgb"}}return null},as={},PT=function(t,r,n,a){if(typeof document>"u"&&!a)return null;var o=a?new a:document.createElement("canvas");o.width=n*2,o.height=n*2;var s=o.getContext("2d");return s?(s.fillStyle=t,s.fillRect(0,0,o.width,o.height),s.fillStyle=r,s.fillRect(0,0,n,n),s.translate(n,n),s.fillRect(0,0,n,n),o.toDataURL()):null},ET=function(t,r,n,a){var o="".concat(t,"-").concat(r,"-").concat(n).concat(a?"-server":"");if(as[o])return as[o];var s=PT(t,r,n,a);return as[o]=s,s};function ko(e){"@babel/helpers - typeof";return ko=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ko(e)}function rf(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function Mi(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Yi(e){return Yi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},Yi(e)}var AT=function(e){OT(r,e);var t=IT(r);function r(){var n;NT(this,r);for(var a=arguments.length,o=new Array(a),s=0;ss)f=0;else{var v=-(d*100/s)+100;f=360*v/100}if(n.h!==f)return{h:f,s:n.s,l:n.l,a:n.a,source:"hsl"}}else{var m;if(c<0)m=0;else if(c>o)m=359;else{var p=c*100/o;m=360*p/100}if(n.h!==m)return{h:m,s:n.s,l:n.l,a:n.a,source:"hsl"}}return null};function Ta(e){"@babel/helpers - typeof";return Ta=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ta(e)}function VT(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function lf(e,t){for(var r=0;r"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Gi(e){return Gi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},Gi(e)}var XT=function(e){WT(r,e);var t=UT(r);function r(){var n;VT(this,r);for(var a=arguments.length,o=new Array(a),s=0;so&&(c=o),d<0?d=0:d>s&&(d=s);var f=c/o,v=1-d/s;return{h:r.h,s:f,v,a:r.a,source:"hsv"}};function Fa(e){"@babel/helpers - typeof";return Fa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Fa(e)}function aF(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function sf(e,t){for(var r=0;r"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function qi(e){return qi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},qi(e)}var vF=function(e){sF(r,e);var t=uF(r);function r(n){var a;return aF(this,r),a=t.call(this,n),a.handleChange=function(o){typeof a.props.onChange=="function"&&a.throttle(a.props.onChange,rF(o,a.props.hsl,a.container),o)},a.handleMouseDown=function(o){a.handleChange(o);var s=a.getContainerRenderWindow();s.addEventListener("mousemove",a.handleChange),s.addEventListener("mouseup",a.handleMouseUp)},a.handleMouseUp=function(){a.unbindEventListeners()},a.throttle=nF(function(o,s,l){o(s,l)},50),a}return oF(r,[{key:"componentWillUnmount",value:function(){this.throttle.cancel(),this.unbindEventListeners()}},{key:"getContainerRenderWindow",value:function(){for(var a=this.container,o=window;!o.document.contains(a)&&o.parent!==o;)o=o.parent;return o}},{key:"unbindEventListeners",value:function(){var a=this.getContainerRenderWindow();a.removeEventListener("mousemove",this.handleChange),a.removeEventListener("mouseup",this.handleMouseUp)}},{key:"render",value:function(){var a=this,o=this.props.style||{},s=o.color,l=o.white,u=o.black,c=o.pointer,d=o.circle,f=Dr({default:{color:{absolute:"0px 0px 0px 0px",background:"hsl(".concat(this.props.hsl.h,",100%, 50%)"),borderRadius:this.props.radius},white:{absolute:"0px 0px 0px 0px",borderRadius:this.props.radius},black:{absolute:"0px 0px 0px 0px",boxShadow:this.props.shadow,borderRadius:this.props.radius},pointer:{position:"absolute",top:"".concat(-(this.props.hsv.v*100)+100,"%"),left:"".concat(this.props.hsv.s*100,"%"),cursor:"default"},circle:{width:"4px",height:"4px",boxShadow:`0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3), + 0 0 1px 2px rgba(0,0,0,.4)`,borderRadius:"50%",cursor:"hand",transform:"translate(-2px, -2px)"}},custom:{color:s,white:l,black:u,pointer:c,circle:d}},{custom:!!this.props.style});return Z.createElement("div",{style:f.color,ref:function(m){return a.container=m},onMouseDown:this.handleMouseDown,onTouchMove:this.handleChange,onTouchStart:this.handleChange},Z.createElement("style",null,` + .saturation-white { + background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0)); + background: linear-gradient(to right, #fff, rgba(255,255,255,0)); + } + .saturation-black { + background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0)); + background: linear-gradient(to top, #000, rgba(0,0,0,0)); + } + `),Z.createElement("div",{style:f.white,className:"saturation-white"},Z.createElement("div",{style:f.black,className:"saturation-black"}),Z.createElement("div",{style:f.pointer},this.props.pointer?Z.createElement(this.props.pointer,this.props):Z.createElement("div",{style:f.circle}))))}}]),r}(i.PureComponent||i.Component),mF=qp,pF=Gp,hF=Bp,gF=sr;function yF(e,t){var r=gF(e)?mF:pF;return r(e,hF(t))}var bF=yF,CF=bF;const xF=ja(CF);function Xi(e){"@babel/helpers - typeof";return Xi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Xi(e)}var SF=/^\s+/,wF=/\s+$/;function at(e,t){if(e=e||"",t=t||{},e instanceof at)return e;if(!(this instanceof at))return new at(e,t);var r=PF(e);this._originalInput=e,this._r=r.r,this._g=r.g,this._b=r.b,this._a=r.a,this._roundA=Math.round(100*this._a)/100,this._format=t.format||r.format,this._gradientType=t.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=r.ok}at.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},getLuminance:function(){var t=this.toRgb(),r,n,a,o,s,l;return r=t.r/255,n=t.g/255,a=t.b/255,r<=.03928?o=r/12.92:o=Math.pow((r+.055)/1.055,2.4),n<=.03928?s=n/12.92:s=Math.pow((n+.055)/1.055,2.4),a<=.03928?l=a/12.92:l=Math.pow((a+.055)/1.055,2.4),.2126*o+.7152*s+.0722*l},setAlpha:function(t){return this._a=ch(t),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var t=cf(this._r,this._g,this._b);return{h:t.h*360,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=cf(this._r,this._g,this._b),r=Math.round(t.h*360),n=Math.round(t.s*100),a=Math.round(t.v*100);return this._a==1?"hsv("+r+", "+n+"%, "+a+"%)":"hsva("+r+", "+n+"%, "+a+"%, "+this._roundA+")"},toHsl:function(){var t=uf(this._r,this._g,this._b);return{h:t.h*360,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=uf(this._r,this._g,this._b),r=Math.round(t.h*360),n=Math.round(t.s*100),a=Math.round(t.l*100);return this._a==1?"hsl("+r+", "+n+"%, "+a+"%)":"hsla("+r+", "+n+"%, "+a+"%, "+this._roundA+")"},toHex:function(t){return df(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(t){return MF(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return"#"+this.toHex8(t)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(Vt(this._r,255)*100)+"%",g:Math.round(Vt(this._g,255)*100)+"%",b:Math.round(Vt(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(Vt(this._r,255)*100)+"%, "+Math.round(Vt(this._g,255)*100)+"%, "+Math.round(Vt(this._b,255)*100)+"%)":"rgba("+Math.round(Vt(this._r,255)*100)+"%, "+Math.round(Vt(this._g,255)*100)+"%, "+Math.round(Vt(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:KF[df(this._r,this._g,this._b,!0)]||!1},toFilter:function(t){var r="#"+ff(this._r,this._g,this._b,this._a),n=r,a=this._gradientType?"GradientType = 1, ":"";if(t){var o=at(t);n="#"+ff(o._r,o._g,o._b,o._a)}return"progid:DXImageTransform.Microsoft.gradient("+a+"startColorstr="+r+",endColorstr="+n+")"},toString:function(t){var r=!!t;t=t||this._format;var n=!1,a=this._a<1&&this._a>=0,o=!r&&a&&(t==="hex"||t==="hex6"||t==="hex3"||t==="hex4"||t==="hex8"||t==="name");return o?t==="name"&&this._a===0?this.toName():this.toRgbString():(t==="rgb"&&(n=this.toRgbString()),t==="prgb"&&(n=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(n=this.toHexString()),t==="hex3"&&(n=this.toHexString(!0)),t==="hex4"&&(n=this.toHex8String(!0)),t==="hex8"&&(n=this.toHex8String()),t==="name"&&(n=this.toName()),t==="hsl"&&(n=this.toHslString()),t==="hsv"&&(n=this.toHsvString()),n||this.toHexString())},clone:function(){return at(this.toString())},_applyModification:function(t,r){var n=t.apply(null,[this].concat([].slice.call(r)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification($F,arguments)},brighten:function(){return this._applyModification(DF,arguments)},darken:function(){return this._applyModification(OF,arguments)},desaturate:function(){return this._applyModification(TF,arguments)},saturate:function(){return this._applyModification(FF,arguments)},greyscale:function(){return this._applyModification(NF,arguments)},spin:function(){return this._applyModification(IF,arguments)},_applyCombination:function(t,r){return t.apply(null,[this].concat([].slice.call(r)))},analogous:function(){return this._applyCombination(jF,arguments)},complement:function(){return this._applyCombination(_F,arguments)},monochromatic:function(){return this._applyCombination(AF,arguments)},splitcomplement:function(){return this._applyCombination(LF,arguments)},triad:function(){return this._applyCombination(vf,[3])},tetrad:function(){return this._applyCombination(vf,[4])}};at.fromRatio=function(e,t){if(Xi(e)=="object"){var r={};for(var n in e)e.hasOwnProperty(n)&&(n==="a"?r[n]=e[n]:r[n]=co(e[n]));e=r}return at(e,t)};function PF(e){var t={r:0,g:0,b:0},r=1,n=null,a=null,o=null,s=!1,l=!1;return typeof e=="string"&&(e=HF(e)),Xi(e)=="object"&&(er(e.r)&&er(e.g)&&er(e.b)?(t=EF(e.r,e.g,e.b),s=!0,l=String(e.r).substr(-1)==="%"?"prgb":"rgb"):er(e.h)&&er(e.s)&&er(e.v)?(n=co(e.s),a=co(e.v),t=RF(e.h,n,a),s=!0,l="hsv"):er(e.h)&&er(e.s)&&er(e.l)&&(n=co(e.s),o=co(e.l),t=kF(e.h,n,o),s=!0,l="hsl"),e.hasOwnProperty("a")&&(r=e.a)),r=ch(r),{ok:s,format:e.format||l,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:r}}function EF(e,t,r){return{r:Vt(e,255)*255,g:Vt(t,255)*255,b:Vt(r,255)*255}}function uf(e,t,r){e=Vt(e,255),t=Vt(t,255),r=Vt(r,255);var n=Math.max(e,t,r),a=Math.min(e,t,r),o,s,l=(n+a)/2;if(n==a)o=s=0;else{var u=n-a;switch(s=l>.5?u/(2-n-a):u/(n+a),n){case e:o=(t-r)/u+(t1&&(f-=1),f<1/6?c+(d-c)*6*f:f<1/2?d:f<2/3?c+(d-c)*(2/3-f)*6:c}if(t===0)n=a=o=r;else{var l=r<.5?r*(1+t):r+t-r*t,u=2*r-l;n=s(u,l,e+1/3),a=s(u,l,e),o=s(u,l,e-1/3)}return{r:n*255,g:a*255,b:o*255}}function cf(e,t,r){e=Vt(e,255),t=Vt(t,255),r=Vt(r,255);var n=Math.max(e,t,r),a=Math.min(e,t,r),o,s,l=n,u=n-a;if(s=n===0?0:u/n,n==a)o=0;else{switch(n){case e:o=(t-r)/u+(t>1)+720)%360;--t;)n.h=(n.h+a)%360,o.push(at(n));return o}function AF(e,t){t=t||6;for(var r=at(e).toHsv(),n=r.h,a=r.s,o=r.v,s=[],l=1/t;t--;)s.push(at({h:n,s:a,v:o})),o=(o+l)%1;return s}at.mix=function(e,t,r){r=r===0?0:r||50;var n=at(e).toRgb(),a=at(t).toRgb(),o=r/100,s={r:(a.r-n.r)*o+n.r,g:(a.g-n.g)*o+n.g,b:(a.b-n.b)*o+n.b,a:(a.a-n.a)*o+n.a};return at(s)};at.readability=function(e,t){var r=at(e),n=at(t);return(Math.max(r.getLuminance(),n.getLuminance())+.05)/(Math.min(r.getLuminance(),n.getLuminance())+.05)};at.isReadable=function(e,t,r){var n=at.readability(e,t),a,o;switch(o=!1,a=WF(r),a.level+a.size){case"AAsmall":case"AAAlarge":o=n>=4.5;break;case"AAlarge":o=n>=3;break;case"AAAsmall":o=n>=7;break}return o};at.mostReadable=function(e,t,r){var n=null,a=0,o,s,l,u;r=r||{},s=r.includeFallbackColors,l=r.level,u=r.size;for(var c=0;ca&&(a=o,n=at(t[c]));return at.isReadable(e,n,{level:l,size:u})||!s?n:(r.includeFallbackColors=!1,at.mostReadable(e,["#fff","#000"],r))};var eu=at.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},KF=at.hexNames=VF(eu);function VF(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[e[r]]=r);return t}function ch(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function Vt(e,t){zF(e)&&(e="100%");var r=BF(e);return e=Math.min(t,Math.max(0,parseFloat(e))),r&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function Dl(e){return Math.min(1,Math.max(0,e))}function vn(e){return parseInt(e,16)}function zF(e){return typeof e=="string"&&e.indexOf(".")!=-1&&parseFloat(e)===1}function BF(e){return typeof e=="string"&&e.indexOf("%")!=-1}function In(e){return e.length==1?"0"+e:""+e}function co(e){return e<=1&&(e=e*100+"%"),e}function dh(e){return Math.round(parseFloat(e)*255).toString(16)}function mf(e){return vn(e)/255}var Dn=function(){var e="[-\\+]?\\d+%?",t="[-\\+]?\\d*\\.\\d+%?",r="(?:"+t+")|(?:"+e+")",n="[\\s|\\(]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")\\s*\\)?",a="[\\s|\\(]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")\\s*\\)?";return{CSS_UNIT:new RegExp(r),rgb:new RegExp("rgb"+n),rgba:new RegExp("rgba"+a),hsl:new RegExp("hsl"+n),hsla:new RegExp("hsla"+a),hsv:new RegExp("hsv"+n),hsva:new RegExp("hsva"+a),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function er(e){return!!Dn.CSS_UNIT.exec(e)}function HF(e){e=e.replace(SF,"").replace(wF,"").toLowerCase();var t=!1;if(eu[e])e=eu[e],t=!0;else if(e=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var r;return(r=Dn.rgb.exec(e))?{r:r[1],g:r[2],b:r[3]}:(r=Dn.rgba.exec(e))?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=Dn.hsl.exec(e))?{h:r[1],s:r[2],l:r[3]}:(r=Dn.hsla.exec(e))?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=Dn.hsv.exec(e))?{h:r[1],s:r[2],v:r[3]}:(r=Dn.hsva.exec(e))?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=Dn.hex8.exec(e))?{r:vn(r[1]),g:vn(r[2]),b:vn(r[3]),a:mf(r[4]),format:t?"name":"hex8"}:(r=Dn.hex6.exec(e))?{r:vn(r[1]),g:vn(r[2]),b:vn(r[3]),format:t?"name":"hex"}:(r=Dn.hex4.exec(e))?{r:vn(r[1]+""+r[1]),g:vn(r[2]+""+r[2]),b:vn(r[3]+""+r[3]),a:mf(r[4]+""+r[4]),format:t?"name":"hex8"}:(r=Dn.hex3.exec(e))?{r:vn(r[1]+""+r[1]),g:vn(r[2]+""+r[2]),b:vn(r[3]+""+r[3]),format:t?"name":"hex"}:!1}function WF(e){var t,r;return e=e||{level:"AA",size:"small"},t=(e.level||"AA").toUpperCase(),r=(e.size||"small").toLowerCase(),t!=="AA"&&t!=="AAA"&&(t="AA"),r!=="small"&&r!=="large"&&(r="small"),{level:t,size:r}}var pf=function(t){var r=["r","g","b","a","h","s","l","v"],n=0,a=0;return xF(r,function(o){if(t[o]&&(n+=1,isNaN(t[o])||(a+=1),o==="s"||o==="l")){var s=/^\d+%$/;s.test(t[o])&&(a+=1)}}),n===a?t:!1},Ti=function(t,r){var n=t.hex?at(t.hex):at(t),a=n.toHsl(),o=n.toHsv(),s=n.toRgb(),l=n.toHex();a.s===0&&(a.h=r||0,o.h=r||0);var u=l==="000000"&&s.a===0;return{hsl:a,hex:u?"transparent":"#".concat(l),rgb:s,hsv:o,oldHue:t.h||r||a.h,source:t.source}},UF=function(t){if(t==="transparent")return!0;var r=String(t).charAt(0)==="#"?1:0;return t.length!==4+r&&t.length<7+r&&at(t).isValid()};function Na(e){"@babel/helpers - typeof";return Na=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Na(e)}function tu(){return tu=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Zi(e){return Zi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},Zi(e)}var nN=function(t){var r=function(n){ZF(o,n);var a=QF(o);function o(s){var l;return GF(this,o),l=a.call(this),l.handleChange=function(u,c){var d=pf(u);if(d){var f=Ti(u,u.h||l.state.oldHue);l.setState(f),l.props.onChangeComplete&&l.debounce(l.props.onChangeComplete,f,c),l.props.onChange&&l.props.onChange(f,c)}},l.handleSwatchHover=function(u,c){var d=pf(u);if(d){var f=Ti(u,u.h||l.state.oldHue);l.props.onSwatchHover&&l.props.onSwatchHover(f,c)}},l.state=oo({},Ti(s.color,0)),l.debounce=Fg(function(u,c,d){u(c,d)},100),l}return qF(o,[{key:"render",value:function(){var l={};return this.props.onSwatchHover&&(l.onSwatchHover=this.handleSwatchHover),Z.createElement(t,tu({},this.props,this.state,{onChange:this.handleChange},l))}}],[{key:"getDerivedStateFromProps",value:function(l,u){return oo({},Ti(l.color,u.oldHue))}}]),o}(i.PureComponent||i.Component);return r.propTypes=oo({},t.propTypes),r.defaultProps=oo(oo({},t.defaultProps),{},{color:{h:250,s:.5,l:.2,a:1}}),r};function $a(e){"@babel/helpers - typeof";return $a=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},$a(e)}function rN(e,t,r){return t=vh(t),t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function aN(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function yf(e,t){for(var r=0;r"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Qi(e){return Qi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},Qi(e)}var fN=1,mh=38,vN=40,mN=[mh,vN],pN=function(t){return mN.indexOf(t)>-1},hN=function(t){return Number(String(t).replace(/%/g,""))},gN=1,io=function(e){lN(r,e);var t=sN(r);function r(n){var a;return aN(this,r),a=t.call(this),a.handleBlur=function(){a.state.blurValue&&a.setState({value:a.state.blurValue,blurValue:null})},a.handleChange=function(o){a.setUpdatedValue(o.target.value,o)},a.handleKeyDown=function(o){var s=hN(o.target.value);if(!isNaN(s)&&pN(o.keyCode)){var l=a.getArrowOffset(),u=o.keyCode===mh?s+l:s-l;a.setUpdatedValue(u,o)}},a.handleDrag=function(o){if(a.props.dragLabel){var s=Math.round(a.props.value+o.movementX);s>=0&&s<=a.props.dragMax&&a.props.onChange&&a.props.onChange(a.getValueObjectWithLabel(s),o)}},a.handleMouseDown=function(o){a.props.dragLabel&&(o.preventDefault(),a.handleDrag(o),window.addEventListener("mousemove",a.handleDrag),window.addEventListener("mouseup",a.handleMouseUp))},a.handleMouseUp=function(){a.unbindEventListeners()},a.unbindEventListeners=function(){window.removeEventListener("mousemove",a.handleDrag),window.removeEventListener("mouseup",a.handleMouseUp)},a.state={value:String(n.value).toUpperCase(),blurValue:String(n.value).toUpperCase()},a.inputId="rc-editable-input-".concat(gN++),a}return oN(r,[{key:"componentDidUpdate",value:function(a,o){this.props.value!==this.state.value&&(a.value!==this.props.value||o.value!==this.state.value)&&(this.input===document.activeElement?this.setState({blurValue:String(this.props.value).toUpperCase()}):this.setState({value:String(this.props.value).toUpperCase(),blurValue:!this.state.blurValue&&String(this.props.value).toUpperCase()}))}},{key:"componentWillUnmount",value:function(){this.unbindEventListeners()}},{key:"getValueObjectWithLabel",value:function(a){return rN({},this.props.label,a)}},{key:"getArrowOffset",value:function(){return this.props.arrowOffset||fN}},{key:"setUpdatedValue",value:function(a,o){var s=this.props.label?this.getValueObjectWithLabel(a):a;this.props.onChange&&this.props.onChange(s,o),this.setState({value:a})}},{key:"render",value:function(){var a=this,o=Dr({default:{wrap:{position:"relative"}},"user-override":{wrap:this.props.style&&this.props.style.wrap?this.props.style.wrap:{},input:this.props.style&&this.props.style.input?this.props.style.input:{},label:this.props.style&&this.props.style.label?this.props.style.label:{}},"dragLabel-true":{label:{cursor:"ew-resize"}}},{"user-override":!0},this.props);return Z.createElement("div",{style:o.wrap},Z.createElement("input",{id:this.inputId,style:o.input,ref:function(l){return a.input=l},value:this.state.value,onKeyDown:this.handleKeyDown,onChange:this.handleChange,onBlur:this.handleBlur,placeholder:this.props.placeholder,spellCheck:"false"}),this.props.label&&!this.props.hideLabel?Z.createElement("label",{htmlFor:this.inputId,style:o.label,onMouseDown:this.handleMouseDown},this.props.label):null)}}]),r}(i.PureComponent||i.Component);function Da(e){"@babel/helpers - typeof";return Da=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Da(e)}function au(){return au=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Ji(e){return Ji=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},Ji(e)}var RN=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"span";return function(n){SN(o,n);var a=wN(o);function o(){var s;yN(this,o);for(var l=arguments.length,u=new Array(l),c=0;c100&&(d.a=100),d.a/=100,r==null||r({h:a==null?void 0:a.h,s:a==null?void 0:a.s,l:a==null?void 0:a.l,a:d.a,source:"rgb"},f))};return Z.createElement("div",{style:l.fields,className:"flexbox-fix"},Z.createElement("div",{style:l.double},Z.createElement(io,{style:{input:l.input,label:l.label},label:"hex",value:o==null?void 0:o.replace("#",""),onChange:u})),Z.createElement("div",{style:l.single},Z.createElement(io,{style:{input:l.input,label:l.label},label:"r",value:n==null?void 0:n.r,onChange:u,dragLabel:"true",dragMax:"255"})),Z.createElement("div",{style:l.single},Z.createElement(io,{style:{input:l.input,label:l.label},label:"g",value:n==null?void 0:n.g,onChange:u,dragLabel:"true",dragMax:"255"})),Z.createElement("div",{style:l.single},Z.createElement(io,{style:{input:l.input,label:l.label},label:"b",value:n==null?void 0:n.b,onChange:u,dragLabel:"true",dragMax:"255"})),Z.createElement("div",{style:l.alpha},Z.createElement(io,{style:{input:l.input,label:l.label},label:"a",value:Math.round(((n==null?void 0:n.a)||0)*100),onChange:u,dragLabel:"true",dragMax:"100"})))};function Mo(e){"@babel/helpers - typeof";return Mo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mo(e)}function Sf(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function wf(e){for(var t=1;t=0&&Te<=24),tt));return x.jsx("div",{style:h(h(h({},Le),fe(Re>0,{paddingRight:Re/2,paddingLeft:Re/2})),fe(Fe>0,{paddingTop:Fe/2,paddingBottom:Fe/2})),className:ye,children:Z.cloneElement(Ge)},"pro-card-col-".concat((Ge==null?void 0:Ge.key)||_e))}return Ge}),Qe=ve("".concat(se),o,(r={},B(r,"".concat(se,"-border"),O),B(r,"".concat(se,"-contain-card"),Se),B(r,"".concat(se,"-loading"),C),B(r,"".concat(se,"-split"),w==="vertical"||w==="horizontal"),B(r,"".concat(se,"-ghost"),M),B(r,"".concat(se,"-hoverable"),L),B(r,"".concat(se,"-size-").concat(R),R),B(r,"".concat(se,"-type-").concat(q),q),B(r,"".concat(se,"-collapse"),re),B(r,"".concat(se,"-checked"),Q),r)),et=ve("".concat(se,"-body"),(n={},B(n,"".concat(se,"-body-center"),b==="center"),B(n,"".concat(se,"-body-direction-column"),w==="horizontal"||j==="column"),B(n,"".concat(se,"-body-wrap"),y&&Se),n)),vt=h(h(h({},fe(Re>0,{marginRight:-Re/2,marginLeft:-Re/2})),fe(Fe>0,{marginTop:-Fe/2,marginBottom:-Fe/2})),u),ct=Z.isValidElement(C)?C:x.jsx(d9,{prefix:se,style:u.padding===0||u.padding==="0px"?{padding:24}:void 0}),ht=z&&_===void 0&&(A?A({collapsed:re}):x.jsx(Do,{rotate:re?void 0:90,className:"".concat(se,"-collapsible-icon")}));return x.jsxs("div",h(h({className:Qe,style:s,ref:t,onClick:function(_e){var mt;Y==null||Y(_e),ne==null||(mt=ne.onClick)===null||mt===void 0||mt.call(ne,_e)}},rn(ne,["prefixCls","colSpan"])),{},{children:[(f||m||ht)&&x.jsxs("div",{className:ve("".concat(se,"-header"),(a={},B(a,"".concat(se,"-header-border"),$||q==="inner"),B(a,"".concat(se,"-header-collapsible"),ht),a)),style:d,onClick:function(){ht&&ge(!re)},children:[x.jsxs("div",{className:"".concat(se,"-title"),children:[ht,x.jsx(Eo,{label:f,tooltip:E||p,subTitle:v})]}),m&&x.jsx("div",{className:"".concat(se,"-extra"),children:m})]}),ae?x.jsx("div",{className:"".concat(se,"-tabs"),children:x.jsx(ta,h(h({onChange:ae.onChange},ae),{},{items:me,children:C?ct:D}))}):x.jsx("div",{className:et,style:vt,children:C?ct:Pe}),x.jsx(u9,{actions:T,prefixCls:se})]}))});const Fo=m9;var p9=function(t){var r=i.useContext(pt.ConfigContext),n=r.getPrefixCls,a=n("pro-card-divider"),o=t.className,s=t.style,l=s===void 0?{}:s,u=t.type,c=ve(a,o,B({},"".concat(a,"-").concat(u),u));return x.jsx("div",{className:c,style:l})};const h9=p9;var g9=function(t){return x.jsx(Fo,h({bodyStyle:{padding:0}},t))},ni=Fo;ni.isProCard=!0;ni.Divider=h9;ni.TabPane=l9;ni.Group=g9;const y9=ni;const b9={moneySymbol:"$",form:{lightFilter:{more:"المزيد",clear:"نظف",confirm:"تأكيد",itemUnit:"عناصر"}},tableForm:{search:"ابحث",reset:"إعادة تعيين",submit:"ارسال",collapsed:"مُقلص",expand:"مُوسع",inputPlaceholder:"الرجاء الإدخال",selectPlaceholder:"الرجاء الإختيار"},alert:{clear:"نظف",selected:"محدد",item:"عنصر"},pagination:{total:{range:" ",total:"من",item:"عناصر"}},tableToolBar:{leftPin:"ثبت على اليسار",rightPin:"ثبت على اليمين",noPin:"الغاء التثبيت",leftFixedTitle:"لصق على اليسار",rightFixedTitle:"لصق على اليمين",noFixedTitle:"إلغاء الإلصاق",reset:"إعادة تعيين",columnDisplay:"الأعمدة المعروضة",columnSetting:"الإعدادات",fullScreen:"وضع كامل الشاشة",exitFullScreen:"الخروج من وضع كامل الشاشة",reload:"تحديث",density:"الكثافة",densityDefault:"افتراضي",densityLarger:"أكبر",densityMiddle:"وسط",densitySmall:"مدمج"},stepsForm:{next:"التالي",prev:"السابق",submit:"أنهى"},loginForm:{submitText:"تسجيل الدخول"},editableTable:{action:{save:"أنقذ",cancel:"إلغاء الأمر",delete:"حذف",add:"إضافة صف من البيانات"}},switch:{open:"مفتوح",close:"غلق"}},C9={moneySymbol:"€",form:{lightFilter:{more:"Máis",clear:"Limpar",confirm:"Confirmar",itemUnit:"Elementos"}},tableForm:{search:"Cercar",reset:"Netejar",submit:"Enviar",collapsed:"Expandir",expand:"Col·lapsar",inputPlaceholder:"Introduïu valor",selectPlaceholder:"Seleccioneu valor"},alert:{clear:"Netejar",selected:"Seleccionat",item:"Article"},pagination:{total:{range:" ",total:"de",item:"articles"}},tableToolBar:{leftPin:"Pin a l'esquerra",rightPin:"Pin a la dreta",noPin:"Sense Pin",leftFixedTitle:"Fixat a l'esquerra",rightFixedTitle:"Fixat a la dreta",noFixedTitle:"Sense fixar",reset:"Reiniciar",columnDisplay:"Mostrar Columna",columnSetting:"Configuració",fullScreen:"Pantalla Completa",exitFullScreen:"Sortir Pantalla Completa",reload:"Refrescar",density:"Densitat",densityDefault:"Per Defecte",densityLarger:"Llarg",densityMiddle:"Mitjà",densitySmall:"Compacte"},stepsForm:{next:"Següent",prev:"Anterior",submit:"Finalizar"},loginForm:{submitText:"Entrar"},editableTable:{action:{save:"Gardar",cancel:"Cancelar",delete:"Eliminar",add:"engadir unha fila de datos"}},switch:{open:"aberto",close:"pechar"}},x9={moneySymbol:"€",form:{lightFilter:{more:"Mehr",clear:"Zurücksetzen",confirm:"Bestätigen",itemUnit:"Einträge"}},tableForm:{search:"Suchen",reset:"Zurücksetzen",submit:"Absenden",collapsed:"Zeige mehr",expand:"Zeige weniger",inputPlaceholder:"Bitte eingeben",selectPlaceholder:"Bitte auswählen"},alert:{clear:"Zurücksetzen",selected:"Ausgewählt",item:"Eintrag"},pagination:{total:{range:" ",total:"von",item:"Einträgen"}},tableToolBar:{leftPin:"Links anheften",rightPin:"Rechts anheften",noPin:"Nicht angeheftet",leftFixedTitle:"Links fixiert",rightFixedTitle:"Rechts fixiert",noFixedTitle:"Nicht fixiert",reset:"Zurücksetzen",columnDisplay:"Angezeigte Reihen",columnSetting:"Einstellungen",fullScreen:"Vollbild",exitFullScreen:"Vollbild verlassen",reload:"Aktualisieren",density:"Abstand",densityDefault:"Standard",densityLarger:"Größer",densityMiddle:"Mittel",densitySmall:"Kompakt"},stepsForm:{next:"Weiter",prev:"Zurück",submit:"Abschließen"},loginForm:{submitText:"Anmelden"},editableTable:{action:{save:"Retten",cancel:"Abbrechen",delete:"Löschen",add:"Hinzufügen einer Datenzeile"}},switch:{open:"offen",close:"schließen"}},S9={moneySymbol:"£",form:{lightFilter:{more:"More",clear:"Clear",confirm:"Confirm",itemUnit:"Items"}},tableForm:{search:"Query",reset:"Reset",submit:"Submit",collapsed:"Expand",expand:"Collapse",inputPlaceholder:"Please enter",selectPlaceholder:"Please select"},alert:{clear:"Clear",selected:"Selected",item:"Item"},pagination:{total:{range:" ",total:"of",item:"items"}},tableToolBar:{leftPin:"Pin to left",rightPin:"Pin to right",noPin:"Unpinned",leftFixedTitle:"Fixed the left",rightFixedTitle:"Fixed the right",noFixedTitle:"Not Fixed",reset:"Reset",columnDisplay:"Column Display",columnSetting:"Settings",fullScreen:"Full Screen",exitFullScreen:"Exit Full Screen",reload:"Refresh",density:"Density",densityDefault:"Default",densityLarger:"Larger",densityMiddle:"Middle",densitySmall:"Compact"},stepsForm:{next:"Next",prev:"Previous",submit:"Finish"},loginForm:{submitText:"Login"},editableTable:{action:{save:"Save",cancel:"Cancel",delete:"Delete",add:"add a row of data"}},switch:{open:"open",close:"close"}},w9={moneySymbol:"$",deleteThisLine:"Delete this line",copyThisLine:"Copy this line",form:{lightFilter:{more:"More",clear:"Clear",confirm:"Confirm",itemUnit:"Items"}},tableForm:{search:"Query",reset:"Reset",submit:"Submit",collapsed:"Expand",expand:"Collapse",inputPlaceholder:"Please enter",selectPlaceholder:"Please select"},alert:{clear:"Clear",selected:"Selected",item:"Item"},pagination:{total:{range:" ",total:"of",item:"items"}},tableToolBar:{leftPin:"Pin to left",rightPin:"Pin to right",noPin:"Unpinned",leftFixedTitle:"Fixed the left",rightFixedTitle:"Fixed the right",noFixedTitle:"Not Fixed",reset:"Reset",columnDisplay:"Column Display",columnSetting:"Settings",fullScreen:"Full Screen",exitFullScreen:"Exit Full Screen",reload:"Refresh",density:"Density",densityDefault:"Default",densityLarger:"Larger",densityMiddle:"Middle",densitySmall:"Compact"},stepsForm:{next:"Next",prev:"Previous",submit:"Finish"},loginForm:{submitText:"Login"},editableTable:{onlyOneLineEditor:"Only one line can be edited",action:{save:"Save",cancel:"Cancel",delete:"Delete",add:"add a row of data"}},switch:{open:"open",close:"close"}},P9={moneySymbol:"€",form:{lightFilter:{more:"Más",clear:"Limpiar",confirm:"Confirmar",itemUnit:"artículos"}},tableForm:{search:"Buscar",reset:"Limpiar",submit:"Submit",collapsed:"Expandir",expand:"Colapsar",inputPlaceholder:"Ingrese valor",selectPlaceholder:"Seleccione valor"},alert:{clear:"Limpiar",selected:"Seleccionado",item:"Articulo"},pagination:{total:{range:" ",total:"de",item:"artículos"}},tableToolBar:{leftPin:"Pin a la izquierda",rightPin:"Pin a la derecha",noPin:"Sin Pin",leftFixedTitle:"Fijado a la izquierda",rightFixedTitle:"Fijado a la derecha",noFixedTitle:"Sin Fijar",reset:"Reiniciar",columnDisplay:"Mostrar Columna",columnSetting:"Configuración",fullScreen:"Pantalla Completa",exitFullScreen:"Salir Pantalla Completa",reload:"Refrescar",density:"Densidad",densityDefault:"Por Defecto",densityLarger:"Largo",densityMiddle:"Medio",densitySmall:"Compacto"},stepsForm:{next:"Siguiente",prev:"Anterior",submit:"Finalizar"},loginForm:{submitText:"Entrar"},editableTable:{action:{save:"Guardar",cancel:"Descartar",delete:"Borrar",add:"añadir una fila de datos"}},switch:{open:"abrir",close:"cerrar"}},E9={moneySymbol:"تومان",form:{lightFilter:{more:"بیشتر",clear:"پاک کردن",confirm:"تایید",itemUnit:"مورد"}},tableForm:{search:"جستجو",reset:"بازنشانی",submit:"تایید",collapsed:"نمایش بیشتر",expand:"نمایش کمتر",inputPlaceholder:"پیدا کنید",selectPlaceholder:"انتخاب کنید"},alert:{clear:"پاک سازی",selected:"انتخاب",item:"مورد"},pagination:{total:{range:" ",total:"از",item:"مورد"}},tableToolBar:{leftPin:"سنجاق به چپ",rightPin:"سنجاق به راست",noPin:"سنجاق نشده",leftFixedTitle:"ثابت شده در چپ",rightFixedTitle:"ثابت شده در راست",noFixedTitle:"شناور",reset:"بازنشانی",columnDisplay:"نمایش همه",columnSetting:"تنظیمات",fullScreen:"تمام صفحه",exitFullScreen:"خروج از حالت تمام صفحه",reload:"تازه سازی",density:"تراکم",densityDefault:"پیش فرض",densityLarger:"بزرگ",densityMiddle:"متوسط",densitySmall:"کوچک"},stepsForm:{next:"بعدی",prev:"قبلی",submit:"اتمام"},loginForm:{submitText:"ورود"},editableTable:{action:{save:"ذخیره",cancel:"لغو",delete:"حذف",add:"یک ردیف داده اضافه کنید"}},switch:{open:"باز",close:"نزدیک"}},k9={moneySymbol:"€",form:{lightFilter:{more:"Plus",clear:"Effacer",confirm:"Confirmer",itemUnit:"Items"}},tableForm:{search:"Rechercher",reset:"Réinitialiser",submit:"Envoyer",collapsed:"Agrandir",expand:"Réduire",inputPlaceholder:"Entrer une valeur",selectPlaceholder:"Sélectionner une valeur"},alert:{clear:"Réinitialiser",selected:"Sélectionné",item:"Item"},pagination:{total:{range:" ",total:"sur",item:"éléments"}},tableToolBar:{leftPin:"Épingler à gauche",rightPin:"Épingler à gauche",noPin:"Sans épingle",leftFixedTitle:"Fixer à gauche",rightFixedTitle:"Fixer à droite",noFixedTitle:"Non fixé",reset:"Réinitialiser",columnDisplay:"Affichage colonne",columnSetting:"Réglages",fullScreen:"Plein écran",exitFullScreen:"Quitter Plein écran",reload:"Rafraichir",density:"Densité",densityDefault:"Par défaut",densityLarger:"Larger",densityMiddle:"Moyenne",densitySmall:"Compacte"},stepsForm:{next:"Suivante",prev:"Précédente",submit:"Finaliser"},loginForm:{submitText:"Se connecter"},editableTable:{action:{save:"Sauvegarder",cancel:"Annuler",delete:"Supprimer",add:"ajouter une ligne de données"}},switch:{open:"ouvert",close:"près"}},R9={moneySymbol:"kn",form:{lightFilter:{more:"Više",clear:"Očisti",confirm:"Potvrdi",itemUnit:"Stavke"}},tableForm:{search:"Pretraži",reset:"Poništi",submit:"Potvrdi",collapsed:"Raširi",expand:"Skupi",inputPlaceholder:"Unesite",selectPlaceholder:"Odaberite"},alert:{clear:"Očisti",selected:"Odaberi",item:"stavke"},pagination:{total:{range:" ",total:"od",item:"stavke"}},tableToolBar:{leftPin:"Prikači lijevo",rightPin:"Prikači desno",noPin:"Bez prikačenja",leftFixedTitle:"Fiksiraj lijevo",rightFixedTitle:"Fiksiraj desno",noFixedTitle:"Bez fiksiranja",reset:"Resetiraj",columnDisplay:"Prikaz stupaca",columnSetting:"Postavke",fullScreen:"Puni zaslon",exitFullScreen:"Izađi iz punog zaslona",reload:"Ponovno učitaj",density:"Veličina",densityDefault:"Zadano",densityLarger:"Veliko",densityMiddle:"Srednje",densitySmall:"Malo"},stepsForm:{next:"Sljedeći",prev:"Prethodni",submit:"Kraj"},loginForm:{submitText:"Prijava"},editableTable:{action:{save:"Spremi",cancel:"Odustani",delete:"Obriši",add:"dodajte red podataka"}},switch:{open:"otvori",close:"zatvori"}},M9={moneySymbol:"RP",form:{lightFilter:{more:"Lebih",clear:"Hapus",confirm:"Konfirmasi",itemUnit:"Unit"}},tableForm:{search:"Cari",reset:"Atur ulang",submit:"Kirim",collapsed:"Lebih sedikit",expand:"Lebih banyak",inputPlaceholder:"Masukkan pencarian",selectPlaceholder:"Pilih"},alert:{clear:"Hapus",selected:"Dipilih",item:"Butir"},pagination:{total:{range:" ",total:"Dari",item:"Butir"}},tableToolBar:{leftPin:"Pin kiri",rightPin:"Pin kanan",noPin:"Tidak ada pin",leftFixedTitle:"Rata kiri",rightFixedTitle:"Rata kanan",noFixedTitle:"Tidak tetap",reset:"Atur ulang",columnDisplay:"Tampilan kolom",columnSetting:"Pengaturan",fullScreen:"Layar penuh",exitFullScreen:"Keluar layar penuh",reload:"Atur ulang",density:"Kerapatan",densityDefault:"Standar",densityLarger:"Lebih besar",densityMiddle:"Sedang",densitySmall:"Rapat"},stepsForm:{next:"Selanjutnya",prev:"Sebelumnya",submit:"Selesai"},loginForm:{submitText:"Login"},editableTable:{action:{save:"simpan",cancel:"batal",delete:"hapus",add:"Tambahkan baris data"}},switch:{open:"buka",close:"tutup"}},T9={moneySymbol:"€",form:{lightFilter:{more:"più",clear:"pulisci",confirm:"conferma",itemUnit:"elementi"}},tableForm:{search:"Filtra",reset:"Pulisci",submit:"Invia",collapsed:"Espandi",expand:"Contrai",inputPlaceholder:"Digita",selectPlaceholder:"Seleziona"},alert:{clear:"Rimuovi",selected:"Selezionati",item:"elementi"},pagination:{total:{range:" ",total:"di",item:"elementi"}},tableToolBar:{leftPin:"Fissa a sinistra",rightPin:"Fissa a destra",noPin:"Ripristina posizione",leftFixedTitle:"Fissato a sinistra",rightFixedTitle:"Fissato a destra",noFixedTitle:"Non fissato",reset:"Ripristina",columnDisplay:"Disposizione colonne",columnSetting:"Impostazioni",fullScreen:"Modalità schermo intero",exitFullScreen:"Esci da modalità schermo intero",reload:"Ricarica",density:"Grandezza tabella",densityDefault:"predefinito",densityLarger:"Grande",densityMiddle:"Media",densitySmall:"Compatta"},stepsForm:{next:"successivo",prev:"precedente",submit:"finisci"},loginForm:{submitText:"Accedi"},editableTable:{action:{save:"salva",cancel:"annulla",delete:"Delete",add:"add a row of data"}},switch:{open:"open",close:"chiudi"}},F9={moneySymbol:"¥",form:{lightFilter:{more:"もっと",clear:"明確",confirm:"確認",itemUnit:"項目"}},tableForm:{search:"検索",reset:"リセット",submit:"提交",collapsed:"展開",expand:"収納",inputPlaceholder:"入力してください",selectPlaceholder:"選択してください"},alert:{clear:"クリア",selected:"選択した",item:"項目"},pagination:{total:{range:"記事",total:"/合計",item:" "}},tableToolBar:{leftPin:"左に固定",rightPin:"右に固定",noPin:"キャンセル",leftFixedTitle:"左に固定された項目",rightFixedTitle:"右に固定された項目",noFixedTitle:"固定されてない項目",reset:"リセット",columnDisplay:"表示列",columnSetting:"列表示設定",fullScreen:"フルスクリーン",exitFullScreen:"終了",reload:"更新",density:"行高",densityDefault:"デフォルト",densityLarger:"默认",densityMiddle:"中",densitySmall:"小"},stepsForm:{next:"次のステップ",prev:"前",submit:"送信"},loginForm:{submitText:"ログイン"},editableTable:{action:{save:"救う",cancel:"キャンセル",delete:"削除",add:"1行のデータを追加します"}},switch:{open:"オープン",close:"近い"}},N9={moneySymbol:"₩",form:{lightFilter:{more:"더보기",clear:"취소",confirm:"확인",itemUnit:"건수"}},tableForm:{search:"조회",reset:"초기화",submit:"제출",collapsed:"확장",expand:"닫기",inputPlaceholder:"입력해 주세요",selectPlaceholder:"선택해 주세요"},alert:{clear:"취소",selected:"선택",item:"건"},pagination:{total:{range:" ",total:"/ 총",item:"건"}},tableToolBar:{leftPin:"왼쪽으로 핀",rightPin:"오른쪽으로 핀",noPin:"핀 제거",leftFixedTitle:"왼쪽으로 고정",rightFixedTitle:"오른쪽으로 고정",noFixedTitle:"비고정",reset:"초기화",columnDisplay:"컬럼 표시",columnSetting:"설정",fullScreen:"전체 화면",exitFullScreen:"전체 화면 취소",reload:"다시 읽기",density:"여백",densityDefault:"기본",densityLarger:"많은 여백",densityMiddle:"중간 여백",densitySmall:"좁은 여백"},stepsForm:{next:"다음",prev:"이전",submit:"종료"},loginForm:{submitText:"로그인"},editableTable:{action:{save:"저장",cancel:"취소",delete:"삭제",add:"데이터 행 추가"}},switch:{open:"열",close:"가까 운"}},$9={moneySymbol:"₮",form:{lightFilter:{more:"Илүү",clear:"Цэвэрлэх",confirm:"Баталгаажуулах",itemUnit:"Нэгжүүд"}},tableForm:{search:"Хайх",reset:"Шинэчлэх",submit:"Илгээх",collapsed:"Өргөтгөх",expand:"Хураах",inputPlaceholder:"Утга оруулна уу",selectPlaceholder:"Утга сонгоно уу"},alert:{clear:"Цэвэрлэх",selected:"Сонгогдсон",item:"Нэгж"},pagination:{total:{range:" ",total:"Нийт",item:"мөр"}},tableToolBar:{leftPin:"Зүүн тийш бэхлэх",rightPin:"Баруун тийш бэхлэх",noPin:"Бэхлэхгүй",leftFixedTitle:"Зүүн зэрэгцүүлэх",rightFixedTitle:"Баруун зэрэгцүүлэх",noFixedTitle:"Зэрэгцүүлэхгүй",reset:"Шинэчлэх",columnDisplay:"Баганаар харуулах",columnSetting:"Тохиргоо",fullScreen:"Бүтэн дэлгэцээр",exitFullScreen:"Бүтэн дэлгэц цуцлах",reload:"Шинэчлэх",density:"Хэмжээ",densityDefault:"Хэвийн",densityLarger:"Том",densityMiddle:"Дунд",densitySmall:"Жижиг"},stepsForm:{next:"Дараах",prev:"Өмнөх",submit:"Дуусгах"},loginForm:{submitText:"Нэвтрэх"},editableTable:{action:{save:"Хадгалах",cancel:"Цуцлах",delete:"Устгах",add:"Мөр нэмэх"}},switch:{open:"Нээх",close:"Хаах"}},D9={moneySymbol:"RM",form:{lightFilter:{more:"Lebih banyak",clear:"Jelas",confirm:"Mengesahkan",itemUnit:"Item"}},tableForm:{search:"Cari",reset:"Menetapkan semula",submit:"Hantar",collapsed:"Kembang",expand:"Kuncup",inputPlaceholder:"Sila masuk",selectPlaceholder:"Sila pilih"},alert:{clear:"Padam",selected:"Dipilih",item:"Item"},pagination:{total:{range:" ",total:"daripada",item:"item"}},tableToolBar:{leftPin:"Pin ke kiri",rightPin:"Pin ke kanan",noPin:"Tidak pin",leftFixedTitle:"Tetap ke kiri",rightFixedTitle:"Tetap ke kanan",noFixedTitle:"Tidak Tetap",reset:"Menetapkan semula",columnDisplay:"Lajur",columnSetting:"Settings",fullScreen:"Full Screen",exitFullScreen:"Keluar Full Screen",reload:"Muat Semula",density:"Densiti",densityDefault:"Biasa",densityLarger:"Besar",densityMiddle:"Tengah",densitySmall:"Kecil"},stepsForm:{next:"Seterusnya",prev:"Sebelumnya",submit:"Selesai"},loginForm:{submitText:"Log Masuk"},editableTable:{action:{save:"Simpan",cancel:"Membatalkan",delete:"Menghapuskan",add:"tambah baris data"}},switch:{open:"Terbuka",close:"Tutup"}},O9={moneySymbol:"zł",form:{lightFilter:{more:"Więcej",clear:"Wyczyść",confirm:"Potwierdź",itemUnit:"Ilość"}},tableForm:{search:"Szukaj",reset:"Reset",submit:"Zatwierdź",collapsed:"Pokaż wiecej",expand:"Pokaż mniej",inputPlaceholder:"Proszę podać",selectPlaceholder:"Proszę wybrać"},alert:{clear:"Wyczyść",selected:"Wybrane",item:"Wpis"},pagination:{total:{range:" ",total:"z",item:"Wpisów"}},tableToolBar:{leftPin:"Przypnij do lewej",rightPin:"Przypnij do prawej",noPin:"Odepnij",leftFixedTitle:"Przypięte do lewej",rightFixedTitle:"Przypięte do prawej",noFixedTitle:"Nieprzypięte",reset:"Reset",columnDisplay:"Wyświetlane wiersze",columnSetting:"Ustawienia",fullScreen:"Pełen ekran",exitFullScreen:"Zamknij pełen ekran",reload:"Odśwież",density:"Odstęp",densityDefault:"Standard",densityLarger:"Wiekszy",densityMiddle:"Sredni",densitySmall:"Kompaktowy"},stepsForm:{next:"Weiter",prev:"Zurück",submit:"Abschließen"},loginForm:{submitText:"Zaloguj się"},editableTable:{action:{save:"Zapisać",cancel:"Anuluj",delete:"Usunąć",add:"dodawanie wiersza danych"}},switch:{open:"otwierać",close:"zamykać"}},I9={moneySymbol:"R$",form:{lightFilter:{more:"Mais",clear:"Limpar",confirm:"Confirmar",itemUnit:"Itens"}},tableForm:{search:"Filtrar",reset:"Limpar",submit:"Confirmar",collapsed:"Expandir",expand:"Colapsar",inputPlaceholder:"Por favor insira",selectPlaceholder:"Por favor selecione"},alert:{clear:"Limpar",selected:"Selecionado(s)",item:"Item(s)"},pagination:{total:{range:" ",total:"de",item:"itens"}},tableToolBar:{leftPin:"Fixar à esquerda",rightPin:"Fixar à direita",noPin:"Desfixado",leftFixedTitle:"Fixado à esquerda",rightFixedTitle:"Fixado à direita",noFixedTitle:"Não fixado",reset:"Limpar",columnDisplay:"Mostrar Coluna",columnSetting:"Configurações",fullScreen:"Tela Cheia",exitFullScreen:"Sair da Tela Cheia",reload:"Atualizar",density:"Densidade",densityDefault:"Padrão",densityLarger:"Largo",densityMiddle:"Médio",densitySmall:"Compacto"},stepsForm:{next:"Próximo",prev:"Anterior",submit:"Enviar"},loginForm:{submitText:"Entrar"},editableTable:{action:{save:"Salvar",cancel:"Cancelar",delete:"Apagar",add:"adicionar uma linha de dados"}},switch:{open:"abrir",close:"fechar"}},_9={moneySymbol:"₽",form:{lightFilter:{more:"Еще",clear:"Очистить",confirm:"ОК",itemUnit:"Позиции"}},tableForm:{search:"Найти",reset:"Сброс",submit:"Отправить",collapsed:"Развернуть",expand:"Свернуть",inputPlaceholder:"Введите значение",selectPlaceholder:"Выберите значение"},alert:{clear:"Очистить",selected:"Выбрано",item:"элементов"},pagination:{total:{range:" ",total:"из",item:"элементов"}},tableToolBar:{leftPin:"Закрепить слева",rightPin:"Закрепить справа",noPin:"Открепить",leftFixedTitle:"Закреплено слева",rightFixedTitle:"Закреплено справа",noFixedTitle:"Не закреплено",reset:"Сброс",columnDisplay:"Отображение столбца",columnSetting:"Настройки",fullScreen:"Полный экран",exitFullScreen:"Выйти из полноэкранного режима",reload:"Обновить",density:"Размер",densityDefault:"По умолчанию",densityLarger:"Большой",densityMiddle:"Средний",densitySmall:"Сжатый"},stepsForm:{next:"Следующий",prev:"Предыдущий",submit:"Завершить"},loginForm:{submitText:"Вход"},editableTable:{action:{save:"Сохранить",cancel:"Отменить",delete:"Удалить",add:"добавить ряд данных"}},switch:{open:"Открытый чемпионат мира по теннису",close:"По адресу:"}},L9={moneySymbol:"RSD",form:{lightFilter:{more:"Više",clear:"Očisti",confirm:"Potvrdi",itemUnit:"Stavke"}},tableForm:{search:"Pronađi",reset:"Resetuj",submit:"Pošalji",collapsed:"Proširi",expand:"Skupi",inputPlaceholder:"Molimo unesite",selectPlaceholder:"Molimo odaberite"},alert:{clear:"Očisti",selected:"Odabrano",item:"Stavka"},pagination:{total:{range:" ",total:"od",item:"stavki"}},tableToolBar:{leftPin:"Zakači levo",rightPin:"Zakači desno",noPin:"Nije zakačeno",leftFixedTitle:"Fiksirano levo",rightFixedTitle:"Fiksirano desno",noFixedTitle:"Nije fiksirano",reset:"Resetuj",columnDisplay:"Prikaz kolona",columnSetting:"Podešavanja",fullScreen:"Pun ekran",exitFullScreen:"Zatvori pun ekran",reload:"Osveži",density:"Veličina",densityDefault:"Podrazumevana",densityLarger:"Veća",densityMiddle:"Srednja",densitySmall:"Kompaktna"},stepsForm:{next:"Dalje",prev:"Nazad",submit:"Gotovo"},loginForm:{submitText:"Prijavi se"},editableTable:{action:{save:"Sačuvaj",cancel:"Poništi",delete:"Obriši",add:"dodajte red podataka"}},switch:{open:"Отворите",close:"Затворите"}},j9={moneySymbol:"₺",form:{lightFilter:{more:"Daha Fazla",clear:"Temizle",confirm:"Onayla",itemUnit:"Öğeler"}},tableForm:{search:"Filtrele",reset:"Sıfırla",submit:"Gönder",collapsed:"Daha fazla",expand:"Daha az",inputPlaceholder:"Filtrelemek için bir değer girin",selectPlaceholder:"Filtrelemek için bir değer seçin"},alert:{clear:"Temizle",selected:"Seçili",item:"Öğe"},pagination:{total:{range:" ",total:"Toplam",item:"Öğe"}},tableToolBar:{leftPin:"Sola sabitle",rightPin:"Sağa sabitle",noPin:"Sabitlemeyi kaldır",leftFixedTitle:"Sola sabitlendi",rightFixedTitle:"Sağa sabitlendi",noFixedTitle:"Sabitlenmedi",reset:"Sıfırla",columnDisplay:"Kolon Görünümü",columnSetting:"Ayarlar",fullScreen:"Tam Ekran",exitFullScreen:"Tam Ekrandan Çık",reload:"Yenile",density:"Kalınlık",densityDefault:"Varsayılan",densityLarger:"Büyük",densityMiddle:"Orta",densitySmall:"Küçük"},stepsForm:{next:"Sıradaki",prev:"Önceki",submit:"Gönder"},loginForm:{submitText:"Giriş Yap"},editableTable:{action:{save:"Kaydet",cancel:"Vazgeç",delete:"Sil",add:"foegje in rige gegevens ta"}},switch:{open:"açık",close:"kapatmak"}},A9={moneySymbol:"₫",form:{lightFilter:{more:"Nhiều hơn",clear:"Trong",confirm:"Xác nhận",itemUnit:"Mục"}},tableForm:{search:"Tìm kiếm",reset:"Làm lại",submit:"Gửi đi",collapsed:"Mở rộng",expand:"Thu gọn",inputPlaceholder:"nhập dữ liệu",selectPlaceholder:"Vui lòng chọn"},alert:{clear:"Xóa",selected:"đã chọn",item:"mục"},pagination:{total:{range:" ",total:"trên",item:"mặt hàng"}},tableToolBar:{leftPin:"Ghim trái",rightPin:"Ghim phải",noPin:"Bỏ ghim",leftFixedTitle:"Cố định trái",rightFixedTitle:"Cố định phải",noFixedTitle:"Chưa cố định",reset:"Làm lại",columnDisplay:"Cột hiển thị",columnSetting:"Cấu hình",fullScreen:"Chế độ toàn màn hình",exitFullScreen:"Thoát chế độ toàn màn hình",reload:"Làm mới",density:"Mật độ hiển thị",densityDefault:"Mặc định",densityLarger:"Mặc định",densityMiddle:"Trung bình",densitySmall:"Chật"},stepsForm:{next:"Sau",prev:"Trước",submit:"Kết thúc"},loginForm:{submitText:"Đăng nhập"},editableTable:{action:{save:"Cứu",cancel:"Hủy",delete:"Xóa",add:"thêm một hàng dữ liệu"}},switch:{open:"mở",close:"đóng"}},K9={moneySymbol:"¥",deleteThisLine:"删除此行",copyThisLine:"复制此行",form:{lightFilter:{more:"更多筛选",clear:"清除",confirm:"确认",itemUnit:"项"}},tableForm:{search:"查询",reset:"重置",submit:"提交",collapsed:"展开",expand:"收起",inputPlaceholder:"请输入",selectPlaceholder:"请选择"},alert:{clear:"取消选择",selected:"已选择",item:"项"},pagination:{total:{range:"第",total:"条/总共",item:"条"}},tableToolBar:{leftPin:"固定在列首",rightPin:"固定在列尾",noPin:"不固定",leftFixedTitle:"固定在左侧",rightFixedTitle:"固定在右侧",noFixedTitle:"不固定",reset:"重置",columnDisplay:"列展示",columnSetting:"列设置",fullScreen:"全屏",exitFullScreen:"退出全屏",reload:"刷新",density:"密度",densityDefault:"正常",densityLarger:"默认",densityMiddle:"中等",densitySmall:"紧凑"},stepsForm:{next:"下一步",prev:"上一步",submit:"提交"},loginForm:{submitText:"登录"},editableTable:{onlyOneLineEditor:"只能同时编辑一行",action:{save:"保存",cancel:"取消",delete:"删除",add:"添加一行数据"}},switch:{open:"打开",close:"关闭"}},V9={moneySymbol:"NT$",form:{lightFilter:{more:"更多篩選",clear:"清除",confirm:"確認",itemUnit:"項"}},tableForm:{search:"查詢",reset:"重置",submit:"提交",collapsed:"展開",expand:"收起",inputPlaceholder:"請輸入",selectPlaceholder:"請選擇"},alert:{clear:"取消選擇",selected:"已選擇",item:"項"},pagination:{total:{range:"第",total:"條/總共",item:"條"}},tableToolBar:{leftPin:"固定到左邊",rightPin:"固定到右邊",noPin:"不固定",leftFixedTitle:"固定在左側",rightFixedTitle:"固定在右側",noFixedTitle:"不固定",reset:"重置",columnDisplay:"列展示",columnSetting:"列設置",fullScreen:"全屏",exitFullScreen:"退出全屏",reload:"刷新",density:"密度",densityDefault:"正常",densityLarger:"默認",densityMiddle:"中等",densitySmall:"緊湊"},stepsForm:{next:"下一個",prev:"以前的",submit:"完成"},loginForm:{submitText:"登入"},editableTable:{action:{save:"保存",cancel:"取消",delete:"刪除",add:"添加一行數據"}},switch:{open:"打開",close:"關閉"}};function z9(e,t,r){var n=t.replace(/\[(\d+)\]/g,".$1").split("."),a=e,o=r,s=Rr(n),l;try{for(s.s();!(l=s.n()).done;){var u=l.value;if(o=Object(a)[u],a=Object(a)[u],o===void 0)return r}}catch(c){s.e(c)}finally{s.f()}return o}var Wt=function(t,r){return{getMessage:function(a,o){return z9(r,a,o)||o},locale:t}},B9=Wt("mn_MN",$9),H9=Wt("ar_EG",b9),Ol=Wt("zh_CN",K9),W9=Wt("en_US",w9),U9=Wt("en_GB",S9),Y9=Wt("vi_VN",A9),G9=Wt("it_IT",T9),q9=Wt("ja_JP",F9),X9=Wt("es_ES",P9),Z9=Wt("ca_ES",C9),Q9=Wt("ru_RU",_9),J9=Wt("sr_RS",L9),e$=Wt("ms_MY",D9),t$=Wt("zh_TW",V9),n$=Wt("fr_FR",k9),r$=Wt("pt_BR",I9),a$=Wt("ko_KR",N9),o$=Wt("id_ID",M9),i$=Wt("de_DE",x9),l$=Wt("fa_IR",E9),s$=Wt("tr_TR",j9),u$=Wt("pl_PL",O9),c$=Wt("hr_",R9),Oa={"mn-MN":B9,"ar-EG":H9,"zh-CN":Ol,"en-US":W9,"en-GB":U9,"vi-VN":Y9,"it-IT":G9,"ja-JP":q9,"es-ES":X9,"ca-ES":Z9,"ru-RU":Q9,"sr-RS":J9,"ms-MY":e$,"zh-TW":t$,"fr-FR":n$,"pt-BR":r$,"ko-KR":a$,"id-ID":o$,"de-DE":i$,"fa-IR":l$,"tr-TR":s$,"pl-PL":u$,"hr-HR":c$},d$=Object.keys(Oa),Il=Z.createContext({intl:h(h({},Ol),{},{locale:"default"}),valueTypeMap:{}}),f$=Il.Consumer,v$=Il.Provider,hh=function(t){if(!t)return"zh-CN";var r=t.toLocaleLowerCase();return d$.find(function(n){var a=n.toLocaleLowerCase();return a.includes(r)})},m$=function(){var t=Hu(),r=t.cache;return i.useEffect(function(){return function(){r.clear()}},[]),null},gh=function(t){var r=t.children,n=t.autoClearCache,a=n===void 0?!1:n,o=i.useContext(pt.ConfigContext),s=o.locale,l=s===void 0?pt:Z.Fragment,u=x.jsx(f$,{children:function(d){var f,v=s==null?void 0:s.locale,m=hh(v),p=v&&((f=d.intl)===null||f===void 0?void 0:f.locale)==="default"?Oa[m]:d.intl||Oa[m],g=s===void 0?{locale:Cp}:{};return x.jsx(l,h(h({},g),{},{children:x.jsx(v$,{value:h(h({},d),{},{intl:p||Ol}),children:x.jsxs(x.Fragment,{children:[a&&x.jsx(m$,{}),r]})})}))}});return a?x.jsx(Op,{value:{provider:function(){return new Map}},children:u}):u};function Gt(){var e=i.useContext(pt.ConfigContext),t=e.locale,r=i.useContext(Il),n=r.intl;return n&&n.locale!=="default"?n:t!=null&&t.locale?Oa[hh(t.locale)]:Ol}var p$=function(t){var r=Gt(),n=t.onClear,a=t.onConfirm,o=t.disabled,s=t.footerRender,l=i.useContext(pt.ConfigContext),u=l.getPrefixCls,c=u("pro-core-dropdown-footer"),d=[x.jsx(_n,{style:{visibility:n?"visible":"hidden"},type:"link",size:"small",disabled:o,onClick:function(m){n&&n(m),m.stopPropagation()},children:r.getMessage("form.lightFilter.clear","清除")},"clear"),x.jsx(_n,{"data-type":"confirm",type:"primary",size:"small",onClick:a,disabled:o,children:r.getMessage("form.lightFilter.confirm","确认")},"confirm")];if(s===!1||(s==null?void 0:s(a,n))===!1)return null;var f=(s==null?void 0:s(a,n))||d;return x.jsx("div",{className:c,onClick:function(m){return m.target.getAttribute("data-type")!=="confirm"&&m.stopPropagation()},children:f})};const h$=p$;var g$=function(t,r){var n,a=t.label,o=t.onClear,s=t.value,l=t.size,u=l===void 0?"middle":l,c=t.disabled,d=t.onLabelClick,f=t.ellipsis,v=t.placeholder,m=t.className,p=t.style,g=t.formatter,y=t.bordered,b=t.allowClear,C=b===void 0?!0:b,S=i.useContext(pt.ConfigContext),P=S.getPrefixCls,E=P("pro-core-field-label"),w=Gt(),F=i.useRef(null),$=i.useRef(null);i.useImperativeHandle(r,function(){return{labelRef:$,clearRef:F}});var k=function(R){return g?g(R):Array.isArray(R)?R.join(","):R},O=function(R,T){if(T!=null&&T!==""&&(!Array.isArray(T)||T.length)){var N,M,I=R?x.jsxs("span",{onClick:d,className:"".concat(E,"-text"),children:[R,": "]}):"",L=k(T);if(!f)return x.jsxs("span",{style:{display:"inline-flex",alignItems:"center"},children:[I,k(T)]});var j=41,_=function(){var A=Array.isArray(T)&&T.length>1,V=w.getMessage("form.lightFilter.itemUnit","项");return typeof L=="string"&&L.length>j&&A?"...".concat(T.length).concat(V):""},K=_();return x.jsxs("span",{title:typeof L=="string"?L:void 0,style:{display:"inline-flex",alignItems:"center"},children:[I,x.jsx("span",{style:{paddingLeft:4},children:typeof L=="string"?L==null||(N=L.toString())===null||N===void 0||(M=N.substr)===null||M===void 0?void 0:M.call(N,0,j):L}),K]})}return R||v};return x.jsxs("span",{className:ve(E,"".concat(E,"-").concat(u),(n={},B(n,"".concat(E,"-active"),!!s||s===0),B(n,"".concat(E,"-disabled"),c),B(n,"".concat(E,"-bordered"),y),B(n,"".concat(E,"-allow-clear"),C),n),m),style:p,ref:$,children:[O(a,s),(s||s===0)&&C&&x.jsx(al,{role:"button",title:"清除",className:ve("".concat(E,"-icon"),"".concat(E,"-close")),onClick:function(R){o&&!c&&o(),R.stopPropagation()},ref:F}),x.jsx(So,{className:ve("".concat(E,"-icon"),"".concat(E,"-arrow"))})]})};const sa=Z.forwardRef(g$);var y$=function(t){var r=t.children,n=t.label,a=t.footer,o=t.disabled,s=t.onVisibleChange,l=t.visible,u=t.footerRender,c=t.placement,d=i.useContext(pt.ConfigContext),f=d.getPrefixCls,v=f("pro-core-field-dropdown");return x.jsx(Io,{disabled:o,placement:c,trigger:["click"],visible:l,onVisibleChange:s,overlay:x.jsxs("div",{className:"".concat(v,"-overlay"),children:[x.jsx("div",{className:"".concat(v,"-content"),children:r}),a&&x.jsx(h$,h({disabled:o,footerRender:u},a))]}),children:x.jsx("span",{className:"".concat(v,"-label"),children:n})})};const yh=y$;var b$=function(t){var r=t.label,n=t.tooltip,a=t.ellipsis,o=t.subTitle,s=i.useContext(pt.ConfigContext),l=s.getPrefixCls;if(!n&&!o)return x.jsx(x.Fragment,{children:r});var u=l("pro-core-label-tip"),c=typeof n=="string"||Z.isValidElement(n)?{title:n}:n,d=(c==null?void 0:c.icon)||x.jsx(sv,{});return x.jsxs("div",{className:u,onMouseDown:function(v){return v.stopPropagation()},onMouseLeave:function(v){return v.stopPropagation()},onMouseMove:function(v){return v.stopPropagation()},children:[x.jsx("div",{className:ve("".concat(u,"-title"),B({},"".concat(u,"-title-ellipsis"),a)),children:r}),o&&x.jsx("div",{className:"".concat(u,"-subtitle"),children:o}),n&&x.jsx(nn,h(h({},c),{},{children:x.jsx("span",{className:"".concat(u,"-icon"),children:d})}))]})};const bh=Z.memo(b$);var C$=Z.createContext({});const Zu=C$;var x$=function(t){return t==null};const No=x$;var Ch={time:"HH:mm:ss",timeRange:"HH:mm:ss",date:"YYYY-MM-DD",dateWeek:"YYYY-wo",dateMonth:"YYYY-MM",dateQuarter:"YYYY-\\QQ",dateYear:"YYYY",dateRange:"YYYY-MM-DD",dateTime:"YYYY-MM-DD HH:mm:ss",dateTimeRange:"YYYY-MM-DD HH:mm:ss"};function Rf(e){return Object.prototype.toString.call(e)==="[object Object]"}function S$(e){if(Rf(e)===!1)return!1;var t=e.constructor;if(t===void 0)return!0;var r=t.prototype;return!(Rf(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)}var Mf=function(t,r,n){if(!r)return t;if(Nt.isMoment(t)){if(r==="number")return t.valueOf();if(r==="string")return t.format(Ch[n]||"YYYY-MM-DD HH:mm:ss");if(typeof r=="string"&&r!=="string")return t.format(r);if(typeof r=="function")return r(t,n)}return t},w$=function e(t,r,n,a,o){var s={};return typeof window>"u"||He(t)!=="object"||No(t)||t instanceof Blob||Array.isArray(t)?t:(Object.keys(t).forEach(function(l){var u=o?[o,l].flat(1):[l],c=pn(n,u)||"text",d="text",f;typeof c=="string"?d=c:c&&(d=c.valueType,f=c.dateFormat);var v=t[l];if(!(No(v)&&a)){if(S$(v)&&!Array.isArray(v)&&!Nt.isMoment(v)){s[l]=e(v,r,n,a,[l]);return}if(Array.isArray(v)){s[l]=v.map(function(m,p){return Nt.isMoment(m)?Mf(m,f||r,d):e(m,r,n,a,[l,"".concat(p)])});return}s[l]=Mf(v,f||r,d)}}),s)};const P$=w$;var Tf=function(t,r){return typeof r=="function"?r(Nt(t)):Nt(t).format(r)},E$=function(t,r){var n=Array.isArray(t)?t:[],a=U(n,2),o=a[0],s=a[1],l,u;Array.isArray(r)?(l=r[0],u=r[1]):(l=r,u=r);var c=o?Tf(o,l):"",d=s?Tf(s,u):"",f=c&&d?"".concat(c," ~ ").concat(d):"";return f};const k$=E$;function Xr(e){if(typeof e=="function"){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1&&arguments[1]!==void 0?arguments[1]:100,r=arguments.length>2?arguments[2]:void 0,n=i.useState(e),a=U(n,2),o=a[0],s=a[1],l=Qu(e);return i.useEffect(function(){var u=setTimeout(function(){s(l.current)},t);return function(){return clearTimeout(u)}},r?[t].concat(Ke(r)):void 0),o}function Mr(e,t,r,n){if(e===t)return!0;if(e&&t&&He(e)==="object"&&He(t)==="object"){if(e.constructor!==t.constructor)return!1;var a,o,s;if(Array.isArray(e)){if(a=e.length,a!=t.length)return!1;for(o=a;o--!==0;)if(!Mr(e[o],t[o],r,n))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;var l=Rr(e.entries()),u;try{for(l.s();!(u=l.n()).done;)if(o=u.value,!t.has(o[0]))return!1}catch(p){l.e(p)}finally{l.f()}var c=Rr(e.entries()),d;try{for(c.s();!(d=c.n()).done;)if(o=d.value,!Mr(o[1],t.get(o[0]),r,n))return!1}catch(p){c.e(p)}finally{c.f()}return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;var f=Rr(e.entries()),v;try{for(f.s();!(v=f.n()).done;)if(o=v.value,!t.has(o[0]))return!1}catch(p){f.e(p)}finally{f.f()}return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(a=e.length,a!=t.length)return!1;for(o=a;o--!==0;)if(e[o]!==t[o])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&e.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&e.toString)return e.toString()===t.toString();if(s=Object.keys(e),a=s.length,a!==Object.keys(t).length)return!1;for(o=a;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,s[o]))return!1;for(o=a;o--!==0;){var m=s[o];if(!(r!=null&&r.includes(m))&&!(m==="_owner"&&e.$$typeof)&&!Mr(e[m],t[m],r,n))return n&&console.log(m),!1}return!0}return e!==e&&t!==t}var T$=function(t,r,n){return Mr(t,r,n)};function F$(e,t){var r=i.useRef();return T$(e,r.current,t)||(r.current=e),r.current}function N$(e,t,r){i.useEffect(e,F$(t||[],r))}var $$=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,D$=function(){return typeof window<"u"&&typeof window.document<"u"&&typeof window.matchMedia<"u"&&!$$};const O$=D$;var os=0;function I$(e){var t=i.useState(function(){return e.proFieldKey?e.proFieldKey.toString():(os+=1,os.toString())}),r=U(t,1),n=r[0],a=i.useRef(n),o=function(){var c=xt(Ve().mark(function d(){var f,v;return Ve().wrap(function(p){for(;;)switch(p.prev=p.next){case 0:return p.next=2,(f=e.request)===null||f===void 0?void 0:f.call(e,e.params,e);case 2:return v=p.sent,p.abrupt("return",v);case 4:case"end":return p.stop()}},d)}));return function(){return c.apply(this,arguments)}}();i.useEffect(function(){return function(){os+=1}},[]);var s=Ip([a.current,e.params],o,{revalidateOnFocus:!1,shouldRetryOnError:!1,revalidateOnReconnect:!1}),l=s.data,u=s.error;return[l||u]}var _$=function(t){var r=i.useRef();return i.useEffect(function(){r.current=t}),r.current};const xh=_$;var L$=function(t){var r=!1;return(typeof t=="string"&&t.startsWith("date")&&!t.endsWith("Range")||t==="select"||t==="time")&&(r=!0),r};const j$=L$;var Ju=function(){for(var t={},r=arguments.length,n=new Array(r),a=0;a0&&arguments[0]!==void 0?arguments[0]:21;if(typeof window>"u"||!window.crypto)return(Ff+=1).toFixed(0);for(var r="",n=crypto.getRandomValues(new Uint8Array(t));t--;){var a=63&n[t];r+=a<36?a.toString(36):a<62?(a-26).toString(36).toUpperCase():a<63?"_":"-"}return r},ec=function(){return typeof window>"u"?Nf():window.crypto&&window.crypto.randomUUID&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Nf()},A$=function(t){if(t&&t!==!0)return t};const K$=A$;var V$=function(t){var r={};if(Object.keys(t||{}).forEach(function(n){t[n]!==void 0&&(r[n]=t[n])}),!(Object.keys(r).length<1))return r};const Wn=V$;var z$=function e(t,r){return No(t)||Nt.isMoment(t)?t:Array.isArray(t)?t.map(function(n){return e(n,r)}):typeof t=="number"?Nt(t):Nt(t,r)};const ri=z$;var B$=["colon","dependencies","extra","getValueFromEvent","getValueProps","hasFeedback","help","htmlFor","initialValue","noStyle","label","labelAlign","labelCol","name","preserve","normalize","required","rules","shouldUpdate","trigger","validateFirst","validateStatus","validateTrigger","valuePropName","wrapperCol","hidden","addonBefore","addonAfter"];function H$(e){var t={};return B$.forEach(function(r){e[r]!==void 0&&(t[r]=e[r])}),t}var W$="valueType request plain renderFormItem render text formItemProps valueEnum",U$="fieldProps isDefaultDom groupProps contentRender submitterProps submitter";function Sh(e){var t="".concat(W$," ").concat(U$).split(/[\s\n]+/),r={};return Object.keys(e||{}).forEach(function(n){t.includes(n)||(r[n]=e[n])}),r}function Y$(e){return He(e)!=="object"?!1:e===null?!0:!(Z.isValidElement(e)||e.constructor===RegExp||e instanceof Map||e instanceof Set||e instanceof HTMLElement||e instanceof Blob||e instanceof File||Array.isArray(e))}var G$=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=Object.keys(r).reduce(function(l,u){var c=r[u];return No(c)||(l[u]=c),l},{});if(Object.keys(a).length<1||typeof window>"u"||He(t)!=="object"||No(t)||t instanceof Blob)return t;var o=Array.isArray(t)?[]:{},s=function l(u,c){var d=Array.isArray(u),f=d?[]:{};return u==null||u===void 0?f:(Object.keys(u).forEach(function(v){var m=c?[c,v].flat(1):[v].flat(1),p=u[v],g=pn(a,m),y=function S(P){return Array.isArray(P)&&P.forEach(function(E,w){E&&(typeof E=="function"&&(p[w]=E(p,v,u)),He(E)==="object"&&!Array.isArray(E)&&Object.keys(E).forEach(function(F){if(typeof E[F]=="function"){var $=E[F](u[v][w][F],v,u);p[w][F]=He($)==="object"?$[F]:$}}),He(E)==="object"&&Array.isArray(E)&&S(E))}),v},b=function(){var P=typeof g=="function"?g==null?void 0:g(p,v,u):y(g);if(Array.isArray(P)){f=hn(f,P,p);return}He(P)==="object"&&!Array.isArray(o)?o=h(h({},o),P):He(P)==="object"&&Array.isArray(o)?f=h(h({},f),P):P&&(f=hn(f,[P],p))};if(g&&typeof g=="function"&&b(),!(typeof window>"u")){if(Y$(p)){var C=l(p,m);if(Object.keys(C).length<1)return;f=hn(f,[v],C);return}b()}}),n?f:u)};return o=Array.isArray(t)&&Array.isArray(o)?Ke(s(t)):Ju({},s(t),o),o};const q$=G$;function ai(e,t){var r=kt(e,t),n=U(r,2),a=n[0],o=n[1];return[a,o]}var xo=globalThis&&globalThis.__assign||function(){return xo=Object.assign||function(e){for(var t,r=1,n=arguments.length;r"u"||!window.URL)return{};var d=[];s.forEach(function(v,m){d.push({key:m,value:v})}),d=d.reduce(function(v,m){return(v[m.key]=v[m.key]||[]).push(m),v},{}),d=Object.keys(d).map(function(v){var m=d[v];return m.length===1?[v,m[0].value]:[v,m.map(function(p){var g=p.value;return g})]});var f=xo({},e);return d.forEach(function(v){var m=v[0],p=v[1];f[m]=J$(m,p,{},e)}),f},[t.disabled,e,s]);function u(d){if(!(typeof window>"u"||!window.URL)){var f=X$(d);window.location.search!==f.search&&window.history.replaceState({},"",f.toString()),s.toString()!==f.searchParams.toString()&&a({})}}i.useEffect(function(){t.disabled||typeof window>"u"||!window.URL||u(xo(xo({},e),l))},[t.disabled,l]);var c=function(d){u(d)};return i.useEffect(function(){if(t.disabled)return function(){};if(typeof window>"u"||!window.URL)return function(){};var d=function(){a({})};return window.addEventListener("popstate",d),function(){window.removeEventListener("popstate",d)}},[t.disabled]),[l,c]}var Q$={true:!0,false:!1};function J$(e,t,r,n){if(!r)return t;var a=r[e],o=t===void 0?n[e]:t;return a===Number?Number(o):a===Boolean||t==="true"||t==="false"?Q$[o]:Array.isArray(a)?a.find(function(s){return s==o})||n[e]:o}function Li(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Li=function(t){return typeof t}:Li=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Li(e)}var eD=function(){var t=new WeakSet;return function(r,n){if(Li(n)==="object"&&n!==null){if(t.has(n))return;t.add(n)}return n}},ya=function(t){return JSON.stringify(t,eD())},wh=Z.createContext({});const _l=wh;var tD=["children","Wrapper"],nD=["children","Wrapper"],Ph=i.createContext({grid:!1,colProps:void 0,rowProps:void 0}),rD=function(t){var r=t.grid,n=t.rowProps,a=t.colProps;return{grid:!!r,RowWrapper:function(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},l=s.children,u=s.Wrapper,c=ze(s,tD);return r?x.jsx(Hn,h(h(h({gutter:8},n),c),{},{children:l})):u?x.jsx(u,{children:l}):l},ColWrapper:function(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},l=s.children,u=s.Wrapper,c=ze(s,nD),d=i.useMemo(function(){var f=h(h({},a),c);return typeof f.span>"u"&&typeof f.xs>"u"&&(f.xs=24),f},[c]);return r?x.jsx(Zt,h(h({},d),{},{children:l})):u?x.jsx(u,{children:l}):l}}},Ua=function(t){var r=i.useMemo(function(){return He(t)==="object"?t:{grid:t}},[t]),n=i.useContext(Ph),a=n.grid,o=n.colProps;return i.useMemo(function(){return rD({grid:!!(a||r.grid),rowProps:r==null?void 0:r.rowProps,colProps:(r==null?void 0:r.colProps)||o,Wrapper:r==null?void 0:r.Wrapper})},[r==null?void 0:r.Wrapper,r.grid,a,JSON.stringify([o,r==null?void 0:r.colProps,r==null?void 0:r.rowProps])])},aD=["valueType","customLightMode","lightFilterLabelFormatter","valuePropName","ignoreWidth","defaultProps"],oD=["label","tooltip","placeholder","width","bordered","messageVariables","ignoreFormItem","transform","convertValue","readonly","allowClear","colSize","getFormItemProps","getFieldProps","filedConfig","cacheForSwr","proFieldProps"],$f={xs:104,s:216,sm:216,m:328,md:328,l:440,lg:440,xl:552},iD=["switch","radioButton","radio","rate"];function Eh(e,t){e.displayName="ProFormComponent";var r=function(o){var s=h(h({},o==null?void 0:o.filedConfig),t)||{},l=s.valueType,u=s.customLightMode,c=s.lightFilterLabelFormatter,d=s.valuePropName,f=d===void 0?"value":d,v=s.ignoreWidth,m=s.defaultProps,p=ze(s,aD),g=h(h({},m),o),y=g.label,b=g.tooltip,C=g.placeholder,S=g.width,P=g.bordered,E=g.messageVariables,w=g.ignoreFormItem,F=g.transform,$=g.convertValue,k=g.readonly,O=g.allowClear;g.colSize;var D=g.getFormItemProps,R=g.getFieldProps;g.filedConfig;var T=g.cacheForSwr,N=g.proFieldProps,M=ze(g,oD),I=l||M.valueType,L=i.useMemo(function(){return v||iD.includes(I)},[v,I]),j=i.useState(),_=U(j,2),K=_[1],z=i.useState(),A=U(z,2),V=A[0],X=A[1],H=Z.useContext(_l),Q=i.useMemo(function(){return{formItemProps:D==null?void 0:D(),fieldProps:R==null?void 0:R()}},[R,D,M.dependenciesValues,V]),Y=i.useMemo(function(){var pe=h(h(h(h({},w?Wn({value:M.value}):{}),{},{placeholder:C,disabled:o.disabled},H.fieldProps),Q.fieldProps),M.fieldProps);return pe.style=Wn(pe==null?void 0:pe.style),pe},[w,M.value,M.fieldProps,C,o.disabled,H.fieldProps,Q.fieldProps]),ae=H$(M),q=i.useMemo(function(){return h(h(h(h({},H.formItemProps),ae),Q.formItemProps),M.formItemProps)},[Q.formItemProps,H.formItemProps,M.formItemProps,ae]),ne=i.useMemo(function(){return h(h({messageVariables:E},p),q)},[p,q,E]);tn(!M.defaultValue,"请不要在 Form 中使用 defaultXXX。如果需要默认值请使用 initialValues 和 initialValue。");var ue=i.useContext(bg),G=ue.prefixName,te=i.useMemo(function(){var pe,Ce=ne==null?void 0:ne.name;Array.isArray(Ce)&&(Ce=Ce.join("_")),Array.isArray(G)&&Ce&&(Ce="".concat(G.join("."),".").concat(Ce));var Re=Ce&&"form-".concat((pe=H.formKey)!==null&&pe!==void 0?pe:"","-field-").concat(Ce);return Re},[ya(ne==null?void 0:ne.name),G,H.formKey]),ee=xh(M),le=i.useCallback(function(){var pe;D||R?X([]):M.renderFormItem&&K([]);for(var Ce=arguments.length,Re=new Array(Ce),Fe=0;Fe0?te.map(function(le,re){var ge=ee==null?void 0:ee[re],Ee=(ge==null?void 0:ge["data-item"])||{};return h(h({},Ee),le)}):[]},ue=function G(te){return te.map(function(ee){var le,re=ee.disabled,ge=ee.className,Ee=ee.optionType,me=ee[I],ce=ee[j],fe=(le=ee[K])!==null&&le!==void 0?le:[];return Ee==="optGroup"||ee.options?x.jsx(pD,{label:me,children:G(fe)},ce):i.createElement(mD,h(h({},ee),{},{value:ce,key:ce||(me==null?void 0:me.toString()),disabled:re,"data-item":ee,className:"".concat(ae,"-option ").concat(ge||""),label:me}),(n==null?void 0:n(ee))||me)})};return x.jsx($r,h(h({ref:H,className:q,allowClear:!0,autoClearSearchValue:u,disabled:P,mode:a,showSearch:D,searchValue:V,optionFilterProp:y,optionLabelProp:C,onClear:function(){k==null||k(),w(""),D&&X("")}},T),{},{onSearch:D?function(G){p&&w(G),o==null||o(G),X(G)}:void 0,onChange:function(te,ee){D&&u&&(V||w(""),o==null||o(""),X(""));for(var le=arguments.length,re=new Array(le>2?le-2:0),ge=2;geN?P([N,T]):T===void 0&&N===void 0&&P(void 0)}},$=function(R,T){var N=Ke(S||[]);N[R]=T===null?void 0:T,P(N)},k=(u==null?void 0:u.placeholder)||s,O=x.jsxs(kn.Group,{compact:!0,onBlur:F,children:[x.jsx(ea,h(h({},u),{},{placeholder:Array.isArray(k)?k[0]:k,id:y??"".concat(y,"-0"),style:{width:"calc((100% - ".concat(v,"px) / 2)")},value:S==null?void 0:S[0],defaultValue:p==null?void 0:p[0],onChange:function(R){return $(0,R)}})),x.jsx(kn,{style:{width:v,textAlign:"center",borderLeft:0,borderRight:0,pointerEvents:"none",backgroundColor:"#FFF"},placeholder:d,disabled:!0}),x.jsx(ea,h(h({},u),{},{placeholder:Array.isArray(k)?k[1]:k,id:y??"".concat(y,"-1"),style:{width:"calc((100% - ".concat(v,"px) / 2)"),borderLeft:0},value:S==null?void 0:S[1],defaultValue:p==null?void 0:p[1],onChange:function(R){return $(1,R)}}))]});return l?l(n,h({mode:a},u),O):O}return null};const zD=Z.forwardRef(VD);var BD=function(t){var r=t.text,n=t.mode,a=t.render,o=t.renderFormItem,s=t.format,l=t.fieldProps,u=Gt();if(n==="read"){var c=x.jsx(nn,{title:Nt(r).format((l==null?void 0:l.format)||s||"YYYY-MM-DD HH:mm:ss"),children:Nt(r).fromNow()});return a?a(r,h({mode:n},l),x.jsx(x.Fragment,{children:c})):x.jsx(x.Fragment,{children:c})}if(n==="edit"||n==="update"){var d=u.getMessage("tableForm.selectPlaceholder","请选择"),f=ri(l.value),v=x.jsx(na,h(h({placeholder:d,showTime:!0},l),{},{value:f}));return o?o(r,h({mode:n},l),v):v}return null};const HD=BD;var WD=Z.forwardRef(function(e,t){var r=e.text,n=e.mode,a=e.render,o=e.renderFormItem,s=e.fieldProps,l=e.placeholder,u=e.width;if(n==="read"){var c=x.jsx(px,h({ref:t,width:u||32,src:r},s));return a?a(r,h({mode:n},s),c):c}if(n==="edit"||n==="update"){var d=x.jsx(kn,h({ref:t,placeholder:l},s));return o?o(r,h({mode:n},s),d):d}return null});const kh=WD;var UD=function(t,r){var n,a=t.border,o=a===void 0?!1:a,s=t.children,l=i.useContext(pt.ConfigContext),u=l.getPrefixCls,c=u("pro-field-index-column");return x.jsx("div",{ref:r,className:ve(c,(n={},B(n,"".concat(c,"-border"),o),B(n,"top-three",s>3),n)),children:s})};const _f=Z.forwardRef(UD);var YD=["content","numberFormatOptions","numberPopoverRender"],GD=["text","mode","render","renderFormItem","fieldProps","proFieldKey","plain","valueEnum","placeholder","locale","customSymbol","numberFormatOptions","numberPopoverRender"],qD=new Intl.NumberFormat("zh-Hans-CN",{currency:"CNY",style:"currency"}),XD={style:"currency",currency:"USD"},ZD={style:"currency",currency:"RUB"},QD={style:"currency",currency:"RSD"},JD={style:"currency",currency:"MYR"},eO={style:"currency",currency:"BRL"},Lf={default:qD,"zh-Hans-CN":{currency:"CNY",style:"currency"},"en-US":XD,"ru-RU":ZD,"ms-MY":JD,"sr-RS":QD,"pt-BR":eO},jf=function(t,r,n,a){var o=r;return typeof o=="string"&&(o=Number(o)),!o&&o!==0?"":new Intl.NumberFormat(t||"zh-Hans-CN",h(h({},t===!1?{}:Lf[t||"zh-Hans-CN"]||Lf["zh-Hans-CN"]),{},{maximumFractionDigits:n},a)).format(o)},is=2,tO=Z.forwardRef(function(e,t){var r=e.content;e.numberFormatOptions,e.numberPopoverRender;var n=ze(e,YD),a=kt(function(){return n.defaultValue},{value:n.value,onChange:n.onChange}),o=U(a,2),s=o[0],l=o[1],u=r==null?void 0:r(h(h({},n),{},{value:s})),c={visible:u?n.visible:!1};return x.jsx(Oo,h(h({placement:"topLeft"},c),{},{trigger:["focus","click"],content:u,getPopupContainer:function(f){return(f==null?void 0:f.parentElement)||document.body},children:x.jsx(ea,h(h({ref:t},n),{},{value:s,onChange:l}))}))}),nO=function(t,r){var n,a,o=t.text,s=t.mode,l=t.render,u=t.renderFormItem,c=t.fieldProps;t.proFieldKey,t.plain,t.valueEnum;var d=t.placeholder,f=t.locale,v=f===void 0?(n=c.customSymbol)!==null&&n!==void 0?n:"zh-Hans-CN":f,m=t.customSymbol,p=m===void 0?c.customSymbol:m,g=t.numberFormatOptions,y=g===void 0?c==null?void 0:c.numberFormatOptions:g,b=t.numberPopoverRender,C=b===void 0?(c==null?void 0:c.numberPopoverRender)||!1:b,S=ze(t,GD),P=(a=c==null?void 0:c.precision)!==null&&a!==void 0?a:is,E=Gt();v&&Oa[v]&&(E=Oa[v]);var w=i.useMemo(function(){if(p)return p;var O=E.getMessage("moneySymbol","¥");if(!(S.moneySymbol===!1||c.moneySymbol===!1))return O},[p,c.moneySymbol,E,S.moneySymbol]);if(s==="read"){var F=x.jsx("span",{ref:r,children:jf(w?v:!1,o,P,y??c.numberFormatOptions)});return l?l(o,h({mode:s},c),F):F}if(s==="edit"||s==="update"){var $=function(D){var R=new RegExp("\\B(?=(\\d{".concat(3+Math.max(P-is,0),"})+(?!\\d))"),"g"),T=String(D).split("."),N=U(T,2),M=N[0],I=N[1],L=M.replace(R,","),j="";return I&&P>0&&(j=".".concat(I.slice(0,P===void 0?is:P))),"".concat(L).concat(j)},k=x.jsx(tO,h({content:function(D){if(C!==!1&&D.value){var R=jf(w?v:!1,"".concat($(D.value)),P,h(h({},y),{},{notation:"compact"}));return typeof C=="function"?C==null?void 0:C(D,R):R}},ref:r,precision:P,formatter:function(D){return D&&w?"".concat(w," ").concat($(D)):D==null?void 0:D.toString()},parser:function(D){return w&&D?D.replace(new RegExp("\\".concat(w,"\\s?|(,*)"),"g"),""):D},placeholder:d},rn(c,["numberFormatOptions","precision","numberPopoverRender","customSymbol","moneySymbol","visible"])));return u?u(o,h({mode:s},c),k):k}return null};const Rh=Z.forwardRef(nO);var Af=function(t){return t.map(function(r,n){return Z.isValidElement(r)?Z.cloneElement(r,h({key:n},r==null?void 0:r.props)):x.jsx(Z.Fragment,{children:r},n)})},rO=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.fieldProps,l=i.useContext(pt.ConfigContext),u=l.getPrefixCls,c=u("pro-field-option");if(i.useImperativeHandle(r,function(){return{}}),o){var d=o(n,h({mode:a},s),x.jsx(x.Fragment,{}));return!d||(d==null?void 0:d.length)<1||!Array.isArray(d)?null:x.jsx(Xt,{size:16,className:c,children:Af(d)})}return!n||!Array.isArray(n)?Z.isValidElement(n)?n:null:x.jsx(Xt,{size:16,className:c,children:Af(n)})};const aO=Z.forwardRef(rO);var oO=["text","mode","render","renderFormItem","fieldProps","proFieldKey"],iO=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps;t.proFieldKey;var u=ze(t,oO),c=Gt(),d=kt(function(){return u.visible||!1},{value:u.visible,onChange:u.onVisible}),f=U(d,2),v=f[0],m=f[1];if(a==="read"){var p=x.jsx(x.Fragment,{children:"-"});return n&&(p=x.jsxs(Xt,{children:[x.jsx("span",{ref:r,children:v?n:"* * * * *"}),x.jsx("a",{onClick:function(){return m(!v)},children:v?x.jsx(yv,{}):x.jsx(Cg,{})})]})),o?o(n,h({mode:a},l),p):p}if(a==="edit"||a==="update"){var g=x.jsx(kn.Password,h({placeholder:c.getMessage("tableForm.inputPlaceholder","请输入"),ref:r},l));return s?s(n,h({mode:a},l),g):g}return null};const lO=Z.forwardRef(iO);function sO(e){return e===0?null:e>0?"+":"-"}function uO(e){return e===0?"#595959":e>0?"#ff4d4f":"#52c41a"}function cO(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;return t>=0?e==null?void 0:e.toFixed(t):e}var dO=function(t,r){var n=t.text,a=t.prefix,o=t.precision,s=t.suffix,l=s===void 0?"%":s,u=t.mode,c=t.showColor,d=c===void 0?!1:c,f=t.render,v=t.renderFormItem,m=t.fieldProps,p=t.placeholder,g=t.showSymbol,y=i.useMemo(function(){return typeof n=="string"&&n.includes("%")?el(n.replace("%","")):el(n)},[n]),b=i.useMemo(function(){return typeof g=="function"?g==null?void 0:g(n):g},[g,n]);if(u==="read"){var C=d?{color:uO(y)}:{},S=x.jsxs("span",{style:C,ref:r,children:[a&&x.jsx("span",{children:a}),b&&x.jsxs(i.Fragment,{children:[sO(y)," "]}),cO(Math.abs(y),o),l&&l]});return f?f(n,h(h({mode:u},m),{},{prefix:a,precision:o,showSymbol:b,suffix:l}),S):S}if(u==="edit"||u==="update"){var P=x.jsx(ea,h({ref:r,formatter:function(w){return w&&a?"".concat(a," ").concat(w).replace(/\B(?=(\d{3})+(?!\d)$)/g,","):w},parser:function(w){return w?w.replace(/.*\s|,/g,""):""},placeholder:p},m));return v?v(n,h({mode:u},m),P):P}return null};const Mh=Z.forwardRef(dO);function fO(e){return e===100?"success":e<0?"exception":e<100?"active":"normal"}var vO=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.plain,l=t.renderFormItem,u=t.fieldProps,c=t.placeholder,d=i.useMemo(function(){return typeof n=="string"&&n.includes("%")?el(n.replace("%","")):el(n)},[n]);if(a==="read"){var f=x.jsx(Rv,h({ref:r,size:"small",style:{minWidth:100,maxWidth:320},percent:d,steps:s?10:void 0,status:fO(d)},u));return o?o(d,h({mode:a},u),f):f}if(a==="edit"||a==="update"){var v=x.jsx(ea,h({ref:r,placeholder:c},u));return l?l(n,h({mode:a},u),v):v}return null};const Th=Z.forwardRef(vO);var mO=["radioType","renderFormItem","mode","render"],pO=function(t,r){var n=t.radioType,a=t.renderFormItem,o=t.mode,s=t.render,l=ze(t,mO),u=i.useContext(pt.ConfigContext),c=u.getPrefixCls,d=c("pro-field-radio"),f=ii(l),v=U(f,3),m=v[0],p=v[1],g=v[2],y=i.useRef();if(i.useImperativeHandle(r,function(){return h(h({},y.current||{}),{},{fetchData:function(){return g()}})}),m)return x.jsx(Fr,{size:"small"});if(o==="read"){var b=p!=null&&p.length?p==null?void 0:p.reduce(function(w,F){var $;return h(h({},w),{},B({},($=F.value)!==null&&$!==void 0?$:"",F.label))},{}):void 0,C=x.jsx(x.Fragment,{children:oi(l.text,Or(l.valueEnum||b))});return s?s(l.text,h({mode:o},l.fieldProps),C)||null:C}if(o==="edit"){var S,P=n==="button"?fo.Button:fo,E=x.jsx(fo.Group,h(h({ref:y},l.fieldProps),{},{className:ve((S=l.fieldProps)===null||S===void 0?void 0:S.className,"".concat(d,"-").concat(l.fieldProps.layout||"horizontal")),options:void 0,children:p==null?void 0:p.map(function(w){return x.jsx(P,h(h({},w),{},{children:w.label}),w.value)})}));return a?a(l.text,h({mode:o},l.fieldProps),E)||null:E}return null};const Kf=Z.forwardRef(pO);var hO=function(t,r){var n=t.text,a=t.mode,o=t.format,s=t.render,l=t.renderFormItem,u=t.plain,c=t.showTime,d=t.fieldProps,f=Gt(),v=Array.isArray(n)?n:[],m=U(v,2),p=m[0],g=m[1],y=i.useCallback(function(w){if(typeof(d==null?void 0:d.format)=="function"){var F;return d==null||(F=d.format)===null||F===void 0?void 0:F.call(d,w)}return(d==null?void 0:d.format)||o||"YYYY-MM-DD"},[d,o]),b=p?Nt(p).format(y(Nt(p))):"",C=g?Nt(g).format(y(Nt(g))):"";if(a==="read"){var S=x.jsxs("div",{ref:r,children:[x.jsx("div",{children:b||"-"}),x.jsx("div",{children:C||"-"})]});return s?s(n,h({mode:a},d),x.jsx("span",{children:S})):S}if(a==="edit"||a==="update"){var P=ri(d.value),E=x.jsx(na.RangePicker,h(h({ref:r,format:o,showTime:c,placeholder:[f.getMessage("tableForm.selectPlaceholder","请选择"),f.getMessage("tableForm.selectPlaceholder","请选择")],bordered:u===void 0?!0:!u},d),{},{value:P}));return l?l(n,h({mode:a},d),E):E}return null};const Vf=Z.forwardRef(hO);var gO=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps;if(a==="read"){var u=x.jsx(Ac,h(h({allowHalf:!0,disabled:!0,ref:r},l),{},{value:n}));return o?o(n,h({mode:a},l),x.jsx(x.Fragment,{children:u})):u}if(a==="edit"||a==="update"){var c=x.jsx(Ac,h({allowHalf:!0,ref:r},l));return s?s(n,h({mode:a},l),c):c}return null};const yO=Z.forwardRef(gO);function bO(e){var t="",r=Math.floor(e/86400),n=Math.floor(e/3600),a=Math.floor(e/60%60),o=Math.floor(e%60);return t="".concat(o,"秒"),a>0&&(t="".concat(a,"分钟").concat(t)),n>0&&(t="".concat(n,"小时").concat(t)),r>0&&(t="".concat(r,"天").concat(t)),t}var CO=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps,u=t.placeholder;if(a==="read"){var c=bO(Number(n)),d=x.jsx("span",{ref:r,children:c});return o?o(n,h({mode:a},l),d):d}if(a==="edit"||a==="update"){var f=x.jsx(ea,h({ref:r,min:0,style:{width:"100%"},placeholder:u},l));return s?s(n,h({mode:a},l),f):f}return null};const xO=Z.forwardRef(CO);var SO=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps;if(a==="read"){var u=n;return o?o(n,h({mode:a},l),x.jsx(x.Fragment,{children:u})):x.jsx(x.Fragment,{children:u})}if(a==="edit"||a==="update"){var c=x.jsx(wg,h({ref:r},l));return s?s(n,h({mode:a},l),c):c}return null};const wO=Z.forwardRef(SO);var PO=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps,u=Gt(),c=i.useMemo(function(){var v,m;return n==null||"".concat(n).length<1?"-":n?(v=l==null?void 0:l.checkedChildren)!==null&&v!==void 0?v:u.getMessage("switch.open","打开"):(m=l==null?void 0:l.unCheckedChildren)!==null&&m!==void 0?m:u.getMessage("switch.close","关闭")},[l==null?void 0:l.checkedChildren,l==null?void 0:l.unCheckedChildren,n]);if(a==="read")return o?o(n,h({mode:a},l),x.jsx(x.Fragment,{children:c})):c??"-";if(a==="edit"||a==="update"){var d,f=x.jsx(Rg,h(h({ref:r},rn(l,["value"])),{},{checked:(d=l==null?void 0:l.checked)!==null&&d!==void 0?d:l==null?void 0:l.value}));return s?s(n,h({mode:a},l),f):f}return null};const EO=Z.forwardRef(PO);var kO=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps,u=t.emptyText,c=u===void 0?"-":u,d=l||{},f=d.autoFocus,v=d.prefix,m=v===void 0?"":v,p=d.suffix,g=p===void 0?"":p,y=Gt(),b=i.useRef();if(i.useImperativeHandle(r,function(){return b.current}),i.useEffect(function(){if(f){var w;(w=b.current)===null||w===void 0||w.focus()}},[f]),a==="read"){var C=x.jsxs(x.Fragment,{children:[m,n??c,g]});if(o){var S;return(S=o(n,h({mode:a},l),C))!==null&&S!==void 0?S:c}return C}if(a==="edit"||a==="update"){var P=y.getMessage("tableForm.inputPlaceholder","请输入"),E=x.jsx(kn,h({ref:b,placeholder:P,allowClear:!0},l));return s?s(n,h({mode:a},l),E):E}return null};const RO=Z.forwardRef(kO);var MO=function(t,r){var n=t.text,a=t.mode,o=t.render,s=t.renderFormItem,l=t.fieldProps,u=Gt();if(a==="read"){var c=x.jsx("span",{ref:r,children:n??"-"});return o?o(n,h({mode:a},l),c):c}if(a==="edit"||a==="update"){var d=x.jsx(kn.TextArea,h({ref:r,rows:3,onKeyPress:function(v){v.key==="Enter"&&v.stopPropagation()},placeholder:u.getMessage("tableForm.inputPlaceholder","请输入")},l));return s?s(n,h({mode:a},l),d):d}return null};const TO=Z.forwardRef(MO);var FO=function(t,r){var n=t.text,a=t.mode,o=t.light,s=t.label,l=t.format,u=t.render,c=t.renderFormItem,d=t.plain,f=t.fieldProps,v=t.lightLabel,m=t.labelTrigger,p=i.useState(!1),g=U(p,2),y=g[0],b=g[1],C=i.useContext(pt.SizeContext),S=i.useContext(pt.ConfigContext),P=S.getPrefixCls,E=P("pro-field-date-picker"),w=(f==null?void 0:f.format)||l||"HH:mm:ss",F=Nt.isMoment(n)||typeof n=="number";if(a==="read"){var $=x.jsx("span",{ref:r,children:n?Nt(n,F?void 0:w).format(w):"-"});return u?u(n,h({mode:a},f),x.jsx("span",{children:$})):$}if(a==="edit"||a==="update"){var k,O=f.disabled,D=f.onChange,R=f.placeholder,T=f.allowClear,N=f.value,M=ri(N,w);if(o){var I=M&&M.format(w)||"";k=x.jsxs("div",{className:"".concat(E,"-light"),onClick:function(j){var _,K,z,A=v==null||(_=v.current)===null||_===void 0||(K=_.labelRef)===null||K===void 0||(z=K.current)===null||z===void 0?void 0:z.contains(j.target);b(A?!y:!0)},children:[x.jsx(cp,h(h({value:M,format:l,ref:r},f),{},{onChange:function(j){D==null||D(j),setTimeout(function(){b(!1)},0)},onOpenChange:function(j){m||b(j)},open:y})),x.jsx(sa,{label:s,disabled:O,placeholder:R,size:C,value:I,allowClear:T,onClear:function(){return D==null?void 0:D(null)},expanded:y,ref:v})]})}else k=x.jsx(na.TimePicker,h(h({ref:r,format:l,bordered:d===void 0?!0:!d},f),{},{value:M}));return c?c(n,h({mode:a},f),k):k}return null},NO=function(t){var r=t.text,n=t.mode,a=t.format,o=t.render,s=t.renderFormItem,l=t.plain,u=t.fieldProps,c=(u==null?void 0:u.format)||a||"HH:mm:ss",d=Array.isArray(r)?r:[],f=U(d,2),v=f[0],m=f[1],p=Nt.isMoment(v)||typeof v=="number",g=Nt.isMoment(m)||typeof m=="number",y=v?Nt(v,p?void 0:c).format(c):"",b=m?Nt(m,g?void 0:c).format(c):"";if(n==="read"){var C=x.jsxs("div",{children:[x.jsx("div",{children:y||"-"}),x.jsx("div",{children:b||"-"})]});return o?o(r,h({mode:n},u),x.jsx("span",{children:C})):C}if(n==="edit"||n==="update"){var S=u.value,P=ri(S,c),E=x.jsx(cp.RangePicker,h(h({format:a,bordered:l===void 0?!0:!l},u),{},{value:P}));return s?s(r,h({mode:n},u),E):E}return null};const $O=Z.forwardRef(FO);var DO=["radioType","renderFormItem","mode","light","label","render"],OO=["onSearch","onClear","onChange","onBlur","showSearch","autoClearSearchValue","treeData","searchValue"],IO=function(t,r){t.radioType;var n=t.renderFormItem,a=t.mode,o=t.light,s=t.label,l=t.render,u=ze(t,DO),c=i.useContext(pt.ConfigContext),d=c.getPrefixCls,f=d("pro-field-tree-select"),v=i.useRef(null),m=i.useState(!1),p=U(m,2),g=p[0],y=p[1],b=u.fieldProps||{},C=b.onSearch,S=b.onClear,P=b.onChange,E=b.onBlur,w=b.showSearch,F=b.autoClearSearchValue;b.treeData;var $=b.searchValue,k=ze(b,OO),O=i.useContext(pt.SizeContext),D=ii(h(h({},u),{},{defaultKeyWords:$})),R=U(D,3),T=R[0],N=R[1],M=R[2],I=kt("",{onChange:C,value:$}),L=U(I,2),j=L[0],_=L[1];i.useImperativeHandle(r,function(){return h(h({},v.current||{}),{},{fetchData:function(){return M()}})});var K=i.useMemo(function(){if(a==="read"){var q=(k==null?void 0:k.fieldNames)||{},ne=q.value,ue=ne===void 0?"value":ne,G=q.label,te=G===void 0?"label":G,ee=q.children,le=ee===void 0?"children":ee,re=new Map,ge=function Ee(me){if(!(me!=null&&me.length))return re;for(var ce=me.length,fe=0;fe0?x.jsx("div",{className:"".concat(u,"-action"),children:A}):null,X={name:E.name,field:p,index:g,record:y==null||(r=y.getFieldValue)===null||r===void 0?void 0:r.call(y,[w.listName,E.name,p.name].filter(function(q){return q!==void 0}).flat(1)),fields:v,operation:c,meta:m},H=Ua(),Q=H.grid,Y=(o==null?void 0:o(j,X))||j,ae=(s==null?void 0:s({listDom:x.jsx("div",{className:"".concat(u,"-container"),style:{width:Q?"100%":void 0},children:Y}),action:V},X))||x.jsxs("div",{className:"".concat(u,"-item ").concat(l?"".concat(u,"-item-show-label"):""),style:{display:"flex",alignItems:"flex-end"},children:[x.jsx("div",{className:"".concat(u,"-container"),style:{width:Q?"100%":void 0},children:Y}),V]});return x.jsx($o.Provider,{value:h(h({},p),{},{listName:[w.listName,b,p.name].filter(function(q){return q!==void 0}).flat(1)}),children:ae})},GO=function(t){var r=Gt(),n=t.creatorButtonProps,a=t.prefixCls,o=t.children,s=t.creatorRecord,l=t.action,u=t.fields,c=t.actionGuard,d=t.max,f=t.fieldExtraRender,v=t.meta,m=t.containerClassName,p=t.containerStyle,g=t.onAfterAdd,y=t.onAfterRemove,b=i.useRef(new Map),C=i.useState(!1),S=U(C,2),P=S[0],E=S[1],w=i.useMemo(function(){return u.map(function(O){var D,R;if(!(!((D=b.current)===null||D===void 0)&&D.has(O.key.toString()))){var T;(T=b.current)===null||T===void 0||T.set(O.key.toString(),ec())}var N=(R=b.current)===null||R===void 0?void 0:R.get(O.key.toString());return h(h({},O),{},{uuid:N})})},[u]),F=i.useMemo(function(){var O=h({},l),D=w.length;return c!=null&&c.beforeAddRow?O.add=xt(Ve().mark(function R(){var T,N,M,I,L,j=arguments;return Ve().wrap(function(K){for(;;)switch(K.prev=K.next){case 0:for(T=j.length,N=new Array(T),M=0;M0?x.jsx("div",{style:{display:"none"},children:H}):null]},[o,M,_,w]),A=U(z,2),V=A[0],X=A[1];return x.jsx(N,{children:x.jsxs("div",{className:ve(I,B({},"".concat(I,"-twoLine"),c==="twoLine")),style:u,ref:t,children:[X,(f||v||E)&&x.jsx("div",{className:"".concat(I,"-title"),style:C,onClick:function(){O(!k)},children:E?x.jsxs("div",{style:{display:"flex",width:"100%",alignItems:"center",justifyContent:"space-between"},children:[K,x.jsx("span",{onClick:function(Q){return Q.stopPropagation()},children:E})]}):K}),s&&k?null:V]})})});$h.displayName="ProForm-Group";const vI=$h;var nl={exports:{}};nl.exports;(function(e,t){var r=200,n="__lodash_hash_undefined__",a=800,o=16,s=9007199254740991,l="[object Arguments]",u="[object Array]",c="[object AsyncFunction]",d="[object Boolean]",f="[object Date]",v="[object Error]",m="[object Function]",p="[object GeneratorFunction]",g="[object Map]",y="[object Number]",b="[object Null]",C="[object Object]",S="[object Proxy]",P="[object RegExp]",E="[object Set]",w="[object String]",F="[object Undefined]",$="[object WeakMap]",k="[object ArrayBuffer]",O="[object DataView]",D="[object Float32Array]",R="[object Float64Array]",T="[object Int8Array]",N="[object Int16Array]",M="[object Int32Array]",I="[object Uint8Array]",L="[object Uint8ClampedArray]",j="[object Uint16Array]",_="[object Uint32Array]",K=/[\\^$.*+?()[\]{}|]/g,z=/^\[object .+?Constructor\]$/,A=/^(?:0|[1-9]\d*)$/,V={};V[D]=V[R]=V[T]=V[N]=V[M]=V[I]=V[L]=V[j]=V[_]=!0,V[l]=V[u]=V[k]=V[d]=V[O]=V[f]=V[v]=V[m]=V[g]=V[y]=V[C]=V[P]=V[E]=V[w]=V[$]=!1;var X=typeof hi=="object"&&hi&&hi.Object===Object&&hi,H=typeof self=="object"&&self&&self.Object===Object&&self,Q=X||H||Function("return this")(),Y=t&&!t.nodeType&&t,ae=Y&&!0&&e&&!e.nodeType&&e,q=ae&&ae.exports===Y,ne=q&&X.process,ue=function(){try{var W=ae&&ae.require&&ae.require("util").types;return W||ne&&ne.binding&&ne.binding("util")}catch{}}(),G=ue&&ue.isTypedArray;function te(W,oe,he){switch(he.length){case 0:return W.call(oe);case 1:return W.call(oe,he[0]);case 2:return W.call(oe,he[0],he[1]);case 3:return W.call(oe,he[0],he[1],he[2])}return W.apply(oe,he)}function ee(W,oe){for(var he=-1,qe=Array(W);++he-1}function $t(W,oe){var he=this.__data__,qe=st(he,W);return qe<0?(++this.size,he.push([W,oe])):he[qe][1]=oe,this}$e.prototype.clear=xe,$e.prototype.delete=Je,$e.prototype.get=dt,$e.prototype.has=ut,$e.prototype.set=$t;function Dt(W){var oe=-1,he=W==null?0:W.length;for(this.clear();++oe1?he[Pt-1]:void 0,Lt=Pt>2?he[2]:void 0;for(Mt=W.length>3&&typeof Mt=="function"?(Pt--,Mt):void 0,Lt&&Xa(he[0],he[1],Lt)&&(Mt=Pt<3?void 0:Mt,Pt=1),oe=Object(oe);++qe-1&&W%1==0&&W0){if(++oe>=a)return arguments[0]}else oe=0;return W.apply(void 0,arguments)}}function gr(W){if(W!=null){try{return ie.call(W)}catch{}try{return W+""}catch{}}return""}function Tn(W,oe){return W===oe||W!==W&&oe!==oe}var fa=qt(function(){return arguments}())?qt:function(W){return yr(W)&&se.call(W,"callee")&&!ct.call(W,"callee")},Qa=Array.isArray;function zr(W){return W!=null&&ui(W.length)&&!Br(W)}function li(W){return yr(W)&&zr(W)}var si=mt||mi;function Br(W){if(!Fn(W))return!1;var oe=It(W);return oe==m||oe==p||oe==c||oe==S}function ui(W){return typeof W=="number"&&W>-1&&W%1==0&&W<=s}function Fn(W){var oe=typeof W;return W!=null&&(oe=="object"||oe=="function")}function yr(W){return W!=null&&typeof W=="object"}function jl(W){if(!yr(W)||It(W)!=C)return!1;var oe=et(W);if(oe===null)return!0;var he=se.call(oe,"constructor")&&oe.constructor;return typeof he=="function"&&he instanceof he&&ie.call(he)==Re}var va=G?le(G):cr;function Al(W){return Zn(W,ci(W))}function ci(W){return zr(W)?De(W,!0):Xn(W)}var di=jr(function(W,oe,he){ua(W,oe,he)});function fi(W){return function(){return W}}function vi(W){return W}function mi(){return!1}e.exports=di})(nl,nl.exports);var mI=nl.exports;const Dh=ja(mI);var pI=["children","trigger","onVisibleChange","drawerProps","onFinish","submitTimeout","title","width","visible"];function hI(e){var t,r,n,a,o=e.children,s=e.trigger,l=e.onVisibleChange,u=e.drawerProps,c=e.onFinish,d=e.submitTimeout,f=e.title,v=e.width,m=e.visible,p=ze(e,pI);tn(!p.footer||!(u!=null&&u.footer),"DrawerForm 是一个 ProForm 的特殊布局,如果想自定义按钮,请使用 submit.render 自定义。");var g=i.useContext(pt.ConfigContext),y=i.useState([]),b=U(y,2),C=b[1],S=i.useState(!1),P=U(S,2),E=P[0],w=P[1],F=kt(!!m,{value:m,onChange:l}),$=U(F,2),k=$[0],O=$[1],D=i.useRef(null),R=i.useCallback(function(_){D.current===null&&_&&C([]),D.current=_},[]),T=i.useRef(),N=i.useCallback(function(){var _,K,z,A=(_=(K=(z=p.formRef)===null||z===void 0?void 0:z.current)!==null&&K!==void 0?K:p.form)!==null&&_!==void 0?_:T.current;A&&(u!=null&&u.destroyOnClose)&&A.resetFields()},[u==null?void 0:u.destroyOnClose,p.form,p.formRef]);i.useEffect(function(){k&&m&&(l==null||l(!0))},[m,k]);var M=i.useMemo(function(){return s?Z.cloneElement(s,h(h({key:"trigger"},s.props),{},{onClick:function(){var _=xt(Ve().mark(function z(A){var V,X;return Ve().wrap(function(Q){for(;;)switch(Q.prev=Q.next){case 0:O(!k),(V=s.props)===null||V===void 0||(X=V.onClick)===null||X===void 0||X.call(V,A);case 2:case"end":return Q.stop()}},z)}));function K(z){return _.apply(this,arguments)}return K}()})):null},[O,s,k]),I=i.useMemo(function(){var _,K,z,A,V,X;return p.submitter===!1?!1:Dh({searchConfig:{submitText:(_=(K=g.locale)===null||K===void 0||(z=K.Modal)===null||z===void 0?void 0:z.okText)!==null&&_!==void 0?_:"确认",resetText:(A=(V=g.locale)===null||V===void 0||(X=V.Modal)===null||X===void 0?void 0:X.cancelText)!==null&&A!==void 0?A:"取消"},resetButtonProps:{preventDefault:!0,disabled:d?E:void 0,onClick:function(Q){var Y;O(!1),N(),u==null||(Y=u.onClose)===null||Y===void 0||Y.call(u,Q)}}},p.submitter)},[p.submitter,(t=g.locale)===null||t===void 0||(r=t.Modal)===null||r===void 0?void 0:r.okText,(n=g.locale)===null||n===void 0||(a=n.Modal)===null||a===void 0?void 0:a.cancelText,d,E,O,N,u]),L=i.useCallback(function(_,K){return x.jsxs(x.Fragment,{children:[_,D.current&&K?mv.createPortal(K,D.current):K]})},[]),j=Qr(function(){var _=xt(Ve().mark(function K(z){var A,V,X;return Ve().wrap(function(Q){for(;;)switch(Q.prev=Q.next){case 0:return A=c==null?void 0:c(z),d&&A instanceof Promise&&(w(!0),V=setTimeout(function(){return w(!1)},d),A.finally(function(){clearTimeout(V),w(!1)})),Q.next=4,A;case 4:return X=Q.sent,X&&O(!1),Q.abrupt("return",X);case 7:case"end":return Q.stop()}},K)}));return function(K){return _.apply(this,arguments)}}());return x.jsxs(x.Fragment,{children:[x.jsx(Mg,h(h({title:f,width:v||800},u),{},{visible:k,onClose:function(K){var z;d&&E||(N(),O(!1),u==null||(z=u.onClose)===null||z===void 0||z.call(u,K))},afterVisibleChange:function(K){var z;K||N(),u==null||(z=u.afterVisibleChange)===null||z===void 0||z.call(u,K)},footer:p.submitter!==!1&&x.jsx("div",{ref:R,style:{display:"flex",justifyContent:"flex-end"}}),children:x.jsx(x.Fragment,{children:x.jsx(Ya,h(h({formComponentType:"DrawerForm",layout:"vertical",formRef:T},p),{},{submitter:I,onFinish:function(){var _=xt(Ve().mark(function z(A){var V;return Ve().wrap(function(H){for(;;)switch(H.prev=H.next){case 0:return H.next=2,j(A);case 2:return V=H.sent,V===!0&&N(),H.abrupt("return",V);case 5:case"end":return H.stop()}},z)}));function K(z){return _.apply(this,arguments)}return K}(),contentRender:L,children:o}))})})),M]})}var gI=["size","collapse","collapseLabel","initialValues","onValuesChange","form","placement","formRef","bordered","ignoreRules","footerRender"],yI=function(t){var r=t.items,n=t.prefixCls,a=t.size,o=a===void 0?"middle":a,s=t.collapse,l=t.collapseLabel,u=t.onValuesChange,c=t.bordered,d=t.values,f=t.footerRender,v=t.placement,m=Gt(),p="".concat(n,"-light-filter"),g=i.useState(!1),y=U(g,2),b=y[0],C=y[1],S=i.useState(function(){return h({},d)}),P=U(S,2),E=P[0],w=P[1];i.useEffect(function(){w(h({},d))},[d]);var F=i.useMemo(function(){var D=[],R=[];return r.forEach(function(T){var N=T.props||{},M=N.secondary;M||s?D.push(T):R.push(T)}),{collapseItems:D,outsideItems:R}},[t.items]),$=F.collapseItems,k=F.outsideItems,O=function(){return l||(s?x.jsx(U0,{className:"".concat(p,"-collapse-icon")}):x.jsx(sa,{size:o,label:m.getMessage("form.lightFilter.more","更多筛选"),expanded:b}))};return x.jsx("div",{className:ve(p,"".concat(p,"-").concat(o),B({},"".concat(p,"-effective"),Object.keys(d).some(function(D){return d[D]}))),children:x.jsxs("div",{className:"".concat(p,"-container"),children:[k.map(function(D,R){var T=D.key,N=D.props.fieldProps,M=N!=null&&N.placement?N==null?void 0:N.placement:v;return x.jsx("div",{className:"".concat(p,"-item"),children:Z.cloneElement(D,{fieldProps:h(h({},D.props.fieldProps),{},{placement:M}),proFieldProps:{light:!0,label:D.props.label,bordered:c},bordered:c})},T||R)}),$.length?x.jsx("div",{className:"".concat(p,"-item"),children:x.jsx(yh,{padding:24,onVisibleChange:C,visible:b,placement:v,label:O(),footerRender:f,footer:{onConfirm:function(){u(h({},E)),C(!1)},onClear:function(){var R={};$.forEach(function(T){var N=T.props.name;R[N]=void 0}),u(R)}},children:$.map(function(D){var R=D.key,T=D.props,N=T.name,M=T.fieldProps,I=h(h({},M),{},{onChange:function(_){return w(h(h({},E),{},B({},N,_!=null&&_.target?_.target.value:_))),!1}});E.hasOwnProperty(N)&&(I[D.props.valuePropName||"value"]=E[N]);var L=M!=null&&M.placement?M==null?void 0:M.placement:v;return x.jsx("div",{className:"".concat(p,"-line"),children:Z.cloneElement(D,{fieldProps:h(h({},I),{},{placement:L})})},R)})})},"more"):null]})})};function bI(e){var t=e.size,r=e.collapse,n=e.collapseLabel,a=e.initialValues,o=e.onValuesChange,s=e.form,l=e.placement,u=e.formRef,c=e.bordered;e.ignoreRules;var d=e.footerRender,f=ze(e,gI),v=i.useContext(pt.ConfigContext),m=v.getPrefixCls,p=m("pro-form"),g=i.useState(function(){return h({},a)}),y=U(g,2),b=y[0],C=y[1],S=i.useRef();return i.useImperativeHandle(u,function(){return S.current}),x.jsx(Ya,h(h({size:t,initialValues:a,form:s,contentRender:function(E){return x.jsx(yI,{prefixCls:p,items:E.flatMap(function(w){return(w==null?void 0:w.type.displayName)==="ProForm-Group"?w.props.children:w}),size:t,bordered:c,collapse:r,collapseLabel:n,placement:l,values:b||{},footerRender:d,onValuesChange:function(F){var $,k,O=h(h({},b),F);C(O),($=S.current)===null||$===void 0||$.setFieldsValue(O),(k=S.current)===null||k===void 0||k.submit(),o&&o(F,O)}})},formRef:S,formItemProps:{colon:!1,labelAlign:"left"},fieldProps:{style:{width:void 0}}},rn(f,["labelWidth"])),{},{onValuesChange:function(E,w){var F;C(w),o==null||o(E,w),(F=S.current)===null||F===void 0||F.submit()}}))}var CI=["children","trigger","onVisibleChange","modalProps","onFinish","submitTimeout","title","width","visible"];function xI(e){var t,r,n,a,o=e.children,s=e.trigger,l=e.onVisibleChange,u=e.modalProps,c=e.onFinish,d=e.submitTimeout,f=e.title,v=e.width,m=e.visible,p=ze(e,CI);tn(!p.footer||!(u!=null&&u.footer),"ModalForm 是一个 ProForm 的特殊布局,如果想自定义按钮,请使用 submit.render 自定义。");var g=i.useContext(pt.ConfigContext),y=i.useState([]),b=U(y,2),C=b[1],S=i.useState(!1),P=U(S,2),E=P[0],w=P[1],F=kt(!!m,{value:m,onChange:l}),$=U(F,2),k=$[0],O=$[1],D=i.useRef(null),R=i.useCallback(function(_){D.current===null&&_&&C([]),D.current=_},[]),T=i.useRef(),N=i.useCallback(function(){var _,K,z,A=(_=(K=p.form)!==null&&K!==void 0?K:(z=p.formRef)===null||z===void 0?void 0:z.current)!==null&&_!==void 0?_:T.current;A&&(u!=null&&u.destroyOnClose)&&A.resetFields()},[u==null?void 0:u.destroyOnClose,p.form,p.formRef]);i.useEffect(function(){k&&m&&(l==null||l(!0))},[m,k]);var M=i.useMemo(function(){return s?Z.cloneElement(s,h(h({key:"trigger"},s.props),{},{onClick:function(){var _=xt(Ve().mark(function z(A){var V,X;return Ve().wrap(function(Q){for(;;)switch(Q.prev=Q.next){case 0:O(!k),(V=s.props)===null||V===void 0||(X=V.onClick)===null||X===void 0||X.call(V,A);case 2:case"end":return Q.stop()}},z)}));function K(z){return _.apply(this,arguments)}return K}()})):null},[O,s,k]),I=i.useMemo(function(){var _,K,z,A,V,X,H,Q;return p.submitter===!1?!1:Dh({searchConfig:{submitText:(_=(K=u==null?void 0:u.okText)!==null&&K!==void 0?K:(z=g.locale)===null||z===void 0||(A=z.Modal)===null||A===void 0?void 0:A.okText)!==null&&_!==void 0?_:"确认",resetText:(V=(X=u==null?void 0:u.cancelText)!==null&&X!==void 0?X:(H=g.locale)===null||H===void 0||(Q=H.Modal)===null||Q===void 0?void 0:Q.cancelText)!==null&&V!==void 0?V:"取消"},resetButtonProps:{preventDefault:!0,disabled:d?E:void 0,onClick:function(ae){var q;O(!1),N(),u==null||(q=u.onCancel)===null||q===void 0||q.call(u,ae)}}},p.submitter)},[(t=g.locale)===null||t===void 0||(r=t.Modal)===null||r===void 0?void 0:r.cancelText,(n=g.locale)===null||n===void 0||(a=n.Modal)===null||a===void 0?void 0:a.okText,u,p.submitter,O,E,d,N]),L=i.useCallback(function(_,K){return x.jsxs(x.Fragment,{children:[_,D.current&&K?mv.createPortal(K,D.current):K]})},[]),j=i.useCallback(function(){var _=xt(Ve().mark(function K(z){var A,V,X;return Ve().wrap(function(Q){for(;;)switch(Q.prev=Q.next){case 0:return A=c==null?void 0:c(z),d&&A instanceof Promise&&(w(!0),V=setTimeout(function(){return w(!1)},d),A.finally(function(){clearTimeout(V),w(!1)})),Q.next=4,A;case 4:return X=Q.sent,X&&O(!1),Q.abrupt("return",X);case 7:case"end":return Q.stop()}},K)}));return function(K){return _.apply(this,arguments)}}(),[c,O,d]);return x.jsxs(x.Fragment,{children:[x.jsx(Ag,h(h({title:f,width:v||800},u),{},{visible:k,onCancel:function(K){var z;d&&E||(O(!1),u==null||(z=u.onCancel)===null||z===void 0||z.call(u,K))},afterClose:function(){var K;N(),u==null||(K=u.afterClose)===null||K===void 0||K.call(u)},footer:p.submitter!==!1&&x.jsx("div",{ref:R,style:{display:"flex",justifyContent:"flex-end"}}),children:x.jsx(Ya,h(h({formComponentType:"ModalForm",layout:"vertical",formRef:T},p),{},{submitter:I,onFinish:function(){var _=xt(Ve().mark(function z(A){var V;return Ve().wrap(function(H){for(;;)switch(H.prev=H.next){case 0:return H.next=2,j(A);case 2:return V=H.sent,V===!0&&N(),H.abrupt("return",V);case 5:case"end":return H.stop()}},z)}));function K(z){return _.apply(this,arguments)}return K}(),contentRender:L,children:o}))})),M]})}var SI=function(t,r,n,a){return t?x.jsxs(x.Fragment,{children:[n.getMessage("tableForm.collapsed","展开"),a&&"(".concat(a,")"),x.jsx(So,{style:{marginLeft:"0.5em",transition:"0.3s all",transform:"rotate(".concat(t?0:.5,"turn)")}})]}):x.jsxs(x.Fragment,{children:[n.getMessage("tableForm.expand","收起"),x.jsx(So,{style:{marginLeft:"0.5em",transition:"0.3s all",transform:"rotate(".concat(t?0:.5,"turn)")}})]})},wI=function(t){var r=t.setCollapsed,n=t.collapsed,a=n===void 0?!1:n,o=t.submitter,s=t.style,l=t.hiddenNum,u=i.useContext(pt.ConfigContext),c=u.getPrefixCls,d=Gt(),f=K$(t.collapseRender)||SI;return x.jsxs(Xt,{style:s,size:16,children:[o,t.collapseRender!==!1&&x.jsx("a",{className:c("pro-form-collapse-button"),onClick:function(){return r(!a)},children:f==null?void 0:f(a,t,d,l)})]})};const PI=wI;var EI=["collapsed","layout","defaultCollapsed","defaultColsNumber","span","searchGutter","searchText","resetText","optionRender","collapseRender","onReset","onCollapse","labelWidth","style","split","preserve","ignoreRules","showHiddenNum"],ss,us,kI={xs:513,sm:513,md:785,lg:992,xl:1057,xxl:1/0},Bf={vertical:[[513,1,"vertical"],[785,2,"vertical"],[1057,3,"vertical"],[1/0,4,"vertical"]],default:[[513,1,"vertical"],[701,2,"vertical"],[1062,3,"horizontal"],[1352,3,"horizontal"],[1/0,4,"horizontal"]]},RI=function(t,r,n){if(n&&typeof n=="number")return{span:n,layout:t};var a=n?["xs","sm","md","lg","xl","xxl"].map(function(s){return[kI[s],24/n[s],"horizontal"]}):Bf[t||"default"],o=(a||Bf.default).find(function(s){return rp-1)&&!!T&&C>=24;S+=1;var A=Z.isValidElement(R)&&(R.key||"".concat((L=R.props)===null||L===void 0?void 0:L.name))||T;return Z.isValidElement(R)&&z?t.preserve?{itemDom:Z.cloneElement(R,{hidden:!0,key:A||T}),hidden:!0,colSpan:_}:{itemDom:null,colSpan:0,hidden:!0}:{itemDom:R,colSpan:_,hidden:!1}}),$=F.map(function(R,T){var N,M,I=R.itemDom,L=R.colSpan,j=I==null||(N=I.props)===null||N===void 0?void 0:N.hidden;if(j)return I;var _=Z.isValidElement(I)&&(I.key||"".concat((M=I.props)===null||M===void 0?void 0:M.name))||T;24-w%2417&&R(L.width)},children:x.jsx(Ya,h(h({isKeyPressSubmit:!0,preserve:C},w),{},{className:ve($,w.className),onReset:f,style:g,layout:T.layout,fieldProps:{style:{width:"100%"}},formItemProps:M,groupProps:{titleStyle:{display:"inline-block",marginRight:16}},contentRender:function(L,j,_){return x.jsx(TI,{spanSize:T,collapsed:t,form:_,collapseRender:d,defaultCollapsed:a,onCollapse:v,optionRender:c,submitter:j,items:L,split:y,resetText:e.resetText,searchText:e.searchText,searchGutter:u,preserve:C,ignoreRules:S,showLength:N,showHiddenNum:E})}}))},"resize-observer")}var $I=["onFinish","step","formRef","title","stepProps"];function DI(e){var t=i.useRef(),r=i.useContext(Oh),n=e.onFinish,a=e.step,o=e.formRef;e.title,e.stepProps;var s=ze(e,$I);return tn(!s.submitter,"StepForm 不包含提交按钮,请在 StepsForm 上"),i.useImperativeHandle(o,function(){return t.current}),i.useEffect(function(){if(e.name||e.step){var l=(e.name||e.step).toString();return r==null||r.regForm(l,e),function(){r==null||r.unRegForm(l)}}},[]),r&&(r!=null&&r.formArrayRef)&&(r.formArrayRef.current[a||0]=t),x.jsx(Ya,h({formRef:t,onFinish:function(){var l=xt(Ve().mark(function c(d){var f;return Ve().wrap(function(m){for(;;)switch(m.prev=m.next){case 0:if(s.name&&(r==null||r.onFormFinish(s.name,d)),!n){m.next=9;break}return r==null||r.setLoading(!0),m.next=5,n==null?void 0:n(d);case 5:return f=m.sent,f&&(r==null||r.next()),r==null||r.setLoading(!1),m.abrupt("return");case 9:r!=null&&r.lastStep||r==null||r.next();case 10:case"end":return m.stop()}},c)}));function u(c){return l.apply(this,arguments)}return u}(),layout:"vertical"},s))}var OI=["current","onCurrentChange","submitter","stepsFormRender","stepsRender","stepFormRender","stepsProps","onFinish","formProps","containerStyle","formRef","formMapRef"],Oh=Z.createContext(void 0),II={horizontal:function(t){var r=t.stepsDom,n=t.formDom;return x.jsxs(x.Fragment,{children:[x.jsx(Hn,{gutter:{xs:8,sm:16,md:24},children:x.jsx(Zt,{span:24,children:r})}),x.jsx(Hn,{gutter:{xs:8,sm:16,md:24},children:x.jsx(Zt,{span:24,children:n})})]})},vertical:function(t){var r=t.stepsDom,n=t.formDom;return x.jsxs(Hn,{align:"stretch",wrap:!0,gutter:{xs:8,sm:16,md:24},children:[x.jsx(Zt,{xxl:4,xl:6,lg:7,md:8,sm:10,xs:12,children:Z.cloneElement(r,{style:{height:"100%"}})}),x.jsx(Zt,{children:x.jsx("div",{style:{display:"flex",alignItems:"center",width:"100%",height:"100%"},children:n})})]})}};function _I(e){var t=i.useContext(pt.ConfigContext),r=t.getPrefixCls,n=r("pro-steps-form");e.current,e.onCurrentChange;var a=e.submitter,o=e.stepsFormRender,s=e.stepsRender,l=e.stepFormRender,u=e.stepsProps,c=e.onFinish,d=e.formProps,f=e.containerStyle,v=e.formRef,m=e.formMapRef,p=ze(e,OI),g=i.useRef(new Map),y=i.useRef(new Map),b=i.useRef([]),C=i.useState([]),S=U(C,2),P=S[0],E=S[1],w=i.useState(!1),F=U(w,2),$=F[0],k=F[1],O=Gt(),D=kt(0,{value:e.current,onChange:e.onCurrentChange}),R=U(D,2),T=R[0],N=R[1],M=i.useMemo(function(){return II[(u==null?void 0:u.direction)||"horizontal"]},[u==null?void 0:u.direction]),I=i.useMemo(function(){return T===P.length-1},[P.length,T]),L=i.useCallback(function(G,te){y.current.has(G)||E(function(ee){return[].concat(Ke(ee),[G])}),y.current.set(G,te)},[]),j=i.useCallback(function(G){E(function(te){return te.filter(function(ee){return ee!==G})}),y.current.delete(G),g.current.delete(G)},[]);i.useImperativeHandle(m,function(){return b.current}),i.useImperativeHandle(v,function(){var G;return(G=b.current[T||0])===null||G===void 0?void 0:G.current},[T]);var _=i.useCallback(function(){var G=xt(Ve().mark(function te(ee,le){var re,ge;return Ve().wrap(function(me){for(;;)switch(me.prev=me.next){case 0:if(g.current.set(ee,le),!(!I||!c)){me.next=3;break}return me.abrupt("return");case 3:return k(!0),re=Ju.apply(void 0,[{}].concat(Ke(Array.from(g.current.values())))),me.prev=5,me.next=8,c(re);case 8:ge=me.sent,ge&&(N(0),b.current.forEach(function(ce){var fe;return(fe=ce.current)===null||fe===void 0?void 0:fe.resetFields()})),me.next=15;break;case 12:me.prev=12,me.t0=me.catch(5),console.log(me.t0);case 15:return me.prev=15,k(!1),me.finish(15);case 18:case"end":return me.stop()}},te,null,[[5,12,15,18]])}));return function(te,ee){return G.apply(this,arguments)}}(),[I,c,k,N]),K=i.useMemo(function(){return x.jsx("div",{className:"".concat(n,"-steps-container"),style:{maxWidth:Math.min(P.length*320,1160)},children:x.jsx(Vc,h(h({},u),{},{current:T,onChange:void 0,children:P.map(function(G){var te=y.current.get(G);return x.jsx(Vc.Step,h({title:te==null?void 0:te.title},te==null?void 0:te.stepProps),G)})}))})},[P,n,T,u]),z=Qr(function(){var G,te=b.current[T];(G=te.current)===null||G===void 0||G.submit()}),A=Qr(function(){T<1||N(T-1)}),V=i.useMemo(function(){return a!==!1&&x.jsx(_n,h(h({type:"primary",loading:$},a==null?void 0:a.submitButtonProps),{},{onClick:function(){var te;a==null||(te=a.onSubmit)===null||te===void 0||te.call(a),z()},children:O.getMessage("stepsForm.next","下一步")}),"next")},[O,$,z,a]),X=i.useMemo(function(){return a!==!1&&x.jsx(_n,h(h({},a==null?void 0:a.resetButtonProps),{},{onClick:function(){var te;A(),a==null||(te=a.onReset)===null||te===void 0||te.call(a)},children:O.getMessage("stepsForm.prev","上一步")}),"pre")},[O,A,a]),H=i.useMemo(function(){return a!==!1&&x.jsx(_n,h(h({type:"primary",loading:$},a==null?void 0:a.submitButtonProps),{},{onClick:function(){var te;a==null||(te=a.onSubmit)===null||te===void 0||te.call(a),z()},children:O.getMessage("stepsForm.submit","提交")}),"submit")},[O,$,z,a]),Q=Qr(function(){T>P.length-2||N(T+1)}),Y=i.useMemo(function(){var G=[],te=T||0;if(te<1?G.push(V):te+1===P.length?G.push(X,H):G.push(X,V),G=G.filter(Z.isValidElement),a&&a.render){var ee,le={form:(ee=b.current[T])===null||ee===void 0?void 0:ee.current,onSubmit:z,step:T,onPre:A};return a.render(le,G)}return a&&(a==null?void 0:a.render)===!1?null:G},[P.length,V,z,X,A,T,H,a]),ae=i.useMemo(function(){return Rn(e.children).map(function(G,te){var ee=G.props,le=ee.name||"".concat(te),re=T===te,ge=re?{contentRender:l,submitter:!1}:{};return x.jsx("div",{className:ve("".concat(n,"-step"),B({},"".concat(n,"-step-active"),re)),children:Z.cloneElement(G,h(h(h(h({},ge),d),ee),{},{name:le,step:te,key:le}))},le)})},[d,n,e.children,T,l]),q=i.useMemo(function(){return s?s(P.map(function(G){var te;return{key:G,title:(te=y.current.get(G))===null||te===void 0?void 0:te.title}}),K):K},[P,K,s]),ne=i.useMemo(function(){return x.jsxs("div",{className:"".concat(n,"-container"),style:f,children:[ae,o?null:x.jsx(Xt,{children:Y})]})},[f,ae,n,o,Y]),ue=i.useMemo(function(){var G={stepsDom:q,formDom:ne};return o?o(M(G),Y):M(G)},[q,ne,M,o,Y]);return x.jsx("div",{className:n,children:x.jsx(zt.Provider,h(h({},p),{},{children:x.jsx(Oh.Provider,{value:{loading:$,setLoading:k,regForm:L,keyArray:P,next:Q,formArrayRef:b,formMapRef:y,lastStep:I,unRegForm:j,onFormFinish:_},children:ue})}))})}function Ll(e){return x.jsx(gh,{children:x.jsx(_I,h({},e))})}Ll.StepForm=DI;Ll.useForm=zt.useForm;var LI=function(t){var r=t.children;return x.jsx(x.Fragment,{children:r})};const jI=LI;var AI=["steps","columns","forceUpdate","grid"],KI=function(t){var r=t.steps,n=t.columns,a=t.forceUpdate,o=t.grid,s=ze(t,AI),l=Qu(s),u=i.useCallback(function(d){var f,v;(f=(v=l.current).onCurrentChange)===null||f===void 0||f.call(v,d),a([])},[a,l]),c=i.useMemo(function(){return r==null?void 0:r.map(function(d,f){return i.createElement(Ih,h(h({grid:o},d),{},{key:f,layoutType:"StepForm",columns:n[f]}))})},[n,o,r]);return x.jsx(Ll,h(h({},s),{},{onCurrentChange:u,children:c}))};const VI=KI;var zI=function(t,r){var n=r.genItems;if(t.valueType==="dependency"){var a,o,s,l=(a=t.getFieldProps)===null||a===void 0?void 0:a.call(t);return tn(Array.isArray((o=t.name)!==null&&o!==void 0?o:l==null?void 0:l.name),'SchemaForm: fieldProps.name should be NamePath[] when valueType is "dependency"'),tn(typeof t.columns=="function",'SchemaForm: columns should be a function when valueType is "dependency"'),Array.isArray((s=t.name)!==null&&s!==void 0?s:l==null?void 0:l.name)?i.createElement(tc,h(h({name:t.name},l),{},{key:t.key}),function(u){return!t.columns||typeof t.columns!="function"?null:n(t.columns(u))}):null}return!0},BI=function(t){if(t.valueType==="divider"){var r;return i.createElement(Cv,h(h({},(r=t.getFieldProps)===null||r===void 0?void 0:r.call(t)),{},{key:t.key}))}return!0},HI=function(t,r){var n=r.action,a=r.formRef,o=r.type,s=r.originItem,l=h(h({},rn(t,["dataIndex","width","render","renderFormItem","renderText","title"])),{},{name:t.dataIndex,width:t.width,render:t!=null&&t.render?function(f,v,m){var p,g,y;return t==null||(p=t.render)===null||p===void 0?void 0:p.call(t,f,v,m,n==null?void 0:n.current,h(h({type:o},t),{},{formItemProps:(g=t.getFormItemProps)===null||g===void 0?void 0:g.call(t),fieldProps:(y=t.getFieldProps)===null||y===void 0?void 0:y.call(t)}))}:void 0}),u=function(){return x.jsx(tl,h(h({},l),{},{ignoreFormItem:!0}))},c=t!=null&&t.renderFormItem?function(f,v){var m,p,g,y=Wn(h(h({},v),{},{onChange:void 0}));return t==null||(m=t.renderFormItem)===null||m===void 0?void 0:m.call(t,h(h({type:o},t),{},{formItemProps:(p=t.getFormItemProps)===null||p===void 0?void 0:p.call(t),fieldProps:(g=t.getFieldProps)===null||g===void 0?void 0:g.call(t),originProps:s}),h(h({},y),{},{defaultRender:u,type:o}),a.current)}:void 0;if(t!=null&&t.renderFormItem){var d=c==null?void 0:c(null,{});if(!d||t.ignoreFormItem)return d}return i.createElement(tl,h(h({},l),{},{key:"".concat(t.key,"-").concat(t.index),renderFormItem:c}))},WI=function(t,r){var n=r.genItems;if(t.valueType==="formList"&&t.dataIndex){var a,o,s,l,u,c,d,f,v,m,p;return!t.columns||!Array.isArray(t.columns)?null:x.jsx(XO,h(h({name:t.dataIndex,label:t.label,initialValue:t.initialValue,colProps:t.colProps,rowProps:t.rowProps},(a=t.getFieldProps)===null||a===void 0?void 0:a.call(t)),{},{isValidateList:(o=((u=t.getFormItemProps)===null||u===void 0?void 0:u.call(t))||((c=t.getFieldProps)===null||c===void 0?void 0:c.call(t)))===null||o===void 0||(s=o.rules)===null||s===void 0||(l=s[0])===null||l===void 0?void 0:l.required,emptyListMessage:(d=((m=t.getFormItemProps)===null||m===void 0?void 0:m.call(t))||((p=t.getFieldProps)===null||p===void 0?void 0:p.call(t)))===null||d===void 0||(f=d.rules)===null||f===void 0||(v=f[0])===null||v===void 0?void 0:v.message,children:n(t.columns)}),t.key)}return!0},UI=function(t,r){var n=r.genItems;if(t.valueType==="formSet"&&t.dataIndex){var a,o;return!t.columns||!Array.isArray(t.columns)?null:i.createElement(iI,h(h({},(a=t.getFormItemProps)===null||a===void 0?void 0:a.call(t)),{},{key:t.key,initialValue:t.initialValue,name:t.dataIndex,label:t.label,colProps:t.colProps,rowProps:t.rowProps},(o=t.getFieldProps)===null||o===void 0?void 0:o.call(t)),n(t.columns))}return!0},YI=function(t,r){var n=r.genItems;if(t.valueType==="group"){var a;return!t.columns||!Array.isArray(t.columns)?null:x.jsx(o_,h(h({label:t.label,colProps:t.colProps,rowProps:t.rowProps},(a=t.getFieldProps)===null||a===void 0?void 0:a.call(t)),{},{children:n(t.columns)}),t.key)}return!0},GI=function(t){return t.valueType&&typeof t.valueType=="string"&&["index","indexBorder","option"].includes(t==null?void 0:t.valueType)?null:!0},Hf=[GI,YI,WI,UI,BI,zI],qI=function(t,r){for(var n=0;n0&&arguments[0]!==void 0?arguments[0]:[],z=Wf(K);if(!z)throw new Error("nameList is require");var A=(_=D())===null||_===void 0?void 0:_.getFieldValue(z),V=z?hn({},z,A):A;return pn(a(V,g,z),z)},getFieldFormatValueObject:function(_){var K,z=Wf(_),A=(K=D())===null||K===void 0?void 0:K.getFieldValue(z),V=z?hn({},z,A):A;return a(V,g,z)},validateFieldsReturnFormatValue:function(){var j=xt(Ve().mark(function K(z){var A,V,X;return Ve().wrap(function(Q){for(;;)switch(Q.prev=Q.next){case 0:if(!(!Array.isArray(z)&&z)){Q.next=2;break}throw new Error("nameList must be array");case 2:return Q.next=4,(A=D())===null||A===void 0?void 0:A.validateFields(z);case 4:return V=Q.sent,X=a(V,g),Q.abrupt("return",X||{});case 7:case"end":return Q.stop()}},K)}));function _(K){return j.apply(this,arguments)}return _}(),formRef:$}},[g,a]),T=i.useMemo(function(){return Z.Children.toArray(t).map(function(j,_){return _===0&&Z.isValidElement(j)&&b?Z.cloneElement(j,h(h({},j.props),{},{autoFocus:b})):j})},[b,t]),N=i.useMemo(function(){return typeof n=="boolean"||!n?{}:n},[n]);i.useImperativeHandle(o,function(){return h(h({},w),R)},[R,w]);var M=i.useMemo(function(){if(n!==!1)return x.jsx(JI,h(h({},N),{},{onReset:function(){var _,K,z=a((_=$.current)===null||_===void 0?void 0:_.getFieldsValue(),g);if(N==null||(K=N.onReset)===null||K===void 0||K.call(N,z),m==null||m(z),f){var A,V=Object.keys(a((A=$.current)===null||A===void 0?void 0:A.getFieldsValue(),!1)).reduce(function(X,H){return h(h({},X),{},B({},H,z[H]||void 0))},d);v(su(f,V,"set"))}},submitButtonProps:h({loading:u},N.submitButtonProps)}),"submitter")},[n,N,u,a,g,m,f,d,v]),I=i.useMemo(function(){var j=C?x.jsx(O,{children:T}):T;return r?r(j,M,$.current):j},[C,O,T,r,M]),L=xh(e.initialValues);return i.useEffect(function(){if(!(f||!e.initialValues||!L||E.request)){var j=Mr(e.initialValues,L);tn(j,"initialValues 只在 form 初始化时生效,如果你需要异步加载推荐使用 request,或者 initialValues ? : null "),tn(j,"The initialValues only take effect when the form is initialized, if you need to load asynchronously recommended request, or the initialValues ? : null ")}},[e.initialValues]),i.useEffect(function(){var j,_,K=a((j=$.current)===null||j===void 0||(_=j.getFieldsValue)===null||_===void 0?void 0:_.call(j,!0),g);s==null||s(K,$.current)},[]),x.jsx(Zu.Provider,{value:R,children:x.jsx(pt.SizeContext.Provider,{value:E.size||F,children:x.jsxs(Ph.Provider,{value:{grid:C,colProps:P},children:[E.component!==!1&&x.jsx("input",{type:"text",style:{display:"none"}}),I]})})})}var Uf=0;function Ya(e){var t=e.extraUrlParams,r=t===void 0?{}:t,n=e.syncToUrl,a=e.isKeyPressSubmit,o=e.syncToUrlAsImportant,s=o===void 0?!1:o,l=e.syncToInitialValues,u=l===void 0?!0:l;e.children,e.contentRender,e.submitter;var c=e.fieldProps,d=e.formItemProps,f=e.groupProps,v=e.dateFormatter,m=v===void 0?"string":v,p=e.formRef;e.onInit;var g=e.form,y=e.formComponentType;e.onReset,e.grid,e.rowProps,e.colProps;var b=e.omitNil,C=b===void 0?!0:b,S=e.request,P=e.params,E=e.initialValues,w=e.formKey,F=w===void 0?Uf:w;e.readonly;var $=ze(e,t_),k=i.useRef({}),O=ai(!1),D=U(O,2),R=D[0],T=D[1],N=Z$({},{disabled:!n}),M=U(N,2),I=M[0],L=M[1],j=i.useRef(ec());i.useEffect(function(){Uf+=0},[]);var _=I$({request:S,params:P,proFieldKey:F}),K=U(_,1),z=K[0],A=i.useState(function(){return n?su(n,I,"get"):{}}),V=U(A,2),X=V[0],H=V[1],Q=i.useRef({}),Y=i.useRef({}),ae=i.useCallback(function(ue,G,te){return q$(P$(ue,m,Y.current,G,te),Q.current,G)},[m]);i.useEffect(function(){u||H({})},[u]),i.useEffect(function(){n&&L(h(h({},I),r))},[r,n]);var q=i.useMemo(function(){if(!(typeof window>"u")&&y&&["DrawerForm"].includes(y))return function(ue){return ue.parentNode||document.body}},[y]),ne=Qr(xt(Ve().mark(function ue(){var G,te,ee,le,re,ge;return Ve().wrap(function(me){for(;;)switch(me.prev=me.next){case 0:if($.onFinish){me.next=2;break}return me.abrupt("return");case 2:if(!R){me.next=4;break}return me.abrupt("return");case 4:return T(!0),me.prev=5,ee=k==null||(G=k.current)===null||G===void 0||(te=G.getFieldsFormatValue)===null||te===void 0?void 0:te.call(G),me.next=9,$.onFinish(ee);case 9:n&&(ge=Object.keys(k==null||(le=k.current)===null||le===void 0||(re=le.getFieldsFormatValue)===null||re===void 0?void 0:re.call(le,void 0,!1)).reduce(function(ce,fe){var ie;return h(h({},ce),{},B({},fe,(ie=ee[fe])!==null&&ie!==void 0?ie:void 0))},r),Object.keys(I).forEach(function(ce){ge[ce]!==!1&&ge[ce]!==0&&!ge[ce]&&(ge[ce]=void 0)}),L(su(n,ge,"set"))),T(!1),me.next=16;break;case 13:me.prev=13,me.t0=me.catch(5),T(!1);case 16:case"end":return me.stop()}},ue,null,[[5,13]])})));return i.useImperativeHandle(p,function(){return k.current},[!z]),!z&&e.request?x.jsx("div",{style:{paddingTop:50,paddingBottom:50,textAlign:"center"},children:x.jsx(Fr,{})}):x.jsx(Fh.Provider,{value:{mode:e.readonly?"read":"edit"},children:x.jsx(gh,{children:x.jsx(_l.Provider,{value:{formRef:k,fieldProps:c,formItemProps:d,groupProps:f,formComponentType:y,getPopupContainer:q,formKey:j.current,setFieldValueType:function(G,te){var ee=te.valueType,le=ee===void 0?"text":ee,re=te.dateFormat,ge=te.transform;Array.isArray(G)&&(Q.current=hn(Q.current,G,ge),Y.current=hn(Y.current,G,{valueType:le,dateFormat:re}))}},children:x.jsx(zt,h(h({onKeyPress:function(G){if(a&&G.key==="Enter"){var te;(te=k.current)===null||te===void 0||te.submit()}},autoComplete:"off",form:g},rn($,["autoFocusFirstInput"])),{},{initialValues:s?h(h(h({},z),E),X):h(h(h({},X),z),E),onValuesChange:function(G,te){var ee;$==null||(ee=$.onValuesChange)===null||ee===void 0||ee.call($,ae(G,!!C),ae(te,!!C))},onFinish:ne,children:x.jsx(n_,h(h({transformKey:ae,autoComplete:"off",loading:R,onUrlSearchChange:L},e),{},{formRef:k,initialValues:h(h({},E),z)}))}))})})})}var r_=["label","size","disabled","onChange","className","style","children","valuePropName","placeholder","labelFormatter","bordered","footerRender","allowClear","otherFieldProps","valueType","placement"],a_=function(t){var r,n=t.label,a=t.size,o=t.disabled,s=t.onChange,l=t.className,u=t.style,c=t.children,d=t.valuePropName,f=t.placeholder,v=t.labelFormatter,m=t.bordered,p=t.footerRender,g=t.allowClear,y=t.otherFieldProps,b=t.valueType,C=t.placement,S=ze(t,r_),P=i.useContext(pt.ConfigContext),E=P.getPrefixCls,w=E("pro-field-light-wrapper"),F=i.useState(t[d]),$=U(F,2),k=$[0],O=$[1],D=ai(!1),R=U(D,2),T=R[0],N=R[1],M=function(){for(var _,K=arguments.length,z=new Array(K),A=0;A");return a}return{Provider:r,useContainer:n}}function w_(){var e,t,r,n,a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o=i.useRef(),s=i.useRef(null),l=i.useRef(),u=i.useRef(),c=i.useState(""),d=U(c,2),f=d[0],v=d[1],m=i.useRef([]),p=kt(function(){return a.size||a.defaultSize||"middle"},{value:a.size,onChange:a.onSizeChange}),g=U(p,2),y=g[0],b=g[1],C=i.useMemo(function(){var k,O={};return(k=a.columns)===null||k===void 0||k.forEach(function(D,R){var T=D.key,N=D.dataIndex,M=D.fixed,I=D.disable,L=Ga(T??N,R);L&&(O[L]={show:!0,fixed:M,disable:I})}),O},[a.columns]),S=kt(function(){var k,O,D=a.columnsState||{},R=D.persistenceType,T=D.persistenceKey;if(T&&R&&typeof window<"u"){var N=window[R];try{var M=N==null?void 0:N.getItem(T);if(M)return JSON.parse(M)}catch(I){console.warn(I)}}return a.columnsStateMap||((k=a.columnsState)===null||k===void 0?void 0:k.value)||((O=a.columnsState)===null||O===void 0?void 0:O.defaultValue)||C},{value:((e=a.columnsState)===null||e===void 0?void 0:e.value)||a.columnsStateMap,onChange:((t=a.columnsState)===null||t===void 0?void 0:t.onChange)||a.onColumnsStateChange}),P=U(S,2),E=P[0],w=P[1];i.useLayoutEffect(function(){var k=a.columnsState||{},O=k.persistenceType,D=k.persistenceKey;if(D&&O&&typeof window<"u"){var R=window[O];try{var T=R==null?void 0:R.getItem(D);w(T?JSON.parse(T):C)}catch(N){console.warn(N)}}},[a.columnsState,C,w]),tn(!a.columnsStateMap,"columnsStateMap已经废弃,请使用 columnsState.value 替换"),tn(!a.columnsStateMap,"columnsStateMap has been discarded, please use columnSstate.value replacement");var F=i.useCallback(function(){var k=a.columnsState||{},O=k.persistenceType,D=k.persistenceKey;if(!(!D||!O||typeof window>"u")){var R=window[O];try{R==null||R.removeItem(D)}catch(T){console.error(T)}}},[a.columnsState]);i.useEffect(function(){var k,O;if(!(!(!((k=a.columnsState)===null||k===void 0)&&k.persistenceKey)||!(!((O=a.columnsState)===null||O===void 0)&&O.persistenceType))&&!(typeof window>"u")){var D=a.columnsState,R=D.persistenceType,T=D.persistenceKey,N=window[R];try{N==null||N.setItem(T,JSON.stringify(E))}catch(M){console.error(M)}}},[(r=a.columnsState)===null||r===void 0?void 0:r.persistenceKey,E,(n=a.columnsState)===null||n===void 0?void 0:n.persistenceType]);var $={action:o.current,setAction:function(O){o.current=O},sortKeyColumns:m.current,setSortKeyColumns:function(O){m.current=O},propsRef:u,columnsMap:E,keyWords:f,setKeyWords:function(O){return v(O)},setTableSize:b,tableSize:y,prefixName:l.current,setPrefixName:function(O){l.current=O},setColumnsMap:w,columns:a.columns,rootDomRef:s,clearPersistenceStorage:F};return Object.defineProperty($,"prefixName",{get:function(){return l.current}}),Object.defineProperty($,"sortKeyColumns",{get:function(){return m.current}}),Object.defineProperty($,"action",{get:function(){return o.current}}),$}var P_=S_(w_);const Ir=P_;var E_=["key","dataIndex","children"],cs=function(t){var r=t.title,n=t.show,a=t.children,o=t.columnKey,s=t.fixed,l=Ir.useContainer(),u=l.columnsMap,c=l.setColumnsMap;return n?x.jsx(nn,{title:r,children:x.jsx("span",{onClick:function(f){f.stopPropagation(),f.preventDefault();var v=u[o]||{},m=typeof v.disable=="boolean"&&v.disable;if(!m){var p=h(h({},u),{},B({},o,h(h({},v),{},{fixed:s})));c(p)}},children:a})}):null},k_=function(t){var r=t.columnKey,n=t.isLeaf,a=t.title,o=t.className,s=t.fixed,l=qn(),u=x.jsxs("span",{className:"".concat(o,"-list-item-option"),children:[x.jsx(cs,{columnKey:r,fixed:"left",title:l.getMessage("tableToolBar.leftPin","固定在列首"),show:s!=="left",children:x.jsx(sy,{})}),x.jsx(cs,{columnKey:r,fixed:void 0,title:l.getMessage("tableToolBar.noPin","不固定"),show:!!s,children:x.jsx(ry,{})}),x.jsx(cs,{columnKey:r,fixed:"right",title:l.getMessage("tableToolBar.rightPin","固定在列尾"),show:s!=="right",children:x.jsx(Q1,{})})]});return x.jsxs("span",{className:"".concat(o,"-list-item"),children:[x.jsx("div",{className:"".concat(o,"-list-item-title"),children:a}),n?null:u]},r)},ds=function(t){var r,n,a=t.list,o=t.draggable,s=t.checkable,l=t.className,u=t.showTitle,c=u===void 0?!0:u,d=t.title,f=t.listHeight,v=f===void 0?280:f,m=Ir.useContainer(),p=m.columnsMap,g=m.setColumnsMap,y=m.sortKeyColumns,b=m.setSortKeyColumns,C=a&&a.length>0,S=i.useMemo(function(){if(!C)return{};var F=[],$=function k(O,D){return O.map(function(R){var T,N=R.key;R.dataIndex;var M=R.children,I=ze(R,E_),L=Ga(N,I.index),j=p[L||"null"]||{show:!0};j.show!==!1&&(D==null?void 0:D.show)!==!1&&!M&&F.push(L);var _=h(h({key:L},rn(I,["className"])),{},{selectable:!1,disabled:j.disable===!0,disableCheckbox:typeof j.disable=="boolean"?j.disable:(T=j.disable)===null||T===void 0?void 0:T.checkbox,isLeaf:D?!0:void 0});return M&&(_.children=k(M,j)),_})};return{list:$(a),keys:F}},[p,a,C]),P=Jt(function(F,$,k){var O=h({},p),D=Ke(y),R=D.findIndex(function(I){return I===F}),T=D.findIndex(function(I){return I===$}),N=k>T;if(!(R<0)){var M=D[R];D.splice(R,1),k===0?D.unshift(M):D.splice(N?T:T+1,0,M),D.forEach(function(I,L){O[I]=h(h({},O[I]||{}),{},{order:L})}),g(O),b(D)}}),E=Jt(function(F){var $=F.node.key,k=h({},p[$]);k.show=F.checked,g(h(h({},p),{},B({},$,k)))});if(!C)return null;var w=x.jsx(ep,{itemHeight:24,draggable:o&&!!(!((r=S.list)===null||r===void 0)&&r.length)&&((n=S.list)===null||n===void 0?void 0:n.length)>1,checkable:s,onDrop:function($){var k=$.node.key,O=$.dragNode.key,D=$.dropPosition,R=$.dropToGap,T=D===-1||!R?D+1:D;P(O,k,T)},blockNode:!0,onCheck:function($,k){return E(k)},checkedKeys:S.keys,showLine:!1,titleRender:function($){var k=h(h({},$),{},{children:void 0});return x.jsx(k_,h(h({className:l},k),{},{title:Ra(k.title,k),columnKey:k.key}))},height:v,treeData:S.list});return x.jsxs(x.Fragment,{children:[c&&x.jsx("span",{className:"".concat(l,"-list-title"),children:d}),w]})},R_=function(t){var r=t.localColumns,n=t.className,a=t.draggable,o=t.checkable,s=t.listsHeight,l=[],u=[],c=[],d=qn();r.forEach(function(m){if(!m.hideInSetting){var p=m.fixed;if(p==="left"){u.push(m);return}if(p==="right"){l.push(m);return}c.push(m)}});var f=l&&l.length>0,v=u&&u.length>0;return x.jsxs("div",{className:ve("".concat(n,"-list"),B({},"".concat(n,"-list-group"),f||v)),children:[x.jsx(ds,{title:d.getMessage("tableToolBar.leftFixedTitle","固定在左侧"),list:u,draggable:a,checkable:o,className:n,listHeight:s}),x.jsx(ds,{list:c,draggable:a,checkable:o,title:d.getMessage("tableToolBar.noFixedTitle","不固定"),showTitle:v||f,className:n,listHeight:s}),x.jsx(ds,{title:d.getMessage("tableToolBar.rightFixedTitle","固定在右侧"),list:l,draggable:a,checkable:o,className:n,listHeight:s})]})};function M_(e){var t,r,n=i.useRef({}),a=Ir.useContainer(),o=e.columns,s=e.checkedReset,l=s===void 0?!0:s,u=a.columnsMap,c=a.setColumnsMap,d=a.clearPersistenceStorage;i.useEffect(function(){var P,E;if(!((P=a.propsRef.current)===null||P===void 0||(E=P.columnsState)===null||E===void 0)&&E.value){var w,F;n.current=JSON.parse(JSON.stringify(((w=a.propsRef.current)===null||w===void 0||(F=w.columnsState)===null||F===void 0?void 0:F.value)||{}))}},[]);var f=Jt(function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,E={},w=function F($){$.forEach(function(k){var O=k.key,D=k.fixed,R=k.index,T=k.children,N=Ga(O,R);N&&(E[N]={show:P,fixed:D}),T&&F(T)})};w(o),c(E)}),v=Jt(function(P){P.target.checked?f():f(!1)}),m=Jt(function(){d==null||d(),c(n.current)}),p=Object.values(u).filter(function(P){return!P||P.show===!1}),g=p.length>0&&p.length!==o.length,y=qn(),b=i.useContext(pt.ConfigContext),C=b.getPrefixCls,S=C("pro-table-column-setting");return x.jsx(Oo,{arrowPointAtCenter:!0,title:x.jsxs("div",{className:"".concat(S,"-title"),children:[x.jsx(Sa,{indeterminate:g,checked:p.length===0&&p.length!==o.length,onChange:function(E){return v(E)},children:y.getMessage("tableToolBar.columnDisplay","列展示")}),l?x.jsx("a",{onClick:m,className:"".concat(S,"-action-rest-button"),children:y.getMessage("tableToolBar.reset","重置")}):null,e!=null&&e.extra?x.jsx(Xt,{size:12,align:"center",children:e.extra}):null]}),overlayClassName:"".concat(S,"-overlay"),trigger:"click",placement:"bottomRight",content:x.jsx(R_,{checkable:(t=e.checkable)!==null&&t!==void 0?t:!0,draggable:(r=e.draggable)!==null&&r!==void 0?r:!0,className:S,localColumns:o,listsHeight:e.listsHeight}),children:e.children||x.jsx(nn,{title:y.getMessage("tableToolBar.columnSetting","列设置"),children:x.jsx(xv,{})})})}function T_(e,t){return D_(e)||$_(e,t)||N_(e,t)||F_()}function F_(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function N_(e,t){if(e){if(typeof e=="string")return Yf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Yf(e,t)}}function Yf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r"u",r=i.useState(function(){return t?!1:window.matchMedia(e).matches}),n=T_(r,2),a=n[0],o=n[1];return i.useLayoutEffect(function(){if(!t){var s=window.matchMedia(e),l=function(c){return o(c.matches)};return s.addListener(l),function(){return s.removeListener(l)}}},[e]),a}function O_(e,t){return j_(e)||L_(e,t)||__(e,t)||I_()}function I_(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function __(e,t){if(e){if(typeof e=="string")return Gf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Gf(e,t)}}function Gf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r"u")return t;var r=Object.keys(Sr).find(function(n){var a=Sr[n].matchMedia;return!!window.matchMedia(a).matches});return t=r,t},K_=function(){var t=ha(Sr.md.matchMedia),r=ha(Sr.lg.matchMedia),n=ha(Sr.xxl.matchMedia),a=ha(Sr.xl.matchMedia),o=ha(Sr.sm.matchMedia),s=ha(Sr.xs.matchMedia),l=i.useState(A_()),u=O_(l,2),c=u[0],d=u[1];return i.useEffect(function(){if(n){d("xxl");return}if(a){d("xl");return}if(r){d("lg");return}if(t){d("md");return}if(o){d("sm");return}if(s){d("xs");return}d("md")},[t,r,n,a,o,s]),c};var V_=["label","key"],z_=function(t){var r=t.items,n=r===void 0?[]:r,a=t.type,o=a===void 0?"inline":a,s=t.prefixCls,l=t.activeKey,u=kt(l,{value:l,onChange:t.onChange}),c=U(u,2),d=c[0],f=c[1];if(n.length<1)return null;var v=n.find(function(m){return m.key===d})||n[0];return o==="inline"?x.jsx("div",{className:ve("".concat(s,"-menu"),"".concat(s,"-inline-menu")),children:n.map(function(m,p){return x.jsx("div",{onClick:function(){f(m.key)},className:ve("".concat(s,"-inline-menu-item"),v.key===m.key?"".concat(s,"-inline-menu-item-active"):void 0),children:m.label},m.key||p)})}):o==="tab"?x.jsx(ta,{activeKey:v.key,onTabClick:function(p){return f(p)},children:n.map(function(m,p){var g=m.label,y=m.key,b=ze(m,V_);return x.jsx(ta.TabPane,h({tab:g},b),y||p)})}):x.jsx("div",{className:ve("".concat(s,"-menu"),"".concat(s,"-dropdownmenu")),children:x.jsx(Io,{trigger:["click"],menu:{selectedKeys:[v.key],onClick:function(p){f(p.key)},items:n.map(function(m,p){return{key:m.key||p,disabled:m.disabled,label:m.label}})},children:x.jsxs(Xt,{className:"".concat(s,"-dropdownmenu-label"),children:[v.label,x.jsx(So,{})]})})})};const B_=z_;function H_(e){if(Z.isValidElement(e))return e;if(e){var t=e,r=t.icon,n=t.tooltip,a=t.onClick,o=t.key;return r&&n?x.jsx(nn,{title:n,children:x.jsx("span",{onClick:function(){a&&a(o)},children:r},o)}):r}return null}var W_=function(t){var r=t.prefixCls,n=t.tabs,a=n===void 0?{}:n,o=t.multipleLine,s=t.filtersNode;return o?x.jsx("div",{className:"".concat(r,"-extra-line"),children:a.items&&a.items.length?x.jsx(ta,{activeKey:a.activeKey,onChange:a.onChange,tabBarExtraContent:s,children:a.items.map(function(l,u){return x.jsx(ta.TabPane,h({},l),l.key||u)})}):s}):null},U_=function(t){var r=t.prefixCls,n=t.title,a=t.subTitle,o=t.tooltip,s=t.className,l=t.style,u=t.search,c=t.onSearch,d=t.multipleLine,f=d===void 0?!1:d,v=t.filter,m=t.actions,p=m===void 0?[]:m,g=t.settings,y=g===void 0?[]:g,b=t.tabs,C=b===void 0?{}:b,S=t.menu,P=qn(),E=K_(),w=E==="sm"||E==="xs",F=P.getMessage("tableForm.inputPlaceholder","请输入"),$=i.useMemo(function(){return u?Z.isValidElement(u)?u:x.jsx(kn.Search,h(h({style:{width:200},placeholder:F},u),{},{onSearch:function(){for(var z,A=arguments.length,V=new Array(A),X=0;Xae||Y!==void 0&&y&&y.length<=ae&&H.run(!1)},[k==null?void 0:k.current]),i.useEffect(function(){j&&H.run(!1)},[k==null?void 0:k.pageSize]),Xs(function(){return H.run(!1),l||(v.current=!1),function(){H.cancel()}},[].concat(Ke(A),[l])),{dataSource:y,setDataSource:b,loading:P,reload:function(){var Q=xt(Ve().mark(function ae(){return Ve().wrap(function(ne){for(;;)switch(ne.prev=ne.next){case 0:return ne.next=2,H.run(!1);case 2:case"end":return ne.stop()}},ae)}));function Y(){return Q.apply(this,arguments)}return Y}(),pageInfo:k,pollingLoading:N,reset:function(){var Q=xt(Ve().mark(function ae(){var q,ne,ue,G,te,ee,le,re;return Ve().wrap(function(Ee){for(;;)switch(Ee.prev=Ee.next){case 0:q=n||{},ne=q.pageInfo,ue=ne||{},G=ue.defaultCurrent,te=G===void 0?1:G,ee=ue.defaultPageSize,le=ee===void 0?20:ee,re={current:te,total:0,pageSize:le},D(re);case 4:case"end":return Ee.stop()}},ae)}));function Y(){return Q.apply(this,arguments)}return Y}(),setPageInfo:function(){var Q=xt(Ve().mark(function ae(q){return Ve().wrap(function(ue){for(;;)switch(ue.prev=ue.next){case 0:D(h(h({},k),q));case 1:case"end":return ue.stop()}},ae)}));function Y(ae){return Q.apply(this,arguments)}return Y}()}};const iL=oL;var lL=function(t){return function(r,n){var a,o,s=r.fixed,l=r.index,u=n.fixed,c=n.index;if(s==="left"&&u!=="left"||u==="right"&&s!=="right")return-2;if(u==="left"&&s!=="left"||s==="right"&&u!=="right")return 2;var d=r.key||"".concat(l),f=n.key||"".concat(c);if(!((a=t[d])===null||a===void 0)&&a.order||!((o=t[f])===null||o===void 0)&&o.order){var v,m;return(((v=t[d])===null||v===void 0?void 0:v.order)||0)-(((m=t[f])===null||m===void 0?void 0:m.order)||0)}return(r.index||0)-(n.index||0)}},sL=["children"],uL=["",null,void 0],qf=function(){for(var t=arguments.length,r=new Array(t),n=0;nY.length?(Y.push(V),Y):(Y.splice((s==null?void 0:s.current)*(s==null?void 0:s.pageSize)-1,0,V),Y)}return[].concat(Ke(n.dataSource),[V])},R=function(){return h(h({},F),{},{size:u,rowSelection:l===!1?void 0:l,className:r,style:c,columns:k.map(function(K){return K.isExtraColumns?K.extraColumn:K}),loading:n.loading,dataSource:E.newLineRecord?D(n.dataSource):n.dataSource,pagination:s,onChange:function(z,A,V,X){var H;if((H=F.onChange)===null||H===void 0||H.call(F,z,A,V,X),O||y(Zr(A)),Array.isArray(V)){var Q=V.reduce(function(ne,ue){return h(h({},ne),{},B({},"".concat(ue.field),ue.order))},{});g(Zr(Q))}else{var Y,ae=(Y=V.column)===null||Y===void 0?void 0:Y.sorter,q=(ae==null?void 0:ae.toString())===ae;g(Zr(B({},"".concat(q?ae:V.field),V.order))||{})}}})},T=x.jsx(ka,h(h({},R()),{},{rowKey:t})),N=e.tableViewRender?e.tableViewRender(h(h({},R()),{},{rowSelection:l!==!1?l:void 0}),T):T,M=i.useMemo(function(){if(e.editable&&!e.name){var _,K,z,A;return x.jsxs(x.Fragment,{children:[d,p,i.createElement(Ln,h(h({},(_=e.editable)===null||_===void 0?void 0:_.formProps),{},{formRef:(K=e.editable)===null||K===void 0||(z=K.formProps)===null||z===void 0?void 0:z.formRef,component:!1,form:(A=e.editable)===null||A===void 0?void 0:A.form,onValuesChange:E.onValuesChange,key:"table",submitter:!1,omitNil:!1,dateFormatter:e.dateFormatter}),N)]})}return x.jsxs(x.Fragment,{children:[d,p,N]})},[p,e.loading,!!e.editable,N,d]),I=m===!1||e.name?M:x.jsx(y9,h(h({ghost:e.ghost,bordered:_h("table",P),bodyStyle:d?{paddingTop:0}:{padding:0}},m),{},{children:M})),L=function(){return e.tableRender?e.tableRender(e,I,{toolbar:d||void 0,alert:p||void 0,table:N||void 0}):I},j=x.jsxs("div",{className:ve(S,B({},"".concat(S,"-polling"),n.pollingLoading)),style:v,ref:$.rootDomRef,children:[C?null:f,o!=="form"&&e.tableExtraRender&&x.jsx("div",{className:"".concat(S,"-extra"),children:e.tableExtraRender(e,n.dataSource||[])}),o!=="form"&&L()]});return!b||!(b!=null&&b.fullScreen)?j:x.jsx(pt,{getPopupContainer:function(){return $.rootDomRef.current||document.body},children:j})}var yL={},bL=function(t){var r;t.cardBordered;var n=t.request,a=t.className,o=t.params,s=o===void 0?yL:o,l=t.defaultData,u=t.headerTitle,c=t.postData,d=t.ghost,f=t.pagination,v=t.actionRef,m=t.columns,p=m===void 0?[]:m,g=t.toolBarRender,y=t.onLoad,b=t.onRequestError;t.style,t.cardProps,t.tableStyle,t.tableClassName,t.columnsStateMap,t.onColumnsStateChange;var C=t.options,S=t.search,P=t.name,E=t.onLoadingChange,w=t.rowSelection,F=w===void 0?!1:w,$=t.beforeSearchSubmit,k=t.tableAlertRender,O=t.defaultClassName,D=t.formRef,R=t.type,T=R===void 0?"table":R,N=t.columnEmptyText,M=N===void 0?"-":N,I=t.toolbar,L=t.rowKey,j=t.manualRequest,_=t.polling,K=t.tooltip,z=t.revalidateOnFocus,A=z===void 0?!1:z,V=ze(t,hL),X=ve(O,a),H=i.useRef(),Q=i.useRef(),Y=D||Q;i.useImperativeHandle(v,function(){return H.current});var ae=Yn(F?(F==null?void 0:F.defaultSelectedRowKeys)||[]:void 0,{value:F?F.selectedRowKeys:void 0}),q=U(ae,2),ne=q[0],ue=q[1],G=i.useRef([]),te=i.useCallback(function(ye,de){ue(ye),(!F||!(F!=null&&F.selectedRowKeys))&&(G.current=de)},[ue]),ee=Yn(function(){if(!(j||S!==!1))return{}}),le=U(ee,2),re=le[0],ge=le[1],Ee=Yn({}),me=U(Ee,2),ce=me[0],fe=me[1],ie=Yn({}),se=U(ie,2),pe=se[0],Ce=se[1];i.useEffect(function(){var ye=v_(p),de=ye.sort,be=ye.filter;fe(be),Ce(de)},[]);var Re=qn(),Fe=He(f)==="object"?f:{defaultCurrent:1,defaultPageSize:20,pageSize:20,current:1},Se=Ir.useContainer(),ke=i.useMemo(function(){if(n)return function(){var ye=xt(Ve().mark(function de(be){var Me,Ye;return Ve().wrap(function($e){for(;;)switch($e.prev=$e.next){case 0:return Me=h(h(h({},be||{}),re),s),delete Me._timestamp,$e.next=4,n(Me,pe,ce);case 4:return Ye=$e.sent,$e.abrupt("return",Ye);case 6:case"end":return $e.stop()}},de)}));return function(de){return ye.apply(this,arguments)}}()},[re,s,ce,pe,n]),Pe=iL(ke,l,{pageInfo:f===!1?!1:Fe,loading:t.loading,dataSource:t.dataSource,onDataSourceChange:t.onDataSourceChange,onLoad:y,onLoadingChange:E,onRequestError:b,postData:c,revalidateOnFocus:A,manual:re===void 0,polling:_,effects:[ya(s),ya(re),ya(ce),ya(pe)],debounceTime:t.debounceTime,onPageInfoChange:function(de){var be,Me;T==="list"||!f||!ke||(f==null||(be=f.onChange)===null||be===void 0||be.call(f,de.current,de.pageSize),f==null||(Me=f.onShowSizeChange)===null||Me===void 0||Me.call(f,de.current,de.pageSize))}});i.useEffect(function(){var ye;if(!(t.manualRequest||!t.request||!A||!((ye=t.form)===null||ye===void 0)&&ye.ignoreRules)){var de=function(){document.visibilityState==="visible"&&Pe.reload()};return document.addEventListener("visibilitychange",de),function(){return document.removeEventListener("visibilitychange",de)}}},[]);var Qe=Z.useRef(new Map),et=Z.useMemo(function(){return typeof L=="function"?L:function(ye,de){var be;return de===-1?ye==null?void 0:ye[L]:t.name?de==null?void 0:de.toString():(be=ye==null?void 0:ye[L])!==null&&be!==void 0?be:de==null?void 0:de.toString()}},[t.name,L]);i.useMemo(function(){var ye;if(!((ye=Pe.dataSource)===null||ye===void 0)&&ye.length){var de=new Map,be=Pe.dataSource.map(function(Me){var Ye=et(Me,-1);return de.set(Ye,Me),Ye});return Qe.current=de,be}return[]},[Pe.dataSource,et]),i.useEffect(function(){G.current=ne==null?void 0:ne.map(function(ye){var de;return(de=Qe.current)===null||de===void 0?void 0:de.get(ye)})},[ne]);var vt=i.useMemo(function(){var ye=f===!1?!1:h({},f),de=h(h({},Pe.pageInfo),{},{setPageInfo:function(Me){var Ye=Me.pageSize,lt=Me.current,$e=Pe.pageInfo;if(Ye===$e.pageSize||$e.current===1){Pe.setPageInfo({pageSize:Ye,current:lt});return}n&&Pe.setDataSource([]),Pe.setPageInfo({pageSize:Ye,current:T==="list"?lt:1})}});return n&&ye&&(delete ye.onChange,delete ye.onShowSizeChange),s_(ye,de,Re)},[f,Pe,Re]);Xs(function(){var ye;t.request&&s&&Pe.dataSource&&(Pe==null||(ye=Pe.pageInfo)===null||ye===void 0?void 0:ye.current)!==1&&Pe.setPageInfo({current:1})},[s]),Se.setPrefixName(t.name);var ct=i.useCallback(function(){F&&F.onChange&&F.onChange([],[],{type:"none"}),te([],[])},[F,te]);Se.setAction(H.current),Se.propsRef.current=t;var ht=V8(h(h({},t.editable),{},{tableName:t.name,getRowKey:et,childrenColumnName:((r=t.expandable)===null||r===void 0?void 0:r.childrenColumnName)||"children",dataSource:Pe.dataSource||[],setDataSource:function(de){var be,Me;(be=t.editable)===null||be===void 0||(Me=be.onValuesChange)===null||Me===void 0||Me.call(be,void 0,de),Pe.setDataSource(de)}}));u_(H,Pe,{fullScreen:function(){var de;if(!(!(!((de=Se.rootDomRef)===null||de===void 0)&&de.current)||!document.fullscreenEnabled))if(document.fullscreenElement)document.exitFullscreen();else{var be;(be=Se.rootDomRef)===null||be===void 0||be.current.requestFullscreen()}},onCleanSelected:function(){ct()},resetAll:function(){var de;ct(),fe({}),Ce({}),Se.setKeyWords(void 0),Pe.setPageInfo({current:1}),Y==null||(de=Y.current)===null||de===void 0||de.resetFields(),ge({})},editableUtils:ht}),v&&(v.current=H.current);var Ge=i.useMemo(function(){var ye;return Ah({columns:p,counter:Se,columnEmptyText:M,type:T,editableUtils:ht,rowKey:L,childrenColumnName:(ye=t.expandable)===null||ye===void 0?void 0:ye.childrenColumnName}).sort(lL(Se.columnsMap))},[p,Se==null?void 0:Se.sortKeyColumns,Se==null?void 0:Se.columnsMap,M,T,ht.editableKeys&&ht.editableKeys.join(",")]);Kp(function(){if(Ge&&Ge.length>0){var ye=Ge.map(function(de){return Ga(de.key,de.index)});Se.setSortKeyColumns(ye)}},[Ge],["render","renderFormItem"],100),Xs(function(){var ye=Pe.pageInfo,de=f||{},be=de.current,Me=be===void 0?ye==null?void 0:ye.current:be,Ye=de.pageSize,lt=Ye===void 0?ye==null?void 0:ye.pageSize:Ye;f&&(Me||lt)&&(lt!==(ye==null?void 0:ye.pageSize)||Me!==(ye==null?void 0:ye.current))&&Pe.setPageInfo({pageSize:lt||ye.pageSize,current:Me||ye.current})},[f&&f.pageSize,f&&f.current]);var _e=h(h({selectedRowKeys:ne},F),{},{onChange:function(de,be,Me){F&&F.onChange&&F.onChange(de,be,Me),te(de,be)}}),mt=S!==!1&&(S==null?void 0:S.filterType)==="light",tt=function(de){if(C&&C.search){var be,Me,Ye=C.search===!0?{}:C.search,lt=Ye.name,$e=lt===void 0?"keyword":lt,xe=(be=C.search)===null||be===void 0||(Me=be.onSearch)===null||Me===void 0?void 0:Me.call(be,Se.keyWords);if(xe!==!1){ge(h(h({},de),{},B({},$e,Se.keyWords)));return}}ge(de)},we=i.useMemo(function(){if(He(Pe.loading)==="object"){var ye;return((ye=Pe.loading)===null||ye===void 0?void 0:ye.spinning)||!1}return Pe.loading},[Pe.loading]),We=S===!1&&T!=="form"?null:x.jsx(x_,{pagination:vt,beforeSearchSubmit:$,action:H,columns:p,onFormSearchSubmit:function(de){tt(de)},ghost:d,onReset:t.onReset,onSubmit:t.onSubmit,loading:!!we,manualRequest:j,search:S,form:t.form,formRef:Y,type:t.type||"table",cardBordered:t.cardBordered,dateFormatter:t.dateFormatter}),Te=g===!1?null:x.jsx(nL,{headerTitle:u,hideToolbar:C===!1&&!u&&!g&&!I&&!mt,selectedRows:G.current,selectedRowKeys:ne,tableColumn:Ge,tooltip:K,toolbar:I,onFormSearchSubmit:function(de){ge(h(h({},re),de))},searchNode:mt?We:null,options:C,actionRef:H,toolBarRender:g}),Le=F!==!1?x.jsx(l_,{selectedRowKeys:ne,selectedRows:G.current,onCleanSelected:ct,alertOptionRender:V.tableAlertOptionRender,alertInfoRender:k,alwaysShowAlert:F==null?void 0:F.alwaysShowAlert}):null;return x.jsx(gL,h(h({},t),{},{name:P,size:Se.tableSize,onSizeChange:Se.setTableSize,pagination:vt,searchNode:We,rowSelection:F!==!1?_e:void 0,className:X,tableColumn:Ge,isLightFilter:mt,action:Pe,alertDom:Le,toolbarDom:Te,onSortChange:Ce,onFilterChange:fe,editableUtils:ht,getRowKey:et}))},Kh=function(t){var r=i.useContext(pt.ConfigContext),n=r.getPrefixCls,a=t.ErrorBoundary===!1?Z.Fragment:t.ErrorBoundary||c8;return x.jsx(Ir.Provider,{initialState:t,children:x.jsx(s8,{children:x.jsx(a,{children:x.jsx(bL,h({defaultClassName:n("pro-table")},t))})})})};Kh.Summary=ka.Summary;const TL=Kh;export{px as I,xI as M,TL as P,sy as V,Py as g,ky as s}; diff --git a/dist/assets/Tags-7859f157.js b/dist/assets/Tags-7859f157.js new file mode 100644 index 0000000000000000000000000000000000000000..4583e7b93693fbd271a26dc6d877bc1f842436da --- /dev/null +++ b/dist/assets/Tags-7859f157.js @@ -0,0 +1 @@ +import{A as L,f as E,N as b,a as J,O as G,P as H,o as q,c as K,r as T}from"./_setToString-038b76d7.js";import{r as s,_ as U,j as l}from"./umi-2135699e.js";import{t as X,B as w}from"./button-eb671c5b.js";import{b as N,D as F,a as Q}from"./index-c4a8d365.js";import{T as R}from"./useDebounce-ed4013a1.js";import{i as W,n as _}from"./util-e99b60d9.js";import{u as Y}from"./useAsyncFn-1ec42995.js";import{E as Z}from"./index-bbd283be.js";var V={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"plus-circle",theme:"outlined"};const ee=V;var te=function(n,r){return s.createElement(L,E(E({},n),{},{ref:r,icon:ee}))},se=s.forwardRef(te);const Ce=se;var ae={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 000 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7zM680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"}}]},name:"tag",theme:"outlined"};const re=ae;var ne=function(n,r){return s.createElement(L,E(E({},n),{},{ref:r,icon:re}))},ie=s.forwardRef(ne);const ce=ie;var z=N.Option;function I(a){return a&&a.type&&(a.type.isSelectOption||a.type.isSelectOptGroup)}var le=function(n,r){var O=n.prefixCls,g=n.className,x=n.popupClassName,p=n.dropdownClassName,o=n.children,C=n.dataSource,u=X(o),i;if(u.length===1&&b(u[0])&&!I(u[0])){var f=J(u,1);i=f[0]}var c=i?function(){return i}:void 0,v;return u.length&&I(u[0])?v=o:v=C?C.map(function(d){if(b(d))return d;switch(G(d)){case"string":return s.createElement(z,{key:d,value:d},d);case"object":{var S=d.value;return s.createElement(z,{key:S,value:S},d.text)}default:return}}):[],s.createElement(H,null,function(d){var S=d.getPrefixCls,y=S("select",O);return s.createElement(N,U({ref:r},q(n,["dataSource"]),{prefixCls:y,popupClassName:x||p,className:K("".concat(y,"-auto-complete"),g),mode:N.SECRET_COMBOBOX_MODE_DO_NOT_USE},{getInputElement:c}),v)})},P=s.forwardRef(le);P.Option=z;const oe=P;var ue=function(a,n,r){if(!W)return[n,_,_];if(!a)throw new Error("useLocalStorage key may not be falsy");var O=r?r.raw?function(i){return i}:r.deserializer:JSON.parse,g=s.useRef(function(i){try{var f=r?r.raw?String:r.serializer:JSON.stringify,c=localStorage.getItem(i);return c!==null?O(c):(n&&localStorage.setItem(i,f(n)),n)}catch{return n}}),x=s.useState(function(){return g.current(a)}),p=x[0],o=x[1];s.useLayoutEffect(function(){return o(g.current(a))},[a]);var C=s.useCallback(function(i){try{var f=typeof i=="function"?i(p):i;if(typeof f>"u")return;var c=void 0;r?r.raw?typeof f=="string"?c=f:c=JSON.stringify(f):r.serializer?c=r.serializer(f):c=JSON.stringify(f):c=JSON.stringify(f),localStorage.setItem(a,c),o(O(c))}catch{}},[a,o]),u=s.useCallback(function(){try{localStorage.removeItem(a),o(void 0)}catch{}},[a,o]);return[p,C,u]};const fe=ue,de=({id:a,tagList:n,onChange:r,preview:O})=>{const[g,x]=s.useState(""),p=s.useRef(null),[o,C]=fe("TAG_PRIORITIES",{}),[u,i]=s.useState(!1),[f,c]=s.useState(null),[v,d]=s.useState(!1),[S,y]=Y(async()=>T.get("/api/tags"),[]);s.useLayoutEffect(()=>{var e;u&&((e=p.current)==null||e.focus())},[u]);const h=f||n,$=s.useMemo(()=>{var e;return((e=S.value)==null?void 0:e.filter(t=>!h.some(m=>m.id===t.id)).sort((t,m)=>(o[m.id]||0)-(o[t.id]||0)).filter(t=>t.name.indexOf(g)>-1).map(t=>({value:t.name})))??[]},[h,S.value,o,g]),A=async e=>{const t=await T.post("/api/tags",{data:{name:e}});return{name:e,id:t.id}},B=async(e,t)=>{C({...o,[t]:Date.now()});const m=await T.post(`/api/musicSets/${e}/tags/${t}`);return!!(m!=null&&m.success)},M=async(e,t)=>{const m=await T.delete(`/api/musicSets/${e}/tags/${t}`);return!!(m!=null&&m.success)},D=async()=>{if(!g){i(!1);return}const e=await A(g);if(a&&await B(a,e.id),g&&!h.some(t=>t.id===e.id)){const t=[...h,e];c(t),r&&r(t)}i(!1),x("")},k=async e=>{a&&await M(a,e.id);const t=h.filter(m=>m.id!==e.id);c(t),r&&r(t)},j=s.useCallback(async()=>{await y(),d(!v)},[]);return l.jsxs(l.Fragment,{children:[O?l.jsx("div",{onClick:j,children:h.length?h.map(e=>l.jsx(R,{style:{display:"inline-block",fontSize:"12px",marginRight:"5px",marginBottom:"5px"},children:e.name},e.id)):l.jsx(w,{type:"dashed",icon:l.jsx(Z,{}),size:"small"})}):l.jsx(w,{title:"标签",icon:l.jsx(ce,{}),onClick:j}),l.jsx(F,{title:"标签管理",placement:"right",onClose:()=>d(!1),open:v,mask:!0,style:{marginTop:"64px",height:"calc(100vh - 64px)"},children:l.jsxs("div",{className:"score-tags",children:[l.jsx("div",{className:"list",children:h.map(e=>l.jsx(R,{closable:!0,onClose:()=>k(e),style:{display:"inline-block",marginRight:"5px",marginBottom:"5px"},children:e.name},e.id))}),u&&l.jsx(oe,{ref:p,size:"small",backfill:!0,options:$,style:{width:100},onChange:e=>{x(e)},placeholder:"输入",onBlur:()=>D(),onSelect:()=>{setTimeout(()=>{var e;(e=p.current)==null||e.blur()},0)},onKeyDown:e=>{e.key==="Enter"&&p.current.blur()}}),!u&&l.jsx(w,{className:"site-tag-plus",size:"small",onClick:()=>i(!0),children:l.jsx(Q,{})})]})})]})},ye=de;export{oe as A,Ce as P,ye as S,ce as T,fe as u}; diff --git a/dist/assets/Tags-d90bdcf5.js b/dist/assets/Tags-d90bdcf5.js deleted file mode 100644 index 913f9b8bfec242bde304b2dccac5449f7602b6aa..0000000000000000000000000000000000000000 --- a/dist/assets/Tags-d90bdcf5.js +++ /dev/null @@ -1 +0,0 @@ -import{A as L,g as E,V as b,a as J,W as G,X as H,o as X,c as q,f as K,r as T}from"./_setToString-2991057b.js";import{r as s,_ as U,j as l}from"./umi-d55575d8.js";import{t as W,B as w}from"./button-95279f00.js";import{S as z,T as R,D as F,a as Q}from"./useDebounce-e3ca8075.js";import{i as V,n as _,E as Y}from"./index-ef09616c.js";var Z={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"plus-circle",theme:"outlined"};const ee=Z;var te=function(n,r){return s.createElement(L,E(E({},n),{},{ref:r,icon:ee}))},se=s.forwardRef(te);const xe=se;var ae={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 000 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7zM680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"}}]},name:"tag",theme:"outlined"};const re=ae;var ne=function(n,r){return s.createElement(L,E(E({},n),{},{ref:r,icon:re}))},ie=s.forwardRef(ne);const ce=ie;var N=z.Option;function I(a){return a&&a.type&&(a.type.isSelectOption||a.type.isSelectOptGroup)}var le=function(n,r){var C=n.prefixCls,g=n.className,x=n.popupClassName,p=n.dropdownClassName,o=n.children,O=n.dataSource,u=W(o),i;if(u.length===1&&b(u[0])&&!I(u[0])){var f=J(u,1);i=f[0]}var c=i?function(){return i}:void 0,v;return u.length&&I(u[0])?v=o:v=O?O.map(function(d){if(b(d))return d;switch(G(d)){case"string":return s.createElement(N,{key:d,value:d},d);case"object":{var S=d.value;return s.createElement(N,{key:S,value:S},d.text)}default:return}}):[],s.createElement(H,null,function(d){var S=d.getPrefixCls,y=S("select",C);return s.createElement(z,U({ref:r},X(n,["dataSource"]),{prefixCls:y,popupClassName:x||p,className:q("".concat(y,"-auto-complete"),g),mode:z.SECRET_COMBOBOX_MODE_DO_NOT_USE},{getInputElement:c}),v)})},$=s.forwardRef(le);$.Option=N;const oe=$;var ue=function(a,n,r){if(!V)return[n,_,_];if(!a)throw new Error("useLocalStorage key may not be falsy");var C=r?r.raw?function(i){return i}:r.deserializer:JSON.parse,g=s.useRef(function(i){try{var f=r?r.raw?String:r.serializer:JSON.stringify,c=localStorage.getItem(i);return c!==null?C(c):(n&&localStorage.setItem(i,f(n)),n)}catch{return n}}),x=s.useState(function(){return g.current(a)}),p=x[0],o=x[1];s.useLayoutEffect(function(){return o(g.current(a))},[a]);var O=s.useCallback(function(i){try{var f=typeof i=="function"?i(p):i;if(typeof f>"u")return;var c=void 0;r?r.raw?typeof f=="string"?c=f:c=JSON.stringify(f):r.serializer?c=r.serializer(f):c=JSON.stringify(f):c=JSON.stringify(f),localStorage.setItem(a,c),o(C(c))}catch{}},[a,o]),u=s.useCallback(function(){try{localStorage.removeItem(a),o(void 0)}catch{}},[a,o]);return[p,O,u]};const fe=ue,de=({id:a,tagList:n,onChange:r,preview:C})=>{const[g,x]=s.useState(""),p=s.useRef(null),[o,O]=fe("TAG_PRIORITIES",{}),[u,i]=s.useState(!1),[f,c]=s.useState(null),[v,d]=s.useState(!1),[S,y]=K(async()=>T.get("/api/tags"),[]);s.useLayoutEffect(()=>{var e;u&&((e=p.current)==null||e.focus())},[u]);const h=f||n,A=s.useMemo(()=>{var e;return((e=S.value)==null?void 0:e.filter(t=>!h.some(m=>m.id===t.id)).sort((t,m)=>(o[m.id]||0)-(o[t.id]||0)).filter(t=>t.name.indexOf(g)>-1).map(t=>({value:t.name})))??[]},[h,S.value,o,g]),P=async e=>{const t=await T.post("/api/tags",{data:{name:e}});return{name:e,id:t.id}},B=async(e,t)=>{O({...o,[t]:Date.now()});const m=await T.post(`/api/musicSets/${e}/tags/${t}`);return!!(m!=null&&m.success)},M=async(e,t)=>{const m=await T.delete(`/api/musicSets/${e}/tags/${t}`);return!!(m!=null&&m.success)},D=async()=>{if(!g){i(!1);return}const e=await P(g);if(a&&await B(a,e.id),g&&!h.some(t=>t.id===e.id)){const t=[...h,e];c(t),r&&r(t)}i(!1),x("")},k=async e=>{a&&await M(a,e.id);const t=h.filter(m=>m.id!==e.id);c(t),r&&r(t)},j=s.useCallback(async()=>{await y(),d(!v)},[]);return l.jsxs(l.Fragment,{children:[C?l.jsx("div",{onClick:j,children:h.length?h.map(e=>l.jsx(R,{style:{display:"inline-block",fontSize:"12px",marginRight:"5px",marginBottom:"5px"},children:e.name},e.id)):l.jsx(w,{type:"dashed",icon:l.jsx(Y,{}),size:"small"})}):l.jsx(w,{title:"标签",icon:l.jsx(ce,{}),onClick:j}),l.jsx(F,{title:"标签管理",placement:"right",onClose:()=>d(!1),open:v,mask:!0,style:{marginTop:"64px",height:"calc(100vh - 64px)"},children:l.jsxs("div",{className:"score-tags",children:[l.jsx("div",{className:"list",children:h.map(e=>l.jsx(R,{closable:!0,onClose:()=>k(e),style:{display:"inline-block",marginRight:"5px",marginBottom:"5px"},children:e.name},e.id))}),u&&l.jsx(oe,{ref:p,size:"small",backfill:!0,options:A,style:{width:100},onChange:e=>{x(e)},placeholder:"输入",onBlur:()=>D(),onSelect:()=>{setTimeout(()=>{var e;(e=p.current)==null||e.blur()},0)},onKeyDown:e=>{e.key==="Enter"&&p.current.blur()}}),!u&&l.jsx(w,{className:"site-tag-plus",size:"small",onClick:()=>i(!0),children:l.jsx(Q,{})})]})})]})},Se=de;export{oe as A,xe as P,Se as S,ce as T,fe as u}; diff --git a/dist/assets/_setToString-038b76d7.js b/dist/assets/_setToString-038b76d7.js new file mode 100644 index 0000000000000000000000000000000000000000..35c59fdfecb6d63579e79c60a2eebb34d1e9a744 --- /dev/null +++ b/dist/assets/_setToString-038b76d7.js @@ -0,0 +1,81 @@ +import{r as S,D as tc,E as rc,g as Pt,c as Ce,R as xn,o as En,_ as F,F as nc,d as ac}from"./umi-2135699e.js";function ww(){const e=S.useContext(tc);return rc(e),e}var oc=S.createContext({});const sa=oc;function Y(e){"@babel/helpers - typeof";return Y=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Y(e)}function ic(e,t){if(Y(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(Y(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function bi(e){var t=ic(e,"string");return Y(t)=="symbol"?t:t+""}function z(e,t,r){return(t=bi(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ga(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function $(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r1)&&(e=1),e}function jt(e){return e<=1?"".concat(Number(e)*100,"%"):e}function pe(e){return e.length===1?"0"+e:String(e)}function dc(e,t,r){return{r:X(e,255)*255,g:X(t,255)*255,b:X(r,255)*255}}function Wa(e,t,r){e=X(e,255),t=X(t,255),r=X(r,255);var n=Math.max(e,t,r),a=Math.min(e,t,r),o=0,i=0,s=(n+a)/2;if(n===a)i=0,o=0;else{var f=n-a;switch(i=s>.5?f/(2-n-a):f/(n+a),n){case e:o=(t-r)/f+(t1&&(r-=1),r<1/6?e+(t-e)*(6*r):r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function pc(e,t,r){var n,a,o;if(e=X(e,360),t=X(t,100),r=X(r,100),t===0)a=r,o=r,n=r;else{var i=r<.5?r*(1+t):r+t-r*t,s=2*r-i;n=zr(s,i,e+1/3),a=zr(s,i,e),o=zr(s,i,e-1/3)}return{r:n*255,g:a*255,b:o*255}}function Pn(e,t,r){e=X(e,255),t=X(t,255),r=X(r,255);var n=Math.max(e,t,r),a=Math.min(e,t,r),o=0,i=n,s=n-a,f=n===0?0:s/n;if(n===a)o=0;else{switch(n){case e:o=(t-r)/s+(t>16,g:(e&65280)>>8,b:e&255}}var On={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function ze(e){var t={r:0,g:0,b:0},r=1,n=null,a=null,o=null,i=!1,s=!1;return typeof e=="string"&&(e=bc(e)),typeof e=="object"&&(Pe(e.r)&&Pe(e.g)&&Pe(e.b)?(t=dc(e.r,e.g,e.b),i=!0,s=String(e.r).substr(-1)==="%"?"prgb":"rgb"):Pe(e.h)&&Pe(e.s)&&Pe(e.v)?(n=jt(e.s),a=jt(e.v),t=hc(e.h,n,a),i=!0,s="hsv"):Pe(e.h)&&Pe(e.s)&&Pe(e.l)&&(n=jt(e.s),o=jt(e.l),t=pc(e.h,n,o),i=!0,s="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(r=e.a)),r=xi(r),{ok:i,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:r}}var mc="[-\\+]?\\d+%?",gc="[-\\+]?\\d*\\.\\d+%?",Re="(?:".concat(gc,")|(?:").concat(mc,")"),Gr="[\\s|\\(]+(".concat(Re,")[,|\\s]+(").concat(Re,")[,|\\s]+(").concat(Re,")\\s*\\)?"),Wr="[\\s|\\(]+(".concat(Re,")[,|\\s]+(").concat(Re,")[,|\\s]+(").concat(Re,")[,|\\s]+(").concat(Re,")\\s*\\)?"),fe={CSS_UNIT:new RegExp(Re),rgb:new RegExp("rgb"+Gr),rgba:new RegExp("rgba"+Wr),hsl:new RegExp("hsl"+Gr),hsla:new RegExp("hsla"+Wr),hsv:new RegExp("hsv"+Gr),hsva:new RegExp("hsva"+Wr),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function bc(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(On[e])e=On[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var r=fe.rgb.exec(e);return r?{r:r[1],g:r[2],b:r[3]}:(r=fe.rgba.exec(e),r?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=fe.hsl.exec(e),r?{h:r[1],s:r[2],l:r[3]}:(r=fe.hsla.exec(e),r?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=fe.hsv.exec(e),r?{h:r[1],s:r[2],v:r[3]}:(r=fe.hsva.exec(e),r?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=fe.hex8.exec(e),r?{r:ue(r[1]),g:ue(r[2]),b:ue(r[3]),a:Va(r[4]),format:t?"name":"hex8"}:(r=fe.hex6.exec(e),r?{r:ue(r[1]),g:ue(r[2]),b:ue(r[3]),format:t?"name":"hex"}:(r=fe.hex4.exec(e),r?{r:ue(r[1]+r[1]),g:ue(r[2]+r[2]),b:ue(r[3]+r[3]),a:Va(r[4]+r[4]),format:t?"name":"hex8"}:(r=fe.hex3.exec(e),r?{r:ue(r[1]+r[1]),g:ue(r[2]+r[2]),b:ue(r[3]+r[3]),format:t?"name":"hex"}:!1)))))))))}function Pe(e){return!!fe.CSS_UNIT.exec(String(e))}var Wt=function(){function e(t,r){t===void 0&&(t=""),r===void 0&&(r={});var n;if(t instanceof e)return t;typeof t=="number"&&(t=yc(t)),this.originalInput=t;var a=ze(t);this.originalInput=t,this.r=a.r,this.g=a.g,this.b=a.b,this.a=a.a,this.roundA=Math.round(100*this.a)/100,this.format=(n=r.format)!==null&&n!==void 0?n:a.format,this.gradientType=r.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=a.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),r,n,a,o=t.r/255,i=t.g/255,s=t.b/255;return o<=.03928?r=o/12.92:r=Math.pow((o+.055)/1.055,2.4),i<=.03928?n=i/12.92:n=Math.pow((i+.055)/1.055,2.4),s<=.03928?a=s/12.92:a=Math.pow((s+.055)/1.055,2.4),.2126*r+.7152*n+.0722*a},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=xi(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=Pn(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=Pn(this.r,this.g,this.b),r=Math.round(t.h*360),n=Math.round(t.s*100),a=Math.round(t.v*100);return this.a===1?"hsv(".concat(r,", ").concat(n,"%, ").concat(a,"%)"):"hsva(".concat(r,", ").concat(n,"%, ").concat(a,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=Wa(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=Wa(this.r,this.g,this.b),r=Math.round(t.h*360),n=Math.round(t.s*100),a=Math.round(t.l*100);return this.a===1?"hsl(".concat(r,", ").concat(n,"%, ").concat(a,"%)"):"hsla(".concat(r,", ").concat(n,"%, ").concat(a,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),$n(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),vc(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toHexShortString=function(t){return t===void 0&&(t=!1),this.a===1?this.toHexString(t):this.toHex8String(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),r=Math.round(this.g),n=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(r,", ").concat(n,")"):"rgba(".concat(t,", ").concat(r,", ").concat(n,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(r){return"".concat(Math.round(X(r,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(r){return Math.round(X(r,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+$n(this.r,this.g,this.b,!1),r=0,n=Object.entries(On);r=0,o=!r&&a&&(t.startsWith("hex")||t==="name");return o?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(n=this.toRgbString()),t==="prgb"&&(n=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(n=this.toHexString()),t==="hex3"&&(n=this.toHexString(!0)),t==="hex4"&&(n=this.toHex8String(!0)),t==="hex8"&&(n=this.toHex8String()),t==="name"&&(n=this.toName()),t==="hsl"&&(n=this.toHslString()),t==="hsv"&&(n=this.toHsvString()),n||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l+=t/100,r.l=Lt(r.l),new e(r)},e.prototype.brighten=function(t){t===void 0&&(t=10);var r=this.toRgb();return r.r=Math.max(0,Math.min(255,r.r-Math.round(255*-(t/100)))),r.g=Math.max(0,Math.min(255,r.g-Math.round(255*-(t/100)))),r.b=Math.max(0,Math.min(255,r.b-Math.round(255*-(t/100)))),new e(r)},e.prototype.darken=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l-=t/100,r.l=Lt(r.l),new e(r)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s-=t/100,r.s=Lt(r.s),new e(r)},e.prototype.saturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s+=t/100,r.s=Lt(r.s),new e(r)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var r=this.toHsl(),n=(r.h+t)%360;return r.h=n<0?360+n:n,new e(r)},e.prototype.mix=function(t,r){r===void 0&&(r=50);var n=this.toRgb(),a=new e(t).toRgb(),o=r/100,i={r:(a.r-n.r)*o+n.r,g:(a.g-n.g)*o+n.g,b:(a.b-n.b)*o+n.b,a:(a.a-n.a)*o+n.a};return new e(i)},e.prototype.analogous=function(t,r){t===void 0&&(t=6),r===void 0&&(r=30);var n=this.toHsl(),a=360/r,o=[this];for(n.h=(n.h-(a*t>>1)+720)%360;--t;)n.h=(n.h+a)%360,o.push(new e(n));return o},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var r=this.toHsv(),n=r.h,a=r.s,o=r.v,i=[],s=1/t;t--;)i.push(new e({h:n,s:a,v:o})),o=(o+s)%1;return i},e.prototype.splitcomplement=function(){var t=this.toHsl(),r=t.h;return[this,new e({h:(r+72)%360,s:t.s,l:t.l}),new e({h:(r+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var r=this.toRgb(),n=new e(t).toRgb(),a=r.a+n.a*(1-r.a);return new e({r:(r.r*r.a+n.r*n.a*(1-r.a))/a,g:(r.g*r.a+n.g*n.a*(1-r.a))/a,b:(r.b*r.a+n.b*n.a*(1-r.a))/a,a})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var r=this.toHsl(),n=r.h,a=[this],o=360/t,i=1;i=60&&Math.round(e.h)<=240?n=r?Math.round(e.h)-kt*t:Math.round(e.h)+kt*t:n=r?Math.round(e.h)+kt*t:Math.round(e.h)-kt*t,n<0?n+=360:n>=360&&(n-=360),n}function Qa(e,t,r){if(e.h===0&&e.s===0)return e.s;var n;return r?n=e.s-Ka*t:t===Pi?n=e.s+Ka:n=e.s+wc*t,n>1&&(n=1),r&&t===_i&&n>.1&&(n=.1),n<.06&&(n=.06),Number(n.toFixed(2))}function Za(e,t,r){var n;return r?n=e.v+Sc*t:n=e.v-Cc*t,n>1&&(n=1),Number(n.toFixed(2))}function Ze(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=[],n=ze(e),a=_i;a>0;a-=1){var o=Ya(n),i=Dt(ze({h:Ja(o,a,!0),s:Qa(o,a,!0),v:Za(o,a,!0)}));r.push(i)}r.push(Dt(n));for(var s=1;s<=Pi;s+=1){var f=Ya(n),u=Dt(ze({h:Ja(f,s),s:Qa(f,s),v:Za(f,s)}));r.push(u)}return t.theme==="dark"?xc.map(function(d){var g=d.index,h=d.opacity,w=Dt(Ec(ze(t.backgroundColor||"#141414"),ze(r[g]),h*100));return w}):r}var Vt={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},ee={},Kt={};Object.keys(Vt).forEach(function(e){ee[e]=Ze(Vt[e]),ee[e].primary=ee[e][5],Kt[e]=Ze(Vt[e],{theme:"dark",backgroundColor:"#141414"}),Kt[e].primary=Kt[e][5]});var _c=ee.red,Pc=ee.volcano,$c=ee.gold,Oc=ee.orange,Ac=ee.yellow,Rc=ee.lime,Tc=ee.green,Mc=ee.cyan,Ic=ee.blue,Nc=ee.geekblue,Fc=ee.purple,Lc=ee.magenta,jc=ee.grey;const xw=Object.freeze(Object.defineProperty({__proto__:null,blue:Ic,cyan:Mc,geekblue:Nc,generate:Ze,gold:$c,green:Tc,grey:jc,lime:Rc,magenta:Lc,orange:Oc,presetDarkPalettes:Kt,presetPalettes:ee,presetPrimaryColors:Vt,purple:Fc,red:_c,volcano:Pc,yellow:Ac},Symbol.toStringTag,{value:"Module"}));var An={},kc=function(t){};function Dc(e,t){}function Uc(e,t){}function Bc(){An={}}function $i(e,t,r){!t&&!An[r]&&(e(!1,r),An[r]=!0)}function dr(e,t){$i(Dc,e,t)}function qc(e,t){$i(Uc,e,t)}dr.preMessage=kc;dr.resetWarned=Bc;dr.noteOnce=qc;function $t(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function Hc(e,t){if(!e)return!1;if(e.contains)return e.contains(t);for(var r=t;r;){if(r===e)return!0;r=r.parentNode}return!1}var Xa="data-rc-order",eo="data-rc-priority",zc="rc-util-key",Rn=new Map;function Oi(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.mark;return t?t.startsWith("data-")?t:"data-".concat(t):zc}function pr(e){if(e.attachTo)return e.attachTo;var t=document.querySelector("head");return t||document.body}function Gc(e){return e==="queue"?"prependQueue":e?"prepend":"append"}function ca(e){return Array.from((Rn.get(e)||e).children).filter(function(t){return t.tagName==="STYLE"})}function Ai(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!$t())return null;var r=t.csp,n=t.prepend,a=t.priority,o=a===void 0?0:a,i=Gc(n),s=i==="prependQueue",f=document.createElement("style");f.setAttribute(Xa,i),s&&o&&f.setAttribute(eo,"".concat(o)),r!=null&&r.nonce&&(f.nonce=r==null?void 0:r.nonce),f.innerHTML=e;var u=pr(t),d=u.firstChild;if(n){if(s){var g=(t.styles||ca(u)).filter(function(h){if(!["prepend","prependQueue"].includes(h.getAttribute(Xa)))return!1;var w=Number(h.getAttribute(eo)||0);return o>=w});if(g.length)return u.insertBefore(f,g[g.length-1].nextSibling),f}u.insertBefore(f,d)}else u.appendChild(f);return f}function Ri(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=pr(t);return(t.styles||ca(r)).find(function(n){return n.getAttribute(Oi(t))===e})}function Ew(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=Ri(e,t);if(r){var n=pr(t);n.removeChild(r)}}function Wc(e,t){var r=Rn.get(e);if(!r||!Hc(document,r)){var n=Ai("",t),a=n.parentNode;Rn.set(e,a),e.removeChild(n)}}function Ti(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=pr(r),a=ca(n),o=$($({},r),{},{styles:a});Wc(n,o);var i=Ri(t,o);if(i){var s,f;if((s=o.csp)!==null&&s!==void 0&&s.nonce&&i.nonce!==((f=o.csp)===null||f===void 0?void 0:f.nonce)){var u;i.nonce=(u=o.csp)===null||u===void 0?void 0:u.nonce}return i.innerHTML!==e&&(i.innerHTML=e),i}var d=Ai(e,o);return d.setAttribute(Oi(o),t),d}var Vc=typeof Ce=="object"&&Ce&&Ce.Object===Object&&Ce,Kc=Vc,Yc=Kc,Jc=typeof self=="object"&&self&&self.Object===Object&&self,Qc=Yc||Jc||Function("return this")(),la=Qc,Zc=la,Xc=Zc.Symbol,fa=Xc;function el(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++ra?0:a+t),r=r>a?a:r,r<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var o=Array(a);++n=n?e:Rl(e,t,r)}var Ml=Tl,Il="\\ud800-\\udfff",Nl="\\u0300-\\u036f",Fl="\\ufe20-\\ufe2f",Ll="\\u20d0-\\u20ff",jl=Nl+Fl+Ll,kl="\\ufe0e\\ufe0f",Dl="\\u200d",Ul=RegExp("["+Dl+Il+jl+kl+"]");function Bl(e){return Ul.test(e)}var Ni=Bl;function ql(e){return e.split("")}var Hl=ql,Fi="\\ud800-\\udfff",zl="\\u0300-\\u036f",Gl="\\ufe20-\\ufe2f",Wl="\\u20d0-\\u20ff",Vl=zl+Gl+Wl,Kl="\\ufe0e\\ufe0f",Yl="["+Fi+"]",Tn="["+Vl+"]",Mn="\\ud83c[\\udffb-\\udfff]",Jl="(?:"+Tn+"|"+Mn+")",Li="[^"+Fi+"]",ji="(?:\\ud83c[\\udde6-\\uddff]){2}",ki="[\\ud800-\\udbff][\\udc00-\\udfff]",Ql="\\u200d",Di=Jl+"?",Ui="["+Kl+"]?",Zl="(?:"+Ql+"(?:"+[Li,ji,ki].join("|")+")"+Ui+Di+")*",Xl=Ui+Di+Zl,ef="(?:"+[Li+Tn+"?",Tn,ji,ki,Yl].join("|")+")",tf=RegExp(Mn+"(?="+Mn+")|"+ef+Xl,"g");function rf(e){return e.match(tf)||[]}var nf=rf,af=Hl,of=Ni,sf=nf;function uf(e){return of(e)?sf(e):af(e)}var cf=uf,lf=Ml,ff=Ni,df=cf,pf=Ot;function hf(e){return function(t){t=pf(t);var r=ff(t)?df(t):void 0,n=r?r[0]:t.charAt(0),a=r?lf(r,1).join(""):t.slice(1);return n[e]()+a}}var vf=hf,yf=vf,mf=yf("toUpperCase"),gf=mf,bf=Ot,wf=gf;function Sf(e){return wf(bf(e).toLowerCase())}var Cf=Sf;function xf(e,t,r,n){var a=-1,o=e==null?0:e.length;for(n&&o&&(r=e[++a]);++a0&&arguments[0]!==void 0?arguments[0]:{};return Object.keys(e).reduce(function(t,r){var n=e[r];switch(r){case"class":t.className=n,delete t.class;break;default:delete t[r],t[Fd(r)]=n}return t},{})}function In(e,t,r){return r?xn.createElement(e.tag,$($({key:t},po(e.attrs)),r),(e.children||[]).map(function(n,a){return In(n,"".concat(t,"-").concat(e.tag,"-").concat(a))})):xn.createElement(e.tag,$({key:t},po(e.attrs)),(e.children||[]).map(function(n,a){return In(n,"".concat(t,"-").concat(e.tag,"-").concat(a))}))}function es(e){return Ze(e)[0]}function ts(e){return e?Array.isArray(e)?e:[e]:[]}var jd=` +.anticon { + display: inline-flex; + alignItems: center; + color: inherit; + font-style: normal; + line-height: 0; + text-align: center; + text-transform: none; + vertical-align: -0.125em; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.anticon > * { + line-height: 1; +} + +.anticon svg { + display: inline-block; +} + +.anticon::before { + display: none; +} + +.anticon .anticon-icon { + display: block; +} + +.anticon[tabindex] { + cursor: pointer; +} + +.anticon-spin::before, +.anticon-spin { + display: inline-block; + -webkit-animation: loadingCircle 1s infinite linear; + animation: loadingCircle 1s infinite linear; +} + +@-webkit-keyframes loadingCircle { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes loadingCircle { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +`,kd=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:jd,r=S.useContext(sa),n=r.csp;S.useEffect(function(){Ti(t,"@ant-design-icons",{prepend:!0,csp:n})},[])},Dd=["icon","className","onClick","style","primaryColor","secondaryColor"],ht={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1};function Ud(e){var t=e.primaryColor,r=e.secondaryColor;ht.primaryColor=t,ht.secondaryColor=r||es(t),ht.calculated=!!r}function Bd(){return $({},ht)}var vr=function(t){var r=t.icon,n=t.className,a=t.onClick,o=t.style,i=t.primaryColor,s=t.secondaryColor,f=Qe(t,Dd),u=ht;if(i&&(u={primaryColor:i,secondaryColor:s||es(i)}),kd(),Ld(fo(r),"icon should be icon definiton, but got ".concat(r)),!fo(r))return null;var d=r;return d&&typeof d.icon=="function"&&(d=$($({},d),{},{icon:d.icon(u.primaryColor,u.secondaryColor)})),In(d.icon,"svg-".concat(d.name),$({className:n,onClick:a,style:o,"data-icon":d.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},f))};vr.displayName="IconReact";vr.getTwoToneColors=Bd;vr.setTwoToneColors=Ud;const va=vr;function rs(e){var t=ts(e),r=ne(t,2),n=r[0],a=r[1];return va.setTwoToneColors({primaryColor:n,secondaryColor:a})}function qd(){var e=va.getTwoToneColors();return e.calculated?[e.primaryColor,e.secondaryColor]:e.primaryColor}var Hd=["className","icon","spin","rotate","tabIndex","onClick","twoToneColor"];rs("#1890ff");var yr=S.forwardRef(function(e,t){var r=e.className,n=e.icon,a=e.spin,o=e.rotate,i=e.tabIndex,s=e.onClick,f=e.twoToneColor,u=Qe(e,Hd),d=S.useContext(sa),g=d.prefixCls,h=g===void 0?"anticon":g,w=d.rootClassName,b=Oe(w,h,z(z({},"".concat(h,"-").concat(n.name),!!n.name),"".concat(h,"-spin"),!!a||n.name==="loading"),r),x=i;x===void 0&&s&&(x=-1);var C=o?{msTransform:"rotate(".concat(o,"deg)"),transform:"rotate(".concat(o,"deg)")}:void 0,m=ts(f),y=ne(m,2),c=y[0],l=y[1];return S.createElement("span",$($({role:"img","aria-label":n.name},u),{},{ref:t,tabIndex:x,onClick:s,className:b}),S.createElement(va,{icon:n,primaryColor:c,secondaryColor:l,style:C}))});yr.displayName="AntdIcon";yr.getTwoToneColor=qd;yr.setTwoToneColor=rs;const _e=yr;var zd={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"}}]},name:"check-circle",theme:"filled"};const Gd=zd;var Wd=function(t,r){return S.createElement(_e,$($({},t),{},{ref:r,icon:Gd}))},Vd=S.forwardRef(Wd);const Kd=Vd;var Yd={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"};const Jd=Yd;var Qd=function(t,r){return S.createElement(_e,$($({},t),{},{ref:r,icon:Jd}))},Zd=S.forwardRef(Qd);const Xd=Zd;var ep={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z"}}]},name:"close-circle",theme:"filled"};const tp=ep;var rp=function(t,r){return S.createElement(_e,$($({},t),{},{ref:r,icon:tp}))},np=S.forwardRef(rp);const ap=np;var op={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm0 76c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm128.01 198.83c.03 0 .05.01.09.06l45.02 45.01a.2.2 0 01.05.09.12.12 0 010 .07c0 .02-.01.04-.05.08L557.25 512l127.87 127.86a.27.27 0 01.05.06v.02a.12.12 0 010 .07c0 .03-.01.05-.05.09l-45.02 45.02a.2.2 0 01-.09.05.12.12 0 01-.07 0c-.02 0-.04-.01-.08-.05L512 557.25 384.14 685.12c-.04.04-.06.05-.08.05a.12.12 0 01-.07 0c-.03 0-.05-.01-.09-.05l-45.02-45.02a.2.2 0 01-.05-.09.12.12 0 010-.07c0-.02.01-.04.06-.08L466.75 512 338.88 384.14a.27.27 0 01-.05-.06l-.01-.02a.12.12 0 010-.07c0-.03.01-.05.05-.09l45.02-45.02a.2.2 0 01.09-.05.12.12 0 01.07 0c.02 0 .04.01.08.06L512 466.75l127.86-127.86c.04-.05.06-.06.08-.06a.12.12 0 01.07 0z"}}]},name:"close-circle",theme:"outlined"};const ip=op;var sp=function(t,r){return S.createElement(_e,$($({},t),{},{ref:r,icon:ip}))},up=S.forwardRef(sp);const cp=up;var lp={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z"}}]},name:"close",theme:"outlined"};const fp=lp;var dp=function(t,r){return S.createElement(_e,$($({},t),{},{ref:r,icon:fp}))},pp=S.forwardRef(dp);const hp=pp;var vp={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"exclamation-circle",theme:"filled"};const yp=vp;var mp=function(t,r){return S.createElement(_e,$($({},t),{},{ref:r,icon:yp}))},gp=S.forwardRef(mp);const bp=gp;var wp={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z"}}]},name:"exclamation-circle",theme:"outlined"};const Sp=wp;var Cp=function(t,r){return S.createElement(_e,$($({},t),{},{ref:r,icon:Sp}))},xp=S.forwardRef(Cp);const Ep=xp;var _p={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"info-circle",theme:"filled"};const Pp=_p;var $p=function(t,r){return S.createElement(_e,$($({},t),{},{ref:r,icon:Pp}))},Op=S.forwardRef($p);const Ap=Op;var Rp={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"}}]},name:"info-circle",theme:"outlined"};const Tp=Rp;var Mp=function(t,r){return S.createElement(_e,$($({},t),{},{ref:r,icon:Tp}))},Ip=S.forwardRef(Mp);const Np=Ip;var Fp={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};const Lp=Fp;var jp=function(t,r){return S.createElement(_e,$($({},t),{},{ref:r,icon:Lp}))},kp=S.forwardRef(jp);const Dp=kp;function mr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ho(e,t){for(var r=0;r=19)return!0;var a=Vr.isMemo(t)?t.type.type:t.type;return!(typeof a=="function"&&!((r=a.prototype)!==null&&r!==void 0&&r.render)&&a.$$typeof!==Vr.ForwardRef||typeof t=="function"&&!((n=t.prototype)!==null&&n!==void 0&&n.render)&&t.$$typeof!==Vr.ForwardRef)};function Zp(e){return S.isValidElement(e)&&!zp(e)}function Rr(e){var t=ns();return function(){var r,n=rr(e);if(t){var a=rr(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return Up(this,r)}}function Pw(e,t){var r=Object.assign({},e);return Array.isArray(t)&&t.forEach(function(n){delete r[n]}),r}function Xp(e){if(Array.isArray(e))return _n(e)}function us(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function eh(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function nr(e){return Xp(e)||us(e)||ua(e)||eh()}function th(e){return wi(e)||us(e)||ua(e)||Si()}function Ln(e,t){for(var r=e,n=0;n3&&arguments[3]!==void 0?arguments[3]:!1;return t.length&&n&&r===void 0&&!Ln(e,t.slice(0,-1))?e:cs(e,t,r,n)}function rh(e){return Y(e)==="object"&&e!==null&&Object.getPrototypeOf(e)===Object.prototype}function yo(e){return Array.isArray(e)?[]:{}}var nh=typeof Reflect>"u"?Object.keys:Reflect.ownKeys;function ah(){for(var e=arguments.length,t=new Array(e),r=0;r=0;--T){var R=this.tryEntries[T],U=R.completion;if(R.tryLoc==="root")return A("end");if(R.tryLoc<=this.prev){var W=n.call(R,"catchLoc"),V=n.call(R,"finallyLoc");if(W&&V){if(this.prev=0;--A){var T=this.tryEntries[A];if(T.tryLoc<=this.prev&&n.call(T,"finallyLoc")&&this.prev=0;--_){var A=this.tryEntries[_];if(A.finallyLoc===E)return this.complete(A.completion,A.afterLoc),L(A),C}},catch:function(E){for(var _=this.tryEntries.length-1;_>=0;--_){var A=this.tryEntries[_];if(A.tryLoc===E){var T=A.completion;if(T.type==="throw"){var R=T.arg;L(A)}return R}}throw Error("illegal catch attempt")},delegateYield:function(E,_,A){return this.delegate={iterator:q(E),resultName:_,nextLoc:A},this.method==="next"&&(this.arg=e),C}},t}function bo(e,t,r,n,a,o,i){try{var s=e[o](i),f=s.value}catch(u){return void r(u)}s.done?t(f):Promise.resolve(f).then(n,a)}function fs(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function i(f){bo(o,n,a,i,s,"next",f)}function s(f){bo(o,n,a,i,s,"throw",f)}i(void 0)})}}var At=$({},nc),mh=At.version,Yr=At.render,gh=At.unmountComponentAtNode,Tr;try{var bh=Number((mh||"").split(".")[0]);bh>=18&&(Tr=At.createRoot)}catch{}function wo(e){var t=At.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;t&&Y(t)==="object"&&(t.usingClientEntryPoint=e)}var ar="__rc_react_root__";function wh(e,t){wo(!0);var r=t[ar]||Tr(t);wo(!1),r.render(e),t[ar]=r}function Sh(e,t){Yr==null||Yr(e,t)}function Ch(e,t){if(Tr){wh(e,t);return}Sh(e,t)}function xh(e){return jn.apply(this,arguments)}function jn(){return jn=fs(St().mark(function e(t){return St().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",Promise.resolve().then(function(){var a;(a=t[ar])===null||a===void 0||a.unmount(),delete t[ar]}));case 1:case"end":return n.stop()}},e)})),jn.apply(this,arguments)}function Eh(e){gh(e)}function _h(e){return kn.apply(this,arguments)}function kn(){return kn=fs(St().mark(function e(t){return St().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:if(Tr===void 0){n.next=2;break}return n.abrupt("return",xh(t));case 2:Eh(t);case 3:case"end":return n.stop()}},e)})),kn.apply(this,arguments)}var Ph=["children"],ds=S.createContext({});function Aw(e){var t=e.children,r=Qe(e,Ph);return S.createElement(ds.Provider,{value:r},t)}var $h=function(e){br(r,e);var t=Rr(r);function r(){return mr(this,r),t.apply(this,arguments)}return gr(r,[{key:"render",value:function(){return this.props.children}}]),r}(S.Component);function Dn(e){var t=S.useRef();t.current=e;var r=S.useCallback(function(){for(var n,a=arguments.length,o=new Array(a),i=0;i1&&arguments[1]!==void 0?arguments[1]:1;Po+=1;var n=Po;function a(o){if(o===0)Cs(n),t();else{var i=ws(function(){a(o-1)});wa.set(n,i)}}return a(r),n};Bn.cancel=function(e){var t=wa.get(e);return Cs(e),Ss(t)};const Ih=function(){var e=S.useRef(null);function t(){Bn.cancel(e.current)}function r(n){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;t();var o=Bn(function(){a<=1?n({isCanceled:function(){return o!==e.current}}):r(n,a-1)});e.current=o}return S.useEffect(function(){return function(){t()}},[]),[r,t]};var Nh=[de,Ve,Ke,ba],Fh=[de,ps],xs=!1,Lh=!0;function Es(e){return e===Ke||e===ba}const jh=function(e,t,r){var n=Un(So),a=ne(n,2),o=a[0],i=a[1],s=Ih(),f=ne(s,2),u=f[0],d=f[1];function g(){i(de,!0)}var h=t?Fh:Nh;return bs(function(){if(o!==So&&o!==ba){var w=h.indexOf(o),b=h[w+1],x=r(o);x===xs?i(b,!0):b&&u(function(C){function m(){C.isCanceled()||i(b,!0)}x===!0?m():Promise.resolve(x).then(m)})}},[e,o]),S.useEffect(function(){return function(){d()}},[]),[g,o]};function kh(e,t,r,n){var a=n.motionEnter,o=a===void 0?!0:a,i=n.motionAppear,s=i===void 0?!0:i,f=n.motionLeave,u=f===void 0?!0:f,d=n.motionDeadline,g=n.motionLeaveImmediately,h=n.onAppearPrepare,w=n.onEnterPrepare,b=n.onLeavePrepare,x=n.onAppearStart,C=n.onEnterStart,m=n.onLeaveStart,y=n.onAppearActive,c=n.onEnterActive,l=n.onLeaveActive,v=n.onAppearEnd,p=n.onEnterEnd,O=n.onLeaveEnd,I=n.onVisibleChanged,M=Un(),j=ne(M,2),D=j[0],B=j[1],L=Oh(Ae),G=ne(L,2),q=G[0],P=G[1],E=Un(null),_=ne(E,2),A=_[0],T=_[1],R=q(),U=S.useRef(!1),W=S.useRef(null);function V(){return r()}var ve=S.useRef(!1);function le(){P(Ae),T(null,!0)}var ye=Dn(function(oe){var te=q();if(te!==Ae){var me=V();if(!(oe&&!oe.deadline&&oe.target!==me)){var Nt=ve.current,Ft;te===Ut&&Nt?Ft=v==null?void 0:v(me,oe):te===Bt&&Nt?Ft=p==null?void 0:p(me,oe):te===qt&&Nt&&(Ft=O==null?void 0:O(me,oe)),Nt&&Ft!==!1&&le()}}}),Yu=Mh(ye),Ju=ne(Yu,1),Qu=Ju[0],Ha=function(te){switch(te){case Ut:return z(z(z({},de,h),Ve,x),Ke,y);case Bt:return z(z(z({},de,w),Ve,C),Ke,c);case qt:return z(z(z({},de,b),Ve,m),Ke,l);default:return{}}},ct=S.useMemo(function(){return Ha(R)},[R]),Zu=jh(R,!e,function(oe){if(oe===de){var te=ct[de];return te?te(V()):xs}if(Ne in ct){var me;T(((me=ct[Ne])===null||me===void 0?void 0:me.call(ct,V(),null))||null)}return Ne===Ke&&R!==Ae&&(Qu(V()),d>0&&(clearTimeout(W.current),W.current=setTimeout(function(){ye({deadline:!0})},d))),Ne===ps&&le(),Lh}),za=ne(Zu,2),Xu=za[0],Ne=za[1],ec=Es(Ne);ve.current=ec,bs(function(){B(t);var oe=U.current;U.current=!0;var te;!oe&&t&&s&&(te=Ut),oe&&t&&o&&(te=Bt),(oe&&!t&&u||!oe&&g&&!t&&u)&&(te=qt);var me=Ha(te);te&&(e||me[de])?(P(te),Xu()):P(Ae)},[t]),S.useEffect(function(){(R===Ut&&!s||R===Bt&&!o||R===qt&&!u)&&P(Ae)},[s,o,u]),S.useEffect(function(){return function(){U.current=!1,clearTimeout(W.current)}},[]);var qr=S.useRef(!1);S.useEffect(function(){D&&(qr.current=!0),D!==void 0&&R===Ae&&((qr.current||D)&&(I==null||I(D)),qr.current=!0)},[D,R]);var Hr=A;return ct[de]&&Ne===Ve&&(Hr=$({transition:"none"},Hr)),[R,Ne,Hr,D??t]}function Dh(e){var t=e;Y(e)==="object"&&(t=e.transitionSupport);function r(a,o){return!!(a.motionName&&t&&o!==!1)}var n=S.forwardRef(function(a,o){var i=a.visible,s=i===void 0?!0:i,f=a.removeOnLeave,u=f===void 0?!0:f,d=a.forceRender,g=a.children,h=a.motionName,w=a.leavedClassName,b=a.eventProps,x=S.useContext(ds),C=x.motion,m=r(a,C),y=S.useRef(),c=S.useRef();function l(){try{return y.current instanceof HTMLElement?y.current:Wp(c.current)}catch{return null}}var v=kh(m,s,l,a),p=ne(v,4),O=p[0],I=p[1],M=p[2],j=p[3],D=S.useRef(j);j&&(D.current=!0);var B=S.useCallback(function(A){y.current=A,ss(o,A)},[o]),L,G=$($({},b),{},{visible:s});if(!g)L=null;else if(O===Ae)j?L=g($({},G),B):!u&&D.current&&w?L=g($($({},G),{},{className:w}),B):d||!u&&!w?L=g($($({},G),{},{style:{display:"none"}}),B):L=null;else{var q;I===de?q="prepare":Es(I)?q="active":I===Ve&&(q="start");var P=_o(h,"".concat(O,"-").concat(q));L=g($($({},G),{},{className:Oe(_o(h,O),z(z({},P,P&&q),h,typeof h=="string")),style:M}),B)}if(S.isValidElement(L)&&Qp(L)){var E=L,_=E.ref;_||(L=S.cloneElement(L,{ref:B}))}return S.createElement($h,{ref:c},L)});return n.displayName="CSSMotion",n}const Uh=Dh(gs);var qn="add",Hn="keep",zn="remove",Jr="removed";function Bh(e){var t;return e&&Y(e)==="object"&&"key"in e?t=e:t={key:e},$($({},t),{},{key:String(t.key)})}function Gn(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return e.map(Bh)}function qh(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=[],n=0,a=t.length,o=Gn(e),i=Gn(t);o.forEach(function(u){for(var d=!1,g=n;g1});return f.forEach(function(u){r=r.filter(function(d){var g=d.key,h=d.status;return g!==u||h!==zn}),r.forEach(function(d){d.key===u&&(d.status=Hn)})}),r}var Hh=["component","children","onVisibleChanged","onAllRemoved"],zh=["status"],Gh=["eventProps","visible","children","motionName","motionAppear","motionEnter","motionLeave","motionLeaveImmediately","motionDeadline","removeOnLeave","leavedClassName","onAppearPrepare","onAppearStart","onAppearActive","onAppearEnd","onEnterStart","onEnterActive","onEnterEnd","onLeaveStart","onLeaveActive","onLeaveEnd"];function Wh(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Uh,r=function(n){br(o,n);var a=Rr(o);function o(){var i;mr(this,o);for(var s=arguments.length,f=new Array(s),u=0;u=h&&(g.key=C[0].notice.key,g.updateMark=Oo(),g.userPassKey=d,C.shift()),C.push({notice:g,holderCallback:f})),{notices:C}})},n.remove=function(s){n.setState(function(f){var u=f.notices;return{notices:u.filter(function(d){var g=d.notice,h=g.key,w=g.userPassKey,b=w??h;return b!==s})}})},n.noticePropsMap={},n}return gr(r,[{key:"getTransitionName",value:function(){var a=this.props,o=a.prefixCls,i=a.animation,s=this.props.transitionName;return!s&&i&&(s="".concat(o,"-").concat(i)),s}},{key:"render",value:function(){var a=this,o=this.state.notices,i=this.props,s=i.prefixCls,f=i.className,u=i.closeIcon,d=i.style,g=[];return o.forEach(function(h,w){var b=h.notice,x=h.holderCallback,C=w===o.length-1?b.updateMark:void 0,m=b.key,y=b.userPassKey,c=$($($({prefixCls:s,closeIcon:u},b),b.props),{},{key:m,noticeKey:y||m,updateMark:C,onClose:function(v){var p;a.remove(v),(p=b.onClose)===null||p===void 0||p.call(b)},onClick:b.onClick,children:b.content});g.push(m),a.noticePropsMap[m]={props:c,holderCallback:x}}),S.createElement("div",{className:Oe(s,f),style:d},S.createElement(Vh,{keys:g,motionName:this.getTransitionName(),onVisibleChanged:function(w,b){var x=b.key;w||delete a.noticePropsMap[x]}},function(h){var w=h.key,b=h.className,x=h.style,C=h.visible,m=a.noticePropsMap[w],y=m.props,c=m.holderCallback;return c?S.createElement("div",{key:w,className:Oe(b,"".concat(s,"-hook-holder")),style:$({},x),ref:function(v){typeof w>"u"||(v?(a.hookRefs.set(w,v),c(v,y)):a.hookRefs.delete(w))}}):S.createElement(Sa,F({},y,{className:Oe(b,y==null?void 0:y.className),style:$($({},x),y==null?void 0:y.style),visible:C}))}))}}]),r}(S.Component);et.newInstance=void 0;et.defaultProps={prefixCls:"rc-notification",animation:"fade",style:{top:65,left:"50%"}};et.newInstance=function(t,r){var n=t||{},a=n.getContainer,o=Qe(n,Kh),i=document.createElement("div");if(a){var s=a();s.appendChild(i)}else document.body.appendChild(i);var f=!1;function u(d){f||(f=!0,r({notice:function(h){d.add(h)},removeNotice:function(h){d.remove(h)},component:d,destroy:function(){_h(i),i.parentNode&&i.parentNode.removeChild(i)},useNotification:function(){return Ca(d)}}))}Ch(S.createElement(et,F({},o,{ref:u})),i)};function Jh(e,t){var r=function(){var a,o,i=null,s={add:function(x,C){i==null||i.component.add(x,C)}},f=Ca(s),u=ne(f,2),d=u[0],g=u[1];function h(b){var x=b.prefixCls,C=a("message",x),m=a(),y=b.key||Ms(),c=new Promise(function(v){var p=function(){return typeof b.onClose=="function"&&b.onClose(),v(!0)};e(F(F({},b),{prefixCls:C,rootPrefixCls:m,getPopupContainer:o}),function(O){var I=O.prefixCls,M=O.instance;i=M,d(t(F(F({},b),{key:y,onClose:p}),I))})}),l=function(){i&&i.removeNotice(y)};return l.then=function(v,p){return c.then(v,p)},l.promise=c,l}var w=S.useRef({});return w.current.open=h,Fs.forEach(function(b){return js(w.current,b)}),[w.current,S.createElement(Ea,{key:"holder"},function(b){return a=b.getPrefixCls,o=b.getPopupContainer,g})]};return r}var ae,_s=3,Ps,Qh=1,$s="",Wn="move-up",Os=!1,As,Rs,Ts=!1;function Ms(){return Qh++}function Zh(e){e.top!==void 0&&(Ps=e.top,ae=null),e.duration!==void 0&&(_s=e.duration),e.prefixCls!==void 0&&($s=e.prefixCls),e.getContainer!==void 0&&(As=e.getContainer,ae=null),e.transitionName!==void 0&&(Wn=e.transitionName,ae=null,Os=!0),e.maxCount!==void 0&&(Rs=e.maxCount,ae=null),e.rtl!==void 0&&(Ts=e.rtl)}function Is(e,t){var r=e.prefixCls,n=e.getPopupContainer,a=Ys(),o=a.getPrefixCls,i=a.getRootPrefixCls,s=a.getIconPrefixCls,f=o("message",r||$s),u=i(e.rootPrefixCls,f),d=s();if(ae){t({prefixCls:f,rootPrefixCls:u,iconPrefixCls:d,instance:ae});return}var g={prefixCls:f,transitionName:Os?Wn:"".concat(u,"-").concat(Wn),style:{top:Ps},getContainer:As||n,maxCount:Rs};et.newInstance(g,function(h){if(ae){t({prefixCls:f,rootPrefixCls:u,iconPrefixCls:d,instance:ae});return}ae=h,t({prefixCls:f,rootPrefixCls:u,iconPrefixCls:d,instance:h})})}var Ns={info:Ap,success:Kd,error:ap,warning:bp,loading:Dp},Fs=Object.keys(Ns);function Ls(e,t,r){var n=e.duration!==void 0?e.duration:_s,a=Ns[e.type],o=Oe("".concat(t,"-custom-content"),z(z({},"".concat(t,"-").concat(e.type),e.type),"".concat(t,"-rtl"),Ts===!0));return{key:e.key,duration:n,style:e.style||{},className:e.className,content:S.createElement(Js,{iconPrefixCls:r},S.createElement("div",{className:o},e.icon||a&&S.createElement(a,null),S.createElement("span",null,e.content))),onClose:e.onClose,onClick:e.onClick}}function Xh(e){var t=e.key||Ms(),r=new Promise(function(a){var o=function(){return typeof e.onClose=="function"&&e.onClose(),a(!0)};Is(e,function(i){var s=i.prefixCls,f=i.iconPrefixCls,u=i.instance;u.notice(Ls(F(F({},e),{key:t,onClose:o}),s,f))})}),n=function(){var o;ae&&(ae.removeNotice(t),(o=e.onClose)===null||o===void 0||o.call(e))};return n.then=function(a,o){return r.then(a,o)},n.promise=r,n}function ev(e){return Object.prototype.toString.call(e)==="[object Object]"&&!!e.content}var Ct={open:Xh,config:Zh,destroy:function(t){if(ae)if(t){var r=ae,n=r.removeNotice;n(t)}else{var a=ae,o=a.destroy;o(),ae=null}}};function js(e,t){e[t]=function(r,n,a){return ev(r)?e.open(F(F({},r),{type:t})):(typeof n=="function"&&(a=n,n=void 0),e.open({content:r,duration:n,type:t,onClose:a}))}}Fs.forEach(function(e){return js(Ct,e)});Ct.warn=Ct.warning;Ct.useMessage=Jh(Is,Ls);const tv=Ct;function rv(e,t){var r=function(){var a,o=null,i={add:function(b,x){o==null||o.component.add(b,x)}},s=Ca(i),f=ne(s,2),u=f[0],d=f[1];function g(w){var b=w.prefixCls,x=a("notification",b);e(F(F({},w),{prefixCls:x}),function(C){var m=C.prefixCls,y=C.instance;o=y,u(t(w,m))})}var h=S.useRef({});return h.current.open=g,["success","info","warning","error"].forEach(function(w){h.current[w]=function(b){return h.current.open(F(F({},b),{type:w}))}}),[h.current,S.createElement(Ea,{key:"holder"},function(w){return a=w.getPrefixCls,d})]};return r}globalThis&&globalThis.__awaiter;var Fe={},ks=4.5,Ds=24,Us=24,Bs="",Vn="topRight",qs,Hs,zs=!1,Gs;function nv(e){var t=e.duration,r=e.placement,n=e.bottom,a=e.top,o=e.getContainer,i=e.closeIcon,s=e.prefixCls;s!==void 0&&(Bs=s),t!==void 0&&(ks=t),r!==void 0?Vn=r:e.rtl&&(Vn="topLeft"),n!==void 0&&(Us=n),a!==void 0&&(Ds=a),o!==void 0&&(qs=o),i!==void 0&&(Hs=i),e.rtl!==void 0&&(zs=e.rtl),e.maxCount!==void 0&&(Gs=e.maxCount)}function av(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ds,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Us,n;switch(e){case"top":n={left:"50%",transform:"translateX(-50%)",right:"auto",top:t,bottom:"auto"};break;case"topLeft":n={left:0,top:t,bottom:"auto"};break;case"topRight":n={right:0,top:t,bottom:"auto"};break;case"bottom":n={left:"50%",transform:"translateX(-50%)",right:"auto",top:"auto",bottom:r};break;case"bottomLeft":n={left:0,top:"auto",bottom:r};break;default:n={right:0,top:"auto",bottom:r};break}return n}function Ws(e,t){var r=e.placement,n=r===void 0?Vn:r,a=e.top,o=e.bottom,i=e.getContainer,s=i===void 0?qs:i,f=e.prefixCls,u=Ys(),d=u.getPrefixCls,g=u.getIconPrefixCls,h=d("notification",f||Bs),w=g(),b="".concat(h,"-").concat(n),x=Fe[b];if(x){Promise.resolve(x).then(function(m){t({prefixCls:"".concat(h,"-notice"),iconPrefixCls:w,instance:m})});return}var C=Oe("".concat(h,"-").concat(n),z({},"".concat(h,"-rtl"),zs===!0));Fe[b]=new Promise(function(m){et.newInstance({prefixCls:h,className:C,style:av(n,a,o),getContainer:s,maxCount:Gs},function(y){m(y),t({prefixCls:"".concat(h,"-notice"),iconPrefixCls:w,instance:y})})})}var ov={success:Xd,info:Np,error:cp,warning:Ep};function Vs(e,t,r){var n=e.duration,a=e.icon,o=e.type,i=e.description,s=e.message,f=e.btn,u=e.onClose,d=e.onClick,g=e.key,h=e.style,w=e.className,b=e.closeIcon,x=b===void 0?Hs:b,C=e.props,m=n===void 0?ks:n,y=null;a?y=S.createElement("span",{className:"".concat(t,"-icon")},e.icon):o&&(y=S.createElement(ov[o]||null,{className:"".concat(t,"-icon ").concat(t,"-icon-").concat(o)}));var c=typeof x>"u"?S.createElement("span",{className:"".concat(t,"-close-x")},S.createElement(hp,{className:"".concat(t,"-close-icon")})):x,l=!i&&y?S.createElement("span",{className:"".concat(t,"-message-single-line-auto-margin")}):null;return{content:S.createElement(Js,{iconPrefixCls:r},S.createElement("div",{className:y?"".concat(t,"-with-icon"):"",role:"alert"},y,S.createElement("div",{className:"".concat(t,"-message")},l,s),S.createElement("div",{className:"".concat(t,"-description")},i),f?S.createElement("span",{className:"".concat(t,"-btn")},f):null)),duration:m,closable:!0,closeIcon:c,onClose:u,onClick:d,key:g,style:h||{},className:Oe(w,z({},"".concat(t,"-").concat(o),!!o)),props:C}}function iv(e){Ws(e,function(t){var r=t.prefixCls,n=t.iconPrefixCls,a=t.instance;a.notice(Vs(e,r,n))})}var tt={open:iv,close:function(t){Object.keys(Fe).forEach(function(r){return Promise.resolve(Fe[r]).then(function(n){n.removeNotice(t)})})},config:nv,destroy:function(){Object.keys(Fe).forEach(function(t){Promise.resolve(Fe[t]).then(function(r){r.destroy()}),delete Fe[t]})}};["success","info","warning","error"].forEach(function(e){tt[e]=function(t){return tt.open(F(F({},t),{type:e}))}});tt.warn=tt.warning;tt.useNotification=rv(Ws,Vs);const sv=tt;var uv=function(t,r){return r||(t?"ant-".concat(t):"ant")},xa=S.createContext({getPrefixCls:uv}),Ea=xa.Consumer,cv="-ant-".concat(Date.now(),"-").concat(Math.random());function lv(e,t){var r={},n=function(d,g){var h=d.clone();return h=(g==null?void 0:g(h))||h,h.toRgbString()},a=function(d,g){var h=new Wt(d),w=Ze(h.toRgbString());r["".concat(g,"-color")]=n(h),r["".concat(g,"-color-disabled")]=w[1],r["".concat(g,"-color-hover")]=w[4],r["".concat(g,"-color-active")]=w[6],r["".concat(g,"-color-outline")]=h.clone().setAlpha(.2).toRgbString(),r["".concat(g,"-color-deprecated-bg")]=w[0],r["".concat(g,"-color-deprecated-border")]=w[2]};if(t.primaryColor){a(t.primaryColor,"primary");var o=new Wt(t.primaryColor),i=Ze(o.toRgbString());i.forEach(function(u,d){r["primary-".concat(d+1)]=u}),r["primary-color-deprecated-l-35"]=n(o,function(u){return u.lighten(35)}),r["primary-color-deprecated-l-20"]=n(o,function(u){return u.lighten(20)}),r["primary-color-deprecated-t-20"]=n(o,function(u){return u.tint(20)}),r["primary-color-deprecated-t-50"]=n(o,function(u){return u.tint(50)}),r["primary-color-deprecated-f-12"]=n(o,function(u){return u.setAlpha(u.getAlpha()*.12)});var s=new Wt(i[0]);r["primary-color-active-deprecated-f-30"]=n(s,function(u){return u.setAlpha(u.getAlpha()*.3)}),r["primary-color-active-deprecated-d-02"]=n(s,function(u){return u.darken(2)})}t.successColor&&a(t.successColor,"success"),t.warningColor&&a(t.warningColor,"warning"),t.errorColor&&a(t.errorColor,"error"),t.infoColor&&a(t.infoColor,"info");var f=Object.keys(r).map(function(u){return"--".concat(e,"-").concat(u,": ").concat(r[u],";")});return` + :root { + `.concat(f.join(` +`),` + } + `).trim()}function fv(e,t){var r=lv(e,t);$t()&&Ti(r,"".concat(cv,"-dynamic-theme"))}var Kn=S.createContext(!1),dv=function(t){var r=t.children,n=t.disabled,a=S.useContext(Kn);return S.createElement(Kn.Provider,{value:n??a},r)};const Rw=Kn;var Yn=S.createContext(void 0),pv=function(t){var r=t.children,n=t.size;return S.createElement(Yn.Consumer,null,function(a){return S.createElement(Yn.Provider,{value:n||a},r)})};const hv=Yn;var vv=["getTargetContainer","getPopupContainer","renderEmpty","pageHeader","input","pagination","form"],yv="ant",mv="anticon",or,Ks;function Jt(){return or||yv}function gv(){return Ks||mv}var bv=function(t){var r=t.prefixCls,n=t.iconPrefixCls,a=t.theme;r!==void 0&&(or=r),n!==void 0&&(Ks=n),a&&fv(Jt(),a)},Ys=function(){return{getPrefixCls:function(r,n){return n||(r?"".concat(Jt(),"-").concat(r):Jt())},getIconPrefixCls:gv,getRootPrefixCls:function(r,n){return r||or||(n&&n.includes("-")?n.replace(/^(.*)-[^-]*$/,"$1"):Jt())}}},wv=function(t){var r=t.children,n=t.csp,a=t.autoInsertSpaceInButton,o=t.form,i=t.locale,s=t.componentSize,f=t.direction,u=t.space,d=t.virtual,g=t.dropdownMatchSelectWidth,h=t.legacyLocale,w=t.parentContext,b=t.iconPrefixCls,x=t.componentDisabled,C=S.useCallback(function(p,O){var I=t.prefixCls;if(O)return O;var M=I||w.getPrefixCls("");return p?"".concat(M,"-").concat(p):M},[w.getPrefixCls,t.prefixCls]),m=F(F({},w),{csp:n,autoInsertSpaceInButton:a,locale:i||h,direction:f,space:u,virtual:d,dropdownMatchSelectWidth:g,getPrefixCls:C});vv.forEach(function(p){var O=t[p];O&&(m[p]=O)});var y=is(function(){return m},m,function(p,O){var I=Object.keys(p),M=Object.keys(O);return I.length!==M.length||I.some(function(j){return p[j]!==O[j]})}),c=S.useMemo(function(){return{prefixCls:b,csp:n}},[b,n]),l=r,v=S.useMemo(function(){var p,O,I,M;return ah(((p=Xe.Form)===null||p===void 0?void 0:p.defaultValidateMessages)||{},((I=(O=y.locale)===null||O===void 0?void 0:O.Form)===null||I===void 0?void 0:I.defaultValidateMessages)||{},((M=y.form)===null||M===void 0?void 0:M.validateMessages)||{},(o==null?void 0:o.validateMessages)||{})},[y,o==null?void 0:o.validateMessages]);return Object.keys(v).length>0&&(l=S.createElement(oh.Provider,{value:v},r)),i&&(l=S.createElement(hh,{locale:i,_ANT_MARK__:dh},l)),(b||n)&&(l=S.createElement(sa.Provider,{value:c},l)),s&&(l=S.createElement(pv,{size:s},l)),x!==void 0&&(l=S.createElement(dv,{disabled:x},l)),S.createElement(xa.Provider,{value:y},l)},Mr=function(t){return S.useEffect(function(){t.direction&&(tv.config({rtl:t.direction==="rtl"}),sv.config({rtl:t.direction==="rtl"}))},[t.direction]),S.createElement(yh,null,function(r,n,a){return S.createElement(Ea,null,function(o){return S.createElement(wv,F({parentContext:o,legacyLocale:a},t))})})};Mr.ConfigContext=xa;Mr.SizeContext=hv;Mr.config=bv;const Js=Mr;var Qs=S.isValidElement;function Tw(e){return e&&Qs(e)&&e.type===S.Fragment}function Sv(e,t,r){return Qs(e)?S.cloneElement(e,typeof r=="function"?r(e.props||{}):r):t}function Mw(e,t){return Sv(e,e,t)}var Iw=function(){for(var t=arguments.length,r=new Array(t),n=0;n-1}var kv=jv,Dv=Ir;function Uv(e,t){var r=this.__data__,n=Dv(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Bv=Uv,qv=Ev,Hv=Mv,zv=Fv,Gv=kv,Wv=Bv;function at(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=Vy}var Yy=Ky,Io=function(){return Io=Object.assign||function(t){for(var r,n=1,a=arguments.length;n-1e3&&e<1e3||tu.call(/e/,t))return t;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof e=="number"){var n=e<0?-Do(-e):Do(e);if(n!==e){var a=String(n),o=Oa.call(t,a.length+1);return Te.call(a,r,"$&_")+"."+Te.call(Te.call(o,/([0-9]{3})/g,"$&_"),/_$/,"")}}return Te.call(t,r,"$&_")}var Zn=Zy,qo=Zn.custom,Ho=ou(qo)?qo:null,nu={__proto__:null,double:'"',single:"'"},um={__proto__:null,double:/(["\\])/g,single:/(['\\])/g},Lr=function e(t,r,n,a){var o=r||{};if($e(o,"quoteStyle")&&!$e(nu,o.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if($e(o,"maxStringLength")&&(typeof o.maxStringLength=="number"?o.maxStringLength<0&&o.maxStringLength!==1/0:o.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var i=$e(o,"customInspect")?o.customInspect:!0;if(typeof i!="boolean"&&i!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if($e(o,"indent")&&o.indent!==null&&o.indent!==" "&&!(parseInt(o.indent,10)===o.indent&&o.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if($e(o,"numericSeparator")&&typeof o.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var s=o.numericSeparator;if(typeof t>"u")return"undefined";if(t===null)return"null";if(typeof t=="boolean")return t?"true":"false";if(typeof t=="string")return su(t,o);if(typeof t=="number"){if(t===0)return 1/0/t>0?"0":"-0";var f=String(t);return s?Bo(t,f):f}if(typeof t=="bigint"){var u=String(t)+"n";return s?Bo(t,u):u}var d=typeof o.depth>"u"?5:o.depth;if(typeof n>"u"&&(n=0),n>=d&&d>0&&typeof t=="object")return Xn(t)?"[Array]":"[Object]";var g=Pm(o,n);if(typeof a>"u")a=[];else if(iu(a,t)>=0)return"[Circular]";function h(L,G,q){if(G&&(a=sm.call(a),a.push(G)),q){var P={depth:o.depth};return $e(o,"quoteStyle")&&(P.quoteStyle=o.quoteStyle),e(L,P,n+1,a)}return e(L,o,n+1,a)}if(typeof t=="function"&&!zo(t)){var w=mm(t),b=zt(t,h);return"[Function"+(w?": "+w:" (anonymous)")+"]"+(b.length>0?" { "+we.call(b,", ")+" }":"")}if(ou(t)){var x=rt?Te.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):Qn.call(t);return typeof t=="object"&&!rt?ft(x):x}if(xm(t)){for(var C="<"+jo.call(String(t.nodeName)),m=t.attributes||[],y=0;y",C}if(Xn(t)){if(t.length===0)return"[]";var c=zt(t,h);return g&&!_m(c)?"["+ea(c,g)+"]":"[ "+we.call(c,", ")+" ]"}if(fm(t)){var l=zt(t,h);return!("cause"in Error.prototype)&&"cause"in t&&!ru.call(t,"cause")?"{ ["+String(t)+"] "+we.call(ko.call("[cause]: "+h(t.cause),l),", ")+" }":l.length===0?"["+String(t)+"]":"{ ["+String(t)+"] "+we.call(l,", ")+" }"}if(typeof t=="object"&&i){if(Ho&&typeof t[Ho]=="function"&&Zn)return Zn(t,{depth:d-n});if(i!=="symbol"&&typeof t.inspect=="function")return t.inspect()}if(gm(t)){var v=[];return No&&No.call(t,function(L,G){v.push(h(G,t,!0)+" => "+h(L,t))}),Go("Map",ir.call(t),v,g)}if(Sm(t)){var p=[];return Fo&&Fo.call(t,function(L){p.push(h(L,t))}),Go("Set",sr.call(t),p,g)}if(bm(t))return tn("WeakMap");if(Cm(t))return tn("WeakSet");if(wm(t))return tn("WeakRef");if(pm(t))return ft(h(Number(t)));if(vm(t))return ft(h(Jn.call(t)));if(hm(t))return ft(rm.call(t));if(dm(t))return ft(h(String(t)));if(typeof window<"u"&&t===window)return"{ [object Window] }";if(typeof globalThis<"u"&&t===globalThis||typeof Ce<"u"&&t===Ce)return"{ [object globalThis] }";if(!lm(t)&&!zo(t)){var O=zt(t,h),I=Uo?Uo(t)===Object.prototype:t instanceof Object||t.constructor===Object,M=t instanceof Object?"":"null prototype",j=!I&&mt&&Object(t)===t&&mt in t?Oa.call(Ie(t),8,-1):M?"Object":"",D=I||typeof t.constructor!="function"?"":t.constructor.name?t.constructor.name+" ":"",B=D+(j||M?"["+we.call(ko.call([],j||[],M||[]),": ")+"] ":"");return O.length===0?B+"{}":g?B+"{"+ea(O,g)+"}":B+"{ "+we.call(O,", ")+" }"}return String(t)};function au(e,t,r){var n=r.quoteStyle||t,a=nu[n];return a+e+a}function cm(e){return Te.call(String(e),/"/g,""")}function Be(e){return!mt||!(typeof e=="object"&&(mt in e||typeof e[mt]<"u"))}function Xn(e){return Ie(e)==="[object Array]"&&Be(e)}function lm(e){return Ie(e)==="[object Date]"&&Be(e)}function zo(e){return Ie(e)==="[object RegExp]"&&Be(e)}function fm(e){return Ie(e)==="[object Error]"&&Be(e)}function dm(e){return Ie(e)==="[object String]"&&Be(e)}function pm(e){return Ie(e)==="[object Number]"&&Be(e)}function hm(e){return Ie(e)==="[object Boolean]"&&Be(e)}function ou(e){if(rt)return e&&typeof e=="object"&&e instanceof Symbol;if(typeof e=="symbol")return!0;if(!e||typeof e!="object"||!Qn)return!1;try{return Qn.call(e),!0}catch{}return!1}function vm(e){if(!e||typeof e!="object"||!Jn)return!1;try{return Jn.call(e),!0}catch{}return!1}var ym=Object.prototype.hasOwnProperty||function(e){return e in this};function $e(e,t){return ym.call(e,t)}function Ie(e){return nm.call(e)}function mm(e){if(e.name)return e.name;var t=om.call(am.call(e),/^function\s*([\w$]+)/);return t?t[1]:null}function iu(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,n=e.length;rt.maxStringLength){var r=e.length-t.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return su(Oa.call(e,0,t.maxStringLength),t)+n}var a=um[t.quoteStyle||"single"];a.lastIndex=0;var o=Te.call(Te.call(e,a,"\\$1"),/[\x00-\x1f]/g,Em);return au(o,"single",t)}function Em(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+im.call(t.toString(16))}function ft(e){return"Object("+e+")"}function tn(e){return e+" { ? }"}function Go(e,t,r,n){var a=n?ea(r,n):we.call(r,", ");return e+" ("+t+") {"+a+"}"}function _m(e){for(var t=0;t=0)return!1;return!0}function Pm(e,t){var r;if(e.indent===" ")r=" ";else if(typeof e.indent=="number"&&e.indent>0)r=we.call(Array(e.indent+1)," ");else return null;return{base:r,prev:we.call(Array(t+1),r)}}function ea(e,t){if(e.length===0)return"";var r=` +`+t.prev+t.base;return r+we.call(e,","+r)+` +`+t.prev}function zt(e,t){var r=Xn(e),n=[];if(r){n.length=e.length;for(var a=0;a"u"||!Q?N:Q(Uint8Array),De={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?N:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?N:ArrayBuffer,"%ArrayIteratorPrototype%":qe&&Q?Q([][Symbol.iterator]()):N,"%AsyncFromSyncIteratorPrototype%":N,"%AsyncFunction%":We,"%AsyncGenerator%":We,"%AsyncGeneratorFunction%":We,"%AsyncIteratorPrototype%":We,"%Atomics%":typeof Atomics>"u"?N:Atomics,"%BigInt%":typeof BigInt>"u"?N:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?N:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?N:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?N:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":hg,"%eval%":eval,"%EvalError%":vg,"%Float16Array%":typeof Float16Array>"u"?N:Float16Array,"%Float32Array%":typeof Float32Array>"u"?N:Float32Array,"%Float64Array%":typeof Float64Array>"u"?N:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?N:FinalizationRegistry,"%Function%":hu,"%GeneratorFunction%":We,"%Int8Array%":typeof Int8Array>"u"?N:Int8Array,"%Int16Array%":typeof Int16Array>"u"?N:Int16Array,"%Int32Array%":typeof Int32Array>"u"?N:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":qe&&Q?Q(Q([][Symbol.iterator]())):N,"%JSON%":typeof JSON=="object"?JSON:N,"%Map%":typeof Map>"u"?N:Map,"%MapIteratorPrototype%":typeof Map>"u"||!qe||!Q?N:Q(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":pg,"%Object.getOwnPropertyDescriptor%":xt,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?N:Promise,"%Proxy%":typeof Proxy>"u"?N:Proxy,"%RangeError%":yg,"%ReferenceError%":mg,"%Reflect%":typeof Reflect>"u"?N:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?N:Set,"%SetIteratorPrototype%":typeof Set>"u"||!qe||!Q?N:Q(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?N:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":qe&&Q?Q(""[Symbol.iterator]()):N,"%Symbol%":qe?Symbol:N,"%SyntaxError%":nt,"%ThrowTypeError%":$g,"%TypedArray%":Rg,"%TypeError%":Je,"%Uint8Array%":typeof Uint8Array>"u"?N:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?N:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?N:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?N:Uint32Array,"%URIError%":gg,"%WeakMap%":typeof WeakMap>"u"?N:WeakMap,"%WeakRef%":typeof WeakRef>"u"?N:WeakRef,"%WeakSet%":typeof WeakSet>"u"?N:WeakSet,"%Function.prototype.call%":Rt,"%Function.prototype.apply%":vu,"%Object.defineProperty%":Pg,"%Object.getPrototypeOf%":Og,"%Math.abs%":bg,"%Math.floor%":wg,"%Math.max%":Sg,"%Math.min%":Cg,"%Math.pow%":xg,"%Math.round%":Eg,"%Math.sign%":_g,"%Reflect.getPrototypeOf%":Ag};if(Q)try{null.error}catch(e){var Tg=Q(Q(e));De["%Error.prototype%"]=Tg}var Mg=function e(t){var r;if(t==="%AsyncFunction%")r=hn("async function () {}");else if(t==="%GeneratorFunction%")r=hn("function* () {}");else if(t==="%AsyncGeneratorFunction%")r=hn("async function* () {}");else if(t==="%AsyncGenerator%"){var n=e("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(t==="%AsyncIteratorPrototype%"){var a=e("%AsyncGenerator%");a&&Q&&(r=Q(a.prototype))}return De[t]=r,r},ni={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Tt=kr(),ur=dg(),Ig=Tt.call(Rt,Array.prototype.concat),Ng=Tt.call(vu,Array.prototype.splice),ai=Tt.call(Rt,String.prototype.replace),cr=Tt.call(Rt,String.prototype.slice),Fg=Tt.call(Rt,RegExp.prototype.exec),Lg=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,jg=/\\(\\)?/g,kg=function(t){var r=cr(t,0,1),n=cr(t,-1);if(r==="%"&&n!=="%")throw new nt("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new nt("invalid intrinsic syntax, expected opening `%`");var a=[];return ai(t,Lg,function(o,i,s,f){a[a.length]=s?ai(f,jg,"$1"):i||o}),a},Dg=function(t,r){var n=t,a;if(ur(ni,n)&&(a=ni[n],n="%"+a[0]+"%"),ur(De,n)){var o=De[n];if(o===We&&(o=Mg(n)),typeof o>"u"&&!r)throw new Je("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:a,name:n,value:o}}throw new nt("intrinsic "+t+" does not exist!")},Ra=function(t,r){if(typeof t!="string"||t.length===0)throw new Je("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new Je('"allowMissing" argument must be a boolean');if(Fg(/^%?[^%]*%?$/,t)===null)throw new nt("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=kg(t),a=n.length>0?n[0]:"",o=Dg("%"+a+"%",r),i=o.name,s=o.value,f=!1,u=o.alias;u&&(a=u[0],Ng(n,Ig([0,1],u)));for(var d=1,g=!0;d=n.length){var x=xt(s,h);g=!!x,g&&"get"in x&&!("originalValue"in x.get)?s=x.get:s=s[h]}else g=ur(s,h),s=s[h];g&&!f&&(De[i]=s)}}return s},yu=Ra,mu=pu,Ug=mu([yu("%String.prototype.indexOf%")]),gu=function(t,r){var n=yu(t,!!r);return typeof n=="function"&&Ug(t,".prototype.")>-1?mu([n]):n},Bg=Ra,Mt=gu,qg=Lr,Hg=st,oi=Bg("%Map%",!0),zg=Mt("Map.prototype.get",!0),Gg=Mt("Map.prototype.set",!0),Wg=Mt("Map.prototype.has",!0),Vg=Mt("Map.prototype.delete",!0),Kg=Mt("Map.prototype.size",!0),bu=!!oi&&function(){var t,r={assert:function(n){if(!r.has(n))throw new Hg("Side channel does not contain "+qg(n))},delete:function(n){if(t){var a=Vg(t,n);return Kg(t)===0&&(t=void 0),a}return!1},get:function(n){if(t)return zg(t,n)},has:function(n){return t?Wg(t,n):!1},set:function(n,a){t||(t=new oi),Gg(t,n,a)}};return r},Yg=Ra,Dr=gu,Jg=Lr,Gt=bu,Qg=st,He=Yg("%WeakMap%",!0),Zg=Dr("WeakMap.prototype.get",!0),Xg=Dr("WeakMap.prototype.set",!0),e1=Dr("WeakMap.prototype.has",!0),t1=Dr("WeakMap.prototype.delete",!0),r1=He?function(){var t,r,n={assert:function(a){if(!n.has(a))throw new Qg("Side channel does not contain "+Jg(a))},delete:function(a){if(He&&a&&(typeof a=="object"||typeof a=="function")){if(t)return t1(t,a)}else if(Gt&&r)return r.delete(a);return!1},get:function(a){return He&&a&&(typeof a=="object"||typeof a=="function")&&t?Zg(t,a):r&&r.get(a)},has:function(a){return He&&a&&(typeof a=="object"||typeof a=="function")&&t?e1(t,a):!!r&&r.has(a)},set:function(a,o){He&&a&&(typeof a=="object"||typeof a=="function")?(t||(t=new He),Xg(t,a,o)):Gt&&(r||(r=Gt()),r.set(a,o))}};return n}:Gt,n1=st,a1=Lr,o1=Im,i1=bu,s1=r1,u1=s1||i1||o1,wu=function(){var t,r={assert:function(n){if(!r.has(n))throw new n1("Side channel does not contain "+a1(n))},delete:function(n){return!!t&&t.delete(n)},get:function(n){return t&&t.get(n)},has:function(n){return!!t&&t.has(n)},set:function(n,a){t||(t=u1()),t.set(n,a)}};return r},c1=String.prototype.replace,l1=/%20/g,yn={RFC1738:"RFC1738",RFC3986:"RFC3986"},Ta={default:yn.RFC3986,formatters:{RFC1738:function(e){return c1.call(e,l1,"+")},RFC3986:function(e){return String(e)}},RFC1738:yn.RFC1738,RFC3986:yn.RFC3986},f1=Ta,d1=wu,mn=Object.prototype.hasOwnProperty,Le=Array.isArray,Ur=d1(),Ye=function(t,r){return Ur.set(t,r),t},je=function(t){return Ur.has(t)},dt=function(t){return Ur.get(t)},ta=function(t,r){Ur.set(t,r)},ge=function(){for(var e=[],t=0;t<256;++t)e[e.length]="%"+((t<16?"0":"")+t.toString(16)).toUpperCase();return e}(),p1=function(t){for(;t.length>1;){var r=t.pop(),n=r.obj[r.prop];if(Le(n)){for(var a=[],o=0;on.arrayLimit)return Ye(gt(t.concat(r),n),a);t[a]=r}else if(t&&typeof t=="object")if(je(t)){var o=dt(t)+1;t[o]=r,ta(t,o)}else(n&&(n.plainObjects||n.allowPrototypes)||!mn.call(Object.prototype,r))&&(t[r]=!0);else return[t,r];return t}if(!t||typeof t!="object"){if(je(r)){for(var i=Object.keys(r),s=n&&n.plainObjects?{__proto__:null,0:t}:{0:t},f=0;fn.arrayLimit?Ye(gt(d,n),d.length-1):d}var g=t;return Le(t)&&!Le(r)&&(g=gt(t,n)),Le(t)&&Le(r)?(r.forEach(function(h,w){if(mn.call(t,w)){var b=t[w];b&&typeof b=="object"&&h&&typeof h=="object"?t[w]=e(b,h,n):t[t.length]=h}else t[w]=h}),t):Object.keys(r).reduce(function(h,w){var b=r[w];if(mn.call(h,w)?h[w]=e(h[w],b,n):h[w]=b,je(r)&&!je(h)&&Ye(h,dt(r)),je(h)){var x=parseInt(w,10);String(x)===w&&x>=0&&x>dt(h)&&ta(h,x)}return h},g)},v1=function(t,r){return Object.keys(r).reduce(function(n,a){return n[a]=r[a],n},t)},y1=function(e,t,r){var n=e.replace(/\+/g," ");if(r==="iso-8859-1")return n.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(n)}catch{return n}},gn=1024,m1=function(t,r,n,a,o){if(t.length===0)return t;var i=t;if(typeof t=="symbol"?i=Symbol.prototype.toString.call(t):typeof t!="string"&&(i=String(t)),n==="iso-8859-1")return escape(i).replace(/%u[0-9a-f]{4}/gi,function(w){return"%26%23"+parseInt(w.slice(2),16)+"%3B"});for(var s="",f=0;f=gn?i.slice(f,f+gn):i,d=[],g=0;g=48&&h<=57||h>=65&&h<=90||h>=97&&h<=122||o===f1.RFC1738&&(h===40||h===41)){d[d.length]=u.charAt(g);continue}if(h<128){d[d.length]=ge[h];continue}if(h<2048){d[d.length]=ge[192|h>>6]+ge[128|h&63];continue}if(h<55296||h>=57344){d[d.length]=ge[224|h>>12]+ge[128|h>>6&63]+ge[128|h&63];continue}g+=1,h=65536+((h&1023)<<10|u.charCodeAt(g)&1023),d[d.length]=ge[240|h>>18]+ge[128|h>>12&63]+ge[128|h>>6&63]+ge[128|h&63]}s+=d.join("")}return s},g1=function(t){for(var r=[{obj:{o:t},prop:"o"}],n=[],a=0;an?Ye(gt(i,{plainObjects:a}),i.length-1):i},C1=function(t,r){if(Le(t)){for(var n=[],a=0;a"u"&&(v=0)}if(typeof d=="function"?c=d(r,c):c instanceof Date?c=w(c):n==="comma"&&be(c)&&(c=Xt.maybeMap(c,function(T){return T instanceof Date?w(T):T})),c===null){if(i)return u&&!C?u(r,K.encoder,m,"key",b):r;c=""}if(P1(c)||Xt.isBuffer(c)){if(u){var I=C?r:u(r,K.encoder,m,"key",b);return[x(I)+"="+x(u(c,K.encoder,m,"value",b))]}return[x(r)+"="+x(String(c))]}var M=[];if(typeof c>"u")return M;var j;if(n==="comma"&&be(c))C&&u&&(c=Xt.maybeMap(c,u)),j=[{value:c.length>0?c.join(",")||null:void 0}];else if(be(d))j=d;else{var D=Object.keys(c);j=g?D.sort(g):D}var B=f?String(r).replace(/\./g,"%2E"):String(r),L=a&&be(c)&&c.length===1?B+"[]":B;if(o&&be(c)&&c.length===0)return L+"[]";for(var G=0;G"u"?t.encodeDotInKeys===!0?!0:K.allowDots:!!t.allowDots;return{addQueryPrefix:typeof t.addQueryPrefix=="boolean"?t.addQueryPrefix:K.addQueryPrefix,allowDots:s,allowEmptyArrays:typeof t.allowEmptyArrays=="boolean"?!!t.allowEmptyArrays:K.allowEmptyArrays,arrayFormat:i,charset:r,charsetSentinel:typeof t.charsetSentinel=="boolean"?t.charsetSentinel:K.charsetSentinel,commaRoundTrip:!!t.commaRoundTrip,delimiter:typeof t.delimiter>"u"?K.delimiter:t.delimiter,encode:typeof t.encode=="boolean"?t.encode:K.encode,encodeDotInKeys:typeof t.encodeDotInKeys=="boolean"?t.encodeDotInKeys:K.encodeDotInKeys,encoder:typeof t.encoder=="function"?t.encoder:K.encoder,encodeValuesOnly:typeof t.encodeValuesOnly=="boolean"?t.encodeValuesOnly:K.encodeValuesOnly,filter:o,format:n,formatter:a,serializeDate:typeof t.serializeDate=="function"?t.serializeDate:K.serializeDate,skipNulls:typeof t.skipNulls=="boolean"?t.skipNulls:K.skipNulls,sort:typeof t.sort=="function"?t.sort:null,strictNullHandling:typeof t.strictNullHandling=="boolean"?t.strictNullHandling:K.strictNullHandling}},A1=function(e,t){var r=e,n=O1(t),a,o;typeof n.filter=="function"?(o=n.filter,r=o("",r)):be(n.filter)&&(o=n.filter,a=o);var i=[];if(typeof r!="object"||r===null)return"";var s=xu[n.arrayFormat],f=s==="comma"&&n.commaRoundTrip;a||(a=Object.keys(r)),n.sort&&a.sort(n.sort);for(var u=Cu(),d=0;d0?b+w:""},xe=Su,er=Object.prototype.hasOwnProperty,wn=Array.isArray,H={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:xe.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},R1=function(e){return e.replace(/&#(\d+);/g,function(t,r){return String.fromCharCode(parseInt(r,10))})},_u=function(e,t,r){if(e&&typeof e=="string"&&t.comma&&e.indexOf(",")>-1)return e.split(",");if(t.throwOnLimitExceeded&&r>=t.arrayLimit)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(t.arrayLimit===1?"":"s")+" allowed in an array.");return e},T1="utf8=%26%2310003%3B",M1="utf8=%E2%9C%93",I1=function(t,r){var n={__proto__:null},a=r.ignoreQueryPrefix?t.replace(/^\?/,""):t;a=a.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var o=r.parameterLimit===1/0?void 0:r.parameterLimit,i=a.split(r.delimiter,r.throwOnLimitExceeded?o+1:o);if(r.throwOnLimitExceeded&&i.length>o)throw new RangeError("Parameter limit exceeded. Only "+o+" parameter"+(o===1?"":"s")+" allowed.");var s=-1,f,u=r.charset;if(r.charsetSentinel)for(f=0;f-1&&(b=wn(b)?[b]:b),r.comma&&wn(b)&&b.length>r.arrayLimit){if(r.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+r.arrayLimit+" element"+(r.arrayLimit===1?"":"s")+" allowed in an array.");b=xe.combine([],b,r.arrayLimit,r.plainObjects)}if(w!==null){var x=er.call(n,w);x&&r.duplicates==="combine"?n[w]=xe.combine(n[w],b,r.arrayLimit,r.plainObjects):(!x||r.duplicates==="last")&&(n[w]=b)}}return n},N1=function(e,t,r,n){var a=0;if(e.length>0&&e[e.length-1]==="[]"){var o=e.slice(0,-1).join("");a=Array.isArray(t)&&t[o]?t[o].length:0}for(var i=n?t:_u(t,r,a),s=e.length-1;s>=0;--s){var f,u=e[s];if(u==="[]"&&r.parseArrays)xe.isOverflow(i)?f=i:f=r.allowEmptyArrays&&(i===""||r.strictNullHandling&&i===null)?[]:xe.combine([],i,r.arrayLimit,r.plainObjects);else{f=r.plainObjects?{__proto__:null}:{};var d=u.charAt(0)==="["&&u.charAt(u.length-1)==="]"?u.slice(1,-1):u,g=r.decodeDotInKeys?d.replace(/%2E/g,"."):d,h=parseInt(g,10),w=!isNaN(h)&&u!==g&&String(h)===g&&h>=0&&r.parseArrays;if(!r.parseArrays&&g==="")f={0:i};else if(w&&h"u"?H.charset:t.charset,n=typeof t.duplicates>"u"?H.duplicates:t.duplicates;if(n!=="combine"&&n!=="first"&&n!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var a=typeof t.allowDots>"u"?t.decodeDotInKeys===!0?!0:H.allowDots:!!t.allowDots;return{allowDots:a,allowEmptyArrays:typeof t.allowEmptyArrays=="boolean"?!!t.allowEmptyArrays:H.allowEmptyArrays,allowPrototypes:typeof t.allowPrototypes=="boolean"?t.allowPrototypes:H.allowPrototypes,allowSparse:typeof t.allowSparse=="boolean"?t.allowSparse:H.allowSparse,arrayLimit:typeof t.arrayLimit=="number"?t.arrayLimit:H.arrayLimit,charset:r,charsetSentinel:typeof t.charsetSentinel=="boolean"?t.charsetSentinel:H.charsetSentinel,comma:typeof t.comma=="boolean"?t.comma:H.comma,decodeDotInKeys:typeof t.decodeDotInKeys=="boolean"?t.decodeDotInKeys:H.decodeDotInKeys,decoder:typeof t.decoder=="function"?t.decoder:H.decoder,delimiter:typeof t.delimiter=="string"||xe.isRegExp(t.delimiter)?t.delimiter:H.delimiter,depth:typeof t.depth=="number"||t.depth===!1?+t.depth:H.depth,duplicates:n,ignoreQueryPrefix:t.ignoreQueryPrefix===!0,interpretNumericEntities:typeof t.interpretNumericEntities=="boolean"?t.interpretNumericEntities:H.interpretNumericEntities,parameterLimit:typeof t.parameterLimit=="number"?t.parameterLimit:H.parameterLimit,parseArrays:t.parseArrays!==!1,plainObjects:typeof t.plainObjects=="boolean"?t.plainObjects:H.plainObjects,strictDepth:typeof t.strictDepth=="boolean"?!!t.strictDepth:H.strictDepth,strictNullHandling:typeof t.strictNullHandling=="boolean"?t.strictNullHandling:H.strictNullHandling,throwOnLimitExceeded:typeof t.throwOnLimitExceeded=="boolean"?t.throwOnLimitExceeded:!1}},k1=function(e,t){var r=j1(t);if(e===""||e===null||typeof e>"u")return r.plainObjects?{__proto__:null}:{};for(var n=typeof e=="string"?I1(e,r):e,a=r.plainObjects?{__proto__:null}:{},o=Object.keys(n),i=0;i-1};function ut(e){if(typeof e!="string"&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e)||e==="")throw new TypeError('Invalid character in header field name: "'+e+'"');return e.toLowerCase()}function Ia(e){return typeof e!="string"&&(e=String(e)),e}function Na(e){var t={next:function(){var r=e.shift();return{done:r===void 0,value:r}}};return re.iterable&&(t[Symbol.iterator]=function(){return t}),t}function J(e){this.map={},e instanceof J?e.forEach(function(t,r){this.append(r,t)},this):Array.isArray(e)?e.forEach(function(t){if(t.length!=2)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+t.length);this.append(t[0],t[1])},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){this.append(t,e[t])},this)}J.prototype.append=function(e,t){e=ut(e),t=Ia(t);var r=this.map[e];this.map[e]=r?r+", "+t:t};J.prototype.delete=function(e){delete this.map[ut(e)]};J.prototype.get=function(e){return e=ut(e),this.has(e)?this.map[e]:null};J.prototype.has=function(e){return this.map.hasOwnProperty(ut(e))};J.prototype.set=function(e,t){this.map[ut(e)]=Ia(t)};J.prototype.forEach=function(e,t){for(var r in this.map)this.map.hasOwnProperty(r)&&e.call(t,this.map[r],r,this)};J.prototype.keys=function(){var e=[];return this.forEach(function(t,r){e.push(r)}),Na(e)};J.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),Na(e)};J.prototype.entries=function(){var e=[];return this.forEach(function(t,r){e.push([r,t])}),Na(e)};re.iterable&&(J.prototype[Symbol.iterator]=J.prototype.entries);function Sn(e){if(!e._noBody){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}}function Pu(e){return new Promise(function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}})}function W1(e){var t=new FileReader,r=Pu(t);return t.readAsArrayBuffer(e),r}function V1(e){var t=new FileReader,r=Pu(t),n=/charset=([A-Za-z0-9_-]+)/.exec(e.type),a=n?n[1]:"utf-8";return t.readAsText(e,a),r}function K1(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?t:e}function Ue(e,t){if(!(this instanceof Ue))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');t=t||{};var r=t.body;if(e instanceof Ue){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new J(e.headers)),this.method=e.method,this.mode=e.mode,this.signal=e.signal,!r&&e._bodyInit!=null&&(r=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"same-origin",(t.headers||!this.headers)&&(this.headers=new J(t.headers)),this.method=J1(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal||function(){if("AbortController"in Z){var o=new AbortController;return o.signal}}(),this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&r)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(r),(this.method==="GET"||this.method==="HEAD")&&(t.cache==="no-store"||t.cache==="no-cache")){var n=/([?&])_=[^&]*/;if(n.test(this.url))this.url=this.url.replace(n,"$1_="+new Date().getTime());else{var a=/\?/;this.url+=(a.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}Ue.prototype.clone=function(){return new Ue(this,{body:this._bodyInit})};function Q1(e){var t=new FormData;return e.trim().split("&").forEach(function(r){if(r){var n=r.split("="),a=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(a),decodeURIComponent(o))}}),t}function Z1(e){var t=new J,r=e.replace(/\r?\n[\t ]+/g," ");return r.split("\r").map(function(n){return n.indexOf(` +`)===0?n.substr(1,n.length):n}).forEach(function(n){var a=n.split(":"),o=a.shift().trim();if(o){var i=a.join(":").trim();try{t.append(o,i)}catch(s){console.warn("Response "+s.message)}}}),t}$u.call(Ue.prototype);function Ee(e,t){if(!(this instanceof Ee))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(t||(t={}),this.type="default",this.status=t.status===void 0?200:t.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=t.statusText===void 0?"":""+t.statusText,this.headers=new J(t.headers),this.url=t.url||"",this._initBody(e)}$u.call(Ee.prototype);Ee.prototype.clone=function(){return new Ee(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new J(this.headers),url:this.url})};Ee.error=function(){var e=new Ee(null,{status:200,statusText:""});return e.ok=!1,e.status=0,e.type="error",e};var X1=[301,302,303,307,308];Ee.redirect=function(e,t){if(X1.indexOf(t)===-1)throw new RangeError("Invalid status code");return new Ee(null,{status:t,headers:{location:e}})};var ke=Z.DOMException;try{new ke}catch{ke=function(t,r){this.message=t,this.name=r;var n=Error(t);this.stack=n.stack},ke.prototype=Object.create(Error.prototype),ke.prototype.constructor=ke}function Ou(e,t){return new Promise(function(r,n){var a=new Ue(e,t);if(a.signal&&a.signal.aborted)return n(new ke("Aborted","AbortError"));var o=new XMLHttpRequest;function i(){o.abort()}o.onload=function(){var u={statusText:o.statusText,headers:Z1(o.getAllResponseHeaders()||"")};a.url.indexOf("file://")===0&&(o.status<200||o.status>599)?u.status=200:u.status=o.status,u.url="responseURL"in o?o.responseURL:u.headers.get("X-Request-URL");var d="response"in o?o.response:o.responseText;setTimeout(function(){r(new Ee(d,u))},0)},o.onerror=function(){setTimeout(function(){n(new TypeError("Network request failed"))},0)},o.ontimeout=function(){setTimeout(function(){n(new TypeError("Network request timed out"))},0)},o.onabort=function(){setTimeout(function(){n(new ke("Aborted","AbortError"))},0)};function s(u){try{return u===""&&Z.location.href?Z.location.href:u}catch{return u}}if(o.open(a.method,s(a.url),!0),a.credentials==="include"?o.withCredentials=!0:a.credentials==="omit"&&(o.withCredentials=!1),"responseType"in o&&(re.blob?o.responseType="blob":re.arrayBuffer&&(o.responseType="arraybuffer")),t&&typeof t.headers=="object"&&!(t.headers instanceof J||Z.Headers&&t.headers instanceof Z.Headers)){var f=[];Object.getOwnPropertyNames(t.headers).forEach(function(u){f.push(ut(u)),o.setRequestHeader(u,Ia(t.headers[u]))}),a.headers.forEach(function(u,d){f.indexOf(d)===-1&&o.setRequestHeader(d,u)})}else a.headers.forEach(function(u,d){o.setRequestHeader(d,u)});a.signal&&(a.signal.addEventListener("abort",i),o.onreadystatechange=function(){o.readyState===4&&a.signal.removeEventListener("abort",i)}),o.send(typeof a._bodyInit>"u"?null:a._bodyInit)})}Ou.polyfill=!0;Z.fetch||(Z.fetch=Ou,Z.Headers=J,Z.Request=Ue,Z.Response=Ee);self.fetch.bind(self);function ui(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function ie(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function tr(e,t,r){return Ru()?tr=Reflect.construct:tr=function(a,o,i){var s=[null];s.push.apply(s,o);var f=Function.bind.apply(a,s),u=new f;return i&&_t(u,i.prototype),u},tr.apply(null,arguments)}function tb(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function lr(e){var t=typeof Map=="function"?new Map:void 0;return lr=function(n){if(n===null||!tb(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(n))return t.get(n);t.set(n,a)}function a(){return tr(n,arguments,Et(this).constructor)}return a.prototype=Object.create(n.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),_t(a,n)},lr(e)}function rb(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function nb(e,t){if(t&&(typeof t=="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return rb(e)}function Tu(e){var t=Ru();return function(){var n=Et(e),a;if(t){var o=Et(this).constructor;a=Reflect.construct(n,arguments,o)}else a=n.apply(this,arguments);return nb(this,a)}}function Se(e){return ab(e)||ob(e)||ib(e)||sb()}function ab(e){if(Array.isArray(e))return ra(e)}function ob(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function ib(e,t){if(e){if(typeof e=="string")return ra(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ra(e,t)}}function ra(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&arguments[1]!==void 0?arguments[1]:{global:!1,core:!1,defaultInstance:!1},a=!1,o=!1,i=!1;if(typeof n=="number"?(process&&process.env,a=!0,o=!1):Me(n)==="object"&&n&&(o=n.global||!1,a=n.core||!1,i=n.defaultInstance||!1),o){e.globalMiddlewares.splice(e.globalMiddlewares.length-e.defaultGlobalMiddlewaresLength,0,r);return}if(a){e.coreMiddlewares.splice(e.coreMiddlewares.length-e.defaultCoreMiddlewaresLength,0,r);return}if(i){this.defaultMiddlewares.push(r);return}this.middlewares.push(r)}},{key:"execute",value:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,n=ub([].concat(Se(this.middlewares),Se(this.defaultMiddlewares),Se(e.globalMiddlewares),Se(e.coreMiddlewares)));return n(r)}}]),e}();he.globalMiddlewares=[];he.defaultGlobalMiddlewaresLength=0;he.coreMiddlewares=[];he.defaultCoreMiddlewaresLength=0;var cb=function(){function e(t){It(this,e),this.cache=new Map,this.timer={},this.extendOptions(t)}return Fa(e,[{key:"extendOptions",value:function(r){this.maxCache=r.maxCache||0}},{key:"get",value:function(r){return this.cache.get(JSON.stringify(r))}},{key:"set",value:function(r,n){var a=this,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:6e4;if(this.maxCache>0&&this.cache.size>=this.maxCache){var i=Se(this.cache.keys())[0];this.cache.delete(i),this.timer[i]&&clearTimeout(this.timer[i])}var s=JSON.stringify(r);this.cache.set(s,n),o>0&&(this.timer[s]=setTimeout(function(){a.cache.delete(s),delete a.timer[s]},o))}},{key:"delete",value:function(r){var n=JSON.stringify(r);return delete this.timer[n],this.cache.delete(n)}},{key:"clear",value:function(){return this.timer={},this.cache.clear()}}]),e}(),Mu=function(e){Au(r,e);var t=Tu(r);function r(n,a){var o,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"RequestError";return It(this,r),o=t.call(this,n),o.name="RequestError",o.request=a,o.type=i,o}return r}(lr(Error)),pt=function(e){Au(r,e);var t=Tu(r);function r(n,a,o,i){var s,f=arguments.length>4&&arguments[4]!==void 0?arguments[4]:"ResponseError";return It(this,r),s=t.call(this,a||n.statusText),s.name="ResponseError",s.data=o,s.response=n,s.request=i,s.type=f,s}return r}(lr(Error));function lb(e){return new Promise(function(t,r){var n=new FileReader;n.onload=function(){t(n.result)},n.onerror=r,n.readAsText(e,"GBK")})}function li(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;try{return JSON.parse(e)}catch{if(t)throw new pt(r,"JSON.parse fail",e,n,"ParseError")}return e}function fb(e,t,r){return new Promise(function(n,a){setTimeout(function(){a(new Mu(t||"timeout of ".concat(e,"ms exceeded"),r,"Timeout"))},e)})}function fi(e){return new Promise(function(t,r){e.cancelToken&&e.cancelToken.promise.then(function(n){r(n)})})}var db=Object.prototype.toString;function Iu(){var e;return typeof process<"u"&&db.call(process)==="[object process]"&&(e="NODE"),typeof XMLHttpRequest<"u"&&(e="BROWSER"),e}function na(e){return Me(e)==="object"&&Object.prototype.toString.call(e)==="[object Array]"}function Nu(e){return typeof URLSearchParams<"u"&&e instanceof URLSearchParams}function pb(e){return Me(e)==="object"&&Object.prototype.toString.call(e)==="[object Date]"}function di(e){return e!==null&&Me(e)==="object"}function pi(e,t){if(e)if(Me(e)!=="object"&&(e=[e]),na(e))for(var r=0;r1&&arguments[1]!==void 0?arguments[1]:{},n=r.prefix,a=r.suffix;return n&&(t="".concat(n).concat(t)),a&&(t="".concat(t).concat(a)),{url:t,options:r}};function vb(e,t){var r=t.method,n=r===void 0?"get":r;return n.toLowerCase()==="get"}function yb(e,t){if(!e)return t();var r=e.req;r=r===void 0?{}:r;var n=r.options,a=n===void 0?{}:n,o=r.url,i=o===void 0?"":o,s=e.cache,f=e.responseInterceptors,u=a.timeout,d=u===void 0?0:u,g=a.timeoutMessage,h=a.__umiRequestCoreType__,w=h===void 0?"normal":h,b=a.useCache,x=b===void 0?!1:b,C=a.method,m=C===void 0?"get":C,y=a.params,c=a.ttl,l=a.validateCache,v=l===void 0?vb:l;if(w!=="normal")return process&&process.env,t();var p=fetch;if(!p)throw new Error("Global fetch not exist!");var O=Iu()==="BROWSER",I=v(i,a)&&x&&O;if(I){var M=s.get({url:i,params:y,method:m});if(M)return M=M.clone(),M.useCache=!0,e.res=M,t()}var j;return d>0?j=Promise.race([fi(a),p(i,a),fb(d,g,e.req)]):j=Promise.race([fi(a),p(i,a)]),f.forEach(function(D){j=j.then(function(B){var L=typeof B.clone=="function"?B.clone():B;return D(L,a)})}),j.then(function(D){if(I&&D.status===200){var B=D.clone();B.useCache=!0,s.set({url:i,params:y,method:m},B,c)}return e.res=D,t()})}function mb(e,t){var r;return t().then(function(){if(e){var n=e.res,a=n===void 0?{}:n,o=e.req,i=o===void 0?{}:o,s=i||{},f=s.options;f=f===void 0?{}:f;var u=f.responseType,d=u===void 0?"json":u,g=f.charset,h=g===void 0?"utf8":g;f.getResponse;var w=f.throwErrIfParseFail,b=w===void 0?!1:w,x=f.parseResponse,C=x===void 0?!0:x;if(C&&!(!a||!a.clone)){if(r=Iu()==="BROWSER"?a.clone():a,r.useCache=a.useCache||!1,h==="gbk")try{return a.blob().then(lb).then(function(m){return li(m,!1,r,i)})}catch(m){throw new pt(r,m.message,null,i,"ParseError")}else if(d==="json")return a.text().then(function(m){return li(m,b,r,i)});try{return a[d]()}catch{throw new pt(r,"responseType not support",null,i,"ParseError")}}}}).then(function(n){if(e){e.res;var a=e.req,o=a===void 0?{}:a,i=o||{},s=i.options;s=s===void 0?{}:s;var f=s.getResponse,u=f===void 0?!1:f;if(r){if(r.status>=200&&r.status<300){if(u){e.res={data:n,response:r};return}e.res=n;return}throw new pt(r,"http error",n,o,"HttpError")}}}).catch(function(n){if(n instanceof Mu||n instanceof pt)throw n;var a=e.req,o=e.res;throw n.request=n.request||a,n.response=n.response||o,n.type=n.type||n.name,n.data=n.data||void 0,n})}function gb(e,t){if(!e)return t();var r=e.req;r=r===void 0?{}:r;var n=r.options,a=n===void 0?{}:n,o=a.method,i=o===void 0?"get":o;if(["post","put","patch","delete"].indexOf(i.toLowerCase())===-1)return t();var s=a.requestType,f=s===void 0?"json":s,u=a.data;if(u){var d=Object.prototype.toString.call(u);d==="[object Object]"||d==="[object Array]"?f==="json"?(a.headers=ie({Accept:"application/json","Content-Type":"application/json;charset=UTF-8"},a.headers),a.body=JSON.stringify(u)):f==="form"&&(a.headers=ie({Accept:"application/json","Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},a.headers),a.body=aa(u)):(a.headers=ie({Accept:"application/json"},a.headers),a.body=u)}return e.req.options=a,t()}function bb(e,t){var r,n;if(e)if(t)r=t(e);else if(Nu(e))r=e.toString();else if(na(e))n=[],pi(e,function(o){o===null||typeof o>"u"?n.push(o):n.push(di(o)?JSON.stringify(o):o)}),r=aa(n);else{n={},pi(e,function(o,i){var s=o;o===null||typeof o>"u"?n[i]=o:pb(o)?s=o.toISOString():na(o)?s=o:di(o)&&(s=JSON.stringify(o)),n[i]=s});var a=aa(n);r=a}return r}function wb(e,t){if(!e)return t();var r=e.req;r=r===void 0?{}:r;var n=r.options,a=n===void 0?{}:n,o=a.paramsSerializer,i=a.params,s=e.req;s=s===void 0?{}:s;var f=s.url,u=f===void 0?"":f;a.method=a.method?a.method.toUpperCase():"GET",a.credentials=a.credentials||"same-origin";var d=bb(i,o);if(e.req.originUrl=u,d){var g=u.indexOf("?")!==-1?"&":"?";e.req.url="".concat(u).concat(g).concat(d)}return e.req.options=a,t()}var Lu=[gb,wb,mb],ju=[yb];he.globalMiddlewares=Lu;he.defaultGlobalMiddlewaresLength=Lu.length;he.coreMiddlewares=ju;he.defaultCoreMiddlewaresLength=ju.length;var wt=function(){function e(t){It(this,e),this.onion=new he([]),this.fetchIndex=0,this.mapCache=new cb(t),this.initOptions=t,this.instanceRequestInterceptors=[],this.instanceResponseInterceptors=[]}return Fa(e,[{key:"use",value:function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{global:!1,core:!1};return this.onion.use(r,n),this}},{key:"extendOptions",value:function(r){this.initOptions=Fu(this.initOptions,r),this.mapCache.extendOptions(r)}},{key:"dealRequestInterceptors",value:function(r){var n=function(i,s){return i.then(function(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return r.req.url=f.url||r.req.url,r.req.options=f.options||r.req.options,s(r.req.url,r.req.options)})},a=[].concat(Se(e.requestInterceptors),Se(this.instanceRequestInterceptors));return a.reduce(n,Promise.resolve()).then(function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return r.req.url=o.url||r.req.url,r.req.options=o.options||r.req.options,Promise.resolve()})}},{key:"request",value:function(r,n){var a=this,o=this.onion,i={req:{url:r,options:ie(ie({},n),{},{url:r})},res:null,cache:this.mapCache,responseInterceptors:[].concat(Se(e.responseInterceptors),Se(this.instanceResponseInterceptors))};if(typeof r!="string")throw new Error("url MUST be a string");return new Promise(function(s,f){a.dealRequestInterceptors(i).then(function(){return o.execute(i)}).then(function(){s(i.res)}).catch(function(u){var d=i.req.options.errorHandler;if(d)try{var g=d(u);s(g)}catch(h){f(h)}else f(u)})})}}],[{key:"requestUse",value:function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{global:!0};if(typeof r!="function")throw new TypeError("Interceptor must be function!");n.global?e.requestInterceptors.push(r):this.instanceRequestInterceptors.push(r)}},{key:"responseUse",value:function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{global:!0};if(typeof r!="function")throw new TypeError("Interceptor must be function!");n.global?e.responseInterceptors.push(r):this.instanceResponseInterceptors.push(r)}}]),e}();wt.requestInterceptors=[hb];wt.responseInterceptors=[];function Br(e){this.message=e}Br.prototype.toString=function(){return this.message?"Cancel: ".concat(this.message):"Cancel"};Br.prototype.__CANCEL__=!0;function fr(e){if(typeof e!="function")throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(a){t=a});var r=this;e(function(a){r.reason||(r.reason=new Br(a),t(r.reason))})}fr.prototype.throwIfRequested=function(){if(this.reason)throw this.reason};fr.source=function(){var t,r=new fr(function(a){t=a});return{token:r,cancel:t}};function Sb(e){return!!(e&&e.__CANCEL__)}var La=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=new wt(t),n=function(i){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},f=Fu(r.initOptions,s);return r.request(i,f)};n.use=r.use.bind(r),n.fetchIndex=r.fetchIndex,n.interceptors={request:{use:wt.requestUse.bind(r)},response:{use:wt.responseUse.bind(r)}};var a=["get","post","delete","put","patch","head","options","rpc"];return a.forEach(function(o){n[o]=function(i,s){return n(i,ie(ie({},s),{},{method:o}))}}),n.Cancel=Br,n.CancelToken=fr,n.isCancel=Sb,n.extendOptions=r.extendOptions.bind(r),n.middlewares={instance:r.onion.middlewares,defaultInstance:r.onion.defaultMiddlewares,global:he.globalMiddlewares,core:he.coreMiddlewares},n},Cb=function(t){return La(t)};La({parseResponse:!1});La({});var ku={exports:{}};(function(e,t){(function(r){e.exports=r()})(function(r){var n=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function a(m,y){var c=m[0],l=m[1],v=m[2],p=m[3];c+=(l&v|~l&p)+y[0]-680876936|0,c=(c<<7|c>>>25)+l|0,p+=(c&l|~c&v)+y[1]-389564586|0,p=(p<<12|p>>>20)+c|0,v+=(p&c|~p&l)+y[2]+606105819|0,v=(v<<17|v>>>15)+p|0,l+=(v&p|~v&c)+y[3]-1044525330|0,l=(l<<22|l>>>10)+v|0,c+=(l&v|~l&p)+y[4]-176418897|0,c=(c<<7|c>>>25)+l|0,p+=(c&l|~c&v)+y[5]+1200080426|0,p=(p<<12|p>>>20)+c|0,v+=(p&c|~p&l)+y[6]-1473231341|0,v=(v<<17|v>>>15)+p|0,l+=(v&p|~v&c)+y[7]-45705983|0,l=(l<<22|l>>>10)+v|0,c+=(l&v|~l&p)+y[8]+1770035416|0,c=(c<<7|c>>>25)+l|0,p+=(c&l|~c&v)+y[9]-1958414417|0,p=(p<<12|p>>>20)+c|0,v+=(p&c|~p&l)+y[10]-42063|0,v=(v<<17|v>>>15)+p|0,l+=(v&p|~v&c)+y[11]-1990404162|0,l=(l<<22|l>>>10)+v|0,c+=(l&v|~l&p)+y[12]+1804603682|0,c=(c<<7|c>>>25)+l|0,p+=(c&l|~c&v)+y[13]-40341101|0,p=(p<<12|p>>>20)+c|0,v+=(p&c|~p&l)+y[14]-1502002290|0,v=(v<<17|v>>>15)+p|0,l+=(v&p|~v&c)+y[15]+1236535329|0,l=(l<<22|l>>>10)+v|0,c+=(l&p|v&~p)+y[1]-165796510|0,c=(c<<5|c>>>27)+l|0,p+=(c&v|l&~v)+y[6]-1069501632|0,p=(p<<9|p>>>23)+c|0,v+=(p&l|c&~l)+y[11]+643717713|0,v=(v<<14|v>>>18)+p|0,l+=(v&c|p&~c)+y[0]-373897302|0,l=(l<<20|l>>>12)+v|0,c+=(l&p|v&~p)+y[5]-701558691|0,c=(c<<5|c>>>27)+l|0,p+=(c&v|l&~v)+y[10]+38016083|0,p=(p<<9|p>>>23)+c|0,v+=(p&l|c&~l)+y[15]-660478335|0,v=(v<<14|v>>>18)+p|0,l+=(v&c|p&~c)+y[4]-405537848|0,l=(l<<20|l>>>12)+v|0,c+=(l&p|v&~p)+y[9]+568446438|0,c=(c<<5|c>>>27)+l|0,p+=(c&v|l&~v)+y[14]-1019803690|0,p=(p<<9|p>>>23)+c|0,v+=(p&l|c&~l)+y[3]-187363961|0,v=(v<<14|v>>>18)+p|0,l+=(v&c|p&~c)+y[8]+1163531501|0,l=(l<<20|l>>>12)+v|0,c+=(l&p|v&~p)+y[13]-1444681467|0,c=(c<<5|c>>>27)+l|0,p+=(c&v|l&~v)+y[2]-51403784|0,p=(p<<9|p>>>23)+c|0,v+=(p&l|c&~l)+y[7]+1735328473|0,v=(v<<14|v>>>18)+p|0,l+=(v&c|p&~c)+y[12]-1926607734|0,l=(l<<20|l>>>12)+v|0,c+=(l^v^p)+y[5]-378558|0,c=(c<<4|c>>>28)+l|0,p+=(c^l^v)+y[8]-2022574463|0,p=(p<<11|p>>>21)+c|0,v+=(p^c^l)+y[11]+1839030562|0,v=(v<<16|v>>>16)+p|0,l+=(v^p^c)+y[14]-35309556|0,l=(l<<23|l>>>9)+v|0,c+=(l^v^p)+y[1]-1530992060|0,c=(c<<4|c>>>28)+l|0,p+=(c^l^v)+y[4]+1272893353|0,p=(p<<11|p>>>21)+c|0,v+=(p^c^l)+y[7]-155497632|0,v=(v<<16|v>>>16)+p|0,l+=(v^p^c)+y[10]-1094730640|0,l=(l<<23|l>>>9)+v|0,c+=(l^v^p)+y[13]+681279174|0,c=(c<<4|c>>>28)+l|0,p+=(c^l^v)+y[0]-358537222|0,p=(p<<11|p>>>21)+c|0,v+=(p^c^l)+y[3]-722521979|0,v=(v<<16|v>>>16)+p|0,l+=(v^p^c)+y[6]+76029189|0,l=(l<<23|l>>>9)+v|0,c+=(l^v^p)+y[9]-640364487|0,c=(c<<4|c>>>28)+l|0,p+=(c^l^v)+y[12]-421815835|0,p=(p<<11|p>>>21)+c|0,v+=(p^c^l)+y[15]+530742520|0,v=(v<<16|v>>>16)+p|0,l+=(v^p^c)+y[2]-995338651|0,l=(l<<23|l>>>9)+v|0,c+=(v^(l|~p))+y[0]-198630844|0,c=(c<<6|c>>>26)+l|0,p+=(l^(c|~v))+y[7]+1126891415|0,p=(p<<10|p>>>22)+c|0,v+=(c^(p|~l))+y[14]-1416354905|0,v=(v<<15|v>>>17)+p|0,l+=(p^(v|~c))+y[5]-57434055|0,l=(l<<21|l>>>11)+v|0,c+=(v^(l|~p))+y[12]+1700485571|0,c=(c<<6|c>>>26)+l|0,p+=(l^(c|~v))+y[3]-1894986606|0,p=(p<<10|p>>>22)+c|0,v+=(c^(p|~l))+y[10]-1051523|0,v=(v<<15|v>>>17)+p|0,l+=(p^(v|~c))+y[1]-2054922799|0,l=(l<<21|l>>>11)+v|0,c+=(v^(l|~p))+y[8]+1873313359|0,c=(c<<6|c>>>26)+l|0,p+=(l^(c|~v))+y[15]-30611744|0,p=(p<<10|p>>>22)+c|0,v+=(c^(p|~l))+y[6]-1560198380|0,v=(v<<15|v>>>17)+p|0,l+=(p^(v|~c))+y[13]+1309151649|0,l=(l<<21|l>>>11)+v|0,c+=(v^(l|~p))+y[4]-145523070|0,c=(c<<6|c>>>26)+l|0,p+=(l^(c|~v))+y[11]-1120210379|0,p=(p<<10|p>>>22)+c|0,v+=(c^(p|~l))+y[2]+718787259|0,v=(v<<15|v>>>17)+p|0,l+=(p^(v|~c))+y[9]-343485551|0,l=(l<<21|l>>>11)+v|0,m[0]=c+m[0]|0,m[1]=l+m[1]|0,m[2]=v+m[2]|0,m[3]=p+m[3]|0}function o(m){var y=[],c;for(c=0;c<64;c+=4)y[c>>2]=m.charCodeAt(c)+(m.charCodeAt(c+1)<<8)+(m.charCodeAt(c+2)<<16)+(m.charCodeAt(c+3)<<24);return y}function i(m){var y=[],c;for(c=0;c<64;c+=4)y[c>>2]=m[c]+(m[c+1]<<8)+(m[c+2]<<16)+(m[c+3]<<24);return y}function s(m){var y=m.length,c=[1732584193,-271733879,-1732584194,271733878],l,v,p,O,I,M;for(l=64;l<=y;l+=64)a(c,o(m.substring(l-64,l)));for(m=m.substring(l-64),v=m.length,p=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],l=0;l>2]|=m.charCodeAt(l)<<(l%4<<3);if(p[l>>2]|=128<<(l%4<<3),l>55)for(a(c,p),l=0;l<16;l+=1)p[l]=0;return O=y*8,O=O.toString(16).match(/(.*?)(.{0,8})$/),I=parseInt(O[2],16),M=parseInt(O[1],16)||0,p[14]=I,p[15]=M,a(c,p),c}function f(m){var y=m.length,c=[1732584193,-271733879,-1732584194,271733878],l,v,p,O,I,M;for(l=64;l<=y;l+=64)a(c,i(m.subarray(l-64,l)));for(m=l-64>2]|=m[l]<<(l%4<<3);if(p[l>>2]|=128<<(l%4<<3),l>55)for(a(c,p),l=0;l<16;l+=1)p[l]=0;return O=y*8,O=O.toString(16).match(/(.*?)(.{0,8})$/),I=parseInt(O[2],16),M=parseInt(O[1],16)||0,p[14]=I,p[15]=M,a(c,p),c}function u(m){var y="",c;for(c=0;c<4;c+=1)y+=n[m>>c*8+4&15]+n[m>>c*8&15];return y}function d(m){var y;for(y=0;yp?new ArrayBuffer(0):(O=p-v,I=new ArrayBuffer(O),M=new Uint8Array(I),j=new Uint8Array(this,v,O),M.set(j),I)}}();function g(m){return/[\u0080-\uFFFF]/.test(m)&&(m=unescape(encodeURIComponent(m))),m}function h(m,y){var c=m.length,l=new ArrayBuffer(c),v=new Uint8Array(l),p;for(p=0;p>2]|=y.charCodeAt(l)<<(l%4<<3);return this._finish(v,c),p=d(this._hash),m&&(p=x(p)),this.reset(),p},C.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},C.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},C.prototype.setState=function(m){return this._buff=m.buff,this._length=m.length,this._hash=m.hash,this},C.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},C.prototype._finish=function(m,y){var c=y,l,v,p;if(m[c>>2]|=128<<(c%4<<3),c>55)for(a(this._hash,m),c=0;c<16;c+=1)m[c]=0;l=this._length*8,l=l.toString(16).match(/(.*?)(.{0,8})$/),v=parseInt(l[2],16),p=parseInt(l[1],16)||0,m[14]=v,m[15]=p,a(this._hash,m)},C.hash=function(m,y){return C.hashBinary(g(m),y)},C.hashBinary=function(m,y){var c=s(m),l=d(c);return y?x(l):l},C.ArrayBuffer=function(){this.reset()},C.ArrayBuffer.prototype.append=function(m){var y=b(this._buff.buffer,m,!0),c=y.length,l;for(this._length+=m.byteLength,l=64;l<=c;l+=64)a(this._hash,i(y.subarray(l-64,l)));return this._buff=l-64>2]|=y[v]<<(v%4<<3);return this._finish(l,c),p=d(this._hash),m&&(p=x(p)),this.reset(),p},C.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},C.ArrayBuffer.prototype.getState=function(){var m=C.prototype.getState.call(this);return m.buff=w(m.buff),m},C.ArrayBuffer.prototype.setState=function(m){return m.buff=h(m.buff,!0),C.prototype.setState.call(this,m)},C.ArrayBuffer.prototype.destroy=C.prototype.destroy,C.ArrayBuffer.prototype._finish=C.prototype._finish,C.ArrayBuffer.hash=function(m,y){var c=f(new Uint8Array(m)),l=d(c);return y?x(l):l},C})})(ku);var xb=ku.exports;const Du=Pt(xb),Eb="8d5f0981493d3112328fdd21346f23a3",_b=({method:e,data:t,requestHeader:r})=>{(e==="GET"||!t)&&(t={});let n={};n.body=JSON.stringify(t),["stmp","type","sess","orn","lang","size","ver","code","seq"].sort().map(i=>n[i]=r[i]);const o=q1.stringify(n)+Eb;return Du.hash(decodeURIComponent(o))},Pb="1.0.0",$b="torchTrain",{userAgent:vi,platform:Ob}=navigator,Ab=()=>"654a591de5d3a4b0",Rb=()=>({size:0,dst:"",type:1,ver:512,lang:"zh_CN",seq:0,code:0,stmp:new Date().getTime(),sign:"",ext:"CN",desc:"",sess:Ab(),orn:`${vi.split(" ")[1]}$${Ob}$${vi.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)?"ios":"android"}$${Pb}$${$b}`}),Tb=(e,t)=>{const r=Rb();return r.sign=_b({method:e,data:t,requestHeader:r}),r},Uu={development:"",test:"",production:""},ja=Cb({prefix:Uu.production,timeout:6e4});ja.interceptors.request.use((e,t)=>(t.headers=Object.assign(t.headers,Tb(t.method,t.data||{})),{url:e,options:t}));ja.interceptors.response.use(async e=>{const{status:t}=e;if(t!==200)return e;const r=await e.clone().json();if((r==null?void 0:r.code)===0)return r.data;throw new Error(r==null?void 0:r.message)});const kw=Uu.production==null,Bu=ja;var ka={exports:{}};const Mb=(e,t,r,n)=>{if(r==="length"||r==="prototype"||r==="arguments"||r==="caller")return;const a=Object.getOwnPropertyDescriptor(e,r),o=Object.getOwnPropertyDescriptor(t,r);!Ib(a,o)&&n||Object.defineProperty(e,r,o)},Ib=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},Nb=(e,t)=>{const r=Object.getPrototypeOf(t);r!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,r)},Fb=(e,t)=>`/* Wrapped ${e}*/ +${t}`,Lb=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),jb=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),kb=(e,t,r)=>{const n=r===""?"":`with ${r.trim()}() `,a=Fb.bind(null,n,t.toString());Object.defineProperty(a,"name",jb),Object.defineProperty(e,"toString",{...Lb,value:a})},Db=(e,t,{ignoreNonConfigurable:r=!1}={})=>{const{name:n}=e;for(const a of Reflect.ownKeys(t))Mb(e,t,a,r);return Nb(e,t),kb(e,t,n),e};var Ub=Db,oa={exports:{}},Bb=()=>{const e={};return e.promise=new Promise((t,r)=>{e.resolve=t,e.reject=r}),e};(function(e,t){var r=Ce&&Ce.__awaiter||function(i,s,f,u){return new(f||(f=Promise))(function(d,g){function h(x){try{b(u.next(x))}catch(C){g(C)}}function w(x){try{b(u.throw(x))}catch(C){g(C)}}function b(x){x.done?d(x.value):new f(function(C){C(x.value)}).then(h,w)}b((u=u.apply(i,s||[])).next())})},n=Ce&&Ce.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(Bb);function o(i,s="maxAge"){let f,u,d;const g=()=>r(this,void 0,void 0,function*(){if(f!==void 0)return;const b=x=>r(this,void 0,void 0,function*(){d=a.default();const C=x[1][s]-Date.now();if(C<=0){i.delete(x[0]),d.resolve();return}return f=x[0],u=setTimeout(()=>{i.delete(x[0]),d&&d.resolve()},C),typeof u.unref=="function"&&u.unref(),d.promise});try{for(const x of i)yield b(x)}catch{}f=void 0}),h=()=>{f=void 0,u!==void 0&&(clearTimeout(u),u=void 0),d!==void 0&&(d.reject(void 0),d=void 0)},w=i.set.bind(i);return i.set=(b,x)=>{i.has(b)&&i.delete(b);const C=w(b,x);return f&&f===b&&h(),g(),C},g(),i}t.default=o,e.exports=o,e.exports.default=o})(oa,oa.exports);var qb=oa.exports,Da={exports:{}};const qu=async e=>{try{return{isFulfilled:!0,isRejected:!1,value:await e}}catch(t){return{isFulfilled:!1,isRejected:!0,reason:t}}};Da.exports=qu;Da.exports.default=qu;var Hb=Da.exports,Ua={exports:{}},Ba={exports:{}};const Hu=(e,...t)=>new Promise(r=>{r(e(...t))});Ba.exports=Hu;Ba.exports.default=Hu;var zb=Ba.exports;const Gb=zb,zu=e=>{if(!((Number.isInteger(e)||e===1/0)&&e>0))return Promise.reject(new TypeError("Expected `concurrency` to be a number from 1 and up"));const t=[];let r=0;const n=()=>{r--,t.length>0&&t.shift()()},a=(s,f,...u)=>{r++;const d=Gb(s,...u);f(d),d.then(n,n)},o=(s,f,...u)=>{rnew Promise(u=>o(s,u,...f));return Object.defineProperties(i,{activeCount:{get:()=>r},pendingCount:{get:()=>t.length},clearQueue:{value:()=>{t.length=0}}}),i};Ua.exports=zu;Ua.exports.default=zu;var Wb=Ua.exports;const Cn=Hb,Vb=Wb;var Kb=async(e,t={})=>{const{concurrency:r=1/0}=t,n=Vb(r);return Promise.all(e.map(a=>a&&typeof a.then=="function"?Cn(a):Cn(typeof a=="function"?n(()=>a()):Promise.resolve(a))))};const Yb=Ub,Jb=qb,Qb=Kb,ia=new WeakMap,Zb=(e,{cachePromiseRejection:t=!1,...r}={})=>{const{maxAge:n,cacheKey:a}=r,o=r.cache||new Map;if(Number.isSafeInteger(n))Jb(o);else if(typeof n<"u")throw new TypeError("maxAge is not a safe integer.");const i=async function(...s){const f=a?a(s):s[0],u=o.get(f);if(u)return u.data;const d=e.apply(this,s);o.set(f,{data:d,maxAge:2**31-1});const[{reason:g}]=await Qb([d]);return!t&&g?o.delete(f):n&&o.set(f,{data:d,maxAge:Date.now()+n}),d};return Yb(i,e),ia.set(i,o),i};ka.exports=Zb;ka.exports.clear=e=>{if(!ia.has(e))throw new Error("Can't clear a function that was not memoized!");const t=ia.get(e);if(typeof t.clear!="function")throw new TypeError("The cache Map can't be cleared!");t.clear()};var Xb=ka.exports;const e2=Pt(Xb);async function t2(e){return Du.ArrayBuffer.hash(await e.arrayBuffer())}async function r2(e){if(!e)return null;const t=await t2(e),r={"image/jpeg":"jpg","image/gif":"gif","image/png":"png","image/x-ms-bmp":"bmp","image/tiff":"tif","application/json":"json"}[e.type];return`${t}.${r}`}async function Dw(e){const t=await Bu.get("/api/file/token",{params:{filename:await r2(e)}});console.log("[getUploadParams] response:",t);const r=n=>(n==null?void 0:n.replace(/^https?:\/\/[^/]+/,""))||n;return{key:t.key,token:t.token,url:r(t.url),uploadUrl:r(t.uploadUrl)}}async function Uw(e,t){console.log("[uploadFile] file:",e==null?void 0:e.name,e==null?void 0:e.size,e==null?void 0:e.type),console.log("[uploadFile] params:",t);const r=new FormData;r.append("file",e);const a=`${t.uploadUrl.replace(/^https?:\/\/[^/]+/,"")}?key=${encodeURIComponent(t.key)}`;console.log("[uploadFile] making fetch to:",a);const o=await fetch(a,{method:"POST",body:r});if(console.log("[uploadFile] response status:",o.status,o.statusText),!o.ok)throw new Error(`Upload failed: ${o.statusText}`);const i=await o.json();return i.data||i}function Bw(e,t=""){return e.lastModifiedDate=new Date,e.name=t,e}function qw(e,t=""){const r=e.split(","),n=r[0].match(/:(.*?);/);if(!n)return null;const a=n[1],o=atob(r[1]);let i=o.length;const s=new Uint8Array(i);for(;i--;)s[i]=o.charCodeAt(i);return new File([s],t,{type:a})}const Hw=e2(()=>Bu.get("/api/file/config")),zw=e=>{if(!e)return e;try{const t=new URL(e,window.location.origin);if(t.pathname.startsWith("/uploads/"))return t.pathname}catch{}return e},Gw=(e,{width:t,height:r})=>{const n=new URL(e);if(n.host==="r.findpiano.cn"&&t||r){const a={[`imageMogr2/format/webp/thumbnail/${t?t*window.devicePixelRatio:""}x${r?r*window.devicePixelRatio:""}`]:"",...Object.fromEntries(n.search.replace("?","").split("&").filter(o=>!o.startsWith("imageMogr2")).map(o=>o.split("=")))};return n.origin+n.pathname+`?${Object.entries(a).map(o=>o.filter(Boolean).join("=")).join("&")}`}return e};function n2(e){return e}var a2=n2,o2=hr,i2=ha,s2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u2=/^\w*$/;function c2(e,t){if(o2(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||i2(e)?!0:u2.test(e)||!s2.test(e)||t!=null&&e in Object(t)}var l2=c2,Gu=Ty,f2="Expected a function";function qa(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(f2);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(qa.Cache||Gu),r}qa.Cache=Gu;var d2=qa,p2=d2,h2=500;function v2(e){var t=p2(e,function(n){return r.size===h2&&r.clear(),n}),r=t.cache;return t}var y2=v2,m2=y2,g2=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,b2=/\\(\\)?/g,w2=m2(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(g2,function(r,n,a,o){t.push(a?o.replace(b2,"$1"):n||r)}),t}),S2=w2,C2=hr,x2=l2,E2=S2,_2=Ot;function P2(e,t){return C2(e)?e:x2(e,t)?[e]:E2(_2(e))}var Wu=P2,$2=ha,O2=1/0;function A2(e){if(typeof e=="string"||$2(e))return e;var t=e+"";return t=="0"&&1/e==-O2?"-0":t}var Vu=A2,R2=Wu,T2=Vu;function M2(e,t){t=R2(t,e);for(var r=0,n=t.length;e!=null&&r0){if(++t>=fw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var vw=hw,yw=lw,mw=vw,gw=mw(yw),Jw=gw;export{Io as $,_e as A,fg as B,xa as C,Nm as D,uc as E,sv as F,kw as G,Hw as H,hp as I,Dw as J,Uw as K,Dp as L,Bw as M,Qs as N,Y as O,Ea as P,qw as Q,jw as R,Zy as S,gr as T,mr as U,br as V,rr as W,Up as X,Nn as Y,Qe as Z,nr as _,ne as a,Xd as a$,Lw as a0,Jp as a1,$t as a2,qc as a3,is as a4,dr as a5,Rr as a6,Dn as a7,_w as a8,hv as a9,t0 as aA,_a as aB,l0 as aC,th as aD,Ow as aE,Nw as aF,ua as aG,Js as aH,Np as aI,fs as aJ,St as aK,Ln as aL,Kr as aM,a2 as aN,Zs as aO,Ww as aP,Vw as aQ,l2 as aR,Vu as aS,tl as aT,Kw as aU,Y2 as aV,Yw as aW,Jw as aX,ns as aY,Sv as aZ,Ap as a_,Rw as aa,yh as ab,mo as ac,ap as ad,Iw as ae,Xe as af,ih as ag,Wp as ah,Kd as ai,bp as aj,Qp as ak,ss as al,Vv as am,M0 as an,Ty as ao,la as ap,fa as aq,Xs as ar,Fw as as,hr as at,da as au,Yy as av,pa as aw,Kc as ax,qy as ay,Wy as az,z as b,cp as b0,Ep as b1,Vh as b2,oh as b3,dv as b4,pv as b5,Un as b6,$w as b7,_h as b8,Ch as b9,cc as bA,Vr as bB,Dc as bC,Vt as bD,Hc as bE,ah as bF,Tw as bG,Ti as bH,Ew as bI,ha as bJ,zp as bK,Wu as bL,Ys as ba,Fn as bb,Du as bc,Wt as bd,Sw as be,jt as bf,Cw as bg,Ei as bh,Va as bi,pc as bj,hc as bk,ze as bl,Pe as bm,On as bn,yc as bo,ue as bp,$n as bq,Wa as br,Pn as bs,dc as bt,vc as bu,bc as bv,Aw as bw,et as bx,xw as by,Nd as bz,Oe as c,Uh as d,Mw as e,$ as f,Qm as g,Jm as h,st as i,cu as j,Ra as k,kr as l,tv as m,zw as n,Pw as o,e2 as p,du as q,Bu as r,km as s,Gw as t,ww as u,og as v,Bn as w,pu as x,dg as y,gu as z}; diff --git a/dist/assets/_setToString-2991057b.js b/dist/assets/_setToString-2991057b.js deleted file mode 100644 index 102622324c5071595b77208b033b6cb935d1e8a5..0000000000000000000000000000000000000000 --- a/dist/assets/_setToString-2991057b.js +++ /dev/null @@ -1,94 +0,0 @@ -import{r as w,D as oc,E as ic,g as St,c as he,R as wn,e as Sn,_ as A,F as uc,i as sc}from"./umi-d55575d8.js";function Nw(){const e=w.useContext(oc);return ic(e),e}var cc=w.createContext({});const oa=cc;function z(e){"@babel/helpers - typeof";return z=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},z(e)}function fc(e,t){if(z(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(z(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function wi(e){var t=fc(e,"string");return z(t)=="symbol"?t:t+""}function k(e,t,r){return(t=wi(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ka(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function E(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r1)&&(e=1),e}function Nt(e){return e<=1?"".concat(Number(e)*100,"%"):e}function ue(e){return e.length===1?"0"+e:String(e)}function yc(e,t,r){return{r:W(e,255)*255,g:W(t,255)*255,b:W(r,255)*255}}function Ya(e,t,r){e=W(e,255),t=W(t,255),r=W(r,255);var n=Math.max(e,t,r),a=Math.min(e,t,r),o=0,i=0,u=(n+a)/2;if(n===a)i=0,o=0;else{var c=n-a;switch(i=u>.5?c/(2-n-a):c/(n+a),n){case e:o=(t-r)/c+(t1&&(r-=1),r<1/6?e+(t-e)*(6*r):r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function mc(e,t,r){var n,a,o;if(e=W(e,360),t=W(t,100),r=W(r,100),t===0)a=r,o=r,n=r;else{var i=r<.5?r*(1+t):r+t-r*t,u=2*r-i;n=zr(u,i,e+1/3),a=zr(u,i,e),o=zr(u,i,e-1/3)}return{r:n*255,g:a*255,b:o*255}}function xn(e,t,r){e=W(e,255),t=W(t,255),r=W(r,255);var n=Math.max(e,t,r),a=Math.min(e,t,r),o=0,i=n,u=n-a,c=n===0?0:u/n;if(n===a)o=0;else{switch(n){case e:o=(t-r)/u+(t>16,g:(e&65280)>>8,b:e&255}}var En={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function ke(e){var t={r:0,g:0,b:0},r=1,n=null,a=null,o=null,i=!1,u=!1;return typeof e=="string"&&(e=xc(e)),typeof e=="object"&&(we(e.r)&&we(e.g)&&we(e.b)?(t=yc(e.r,e.g,e.b),i=!0,u=String(e.r).substr(-1)==="%"?"prgb":"rgb"):we(e.h)&&we(e.s)&&we(e.v)?(n=Nt(e.s),a=Nt(e.v),t=gc(e.h,n,a),i=!0,u="hsv"):we(e.h)&&we(e.s)&&we(e.l)&&(n=Nt(e.s),o=Nt(e.l),t=mc(e.h,n,o),i=!0,u="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(r=e.a)),r=_i(r),{ok:i,format:e.format||u,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:r}}var Sc="[-\\+]?\\d+%?",Cc="[-\\+]?\\d*\\.\\d+%?",_e="(?:".concat(Cc,")|(?:").concat(Sc,")"),Gr="[\\s|\\(]+(".concat(_e,")[,|\\s]+(").concat(_e,")[,|\\s]+(").concat(_e,")\\s*\\)?"),Wr="[\\s|\\(]+(".concat(_e,")[,|\\s]+(").concat(_e,")[,|\\s]+(").concat(_e,")[,|\\s]+(").concat(_e,")\\s*\\)?"),oe={CSS_UNIT:new RegExp(_e),rgb:new RegExp("rgb"+Gr),rgba:new RegExp("rgba"+Wr),hsl:new RegExp("hsl"+Gr),hsla:new RegExp("hsla"+Wr),hsv:new RegExp("hsv"+Gr),hsva:new RegExp("hsva"+Wr),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function xc(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(En[e])e=En[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var r=oe.rgb.exec(e);return r?{r:r[1],g:r[2],b:r[3]}:(r=oe.rgba.exec(e),r?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=oe.hsl.exec(e),r?{h:r[1],s:r[2],l:r[3]}:(r=oe.hsla.exec(e),r?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=oe.hsv.exec(e),r?{h:r[1],s:r[2],v:r[3]}:(r=oe.hsva.exec(e),r?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=oe.hex8.exec(e),r?{r:re(r[1]),g:re(r[2]),b:re(r[3]),a:Ja(r[4]),format:t?"name":"hex8"}:(r=oe.hex6.exec(e),r?{r:re(r[1]),g:re(r[2]),b:re(r[3]),format:t?"name":"hex"}:(r=oe.hex4.exec(e),r?{r:re(r[1]+r[1]),g:re(r[2]+r[2]),b:re(r[3]+r[3]),a:Ja(r[4]+r[4]),format:t?"name":"hex8"}:(r=oe.hex3.exec(e),r?{r:re(r[1]+r[1]),g:re(r[2]+r[2]),b:re(r[3]+r[3]),format:t?"name":"hex"}:!1)))))))))}function we(e){return!!oe.CSS_UNIT.exec(String(e))}var Ht=function(){function e(t,r){t===void 0&&(t=""),r===void 0&&(r={});var n;if(t instanceof e)return t;typeof t=="number"&&(t=wc(t)),this.originalInput=t;var a=ke(t);this.originalInput=t,this.r=a.r,this.g=a.g,this.b=a.b,this.a=a.a,this.roundA=Math.round(100*this.a)/100,this.format=(n=r.format)!==null&&n!==void 0?n:a.format,this.gradientType=r.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=a.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),r,n,a,o=t.r/255,i=t.g/255,u=t.b/255;return o<=.03928?r=o/12.92:r=Math.pow((o+.055)/1.055,2.4),i<=.03928?n=i/12.92:n=Math.pow((i+.055)/1.055,2.4),u<=.03928?a=u/12.92:a=Math.pow((u+.055)/1.055,2.4),.2126*r+.7152*n+.0722*a},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=_i(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=xn(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=xn(this.r,this.g,this.b),r=Math.round(t.h*360),n=Math.round(t.s*100),a=Math.round(t.v*100);return this.a===1?"hsv(".concat(r,", ").concat(n,"%, ").concat(a,"%)"):"hsva(".concat(r,", ").concat(n,"%, ").concat(a,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=Ya(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=Ya(this.r,this.g,this.b),r=Math.round(t.h*360),n=Math.round(t.s*100),a=Math.round(t.l*100);return this.a===1?"hsl(".concat(r,", ").concat(n,"%, ").concat(a,"%)"):"hsla(".concat(r,", ").concat(n,"%, ").concat(a,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),_n(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),bc(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toHexShortString=function(t){return t===void 0&&(t=!1),this.a===1?this.toHexString(t):this.toHex8String(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),r=Math.round(this.g),n=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(r,", ").concat(n,")"):"rgba(".concat(t,", ").concat(r,", ").concat(n,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(r){return"".concat(Math.round(W(r,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(r){return Math.round(W(r,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+_n(this.r,this.g,this.b,!1),r=0,n=Object.entries(En);r=0,o=!r&&a&&(t.startsWith("hex")||t==="name");return o?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(n=this.toRgbString()),t==="prgb"&&(n=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(n=this.toHexString()),t==="hex3"&&(n=this.toHexString(!0)),t==="hex4"&&(n=this.toHex8String(!0)),t==="hex8"&&(n=this.toHex8String()),t==="name"&&(n=this.toName()),t==="hsl"&&(n=this.toHslString()),t==="hsv"&&(n=this.toHsvString()),n||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l+=t/100,r.l=It(r.l),new e(r)},e.prototype.brighten=function(t){t===void 0&&(t=10);var r=this.toRgb();return r.r=Math.max(0,Math.min(255,r.r-Math.round(255*-(t/100)))),r.g=Math.max(0,Math.min(255,r.g-Math.round(255*-(t/100)))),r.b=Math.max(0,Math.min(255,r.b-Math.round(255*-(t/100)))),new e(r)},e.prototype.darken=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l-=t/100,r.l=It(r.l),new e(r)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s-=t/100,r.s=It(r.s),new e(r)},e.prototype.saturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s+=t/100,r.s=It(r.s),new e(r)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var r=this.toHsl(),n=(r.h+t)%360;return r.h=n<0?360+n:n,new e(r)},e.prototype.mix=function(t,r){r===void 0&&(r=50);var n=this.toRgb(),a=new e(t).toRgb(),o=r/100,i={r:(a.r-n.r)*o+n.r,g:(a.g-n.g)*o+n.g,b:(a.b-n.b)*o+n.b,a:(a.a-n.a)*o+n.a};return new e(i)},e.prototype.analogous=function(t,r){t===void 0&&(t=6),r===void 0&&(r=30);var n=this.toHsl(),a=360/r,o=[this];for(n.h=(n.h-(a*t>>1)+720)%360;--t;)n.h=(n.h+a)%360,o.push(new e(n));return o},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var r=this.toHsv(),n=r.h,a=r.s,o=r.v,i=[],u=1/t;t--;)i.push(new e({h:n,s:a,v:o})),o=(o+u)%1;return i},e.prototype.splitcomplement=function(){var t=this.toHsl(),r=t.h;return[this,new e({h:(r+72)%360,s:t.s,l:t.l}),new e({h:(r+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var r=this.toRgb(),n=new e(t).toRgb(),a=r.a+n.a*(1-r.a);return new e({r:(r.r*r.a+n.r*n.a*(1-r.a))/a,g:(r.g*r.a+n.g*n.a*(1-r.a))/a,b:(r.b*r.a+n.b*n.a*(1-r.a))/a,a})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var r=this.toHsl(),n=r.h,a=[this],o=360/t,i=1;i=60&&Math.round(e.h)<=240?n=r?Math.round(e.h)-Ft*t:Math.round(e.h)+Ft*t:n=r?Math.round(e.h)+Ft*t:Math.round(e.h)-Ft*t,n<0?n+=360:n>=360&&(n-=360),n}function eo(e,t,r){if(e.h===0&&e.s===0)return e.s;var n;return r?n=e.s-Qa*t:t===Pi?n=e.s+Qa:n=e.s+_c*t,n>1&&(n=1),r&&t===Oi&&n>.1&&(n=.1),n<.06&&(n=.06),Number(n.toFixed(2))}function to(e,t,r){var n;return r?n=e.v+Ec*t:n=e.v-Oc*t,n>1&&(n=1),Number(n.toFixed(2))}function Ve(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=[],n=ke(e),a=Oi;a>0;a-=1){var o=Za(n),i=jt(ke({h:Xa(o,a,!0),s:eo(o,a,!0),v:to(o,a,!0)}));r.push(i)}r.push(jt(n));for(var u=1;u<=Pi;u+=1){var c=Za(n),s=jt(ke({h:Xa(c,u),s:eo(c,u),v:to(c,u)}));r.push(s)}return t.theme==="dark"?Pc.map(function(d){var m=d.index,v=d.opacity,b=jt($c(ke(t.backgroundColor||"#141414"),ke(r[m]),v*100));return b}):r}var zt={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},V={},Gt={};Object.keys(zt).forEach(function(e){V[e]=Ve(zt[e]),V[e].primary=V[e][5],Gt[e]=Ve(zt[e],{theme:"dark",backgroundColor:"#141414"}),Gt[e].primary=Gt[e][5]});var Ac=V.red,Rc=V.volcano,Tc=V.gold,Mc=V.orange,Ic=V.yellow,Nc=V.lime,Fc=V.green,jc=V.cyan,Lc=V.blue,Dc=V.geekblue,kc=V.purple,Uc=V.magenta,Bc=V.grey;const Lw=Object.freeze(Object.defineProperty({__proto__:null,blue:Lc,cyan:jc,geekblue:Dc,generate:Ve,gold:Tc,green:Fc,grey:Bc,lime:Nc,magenta:Uc,orange:Mc,presetDarkPalettes:Gt,presetPalettes:V,presetPrimaryColors:zt,purple:kc,red:Ac,volcano:Rc,yellow:Ic},Symbol.toStringTag,{value:"Module"}));var On={},qc=function(t){};function Hc(e,t){}function zc(e,t){}function Gc(){On={}}function $i(e,t,r){!t&&!On[r]&&(e(!1,r),On[r]=!0)}function lr(e,t){$i(Hc,e,t)}function Wc(e,t){$i(zc,e,t)}lr.preMessage=qc;lr.resetWarned=Gc;lr.noteOnce=Wc;function Ct(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function Vc(e,t){if(!e)return!1;if(e.contains)return e.contains(t);for(var r=t;r;){if(r===e)return!0;r=r.parentNode}return!1}var ro="data-rc-order",no="data-rc-priority",Kc="rc-util-key",Pn=new Map;function Ai(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.mark;return t?t.startsWith("data-")?t:"data-".concat(t):Kc}function dr(e){if(e.attachTo)return e.attachTo;var t=document.querySelector("head");return t||document.body}function Yc(e){return e==="queue"?"prependQueue":e?"prepend":"append"}function ua(e){return Array.from((Pn.get(e)||e).children).filter(function(t){return t.tagName==="STYLE"})}function Ri(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!Ct())return null;var r=t.csp,n=t.prepend,a=t.priority,o=a===void 0?0:a,i=Yc(n),u=i==="prependQueue",c=document.createElement("style");c.setAttribute(ro,i),u&&o&&c.setAttribute(no,"".concat(o)),r!=null&&r.nonce&&(c.nonce=r==null?void 0:r.nonce),c.innerHTML=e;var s=dr(t),d=s.firstChild;if(n){if(u){var m=(t.styles||ua(s)).filter(function(v){if(!["prepend","prependQueue"].includes(v.getAttribute(ro)))return!1;var b=Number(v.getAttribute(no)||0);return o>=b});if(m.length)return s.insertBefore(c,m[m.length-1].nextSibling),c}s.insertBefore(c,d)}else s.appendChild(c);return c}function Ti(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=dr(t);return(t.styles||ua(r)).find(function(n){return n.getAttribute(Ai(t))===e})}function Dw(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=Ti(e,t);if(r){var n=dr(t);n.removeChild(r)}}function Jc(e,t){var r=Pn.get(e);if(!r||!Vc(document,r)){var n=Ri("",t),a=n.parentNode;Pn.set(e,a),e.removeChild(n)}}function Mi(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=dr(r),a=ua(n),o=E(E({},r),{},{styles:a});Jc(n,o);var i=Ti(t,o);if(i){var u,c;if((u=o.csp)!==null&&u!==void 0&&u.nonce&&i.nonce!==((c=o.csp)===null||c===void 0?void 0:c.nonce)){var s;i.nonce=(s=o.csp)===null||s===void 0?void 0:s.nonce}return i.innerHTML!==e&&(i.innerHTML=e),i}var d=Ri(e,o);return d.setAttribute(Ai(o),t),d}var Qc=typeof he=="object"&&he&&he.Object===Object&&he,Zc=Qc,Xc=Zc,ef=typeof self=="object"&&self&&self.Object===Object&&self,tf=Xc||ef||Function("return this")(),sa=tf,rf=sa,nf=rf.Symbol,ca=nf;function af(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++ra?0:a+t),r=r>a?a:r,r<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var o=Array(a);++n=n?e:Ff(e,t,r)}var Lf=jf,Df="\\ud800-\\udfff",kf="\\u0300-\\u036f",Uf="\\ufe20-\\ufe2f",Bf="\\u20d0-\\u20ff",qf=kf+Uf+Bf,Hf="\\ufe0e\\ufe0f",zf="\\u200d",Gf=RegExp("["+zf+Df+qf+Hf+"]");function Wf(e){return Gf.test(e)}var Fi=Wf;function Vf(e){return e.split("")}var Kf=Vf,ji="\\ud800-\\udfff",Yf="\\u0300-\\u036f",Jf="\\ufe20-\\ufe2f",Qf="\\u20d0-\\u20ff",Zf=Yf+Jf+Qf,Xf="\\ufe0e\\ufe0f",el="["+ji+"]",$n="["+Zf+"]",An="\\ud83c[\\udffb-\\udfff]",tl="(?:"+$n+"|"+An+")",Li="[^"+ji+"]",Di="(?:\\ud83c[\\udde6-\\uddff]){2}",ki="[\\ud800-\\udbff][\\udc00-\\udfff]",rl="\\u200d",Ui=tl+"?",Bi="["+Xf+"]?",nl="(?:"+rl+"(?:"+[Li,Di,ki].join("|")+")"+Bi+Ui+")*",al=Bi+Ui+nl,ol="(?:"+[Li+$n+"?",$n,Di,ki,el].join("|")+")",il=RegExp(An+"(?="+An+")|"+ol+al,"g");function ul(e){return e.match(il)||[]}var sl=ul,cl=Kf,fl=Fi,ll=sl;function dl(e){return fl(e)?ll(e):cl(e)}var pl=dl,vl=Lf,hl=Fi,yl=pl,ml=xt;function gl(e){return function(t){t=ml(t);var r=hl(t)?yl(t):void 0,n=r?r[0]:t.charAt(0),a=r?vl(r,1).join(""):t.slice(1);return n[e]()+a}}var bl=gl,wl=bl,Sl=wl("toUpperCase"),Cl=Sl,xl=xt,_l=Cl;function El(e){return _l(xl(e).toLowerCase())}var Ol=El;function Pl(e,t,r,n){var a=-1,o=e==null?0:e.length;for(n&&o&&(r=e[++a]);++a0&&arguments[0]!==void 0?arguments[0]:{};return Object.keys(e).reduce(function(t,r){var n=e[r];switch(r){case"class":t.className=n,delete t.class;break;default:delete t[r],t[kd(r)]=n}return t},{})}function Rn(e,t,r){return r?wn.createElement(e.tag,E(E({key:t},yo(e.attrs)),r),(e.children||[]).map(function(n,a){return Rn(n,"".concat(t,"-").concat(e.tag,"-").concat(a))})):wn.createElement(e.tag,E({key:t},yo(e.attrs)),(e.children||[]).map(function(n,a){return Rn(n,"".concat(t,"-").concat(e.tag,"-").concat(a))}))}function tu(e){return Ve(e)[0]}function ru(e){return e?Array.isArray(e)?e:[e]:[]}var Bd=` -.anticon { - display: inline-flex; - alignItems: center; - color: inherit; - font-style: normal; - line-height: 0; - text-align: center; - text-transform: none; - vertical-align: -0.125em; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.anticon > * { - line-height: 1; -} - -.anticon svg { - display: inline-block; -} - -.anticon::before { - display: none; -} - -.anticon .anticon-icon { - display: block; -} - -.anticon[tabindex] { - cursor: pointer; -} - -.anticon-spin::before, -.anticon-spin { - display: inline-block; - -webkit-animation: loadingCircle 1s infinite linear; - animation: loadingCircle 1s infinite linear; -} - -@-webkit-keyframes loadingCircle { - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@keyframes loadingCircle { - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -`,qd=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Bd,r=w.useContext(oa),n=r.csp;w.useEffect(function(){Mi(t,"@ant-design-icons",{prepend:!0,csp:n})},[])},Hd=["icon","className","onClick","style","primaryColor","secondaryColor"],ft={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1};function zd(e){var t=e.primaryColor,r=e.secondaryColor;ft.primaryColor=t,ft.secondaryColor=r||tu(t),ft.calculated=!!r}function Gd(){return E({},ft)}var vr=function(t){var r=t.icon,n=t.className,a=t.onClick,o=t.style,i=t.primaryColor,u=t.secondaryColor,c=We(t,Hd),s=ft;if(i&&(s={primaryColor:i,secondaryColor:u||tu(i)}),qd(),Ud(ho(r),"icon should be icon definiton, but got ".concat(r)),!ho(r))return null;var d=r;return d&&typeof d.icon=="function"&&(d=E(E({},d),{},{icon:d.icon(s.primaryColor,s.secondaryColor)})),Rn(d.icon,"svg-".concat(d.name),E({className:n,onClick:a,style:o,"data-icon":d.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},c))};vr.displayName="IconReact";vr.getTwoToneColors=Gd;vr.setTwoToneColors=zd;const pa=vr;function nu(e){var t=ru(e),r=Q(t,2),n=r[0],a=r[1];return pa.setTwoToneColors({primaryColor:n,secondaryColor:a})}function Wd(){var e=pa.getTwoToneColors();return e.calculated?[e.primaryColor,e.secondaryColor]:e.primaryColor}var Vd=["className","icon","spin","rotate","tabIndex","onClick","twoToneColor"];nu("#1890ff");var hr=w.forwardRef(function(e,t){var r=e.className,n=e.icon,a=e.spin,o=e.rotate,i=e.tabIndex,u=e.onClick,c=e.twoToneColor,s=We(e,Vd),d=w.useContext(oa),m=d.prefixCls,v=m===void 0?"anticon":m,b=d.rootClassName,S=Ce(b,v,k(k({},"".concat(v,"-").concat(n.name),!!n.name),"".concat(v,"-spin"),!!a||n.name==="loading"),r),x=i;x===void 0&&u&&(x=-1);var C=o?{msTransform:"rotate(".concat(o,"deg)"),transform:"rotate(".concat(o,"deg)")}:void 0,g=ru(c),y=Q(g,2),f=y[0],l=y[1];return w.createElement("span",E(E({role:"img","aria-label":n.name},s),{},{ref:t,tabIndex:x,onClick:u,className:S}),w.createElement(pa,{icon:n,primaryColor:f,secondaryColor:l,style:C}))});hr.displayName="AntdIcon";hr.getTwoToneColor=Wd;hr.setTwoToneColor=nu;const ge=hr;var Kd={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"}}]},name:"check-circle",theme:"filled"};const Yd=Kd;var Jd=function(t,r){return w.createElement(ge,E(E({},t),{},{ref:r,icon:Yd}))},Qd=w.forwardRef(Jd);const Zd=Qd;var Xd={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"};const ep=Xd;var tp=function(t,r){return w.createElement(ge,E(E({},t),{},{ref:r,icon:ep}))},rp=w.forwardRef(tp);const np=rp;var ap={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z"}}]},name:"close-circle",theme:"filled"};const op=ap;var ip=function(t,r){return w.createElement(ge,E(E({},t),{},{ref:r,icon:op}))},up=w.forwardRef(ip);const sp=up;var cp={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm0 76c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm128.01 198.83c.03 0 .05.01.09.06l45.02 45.01a.2.2 0 01.05.09.12.12 0 010 .07c0 .02-.01.04-.05.08L557.25 512l127.87 127.86a.27.27 0 01.05.06v.02a.12.12 0 010 .07c0 .03-.01.05-.05.09l-45.02 45.02a.2.2 0 01-.09.05.12.12 0 01-.07 0c-.02 0-.04-.01-.08-.05L512 557.25 384.14 685.12c-.04.04-.06.05-.08.05a.12.12 0 01-.07 0c-.03 0-.05-.01-.09-.05l-45.02-45.02a.2.2 0 01-.05-.09.12.12 0 010-.07c0-.02.01-.04.06-.08L466.75 512 338.88 384.14a.27.27 0 01-.05-.06l-.01-.02a.12.12 0 010-.07c0-.03.01-.05.05-.09l45.02-45.02a.2.2 0 01.09-.05.12.12 0 01.07 0c.02 0 .04.01.08.06L512 466.75l127.86-127.86c.04-.05.06-.06.08-.06a.12.12 0 01.07 0z"}}]},name:"close-circle",theme:"outlined"};const fp=cp;var lp=function(t,r){return w.createElement(ge,E(E({},t),{},{ref:r,icon:fp}))},dp=w.forwardRef(lp);const pp=dp;var vp={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z"}}]},name:"close",theme:"outlined"};const hp=vp;var yp=function(t,r){return w.createElement(ge,E(E({},t),{},{ref:r,icon:hp}))},mp=w.forwardRef(yp);const gp=mp;var bp={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"exclamation-circle",theme:"filled"};const wp=bp;var Sp=function(t,r){return w.createElement(ge,E(E({},t),{},{ref:r,icon:wp}))},Cp=w.forwardRef(Sp);const xp=Cp;var _p={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z"}}]},name:"exclamation-circle",theme:"outlined"};const Ep=_p;var Op=function(t,r){return w.createElement(ge,E(E({},t),{},{ref:r,icon:Ep}))},Pp=w.forwardRef(Op);const $p=Pp;var Ap={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"info-circle",theme:"filled"};const Rp=Ap;var Tp=function(t,r){return w.createElement(ge,E(E({},t),{},{ref:r,icon:Rp}))},Mp=w.forwardRef(Tp);const Ip=Mp;var Np={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"}}]},name:"info-circle",theme:"outlined"};const Fp=Np;var jp=function(t,r){return w.createElement(ge,E(E({},t),{},{ref:r,icon:Fp}))},Lp=w.forwardRef(jp);const Dp=Lp;var kp={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};const Up=kp;var Bp=function(t,r){return w.createElement(ge,E(E({},t),{},{ref:r,icon:Up}))},qp=w.forwardRef(Bp);const Hp=qp;function yr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function mo(e,t){for(var r=0;r=19)return!0;var a=Vr.isMemo(t)?t.type.type:t.type;return!(typeof a=="function"&&!((r=a.prototype)!==null&&r!==void 0&&r.render)&&a.$$typeof!==Vr.ForwardRef||typeof t=="function"&&!((n=t.prototype)!==null&&n!==void 0&&n.render)&&t.$$typeof!==Vr.ForwardRef)};function cu(e){return w.isValidElement(e)&&!Kp(e)}var rv=function(t){if(t&&cu(t)){var r=t;return r.props.propertyIsEnumerable("ref")?r.props.ref:r.ref}return null};function Ar(e){var t=au();return function(){var r,n=Xt(e);if(t){var a=Xt(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return zp(this,r)}}function Uw(e,t){var r=Object.assign({},e);return Array.isArray(t)&&t.forEach(function(n){delete r[n]}),r}function nv(e){if(Array.isArray(e))return Cn(e)}function fu(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function av(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function er(e){return nv(e)||fu(e)||ia(e)||av()}function ov(e){return Si(e)||fu(e)||ia(e)||Ci()}function In(e,t){for(var r=e,n=0;n3&&arguments[3]!==void 0?arguments[3]:!1;return t.length&&n&&r===void 0&&!In(e,t.slice(0,-1))?e:lu(e,t,r,n)}function iv(e){return z(e)==="object"&&e!==null&&Object.getPrototypeOf(e)===Object.prototype}function bo(e){return Array.isArray(e)?[]:{}}var uv=typeof Reflect>"u"?Object.keys:Reflect.ownKeys;function sv(){for(var e=arguments.length,t=new Array(e),r=0;r3?(L=be===M)&&(O=U[(_=U[4])?5:(_=3,3)],U[4]=U[5]=e):U[0]<=ne&&((L=j<2&&neM||M>be)&&(U[4]=j,U[5]=M,T.n=be,_=0))}if(L||j>1)return i;throw N=!0,M}return function(j,M,L){if(P>1)throw TypeError("Generator is already running");for(N&&M===1&&R(M,L),_=M,O=L;(t=_<2?e:O)||!N;){p||(_?_<3?(_>1&&(T.n=-1),R(_,O)):T.n=O:T.v=O);try{if(P=2,p){if(_||(j="next"),t=p[j]){if(!(t=t.call(p,O)))throw TypeError("iterator result is not an object");if(!t.done)return t;O=t.value,_<2&&(_=0)}else _===1&&(t=p.return)&&t.call(p),_<2&&(O=TypeError("The iterator does not provide a '"+j+"' method"),_=1);p=e}else if((t=(N=T.n<0)?O:f.call(l,T))!==i)break}catch(U){p=e,_=1,O=U}finally{P=1}}return{value:t,done:N}}}(b,x,C),!0),y}var i={};function u(){}function c(){}function s(){}t=Object.getPrototypeOf;var d=[][n]?t(t([][n]())):(Y(t={},n,function(){return this}),t),m=s.prototype=u.prototype=Object.create(d);function v(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,s):(b.__proto__=s,Y(b,a,"GeneratorFunction")),b.prototype=Object.create(m),b}return c.prototype=s,Y(m,"constructor",s),Y(s,"constructor",c),c.displayName="GeneratorFunction",Y(s,a,"GeneratorFunction"),Y(m),Y(m,a,"Generator"),Y(m,n,function(){return this}),Y(m,"toString",function(){return"[object Generator]"}),(ma=function(){return{w:o,m:v}})()}function tr(e,t){function r(a,o,i,u){try{var c=e[a](o),s=c.value;return s instanceof pu?t.resolve(s.v).then(function(d){r("next",d,i,u)},function(d){r("throw",d,i,u)}):t.resolve(s).then(function(d){c.value=d,i(c)},function(d){return r("throw",d,i,u)})}catch(d){u(d)}}var n;this.next||(Y(tr.prototype),Y(tr.prototype,typeof Symbol=="function"&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),Y(this,"_invoke",function(a,o,i){function u(){return new t(function(c,s){r(a,i,c,s)})}return n=n?n.then(u,u):u()},!0)}function vu(e,t,r,n,a){return new tr(ma().w(e,t,r,n),a||Promise)}function Sv(e,t,r,n,a){var o=vu(e,t,r,n,a);return o.next().then(function(i){return i.done?i.value:o.next()})}function Cv(e){var t=Object(e),r=[];for(var n in t)r.unshift(n);return function a(){for(;r.length;)if((n=r.pop())in t)return a.value=n,a.done=!1,a;return a.done=!0,a}}function Co(e){if(e!=null){var t=e[typeof Symbol=="function"&&Symbol.iterator||"@@iterator"],r=0;if(t)return t.call(e);if(typeof e.next=="function")return e;if(!isNaN(e.length))return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}throw new TypeError(z(e)+" is not iterable")}function Ye(){var e=ma(),t=e.m(Ye),r=(Object.getPrototypeOf?Object.getPrototypeOf(t):t.__proto__).constructor;function n(i){var u=typeof i=="function"&&i.constructor;return!!u&&(u===r||(u.displayName||u.name)==="GeneratorFunction")}var a={throw:1,return:2,break:3,continue:3};function o(i){var u,c;return function(s){u||(u={stop:function(){return c(s.a,2)},catch:function(){return s.v},abrupt:function(m,v){return c(s.a,a[m],v)},delegateYield:function(m,v,b){return u.resultName=v,c(s.d,Co(m),b)},finish:function(m){return c(s.f,m)}},c=function(m,v,b){s.p=u.prev,s.n=u.next;try{return m(v,b)}finally{u.next=s.n}}),u.resultName&&(u[u.resultName]=s.v,u.resultName=void 0),u.sent=s.v,u.next=s.n;try{return i.call(this,u)}finally{s.p=u.prev,s.n=u.next}}}return(Ye=function(){return{wrap:function(c,s,d,m){return e.w(o(c),s,d,m&&m.reverse())},isGeneratorFunction:n,mark:e.m,awrap:function(c,s){return new pu(c,s)},AsyncIterator:tr,async:function(c,s,d,m,v){return(n(s)?vu:Sv)(o(c),s,d,m,v)},keys:Cv,values:Co}})()}function xo(e,t,r,n,a,o,i){try{var u=e[o](i),c=u.value}catch(s){return void r(s)}u.done?t(c):Promise.resolve(c).then(n,a)}function hu(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function i(c){xo(o,n,a,i,u,"next",c)}function u(c){xo(o,n,a,i,u,"throw",c)}i(void 0)})}}var _t=E({},uc),xv=_t.version,Yr=_t.render,_v=_t.unmountComponentAtNode,Rr;try{var Ev=Number((xv||"").split(".")[0]);Ev>=18&&(Rr=_t.createRoot)}catch{}function _o(e){var t=_t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;t&&z(t)==="object"&&(t.usingClientEntryPoint=e)}var rr="__rc_react_root__";function Ov(e,t){_o(!0);var r=t[rr]||Rr(t);_o(!1),r.render(e),t[rr]=r}function Pv(e,t){Yr==null||Yr(e,t)}function $v(e,t){if(Rr){Ov(e,t);return}Pv(e,t)}function Av(e){return Nn.apply(this,arguments)}function Nn(){return Nn=hu(Ye().mark(function e(t){return Ye().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",Promise.resolve().then(function(){var a;(a=t[rr])===null||a===void 0||a.unmount(),delete t[rr]}));case 1:case"end":return n.stop()}},e)})),Nn.apply(this,arguments)}function Rv(e){_v(e)}function Tv(e){return Fn.apply(this,arguments)}function Fn(){return Fn=hu(Ye().mark(function e(t){return Ye().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:if(Rr===void 0){n.next=2;break}return n.abrupt("return",Av(t));case 2:Rv(t);case 3:case"end":return n.stop()}},e)})),Fn.apply(this,arguments)}var Mv=["children"],yu=w.createContext({});function Hw(e){var t=e.children,r=We(e,Mv);return w.createElement(yu.Provider,{value:r},t)}var Iv=function(e){gr(r,e);var t=Ar(r);function r(){return yr(this,r),t.apply(this,arguments)}return mr(r,[{key:"render",value:function(){return this.props.children}}]),r}(w.Component);function jn(e){var t=w.useRef();t.current=e;var r=w.useCallback(function(){for(var n,a=arguments.length,o=new Array(a),i=0;i1&&arguments[1]!==void 0?arguments[1]:1;Ro+=1;var n=Ro;function a(o){if(o===0)Ou(n),t();else{var i=_u(function(){a(o-1)});ba.set(n,i)}}return a(r),n};Dn.cancel=function(e){var t=ba.get(e);return Ou(e),Eu(t)};const kv=function(){var e=w.useRef(null);function t(){Dn.cancel(e.current)}function r(n){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;t();var o=Dn(function(){a<=1?n({isCanceled:function(){return o!==e.current}}):r(n,a-1)});e.current=o}return w.useEffect(function(){return function(){t()}},[]),[r,t]};var Uv=[ie,qe,He,ga],Bv=[ie,mu],Pu=!1,qv=!0;function $u(e){return e===He||e===ga}const Hv=function(e,t,r){var n=Ln(Eo),a=Q(n,2),o=a[0],i=a[1],u=kv(),c=Q(u,2),s=c[0],d=c[1];function m(){i(ie,!0)}var v=t?Bv:Uv;return xu(function(){if(o!==Eo&&o!==ga){var b=v.indexOf(o),S=v[b+1],x=r(o);x===Pu?i(S,!0):S&&s(function(C){function g(){C.isCanceled()||i(S,!0)}x===!0?g():Promise.resolve(x).then(g)})}},[e,o]),w.useEffect(function(){return function(){d()}},[]),[m,o]};function zv(e,t,r,n){var a=n.motionEnter,o=a===void 0?!0:a,i=n.motionAppear,u=i===void 0?!0:i,c=n.motionLeave,s=c===void 0?!0:c,d=n.motionDeadline,m=n.motionLeaveImmediately,v=n.onAppearPrepare,b=n.onEnterPrepare,S=n.onLeavePrepare,x=n.onAppearStart,C=n.onEnterStart,g=n.onLeaveStart,y=n.onAppearActive,f=n.onEnterActive,l=n.onLeaveActive,h=n.onAppearEnd,p=n.onEnterEnd,_=n.onLeaveEnd,O=n.onVisibleChanged,P=Ln(),I=Q(P,2),N=I[0],T=I[1],R=Nv(xe),j=Q(R,2),M=j[0],L=j[1],U=Ln(null),ne=Q(U,2),be=ne[0],je=ne[1],ce=M(),At=w.useRef(!1),Br=w.useRef(null);function Rt(){return r()}var qa=w.useRef(!1);function Ha(){L(xe),je(null,!0)}var za=jn(function(X){var K=M();if(K!==xe){var fe=Rt();if(!(X&&!X.deadline&&X.target!==fe)){var Tt=qa.current,Mt;K===Lt&&Tt?Mt=h==null?void 0:h(fe,X):K===Dt&&Tt?Mt=p==null?void 0:p(fe,X):K===kt&&Tt&&(Mt=_==null?void 0:_(fe,X)),Tt&&Mt!==!1&&Ha()}}}),Xs=Dv(za),ec=Q(Xs,1),tc=ec[0],Ga=function(K){switch(K){case Lt:return k(k(k({},ie,v),qe,x),He,y);case Dt:return k(k(k({},ie,b),qe,C),He,f);case kt:return k(k(k({},ie,S),qe,g),He,l);default:return{}}},ot=w.useMemo(function(){return Ga(ce)},[ce]),rc=Hv(ce,!e,function(X){if(X===ie){var K=ot[ie];return K?K(Rt()):Pu}if($e in ot){var fe;je(((fe=ot[$e])===null||fe===void 0?void 0:fe.call(ot,Rt(),null))||null)}return $e===He&&ce!==xe&&(tc(Rt()),d>0&&(clearTimeout(Br.current),Br.current=setTimeout(function(){za({deadline:!0})},d))),$e===mu&&Ha(),qv}),Wa=Q(rc,2),nc=Wa[0],$e=Wa[1],ac=$u($e);qa.current=ac;var Va=w.useRef(null);xu(function(){if(!(At.current&&Va.current===t)){T(t);var X=At.current;At.current=!0;var K;!X&&t&&u&&(K=Lt),X&&t&&o&&(K=Dt),(X&&!t&&s||!X&&m&&!t&&s)&&(K=kt);var fe=Ga(K);K&&(e||fe[ie])?(L(K),nc()):L(xe),Va.current=t}},[t]),w.useEffect(function(){(ce===Lt&&!u||ce===Dt&&!o||ce===kt&&!s)&&L(xe)},[u,o,s]),w.useEffect(function(){return function(){At.current=!1,clearTimeout(Br.current)}},[]);var qr=w.useRef(!1);w.useEffect(function(){N&&(qr.current=!0),N!==void 0&&ce===xe&&((qr.current||N)&&(O==null||O(N)),qr.current=!0)},[N,ce]);var Hr=be;return ot[ie]&&$e===qe&&(Hr=E({transition:"none"},Hr)),[ce,$e,Hr,N??t]}function Gv(e){var t=e;z(e)==="object"&&(t=e.transitionSupport);function r(a,o){return!!(a.motionName&&t&&o!==!1)}var n=w.forwardRef(function(a,o){var i=a.visible,u=i===void 0?!0:i,c=a.removeOnLeave,s=c===void 0?!0:c,d=a.forceRender,m=a.children,v=a.motionName,b=a.leavedClassName,S=a.eventProps,x=w.useContext(yu),C=x.motion,g=r(a,C),y=w.useRef(),f=w.useRef();function l(){try{return y.current instanceof HTMLElement?y.current:Jp(f.current)}catch{return null}}var h=zv(g,u,l,a),p=Q(h,4),_=p[0],O=p[1],P=p[2],I=p[3],N=w.useRef(I);I&&(N.current=!0);var T=w.useCallback(function(ne){y.current=ne,su(o,ne)},[o]),R,j=E(E({},S),{},{visible:u});if(!m)R=null;else if(_===xe)I?R=m(E({},j),T):!s&&N.current&&b?R=m(E(E({},j),{},{className:b}),T):d||!s&&!b?R=m(E(E({},j),{},{style:{display:"none"}}),T):R=null;else{var M;O===ie?M="prepare":$u(O)?M="active":O===qe&&(M="start");var L=Ao(v,"".concat(_,"-").concat(M));R=m(E(E({},j),{},{className:Ce(Ao(v,_),k(k({},L,L&&M),v,typeof v=="string")),style:P}),T)}if(w.isValidElement(R)&&tv(R)){var U=rv(R);U||(R=w.cloneElement(R,{ref:T}))}return w.createElement(Iv,{ref:f},R)});return n.displayName="CSSMotion",n}const Wv=Gv(Cu);var kn="add",Un="keep",Bn="remove",Jr="removed";function Vv(e){var t;return e&&z(e)==="object"&&"key"in e?t=e:t={key:e},E(E({},t),{},{key:String(t.key)})}function qn(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return e.map(Vv)}function Kv(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=[],n=0,a=t.length,o=qn(e),i=qn(t);o.forEach(function(s){for(var d=!1,m=n;m1});return c.forEach(function(s){r=r.filter(function(d){var m=d.key,v=d.status;return m!==s||v!==Bn}),r.forEach(function(d){d.key===s&&(d.status=Un)})}),r}var Yv=["component","children","onVisibleChanged","onAllRemoved"],Jv=["status"],Qv=["eventProps","visible","children","motionName","motionAppear","motionEnter","motionLeave","motionLeaveImmediately","motionDeadline","removeOnLeave","leavedClassName","onAppearPrepare","onAppearStart","onAppearActive","onAppearEnd","onEnterStart","onEnterActive","onEnterEnd","onLeaveStart","onLeaveActive","onLeaveEnd"];function Zv(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wv,r=function(n){gr(o,n);var a=Ar(o);function o(){var i;yr(this,o);for(var u=arguments.length,c=new Array(u),s=0;s=v&&(m.key=C[0].notice.key,m.updateMark=Mo(),m.userPassKey=d,C.shift()),C.push({notice:m,holderCallback:c})),{notices:C}})},n.remove=function(u){n.setState(function(c){var s=c.notices;return{notices:s.filter(function(d){var m=d.notice,v=m.key,b=m.userPassKey,S=b??v;return S!==u})}})},n.noticePropsMap={},n}return mr(r,[{key:"getTransitionName",value:function(){var a=this.props,o=a.prefixCls,i=a.animation,u=this.props.transitionName;return!u&&i&&(u="".concat(o,"-").concat(i)),u}},{key:"render",value:function(){var a=this,o=this.state.notices,i=this.props,u=i.prefixCls,c=i.className,s=i.closeIcon,d=i.style,m=[];return o.forEach(function(v,b){var S=v.notice,x=v.holderCallback,C=b===o.length-1?S.updateMark:void 0,g=S.key,y=S.userPassKey,f=E(E(E({prefixCls:u,closeIcon:s},S),S.props),{},{key:g,noticeKey:y||g,updateMark:C,onClose:function(h){var p;a.remove(h),(p=S.onClose)===null||p===void 0||p.call(S)},onClick:S.onClick,children:S.content});m.push(g),a.noticePropsMap[g]={props:f,holderCallback:x}}),w.createElement("div",{className:Ce(u,c),style:d},w.createElement(Xv,{keys:m,motionName:this.getTransitionName(),onVisibleChanged:function(b,S){var x=S.key;b||delete a.noticePropsMap[x]}},function(v){var b=v.key,S=v.className,x=v.style,C=v.visible,g=a.noticePropsMap[b],y=g.props,f=g.holderCallback;return f?w.createElement("div",{key:b,className:Ce(S,"".concat(u,"-hook-holder")),style:E({},x),ref:function(h){typeof b>"u"||(h?(a.hookRefs.set(b,h),f(h,y)):a.hookRefs.delete(b))}}):w.createElement(wa,A({},y,{className:Ce(S,y==null?void 0:y.className),style:E(E({},x),y==null?void 0:y.style),visible:C}))}))}}]),r}(w.Component);Je.newInstance=void 0;Je.defaultProps={prefixCls:"rc-notification",animation:"fade",style:{top:65,left:"50%"}};Je.newInstance=function(t,r){var n=t||{},a=n.getContainer,o=We(n,eh),i=document.createElement("div");if(a){var u=a();u.appendChild(i)}else document.body.appendChild(i);var c=!1;function s(d){c||(c=!0,r({notice:function(v){d.add(v)},removeNotice:function(v){d.remove(v)},component:d,destroy:function(){Tv(i),i.parentNode&&i.parentNode.removeChild(i)},useNotification:function(){return Sa(d)}}))}$v(w.createElement(Je,A({},o,{ref:s})),i)};function rh(e,t){var r=function(){var a,o,i=null,u={add:function(x,C){i==null||i.component.add(x,C)}},c=Sa(u),s=Q(c,2),d=s[0],m=s[1];function v(S){var x=S.prefixCls,C=a("message",x),g=a(),y=S.key||ju(),f=new Promise(function(h){var p=function(){return typeof S.onClose=="function"&&S.onClose(),h(!0)};e(A(A({},S),{prefixCls:C,rootPrefixCls:g,getPopupContainer:o}),function(_){var O=_.prefixCls,P=_.instance;i=P,d(t(A(A({},S),{key:y,onClose:p}),O))})}),l=function(){i&&i.removeNotice(y)};return l.then=function(h,p){return f.then(h,p)},l.promise=f,l}var b=w.useRef({});return b.current.open=v,ku.forEach(function(S){return Bu(b.current,S)}),[b.current,w.createElement(xa,{key:"holder"},function(S){return a=S.getPrefixCls,o=S.getPopupContainer,m})]};return r}var Z,Au=3,Ru,nh=1,Tu="",Hn="move-up",Mu=!1,Iu,Nu,Fu=!1;function ju(){return nh++}function ah(e){e.top!==void 0&&(Ru=e.top,Z=null),e.duration!==void 0&&(Au=e.duration),e.prefixCls!==void 0&&(Tu=e.prefixCls),e.getContainer!==void 0&&(Iu=e.getContainer,Z=null),e.transitionName!==void 0&&(Hn=e.transitionName,Z=null,Mu=!0),e.maxCount!==void 0&&(Nu=e.maxCount,Z=null),e.rtl!==void 0&&(Fu=e.rtl)}function Lu(e,t){var r=e.prefixCls,n=e.getPopupContainer,a=Xu(),o=a.getPrefixCls,i=a.getRootPrefixCls,u=a.getIconPrefixCls,c=o("message",r||Tu),s=i(e.rootPrefixCls,c),d=u();if(Z){t({prefixCls:c,rootPrefixCls:s,iconPrefixCls:d,instance:Z});return}var m={prefixCls:c,transitionName:Mu?Hn:"".concat(s,"-").concat(Hn),style:{top:Ru},getContainer:Iu||n,maxCount:Nu};Je.newInstance(m,function(v){if(Z){t({prefixCls:c,rootPrefixCls:s,iconPrefixCls:d,instance:Z});return}Z=v,t({prefixCls:c,rootPrefixCls:s,iconPrefixCls:d,instance:v})})}var Du={info:Ip,success:Zd,error:sp,warning:xp,loading:Hp},ku=Object.keys(Du);function Uu(e,t,r){var n=e.duration!==void 0?e.duration:Au,a=Du[e.type],o=Ce("".concat(t,"-custom-content"),k(k({},"".concat(t,"-").concat(e.type),e.type),"".concat(t,"-rtl"),Fu===!0));return{key:e.key,duration:n,style:e.style||{},className:e.className,content:w.createElement(es,{iconPrefixCls:r},w.createElement("div",{className:o},e.icon||a&&w.createElement(a,null),w.createElement("span",null,e.content))),onClose:e.onClose,onClick:e.onClick}}function oh(e){var t=e.key||ju(),r=new Promise(function(a){var o=function(){return typeof e.onClose=="function"&&e.onClose(),a(!0)};Lu(e,function(i){var u=i.prefixCls,c=i.iconPrefixCls,s=i.instance;s.notice(Uu(A(A({},e),{key:t,onClose:o}),u,c))})}),n=function(){var o;Z&&(Z.removeNotice(t),(o=e.onClose)===null||o===void 0||o.call(e))};return n.then=function(a,o){return r.then(a,o)},n.promise=r,n}function ih(e){return Object.prototype.toString.call(e)==="[object Object]"&&!!e.content}var mt={open:oh,config:ah,destroy:function(t){if(Z)if(t){var r=Z,n=r.removeNotice;n(t)}else{var a=Z,o=a.destroy;o(),Z=null}}};function Bu(e,t){e[t]=function(r,n,a){return ih(r)?e.open(A(A({},r),{type:t})):(typeof n=="function"&&(a=n,n=void 0),e.open({content:r,duration:n,type:t,onClose:a}))}}ku.forEach(function(e){return Bu(mt,e)});mt.warn=mt.warning;mt.useMessage=rh(Lu,Uu);const uh=mt;function sh(e,t){var r=function(){var a,o=null,i={add:function(S,x){o==null||o.component.add(S,x)}},u=Sa(i),c=Q(u,2),s=c[0],d=c[1];function m(b){var S=b.prefixCls,x=a("notification",S);e(A(A({},b),{prefixCls:x}),function(C){var g=C.prefixCls,y=C.instance;o=y,s(t(b,g))})}var v=w.useRef({});return v.current.open=m,["success","info","warning","error"].forEach(function(b){v.current[b]=function(S){return v.current.open(A(A({},S),{type:b}))}}),[v.current,w.createElement(xa,{key:"holder"},function(b){return a=b.getPrefixCls,d})]};return r}globalThis&&globalThis.__awaiter;var Ae={},qu=4.5,Hu=24,zu=24,Gu="",zn="topRight",Wu,Vu,Ku=!1,Yu;function ch(e){var t=e.duration,r=e.placement,n=e.bottom,a=e.top,o=e.getContainer,i=e.closeIcon,u=e.prefixCls;u!==void 0&&(Gu=u),t!==void 0&&(qu=t),r!==void 0?zn=r:e.rtl&&(zn="topLeft"),n!==void 0&&(zu=n),a!==void 0&&(Hu=a),o!==void 0&&(Wu=o),i!==void 0&&(Vu=i),e.rtl!==void 0&&(Ku=e.rtl),e.maxCount!==void 0&&(Yu=e.maxCount)}function fh(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Hu,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:zu,n;switch(e){case"top":n={left:"50%",transform:"translateX(-50%)",right:"auto",top:t,bottom:"auto"};break;case"topLeft":n={left:0,top:t,bottom:"auto"};break;case"topRight":n={right:0,top:t,bottom:"auto"};break;case"bottom":n={left:"50%",transform:"translateX(-50%)",right:"auto",top:"auto",bottom:r};break;case"bottomLeft":n={left:0,top:"auto",bottom:r};break;default:n={right:0,top:"auto",bottom:r};break}return n}function Ju(e,t){var r=e.placement,n=r===void 0?zn:r,a=e.top,o=e.bottom,i=e.getContainer,u=i===void 0?Wu:i,c=e.prefixCls,s=Xu(),d=s.getPrefixCls,m=s.getIconPrefixCls,v=d("notification",c||Gu),b=m(),S="".concat(v,"-").concat(n),x=Ae[S];if(x){Promise.resolve(x).then(function(g){t({prefixCls:"".concat(v,"-notice"),iconPrefixCls:b,instance:g})});return}var C=Ce("".concat(v,"-").concat(n),k({},"".concat(v,"-rtl"),Ku===!0));Ae[S]=new Promise(function(g){Je.newInstance({prefixCls:v,className:C,style:fh(n,a,o),getContainer:u,maxCount:Yu},function(y){g(y),t({prefixCls:"".concat(v,"-notice"),iconPrefixCls:b,instance:y})})})}var lh={success:np,info:Dp,error:pp,warning:$p};function Qu(e,t,r){var n=e.duration,a=e.icon,o=e.type,i=e.description,u=e.message,c=e.btn,s=e.onClose,d=e.onClick,m=e.key,v=e.style,b=e.className,S=e.closeIcon,x=S===void 0?Vu:S,C=e.props,g=n===void 0?qu:n,y=null;a?y=w.createElement("span",{className:"".concat(t,"-icon")},e.icon):o&&(y=w.createElement(lh[o]||null,{className:"".concat(t,"-icon ").concat(t,"-icon-").concat(o)}));var f=typeof x>"u"?w.createElement("span",{className:"".concat(t,"-close-x")},w.createElement(gp,{className:"".concat(t,"-close-icon")})):x,l=!i&&y?w.createElement("span",{className:"".concat(t,"-message-single-line-auto-margin")}):null;return{content:w.createElement(es,{iconPrefixCls:r},w.createElement("div",{className:y?"".concat(t,"-with-icon"):"",role:"alert"},y,w.createElement("div",{className:"".concat(t,"-message")},l,u),w.createElement("div",{className:"".concat(t,"-description")},i),c?w.createElement("span",{className:"".concat(t,"-btn")},c):null)),duration:g,closable:!0,closeIcon:f,onClose:s,onClick:d,key:m,style:v||{},className:Ce(b,k({},"".concat(t,"-").concat(o),!!o)),props:C}}function dh(e){Ju(e,function(t){var r=t.prefixCls,n=t.iconPrefixCls,a=t.instance;a.notice(Qu(e,r,n))})}var Qe={open:dh,close:function(t){Object.keys(Ae).forEach(function(r){return Promise.resolve(Ae[r]).then(function(n){n.removeNotice(t)})})},config:ch,destroy:function(){Object.keys(Ae).forEach(function(t){Promise.resolve(Ae[t]).then(function(r){r.destroy()}),delete Ae[t]})}};["success","info","warning","error"].forEach(function(e){Qe[e]=function(t){return Qe.open(A(A({},t),{type:e}))}});Qe.warn=Qe.warning;Qe.useNotification=sh(Ju,Qu);const ph=Qe;var vh=function(t,r){return r||(t?"ant-".concat(t):"ant")},Ca=w.createContext({getPrefixCls:vh}),xa=Ca.Consumer,hh="-ant-".concat(Date.now(),"-").concat(Math.random());function yh(e,t){var r={},n=function(d,m){var v=d.clone();return v=(m==null?void 0:m(v))||v,v.toRgbString()},a=function(d,m){var v=new Ht(d),b=Ve(v.toRgbString());r["".concat(m,"-color")]=n(v),r["".concat(m,"-color-disabled")]=b[1],r["".concat(m,"-color-hover")]=b[4],r["".concat(m,"-color-active")]=b[6],r["".concat(m,"-color-outline")]=v.clone().setAlpha(.2).toRgbString(),r["".concat(m,"-color-deprecated-bg")]=b[0],r["".concat(m,"-color-deprecated-border")]=b[2]};if(t.primaryColor){a(t.primaryColor,"primary");var o=new Ht(t.primaryColor),i=Ve(o.toRgbString());i.forEach(function(s,d){r["primary-".concat(d+1)]=s}),r["primary-color-deprecated-l-35"]=n(o,function(s){return s.lighten(35)}),r["primary-color-deprecated-l-20"]=n(o,function(s){return s.lighten(20)}),r["primary-color-deprecated-t-20"]=n(o,function(s){return s.tint(20)}),r["primary-color-deprecated-t-50"]=n(o,function(s){return s.tint(50)}),r["primary-color-deprecated-f-12"]=n(o,function(s){return s.setAlpha(s.getAlpha()*.12)});var u=new Ht(i[0]);r["primary-color-active-deprecated-f-30"]=n(u,function(s){return s.setAlpha(s.getAlpha()*.3)}),r["primary-color-active-deprecated-d-02"]=n(u,function(s){return s.darken(2)})}t.successColor&&a(t.successColor,"success"),t.warningColor&&a(t.warningColor,"warning"),t.errorColor&&a(t.errorColor,"error"),t.infoColor&&a(t.infoColor,"info");var c=Object.keys(r).map(function(s){return"--".concat(e,"-").concat(s,": ").concat(r[s],";")});return` - :root { - `.concat(c.join(` -`),` - } - `).trim()}function mh(e,t){var r=yh(e,t);Ct()&&Mi(r,"".concat(hh,"-dynamic-theme"))}var Gn=w.createContext(!1),gh=function(t){var r=t.children,n=t.disabled,a=w.useContext(Gn);return w.createElement(Gn.Provider,{value:n??a},r)};const zw=Gn;var Wn=w.createContext(void 0),bh=function(t){var r=t.children,n=t.size;return w.createElement(Wn.Consumer,null,function(a){return w.createElement(Wn.Provider,{value:n||a},r)})};const wh=Wn;var Sh=["getTargetContainer","getPopupContainer","renderEmpty","pageHeader","input","pagination","form"],Ch="ant",xh="anticon",nr,Zu;function Vt(){return nr||Ch}function _h(){return Zu||xh}var Eh=function(t){var r=t.prefixCls,n=t.iconPrefixCls,a=t.theme;r!==void 0&&(nr=r),n!==void 0&&(Zu=n),a&&mh(Vt(),a)},Xu=function(){return{getPrefixCls:function(r,n){return n||(r?"".concat(Vt(),"-").concat(r):Vt())},getIconPrefixCls:_h,getRootPrefixCls:function(r,n){return r||nr||(n&&n.includes("-")?n.replace(/^(.*)-[^-]*$/,"$1"):Vt())}}},Oh=function(t){var r=t.children,n=t.csp,a=t.autoInsertSpaceInButton,o=t.form,i=t.locale,u=t.componentSize,c=t.direction,s=t.space,d=t.virtual,m=t.dropdownMatchSelectWidth,v=t.legacyLocale,b=t.parentContext,S=t.iconPrefixCls,x=t.componentDisabled,C=w.useCallback(function(p,_){var O=t.prefixCls;if(_)return _;var P=O||b.getPrefixCls("");return p?"".concat(P,"-").concat(p):P},[b.getPrefixCls,t.prefixCls]),g=A(A({},b),{csp:n,autoInsertSpaceInButton:a,locale:i||v,direction:c,space:s,virtual:d,dropdownMatchSelectWidth:m,getPrefixCls:C});Sh.forEach(function(p){var _=t[p];_&&(g[p]=_)});var y=uu(function(){return g},g,function(p,_){var O=Object.keys(p),P=Object.keys(_);return O.length!==P.length||O.some(function(I){return p[I]!==_[I]})}),f=w.useMemo(function(){return{prefixCls:S,csp:n}},[S,n]),l=r,h=w.useMemo(function(){var p,_,O,P;return sv(((p=Ke.Form)===null||p===void 0?void 0:p.defaultValidateMessages)||{},((O=(_=y.locale)===null||_===void 0?void 0:_.Form)===null||O===void 0?void 0:O.defaultValidateMessages)||{},((P=y.form)===null||P===void 0?void 0:P.validateMessages)||{},(o==null?void 0:o.validateMessages)||{})},[y,o==null?void 0:o.validateMessages]);return Object.keys(h).length>0&&(l=w.createElement(cv.Provider,{value:h},r)),i&&(l=w.createElement(gv,{locale:i,_ANT_MARK__:yv},l)),(S||n)&&(l=w.createElement(oa.Provider,{value:f},l)),u&&(l=w.createElement(bh,{size:u},l)),x!==void 0&&(l=w.createElement(gh,{disabled:x},l)),w.createElement(Ca.Provider,{value:y},l)},Tr=function(t){return w.useEffect(function(){t.direction&&(uh.config({rtl:t.direction==="rtl"}),ph.config({rtl:t.direction==="rtl"}))},[t.direction]),w.createElement(wv,null,function(r,n,a){return w.createElement(xa,null,function(o){return w.createElement(Oh,A({parentContext:o,legacyLocale:a},t))})})};Tr.ConfigContext=Ca;Tr.SizeContext=wh;Tr.config=Eh;const es=Tr;var ts=w.isValidElement;function Gw(e){return e&&ts(e)&&e.type===w.Fragment}function Ph(e,t,r){return ts(e)?w.cloneElement(e,typeof r=="function"?r(e.props||{}):r):t}function Ww(e,t){return Ph(e,e,t)}var Vw=function(){for(var t=arguments.length,r=new Array(t),n=0;n-1}var zh=Hh,Gh=Mr;function Wh(e,t){var r=this.__data__,n=Gh(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Vh=Wh,Kh=Rh,Yh=Dh,Jh=Bh,Qh=zh,Zh=Vh;function et(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=Xy}var tm=em;/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var Vn=function(e,t){return Vn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(r[a]=n[a])},Vn(e,t)};function Jw(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Vn(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}var ar=function(){return ar=Object.assign||function(t){for(var r,n=1,a=arguments.length;n=0;u--)(i=e[u])&&(o=(a<3?i(o):a>3?i(t,r,o):i(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o}function Xw(){for(var e=0,t=0,r=arguments.length;t-1e3&&e<1e3||os.call(/e/,t))return t;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof e=="number"){var n=e<0?-qo(-e):qo(e);if(n!==e){var a=String(n),o=Pa.call(t,a.length+1);return Ee.call(a,r,"$&_")+"."+Ee.call(Ee.call(o,/([0-9]{3})/g,"$&_"),/_$/,"")}}return Ee.call(t,r,"$&_")}var Jn=om,Go=Jn.custom,Wo=cs(Go)?Go:null,us={__proto__:null,double:'"',single:"'"},hm={__proto__:null,double:/(["\\])/g,single:/(['\\])/g},Fr=function e(t,r,n,a){var o=r||{};if(Se(o,"quoteStyle")&&!Se(us,o.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Se(o,"maxStringLength")&&(typeof o.maxStringLength=="number"?o.maxStringLength<0&&o.maxStringLength!==1/0:o.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var i=Se(o,"customInspect")?o.customInspect:!0;if(typeof i!="boolean"&&i!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Se(o,"indent")&&o.indent!==null&&o.indent!==" "&&!(parseInt(o.indent,10)===o.indent&&o.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(Se(o,"numericSeparator")&&typeof o.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var u=o.numericSeparator;if(typeof t>"u")return"undefined";if(t===null)return"null";if(typeof t=="boolean")return t?"true":"false";if(typeof t=="string")return ls(t,o);if(typeof t=="number"){if(t===0)return 1/0/t>0?"0":"-0";var c=String(t);return u?zo(t,c):c}if(typeof t=="bigint"){var s=String(t)+"n";return u?zo(t,s):s}var d=typeof o.depth>"u"?5:o.depth;if(typeof n>"u"&&(n=0),n>=d&&d>0&&typeof t=="object")return Qn(t)?"[Array]":"[Object]";var m=Im(o,n);if(typeof a>"u")a=[];else if(fs(a,t)>=0)return"[Circular]";function v(R,j,M){if(j&&(a=vm.call(a),a.push(j)),M){var L={depth:o.depth};return Se(o,"quoteStyle")&&(L.quoteStyle=o.quoteStyle),e(R,L,n+1,a)}return e(R,o,n+1,a)}if(typeof t=="function"&&!Vo(t)){var b=_m(t),S=Bt(t,v);return"[Function"+(b?": "+b:" (anonymous)")+"]"+(S.length>0?" { "+pe.call(S,", ")+" }":"")}if(cs(t)){var x=Ze?Ee.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):Yn.call(t);return typeof t=="object"&&!Ze?ut(x):x}if(Rm(t)){for(var C="<"+Uo.call(String(t.nodeName)),g=t.attributes||[],y=0;y",C}if(Qn(t)){if(t.length===0)return"[]";var f=Bt(t,v);return m&&!Mm(f)?"["+Zn(f,m)+"]":"[ "+pe.call(f,", ")+" ]"}if(gm(t)){var l=Bt(t,v);return!("cause"in Error.prototype)&&"cause"in t&&!is.call(t,"cause")?"{ ["+String(t)+"] "+pe.call(Bo.call("[cause]: "+v(t.cause),l),", ")+" }":l.length===0?"["+String(t)+"]":"{ ["+String(t)+"] "+pe.call(l,", ")+" }"}if(typeof t=="object"&&i){if(Wo&&typeof t[Wo]=="function"&&Jn)return Jn(t,{depth:d-n});if(i!=="symbol"&&typeof t.inspect=="function")return t.inspect()}if(Em(t)){var h=[];return Lo&&Lo.call(t,function(R,j){h.push(v(j,t,!0)+" => "+v(R,t))}),Ko("Map",or.call(t),h,m)}if($m(t)){var p=[];return Do&&Do.call(t,function(R){p.push(v(R,t))}),Ko("Set",ir.call(t),p,m)}if(Om(t))return tn("WeakMap");if(Am(t))return tn("WeakSet");if(Pm(t))return tn("WeakRef");if(wm(t))return ut(v(Number(t)));if(Cm(t))return ut(v(Kn.call(t)));if(Sm(t))return ut(cm.call(t));if(bm(t))return ut(v(String(t)));if(typeof window<"u"&&t===window)return"{ [object Window] }";if(typeof globalThis<"u"&&t===globalThis||typeof he<"u"&&t===he)return"{ [object globalThis] }";if(!mm(t)&&!Vo(t)){var _=Bt(t,v),O=Ho?Ho(t)===Object.prototype:t instanceof Object||t.constructor===Object,P=t instanceof Object?"":"null prototype",I=!O&&pt&&Object(t)===t&&pt in t?Pa.call(Pe(t),8,-1):P?"Object":"",N=O||typeof t.constructor!="function"?"":t.constructor.name?t.constructor.name+" ":"",T=N+(I||P?"["+pe.call(Bo.call([],I||[],P||[]),": ")+"] ":"");return _.length===0?T+"{}":m?T+"{"+Zn(_,m)+"}":T+"{ "+pe.call(_,", ")+" }"}return String(t)};function ss(e,t,r){var n=r.quoteStyle||t,a=us[n];return a+e+a}function ym(e){return Ee.call(String(e),/"/g,""")}function Fe(e){return!pt||!(typeof e=="object"&&(pt in e||typeof e[pt]<"u"))}function Qn(e){return Pe(e)==="[object Array]"&&Fe(e)}function mm(e){return Pe(e)==="[object Date]"&&Fe(e)}function Vo(e){return Pe(e)==="[object RegExp]"&&Fe(e)}function gm(e){return Pe(e)==="[object Error]"&&Fe(e)}function bm(e){return Pe(e)==="[object String]"&&Fe(e)}function wm(e){return Pe(e)==="[object Number]"&&Fe(e)}function Sm(e){return Pe(e)==="[object Boolean]"&&Fe(e)}function cs(e){if(Ze)return e&&typeof e=="object"&&e instanceof Symbol;if(typeof e=="symbol")return!0;if(!e||typeof e!="object"||!Yn)return!1;try{return Yn.call(e),!0}catch{}return!1}function Cm(e){if(!e||typeof e!="object"||!Kn)return!1;try{return Kn.call(e),!0}catch{}return!1}var xm=Object.prototype.hasOwnProperty||function(e){return e in this};function Se(e,t){return xm.call(e,t)}function Pe(e){return fm.call(e)}function _m(e){if(e.name)return e.name;var t=dm.call(lm.call(e),/^function\s*([\w$]+)/);return t?t[1]:null}function fs(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,n=e.length;rt.maxStringLength){var r=e.length-t.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return ls(Pa.call(e,0,t.maxStringLength),t)+n}var a=hm[t.quoteStyle||"single"];a.lastIndex=0;var o=Ee.call(Ee.call(e,a,"\\$1"),/[\x00-\x1f]/g,Tm);return ss(o,"single",t)}function Tm(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+pm.call(t.toString(16))}function ut(e){return"Object("+e+")"}function tn(e){return e+" { ? }"}function Ko(e,t,r,n){var a=n?Zn(r,n):pe.call(r,", ");return e+" ("+t+") {"+a+"}"}function Mm(e){for(var t=0;t=0)return!1;return!0}function Im(e,t){var r;if(e.indent===" ")r=" ";else if(typeof e.indent=="number"&&e.indent>0)r=pe.call(Array(e.indent+1)," ");else return null;return{base:r,prev:pe.call(Array(t+1),r)}}function Zn(e,t){if(e.length===0)return"";var r=` -`+t.prev+t.base;return r+pe.call(e,","+r)+` -`+t.prev}function Bt(e,t){var r=Qn(e),n=[];if(r){n.length=e.length;for(var a=0;a"u"||!H?$:H(Uint8Array),Ie={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?$:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?$:ArrayBuffer,"%ArrayIteratorPrototype%":Le&&H?H([][Symbol.iterator]()):$,"%AsyncFromSyncIteratorPrototype%":$,"%AsyncFunction%":Be,"%AsyncGenerator%":Be,"%AsyncGeneratorFunction%":Be,"%AsyncIteratorPrototype%":Be,"%Atomics%":typeof Atomics>"u"?$:Atomics,"%BigInt%":typeof BigInt>"u"?$:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?$:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?$:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?$:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$g,"%eval%":eval,"%EvalError%":Ag,"%Float16Array%":typeof Float16Array>"u"?$:Float16Array,"%Float32Array%":typeof Float32Array>"u"?$:Float32Array,"%Float64Array%":typeof Float64Array>"u"?$:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?$:FinalizationRegistry,"%Function%":gs,"%GeneratorFunction%":Be,"%Int8Array%":typeof Int8Array>"u"?$:Int8Array,"%Int16Array%":typeof Int16Array>"u"?$:Int16Array,"%Int32Array%":typeof Int32Array>"u"?$:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Le&&H?H(H([][Symbol.iterator]())):$,"%JSON%":typeof JSON=="object"?JSON:$,"%Map%":typeof Map>"u"?$:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Le||!H?$:H(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Pg,"%Object.getOwnPropertyDescriptor%":gt,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?$:Promise,"%Proxy%":typeof Proxy>"u"?$:Proxy,"%RangeError%":Rg,"%ReferenceError%":Tg,"%Reflect%":typeof Reflect>"u"?$:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?$:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Le||!H?$:H(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?$:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Le&&H?H(""[Symbol.iterator]()):$,"%Symbol%":Le?Symbol:$,"%SyntaxError%":Xe,"%ThrowTypeError%":Bg,"%TypedArray%":zg,"%TypeError%":Ge,"%Uint8Array%":typeof Uint8Array>"u"?$:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?$:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?$:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?$:Uint32Array,"%URIError%":Mg,"%WeakMap%":typeof WeakMap>"u"?$:WeakMap,"%WeakRef%":typeof WeakRef>"u"?$:WeakRef,"%WeakSet%":typeof WeakSet>"u"?$:WeakSet,"%Function.prototype.call%":Et,"%Function.prototype.apply%":bs,"%Object.defineProperty%":Ug,"%Object.getPrototypeOf%":qg,"%Math.abs%":Ig,"%Math.floor%":Ng,"%Math.max%":Fg,"%Math.min%":jg,"%Math.pow%":Lg,"%Math.round%":Dg,"%Math.sign%":kg,"%Reflect.getPrototypeOf%":Hg};if(H)try{null.error}catch(e){var Gg=H(H(e));Ie["%Error.prototype%"]=Gg}var Wg=function e(t){var r;if(t==="%AsyncFunction%")r=ln("async function () {}");else if(t==="%GeneratorFunction%")r=ln("function* () {}");else if(t==="%AsyncGeneratorFunction%")r=ln("async function* () {}");else if(t==="%AsyncGenerator%"){var n=e("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(t==="%AsyncIteratorPrototype%"){var a=e("%AsyncGenerator%");a&&H&&(r=H(a.prototype))}return Ie[t]=r,r},ai={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Ot=Lr,ur=Og(),Vg=Ot.call(Et,Array.prototype.concat),Kg=Ot.call(bs,Array.prototype.splice),oi=Ot.call(Et,String.prototype.replace),sr=Ot.call(Et,String.prototype.slice),Yg=Ot.call(Et,RegExp.prototype.exec),Jg=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Qg=/\\(\\)?/g,Zg=function(t){var r=sr(t,0,1),n=sr(t,-1);if(r==="%"&&n!=="%")throw new Xe("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new Xe("invalid intrinsic syntax, expected opening `%`");var a=[];return oi(t,Jg,function(o,i,u,c){a[a.length]=u?oi(c,Qg,"$1"):i||o}),a},Xg=function(t,r){var n=t,a;if(ur(ai,n)&&(a=ai[n],n="%"+a[0]+"%"),ur(Ie,n)){var o=Ie[n];if(o===Be&&(o=Wg(n)),typeof o>"u"&&!r)throw new Ge("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:a,name:n,value:o}}throw new Xe("intrinsic "+t+" does not exist!")},Aa=function(t,r){if(typeof t!="string"||t.length===0)throw new Ge("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new Ge('"allowMissing" argument must be a boolean');if(Yg(/^%?[^%]*%?$/,t)===null)throw new Xe("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=Zg(t),a=n.length>0?n[0]:"",o=Xg("%"+a+"%",r),i=o.name,u=o.value,c=!1,s=o.alias;s&&(a=s[0],Kg(n,Vg([0,1],s)));for(var d=1,m=!0;d=n.length){var x=gt(u,v);m=!!x,m&&"get"in x&&!("originalValue"in x.get)?u=x.get:u=u[v]}else m=ur(u,v),u=u[v];m&&!c&&(Ie[i]=u)}}return u},ws=Aa,Ss=ms,e1=Ss([ws("%String.prototype.indexOf%")]),Cs=function(t,r){var n=ws(t,!!r);return typeof n=="function"&&e1(t,".prototype.")>-1?Ss([n]):n},t1=Aa,Pt=Cs,r1=Fr,n1=nt,ii=t1("%Map%",!0),a1=Pt("Map.prototype.get",!0),o1=Pt("Map.prototype.set",!0),i1=Pt("Map.prototype.has",!0),u1=Pt("Map.prototype.delete",!0),s1=Pt("Map.prototype.size",!0),xs=!!ii&&function(){var t,r={assert:function(n){if(!r.has(n))throw new n1("Side channel does not contain "+r1(n))},delete:function(n){if(t){var a=u1(t,n);return s1(t)===0&&(t=void 0),a}return!1},get:function(n){if(t)return a1(t,n)},has:function(n){return t?i1(t,n):!1},set:function(n,a){t||(t=new ii),o1(t,n,a)}};return r},c1=Aa,Dr=Cs,f1=Fr,qt=xs,l1=nt,De=c1("%WeakMap%",!0),d1=Dr("WeakMap.prototype.get",!0),p1=Dr("WeakMap.prototype.set",!0),v1=Dr("WeakMap.prototype.has",!0),h1=Dr("WeakMap.prototype.delete",!0),y1=De?function(){var t,r,n={assert:function(a){if(!n.has(a))throw new l1("Side channel does not contain "+f1(a))},delete:function(a){if(De&&a&&(typeof a=="object"||typeof a=="function")){if(t)return h1(t,a)}else if(qt&&r)return r.delete(a);return!1},get:function(a){return De&&a&&(typeof a=="object"||typeof a=="function")&&t?d1(t,a):r&&r.get(a)},has:function(a){return De&&a&&(typeof a=="object"||typeof a=="function")&&t?v1(t,a):!!r&&r.has(a)},set:function(a,o){De&&a&&(typeof a=="object"||typeof a=="function")?(t||(t=new De),p1(t,a,o)):qt&&(r||(r=qt()),r.set(a,o))}};return n}:qt,m1=nt,g1=Fr,b1=Um,w1=xs,S1=y1,C1=S1||w1||b1,_s=function(){var t,r={assert:function(n){if(!r.has(n))throw new m1("Side channel does not contain "+g1(n))},delete:function(n){return!!t&&t.delete(n)},get:function(n){return t&&t.get(n)},has:function(n){return!!t&&t.has(n)},set:function(n,a){t||(t=C1()),t.set(n,a)}};return r},x1=String.prototype.replace,_1=/%20/g,pn={RFC1738:"RFC1738",RFC3986:"RFC3986"},Ra={default:pn.RFC3986,formatters:{RFC1738:function(e){return x1.call(e,_1,"+")},RFC3986:function(e){return String(e)}},RFC1738:pn.RFC1738,RFC3986:pn.RFC3986},E1=Ra,O1=_s,vn=Object.prototype.hasOwnProperty,Re=Array.isArray,kr=O1(),ze=function(t,r){return kr.set(t,r),t},Te=function(t){return kr.has(t)},st=function(t){return kr.get(t)},Xn=function(t,r){kr.set(t,r)},le=function(){for(var e=[],t=0;t<256;++t)e[e.length]="%"+((t<16?"0":"")+t.toString(16)).toUpperCase();return e}(),P1=function(t){for(;t.length>1;){var r=t.pop(),n=r.obj[r.prop];if(Re(n)){for(var a=[],o=0;on.arrayLimit)return ze(vt(t.concat(r),n),a);t[a]=r}else if(t&&typeof t=="object")if(Te(t)){var o=st(t)+1;t[o]=r,Xn(t,o)}else(n&&(n.plainObjects||n.allowPrototypes)||!vn.call(Object.prototype,r))&&(t[r]=!0);else return[t,r];return t}if(!t||typeof t!="object"){if(Te(r)){for(var i=Object.keys(r),u=n&&n.plainObjects?{__proto__:null,0:t}:{0:t},c=0;cn.arrayLimit?ze(vt(d,n),d.length-1):d}var m=t;return Re(t)&&!Re(r)&&(m=vt(t,n)),Re(t)&&Re(r)?(r.forEach(function(v,b){if(vn.call(t,b)){var S=t[b];S&&typeof S=="object"&&v&&typeof v=="object"?t[b]=e(S,v,n):t[t.length]=v}else t[b]=v}),t):Object.keys(r).reduce(function(v,b){var S=r[b];if(vn.call(v,b)?v[b]=e(v[b],S,n):v[b]=S,Te(r)&&!Te(v)&&ze(v,st(r)),Te(v)){var x=parseInt(b,10);String(x)===b&&x>=0&&x>st(v)&&Xn(v,x)}return v},m)},A1=function(t,r){return Object.keys(r).reduce(function(n,a){return n[a]=r[a],n},t)},R1=function(e,t,r){var n=e.replace(/\+/g," ");if(r==="iso-8859-1")return n.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(n)}catch{return n}},hn=1024,T1=function(t,r,n,a,o){if(t.length===0)return t;var i=t;if(typeof t=="symbol"?i=Symbol.prototype.toString.call(t):typeof t!="string"&&(i=String(t)),n==="iso-8859-1")return escape(i).replace(/%u[0-9a-f]{4}/gi,function(b){return"%26%23"+parseInt(b.slice(2),16)+"%3B"});for(var u="",c=0;c=hn?i.slice(c,c+hn):i,d=[],m=0;m=48&&v<=57||v>=65&&v<=90||v>=97&&v<=122||o===E1.RFC1738&&(v===40||v===41)){d[d.length]=s.charAt(m);continue}if(v<128){d[d.length]=le[v];continue}if(v<2048){d[d.length]=le[192|v>>6]+le[128|v&63];continue}if(v<55296||v>=57344){d[d.length]=le[224|v>>12]+le[128|v>>6&63]+le[128|v&63];continue}m+=1,v=65536+((v&1023)<<10|s.charCodeAt(m)&1023),d[d.length]=le[240|v>>18]+le[128|v>>12&63]+le[128|v>>6&63]+le[128|v&63]}u+=d.join("")}return u},M1=function(t){for(var r=[{obj:{o:t},prop:"o"}],n=[],a=0;an?ze(vt(i,{plainObjects:a}),i.length-1):i},j1=function(t,r){if(Re(t)){for(var n=[],a=0;a"u"&&(h=0)}if(typeof d=="function"?f=d(r,f):f instanceof Date?f=b(f):n==="comma"&&de(f)&&(f=Jt.maybeMap(f,function(je){return je instanceof Date?b(je):je})),f===null){if(i)return s&&!C?s(r,B.encoder,g,"key",S):r;f=""}if(U1(f)||Jt.isBuffer(f)){if(s){var O=C?r:s(r,B.encoder,g,"key",S);return[x(O)+"="+x(s(f,B.encoder,g,"value",S))]}return[x(r)+"="+x(String(f))]}var P=[];if(typeof f>"u")return P;var I;if(n==="comma"&&de(f))C&&s&&(f=Jt.maybeMap(f,s)),I=[{value:f.length>0?f.join(",")||null:void 0}];else if(de(d))I=d;else{var N=Object.keys(f);I=m?N.sort(m):N}var T=c?String(r).replace(/\./g,"%2E"):String(r),R=a&&de(f)&&f.length===1?T+"[]":T;if(o&&de(f)&&f.length===0)return R+"[]";for(var j=0;j"u"?t.encodeDotInKeys===!0?!0:B.allowDots:!!t.allowDots;return{addQueryPrefix:typeof t.addQueryPrefix=="boolean"?t.addQueryPrefix:B.addQueryPrefix,allowDots:u,allowEmptyArrays:typeof t.allowEmptyArrays=="boolean"?!!t.allowEmptyArrays:B.allowEmptyArrays,arrayFormat:i,charset:r,charsetSentinel:typeof t.charsetSentinel=="boolean"?t.charsetSentinel:B.charsetSentinel,commaRoundTrip:!!t.commaRoundTrip,delimiter:typeof t.delimiter>"u"?B.delimiter:t.delimiter,encode:typeof t.encode=="boolean"?t.encode:B.encode,encodeDotInKeys:typeof t.encodeDotInKeys=="boolean"?t.encodeDotInKeys:B.encodeDotInKeys,encoder:typeof t.encoder=="function"?t.encoder:B.encoder,encodeValuesOnly:typeof t.encodeValuesOnly=="boolean"?t.encodeValuesOnly:B.encodeValuesOnly,filter:o,format:n,formatter:a,serializeDate:typeof t.serializeDate=="function"?t.serializeDate:B.serializeDate,skipNulls:typeof t.skipNulls=="boolean"?t.skipNulls:B.skipNulls,sort:typeof t.sort=="function"?t.sort:null,strictNullHandling:typeof t.strictNullHandling=="boolean"?t.strictNullHandling:B.strictNullHandling}},H1=function(e,t){var r=e,n=q1(t),a,o;typeof n.filter=="function"?(o=n.filter,r=o("",r)):de(n.filter)&&(o=n.filter,a=o);var i=[];if(typeof r!="object"||r===null)return"";var u=Ps[n.arrayFormat],c=u==="comma"&&n.commaRoundTrip;a||(a=Object.keys(r)),n.sort&&a.sort(n.sort);for(var s=Os(),d=0;d0?S+b:""},ye=Es,Qt=Object.prototype.hasOwnProperty,mn=Array.isArray,D={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:ye.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},z1=function(e){return e.replace(/&#(\d+);/g,function(t,r){return String.fromCharCode(parseInt(r,10))})},As=function(e,t,r){if(e&&typeof e=="string"&&t.comma&&e.indexOf(",")>-1)return e.split(",");if(t.throwOnLimitExceeded&&r>=t.arrayLimit)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(t.arrayLimit===1?"":"s")+" allowed in an array.");return e},G1="utf8=%26%2310003%3B",W1="utf8=%E2%9C%93",V1=function(t,r){var n={__proto__:null},a=r.ignoreQueryPrefix?t.replace(/^\?/,""):t;a=a.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var o=r.parameterLimit===1/0?void 0:r.parameterLimit,i=a.split(r.delimiter,r.throwOnLimitExceeded?o+1:o);if(r.throwOnLimitExceeded&&i.length>o)throw new RangeError("Parameter limit exceeded. Only "+o+" parameter"+(o===1?"":"s")+" allowed.");var u=-1,c,s=r.charset;if(r.charsetSentinel)for(c=0;c-1&&(S=mn(S)?[S]:S),r.comma&&mn(S)&&S.length>r.arrayLimit){if(r.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+r.arrayLimit+" element"+(r.arrayLimit===1?"":"s")+" allowed in an array.");S=ye.combine([],S,r.arrayLimit,r.plainObjects)}if(b!==null){var x=Qt.call(n,b);x&&r.duplicates==="combine"?n[b]=ye.combine(n[b],S,r.arrayLimit,r.plainObjects):(!x||r.duplicates==="last")&&(n[b]=S)}}return n},K1=function(e,t,r,n){var a=0;if(e.length>0&&e[e.length-1]==="[]"){var o=e.slice(0,-1).join("");a=Array.isArray(t)&&t[o]?t[o].length:0}for(var i=n?t:As(t,r,a),u=e.length-1;u>=0;--u){var c,s=e[u];if(s==="[]"&&r.parseArrays)ye.isOverflow(i)?c=i:c=r.allowEmptyArrays&&(i===""||r.strictNullHandling&&i===null)?[]:ye.combine([],i,r.arrayLimit,r.plainObjects);else{c=r.plainObjects?{__proto__:null}:{};var d=s.charAt(0)==="["&&s.charAt(s.length-1)==="]"?s.slice(1,-1):s,m=r.decodeDotInKeys?d.replace(/%2E/g,"."):d,v=parseInt(m,10),b=!isNaN(v)&&s!==m&&String(v)===m&&v>=0&&r.parseArrays;if(!r.parseArrays&&m==="")c={0:i};else if(b&&v"u"?D.charset:t.charset,n=typeof t.duplicates>"u"?D.duplicates:t.duplicates;if(n!=="combine"&&n!=="first"&&n!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var a=typeof t.allowDots>"u"?t.decodeDotInKeys===!0?!0:D.allowDots:!!t.allowDots;return{allowDots:a,allowEmptyArrays:typeof t.allowEmptyArrays=="boolean"?!!t.allowEmptyArrays:D.allowEmptyArrays,allowPrototypes:typeof t.allowPrototypes=="boolean"?t.allowPrototypes:D.allowPrototypes,allowSparse:typeof t.allowSparse=="boolean"?t.allowSparse:D.allowSparse,arrayLimit:typeof t.arrayLimit=="number"?t.arrayLimit:D.arrayLimit,charset:r,charsetSentinel:typeof t.charsetSentinel=="boolean"?t.charsetSentinel:D.charsetSentinel,comma:typeof t.comma=="boolean"?t.comma:D.comma,decodeDotInKeys:typeof t.decodeDotInKeys=="boolean"?t.decodeDotInKeys:D.decodeDotInKeys,decoder:typeof t.decoder=="function"?t.decoder:D.decoder,delimiter:typeof t.delimiter=="string"||ye.isRegExp(t.delimiter)?t.delimiter:D.delimiter,depth:typeof t.depth=="number"||t.depth===!1?+t.depth:D.depth,duplicates:n,ignoreQueryPrefix:t.ignoreQueryPrefix===!0,interpretNumericEntities:typeof t.interpretNumericEntities=="boolean"?t.interpretNumericEntities:D.interpretNumericEntities,parameterLimit:typeof t.parameterLimit=="number"?t.parameterLimit:D.parameterLimit,parseArrays:t.parseArrays!==!1,plainObjects:typeof t.plainObjects=="boolean"?t.plainObjects:D.plainObjects,strictDepth:typeof t.strictDepth=="boolean"?!!t.strictDepth:D.strictDepth,strictNullHandling:typeof t.strictNullHandling=="boolean"?t.strictNullHandling:D.strictNullHandling,throwOnLimitExceeded:typeof t.throwOnLimitExceeded=="boolean"?t.throwOnLimitExceeded:!1}},Z1=function(e,t){var r=Q1(t);if(e===""||e===null||typeof e>"u")return r.plainObjects?{__proto__:null}:{};for(var n=typeof e=="string"?V1(e,r):e,a=r.plainObjects?{__proto__:null}:{},o=Object.keys(n),i=0;i-1};function at(e){if(typeof e!="string"&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e)||e==="")throw new TypeError('Invalid character in header field name: "'+e+'"');return e.toLowerCase()}function Ma(e){return typeof e!="string"&&(e=String(e)),e}function Ia(e){var t={next:function(){var r=e.shift();return{done:r===void 0,value:r}}};return J.iterable&&(t[Symbol.iterator]=function(){return t}),t}function q(e){this.map={},e instanceof q?e.forEach(function(t,r){this.append(r,t)},this):Array.isArray(e)?e.forEach(function(t){if(t.length!=2)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+t.length);this.append(t[0],t[1])},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){this.append(t,e[t])},this)}q.prototype.append=function(e,t){e=at(e),t=Ma(t);var r=this.map[e];this.map[e]=r?r+", "+t:t};q.prototype.delete=function(e){delete this.map[at(e)]};q.prototype.get=function(e){return e=at(e),this.has(e)?this.map[e]:null};q.prototype.has=function(e){return this.map.hasOwnProperty(at(e))};q.prototype.set=function(e,t){this.map[at(e)]=Ma(t)};q.prototype.forEach=function(e,t){for(var r in this.map)this.map.hasOwnProperty(r)&&e.call(t,this.map[r],r,this)};q.prototype.keys=function(){var e=[];return this.forEach(function(t,r){e.push(r)}),Ia(e)};q.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),Ia(e)};q.prototype.entries=function(){var e=[];return this.forEach(function(t,r){e.push([r,t])}),Ia(e)};J.iterable&&(q.prototype[Symbol.iterator]=q.prototype.entries);function gn(e){if(!e._noBody){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}}function Rs(e){return new Promise(function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}})}function ib(e){var t=new FileReader,r=Rs(t);return t.readAsArrayBuffer(e),r}function ub(e){var t=new FileReader,r=Rs(t),n=/charset=([A-Za-z0-9_-]+)/.exec(e.type),a=n?n[1]:"utf-8";return t.readAsText(e,a),r}function sb(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?t:e}function Ne(e,t){if(!(this instanceof Ne))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');t=t||{};var r=t.body;if(e instanceof Ne){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new q(e.headers)),this.method=e.method,this.mode=e.mode,this.signal=e.signal,!r&&e._bodyInit!=null&&(r=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"same-origin",(t.headers||!this.headers)&&(this.headers=new q(t.headers)),this.method=fb(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal||function(){if("AbortController"in G){var o=new AbortController;return o.signal}}(),this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&r)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(r),(this.method==="GET"||this.method==="HEAD")&&(t.cache==="no-store"||t.cache==="no-cache")){var n=/([?&])_=[^&]*/;if(n.test(this.url))this.url=this.url.replace(n,"$1_="+new Date().getTime());else{var a=/\?/;this.url+=(a.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}Ne.prototype.clone=function(){return new Ne(this,{body:this._bodyInit})};function lb(e){var t=new FormData;return e.trim().split("&").forEach(function(r){if(r){var n=r.split("="),a=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(a),decodeURIComponent(o))}}),t}function db(e){var t=new q,r=e.replace(/\r?\n[\t ]+/g," ");return r.split("\r").map(function(n){return n.indexOf(` -`)===0?n.substr(1,n.length):n}).forEach(function(n){var a=n.split(":"),o=a.shift().trim();if(o){var i=a.join(":").trim();try{t.append(o,i)}catch(u){console.warn("Response "+u.message)}}}),t}Ts.call(Ne.prototype);function me(e,t){if(!(this instanceof me))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(t||(t={}),this.type="default",this.status=t.status===void 0?200:t.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=t.statusText===void 0?"":""+t.statusText,this.headers=new q(t.headers),this.url=t.url||"",this._initBody(e)}Ts.call(me.prototype);me.prototype.clone=function(){return new me(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new q(this.headers),url:this.url})};me.error=function(){var e=new me(null,{status:200,statusText:""});return e.ok=!1,e.status=0,e.type="error",e};var pb=[301,302,303,307,308];me.redirect=function(e,t){if(pb.indexOf(t)===-1)throw new RangeError("Invalid status code");return new me(null,{status:t,headers:{location:e}})};var Me=G.DOMException;try{new Me}catch{Me=function(t,r){this.message=t,this.name=r;var n=Error(t);this.stack=n.stack},Me.prototype=Object.create(Error.prototype),Me.prototype.constructor=Me}function Ms(e,t){return new Promise(function(r,n){var a=new Ne(e,t);if(a.signal&&a.signal.aborted)return n(new Me("Aborted","AbortError"));var o=new XMLHttpRequest;function i(){o.abort()}o.onload=function(){var s={statusText:o.statusText,headers:db(o.getAllResponseHeaders()||"")};a.url.indexOf("file://")===0&&(o.status<200||o.status>599)?s.status=200:s.status=o.status,s.url="responseURL"in o?o.responseURL:s.headers.get("X-Request-URL");var d="response"in o?o.response:o.responseText;setTimeout(function(){r(new me(d,s))},0)},o.onerror=function(){setTimeout(function(){n(new TypeError("Network request failed"))},0)},o.ontimeout=function(){setTimeout(function(){n(new TypeError("Network request timed out"))},0)},o.onabort=function(){setTimeout(function(){n(new Me("Aborted","AbortError"))},0)};function u(s){try{return s===""&&G.location.href?G.location.href:s}catch{return s}}if(o.open(a.method,u(a.url),!0),a.credentials==="include"?o.withCredentials=!0:a.credentials==="omit"&&(o.withCredentials=!1),"responseType"in o&&(J.blob?o.responseType="blob":J.arrayBuffer&&(o.responseType="arraybuffer")),t&&typeof t.headers=="object"&&!(t.headers instanceof q||G.Headers&&t.headers instanceof G.Headers)){var c=[];Object.getOwnPropertyNames(t.headers).forEach(function(s){c.push(at(s)),o.setRequestHeader(s,Ma(t.headers[s]))}),a.headers.forEach(function(s,d){c.indexOf(d)===-1&&o.setRequestHeader(d,s)})}else a.headers.forEach(function(s,d){o.setRequestHeader(d,s)});a.signal&&(a.signal.addEventListener("abort",i),o.onreadystatechange=function(){o.readyState===4&&a.signal.removeEventListener("abort",i)}),o.send(typeof a._bodyInit>"u"?null:a._bodyInit)})}Ms.polyfill=!0;G.fetch||(G.fetch=Ms,G.Headers=q,G.Request=Ne,G.Response=me);self.fetch.bind(self);function ci(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function ee(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Zt(e,t,r){return Ns()?Zt=Reflect.construct:Zt=function(a,o,i){var u=[null];u.push.apply(u,o);var c=Function.bind.apply(a,u),s=new c;return i&&wt(s,i.prototype),s},Zt.apply(null,arguments)}function hb(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function cr(e){var t=typeof Map=="function"?new Map:void 0;return cr=function(n){if(n===null||!hb(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(n))return t.get(n);t.set(n,a)}function a(){return Zt(n,arguments,bt(this).constructor)}return a.prototype=Object.create(n.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),wt(a,n)},cr(e)}function yb(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function mb(e,t){if(t&&(typeof t=="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return yb(e)}function Fs(e){var t=Ns();return function(){var n=bt(e),a;if(t){var o=bt(this).constructor;a=Reflect.construct(n,arguments,o)}else a=n.apply(this,arguments);return mb(this,a)}}function ve(e){return gb(e)||bb(e)||wb(e)||Sb()}function gb(e){if(Array.isArray(e))return ea(e)}function bb(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function wb(e,t){if(e){if(typeof e=="string")return ea(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ea(e,t)}}function ea(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&arguments[1]!==void 0?arguments[1]:{global:!1,core:!1,defaultInstance:!1},a=!1,o=!1,i=!1;if(typeof n=="number"?(process&&process.env,a=!0,o=!1):Oe(n)==="object"&&n&&(o=n.global||!1,a=n.core||!1,i=n.defaultInstance||!1),o){e.globalMiddlewares.splice(e.globalMiddlewares.length-e.defaultGlobalMiddlewaresLength,0,r);return}if(a){e.coreMiddlewares.splice(e.coreMiddlewares.length-e.defaultCoreMiddlewaresLength,0,r);return}if(i){this.defaultMiddlewares.push(r);return}this.middlewares.push(r)}},{key:"execute",value:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,n=Cb([].concat(ve(this.middlewares),ve(this.defaultMiddlewares),ve(e.globalMiddlewares),ve(e.coreMiddlewares)));return n(r)}}]),e}();se.globalMiddlewares=[];se.defaultGlobalMiddlewaresLength=0;se.coreMiddlewares=[];se.defaultCoreMiddlewaresLength=0;var xb=function(){function e(t){$t(this,e),this.cache=new Map,this.timer={},this.extendOptions(t)}return Na(e,[{key:"extendOptions",value:function(r){this.maxCache=r.maxCache||0}},{key:"get",value:function(r){return this.cache.get(JSON.stringify(r))}},{key:"set",value:function(r,n){var a=this,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:6e4;if(this.maxCache>0&&this.cache.size>=this.maxCache){var i=ve(this.cache.keys())[0];this.cache.delete(i),this.timer[i]&&clearTimeout(this.timer[i])}var u=JSON.stringify(r);this.cache.set(u,n),o>0&&(this.timer[u]=setTimeout(function(){a.cache.delete(u),delete a.timer[u]},o))}},{key:"delete",value:function(r){var n=JSON.stringify(r);return delete this.timer[n],this.cache.delete(n)}},{key:"clear",value:function(){return this.timer={},this.cache.clear()}}]),e}(),js=function(e){Is(r,e);var t=Fs(r);function r(n,a){var o,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"RequestError";return $t(this,r),o=t.call(this,n),o.name="RequestError",o.request=a,o.type=i,o}return r}(cr(Error)),ct=function(e){Is(r,e);var t=Fs(r);function r(n,a,o,i){var u,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:"ResponseError";return $t(this,r),u=t.call(this,a||n.statusText),u.name="ResponseError",u.data=o,u.response=n,u.request=i,u.type=c,u}return r}(cr(Error));function _b(e){return new Promise(function(t,r){var n=new FileReader;n.onload=function(){t(n.result)},n.onerror=r,n.readAsText(e,"GBK")})}function li(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;try{return JSON.parse(e)}catch{if(t)throw new ct(r,"JSON.parse fail",e,n,"ParseError")}return e}function Eb(e,t,r){return new Promise(function(n,a){setTimeout(function(){a(new js(t||"timeout of ".concat(e,"ms exceeded"),r,"Timeout"))},e)})}function di(e){return new Promise(function(t,r){e.cancelToken&&e.cancelToken.promise.then(function(n){r(n)})})}var Ob=Object.prototype.toString;function Ls(){var e;return typeof process<"u"&&Ob.call(process)==="[object process]"&&(e="NODE"),typeof XMLHttpRequest<"u"&&(e="BROWSER"),e}function ta(e){return Oe(e)==="object"&&Object.prototype.toString.call(e)==="[object Array]"}function Ds(e){return typeof URLSearchParams<"u"&&e instanceof URLSearchParams}function Pb(e){return Oe(e)==="object"&&Object.prototype.toString.call(e)==="[object Date]"}function pi(e){return e!==null&&Oe(e)==="object"}function vi(e,t){if(e)if(Oe(e)!=="object"&&(e=[e]),ta(e))for(var r=0;r1&&arguments[1]!==void 0?arguments[1]:{},n=r.prefix,a=r.suffix;return n&&(t="".concat(n).concat(t)),a&&(t="".concat(t).concat(a)),{url:t,options:r}};function Ab(e,t){var r=t.method,n=r===void 0?"get":r;return n.toLowerCase()==="get"}function Rb(e,t){if(!e)return t();var r=e.req;r=r===void 0?{}:r;var n=r.options,a=n===void 0?{}:n,o=r.url,i=o===void 0?"":o,u=e.cache,c=e.responseInterceptors,s=a.timeout,d=s===void 0?0:s,m=a.timeoutMessage,v=a.__umiRequestCoreType__,b=v===void 0?"normal":v,S=a.useCache,x=S===void 0?!1:S,C=a.method,g=C===void 0?"get":C,y=a.params,f=a.ttl,l=a.validateCache,h=l===void 0?Ab:l;if(b!=="normal")return process&&process.env,t();var p=fetch;if(!p)throw new Error("Global fetch not exist!");var _=Ls()==="BROWSER",O=h(i,a)&&x&&_;if(O){var P=u.get({url:i,params:y,method:g});if(P)return P=P.clone(),P.useCache=!0,e.res=P,t()}var I;return d>0?I=Promise.race([di(a),p(i,a),Eb(d,m,e.req)]):I=Promise.race([di(a),p(i,a)]),c.forEach(function(N){I=I.then(function(T){var R=typeof T.clone=="function"?T.clone():T;return N(R,a)})}),I.then(function(N){if(O&&N.status===200){var T=N.clone();T.useCache=!0,u.set({url:i,params:y,method:g},T,f)}return e.res=N,t()})}function Tb(e,t){var r;return t().then(function(){if(e){var n=e.res,a=n===void 0?{}:n,o=e.req,i=o===void 0?{}:o,u=i||{},c=u.options;c=c===void 0?{}:c;var s=c.responseType,d=s===void 0?"json":s,m=c.charset,v=m===void 0?"utf8":m;c.getResponse;var b=c.throwErrIfParseFail,S=b===void 0?!1:b,x=c.parseResponse,C=x===void 0?!0:x;if(C&&!(!a||!a.clone)){if(r=Ls()==="BROWSER"?a.clone():a,r.useCache=a.useCache||!1,v==="gbk")try{return a.blob().then(_b).then(function(g){return li(g,!1,r,i)})}catch(g){throw new ct(r,g.message,null,i,"ParseError")}else if(d==="json")return a.text().then(function(g){return li(g,S,r,i)});try{return a[d]()}catch{throw new ct(r,"responseType not support",null,i,"ParseError")}}}}).then(function(n){if(e){e.res;var a=e.req,o=a===void 0?{}:a,i=o||{},u=i.options;u=u===void 0?{}:u;var c=u.getResponse,s=c===void 0?!1:c;if(r){if(r.status>=200&&r.status<300){if(s){e.res={data:n,response:r};return}e.res=n;return}throw new ct(r,"http error",n,o,"HttpError")}}}).catch(function(n){if(n instanceof js||n instanceof ct)throw n;var a=e.req,o=e.res;throw n.request=n.request||a,n.response=n.response||o,n.type=n.type||n.name,n.data=n.data||void 0,n})}function Mb(e,t){if(!e)return t();var r=e.req;r=r===void 0?{}:r;var n=r.options,a=n===void 0?{}:n,o=a.method,i=o===void 0?"get":o;if(["post","put","patch","delete"].indexOf(i.toLowerCase())===-1)return t();var u=a.requestType,c=u===void 0?"json":u,s=a.data;if(s){var d=Object.prototype.toString.call(s);d==="[object Object]"||d==="[object Array]"?c==="json"?(a.headers=ee({Accept:"application/json","Content-Type":"application/json;charset=UTF-8"},a.headers),a.body=JSON.stringify(s)):c==="form"&&(a.headers=ee({Accept:"application/json","Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},a.headers),a.body=ra(s)):(a.headers=ee({Accept:"application/json"},a.headers),a.body=s)}return e.req.options=a,t()}function Ib(e,t){var r,n;if(e)if(t)r=t(e);else if(Ds(e))r=e.toString();else if(ta(e))n=[],vi(e,function(o){o===null||typeof o>"u"?n.push(o):n.push(pi(o)?JSON.stringify(o):o)}),r=ra(n);else{n={},vi(e,function(o,i){var u=o;o===null||typeof o>"u"?n[i]=o:Pb(o)?u=o.toISOString():ta(o)?u=o:pi(o)&&(u=JSON.stringify(o)),n[i]=u});var a=ra(n);r=a}return r}function Nb(e,t){if(!e)return t();var r=e.req;r=r===void 0?{}:r;var n=r.options,a=n===void 0?{}:n,o=a.paramsSerializer,i=a.params,u=e.req;u=u===void 0?{}:u;var c=u.url,s=c===void 0?"":c;a.method=a.method?a.method.toUpperCase():"GET",a.credentials=a.credentials||"same-origin";var d=Ib(i,o);if(e.req.originUrl=s,d){var m=s.indexOf("?")!==-1?"&":"?";e.req.url="".concat(s).concat(m).concat(d)}return e.req.options=a,t()}var Us=[Mb,Nb,Tb],Bs=[Rb];se.globalMiddlewares=Us;se.defaultGlobalMiddlewaresLength=Us.length;se.coreMiddlewares=Bs;se.defaultCoreMiddlewaresLength=Bs.length;var yt=function(){function e(t){$t(this,e),this.onion=new se([]),this.fetchIndex=0,this.mapCache=new xb(t),this.initOptions=t,this.instanceRequestInterceptors=[],this.instanceResponseInterceptors=[]}return Na(e,[{key:"use",value:function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{global:!1,core:!1};return this.onion.use(r,n),this}},{key:"extendOptions",value:function(r){this.initOptions=ks(this.initOptions,r),this.mapCache.extendOptions(r)}},{key:"dealRequestInterceptors",value:function(r){var n=function(i,u){return i.then(function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return r.req.url=c.url||r.req.url,r.req.options=c.options||r.req.options,u(r.req.url,r.req.options)})},a=[].concat(ve(e.requestInterceptors),ve(this.instanceRequestInterceptors));return a.reduce(n,Promise.resolve()).then(function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return r.req.url=o.url||r.req.url,r.req.options=o.options||r.req.options,Promise.resolve()})}},{key:"request",value:function(r,n){var a=this,o=this.onion,i={req:{url:r,options:ee(ee({},n),{},{url:r})},res:null,cache:this.mapCache,responseInterceptors:[].concat(ve(e.responseInterceptors),ve(this.instanceResponseInterceptors))};if(typeof r!="string")throw new Error("url MUST be a string");return new Promise(function(u,c){a.dealRequestInterceptors(i).then(function(){return o.execute(i)}).then(function(){u(i.res)}).catch(function(s){var d=i.req.options.errorHandler;if(d)try{var m=d(s);u(m)}catch(v){c(v)}else c(s)})})}}],[{key:"requestUse",value:function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{global:!0};if(typeof r!="function")throw new TypeError("Interceptor must be function!");n.global?e.requestInterceptors.push(r):this.instanceRequestInterceptors.push(r)}},{key:"responseUse",value:function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{global:!0};if(typeof r!="function")throw new TypeError("Interceptor must be function!");n.global?e.responseInterceptors.push(r):this.instanceResponseInterceptors.push(r)}}]),e}();yt.requestInterceptors=[$b];yt.responseInterceptors=[];function Ur(e){this.message=e}Ur.prototype.toString=function(){return this.message?"Cancel: ".concat(this.message):"Cancel"};Ur.prototype.__CANCEL__=!0;function fr(e){if(typeof e!="function")throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(a){t=a});var r=this;e(function(a){r.reason||(r.reason=new Ur(a),t(r.reason))})}fr.prototype.throwIfRequested=function(){if(this.reason)throw this.reason};fr.source=function(){var t,r=new fr(function(a){t=a});return{token:r,cancel:t}};function Fb(e){return!!(e&&e.__CANCEL__)}var Fa=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=new yt(t),n=function(i){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=ks(r.initOptions,u);return r.request(i,c)};n.use=r.use.bind(r),n.fetchIndex=r.fetchIndex,n.interceptors={request:{use:yt.requestUse.bind(r)},response:{use:yt.responseUse.bind(r)}};var a=["get","post","delete","put","patch","head","options","rpc"];return a.forEach(function(o){n[o]=function(i,u){return n(i,ee(ee({},u),{},{method:o}))}}),n.Cancel=Ur,n.CancelToken=fr,n.isCancel=Fb,n.extendOptions=r.extendOptions.bind(r),n.middlewares={instance:r.onion.middlewares,defaultInstance:r.onion.defaultMiddlewares,global:se.globalMiddlewares,core:se.coreMiddlewares},n},jb=function(t){return Fa(t)};Fa({parseResponse:!1});Fa({});var qs={exports:{}};(function(e,t){(function(r){e.exports=r()})(function(r){var n=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function a(g,y){var f=g[0],l=g[1],h=g[2],p=g[3];f+=(l&h|~l&p)+y[0]-680876936|0,f=(f<<7|f>>>25)+l|0,p+=(f&l|~f&h)+y[1]-389564586|0,p=(p<<12|p>>>20)+f|0,h+=(p&f|~p&l)+y[2]+606105819|0,h=(h<<17|h>>>15)+p|0,l+=(h&p|~h&f)+y[3]-1044525330|0,l=(l<<22|l>>>10)+h|0,f+=(l&h|~l&p)+y[4]-176418897|0,f=(f<<7|f>>>25)+l|0,p+=(f&l|~f&h)+y[5]+1200080426|0,p=(p<<12|p>>>20)+f|0,h+=(p&f|~p&l)+y[6]-1473231341|0,h=(h<<17|h>>>15)+p|0,l+=(h&p|~h&f)+y[7]-45705983|0,l=(l<<22|l>>>10)+h|0,f+=(l&h|~l&p)+y[8]+1770035416|0,f=(f<<7|f>>>25)+l|0,p+=(f&l|~f&h)+y[9]-1958414417|0,p=(p<<12|p>>>20)+f|0,h+=(p&f|~p&l)+y[10]-42063|0,h=(h<<17|h>>>15)+p|0,l+=(h&p|~h&f)+y[11]-1990404162|0,l=(l<<22|l>>>10)+h|0,f+=(l&h|~l&p)+y[12]+1804603682|0,f=(f<<7|f>>>25)+l|0,p+=(f&l|~f&h)+y[13]-40341101|0,p=(p<<12|p>>>20)+f|0,h+=(p&f|~p&l)+y[14]-1502002290|0,h=(h<<17|h>>>15)+p|0,l+=(h&p|~h&f)+y[15]+1236535329|0,l=(l<<22|l>>>10)+h|0,f+=(l&p|h&~p)+y[1]-165796510|0,f=(f<<5|f>>>27)+l|0,p+=(f&h|l&~h)+y[6]-1069501632|0,p=(p<<9|p>>>23)+f|0,h+=(p&l|f&~l)+y[11]+643717713|0,h=(h<<14|h>>>18)+p|0,l+=(h&f|p&~f)+y[0]-373897302|0,l=(l<<20|l>>>12)+h|0,f+=(l&p|h&~p)+y[5]-701558691|0,f=(f<<5|f>>>27)+l|0,p+=(f&h|l&~h)+y[10]+38016083|0,p=(p<<9|p>>>23)+f|0,h+=(p&l|f&~l)+y[15]-660478335|0,h=(h<<14|h>>>18)+p|0,l+=(h&f|p&~f)+y[4]-405537848|0,l=(l<<20|l>>>12)+h|0,f+=(l&p|h&~p)+y[9]+568446438|0,f=(f<<5|f>>>27)+l|0,p+=(f&h|l&~h)+y[14]-1019803690|0,p=(p<<9|p>>>23)+f|0,h+=(p&l|f&~l)+y[3]-187363961|0,h=(h<<14|h>>>18)+p|0,l+=(h&f|p&~f)+y[8]+1163531501|0,l=(l<<20|l>>>12)+h|0,f+=(l&p|h&~p)+y[13]-1444681467|0,f=(f<<5|f>>>27)+l|0,p+=(f&h|l&~h)+y[2]-51403784|0,p=(p<<9|p>>>23)+f|0,h+=(p&l|f&~l)+y[7]+1735328473|0,h=(h<<14|h>>>18)+p|0,l+=(h&f|p&~f)+y[12]-1926607734|0,l=(l<<20|l>>>12)+h|0,f+=(l^h^p)+y[5]-378558|0,f=(f<<4|f>>>28)+l|0,p+=(f^l^h)+y[8]-2022574463|0,p=(p<<11|p>>>21)+f|0,h+=(p^f^l)+y[11]+1839030562|0,h=(h<<16|h>>>16)+p|0,l+=(h^p^f)+y[14]-35309556|0,l=(l<<23|l>>>9)+h|0,f+=(l^h^p)+y[1]-1530992060|0,f=(f<<4|f>>>28)+l|0,p+=(f^l^h)+y[4]+1272893353|0,p=(p<<11|p>>>21)+f|0,h+=(p^f^l)+y[7]-155497632|0,h=(h<<16|h>>>16)+p|0,l+=(h^p^f)+y[10]-1094730640|0,l=(l<<23|l>>>9)+h|0,f+=(l^h^p)+y[13]+681279174|0,f=(f<<4|f>>>28)+l|0,p+=(f^l^h)+y[0]-358537222|0,p=(p<<11|p>>>21)+f|0,h+=(p^f^l)+y[3]-722521979|0,h=(h<<16|h>>>16)+p|0,l+=(h^p^f)+y[6]+76029189|0,l=(l<<23|l>>>9)+h|0,f+=(l^h^p)+y[9]-640364487|0,f=(f<<4|f>>>28)+l|0,p+=(f^l^h)+y[12]-421815835|0,p=(p<<11|p>>>21)+f|0,h+=(p^f^l)+y[15]+530742520|0,h=(h<<16|h>>>16)+p|0,l+=(h^p^f)+y[2]-995338651|0,l=(l<<23|l>>>9)+h|0,f+=(h^(l|~p))+y[0]-198630844|0,f=(f<<6|f>>>26)+l|0,p+=(l^(f|~h))+y[7]+1126891415|0,p=(p<<10|p>>>22)+f|0,h+=(f^(p|~l))+y[14]-1416354905|0,h=(h<<15|h>>>17)+p|0,l+=(p^(h|~f))+y[5]-57434055|0,l=(l<<21|l>>>11)+h|0,f+=(h^(l|~p))+y[12]+1700485571|0,f=(f<<6|f>>>26)+l|0,p+=(l^(f|~h))+y[3]-1894986606|0,p=(p<<10|p>>>22)+f|0,h+=(f^(p|~l))+y[10]-1051523|0,h=(h<<15|h>>>17)+p|0,l+=(p^(h|~f))+y[1]-2054922799|0,l=(l<<21|l>>>11)+h|0,f+=(h^(l|~p))+y[8]+1873313359|0,f=(f<<6|f>>>26)+l|0,p+=(l^(f|~h))+y[15]-30611744|0,p=(p<<10|p>>>22)+f|0,h+=(f^(p|~l))+y[6]-1560198380|0,h=(h<<15|h>>>17)+p|0,l+=(p^(h|~f))+y[13]+1309151649|0,l=(l<<21|l>>>11)+h|0,f+=(h^(l|~p))+y[4]-145523070|0,f=(f<<6|f>>>26)+l|0,p+=(l^(f|~h))+y[11]-1120210379|0,p=(p<<10|p>>>22)+f|0,h+=(f^(p|~l))+y[2]+718787259|0,h=(h<<15|h>>>17)+p|0,l+=(p^(h|~f))+y[9]-343485551|0,l=(l<<21|l>>>11)+h|0,g[0]=f+g[0]|0,g[1]=l+g[1]|0,g[2]=h+g[2]|0,g[3]=p+g[3]|0}function o(g){var y=[],f;for(f=0;f<64;f+=4)y[f>>2]=g.charCodeAt(f)+(g.charCodeAt(f+1)<<8)+(g.charCodeAt(f+2)<<16)+(g.charCodeAt(f+3)<<24);return y}function i(g){var y=[],f;for(f=0;f<64;f+=4)y[f>>2]=g[f]+(g[f+1]<<8)+(g[f+2]<<16)+(g[f+3]<<24);return y}function u(g){var y=g.length,f=[1732584193,-271733879,-1732584194,271733878],l,h,p,_,O,P;for(l=64;l<=y;l+=64)a(f,o(g.substring(l-64,l)));for(g=g.substring(l-64),h=g.length,p=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],l=0;l>2]|=g.charCodeAt(l)<<(l%4<<3);if(p[l>>2]|=128<<(l%4<<3),l>55)for(a(f,p),l=0;l<16;l+=1)p[l]=0;return _=y*8,_=_.toString(16).match(/(.*?)(.{0,8})$/),O=parseInt(_[2],16),P=parseInt(_[1],16)||0,p[14]=O,p[15]=P,a(f,p),f}function c(g){var y=g.length,f=[1732584193,-271733879,-1732584194,271733878],l,h,p,_,O,P;for(l=64;l<=y;l+=64)a(f,i(g.subarray(l-64,l)));for(g=l-64>2]|=g[l]<<(l%4<<3);if(p[l>>2]|=128<<(l%4<<3),l>55)for(a(f,p),l=0;l<16;l+=1)p[l]=0;return _=y*8,_=_.toString(16).match(/(.*?)(.{0,8})$/),O=parseInt(_[2],16),P=parseInt(_[1],16)||0,p[14]=O,p[15]=P,a(f,p),f}function s(g){var y="",f;for(f=0;f<4;f+=1)y+=n[g>>f*8+4&15]+n[g>>f*8&15];return y}function d(g){var y;for(y=0;yp?new ArrayBuffer(0):(_=p-h,O=new ArrayBuffer(_),P=new Uint8Array(O),I=new Uint8Array(this,h,_),P.set(I),O)}}();function m(g){return/[\u0080-\uFFFF]/.test(g)&&(g=unescape(encodeURIComponent(g))),g}function v(g,y){var f=g.length,l=new ArrayBuffer(f),h=new Uint8Array(l),p;for(p=0;p>2]|=y.charCodeAt(l)<<(l%4<<3);return this._finish(h,f),p=d(this._hash),g&&(p=x(p)),this.reset(),p},C.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},C.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},C.prototype.setState=function(g){return this._buff=g.buff,this._length=g.length,this._hash=g.hash,this},C.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},C.prototype._finish=function(g,y){var f=y,l,h,p;if(g[f>>2]|=128<<(f%4<<3),f>55)for(a(this._hash,g),f=0;f<16;f+=1)g[f]=0;l=this._length*8,l=l.toString(16).match(/(.*?)(.{0,8})$/),h=parseInt(l[2],16),p=parseInt(l[1],16)||0,g[14]=h,g[15]=p,a(this._hash,g)},C.hash=function(g,y){return C.hashBinary(m(g),y)},C.hashBinary=function(g,y){var f=u(g),l=d(f);return y?x(l):l},C.ArrayBuffer=function(){this.reset()},C.ArrayBuffer.prototype.append=function(g){var y=S(this._buff.buffer,g,!0),f=y.length,l;for(this._length+=g.byteLength,l=64;l<=f;l+=64)a(this._hash,i(y.subarray(l-64,l)));return this._buff=l-64>2]|=y[h]<<(h%4<<3);return this._finish(l,f),p=d(this._hash),g&&(p=x(p)),this.reset(),p},C.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},C.ArrayBuffer.prototype.getState=function(){var g=C.prototype.getState.call(this);return g.buff=b(g.buff),g},C.ArrayBuffer.prototype.setState=function(g){return g.buff=v(g.buff,!0),C.prototype.setState.call(this,g)},C.ArrayBuffer.prototype.destroy=C.prototype.destroy,C.ArrayBuffer.prototype._finish=C.prototype._finish,C.ArrayBuffer.hash=function(g,y){var f=c(new Uint8Array(g)),l=d(f);return y?x(l):l},C})})(qs);var Lb=qs.exports;const Hs=St(Lb),Db="8d5f0981493d3112328fdd21346f23a3",kb=({method:e,data:t,requestHeader:r})=>{(e==="GET"||!t)&&(t={});let n={};n.body=JSON.stringify(t),["stmp","type","sess","orn","lang","size","ver","code","seq"].sort().map(i=>n[i]=r[i]);const o=rb.stringify(n)+Db;return Hs.hash(decodeURIComponent(o))},Ub="1.0.0",Bb="torchTrain",{userAgent:yi,platform:qb}=navigator,Hb=()=>"654a591de5d3a4b0",zb=()=>({size:0,dst:"",type:1,ver:512,lang:"zh_CN",seq:0,code:0,stmp:new Date().getTime(),sign:"",ext:"CN",desc:"",sess:Hb(),orn:`${yi.split(" ")[1]}$${qb}$${yi.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)?"ios":"android"}$${Ub}$${Bb}`}),Gb=(e,t)=>{const r=zb();return r.sign=kb({method:e,data:t,requestHeader:r}),r},zs={development:"",test:"",production:""},ja=jb({prefix:zs.production,timeout:6e4});ja.interceptors.request.use((e,t)=>(t.headers=Object.assign(t.headers,Gb(t.method,t.data||{})),{url:e,options:t}));ja.interceptors.response.use(async e=>{const{status:t}=e;if(t!==200)return e;const r=await e.clone().json();if((r==null?void 0:r.code)===0)return r.data;throw new Error(r==null?void 0:r.message)});const tS=zs.production==null,Gs=ja;var La={exports:{}};const Wb=(e,t,r,n)=>{if(r==="length"||r==="prototype"||r==="arguments"||r==="caller")return;const a=Object.getOwnPropertyDescriptor(e,r),o=Object.getOwnPropertyDescriptor(t,r);!Vb(a,o)&&n||Object.defineProperty(e,r,o)},Vb=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},Kb=(e,t)=>{const r=Object.getPrototypeOf(t);r!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,r)},Yb=(e,t)=>`/* Wrapped ${e}*/ -${t}`,Jb=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),Qb=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),Zb=(e,t,r)=>{const n=r===""?"":`with ${r.trim()}() `,a=Yb.bind(null,n,t.toString());Object.defineProperty(a,"name",Qb),Object.defineProperty(e,"toString",{...Jb,value:a})},Xb=(e,t,{ignoreNonConfigurable:r=!1}={})=>{const{name:n}=e;for(const a of Reflect.ownKeys(t))Wb(e,t,a,r);return Kb(e,t),Zb(e,t,n),e};var e2=Xb,na={exports:{}},t2=()=>{const e={};return e.promise=new Promise((t,r)=>{e.resolve=t,e.reject=r}),e};(function(e,t){var r=he&&he.__awaiter||function(i,u,c,s){return new(c||(c=Promise))(function(d,m){function v(x){try{S(s.next(x))}catch(C){m(C)}}function b(x){try{S(s.throw(x))}catch(C){m(C)}}function S(x){x.done?d(x.value):new c(function(C){C(x.value)}).then(v,b)}S((s=s.apply(i,u||[])).next())})},n=he&&he.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(t2);function o(i,u="maxAge"){let c,s,d;const m=()=>r(this,void 0,void 0,function*(){if(c!==void 0)return;const S=x=>r(this,void 0,void 0,function*(){d=a.default();const C=x[1][u]-Date.now();if(C<=0){i.delete(x[0]),d.resolve();return}return c=x[0],s=setTimeout(()=>{i.delete(x[0]),d&&d.resolve()},C),typeof s.unref=="function"&&s.unref(),d.promise});try{for(const x of i)yield S(x)}catch{}c=void 0}),v=()=>{c=void 0,s!==void 0&&(clearTimeout(s),s=void 0),d!==void 0&&(d.reject(void 0),d=void 0)},b=i.set.bind(i);return i.set=(S,x)=>{i.has(S)&&i.delete(S);const C=b(S,x);return c&&c===S&&v(),m(),C},m(),i}t.default=o,e.exports=o,e.exports.default=o})(na,na.exports);var r2=na.exports,Da={exports:{}};const Ws=async e=>{try{return{isFulfilled:!0,isRejected:!1,value:await e}}catch(t){return{isFulfilled:!1,isRejected:!0,reason:t}}};Da.exports=Ws;Da.exports.default=Ws;var n2=Da.exports,ka={exports:{}},Ua={exports:{}};const Vs=(e,...t)=>new Promise(r=>{r(e(...t))});Ua.exports=Vs;Ua.exports.default=Vs;var a2=Ua.exports;const o2=a2,Ks=e=>{if(!((Number.isInteger(e)||e===1/0)&&e>0))return Promise.reject(new TypeError("Expected `concurrency` to be a number from 1 and up"));const t=[];let r=0;const n=()=>{r--,t.length>0&&t.shift()()},a=(u,c,...s)=>{r++;const d=o2(u,...s);c(d),d.then(n,n)},o=(u,c,...s)=>{rnew Promise(s=>o(u,s,...c));return Object.defineProperties(i,{activeCount:{get:()=>r},pendingCount:{get:()=>t.length},clearQueue:{value:()=>{t.length=0}}}),i};ka.exports=Ks;ka.exports.default=Ks;var i2=ka.exports;const bn=n2,u2=i2;var s2=async(e,t={})=>{const{concurrency:r=1/0}=t,n=u2(r);return Promise.all(e.map(a=>a&&typeof a.then=="function"?bn(a):bn(typeof a=="function"?n(()=>a()):Promise.resolve(a))))};const c2=e2,f2=r2,l2=s2,aa=new WeakMap,d2=(e,{cachePromiseRejection:t=!1,...r}={})=>{const{maxAge:n,cacheKey:a}=r,o=r.cache||new Map;if(Number.isSafeInteger(n))f2(o);else if(typeof n<"u")throw new TypeError("maxAge is not a safe integer.");const i=async function(...u){const c=a?a(u):u[0],s=o.get(c);if(s)return s.data;const d=e.apply(this,u);o.set(c,{data:d,maxAge:2**31-1});const[{reason:m}]=await l2([d]);return!t&&m?o.delete(c):n&&o.set(c,{data:d,maxAge:Date.now()+n}),d};return c2(i,e),aa.set(i,o),i};La.exports=d2;La.exports.clear=e=>{if(!aa.has(e))throw new Error("Can't clear a function that was not memoized!");const t=aa.get(e);if(typeof t.clear!="function")throw new TypeError("The cache Map can't be cleared!");t.clear()};var p2=La.exports;const v2=St(p2);async function h2(e){return Hs.ArrayBuffer.hash(await e.arrayBuffer())}async function y2(e){if(!e)return null;const t=await h2(e),r={"image/jpeg":"jpg","image/gif":"gif","image/png":"png","image/x-ms-bmp":"bmp","image/tiff":"tif","application/json":"json"}[e.type];return`${t}.${r}`}async function rS(e){const t=await Gs.get("/api/file/token",{params:{filename:await y2(e)}});console.log("[getUploadParams] response:",t);const r=n=>(n==null?void 0:n.replace(/^https?:\/\/[^/]+/,""))||n;return{key:t.key,token:t.token,url:r(t.url),uploadUrl:r(t.uploadUrl)}}async function nS(e,t){console.log("[uploadFile] file:",e==null?void 0:e.name,e==null?void 0:e.size,e==null?void 0:e.type),console.log("[uploadFile] params:",t);const r=new FormData;r.append("file",e);const a=`${t.uploadUrl.replace(/^https?:\/\/[^/]+/,"")}?key=${encodeURIComponent(t.key)}`;console.log("[uploadFile] making fetch to:",a);const o=await fetch(a,{method:"POST",body:r});if(console.log("[uploadFile] response status:",o.status,o.statusText),!o.ok)throw new Error(`Upload failed: ${o.statusText}`);const i=await o.json();return i.data||i}function aS(e,t=""){return e.lastModifiedDate=new Date,e.name=t,e}function oS(e,t=""){const r=e.split(","),n=r[0].match(/:(.*?);/);if(!n)return null;const a=n[1],o=atob(r[1]);let i=o.length;const u=new Uint8Array(i);for(;i--;)u[i]=o.charCodeAt(i);return new File([u],t,{type:a})}const iS=v2(()=>Gs.get("/api/file/config")),uS=e=>{if(!e)return e;try{const t=new URL(e,window.location.origin);if(t.pathname.startsWith("/uploads/"))return t.pathname}catch{}return e},sS=(e,{width:t,height:r})=>{const n=new URL(e);if(n.host==="r.findpiano.cn"&&t||r){const a={[`imageMogr2/format/webp/thumbnail/${t?t*window.devicePixelRatio:""}x${r?r*window.devicePixelRatio:""}`]:"",...Object.fromEntries(n.search.replace("?","").split("&").filter(o=>!o.startsWith("imageMogr2")).map(o=>o.split("=")))};return n.origin+n.pathname+`?${Object.entries(a).map(o=>o.filter(Boolean).join("=")).join("&")}`}return e};function m2(e){return e}var g2=m2,b2=pr,w2=da,S2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,C2=/^\w*$/;function x2(e,t){if(b2(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||w2(e)?!0:C2.test(e)||!S2.test(e)||t!=null&&e in Object(t)}var _2=x2,Ys=Ly,E2="Expected a function";function Ba(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(E2);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(Ba.Cache||Ys),r}Ba.Cache=Ys;var O2=Ba,P2=O2,$2=500;function A2(e){var t=P2(e,function(n){return r.size===$2&&r.clear(),n}),r=t.cache;return t}var R2=A2,T2=R2,M2=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,I2=/\\(\\)?/g,N2=T2(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(M2,function(r,n,a,o){t.push(a?o.replace(I2,"$1"):n||r)}),t}),F2=N2,j2=pr,L2=_2,D2=F2,k2=xt;function U2(e,t){return j2(e)?e:L2(e,t)?[e]:D2(k2(e))}var Js=U2,B2=da,q2=1/0;function H2(e){if(typeof e=="string"||B2(e))return e;var t=e+"";return t=="0"&&1/e==-q2?"-0":t}var Qs=H2,z2=Js,G2=Qs;function W2(e,t){t=z2(t,e);for(var r=0,n=t.length;e!=null&&r0){if(++t>=Ew)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var Aw=$w,Rw=_w,Tw=Aw,Mw=Tw(Rw),pS=Mw;export{mr as $,ge as A,ps as B,Ca as C,Aa as D,ys as E,Lr as F,bg as G,ms as H,Og as I,Eg as J,Bm as K,Zw as L,Qw as M,ph as N,tS as O,iS as P,Hp as Q,gp as R,rS as S,nS as T,aS as U,ts as V,z as W,xa as X,oS as Y,om as Z,er as _,Q as a,cw as a$,yr as a0,gr as a1,Xt as a2,zp as a3,Tn as a4,We as a5,Hs as a6,ev as a7,Ct as a8,Wc as a9,fa as aA,tm as aB,la as aC,Zc as aD,Ky as aE,Zy as aF,u0 as aG,_a as aH,y0 as aI,ov as aJ,qw as aK,Kw as aL,ia as aM,es as aN,Dp as aO,In as aP,hu as aQ,Ye as aR,Kr as aS,g2 as aT,rs as aU,cS as aV,fS as aW,_2 as aX,Qs as aY,of as aZ,lS as a_,uu as aa,lr as ab,Ar as ac,jn as ad,kw as ae,wh as af,zw as ag,wv as ah,wo as ai,sp as aj,Vw as ak,Ke as al,fv as am,Jp as an,Zd as ao,xp as ap,tv as aq,su as ar,Xh as as,D0 as at,Ly as au,sa as av,ca as aw,ns as ax,Yw as ay,pr as az,k as b,dS as b0,pS as b1,Ht as b2,Fw as b3,Nt as b4,jw as b5,Ei as b6,Ja as b7,mc as b8,gc as b9,gh as bA,bh as bB,Ln as bC,zt as bD,rv as bE,Vc as bF,sv as bG,Gw as bH,Mi as bI,Dw as bJ,Bw as bK,Tv as bL,$v as bM,Xu as bN,da as bO,Kp as bP,Js as bQ,ke as ba,we as bb,En as bc,wc as bd,re as be,_n as bf,Ya as bg,xn as bh,yc as bi,bc as bj,xc as bk,Xv as bl,Hw as bm,Je as bn,Lw as bo,Dd as bp,pc as bq,Vr as br,au as bs,Ph as bt,Ip as bu,np as bv,pp as bw,$p as bx,Hc as by,cv as bz,Ce as c,Wv as d,Ww as e,eS as f,E as g,rm as h,ar as i,Xw as j,Mn as k,dc as l,uh as m,uS as n,Uw as o,v2 as p,Jw as q,Gs as r,ag as s,sS as t,Nw as u,Cs as v,Dn as w,ng as x,Gm as y,nt as z}; diff --git a/dist/assets/button-95279f00.js b/dist/assets/button-eb671c5b.js similarity index 54% rename from dist/assets/button-95279f00.js rename to dist/assets/button-eb671c5b.js index a7f636df011944c93c2d7f9205736b3a6f109f85..b689115311180ce9ccc50084d955c00810860b25 100644 --- a/dist/assets/button-95279f00.js +++ b/dist/assets/button-eb671c5b.js @@ -1,4 +1,4 @@ -import{R as S,r as i,_ as O}from"./umi-d55575d8.js";import{bP as Le,C as w,c as R,b as u,w as V,a1 as Ae,a0 as We,a4 as De,bI as je,aq as Be,a7 as Fe,e as be,$ as Me,X as Ge,a2 as ve,a3 as Ue,bs as Ve,Q as pe,d as He,ak as Q,af as qe,ag as Qe,a as ge,o as Xe,W as Je,bH as Ke}from"./_setToString-2991057b.js";function H(a){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=[];return S.Children.forEach(a,function(e){e==null&&!t.keepEmpty||(Array.isArray(e)?n=n.concat(H(e)):Le(e)&&e.props?n=n.concat(H(e.props.children,t)):n.push(e))}),n}var ye=globalThis&&globalThis.__rest||function(a,t){var n={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&t.indexOf(e)<0&&(n[e]=a[e]);if(a!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,e=Object.getOwnPropertySymbols(a);r1&&arguments[1]!==void 0?arguments[1]:1,n=tt++,e=t;function r(){e-=1,e<=0?(a(),delete k[n]):k[n]=V(r)}return k[n]=V(r),n}z.cancel=function(t){t!==void 0&&(V.cancel(k[t]),delete k[t])};z.ids=k;function nt(a,t,n){return t=ve(t),Ue(a,Ve()?Reflect.construct(t,n||[],ve(a).constructor):t.apply(a,n))}var F;function Ce(a){return!a||a.offsetParent===null||a.hidden}function at(a){return a instanceof Document?a.body:Array.from(a.childNodes).find(function(t){return(t==null?void 0:t.nodeType)===Node.ELEMENT_NODE})}function rt(a){var t=(a||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/);return t&&t[1]&&t[2]&&t[3]?!(t[1]===t[2]&&t[2]===t[3]):!0}var xe=function(a){Ae(t,a);function t(){var n;return We(this,t),n=nt(this,t,arguments),n.containerRef=i.createRef(),n.animationStart=!1,n.destroyed=!1,n.onClick=function(e,r){var o,c,s=n.props,l=s.insertExtraNode,v=s.disabled;if(!(v||!e||Ce(e)||e.className.includes("-leave"))){n.extraNode=document.createElement("div");var p=De(n),g=p.extraNode,b=n.context.getPrefixCls;g.className="".concat(b(""),"-click-animating-node");var C=n.getAttributeName();if(e.setAttribute(C,"true"),r&&r!=="#fff"&&r!=="#ffffff"&&r!=="rgb(255, 255, 255)"&&r!=="rgba(255, 255, 255, 1)"&&rt(r)&&!/rgba\((?:\d*, ){3}0\)/.test(r)&&r!=="transparent"){g.style.borderColor=r;var x=((o=e.getRootNode)===null||o===void 0?void 0:o.call(e))||e.ownerDocument,f=(c=at(x))!==null&&c!==void 0?c:x;F=je(` +import{R as S,r as i,_ as O}from"./umi-2135699e.js";import{bK as $e,C as w,c as R,b as u,w as V,V as Ae,U as We,Y as De,bH as je,ak as Be,a1 as Fe,e as be,T as Me,P as Ge,W as ve,X as Ue,aY as Ve,L as pe,d as He,ae as K,a9 as Ye,aa as Ke,a as ge,o as Xe,O as qe,bG as Je}from"./_setToString-038b76d7.js";function H(a){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=[];return S.Children.forEach(a,function(e){e==null&&!t.keepEmpty||(Array.isArray(e)?n=n.concat(H(e)):$e(e)&&e.props?n=n.concat(H(e.props.children,t)):n.push(e))}),n}var ye=globalThis&&globalThis.__rest||function(a,t){var n={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&t.indexOf(e)<0&&(n[e]=a[e]);if(a!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,e=Object.getOwnPropertySymbols(a);r1&&arguments[1]!==void 0?arguments[1]:1,n=tt++,e=t;function r(){e-=1,e<=0?(a(),delete k[n]):k[n]=V(r)}return k[n]=V(r),n}z.cancel=function(t){t!==void 0&&(V.cancel(k[t]),delete k[t])};z.ids=k;function nt(a,t,n){return t=ve(t),Ue(a,Ve()?Reflect.construct(t,n||[],ve(a).constructor):t.apply(a,n))}var F;function Ce(a){return!a||a.offsetParent===null||a.hidden}function at(a){return a instanceof Document?a.body:Array.from(a.childNodes).find(function(t){return(t==null?void 0:t.nodeType)===Node.ELEMENT_NODE})}function rt(a){var t=(a||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/);return t&&t[1]&&t[2]&&t[3]?!(t[1]===t[2]&&t[2]===t[3]):!0}var xe=function(a){Ae(t,a);function t(){var n;return We(this,t),n=nt(this,t,arguments),n.containerRef=i.createRef(),n.animationStart=!1,n.destroyed=!1,n.onClick=function(e,r){var o,c,s=n.props,l=s.insertExtraNode,v=s.disabled;if(!(v||!e||Ce(e)||e.className.includes("-leave"))){n.extraNode=document.createElement("div");var p=De(n),g=p.extraNode,b=n.context.getPrefixCls;g.className="".concat(b(""),"-click-animating-node");var C=n.getAttributeName();if(e.setAttribute(C,"true"),r&&r!=="#fff"&&r!=="#ffffff"&&r!=="rgb(255, 255, 255)"&&r!=="rgba(255, 255, 255, 1)"&&rt(r)&&!/rgba\((?:\d*, ){3}0\)/.test(r)&&r!=="transparent"){g.style.borderColor=r;var x=((o=e.getRootNode)===null||o===void 0?void 0:o.call(e))||e.ownerDocument,f=(c=at(x))!==null&&c!==void 0?c:x;F=je(` [`.concat(b(""),"-click-animating-without-extra-node='true']::after, .").concat(b(""),`-click-animating-node { --antd-wave-shadow-color: `).concat(r,`; - }`),"antd-wave",{csp:n.csp,attachTo:f})}l&&e.appendChild(g),["transition","animation"].forEach(function(m){e.addEventListener("".concat(m,"start"),n.onTransitionStart),e.addEventListener("".concat(m,"end"),n.onTransitionEnd)})}},n.onTransitionStart=function(e){if(!n.destroyed){var r=n.containerRef.current;!e||e.target!==r||n.animationStart||n.resetEffect(r)}},n.onTransitionEnd=function(e){!e||e.animationName!=="fadeEffect"||n.resetEffect(e.target)},n.bindAnimationEvent=function(e){if(!(!e||!e.getAttribute||e.getAttribute("disabled")||e.className.includes("disabled"))){var r=function(c){if(!(c.target.tagName==="INPUT"||Ce(c.target))){n.resetEffect(e);var s=getComputedStyle(e).getPropertyValue("border-top-color")||getComputedStyle(e).getPropertyValue("border-color")||getComputedStyle(e).getPropertyValue("background-color");n.clickWaveTimeoutId=window.setTimeout(function(){return n.onClick(e,s)},0),z.cancel(n.animationStartId),n.animationStart=!0,n.animationStartId=z(function(){n.animationStart=!1},10)}};return e.addEventListener("click",r,!0),{cancel:function(){e.removeEventListener("click",r,!0)}}}},n.renderWave=function(e){var r=e.csp,o=n.props.children;if(n.csp=r,!i.isValidElement(o))return o;var c=n.containerRef;return Be(o)&&(c=Fe(o.ref,n.containerRef)),be(o,{ref:c})},n}return Me(t,[{key:"componentDidMount",value:function(){this.destroyed=!1;var e=this.containerRef.current;!e||e.nodeType!==1||(this.instance=this.bindAnimationEvent(e))}},{key:"componentWillUnmount",value:function(){this.instance&&this.instance.cancel(),this.clickWaveTimeoutId&&clearTimeout(this.clickWaveTimeoutId),this.destroyed=!0}},{key:"getAttributeName",value:function(){var e=this.context.getPrefixCls,r=this.props.insertExtraNode;return r?"".concat(e(""),"-click-animating"):"".concat(e(""),"-click-animating-without-extra-node")}},{key:"resetEffect",value:function(e){var r=this;if(!(!e||e===this.extraNode||!(e instanceof Element))){var o=this.props.insertExtraNode,c=this.getAttributeName();e.setAttribute(c,"false"),F&&(F.innerHTML=""),o&&this.extraNode&&e.contains(this.extraNode)&&e.removeChild(this.extraNode),["transition","animation"].forEach(function(s){e.removeEventListener("".concat(s,"start"),r.onTransitionStart),e.removeEventListener("".concat(s,"end"),r.onTransitionEnd)})}}},{key:"render",value:function(){return i.createElement(Ge,null,this.renderWave)}}]),t}(i.Component);xe.contextType=w;const it=xe;var ot=globalThis&&globalThis.__rest||function(a,t){var n={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&t.indexOf(e)<0&&(n[e]=a[e]);if(a!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,e=Object.getOwnPropertySymbols(a);r=4.5;case"AAlarge":return o>=3;case"AAAsmall":return o>=7;default:return!1}}function Ya(e,r,t){t===void 0&&(t={includeFallbackColors:!1,level:"AA",size:"small"});for(var n=null,a=0,o=t.includeFallbackColors,l=t.level,f=t.size,y=0,s=r;ya&&(a=h,n=new De(E))}return Ha(e,n,{level:l,size:f})||!o?n:(t.includeFallbackColors=!1,Ya(e,["#fff","#000"],t))}function Jl(e,r){var t=new De(e),n="#"+Kr(t.r,t.g,t.b,t.a),a=n,o=t.gradientType?"GradientType = 1, ":"";if(r){var l=new De(r);a="#"+Kr(l.r,l.g,l.b,l.a)}return"progid:DXImageTransform.Microsoft.gradient(".concat(o,"startColorstr=").concat(n,",endColorstr=").concat(a,")")}function Zl(e,r){var t={r:Dr(e.r),g:Dr(e.g),b:Dr(e.b)};return e.a!==void 0&&(t.a=Number(e.a)),new De(t,r)}function eu(){return new De({r:Math.random(),g:Math.random(),b:Math.random()})}function Va(e){if(e===void 0&&(e={}),e.count!==void 0&&e.count!==null){var r=e.count,t=[];for(e.count=void 0;r>t.length;)e.count=null,e.seed&&(e.seed+=1),t.push(Va(e));return e.count=r,t}var n=tu(e.hue,e.seed),a=ru(n,e),o=nu(n,a,e),l={h:n,s:a,v:o};return e.alpha!==void 0&&(l.a=e.alpha),new De(l)}function tu(e,r){var t=ou(e),n=Zt(t,r);return n<0&&(n=360+n),n}function ru(e,r){if(r.hue==="monochrome")return 0;if(r.luminosity==="random")return Zt([0,100],r.seed);var t=Ka(e).saturationRange,n=t[0],a=t[1];switch(r.luminosity){case"bright":n=55;break;case"dark":n=a-10;break;case"light":a=55;break}return Zt([n,a],r.seed)}function nu(e,r,t){var n=au(e,r),a=100;switch(t.luminosity){case"dark":a=n+20;break;case"light":n=(a+n)/2;break;case"random":n=0,a=100;break}return Zt([n,a],t.seed)}function au(e,r){for(var t=Ka(e).lowerBounds,n=0;n=a&&r<=l){var y=(f-o)/(l-a),s=o-y*a;return y*r+s}}return 0}function ou(e){var r=parseInt(e,10);if(!Number.isNaN(r)&&r<360&&r>0)return[r,r];if(typeof e=="string"){var t=mn.find(function(l){return l.name===e});if(t){var n=Qa(t);if(n.hueRange)return n.hueRange}var a=new De(e);if(a.isValid){var o=a.toHsv().h;return[o,o]}}return[0,360]}function Ka(e){e>=334&&e<=360&&(e-=360);for(var r=0,t=mn;r=a.hueRange[0]&&e<=a.hueRange[1])return a}throw Error("Color not found")}function Zt(e,r){if(r===void 0)return Math.floor(e[0]+Math.random()*(e[1]+1-e[0]));var t=e[1]||1,n=e[0]||0;r=(r*9301+49297)%233280;var a=r/233280;return Math.floor(n+a*(t-n))}function Qa(e){var r=e.lowerBounds[0][0],t=e.lowerBounds[e.lowerBounds.length-1][0],n=e.lowerBounds[e.lowerBounds.length-1][1],a=e.lowerBounds[0][1];return{name:e.name,hueRange:e.hueRange,lowerBounds:e.lowerBounds,saturationRange:[r,t],brightnessRange:[n,a]}}var mn=[{name:"monochrome",hueRange:null,lowerBounds:[[0,0],[100,0]]},{name:"red",hueRange:[-26,18],lowerBounds:[[20,100],[30,92],[40,89],[50,85],[60,78],[70,70],[80,60],[90,55],[100,50]]},{name:"orange",hueRange:[19,46],lowerBounds:[[20,100],[30,93],[40,88],[50,86],[60,85],[70,70],[100,70]]},{name:"yellow",hueRange:[47,62],lowerBounds:[[25,100],[40,94],[50,89],[60,86],[70,84],[80,82],[90,80],[100,75]]},{name:"green",hueRange:[63,178],lowerBounds:[[30,100],[40,90],[50,85],[60,81],[70,74],[80,64],[90,50],[100,40]]},{name:"blue",hueRange:[179,257],lowerBounds:[[20,100],[30,86],[40,80],[50,74],[60,60],[70,52],[80,44],[90,39],[100,35]]},{name:"purple",hueRange:[258,282],lowerBounds:[[20,100],[30,87],[40,79],[50,70],[60,65],[70,59],[80,52],[90,45],[100,42]]},{name:"pink",hueRange:[283,334],lowerBounds:[[20,100],[30,90],[40,86],[60,84],[80,80],[90,75],[100,73]]}];const iu=Object.freeze(Object.defineProperty({__proto__:null,TinyColor:De,bounds:mn,convertDecimalToHex:Rl,convertHexToDecimal:El,default:ta,fromRatio:Zl,hslToRgb:Sl,hsvToRgb:Il,inputToRGB:Tl,isReadable:Ha,isValidCSSUnit:Ml,legacyRandom:eu,mostReadable:Ya,names:Nl,numberInputToObject:$l,parseIntFromHex:kl,random:Va,readability:pn,rgbToHex:Al,rgbToHsl:Dl,rgbToHsv:jl,rgbToRgb:Ll,rgbaToArgbHex:Kr,rgbaToHex:ql,stringInputToObject:Wl,tinycolor:ta,toMsFilter:Jl},Symbol.toStringTag,{value:"Module"}));var lu={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"download",theme:"outlined"};const uu=lu;var cu=function(r,t){return ae.createElement(Fl,ra(ra({},r),{},{ref:t,icon:uu}))},fu=ae.forwardRef(cu);const Bs=fu,su=Object.freeze(Object.defineProperty({__proto__:null,CSSMotionList:zl,Provider:Ul,default:Bl},Symbol.toStringTag,{value:"Module"})),du=Object.freeze(Object.defineProperty({__proto__:null,default:Gl},Symbol.toStringTag,{value:"Module"})),vu=Object.freeze(Object.defineProperty({__proto__:null,Panel:Ql,default:Kl},Symbol.toStringTag,{value:"Module"}));var Xa={exports:{}};(function(e){function r(){return e.exports=r=Object.assign?Object.assign.bind():function(t){for(var n=1;n"u"&&t(3);var h=Promise;function v(i,c){c&&i.then(function(u){c(null,u)},function(u){c(u)})}function I(i,c,u){typeof c=="function"&&i.then(c),typeof u=="function"&&i.catch(u)}function b(i){return typeof i!="string"&&(console.warn(i+" used as a key, but it is not a string."),i=String(i)),i}function $(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var w="local-forage-detect-blob-support",k=void 0,W={},R=Object.prototype.toString,G="readonly",x="readwrite";function T(i){for(var c=i.length,u=new ArrayBuffer(c),m=new Uint8Array(u),g=0;g=43)}}).catch(function(){return!1})}function S(i){return typeof k=="boolean"?h.resolve(k):O(i).then(function(c){return k=c,k})}function P(i){var c=W[i.name],u={};u.promise=new h(function(m,g){u.resolve=m,u.reject=g}),c.deferredOperations.push(u),c.dbReady?c.dbReady=c.dbReady.then(function(){return u.promise}):c.dbReady=u.promise}function F(i){var c=W[i.name],u=c.deferredOperations.pop();if(u)return u.resolve(),u.promise}function Y(i,c){var u=W[i.name],m=u.deferredOperations.pop();if(m)return m.reject(c),m.promise}function j(i,c){return new h(function(u,m){if(W[i.name]=W[i.name]||A(),i.db)if(c)P(i),i.db.close();else return u(i.db);var g=[i.name];c&&g.push(i.version);var d=y.open.apply(y,g);c&&(d.onupgradeneeded=function(N){var D=d.result;try{D.createObjectStore(i.storeName),N.oldVersion<=1&&D.createObjectStore(w)}catch(B){if(B.name==="ConstraintError")console.warn('The database "'+i.name+'" has been upgraded from version '+N.oldVersion+" to version "+N.newVersion+', but the storage "'+i.storeName+'" already exists.');else throw B}}),d.onerror=function(N){N.preventDefault(),m(d.error)},d.onsuccess=function(){var N=d.result;N.onversionchange=function(D){D.target.close()},u(N),F(i)}})}function M(i){return j(i,!1)}function V(i){return j(i,!0)}function X(i,c){if(!i.db)return!0;var u=!i.db.objectStoreNames.contains(i.storeName),m=i.versioni.db.version;if(m&&(i.version!==c&&console.warn('The database "'+i.name+`" can't be downgraded from version `+i.db.version+" to version "+i.version+"."),i.version=i.db.version),g||u){if(u){var d=i.db.version+1;d>i.version&&(i.version=d)}return!0}return!1}function Q(i){return new h(function(c,u){var m=new FileReader;m.onerror=u,m.onloadend=function(g){var d=btoa(g.target.result||"");c({__local_forage_encoded_blob:!0,data:d,type:i.type})},m.readAsBinaryString(i)})}function K(i){var c=T(atob(i.data));return E([c],{type:i.type})}function L(i){return i&&i.__local_forage_encoded_blob}function p(i){var c=this,u=c._initReady().then(function(){var m=W[c._dbInfo.name];if(m&&m.dbReady)return m.dbReady});return I(u,i,i),u}function _(i){P(i);for(var c=W[i.name],u=c.forages,m=0;m0&&(!i.db||d.name==="InvalidStateError"||d.name==="NotFoundError"))return h.resolve().then(function(){if(!i.db||d.name==="NotFoundError"&&!i.db.objectStoreNames.contains(i.storeName)&&i.version<=i.db.version)return i.db&&(i.version=i.db.version+1),V(i)}).then(function(){return _(i).then(function(){C(i,c,u,m-1)})}).catch(u);u(d)}}function A(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function q(i){var c=this,u={db:null};if(i)for(var m in i)u[m]=i[m];var g=W[u.name];g||(g=A(),W[u.name]=g),g.forages.push(c),c._initReady||(c._initReady=c.ready,c.ready=p);var d=[];function N(){return h.resolve()}for(var D=0;D>4,H[g++]=(N&15)<<4|D>>2,H[g++]=(D&3)<<6|B&63;return U}function Qe(i){var c=new Uint8Array(i),u="",m;for(m=0;m>2],u+=le[(c[m]&3)<<4|c[m+1]>>4],u+=le[(c[m+1]&15)<<2|c[m+2]>>6],u+=le[c[m+2]&63];return c.length%3===2?u=u.substring(0,u.length-1)+"=":c.length%3===1&&(u=u.substring(0,u.length-2)+"=="),u}function Sr(i,c){var u="";if(i&&(u=vt.call(i)),i&&(u==="[object ArrayBuffer]"||i.buffer&&vt.call(i.buffer)==="[object ArrayBuffer]")){var m,g=Ee;i instanceof ArrayBuffer?(m=i,g+=Ue):(m=i.buffer,u==="[object Int8Array]"?g+=ut:u==="[object Uint8Array]"?g+=ke:u==="[object Uint8ClampedArray]"?g+=ct:u==="[object Int16Array]"?g+=Rt:u==="[object Uint16Array]"?g+=Ve:u==="[object Int32Array]"?g+=ft:u==="[object Uint32Array]"?g+=st:u==="[object Float32Array]"?g+=Ke:u==="[object Float64Array]"?g+=Et:c(new Error("Failed to get type for BinaryArray"))),c(g+Qe(m))}else if(u==="[object Blob]"){var d=new FileReader;d.onload=function(){var N=ce+i.type+"~"+Qe(this.result);c(Ee+lt+N)},d.readAsArrayBuffer(i)}else try{c(JSON.stringify(i))}catch(N){console.error("Couldn't convert value into a JSON string: ",i),c(null,N)}}function Ge(i){if(i.substring(0,$e)!==Ee)return JSON.parse(i);var c=i.substring(dt),u=i.substring($e,dt),m;if(u===lt&&Ce.test(c)){var g=c.match(Ce);m=g[1],c=c.substring(g[0].length)}var d=Le(c);switch(u){case Ue:return d;case lt:return E([d],{type:m});case ut:return new Int8Array(d);case ke:return new Uint8Array(d);case ct:return new Uint8ClampedArray(d);case Rt:return new Int16Array(d);case Ve:return new Uint16Array(d);case ft:return new Int32Array(d);case st:return new Uint32Array(d);case Ke:return new Float32Array(d);case Et:return new Float64Array(d);default:throw new Error("Unkown type: "+u)}}var Xe={serialize:Sr,deserialize:Ge,stringToBuffer:Le,bufferToString:Qe};function be(i,c,u,m){i.executeSql("CREATE TABLE IF NOT EXISTS "+c.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],u,m)}function St(i){var c=this,u={db:null};if(i)for(var m in i)u[m]=typeof i[m]!="string"?i[m].toString():i[m];var g=new h(function(d,N){try{u.db=openDatabase(u.name,String(u.version),u.description,u.size)}catch(D){return N(D)}u.db.transaction(function(D){be(D,u,function(){c._dbInfo=u,d()},function(B,U){N(U)})},N)});return u.serializer=Xe,g}function Te(i,c,u,m,g,d){i.executeSql(u,m,g,function(N,D){D.code===D.SYNTAX_ERR?N.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[c.storeName],function(B,U){U.rows.length?d(B,D):be(B,c,function(){B.executeSql(u,m,g,d)},d)},d):d(N,D)},d)}function Ir(i,c){var u=this;i=b(i);var m=new h(function(g,d){u.ready().then(function(){var N=u._dbInfo;N.db.transaction(function(D){Te(D,N,"SELECT * FROM "+N.storeName+" WHERE key = ? LIMIT 1",[i],function(B,U){var H=U.rows.length?U.rows.item(0).value:null;H&&(H=N.serializer.deserialize(H)),g(H)},function(B,U){d(U)})})}).catch(d)});return v(m,c),m}function Tr(i,c){var u=this,m=new h(function(g,d){u.ready().then(function(){var N=u._dbInfo;N.db.transaction(function(D){Te(D,N,"SELECT * FROM "+N.storeName,[],function(B,U){for(var H=U.rows,J=H.length,ie=0;ie0){N(It.apply(g,[i,B,u,m-1]));return}D(ie)}})})}).catch(D)});return v(d,u),d}function Tt(i,c,u){return It.apply(this,[i,c,u,1])}function Mt(i,c){var u=this;i=b(i);var m=new h(function(g,d){u.ready().then(function(){var N=u._dbInfo;N.db.transaction(function(D){Te(D,N,"DELETE FROM "+N.storeName+" WHERE key = ?",[i],function(){g()},function(B,U){d(U)})})}).catch(d)});return v(m,c),m}function Mr(i){var c=this,u=new h(function(m,g){c.ready().then(function(){var d=c._dbInfo;d.db.transaction(function(N){Te(N,d,"DELETE FROM "+d.storeName,[],function(){m()},function(D,B){g(B)})})}).catch(g)});return v(u,i),u}function pt(i){var c=this,u=new h(function(m,g){c.ready().then(function(){var d=c._dbInfo;d.db.transaction(function(N){Te(N,d,"SELECT COUNT(key) as c FROM "+d.storeName,[],function(D,B){var U=B.rows.item(0).c;m(U)},function(D,B){g(B)})})}).catch(g)});return v(u,i),u}function Nt(i,c){var u=this,m=new h(function(g,d){u.ready().then(function(){var N=u._dbInfo;N.db.transaction(function(D){Te(D,N,"SELECT key FROM "+N.storeName+" WHERE id = ? LIMIT 1",[i+1],function(B,U){var H=U.rows.length?U.rows.item(0).key:null;g(H)},function(B,U){d(U)})})}).catch(d)});return v(m,c),m}function $t(i){var c=this,u=new h(function(m,g){c.ready().then(function(){var d=c._dbInfo;d.db.transaction(function(N){Te(N,d,"SELECT key FROM "+d.storeName,[],function(D,B){for(var U=[],H=0;H '__WebKitDatabaseInfoTable__'",[],function(g,d){for(var N=[],D=0;D0}function ol(i){var c=this,u={};if(i)for(var m in i)u[m]=i[m];return u.keyPrefix=Ze(i,c._defaultConfig),al()?(c._dbInfo=u,u.serializer=Xe,h.resolve()):h.reject()}function il(i){var c=this,u=c.ready().then(function(){for(var m=c._dbInfo.keyPrefix,g=localStorage.length-1;g>=0;g--){var d=localStorage.key(g);d.indexOf(m)===0&&localStorage.removeItem(d)}});return v(u,i),u}function ll(i,c){var u=this;i=b(i);var m=u.ready().then(function(){var g=u._dbInfo,d=localStorage.getItem(g.keyPrefix+i);return d&&(d=g.serializer.deserialize(d)),d});return v(m,c),m}function ul(i,c){var u=this,m=u.ready().then(function(){for(var g=u._dbInfo,d=g.keyPrefix,N=d.length,D=localStorage.length,B=1,U=0;U=0;N--){var D=localStorage.key(N);D.indexOf(d)===0&&localStorage.removeItem(D)}}):g=h.reject("Invalid arguments"),v(g,c),g}var ml={_driver:"localStorageWrapper",_initStorage:ol,_support:Je(),iterate:ul,getItem:ll,setItem:vl,removeItem:dl,clear:il,length:sl,key:cl,keys:fl,dropInstance:pl},hl=function(c,u){return c===u||typeof c=="number"&&typeof u=="number"&&isNaN(c)&&isNaN(u)},gl=function(c,u){for(var m=c.length,g=0;g"u"?"undefined":o(u))==="object"){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var m in u){if(m==="storeName"&&(u[m]=u[m].replace(/\W/g,"_")),m==="version"&&typeof u[m]!="number")return new Error("Database version must be a number.");this._config[m]=u[m]}return"driver"in u&&u.driver?this.setDriver(this._config.driver):!0}else return typeof u=="string"?this._config[u]:this._config},i.prototype.defineDriver=function(u,m,g){var d=new h(function(N,D){try{var B=u._driver,U=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!u._driver){D(U);return}for(var H=Nr.concat("_initStorage"),J=0,ie=H.length;J{const{id:E,result:h,error:v}=s.data,I=n.get(E);if(I&&(n.delete(E),v?I.reject(new Error(v)):I.resolve(h)),o.length>0){const b=o.shift();y.postMessage(b)}else a.push(y)},y.onerror=s=>{console.error("[solveStaffGroup worker error]",s)},e.push(y),y}function f(...y){return new Promise((s,E)=>{const h=t++;n.set(h,{resolve:s,reject:E});const v={id:h,args:y};let I=a.pop();!I&&e.lengthy.terminate()),e=[],a.length=0,o.length=0,n.clear()}}}class yu{store;constructor(){this.store=hu.createInstance({name:"solution-store"})}getBatch(r){return Promise.all(r.map(t=>this.store.getItem(t)))}get(r){return this.store.getItem(r)}set(r,t){return this.store.setItem(r,t)}remove(r){return this.store.removeItem(r)}}class Gs{localStore=new yu;async getBatch(r){const t=await jt.post("/api/solutions/batchGet",{data:{nameList:r}});return Promise.all(t.map((n,a)=>n||this.localStore.get(r[a])))}async get(r){return await jt.post("/api/solutions/batchGet",{data:{nameList:[r]}}).then(n=>n[0])||this.localStore.get(r)}set(r,t){return jt.post("/api/solutions/set",{data:{name:r,value:t}})}remove(r){return jt.post("/api/solutions/delete",{data:{name:r}})}}const Hs=async(e,{forceUpdate:r=!1,readonly:t=!1,onlyFetchCache:n=!1,solutionStore:a=null,onProgress:o,policy:l="equations",quota:f})=>{var I;if(e.assemble(),(I=e.spartito)!=null&&I.regulated)return;const y=e.spartito||e.makeSpartito(),s=y.measures.filter(b=>!b.regulated),E=s.length;let h=0;if(o==null||o(0),!r){const b=await(a==null?void 0:a.getBatch(s.map($=>$.regulationHash)))??[];s.forEach(($,w)=>{const k=b[w];k&&$.applySolution(k),o==null||o(Math.ceil(h++/E*100))})}if(n)return;const v=y.measures.filter(b=>!b.regulated);if(v.length>0){const{solveStaffGroup:b,terminate:$}=gu();await Promise.all(v.map(async w=>{var W;const k=w.regulationHash;await w.regulate({policy:l,quota:f||Math.min((w.events.length+1)*16,200),solver:b}),t||a==null||a.set(k,{...w.asSolution(),priority:-((W=w.solutionStat)==null?void 0:W.loss)}),o==null||o(Math.ceil(h++/E*100))})),$()}o==null||o(100)};var ao={},oo={exports:{}};(function(e){var r=pe.default;function t(a){if(typeof WeakMap!="function")return null;var o=new WeakMap,l=new WeakMap;return(t=function(y){return y?l:o})(a)}function n(a,o){if(!o&&a&&a.__esModule)return a;if(a===null||r(a)!="object"&&typeof a!="function")return{default:a};var l=t(o);if(l&&l.has(a))return l.get(a);var f={__proto__:null},y=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in a)if(s!=="default"&&{}.hasOwnProperty.call(a,s)){var E=y?Object.getOwnPropertyDescriptor(a,s):null;E&&(E.get||E.set)?Object.defineProperty(f,s,E):f[s]=a[s]}return f.default=a,l&&l.set(a,f),f}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports})(oo);var me=oo.exports,io={exports:{}};(function(e){function r(t){return t&&t.__esModule?t:{default:t}}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports})(io);var ee=io.exports,lo={exports:{}},uo={exports:{}},co={exports:{}};(function(e){function r(t,n){(n==null||n>t.length)&&(n=t.length);for(var a=0,o=Array(n);a0&&arguments[0]!==void 0?arguments[0]:{},r=e.mark;return r?r.startsWith("data-")?r:"data-".concat(r):Mu}function ar(e){if(e.attachTo)return e.attachTo;var r=document.querySelector("head");return r||document.body}function Nu(e){return e==="queue"?"prependQueue":e?"prepend":"append"}function bn(e){return Array.from((er.get(e)||e).children).filter(function(r){return r.tagName==="STYLE"})}function xn(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!(0,Iu.default)())return null;var t=r.csp,n=r.prepend,a=r.priority,o=a===void 0?0:a,l=Nu(n),f=l==="prependQueue",y=document.createElement("style");y.setAttribute(la,l),f&&o&&y.setAttribute(ua,"".concat(o)),t!=null&&t.nonce&&(y.nonce=t==null?void 0:t.nonce),y.innerHTML=e;var s=ar(r),E=s.firstChild;if(n){if(f){var h=(r.styles||bn(s)).filter(function(v){if(!["prepend","prependQueue"].includes(v.getAttribute(la)))return!1;var I=Number(v.getAttribute(ua)||0);return o>=I});if(h.length)return s.insertBefore(y,h[h.length-1].nextSibling),y}s.insertBefore(y,E)}else s.appendChild(y);return y}function To(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=ar(r);return(r.styles||bn(t)).find(function(n){return n.getAttribute(Io(r))===e})}function $u(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=To(e,r);if(t){var n=ar(r);n.removeChild(t)}}function ku(e,r){var t=er.get(e);if(!t||!(0,Tu.default)(document,t)){var n=xn("",r),a=n.parentNode;er.set(e,a),e.removeChild(n)}}function Au(){er.clear()}function Du(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=ar(t),a=bn(n),o=(0,ia.default)((0,ia.default)({},t),{},{styles:a});ku(n,o);var l=To(r,o);if(l){var f,y;if((f=o.csp)!==null&&f!==void 0&&f.nonce&&l.nonce!==((y=o.csp)===null||y===void 0?void 0:y.nonce)){var s;l.nonce=(s=o.csp)===null||s===void 0?void 0:s.nonce}return l.innerHTML!==e&&(l.innerHTML=e),l}var E=xn(e,o);return E.setAttribute(Io(o),r),E}var ca;function Pn(){if(ca)return we;ca=1;var e=ee,r=pe;Object.defineProperty(we,"__esModule",{value:!0}),we.generate=$,we.getSecondaryColor=w,we.iconStyles=void 0,we.isIconDefinition=I,we.normalizeAttrs=b,we.normalizeTwoToneColors=k,we.useInsertStyles=we.svgBaseProps=void 0,we.warning=v;var t=e(Pe),n=e(pe),a=wo,o=h(ae),l=e(Se),f=Fe,y=e(rt),s=e(Yl);function E(R){if(typeof WeakMap!="function")return null;var G=new WeakMap,x=new WeakMap;return(E=function(O){return O?x:G})(R)}function h(R,G){if(!G&&R&&R.__esModule)return R;if(R===null||r(R)!="object"&&typeof R!="function")return{default:R};var x=E(G);if(x&&x.has(R))return x.get(R);var T={__proto__:null},O=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var S in R)if(S!=="default"&&{}.hasOwnProperty.call(R,S)){var P=O?Object.getOwnPropertyDescriptor(R,S):null;P&&(P.get||P.set)?Object.defineProperty(T,S,P):T[S]=R[S]}return T.default=R,x&&x.set(R,T),T}function v(R,G){(0,l.default)(R,"[@ant-design/icons] ".concat(G))}function I(R){return(0,n.default)(R)==="object"&&typeof R.name=="string"&&typeof R.theme=="string"&&((0,n.default)(R.icon)==="object"||typeof R.icon=="function")}function b(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.keys(R).reduce(function(G,x){var T=R[x];switch(x){case"class":G.className=T,delete G.class;break;default:delete G[x],G[(0,s.default)(x)]=T}return G},{})}function $(R,G,x){return x?o.default.createElement(R.tag,(0,t.default)((0,t.default)({key:G},b(R.attrs)),x),(R.children||[]).map(function(T,O){return $(T,"".concat(G,"-").concat(R.tag,"-").concat(O))})):o.default.createElement(R.tag,(0,t.default)({key:G},b(R.attrs)),(R.children||[]).map(function(T,O){return $(T,"".concat(G,"-").concat(R.tag,"-").concat(O))}))}function w(R){return(0,a.generate)(R)[0]}function k(R){return R?Array.isArray(R)?R:[R]:[]}we.svgBaseProps={width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true",focusable:"false"};var W=we.iconStyles=` +.anticon { + display: inline-flex; + alignItems: center; + color: inherit; + font-style: normal; + line-height: 0; + text-align: center; + text-transform: none; + vertical-align: -0.125em; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.anticon > * { + line-height: 1; +} + +.anticon svg { + display: inline-block; +} + +.anticon::before { + display: none; +} + +.anticon .anticon-icon { + display: block; +} + +.anticon[tabindex] { + cursor: pointer; +} + +.anticon-spin::before, +.anticon-spin { + display: inline-block; + -webkit-animation: loadingCircle 1s infinite linear; + animation: loadingCircle 1s infinite linear; +} + +@-webkit-keyframes loadingCircle { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes loadingCircle { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +`;return we.useInsertStyles=function(){var G=arguments.length>0&&arguments[0]!==void 0?arguments[0]:W,x=(0,o.useContext)(y.default),T=x.csp;(0,o.useEffect)(function(){(0,f.updateCSS)(G,"@ant-design-icons",{prepend:!0,csp:T})},[])},we}var fa;function Mo(){if(fa)return yt;fa=1;var e=ee;Object.defineProperty(yt,"__esModule",{value:!0}),yt.default=void 0;var r=e(Po()),t=e(Pe),n=Pn(),a=["icon","className","onClick","style","primaryColor","secondaryColor"],o={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1};function l(s){var E=s.primaryColor,h=s.secondaryColor;o.primaryColor=E,o.secondaryColor=h||(0,n.getSecondaryColor)(E),o.calculated=!!h}function f(){return(0,t.default)({},o)}var y=function(E){var h=E.icon,v=E.className,I=E.onClick,b=E.style,$=E.primaryColor,w=E.secondaryColor,k=(0,r.default)(E,a),W=o;if($&&(W={primaryColor:$,secondaryColor:w||(0,n.getSecondaryColor)($)}),(0,n.useInsertStyles)(),(0,n.warning)((0,n.isIconDefinition)(h),"icon should be icon definiton, but got ".concat(h)),!(0,n.isIconDefinition)(h))return null;var R=h;return R&&typeof R.icon=="function"&&(R=(0,t.default)((0,t.default)({},R),{},{icon:R.icon(W.primaryColor,W.secondaryColor)})),(0,n.generate)(R.icon,"svg-".concat(R.name),(0,t.default)({className:v,onClick:I,style:b,"data-icon":R.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},k))};return y.displayName="IconReact",y.getTwoToneColors=f,y.setTwoToneColors=l,yt.default=y,yt}var _t={},sa;function ju(){if(sa)return _t;sa=1;var e=ee;Object.defineProperty(_t,"__esModule",{value:!0}),_t.getTwoToneColor=o,_t.setTwoToneColor=a;var r=e(We),t=e(Mo()),n=Pn();function a(l){var f=(0,n.normalizeTwoToneColors)(l),y=(0,r.default)(f,2),s=y[0],E=y[1];return t.default.setTwoToneColors({primaryColor:s,secondaryColor:E})}function o(){var l=t.default.getTwoToneColors();return l.calculated?[l.primaryColor,l.secondaryColor]:l.primaryColor}return _t}var da;function je(){if(da)return gt;da=1;var e=ee,r=pe;Object.defineProperty(gt,"__esModule",{value:!0}),gt.default=void 0;var t=e(Pe),n=e(We),a=e(Me),o=e(Po()),l=b(ae),f=e(qe),y=e(rt),s=e(Mo()),E=ju(),h=Pn(),v=["className","icon","spin","rotate","tabIndex","onClick","twoToneColor"];function I(w){if(typeof WeakMap!="function")return null;var k=new WeakMap,W=new WeakMap;return(I=function(G){return G?W:k})(w)}function b(w,k){if(!k&&w&&w.__esModule)return w;if(w===null||r(w)!="object"&&typeof w!="function")return{default:w};var W=I(k);if(W&&W.has(w))return W.get(w);var R={__proto__:null},G=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var x in w)if(x!=="default"&&{}.hasOwnProperty.call(w,x)){var T=G?Object.getOwnPropertyDescriptor(w,x):null;T&&(T.get||T.set)?Object.defineProperty(R,x,T):R[x]=w[x]}return R.default=w,W&&W.set(w,R),R}(0,E.setTwoToneColor)("#1890ff");var $=l.forwardRef(function(w,k){var W=w.className,R=w.icon,G=w.spin,x=w.rotate,T=w.tabIndex,O=w.onClick,S=w.twoToneColor,P=(0,o.default)(w,v),F=l.useContext(y.default),Y=F.prefixCls,j=Y===void 0?"anticon":Y,M=F.rootClassName,V=(0,f.default)(M,j,(0,a.default)((0,a.default)({},"".concat(j,"-").concat(R.name),!!R.name),"".concat(j,"-spin"),!!G||R.name==="loading"),W),X=T;X===void 0&&O&&(X=-1);var Q=x?{msTransform:"rotate(".concat(x,"deg)"),transform:"rotate(".concat(x,"deg)")}:void 0,K=(0,h.normalizeTwoToneColors)(S),L=(0,n.default)(K,2),p=L[0],_=L[1];return l.createElement("span",(0,t.default)((0,t.default)({role:"img","aria-label":R.name},P),{},{ref:k,tabIndex:X,onClick:O,className:V}),l.createElement(s.default,{icon:R,primaryColor:p,secondaryColor:_,style:Q}))});return $.displayName="AntdIcon",$.getTwoToneColor=E.getTwoToneColor,$.setTwoToneColor=E.setTwoToneColor,gt.default=$,gt}var wn=ee,Lu=pe;Object.defineProperty(nr,"__esModule",{value:!0});nr.default=void 0;var va=wn(Pe),No=Fu(ae),qu=wn(bu()),Wu=wn(je());function $o(e){if(typeof WeakMap!="function")return null;var r=new WeakMap,t=new WeakMap;return($o=function(a){return a?t:r})(e)}function Fu(e,r){if(!r&&e&&e.__esModule)return e;if(e===null||Lu(e)!="object"&&typeof e!="function")return{default:e};var t=$o(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(o!=="default"&&{}.hasOwnProperty.call(e,o)){var l=a?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(n,o,l):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}var Bu=function(r,t){return No.createElement(Wu.default,(0,va.default)((0,va.default)({},r),{},{ref:t,icon:qu.default}))},zu=No.forwardRef(Bu);nr.default=zu;(function(e,r){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var t=n(nr);function n(o){return o&&o.__esModule?o:{default:o}}var a=t;r.default=a,e.exports=a})(Qr,Qr.exports);var ko=Qr.exports,Jr={exports:{}},or={},Ft={},pa;function Uu(){if(pa)return Ft;pa=1,Object.defineProperty(Ft,"__esModule",{value:!0});var e={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm0 76c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm128.01 198.83c.03 0 .05.01.09.06l45.02 45.01a.2.2 0 01.05.09.12.12 0 010 .07c0 .02-.01.04-.05.08L557.25 512l127.87 127.86a.27.27 0 01.05.06v.02a.12.12 0 010 .07c0 .03-.01.05-.05.09l-45.02 45.02a.2.2 0 01-.09.05.12.12 0 01-.07 0c-.02 0-.04-.01-.08-.05L512 557.25 384.14 685.12c-.04.04-.06.05-.08.05a.12.12 0 01-.07 0c-.03 0-.05-.01-.09-.05l-45.02-45.02a.2.2 0 01-.05-.09.12.12 0 010-.07c0-.02.01-.04.06-.08L466.75 512 338.88 384.14a.27.27 0 01-.05-.06l-.01-.02a.12.12 0 010-.07c0-.03.01-.05.05-.09l45.02-45.02a.2.2 0 01.09-.05.12.12 0 01.07 0c.02 0 .04.01.08.06L512 466.75l127.86-127.86c.04-.05.06-.06.08-.06a.12.12 0 01.07 0z"}}]},name:"close-circle",theme:"outlined"};return Ft.default=e,Ft}var On=ee,Gu=pe;Object.defineProperty(or,"__esModule",{value:!0});or.default=void 0;var ma=On(Pe),Ao=Vu(ae),Hu=On(Uu()),Yu=On(je());function Do(e){if(typeof WeakMap!="function")return null;var r=new WeakMap,t=new WeakMap;return(Do=function(a){return a?t:r})(e)}function Vu(e,r){if(!r&&e&&e.__esModule)return e;if(e===null||Gu(e)!="object"&&typeof e!="function")return{default:e};var t=Do(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(o!=="default"&&{}.hasOwnProperty.call(e,o)){var l=a?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(n,o,l):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}var Ku=function(r,t){return Ao.createElement(Yu.default,(0,ma.default)((0,ma.default)({},r),{},{ref:t,icon:Hu.default}))},Qu=Ao.forwardRef(Ku);or.default=Qu;(function(e,r){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var t=n(or);function n(o){return o&&o.__esModule?o:{default:o}}var a=t;r.default=a,e.exports=a})(Jr,Jr.exports);var jo=Jr.exports,Zr={exports:{}},ir={},Bt={},ha;function Xu(){if(ha)return Bt;ha=1,Object.defineProperty(Bt,"__esModule",{value:!0});var e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z"}}]},name:"exclamation-circle",theme:"outlined"};return Bt.default=e,Bt}var Rn=ee,Ju=pe;Object.defineProperty(ir,"__esModule",{value:!0});ir.default=void 0;var ga=Rn(Pe),Lo=tc(ae),Zu=Rn(Xu()),ec=Rn(je());function qo(e){if(typeof WeakMap!="function")return null;var r=new WeakMap,t=new WeakMap;return(qo=function(a){return a?t:r})(e)}function tc(e,r){if(!r&&e&&e.__esModule)return e;if(e===null||Ju(e)!="object"&&typeof e!="function")return{default:e};var t=qo(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(o!=="default"&&{}.hasOwnProperty.call(e,o)){var l=a?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(n,o,l):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}var rc=function(r,t){return Lo.createElement(ec.default,(0,ga.default)((0,ga.default)({},r),{},{ref:t,icon:Zu.default}))},nc=Lo.forwardRef(rc);ir.default=nc;(function(e,r){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var t=n(ir);function n(o){return o&&o.__esModule?o:{default:o}}var a=t;r.default=a,e.exports=a})(Zr,Zr.exports);var Wo=Zr.exports,en={exports:{}},lr={},zt={},ya;function ac(){if(ya)return zt;ya=1,Object.defineProperty(zt,"__esModule",{value:!0});var e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"}}]},name:"info-circle",theme:"outlined"};return zt.default=e,zt}var En=ee,oc=pe;Object.defineProperty(lr,"__esModule",{value:!0});lr.default=void 0;var _a=En(Pe),Fo=uc(ae),ic=En(ac()),lc=En(je());function Bo(e){if(typeof WeakMap!="function")return null;var r=new WeakMap,t=new WeakMap;return(Bo=function(a){return a?t:r})(e)}function uc(e,r){if(!r&&e&&e.__esModule)return e;if(e===null||oc(e)!="object"&&typeof e!="function")return{default:e};var t=Bo(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(o!=="default"&&{}.hasOwnProperty.call(e,o)){var l=a?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(n,o,l):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}var cc=function(r,t){return Fo.createElement(lc.default,(0,_a.default)((0,_a.default)({},r),{},{ref:t,icon:ic.default}))},fc=Fo.forwardRef(cc);lr.default=fc;(function(e,r){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var t=n(lr);function n(o){return o&&o.__esModule?o:{default:o}}var a=t;r.default=a,e.exports=a})(en,en.exports);var zo=en.exports,at={},Uo={exports:{}};(function(e){var r=pe.default;function t(){e.exports=t=function(){return a},e.exports.__esModule=!0,e.exports.default=e.exports;var n,a={},o=Object.prototype,l=o.hasOwnProperty,f=Object.defineProperty||function(p,_,C){p[_]=C.value},y=typeof Symbol=="function"?Symbol:{},s=y.iterator||"@@iterator",E=y.asyncIterator||"@@asyncIterator",h=y.toStringTag||"@@toStringTag";function v(p,_,C){return Object.defineProperty(p,_,{value:C,enumerable:!0,configurable:!0,writable:!0}),p[_]}try{v({},"")}catch{v=function(C,A,q){return C[A]=q}}function I(p,_,C,A){var q=_&&_.prototype instanceof G?_:G,z=Object.create(q.prototype),Z=new K(A||[]);return f(z,"_invoke",{value:M(p,C,Z)}),z}function b(p,_,C){try{return{type:"normal",arg:p.call(_,C)}}catch(A){return{type:"throw",arg:A}}}a.wrap=I;var $="suspendedStart",w="suspendedYield",k="executing",W="completed",R={};function G(){}function x(){}function T(){}var O={};v(O,s,function(){return this});var S=Object.getPrototypeOf,P=S&&S(S(L([])));P&&P!==o&&l.call(P,s)&&(O=P);var F=T.prototype=G.prototype=Object.create(O);function Y(p){["next","throw","return"].forEach(function(_){v(p,_,function(C){return this._invoke(_,C)})})}function j(p,_){function C(q,z,Z,te){var re=b(p[q],p,z);if(re.type!=="throw"){var ne=re.arg,oe=ne.value;return oe&&r(oe)=="object"&&l.call(oe,"__await")?_.resolve(oe.__await).then(function(ue){C("next",ue,Z,te)},function(ue){C("throw",ue,Z,te)}):_.resolve(oe).then(function(ue){ne.value=ue,Z(ne)},function(ue){return C("throw",ue,Z,te)})}te(re.arg)}var A;f(this,"_invoke",{value:function(z,Z){function te(){return new _(function(re,ne){C(z,Z,re,ne)})}return A=A?A.then(te,te):te()}})}function M(p,_,C){var A=$;return function(q,z){if(A===k)throw Error("Generator is already running");if(A===W){if(q==="throw")throw z;return{value:n,done:!0}}for(C.method=q,C.arg=z;;){var Z=C.delegate;if(Z){var te=V(Z,C);if(te){if(te===R)continue;return te}}if(C.method==="next")C.sent=C._sent=C.arg;else if(C.method==="throw"){if(A===$)throw A=W,C.arg;C.dispatchException(C.arg)}else C.method==="return"&&C.abrupt("return",C.arg);A=k;var re=b(p,_,C);if(re.type==="normal"){if(A=C.done?W:w,re.arg===R)continue;return{value:re.arg,done:C.done}}re.type==="throw"&&(A=W,C.method="throw",C.arg=re.arg)}}}function V(p,_){var C=_.method,A=p.iterator[C];if(A===n)return _.delegate=null,C==="throw"&&p.iterator.return&&(_.method="return",_.arg=n,V(p,_),_.method==="throw")||C!=="return"&&(_.method="throw",_.arg=new TypeError("The iterator does not provide a '"+C+"' method")),R;var q=b(A,p.iterator,_.arg);if(q.type==="throw")return _.method="throw",_.arg=q.arg,_.delegate=null,R;var z=q.arg;return z?z.done?(_[p.resultName]=z.value,_.next=p.nextLoc,_.method!=="return"&&(_.method="next",_.arg=n),_.delegate=null,R):z:(_.method="throw",_.arg=new TypeError("iterator result is not an object"),_.delegate=null,R)}function X(p){var _={tryLoc:p[0]};1 in p&&(_.catchLoc=p[1]),2 in p&&(_.finallyLoc=p[2],_.afterLoc=p[3]),this.tryEntries.push(_)}function Q(p){var _=p.completion||{};_.type="normal",delete _.arg,p.completion=_}function K(p){this.tryEntries=[{tryLoc:"root"}],p.forEach(X,this),this.reset(!0)}function L(p){if(p||p===""){var _=p[s];if(_)return _.call(p);if(typeof p.next=="function")return p;if(!isNaN(p.length)){var C=-1,A=function q(){for(;++C=0;--q){var z=this.tryEntries[q],Z=z.completion;if(z.tryLoc==="root")return A("end");if(z.tryLoc<=this.prev){var te=l.call(z,"catchLoc"),re=l.call(z,"finallyLoc");if(te&&re){if(this.prev=0;--A){var q=this.tryEntries[A];if(q.tryLoc<=this.prev&&l.call(q,"finallyLoc")&&this.prev=0;--C){var A=this.tryEntries[C];if(A.finallyLoc===_)return this.complete(A.completion,A.afterLoc),Q(A),R}},catch:function(_){for(var C=this.tryEntries.length-1;C>=0;--C){var A=this.tryEntries[C];if(A.tryLoc===_){var q=A.completion;if(q.type==="throw"){var z=q.arg;Q(A)}return z}}throw Error("illegal catch attempt")},delegateYield:function(_,C,A){return this.delegate={iterator:L(_),resultName:C,nextLoc:A},this.method==="next"&&(this.arg=n),R}},a}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(Uo);var Go=Uo.exports,Ho={exports:{}};(function(e){function r(n,a,o,l,f,y,s){try{var E=n[y](s),h=E.value}catch(v){return void o(v)}E.done?a(h):Promise.resolve(h).then(l,f)}function t(n){return function(){var a=this,o=arguments;return new Promise(function(l,f){var y=n.apply(a,o);function s(h){r(y,l,f,s,E,"next",h)}function E(h){r(y,l,f,s,E,"throw",h)}s(void 0)})}}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(Ho);var sc=Ho.exports,dc=me.default,ur=ee.default;Object.defineProperty(at,"__esModule",{value:!0});at._r=bc;at._u=Oc;at.render=xc;at.unmount=Rc;var tr=ur(Go),Yo=ur(sc),vc=ur(pe),pc=ur(Pe),mc=dc(Ga),wt=(0,pc.default)({},mc),hc=wt.version,qr=wt.render,gc=wt.unmountComponentAtNode,cr;try{var yc=Number((hc||"").split(".")[0]);yc>=18&&(cr=wt.createRoot)}catch{}function Ca(e){var r=wt.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;r&&(0,vc.default)(r)==="object"&&(r.usingClientEntryPoint=e)}var rr="__rc_react_root__";function _c(e,r){Ca(!0);var t=r[rr]||cr(r);Ca(!1),t.render(e),r[rr]=t}function Cc(e,r){qr==null||qr(e,r)}function bc(e,r){}function xc(e,r){if(cr){_c(e,r);return}Cc(e,r)}function Pc(e){return tn.apply(this,arguments)}function tn(){return tn=(0,Yo.default)((0,tr.default)().mark(function e(r){return(0,tr.default)().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",Promise.resolve().then(function(){var a;(a=r[rr])===null||a===void 0||a.unmount(),delete r[rr]}));case 1:case"end":return n.stop()}},e)})),tn.apply(this,arguments)}function wc(e){gc(e)}function Oc(e){}function Rc(e){return rn.apply(this,arguments)}function rn(){return rn=(0,Yo.default)((0,tr.default)().mark(function e(r){return(0,tr.default)().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:if(cr===void 0){n.next=2;break}return n.abrupt("return",Pc(r));case 2:wc(r);case 3:case"end":return n.stop()}},e)})),rn.apply(this,arguments)}var Wr={},fr={},Ec=me.default;Object.defineProperty(fr,"__esModule",{value:!0});fr.default=Ic;var Sc=Ec(ae);function Ic(e,r,t){var n=Sc.useRef({});return(!("value"in n.current)||t(n.current.condition,r))&&(n.current.value=e(),n.current.condition=r),n.current.value}var sr={},Vo={exports:{}};(function(e){var r=_o,t=vo,n=hn,a=xo;function o(l){return r(l)||t(l)||n(l)||a()}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports})(Vo);var Tc=Vo.exports,Sn={};Object.defineProperty(Sn,"__esModule",{value:!0});Sn.default=Mc;function Mc(e,r){for(var t=e,n=0;n3&&arguments[3]!==void 0?arguments[3]:!1;return r.length&&n&&t===void 0&&!(0,nn.default)(e,r.slice(0,-1))?e:Xo(e,r,t,n)}function kc(e){return(0,Ko.default)(e)==="object"&&e!==null&&Object.getPrototypeOf(e)===Object.prototype}function ba(e){return Array.isArray(e)?[]:{}}var Ac=typeof Reflect>"u"?Object.keys:Reflect.ownKeys;function Dc(){for(var e=arguments.length,r=new Array(e),t=0;t1&&arguments[1]!==void 0?arguments[1]:R,_=arguments.length>2&&arguments[2]!==void 0?arguments[2]:G,C;switch(L){case"top":C={left:"50%",transform:"translateX(-50%)",right:"auto",top:p,bottom:"auto"};break;case"topLeft":C={left:0,top:p,bottom:"auto"};break;case"topRight":C={right:0,top:p,bottom:"auto"};break;case"bottom":C={left:"50%",transform:"translateX(-50%)",right:"auto",top:"auto",bottom:_};break;case"bottomLeft":C={left:0,top:"auto",bottom:_};break;default:C={right:0,top:"auto",bottom:_};break}return C}function M(L,p){var _=L.placement,C=_===void 0?T:_,A=L.top,q=L.bottom,z=L.getContainer,Z=z===void 0?O:z,te=L.prefixCls,re=(0,b.globalConfig)(),ne=re.getPrefixCls,oe=re.getIconPrefixCls,ue=ne("notification",te||x),_e=oe(),ve="".concat(ue,"-").concat(C),xe=k[ve];if(xe){Promise.resolve(xe).then(function(le){p({prefixCls:"".concat(ue,"-notice"),iconPrefixCls:_e,instance:le})});return}var de=(0,h.default)("".concat(ue,"-").concat(C),(0,o.default)({},"".concat(ue,"-rtl"),P===!0));k[ve]=new Promise(function(le){v.default.newInstance({prefixCls:ue,className:de,style:j(C,A,q),getContainer:Z,maxCount:F},function(ce){le(ce),p({prefixCls:"".concat(ue,"-notice"),iconPrefixCls:_e,instance:ce})})})}var V={success:l.default,info:E.default,error:f.default,warning:s.default};function X(L,p,_){var C=L.duration,A=L.icon,q=L.type,z=L.description,Z=L.message,te=L.btn,re=L.onClose,ne=L.onClick,oe=L.key,ue=L.style,_e=L.className,ve=L.closeIcon,xe=ve===void 0?S:ve,de=L.props,le=C===void 0?W:C,ce=null;A?ce=I.createElement("span",{className:"".concat(p,"-icon")},L.icon):q&&(ce=I.createElement(V[q]||null,{className:"".concat(p,"-icon ").concat(p,"-icon-").concat(q)}));var Ce=typeof xe>"u"?I.createElement("span",{className:"".concat(p,"-close-x")},I.createElement(y.default,{className:"".concat(p,"-close-icon")})):xe,Ee=!z&&ce?I.createElement("span",{className:"".concat(p,"-message-single-line-auto-margin")}):null;return{content:I.createElement(b.default,{iconPrefixCls:_},I.createElement("div",{className:ce?"".concat(p,"-with-icon"):"",role:"alert"},ce,I.createElement("div",{className:"".concat(p,"-message")},Ee,Z),I.createElement("div",{className:"".concat(p,"-description")},z),te?I.createElement("span",{className:"".concat(p,"-btn")},te):null)),duration:le,closable:!0,closeIcon:Ce,onClose:re,onClick:ne,key:oe,style:ue||{},className:(0,h.default)(_e,(0,o.default)({},"".concat(p,"-").concat(q),!!q)),props:de}}function Q(L){M(L,function(p){var _=p.prefixCls,C=p.iconPrefixCls,A=p.instance;A.notice(X(L,_,C))})}var K={open:Q,close:function(p){Object.keys(k).forEach(function(_){return Promise.resolve(k[_]).then(function(C){C.removeNotice(p)})})},config:Y,destroy:function(){Object.keys(k).forEach(function(p){Promise.resolve(k[p]).then(function(_){_.destroy()}),delete k[p]})}};["success","info","warning","error"].forEach(function(L){K[L]=function(p){return K.open((0,a.default)((0,a.default)({},p),{type:L}))}}),K.warn=K.warning,K.useNotification=(0,$.default)(M,X),e.getInstance=function(p){return w(void 0,void 0,void 0,(0,n.default)().mark(function _(){return(0,n.default)().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:return A.abrupt("return",null);case 1:case"end":return A.stop()}},_)}))},e.default=K}(Ur)),Ur}var He={},Yf=me.default,Vf=ee.default;Object.defineProperty(He,"__esModule",{value:!0});He.ConfigContext=He.ConfigConsumer=void 0;He.withConfigConsumer=Zf;var Kf=Vf(ye),sn=Yf(ae),Qf=function(r,t){return t||(r?"ant-".concat(r):"ant")},Xf=He.ConfigContext=sn.createContext({getPrefixCls:Qf}),Jf=He.ConfigConsumer=Xf.Consumer;function Zf(e){return function(t){var n=function(l){return sn.createElement(Jf,null,function(f){var y=e.prefixCls,s=f.getPrefixCls,E=l.prefixCls,h=s(y,E);return sn.createElement(t,(0,Kf.default)({},f,l,{prefixCls:h}))})},a=t.constructor;return a&&a.displayName||t.name,n}}var Pr={};const es=tt(iu);var Ai=ee.default;Object.defineProperty(Pr,"__esModule",{value:!0});Pr.getStyle=Di;Pr.registerTheme=as;var Fa=wo,Hr=es,ts=Ai(nt),rs=Fe;Ai(Be);var ns="-ant-".concat(Date.now(),"-").concat(Math.random());function Di(e,r){var t={},n=function(E,h){var v=E.clone();return v=(h==null?void 0:h(v))||v,v.toRgbString()},a=function(E,h){var v=new Hr.TinyColor(E),I=(0,Fa.generate)(v.toRgbString());t["".concat(h,"-color")]=n(v),t["".concat(h,"-color-disabled")]=I[1],t["".concat(h,"-color-hover")]=I[4],t["".concat(h,"-color-active")]=I[6],t["".concat(h,"-color-outline")]=v.clone().setAlpha(.2).toRgbString(),t["".concat(h,"-color-deprecated-bg")]=I[0],t["".concat(h,"-color-deprecated-border")]=I[2]};if(r.primaryColor){a(r.primaryColor,"primary");var o=new Hr.TinyColor(r.primaryColor),l=(0,Fa.generate)(o.toRgbString());l.forEach(function(s,E){t["primary-".concat(E+1)]=s}),t["primary-color-deprecated-l-35"]=n(o,function(s){return s.lighten(35)}),t["primary-color-deprecated-l-20"]=n(o,function(s){return s.lighten(20)}),t["primary-color-deprecated-t-20"]=n(o,function(s){return s.tint(20)}),t["primary-color-deprecated-t-50"]=n(o,function(s){return s.tint(50)}),t["primary-color-deprecated-f-12"]=n(o,function(s){return s.setAlpha(s.getAlpha()*.12)});var f=new Hr.TinyColor(l[0]);t["primary-color-active-deprecated-f-30"]=n(f,function(s){return s.setAlpha(s.getAlpha()*.3)}),t["primary-color-active-deprecated-d-02"]=n(f,function(s){return s.darken(2)})}r.successColor&&a(r.successColor,"success"),r.warningColor&&a(r.warningColor,"warning"),r.errorColor&&a(r.errorColor,"error"),r.infoColor&&a(r.infoColor,"info");var y=Object.keys(t).map(function(s){return"--".concat(e,"-").concat(s,": ").concat(t[s],";")});return` + :root { + `.concat(y.join(` +`),` + } + `).trim()}function as(e,r){var t=Di(e,r);(0,ts.default)()&&(0,rs.updateCSS)(t,"".concat(ns,"-dynamic-theme"))}var Wn={};(function(e){var r=me.default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.DisabledContextProvider=void 0;var t=r(ae),n=t.createContext(!1);e.DisabledContextProvider=function(o){var l=o.children,f=o.disabled,y=t.useContext(n);return t.createElement(n.Provider,{value:f??y},l)},e.default=n})(Wn);var Fn={};(function(e){var r=me.default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.SizeContextProvider=void 0;var t=r(ae),n=t.createContext(void 0);e.SizeContextProvider=function(o){var l=o.children,f=o.size;return t.createElement(n.Consumer,null,function(y){return t.createElement(n.Provider,{value:f||y},l)})},e.default=n})(Fn);var Ba;function Ne(){return Ba||(Ba=1,function(e){var r=me.default,t=ee.default;Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"ConfigConsumer",{enumerable:!0,get:function(){return b.ConfigConsumer}}),Object.defineProperty(e,"ConfigContext",{enumerable:!0,get:function(){return b.ConfigContext}}),e.globalConfig=e.defaultPrefixCls=e.defaultIconPrefixCls=e.default=e.configConsumerProps=void 0;var n=t(ye),a=t(rt),o=t(fr),l=r(ae),f=sr,y=t(Jo),s=r(Zo),E=t(Nn),h=t(dr),v=t(Mi()),I=t(Hf()),b=He,$=Pr,w=Wn,k=r(Fn);e.configConsumerProps=["getTargetContainer","getPopupContainer","rootPrefixCls","getPrefixCls","renderEmpty","csp","autoInsertSpaceInButton","locale","pageHeader"];var W=["getTargetContainer","getPopupContainer","renderEmpty","pageHeader","input","pagination","form"],R=e.defaultPrefixCls="ant",G=e.defaultIconPrefixCls="anticon",x,T;function O(){return x||R}function S(){return T||G}var P=function(M){var V=M.prefixCls,X=M.iconPrefixCls,Q=M.theme;V!==void 0&&(x=V),X!==void 0&&(T=X),Q&&(0,$.registerTheme)(O(),Q)};e.globalConfig=function(){return{getPrefixCls:function(V,X){return X||(V?"".concat(O(),"-").concat(V):O())},getIconPrefixCls:S,getRootPrefixCls:function(V,X){return V||x||(X&&X.includes("-")?X.replace(/^(.*)-[^-]*$/,"$1"):O())}}};var F=function(M){var V=M.children,X=M.csp,Q=M.autoInsertSpaceInButton,K=M.form,L=M.locale,p=M.componentSize,_=M.direction,C=M.space,A=M.virtual,q=M.dropdownMatchSelectWidth,z=M.legacyLocale,Z=M.parentContext,te=M.iconPrefixCls,re=M.componentDisabled,ne=l.useCallback(function(de,le){var ce=M.prefixCls;if(le)return le;var Ce=ce||Z.getPrefixCls("");return de?"".concat(Ce,"-").concat(de):Ce},[Z.getPrefixCls,M.prefixCls]),oe=(0,n.default)((0,n.default)({},Z),{csp:X,autoInsertSpaceInButton:Q,locale:L||z,direction:_,space:C,virtual:A,dropdownMatchSelectWidth:q,getPrefixCls:ne});W.forEach(function(de){var le=M[de];le&&(oe[de]=le)});var ue=(0,o.default)(function(){return oe},oe,function(de,le){var ce=Object.keys(de),Ce=Object.keys(le);return ce.length!==Ce.length||ce.some(function(Ee){return de[Ee]!==le[Ee]})}),_e=l.useMemo(function(){return{prefixCls:te,csp:X}},[te,X]),ve=V,xe=l.useMemo(function(){var de,le,ce,Ce;return(0,f.merge)(((de=h.default.Form)===null||de===void 0?void 0:de.defaultValidateMessages)||{},((ce=(le=ue.locale)===null||le===void 0?void 0:le.Form)===null||ce===void 0?void 0:ce.defaultValidateMessages)||{},((Ce=ue.form)===null||Ce===void 0?void 0:Ce.validateMessages)||{},(K==null?void 0:K.validateMessages)||{})},[ue,K==null?void 0:K.validateMessages]);return Object.keys(xe).length>0&&(ve=l.createElement(y.default.Provider,{value:xe},V)),L&&(ve=l.createElement(s.default,{locale:L,_ANT_MARK__:s.ANT_MARK},ve)),(te||X)&&(ve=l.createElement(a.default.Provider,{value:_e},ve)),p&&(ve=l.createElement(k.SizeContextProvider,{size:p},ve)),re!==void 0&&(ve=l.createElement(w.DisabledContextProvider,{disabled:re},ve)),l.createElement(b.ConfigContext.Provider,{value:ue},ve)},Y=function(M){return l.useEffect(function(){M.direction&&(v.default.config({rtl:M.direction==="rtl"}),I.default.config({rtl:M.direction==="rtl"}))},[M.direction]),l.createElement(E.default,null,function(V,X,Q){return l.createElement(b.ConfigConsumer,null,function(K){return l.createElement(F,(0,n.default)({parentContext:K,legacyLocale:Q},M))})})};Y.ConfigContext=b.ConfigContext,Y.SizeContext=k.default,Y.config=P,e.default=Y}(Wr)),Wr}var ji={},Li={},Bn={},os=me.default,is=ee.default;Object.defineProperty(Bn,"__esModule",{value:!0});Bn.default=us;var ls=is(We),Yr=os(ae);function us(e){var r=Yr.useRef(!1),t=Yr.useState(e),n=(0,ls.default)(t,2),a=n[0],o=n[1];Yr.useEffect(function(){return r.current=!1,function(){r.current=!0}},[]);function l(f,y){y&&r.current||o(f)}return[a,l]}var zn={},wr={},Or={};Object.defineProperty(Or,"__esModule",{value:!0});Or.default=cs;function cs(e,r){var t=Object.assign({},e);return Array.isArray(r)&&r.forEach(function(n){delete t[n]}),t}var Un={},Gn={},Rr={},fs=ee.default;Object.defineProperty(Rr,"__esModule",{value:!0});Rr.default=ms;var ss=fs(pe),ds=Symbol.for("react.element"),vs=Symbol.for("react.transitional.element"),ps=Symbol.for("react.fragment");function ms(e){return e&&(0,ss.default)(e)==="object"&&(e.$$typeof===ds||e.$$typeof===vs)&&e.type===ps}var qi=ee.default;Object.defineProperty(Gn,"__esModule",{value:!0});Gn.default=dn;var hs=qi(Rr),gs=qi(ae);function dn(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=[];return gs.default.Children.forEach(e,function(n){n==null&&!r.keepEmpty||(Array.isArray(n)?t=t.concat(dn(n)):(0,hs.default)(n)&&n.props?t=t.concat(dn(n.props.children,r)):t.push(n))}),t}(function(e){var r=me.default,t=ee.default;Object.defineProperty(e,"__esModule",{value:!0}),e.useCompactItemContext=e.default=e.SpaceCompactItemContext=e.NoCompactStyle=void 0;var n=t(ye),a=t(Me),o=t(qe),l=t(Gn),f=r(ae),y=Ne(),s=function(I,b){var $={};for(var w in I)Object.prototype.hasOwnProperty.call(I,w)&&b.indexOf(w)<0&&($[w]=I[w]);if(I!=null&&typeof Object.getOwnPropertySymbols=="function")for(var k=0,w=Object.getOwnPropertySymbols(I);k=19)return!0;var a=(0,Vr.isMemo)(r)?r.type.type:r.type;return!(typeof a=="function"&&!((t=a.prototype)!==null&&t!==void 0&&t.render)&&a.$$typeof!==Vr.ForwardRef||typeof r=="function"&&!((n=r.prototype)!==null&&n!==void 0&&n.render)&&r.$$typeof!==Vr.ForwardRef)};function Vn(e){return(0,zi.isValidElement)(e)&&!(0,Ps.default)(e)}Oe.supportNodeRef=function(r){return Vn(r)&&Es(r)};Oe.getNodeRef=function(r){if(r&&Vn(r)){var t=r;return t.props.propertyIsEnumerable("ref")?t.props.ref:t.ref}return null};var Ui={},Er={};Object.defineProperty(Er,"__esModule",{value:!0});Er.default=void 0;var Gi=function(r){return+setTimeout(r,16)},Hi=function(r){return clearTimeout(r)};typeof window<"u"&&"requestAnimationFrame"in window&&(Gi=function(r){return window.requestAnimationFrame(r)},Hi=function(r){return window.cancelAnimationFrame(r)});var za=0,Kn=new Map;function Yi(e){Kn.delete(e)}var Vi=function(r){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;za+=1;var n=za;function a(o){if(o===0)Yi(n),r();else{var l=Gi(function(){a(o-1)});Kn.set(n,l)}}return a(t),n};Vi.cancel=function(e){var r=Kn.get(e);return Yi(e),Hi(r)};Er.default=Vi;(function(e){var r=ee.default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=o;var t=r(Er),n=0,a={};function o(l){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,y=n++,s=f;function E(){s-=1,s<=0?(l(),delete a[y]):a[y]=(0,t.default)(E)}return a[y]=(0,t.default)(E),y}o.cancel=function(f){f!==void 0&&(t.default.cancel(a[f]),delete a[f])},o.ids=a})(Ui);(function(e){var r=me.default,t=ee.default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(gi),a=t(_i),o=t(Ii),l=t(Ri),f=t(wi),y=t(Ln),s=t(xi),E=Fe,h=Oe,v=r(ae),I=Ne(),b=t(Ui),$=ze;function w(T,O,S){return O=(0,f.default)(O),(0,o.default)(T,(0,l.default)()?Reflect.construct(O,S||[],(0,f.default)(T).constructor):O.apply(T,S))}var k;function W(T){return!T||T.offsetParent===null||T.hidden}function R(T){return T instanceof Document?T.body:Array.from(T.childNodes).find(function(O){return(O==null?void 0:O.nodeType)===Node.ELEMENT_NODE})}function G(T){var O=(T||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/);return O&&O[1]&&O[2]&&O[3]?!(O[1]===O[2]&&O[2]===O[3]):!0}var x=function(T){(0,s.default)(O,T);function O(){var S;return(0,n.default)(this,O),S=w(this,O,arguments),S.containerRef=v.createRef(),S.animationStart=!1,S.destroyed=!1,S.onClick=function(P,F){var Y,j,M=S.props,V=M.insertExtraNode,X=M.disabled;if(!(X||!P||W(P)||P.className.includes("-leave"))){S.extraNode=document.createElement("div");var Q=(0,y.default)(S),K=Q.extraNode,L=S.context.getPrefixCls;K.className="".concat(L(""),"-click-animating-node");var p=S.getAttributeName();if(P.setAttribute(p,"true"),F&&F!=="#fff"&&F!=="#ffffff"&&F!=="rgb(255, 255, 255)"&&F!=="rgba(255, 255, 255, 1)"&&G(F)&&!/rgba\((?:\d*, ){3}0\)/.test(F)&&F!=="transparent"){K.style.borderColor=F;var _=((Y=P.getRootNode)===null||Y===void 0?void 0:Y.call(P))||P.ownerDocument,C=(j=R(_))!==null&&j!==void 0?j:_;k=(0,E.updateCSS)(` + [`.concat(L(""),"-click-animating-without-extra-node='true']::after, .").concat(L(""),`-click-animating-node { + --antd-wave-shadow-color: `).concat(F,`; + }`),"antd-wave",{csp:S.csp,attachTo:C})}V&&P.appendChild(K),["transition","animation"].forEach(function(A){P.addEventListener("".concat(A,"start"),S.onTransitionStart),P.addEventListener("".concat(A,"end"),S.onTransitionEnd)})}},S.onTransitionStart=function(P){if(!S.destroyed){var F=S.containerRef.current;!P||P.target!==F||S.animationStart||S.resetEffect(F)}},S.onTransitionEnd=function(P){!P||P.animationName!=="fadeEffect"||S.resetEffect(P.target)},S.bindAnimationEvent=function(P){if(!(!P||!P.getAttribute||P.getAttribute("disabled")||P.className.includes("disabled"))){var F=function(j){if(!(j.target.tagName==="INPUT"||W(j.target))){S.resetEffect(P);var M=getComputedStyle(P).getPropertyValue("border-top-color")||getComputedStyle(P).getPropertyValue("border-color")||getComputedStyle(P).getPropertyValue("background-color");S.clickWaveTimeoutId=window.setTimeout(function(){return S.onClick(P,M)},0),b.default.cancel(S.animationStartId),S.animationStart=!0,S.animationStartId=(0,b.default)(function(){S.animationStart=!1},10)}};return P.addEventListener("click",F,!0),{cancel:function(){P.removeEventListener("click",F,!0)}}}},S.renderWave=function(P){var F=P.csp,Y=S.props.children;if(S.csp=F,!v.isValidElement(Y))return Y;var j=S.containerRef;return(0,h.supportRef)(Y)&&(j=(0,h.composeRef)(Y.ref,S.containerRef)),(0,$.cloneElement)(Y,{ref:j})},S}return(0,a.default)(O,[{key:"componentDidMount",value:function(){this.destroyed=!1;var P=this.containerRef.current;!P||P.nodeType!==1||(this.instance=this.bindAnimationEvent(P))}},{key:"componentWillUnmount",value:function(){this.instance&&this.instance.cancel(),this.clickWaveTimeoutId&&clearTimeout(this.clickWaveTimeoutId),this.destroyed=!0}},{key:"getAttributeName",value:function(){var P=this.context.getPrefixCls,F=this.props.insertExtraNode;return F?"".concat(P(""),"-click-animating"):"".concat(P(""),"-click-animating-without-extra-node")}},{key:"resetEffect",value:function(P){var F=this;if(!(!P||P===this.extraNode||!(P instanceof Element))){var Y=this.props.insertExtraNode,j=this.getAttributeName();P.setAttribute(j,"false"),k&&(k.innerHTML=""),Y&&this.extraNode&&P.contains(this.extraNode)&&P.removeChild(this.extraNode),["transition","animation"].forEach(function(M){P.removeEventListener("".concat(M,"start"),F.onTransitionStart),P.removeEventListener("".concat(M,"end"),F.onTransitionEnd)})}}},{key:"render",value:function(){return v.createElement(I.ConfigConsumer,null,this.renderWave)}}]),O}(v.Component);x.contextType=I.ConfigContext,e.default=x})(Bi);var Ki={};(function(e){var r=me.default,t=ee.default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.GroupSizeContext=void 0;var n=t(ye),a=t(Me),o=t(qe),l=r(ae),f=Ne();t(Be);var y=function(h,v){var I={};for(var b in h)Object.prototype.hasOwnProperty.call(h,b)&&v.indexOf(b)<0&&(I[b]=h[b]);if(h!=null&&typeof Object.getOwnPropertySymbols=="function")for(var $=0,b=Object.getOwnPropertySymbols(h);$=4.5;case"AAlarge":return i>=3;case"AAAsmall":return i>=7;default:return!1}}function Of(e,t,r){r===void 0&&(r={includeFallbackColors:!1,level:"AA",size:"small"});for(var n=null,a=0,i=r.includeFallbackColors,o=r.level,l=r.size,u=0,s=t;ua&&(a=d,n=new Lt(c))}return Ef(e,n,{level:o,size:l})||!i?n:(r.includeFallbackColors=!1,Of(e,["#fff","#000"],r))}function mm(e,t){var r=new Lt(e),n="#"+il(r.r,r.g,r.b,r.a),a=n,i=r.gradientType?"GradientType = 1, ":"";if(t){var o=new Lt(t);a="#"+il(o.r,o.g,o.b,o.a)}return"progid:DXImageTransform.Microsoft.gradient(".concat(i,"startColorstr=").concat(n,",endColorstr=").concat(a,")")}function gm(e,t){var r={r:Qa(e.r),g:Qa(e.g),b:Qa(e.b)};return e.a!==void 0&&(r.a=Number(e.a)),new Lt(r,t)}function ym(){return new Lt({r:Math.random(),g:Math.random(),b:Math.random()})}function Pf(e){if(e===void 0&&(e={}),e.count!==void 0&&e.count!==null){var t=e.count,r=[];for(e.count=void 0;t>r.length;)e.count=null,e.seed&&(e.seed+=1),r.push(Pf(e));return e.count=t,r}var n=xm(e.hue,e.seed),a=Cm(n,e),i=_m(n,a,e),o={h:n,s:a,v:i};return e.alpha!==void 0&&(o.a=e.alpha),new Lt(o)}function xm(e,t){var r=bm(e),n=Li(r,t);return n<0&&(n=360+n),n}function Cm(e,t){if(t.hue==="monochrome")return 0;if(t.luminosity==="random")return Li([0,100],t.seed);var r=Tf(e).saturationRange,n=r[0],a=r[1];switch(t.luminosity){case"bright":n=55;break;case"dark":n=a-10;break;case"light":a=55;break}return Li([n,a],t.seed)}function _m(e,t,r){var n=wm(e,t),a=100;switch(r.luminosity){case"dark":a=n+20;break;case"light":n=(a+n)/2;break;case"random":n=0,a=100;break}return Li([n,a],r.seed)}function wm(e,t){for(var r=Tf(e).lowerBounds,n=0;n=a&&t<=o){var u=(l-i)/(o-a),s=i-u*a;return u*t+s}}return 0}function bm(e){var t=parseInt(e,10);if(!Number.isNaN(t)&&t<360&&t>0)return[t,t];if(typeof e=="string"){var r=Jl.find(function(o){return o.name===e});if(r){var n=Nf(r);if(n.hueRange)return n.hueRange}var a=new Lt(e);if(a.isValid){var i=a.toHsv().h;return[i,i]}}return[0,360]}function Tf(e){e>=334&&e<=360&&(e-=360);for(var t=0,r=Jl;t=a.hueRange[0]&&e<=a.hueRange[1])return a}throw Error("Color not found")}function Li(e,t){if(t===void 0)return Math.floor(e[0]+Math.random()*(e[1]+1-e[0]));var r=e[1]||1,n=e[0]||0;t=(t*9301+49297)%233280;var a=t/233280;return Math.floor(n+a*(r-n))}function Nf(e){var t=e.lowerBounds[0][0],r=e.lowerBounds[e.lowerBounds.length-1][0],n=e.lowerBounds[e.lowerBounds.length-1][1],a=e.lowerBounds[0][1];return{name:e.name,hueRange:e.hueRange,lowerBounds:e.lowerBounds,saturationRange:[t,r],brightnessRange:[n,a]}}var Jl=[{name:"monochrome",hueRange:null,lowerBounds:[[0,0],[100,0]]},{name:"red",hueRange:[-26,18],lowerBounds:[[20,100],[30,92],[40,89],[50,85],[60,78],[70,70],[80,60],[90,55],[100,50]]},{name:"orange",hueRange:[19,46],lowerBounds:[[20,100],[30,93],[40,88],[50,86],[60,85],[70,70],[100,70]]},{name:"yellow",hueRange:[47,62],lowerBounds:[[25,100],[40,94],[50,89],[60,86],[70,84],[80,82],[90,80],[100,75]]},{name:"green",hueRange:[63,178],lowerBounds:[[30,100],[40,90],[50,85],[60,81],[70,74],[80,64],[90,50],[100,40]]},{name:"blue",hueRange:[179,257],lowerBounds:[[20,100],[30,86],[40,80],[50,74],[60,60],[70,52],[80,44],[90,39],[100,35]]},{name:"purple",hueRange:[258,282],lowerBounds:[[20,100],[30,87],[40,79],[50,70],[60,65],[70,59],[80,52],[90,45],[100,42]]},{name:"pink",hueRange:[283,334],lowerBounds:[[20,100],[30,90],[40,86],[60,84],[80,80],[90,75],[100,73]]}];const Sm=Object.freeze(Object.defineProperty({__proto__:null,TinyColor:Lt,bounds:Jl,convertDecimalToHex:Bv,convertHexToDecimal:zv,default:Ts,fromRatio:gm,hslToRgb:qv,hsvToRgb:Wv,inputToRGB:Uv,isReadable:Ef,isValidCSSUnit:Xv,legacyRandom:ym,mostReadable:Of,names:Vv,numberInputToObject:Hv,parseIntFromHex:Yv,random:Pf,readability:Gl,rgbToHex:Kv,rgbToHsl:Qv,rgbToHsv:Gv,rgbToRgb:Jv,rgbaToArgbHex:il,rgbaToHex:Zv,stringInputToObject:em,tinycolor:Ts,toMsFilter:mm},Symbol.toStringTag,{value:"Module"}));var Em={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"download",theme:"outlined"};const Om=Em;var Pm=function(t,r){return re.createElement(tm,Ns(Ns({},t),{},{ref:r,icon:Om}))},Tm=re.forwardRef(Pm);const jC=Tm,Nm=Object.freeze(Object.defineProperty({__proto__:null,CSSMotionList:nm,Provider:im,default:rm},Symbol.toStringTag,{value:"Module"})),Im=Object.freeze(Object.defineProperty({__proto__:null,default:am},Symbol.toStringTag,{value:"Module"})),Dm=Object.freeze(Object.defineProperty({__proto__:null,Panel:pm,default:hm},Symbol.toStringTag,{value:"Module"}));function Mm(e){return{alter:e.alter,step:"CDEFGAB"[(e.note+98)%7],octave:Math.floor(e.note/7)+4}}function Rm(e){return{10:"1024th",9:"512th",8:"256th",7:"128th",6:"64th",5:"32nd",4:"16th",3:"eighth",2:"quarter",1:"half",0:"whole"}[e]}const If=cm/4,km=40;var Df={exports:{}},Fn={},Mf={exports:{}},he={};/** - * @license React - * scheduler-unstable_mock.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */function al(e,t){var r=e.length;e.push(t);e:for(;0>>1,a=e[n];if(0>>1;nwi(l,r))uwi(s,l)?(e[n]=s,e[u]=r,n=u):(e[n]=l,e[o]=r,n=o);else if(uwi(s,r))e[n]=s,e[u]=r,n=u;else break e}}return t}function wi(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}var Dt=[],Gt=[],Lm=1,ct=null,Ue=3,Ai=!1,wr=!1,Dn=!1,rt=0,Xe=null,zt=null,ir=-1,dt=null,qr=-1,Vr=!1,nt=!1,oa=!1,ol=!1,Zl=!1;function ll(e){for(var t=Ct(Gt);t!==null;){if(t.callback===null)ji(Gt);else if(t.startTime<=e)ji(Gt),t.sortIndex=t.expirationTime,al(Dt,t);else break;t=Ct(Gt)}}function eu(e){if(Dn=!1,ll(e),!wr)if(Ct(Dt)!==null)wr=!0,Xe=tu;else{var t=Ct(Gt);t!==null&&(e=t.startTime-e,zt=eu,ir=rt+e)}}function tu(e,t){wr=!1,Dn&&(Dn=!1,zt=null,ir=-1),Ai=!0;var r=Ue;try{for(ll(t),ct=Ct(Dt);ct!==null&&(!(ct.expirationTime>t)||e&&!Rf());){var n=ct.callback;if(typeof n=="function"){ct.callback=null,Ue=ct.priorityLevel;var a=n(ct.expirationTime<=t);t=rt,typeof a=="function"?ct.callback=a:ct===Ct(Dt)&&ji(Dt),ll(t)}else ji(Dt);ct=Ct(Dt)}if(ct!==null)var i=!0;else{var o=Ct(Gt);if(o!==null){var l=o.startTime-t;zt=eu,ir=rt+l}i=!1}return i}finally{ct=null,Ue=r,Ai=!1}}function Rf(){return qr===0&&dt===null||qr!==-1&&dt!==null&&dt.length>=qr||ol&&oa?Vr=!0:!1}function kf(){if(nt)throw Error("Already flushing work.");if(Xe!==null){var e=Xe;nt=!0;try{var t=!0;do t=e(!0,rt);while(t);return t||(Xe=null),!0}finally{nt=!1}}else return!1}he.reset=function(){if(nt)throw Error("Cannot reset while already flushing work.");rt=0,zt=Xe=null,ir=-1,dt=null,qr=-1,oa=nt=Vr=!1};he.unstable_IdlePriority=5;he.unstable_ImmediatePriority=1;he.unstable_LowPriority=4;he.unstable_NormalPriority=3;he.unstable_Profiling=null;he.unstable_UserBlockingPriority=2;he.unstable_advanceTime=function(e){console.log.name==="disabledLog"||Zl||(rt+=e,zt!==null&&ir<=rt&&(zt(rt),ir=-1,zt=null))};he.unstable_cancelCallback=function(e){e.callback=null};he.unstable_clearYields=function(){if(dt===null)return[];var e=dt;return dt=null,e};he.unstable_continueExecution=function(){wr||Ai||(wr=!0,Xe=tu)};he.unstable_flushAll=function(){if(dt!==null)throw Error("Log is not empty. Assert on the log of yielded values before flushing additional work.");if(kf(),dt!==null)throw Error("While flushing work, something yielded a value. Use an assertion helper to assert on the log of yielded values, e.g. expect(Scheduler).toFlushAndYield([...])")};he.unstable_flushAllWithoutAsserting=kf;he.unstable_flushExpired=function(){if(nt)throw Error("Already flushing work.");if(Xe!==null){nt=!0;try{Xe(!1,rt)||(Xe=null)}finally{nt=!1}}};he.unstable_flushNumberOfYields=function(e){if(nt)throw Error("Already flushing work.");if(Xe!==null){var t=Xe;qr=e,nt=!0;try{e=!0;do e=t(!0,rt);while(e&&!Vr);e||(Xe=null)}finally{qr=-1,nt=Vr=!1}}};he.unstable_flushUntilNextPaint=function(){if(nt)throw Error("Already flushing work.");if(Xe!==null){var e=Xe;ol=!0,oa=!1,nt=!0;try{var t=!0;do t=e(!0,rt);while(t&&!Vr);t||(Xe=null)}finally{nt=Vr=ol=!1}}};he.unstable_forceFrameRate=function(){};he.unstable_getCurrentPriorityLevel=function(){return Ue};he.unstable_getFirstCallbackNode=function(){return Ct(Dt)};he.unstable_next=function(e){switch(Ue){case 1:case 2:case 3:var t=3;break;default:t=Ue}var r=Ue;Ue=t;try{return e()}finally{Ue=r}};he.unstable_now=function(){return rt};he.unstable_pauseExecution=function(){};he.unstable_requestPaint=function(){oa=!0};he.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=Ue;Ue=e;try{return t()}finally{Ue=r}};he.unstable_scheduleCallback=function(e,t,r){var n=rt;switch(typeof r=="object"&&r!==null?(r=r.delay,r=typeof r=="number"&&0n?(e.sortIndex=r,al(Gt,e),Ct(Dt)===null&&e===Ct(Gt)&&(Dn?(zt=null,ir=-1):Dn=!0,zt=eu,ir=rt+(r-n))):(e.sortIndex=a,al(Dt,e),wr||Ai||(wr=!0,Xe=tu)),e};he.unstable_setDisableYieldValue=function(e){Zl=e};he.unstable_shouldYield=Rf;he.unstable_wrapCallback=function(e){var t=Ue;return function(){var r=Ue;Ue=t;try{return e.apply(this,arguments)}finally{Ue=r}}};he.unstable_yieldValue=function(e){console.log.name==="disabledLog"||Zl||(dt===null?dt=[e]:dt.push(e))};Mf.exports=he;var jm=Mf.exports;/** - * @license React - * react-test-renderer.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Lf=re,jf=jm,Ut=sm;function Is(e,t){for(var r=0;r>>=0,e===0?32:31-(Um(e)/Xm|0)|0}var ni=64,ii=4194304;function ai(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function $i(e,t){var r=e.pendingLanes;if(r===0)return 0;var n=0,a=e.suspendedLanes,i=e.pingedLanes,o=r&268435455;if(o!==0){var l=o&~a;l!==0?n=ai(l):(i&=o,i!==0&&(n=ai(i)))}else o=r&~a,o!==0?n=ai(o):i!==0&&(n=ai(i));if(n===0)return 0;if(t!==0&&t!==n&&!(t&a)&&(a=n&-n,i=t&-t,a>=i||a===16&&(i&4194240)!==0))return t;if(n&4&&(n|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=n;0r;r++)t.push(e);return t}function sa(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Tr(t),e[t]=r}function Ym(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var n=e.eventTimes;for(e=e.expirationTimes;0l||a[o]!==i[l]){var u=` -`+a[o].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=o&&0<=l);break}}}finally{Za=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Pn(e):""}var Jm=Object.prototype.hasOwnProperty,vl=[],$r=-1;function lr(e){return{current:e}}function _e(e){0>$r||(e.current=vl[$r],vl[$r]=null,$r--)}function ye(e,t){$r++,vl[$r]=e.current,e.current=t}var ar={},Ve=lr(ar),it=lr(!1),br=ar;function Hr(e,t){var r=e.type.contextTypes;if(!r)return ar;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var a={},i;for(i in r)a[i]=t[i];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function at(e){return e=e.childContextTypes,e!=null}function zi(){_e(it),_e(Ve)}function Ls(e,t,r){if(Ve.current!==ar)throw Error("Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.");ye(Ve,t),ye(it,r)}function Hf(e,t,r){var n=e.stateNode;if(t=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var a in n)if(!(a in t))throw Error((Fm(e)||"Unknown")+'.getChildContext(): key "'+a+'" is not defined in childContextTypes.');return yr({},r,n)}function qi(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ar,br=Ve.current,ye(Ve,e),ye(it,it.current),!0}function js(e,t,r){var n=e.stateNode;if(!n)throw Error("Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.");r?(e=Hf(e,t,br),n.__reactInternalMemoizedMergedChildContext=e,_e(it),_e(Ve),ye(Ve,e)):_e(it),ye(it,r)}function Zm(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var wt=typeof Object.is=="function"?Object.is:Zm,ft=null,ca=!1,to=!1;function Nr(){if(!to&&ft!==null){to=!0;var e=0,t=ke;try{var r=ft;for(ke=1;ev?(y=b,b=null):y=b.sibling;var O=h(_,b,x[v],f);if(O===null){b===null&&(b=y);break}e&&b&&O.alternate===null&&t(_,b),g=i(O,g,v),C===null?p=O:C.sibling=O,C=O,b=y}if(v===x.length)return r(_,b),p;if(b===null){for(;vv?(y=b,b=null):y=b.sibling;var k=h(_,b,O.value,f);if(k===null){b===null&&(b=y);break}e&&b&&k.alternate===null&&t(_,b),g=i(k,g,v),C===null?p=k:C.sibling=k,C=k,b=y}if(O.done)return r(_,b),p;if(b===null){for(;!O.done;v++,O=x.next())O=d(_,O.value,f),O!==null&&(g=i(O,g,v),C===null?p=O:C.sibling=O,C=O);return p}for(b=n(_,b);!O.done;v++,O=x.next())O=E(b,_,v,O.value,f),O!==null&&(e&&O.alternate!==null&&b.delete(O.key===null?v:O.key),g=i(O,g,v),C===null?p=O:C.sibling=O,C=O);return e&&b.forEach(function(L){return t(_,L)}),p}function T(_,g,x,f){if(typeof x=="object"&&x!==null&&x.type===Fr&&x.key===null&&(x=x.props.children),typeof x=="object"&&x!==null){switch(x.$$typeof){case ri:e:{for(var p=x.key,C=g;C!==null;){if(C.key===p){if(p=x.type,p===Fr){if(C.tag===7){r(_,C.sibling),g=a(C,x.props.children),g.return=_,_=g;break e}}else if(C.elementType===p||typeof p=="object"&&p!==null&&p.$$typeof===Yt&&$s(p)===C.type){r(_,C.sibling),g=a(C,x.props),g.ref=mn(_,C,x),g.return=_,_=g;break e}r(_,C);break}else t(_,C);C=C.sibling}x.type===Fr?(g=_r(x.props.children,_.mode,f,x.key),g.return=_,_=g):(f=Ni(x.type,x.key,x.props,null,_.mode,f),f.ref=mn(_,g,x),f.return=_,_=f)}return o(_);case En:e:{for(C=x.key;g!==null;){if(g.key===C)if(g.tag===4&&g.stateNode.containerInfo===x.containerInfo&&g.stateNode.implementation===x.implementation){r(_,g.sibling),g=a(g,x.children||[]),g.return=_,_=g;break e}else{r(_,g);break}else t(_,g);g=g.sibling}g=co(x,_.mode,f),g.return=_,_=g}return o(_);case Yt:return C=x._init,T(_,g,C(x._payload),f)}if(On(x))return S(_,g,x,f);if(vn(x))return M(_,g,x,f);ui(_,x)}return typeof x=="string"&&x!==""||typeof x=="number"?(x=""+x,g!==null&&g.tag===6?(r(_,g.sibling),g=a(g,x),g.return=_,_=g):(r(_,g),g=so(x,_.mode,f),g.return=_,_=g),o(_)):r(_,g)}return T}var Yr=Yf(!0),rg=Yf(!1),Ui=lr(null),Xi=null,Br=null,lu=null;function uu(){lu=Br=Xi=null}function su(e){var t=Ui.current;_e(Ui),e._currentValue2=t}function ml(e,t,r){for(;e!==null;){var n=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,n!==null&&(n.childLanes|=t)):n!==null&&(n.childLanes&t)!==t&&(n.childLanes|=t),e===r)break;e=e.return}}function Wr(e,t){Xi=e,lu=Br=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(tt=!0),e.firstContext=null)}function vt(e){var t=e._currentValue2;if(lu!==e)if(e={context:e,memoizedValue:t,next:null},Br===null){if(Xi===null)throw Error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().");Br=e,Xi.dependencies={lanes:0,firstContext:e}}else Br=Br.next=e;return t}var mr=null;function cu(e){mr===null?mr=[e]:mr.push(e)}function Kf(e,t,r,n){var a=t.interleaved;return a===null?(r.next=r,cu(t)):(r.next=a.next,a.next=r),t.interleaved=r,Kr(e,n)}function Kr(e,t){e.lanes|=t;var r=e.alternate;for(r!==null&&(r.lanes|=t),r=e,e=e.return;e!==null;)e.childLanes|=t,r=e.alternate,r!==null&&(r.childLanes|=t),r=e,e=e.return;return r.tag===3?r.stateNode:null}var Kt=!1;function fu(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Qf(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function er(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function xr(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,fe&2){var a=n.pending;return a===null?t.next=t:(t.next=a.next,a.next=t),n.pending=t,Kr(e,r)}return a=n.interleaved,a===null?(t.next=t,cu(n)):(t.next=a.next,a.next=t),n.interleaved=t,Kr(e,r)}function bi(e,t,r){if(t=t.updateQueue,t!==null&&(t=t.shared,(r&4194240)!==0)){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,Wf(e,r)}}function Bs(e,t){var r=e.updateQueue,n=e.alternate;if(n!==null&&(n=n.updateQueue,r===n)){var a=null,i=null;if(r=r.firstBaseUpdate,r!==null){do{var o={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};i===null?a=i=o:i=i.next=o,r=r.next}while(r!==null);i===null?a=i=t:i=i.next=t}else a=i=t;r={baseState:n.baseState,firstBaseUpdate:a,lastBaseUpdate:i,shared:n.shared,effects:n.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=t:e.next=t,r.lastBaseUpdate=t}function Vi(e,t,r,n){var a=e.updateQueue;Kt=!1;var i=a.firstBaseUpdate,o=a.lastBaseUpdate,l=a.shared.pending;if(l!==null){a.shared.pending=null;var u=l,s=u.next;u.next=null,o===null?i=s:o.next=s,o=u;var c=e.alternate;c!==null&&(c=c.updateQueue,l=c.lastBaseUpdate,l!==o&&(l===null?c.firstBaseUpdate=s:l.next=s,c.lastBaseUpdate=u))}if(i!==null){var d=a.baseState;o=0,c=s=u=null,l=i;do{var h=l.lane,E=l.eventTime;if((n&h)===h){c!==null&&(c=c.next={eventTime:E,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var S=e,M=l;switch(h=t,E=r,M.tag){case 1:if(S=M.payload,typeof S=="function"){d=S.call(E,d,h);break e}d=S;break e;case 3:S.flags=S.flags&-65537|128;case 0:if(S=M.payload,h=typeof S=="function"?S.call(E,d,h):S,h==null)break e;d=yr({},d,h);break e;case 2:Kt=!0}}l.callback!==null&&l.lane!==0&&(e.flags|=64,h=a.effects,h===null?a.effects=[l]:h.push(l))}else E={eventTime:E,lane:h,tag:l.tag,payload:l.payload,callback:l.callback,next:null},c===null?(s=c=E,u=d):c=c.next=E,o|=h;if(l=l.next,l===null){if(l=a.shared.pending,l===null)break;h=l,l=h.next,h.next=null,a.lastBaseUpdate=h,a.shared.pending=null}}while(1);if(c===null&&(u=d),a.baseState=u,a.firstBaseUpdate=s,a.lastBaseUpdate=c,t=a.shared.interleaved,t!==null){a=t;do o|=a.lane,a=a.next;while(a!==t)}else i===null&&(a.shared.lanes=0);Er|=o,e.lanes=o,e.memoizedState=d}}function zs(e,t,r){if(e=t.effects,t.effects=null,e!==null)for(t=0;tr?r:4,e(!0);var n=io.transition;io.transition={};try{e(!1),t()}finally{ke=r,io.transition=n}}function hd(){return mt().memoizedState}function ag(e,t,r){var n=Ur(e);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},pd(e))vd(t,r);else if(r=Kf(e,t,r,n),r!==null){var a=_t();rr(r,e,n,a),md(r,t,n)}}function og(e,t,r){var n=Ur(e),a={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(pd(e))vd(t,a);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var o=t.lastRenderedState,l=i(o,r);if(a.hasEagerState=!0,a.eagerState=l,wt(l,o)){var u=t.interleaved;u===null?(a.next=a,cu(t)):(a.next=u.next,u.next=a),t.interleaved=a;return}}catch{}finally{}r=Kf(e,t,a,n),r!==null&&(a=_t(),rr(r,e,n,a),md(r,t,n))}}function pd(e){var t=e.alternate;return e===Ee||t!==null&&t===Ee}function vd(e,t){Tn=Yi=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function md(e,t,r){if(r&4194240){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,Wf(e,r)}}var Ki={readContext:vt,useCallback:qe,useContext:qe,useEffect:qe,useImperativeHandle:qe,useInsertionEffect:qe,useLayoutEffect:qe,useMemo:qe,useReducer:qe,useRef:qe,useState:qe,useDebugValue:qe,useDeferredValue:qe,useTransition:qe,useMutableSource:qe,useSyncExternalStore:qe,useId:qe,unstable_isNewReconciler:!1},lg={readContext:vt,useCallback:function(e,t){return It().memoizedState=[e,t===void 0?null:t],e},useContext:vt,useEffect:Ws,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,Ei(4,4,ud.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Ei(4,4,e,t)},useInsertionEffect:function(e,t){return Ei(4,2,e,t)},useMemo:function(e,t){var r=It();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var n=It();return t=r!==void 0?r(t):t,n.memoizedState=n.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},n.queue=e,e=e.dispatch=ag.bind(null,Ee,e),[n.memoizedState,e]},useRef:function(e){var t=It();return e={current:e},t.memoizedState=e},useState:qs,useDebugValue:yu,useDeferredValue:function(e){return It().memoizedState=e},useTransition:function(){var e=qs(!1),t=e[0];return e=ig.bind(null,e[1]),It().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t){var r=Ee,n=It(),a=t();if(Ae===null)throw Error("Expected a work-in-progress root. This is a bug in React. Please file an issue.");Sr&30||ed(r,t,a),n.memoizedState=a;var i={value:a,getSnapshot:t};return n.queue=i,Ws(rd.bind(null,r,i,e),[e]),r.flags|=2048,Ln(9,td.bind(null,r,i,a,t),void 0,null),a},useId:function(){var e=It(),t=Ae.identifierPrefix,r=ng++;return t=":"+t+"r"+r.toString(32)+":",e.memoizedState=t},unstable_isNewReconciler:!1},ug={readContext:vt,useCallback:cd,useContext:vt,useEffect:gu,useImperativeHandle:sd,useInsertionEffect:od,useLayoutEffect:ld,useMemo:fd,useReducer:ao,useRef:ad,useState:function(){return ao(kn)},useDebugValue:yu,useDeferredValue:function(e){var t=mt();return dd(t,De.memoizedState,e)},useTransition:function(){var e=ao(kn)[0],t=mt().memoizedState;return[e,t]},useMutableSource:Jf,useSyncExternalStore:Zf,useId:hd,unstable_isNewReconciler:!1},sg={readContext:vt,useCallback:cd,useContext:vt,useEffect:gu,useImperativeHandle:sd,useInsertionEffect:od,useLayoutEffect:ld,useMemo:fd,useReducer:oo,useRef:ad,useState:function(){return oo(kn)},useDebugValue:yu,useDeferredValue:function(e){var t=mt();return De===null?t.memoizedState=e:dd(t,De.memoizedState,e)},useTransition:function(){var e=oo(kn)[0],t=mt().memoizedState;return[e,t]},useMutableSource:Jf,useSyncExternalStore:Zf,useId:hd,unstable_isNewReconciler:!1};function xt(e,t){if(e&&e.defaultProps){t=yr({},t),e=e.defaultProps;for(var r in e)t[r]===void 0&&(t[r]=e[r]);return t}return t}function gl(e,t,r,n){t=e.memoizedState,r=r(n,t),r=r==null?t:yr({},t,r),e.memoizedState=r,e.lanes===0&&(e.updateQueue.baseState=r)}var da={isMounted:function(e){return(e=e._reactInternals)?la(e)===e:!1},enqueueSetState:function(e,t,r){e=e._reactInternals;var n=_t(),a=Ur(e),i=er(n,a);i.payload=t,r!=null&&(i.callback=r),t=xr(e,i,a),t!==null&&(rr(t,e,a,n),bi(t,e,a))},enqueueReplaceState:function(e,t,r){e=e._reactInternals;var n=_t(),a=Ur(e),i=er(n,a);i.tag=1,i.payload=t,r!=null&&(i.callback=r),t=xr(e,i,a),t!==null&&(rr(t,e,a,n),bi(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var r=_t(),n=Ur(e),a=er(r,n);a.tag=2,t!=null&&(a.callback=t),t=xr(e,a,n),t!==null&&(rr(t,e,n,r),bi(t,e,n))}};function Us(e,t,r,n,a,i,o){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(n,i,o):t.prototype&&t.prototype.isPureReactComponent?!Wi(r,n)||!Wi(a,i):!0}function gd(e,t,r){var n=!1,a=ar,i=t.contextType;return typeof i=="object"&&i!==null?i=vt(i):(a=at(t)?br:Ve.current,n=t.contextTypes,i=(n=n!=null)?Hr(e,a):ar),t=new t(r,i),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=da,e.stateNode=t,t._reactInternals=e,n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=i),t}function Xs(e,t,r,n){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(r,n),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(r,n),t.state!==e&&da.enqueueReplaceState(t,t.state,null)}function yl(e,t,r,n){var a=e.stateNode;a.props=r,a.state=e.memoizedState,a.refs={},fu(e);var i=t.contextType;typeof i=="object"&&i!==null?a.context=vt(i):(i=at(t)?br:Ve.current,a.context=Hr(e,i)),a.state=e.memoizedState,i=t.getDerivedStateFromProps,typeof i=="function"&&(gl(e,t,i,r),a.state=e.memoizedState),typeof t.getDerivedStateFromProps=="function"||typeof a.getSnapshotBeforeUpdate=="function"||typeof a.UNSAFE_componentWillMount!="function"&&typeof a.componentWillMount!="function"||(t=a.state,typeof a.componentWillMount=="function"&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount=="function"&&a.UNSAFE_componentWillMount(),t!==a.state&&da.enqueueReplaceState(a,a.state,null),Vi(e,r,a,n),a.state=e.memoizedState),typeof a.componentDidMount=="function"&&(e.flags|=4)}function xu(e,t){try{var r="",n=t;do r+=tg(n),n=n.return;while(n);var a=r}catch(i){a=` -Error generating stack: `+i.message+` -`+i.stack}return{value:e,source:t,stack:a,digest:null}}function lo(e,t,r){return{value:e,source:null,stack:r??null,digest:t??null}}function xl(e,t){try{console.error(t.value)}catch(r){setTimeout(function(){throw r})}}var cg=typeof WeakMap=="function"?WeakMap:Map;function yd(e,t,r){r=er(-1,r),r.tag=3,r.payload={element:null};var n=t.value;return r.callback=function(){Zi||(Zi=!0,Tl=n),xl(e,t)},r}function xd(e,t,r){r=er(-1,r),r.tag=3;var n=e.type.getDerivedStateFromError;if(typeof n=="function"){var a=t.value;r.payload=function(){return n(a)},r.callback=function(){xl(e,t)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(r.callback=function(){xl(e,t),typeof n!="function"&&(tr===null?tr=new Set([this]):tr.add(this));var o=t.stack;this.componentDidCatch(t.value,{componentStack:o!==null?o:""})}),r}function Vs(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new cg;var a=new Set;n.set(t,a)}else a=n.get(t),a===void 0&&(a=new Set,n.set(t,a));a.has(r)||(a.add(r),e=Eg.bind(null,e,t,r),t.then(e,e))}var fg=or.ReactCurrentOwner,tt=!1;function Qe(e,t,r,n){t.child=e===null?rg(t,null,r,n):Yr(t,e.child,r,n)}function Hs(e,t,r,n,a){r=r.render;var i=t.ref;return Wr(t,a),n=mu(e,t,r,n,i,a),e!==null&&!tt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,qt(e,t,a)):(t.flags|=1,Qe(e,t,n,a),t.child)}function Ys(e,t,r,n,a){if(e===null){var i=r.type;return typeof i=="function"&&!Pu(i)&&i.defaultProps===void 0&&r.compare===null&&r.defaultProps===void 0?(t.tag=15,t.type=i,Cd(e,t,i,n,a)):(e=Ni(r.type,null,n,t,t.mode,a),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,!(e.lanes&a)){var o=i.memoizedProps;if(r=r.compare,r=r!==null?r:Wi,r(o,n)&&e.ref===t.ref)return qt(e,t,a)}return t.flags|=1,e=nr(i,n),e.ref=t.ref,e.return=t,t.child=e}function Cd(e,t,r,n,a){if(e!==null){var i=e.memoizedProps;if(Wi(i,n)&&e.ref===t.ref)if(tt=!1,t.pendingProps=n=i,(e.lanes&a)!==0)e.flags&131072&&(tt=!0);else return t.lanes=e.lanes,qt(e,t,a)}return Cl(e,t,r,n,a)}function _d(e,t,r){var n=t.pendingProps,a=n.children,i=e!==null?e.memoizedState:null;if(n.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},ye(zr,lt),lt|=r;else{if(!(r&1073741824))return e=i!==null?i.baseLanes|r:r,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,ye(zr,lt),lt|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},n=i!==null?i.baseLanes:r,ye(zr,lt),lt|=n}else i!==null?(n=i.baseLanes|r,t.memoizedState=null):n=r,ye(zr,lt),lt|=n;return Qe(e,t,a,r),t.child}function wd(e,t){var r=t.ref;(e===null&&r!==null||e!==null&&e.ref!==r)&&(t.flags|=512)}function Cl(e,t,r,n,a){var i=at(r)?br:Ve.current;return i=Hr(t,i),Wr(t,a),r=mu(e,t,r,n,i,a),e!==null&&!tt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,qt(e,t,a)):(t.flags|=1,Qe(e,t,r,a),t.child)}function Ks(e,t,r,n,a){if(at(r)){var i=!0;qi(t)}else i=!1;if(Wr(t,a),t.stateNode===null)Oi(e,t),gd(t,r,n),yl(t,r,n,a),n=!0;else if(e===null){var o=t.stateNode,l=t.memoizedProps;o.props=l;var u=o.context,s=r.contextType;typeof s=="object"&&s!==null?s=vt(s):(s=at(r)?br:Ve.current,s=Hr(t,s));var c=r.getDerivedStateFromProps,d=typeof c=="function"||typeof o.getSnapshotBeforeUpdate=="function";d||typeof o.UNSAFE_componentWillReceiveProps!="function"&&typeof o.componentWillReceiveProps!="function"||(l!==n||u!==s)&&Xs(t,o,n,s),Kt=!1;var h=t.memoizedState;o.state=h,Vi(t,n,o,a),u=t.memoizedState,l!==n||h!==u||it.current||Kt?(typeof c=="function"&&(gl(t,r,c,n),u=t.memoizedState),(l=Kt||Us(t,r,l,n,h,u,s))?(d||typeof o.UNSAFE_componentWillMount!="function"&&typeof o.componentWillMount!="function"||(typeof o.componentWillMount=="function"&&o.componentWillMount(),typeof o.UNSAFE_componentWillMount=="function"&&o.UNSAFE_componentWillMount()),typeof o.componentDidMount=="function"&&(t.flags|=4)):(typeof o.componentDidMount=="function"&&(t.flags|=4),t.memoizedProps=n,t.memoizedState=u),o.props=n,o.state=u,o.context=s,n=l):(typeof o.componentDidMount=="function"&&(t.flags|=4),n=!1)}else{o=t.stateNode,Qf(e,t),l=t.memoizedProps,s=t.type===t.elementType?l:xt(t.type,l),o.props=s,d=t.pendingProps,h=o.context,u=r.contextType,typeof u=="object"&&u!==null?u=vt(u):(u=at(r)?br:Ve.current,u=Hr(t,u));var E=r.getDerivedStateFromProps;(c=typeof E=="function"||typeof o.getSnapshotBeforeUpdate=="function")||typeof o.UNSAFE_componentWillReceiveProps!="function"&&typeof o.componentWillReceiveProps!="function"||(l!==d||h!==u)&&Xs(t,o,n,u),Kt=!1,h=t.memoizedState,o.state=h,Vi(t,n,o,a);var S=t.memoizedState;l!==d||h!==S||it.current||Kt?(typeof E=="function"&&(gl(t,r,E,n),S=t.memoizedState),(s=Kt||Us(t,r,s,n,h,S,u)||!1)?(c||typeof o.UNSAFE_componentWillUpdate!="function"&&typeof o.componentWillUpdate!="function"||(typeof o.componentWillUpdate=="function"&&o.componentWillUpdate(n,S,u),typeof o.UNSAFE_componentWillUpdate=="function"&&o.UNSAFE_componentWillUpdate(n,S,u)),typeof o.componentDidUpdate=="function"&&(t.flags|=4),typeof o.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof o.componentDidUpdate!="function"||l===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),typeof o.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),t.memoizedProps=n,t.memoizedState=S),o.props=n,o.state=S,o.context=u,n=s):(typeof o.componentDidUpdate!="function"||l===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),typeof o.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),n=!1)}return _l(e,t,r,n,i,a)}function _l(e,t,r,n,a,i){wd(e,t);var o=(t.flags&128)!==0;if(!n&&!o)return a&&js(t,r,!1),qt(e,t,i);n=t.stateNode,fg.current=t;var l=o&&typeof r.getDerivedStateFromError!="function"?null:n.render();return t.flags|=1,e!==null&&o?(t.child=Yr(t,e.child,null,i),t.child=Yr(t,null,l,i)):Qe(e,t,l,i),t.memoizedState=n.state,a&&js(t,r,!0),t.child}function bd(e){var t=e.stateNode;t.pendingContext?Ls(e,t.pendingContext,t.pendingContext!==t.context):t.context&&Ls(e,t.context,!1),du(e,t.containerInfo)}var wl={dehydrated:null,treeContext:null,retryLane:0};function bl(e){return{baseLanes:e,cachePool:null,transitions:null}}function Sd(e,t,r){var n=t.pendingProps,a=Se.current,i=!1,o=(t.flags&128)!==0,l;if((l=o)||(l=e!==null&&e.memoizedState===null?!1:(a&2)!==0),l?(i=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(a|=1),ye(Se,a&1),e===null)return e=t.memoizedState,e!==null&&e.dehydrated!==null?(t.mode&1?Jt()?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(o=n.children,e=n.fallback,i?(n=t.mode,i=t.child,o={mode:"hidden",children:o},!(n&1)&&i!==null?(i.childLanes=0,i.pendingProps=o):i=pa(o,n,0,null),e=_r(e,n,r,null),i.return=t,e.return=t,i.sibling=e,t.child=i,t.child.memoizedState=bl(r),t.memoizedState=wl,e):Cu(t,o));if(a=e.memoizedState,a!==null&&(l=a.dehydrated,l!==null))return dg(e,t,o,n,l,a,r);if(i){i=n.fallback,o=t.mode,a=e.child,l=a.sibling;var u={mode:"hidden",children:n.children};return!(o&1)&&t.child!==a?(n=t.child,n.childLanes=0,n.pendingProps=u,t.deletions=null):(n=nr(a,u),n.subtreeFlags=a.subtreeFlags&14680064),l!==null?i=nr(l,i):(i=_r(i,o,r,null),i.flags|=2),i.return=t,n.return=t,n.sibling=i,t.child=n,n=i,i=t.child,o=e.child.memoizedState,o=o===null?bl(r):{baseLanes:o.baseLanes|r,cachePool:null,transitions:o.transitions},i.memoizedState=o,i.childLanes=e.childLanes&~r,t.memoizedState=wl,n}return i=e.child,e=i.sibling,n=nr(i,{mode:"visible",children:n.children}),!(t.mode&1)&&(n.lanes=r),n.return=t,n.sibling=null,e!==null&&(r=t.deletions,r===null?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n}function Cu(e,t){return t=pa({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function si(e,t,r,n){return n!==null&&(Bt===null?Bt=[n]:Bt.push(n)),Yr(t,e.child,null,r),e=Cu(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function dg(e,t,r,n,a,i,o){if(r)return t.flags&256?(t.flags&=-257,i=lo(Error("There was an error while hydrating this Suspense boundary. Switched to client rendering.")),si(e,t,o,i)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(i=n.fallback,r=t.mode,n=pa({mode:"visible",children:n.children},r,0,null),i=_r(i,r,o,null),i.flags|=2,n.return=t,i.return=t,n.sibling=i,t.child=n,t.mode&1&&Yr(t,e.child,null,o),t.child.memoizedState=bl(o),t.memoizedState=wl,i);if(!(t.mode&1))return si(e,t,o,null);if(Jt())return i=Jt().digest,i=lo(Error("The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering."),i,void 0),si(e,t,o,i);if(r=(o&e.childLanes)!==0,tt||r){if(n=Ae,n!==null){switch(o&-o){case 4:r=2;break;case 16:r=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:r=32;break;case 536870912:r=268435456;break;default:r=0}r=r&(n.suspendedLanes|o)?0:r,r!==0&&r!==i.retryLane&&(i.retryLane=r,Kr(e,r),rr(n,e,r,-1))}return Ou(),i=lo(Error("This Suspense boundary received an update before it finished hydrating. This caused the boundary to switch to client rendering. The usual way to fix this is to wrap the original update in startTransition.")),si(e,t,o,i)}return Jt()?(t.flags|=128,t.child=e.child,Og.bind(null,e),Jt(),null):(e=Cu(t,n.children),e.flags|=4096,e)}function Qs(e,t,r){e.lanes|=t;var n=e.alternate;n!==null&&(n.lanes|=t),ml(e.return,t,r)}function uo(e,t,r,n,a){var i=e.memoizedState;i===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:n,tail:r,tailMode:a}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=n,i.tail=r,i.tailMode=a)}function Ed(e,t,r){var n=t.pendingProps,a=n.revealOrder,i=n.tail;if(Qe(e,t,n.children,r),n=Se.current,n&2)n=n&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Qs(e,r,t);else if(e.tag===19)Qs(e,r,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}n&=1}if(ye(Se,n),!(t.mode&1))t.memoizedState=null;else switch(a){case"forwards":for(r=t.child,a=null;r!==null;)e=r.alternate,e!==null&&Hi(e)===null&&(a=r),r=r.sibling;r=a,r===null?(a=t.child,t.child=null):(a=r.sibling,r.sibling=null),uo(t,!1,a,r,i);break;case"backwards":for(r=null,a=t.child,t.child=null;a!==null;){if(e=a.alternate,e!==null&&Hi(e)===null){t.child=a;break}e=a.sibling,a.sibling=r,r=a,a=e}uo(t,!0,r,null,i);break;case"together":uo(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Oi(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function qt(e,t,r){if(e!==null&&(t.dependencies=e.dependencies),Er|=t.lanes,!(r&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error("Resuming work not yet implemented.");if(t.child!==null){for(e=t.child,r=nr(e,e.pendingProps),t.child=r,r.return=t;e.sibling!==null;)e=e.sibling,r=r.sibling=nr(e,e.pendingProps),r.return=t;r.sibling=null}return t.child}function hg(e,t,r){switch(t.tag){case 3:bd(t);break;case 5:Gf(t);break;case 1:at(t.type)&&qi(t);break;case 4:du(t,t.stateNode.containerInfo);break;case 10:var n=t.type._context,a=t.memoizedProps.value;ye(Ui,n._currentValue2),n._currentValue2=a;break;case 13:if(n=t.memoizedState,n!==null)return n.dehydrated!==null?(ye(Se,Se.current&1),t.flags|=128,null):r&t.child.childLanes?Sd(e,t,r):(ye(Se,Se.current&1),e=qt(e,t,r),e!==null?e.sibling:null);ye(Se,Se.current&1);break;case 19:if(n=(r&t.childLanes)!==0,e.flags&128){if(n)return Ed(e,t,r);t.flags|=128}if(a=t.memoizedState,a!==null&&(a.rendering=null,a.tail=null,a.lastEffect=null),ye(Se,Se.current),n)break;return null;case 22:case 23:return t.lanes=0,_d(e,t,r)}return qt(e,t,r)}var Od,Sl,Pd,Td;Od=function(e,t){for(var r=t.child;r!==null;){if(r.tag===5||r.tag===6){var n=e,a=r.stateNode,i=n.children.indexOf(a);i!==-1&&n.children.splice(i,1),n.children.push(a)}else if(r.tag!==4&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break;for(;r.sibling===null;){if(r.return===null||r.return===t)return;r=r.return}r.sibling.return=r.return,r=r.sibling}};Sl=function(){};Pd=function(e,t,r,n){e.memoizedProps!==n&&(gr(kt.current),t.updateQueue=Km)&&(t.flags|=4)};Td=function(e,t,r,n){r!==n&&(t.flags|=4)};function gn(e,t){switch(e.tailMode){case"hidden":t=e.tail;for(var r=null;t!==null;)t.alternate!==null&&(r=t),t=t.sibling;r===null?e.tail=null:r.sibling=null;break;case"collapsed":r=e.tail;for(var n=null;r!==null;)r.alternate!==null&&(n=r),r=r.sibling;n===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:n.sibling=null}}function We(e){var t=e.alternate!==null&&e.alternate.child===e.child,r=0,n=0;if(t)for(var a=e.child;a!==null;)r|=a.lanes|a.childLanes,n|=a.subtreeFlags&14680064,n|=a.flags&14680064,a.return=e,a=a.sibling;else for(a=e.child;a!==null;)r|=a.lanes|a.childLanes,n|=a.subtreeFlags,n|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=n,e.childLanes=r,t}function pg(e,t,r){var n=t.pendingProps;switch(ou(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return We(t),null;case 1:return at(t.type)&&zi(),We(t),null;case 3:return r=t.stateNode,Qr(),_e(it),_e(Ve),pu(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),e!==null&&e.child!==null||e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Bt!==null&&(Dl(Bt),Bt=null)),Sl(e,t),We(t),null;case 5:hu(t),r=gr(Rn.current);var a=t.type;if(e!==null&&t.stateNode!=null)Pd(e,t,a,n,r),e.ref!==t.ref&&(t.flags|=512);else{if(!n){if(t.stateNode===null)throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");return We(t),null}gr(kt.current),e={type:a,props:n,isHidden:!1,children:[],internalInstanceHandle:t,rootContainerInstance:r,tag:"INSTANCE"},Od(e,t,!1,!1),t.stateNode=e,t.ref!==null&&(t.flags|=512)}return We(t),null;case 6:if(e&&t.stateNode!=null)Td(e,t,e.memoizedProps,n);else{if(typeof n!="string"&&t.stateNode===null)throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");gr(Rn.current),gr(kt.current),t.stateNode={text:n,isHidden:!1,tag:"TEXT"}}return We(t),null;case 13:if(_e(Se),n=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(n!==null&&n.dehydrated!==null){if(e===null)throw Error("A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React.");!(t.flags&128)&&(t.memoizedState=null),t.flags|=4,We(t),a=!1}else Bt!==null&&(Dl(Bt),Bt=null),a=!0;if(!a)return t.flags&65536?t:null}return t.flags&128?(t.lanes=r,t):(r=n!==null,r!==(e!==null&&e.memoizedState!==null)&&r&&(t.child.flags|=8192,t.mode&1&&(e===null||Se.current&1?Re===0&&(Re=3):Ou())),t.updateQueue!==null&&(t.flags|=4),We(t),null);case 4:return Qr(),Sl(e,t),We(t),null;case 10:return su(t.type._context),We(t),null;case 17:return at(t.type)&&zi(),We(t),null;case 19:if(_e(Se),a=t.memoizedState,a===null)return We(t),null;n=(t.flags&128)!==0;var i=a.rendering;if(i===null)if(n)gn(a,!1);else{if(Re!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(i=Hi(e),i!==null){for(t.flags|=128,gn(a,!1),e=i.updateQueue,e!==null&&(t.updateQueue=e,t.flags|=4),t.subtreeFlags=0,e=r,r=t.child;r!==null;)n=r,a=e,n.flags&=14680066,i=n.alternate,i===null?(n.childLanes=0,n.lanes=a,n.child=null,n.subtreeFlags=0,n.memoizedProps=null,n.memoizedState=null,n.updateQueue=null,n.dependencies=null,n.stateNode=null):(n.childLanes=i.childLanes,n.lanes=i.lanes,n.child=i.child,n.subtreeFlags=0,n.deletions=null,n.memoizedProps=i.memoizedProps,n.memoizedState=i.memoizedState,n.updateQueue=i.updateQueue,n.type=i.type,a=i.dependencies,n.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext}),r=r.sibling;return ye(Se,Se.current&1|2),t.child}e=e.sibling}a.tail!==null&&Me()>An&&(t.flags|=128,n=!0,gn(a,!1),t.lanes=4194304)}else{if(!n)if(e=Hi(i),e!==null){if(t.flags|=128,n=!0,e=e.updateQueue,e!==null&&(t.updateQueue=e,t.flags|=4),gn(a,!0),a.tail===null&&a.tailMode==="hidden"&&!i.alternate)return We(t),null}else 2*Me()-a.renderingStartTime>An&&r!==1073741824&&(t.flags|=128,n=!0,gn(a,!1),t.lanes=4194304);a.isBackwards?(i.sibling=t.child,t.child=i):(e=a.last,e!==null?e.sibling=i:t.child=i,a.last=i)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=Me(),t.sibling=null,e=Se.current,ye(Se,n?e&1|2:e&1),t):(We(t),null);case 22:case 23:return Eu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?lt&1073741824&&(We(t),t.subtreeFlags&6&&(t.flags|=8192)):We(t),null;case 24:return null;case 25:return null}throw Error("Unknown unit of work tag ("+t.tag+"). This error is likely caused by a bug in React. Please file an issue.")}function vg(e,t){switch(ou(t),t.tag){case 1:return at(t.type)&&zi(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Qr(),_e(it),_e(Ve),pu(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return hu(t),null;case 13:if(_e(Se),e=t.memoizedState,e!==null&&e.dehydrated!==null&&t.alternate===null)throw Error("Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue.");return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return _e(Se),null;case 4:return Qr(),null;case 10:return su(t.type._context),null;case 22:case 23:return Eu(),null;case 24:return null;default:return null}}var mg=typeof WeakSet=="function"?WeakSet:Set,te=null;function Qi(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){Je(e,t,n)}else r.current=null}function El(e,t,r){try{r()}catch(n){Je(e,t,n)}}var Gs=!1;function gg(e,t){for(te=t;te!==null;)if(e=te,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,te=t;else for(;te!==null;){e=te;try{var r=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(r!==null){var n=r.memoizedProps,a=r.memoizedState,i=e.stateNode,o=i.getSnapshotBeforeUpdate(e.elementType===e.type?n:xt(e.type,n),a);i.__reactInternalSnapshotBeforeUpdate=o}break;case 3:e.stateNode.containerInfo.children.splice(0);break;case 5:case 6:case 4:case 17:break;default:throw Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.")}}catch(l){Je(e,e.return,l)}if(t=e.sibling,t!==null){t.return=e.return,te=t;break}te=e.return}return r=Gs,Gs=!1,r}function Gi(e,t,r){var n=t.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var a=n=n.next;do{if((a.tag&e)===e){var i=a.destroy;a.destroy=void 0,i!==void 0&&El(t,r,i)}a=a.next}while(a!==n)}}function _u(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var n=r.create;r.destroy=n()}r=r.next}while(r!==t)}}function Nd(e){var t=e.alternate;t!==null&&(e.alternate=null,Nd(t)),e.child=null,e.deletions=null,e.sibling=null,e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Id(e){return e.tag===5||e.tag===3||e.tag===4}function Js(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Id(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ol(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?Vf(r,e,t):Xf(r,e);else if(n!==4&&(e=e.child,e!==null))for(Ol(e,t,r),e=e.sibling;e!==null;)Ol(e,t,r),e=e.sibling}function Pl(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?Vf(r,e,t):Xf(r,e);else if(n!==4&&(e=e.child,e!==null))for(Pl(e,t,r),e=e.sibling;e!==null;)Pl(e,t,r),e=e.sibling}var Ke=null;function pr(e,t,r){for(r=r.child;r!==null;)Dd(e,t,r),r=r.sibling}function Dd(e,t,r){if(Rt&&typeof Rt.onCommitFiberUnmount=="function")try{Rt.onCommitFiberUnmount(ua,r)}catch{}switch(r.tag){case 5:Qi(r,t);case 6:var n=Ke;Ke=null,pr(e,t,r),Ke=n,Ke!==null&&(e=Ke,r=e.children.indexOf(r.stateNode),e.children.splice(r,1));break;case 18:Ke!==null&&Jt(Ke,r.stateNode);break;case 4:n=Ke,Ke=r.stateNode.containerInfo,pr(e,t,r),Ke=n;break;case 0:case 11:case 14:case 15:if(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null)){var a=n=n.next;do{var i=a,o=i.destroy;i=i.tag,o!==void 0&&(i&2||i&4)&&El(r,t,o),a=a.next}while(a!==n)}pr(e,t,r);break;case 1:if(Qi(r,t),n=r.stateNode,typeof n.componentWillUnmount=="function")try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(l){Je(r,t,l)}pr(e,t,r);break;case 21:pr(e,t,r);break;case 22:pr(e,t,r);break;default:pr(e,t,r)}}function Zs(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new mg),t.forEach(function(n){var a=Pg.bind(null,e,n);r.has(n)||(r.add(n),n.then(a,a))})}}function Tt(e,t){var r=t.deletions;if(r!==null)for(var n=0;na&&(a=o),n&=~i}if(n=a,n=Me()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*xg(n/1960))-n,10e?16:e,Zt===null)var n=!1;else{if(e=Zt,Zt=null,ea=0,fe&6)throw Error("Cannot flush passive effects while already rendering.");var a=fe;for(fe|=4,te=e.current;te!==null;){var i=te,o=i.child;if(te.flags&16){var l=i.deletions;if(l!==null){for(var u=0;uMe()-Su?Cr(e,0):bu|=r),pt(e,t)}function Fd(e,t){t===0&&(e.mode&1?(t=ii,ii<<=1,!(ii&130023424)&&(ii=4194304)):t=1);var r=_t();e=Kr(e,t),e!==null&&(sa(e,t,r),pt(e,r))}function Og(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),Fd(e,r)}function Pg(e,t){var r=0;switch(e.tag){case 13:var n=e.stateNode,a=e.memoizedState;a!==null&&(r=a.retryLane);break;case 19:n=e.stateNode;break;default:throw Error("Pinged unknown suspense boundary type. This is probably a bug in React.")}n!==null&&n.delete(t),Fd(e,r)}var $d;$d=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||it.current)tt=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return tt=!1,hg(e,t,r);tt=!!(e.flags&131072)}else tt=!1;switch(t.lanes=0,t.tag){case 2:var n=t.type;Oi(e,t),e=t.pendingProps;var a=Hr(t,Ve.current);if(Wr(t,r),a=mu(null,t,n,e,a,r),t.flags|=1,typeof a=="object"&&a!==null&&typeof a.render=="function"&&a.$$typeof===void 0){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,at(n)){var i=!0;qi(t)}else i=!1;t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,fu(t),a.updater=da,t.stateNode=a,a._reactInternals=t,yl(t,n,e,r),t=_l(null,t,n,!0,i,r)}else t.tag=0,Qe(null,t,a,r),t=t.child;return t;case 16:n=t.elementType;e:{switch(Oi(e,t),e=t.pendingProps,a=n._init,n=a(n._payload),t.type=n,a=t.tag=Ng(n),e=xt(n,e),a){case 0:t=Cl(null,t,n,e,r);break e;case 1:t=Ks(null,t,n,e,r);break e;case 11:t=Hs(null,t,n,e,r);break e;case 14:t=Ys(null,t,n,xt(n.type,e),r);break e}throw Error("Element type is invalid. Received a promise that resolves to: "+n+". Lazy element type must resolve to a class or function.")}return t;case 0:return n=t.type,a=t.pendingProps,a=t.elementType===n?a:xt(n,a),Cl(e,t,n,a,r);case 1:return n=t.type,a=t.pendingProps,a=t.elementType===n?a:xt(n,a),Ks(e,t,n,a,r);case 3:if(bd(t),e===null)throw Error("Should have a current fiber. This is a bug in React.");return a=t.pendingProps,n=t.memoizedState.element,Qf(e,t),Vi(t,a,null,r),a=t.memoizedState.element,a===n?t=qt(e,t,r):(Qe(e,t,a,r),t=t.child),t;case 5:return Gf(t),n=t.pendingProps.children,wd(e,t),Qe(e,t,n,r),t.child;case 6:return null;case 13:return Sd(e,t,r);case 4:return du(t,t.stateNode.containerInfo),n=t.pendingProps,e===null?t.child=Yr(t,null,n,r):Qe(e,t,n,r),t.child;case 11:return n=t.type,a=t.pendingProps,a=t.elementType===n?a:xt(n,a),Hs(e,t,n,a,r);case 7:return Qe(e,t,t.pendingProps,r),t.child;case 8:return Qe(e,t,t.pendingProps.children,r),t.child;case 12:return Qe(e,t,t.pendingProps.children,r),t.child;case 10:e:{n=t.type._context,a=t.pendingProps,i=t.memoizedProps;var o=a.value;if(ye(Ui,n._currentValue2),n._currentValue2=o,i!==null)if(wt(i.value,o)){if(i.children===a.children&&!it.current){t=qt(e,t,r);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var l=i.dependencies;if(l!==null){o=i.child;for(var u=l.firstContext;u!==null;){if(u.context===n){if(i.tag===1){u=er(-1,r&-r),u.tag=2;var s=i.updateQueue;if(s!==null){s=s.shared;var c=s.pending;c===null?u.next=u:(u.next=c.next,c.next=u),s.pending=u}}i.lanes|=r,u=i.alternate,u!==null&&(u.lanes|=r),ml(i.return,r,t),l.lanes|=r;break}u=u.next}}else if(i.tag===10)o=i.type===t.type?null:i.child;else if(i.tag===18){if(o=i.return,o===null)throw Error("We just came from a parent so we must have had a parent. This is a bug in React.");o.lanes|=r,l=o.alternate,l!==null&&(l.lanes|=r),ml(o,r,t),o=i.sibling}else o=i.child;if(o!==null)o.return=i;else for(o=i;o!==null;){if(o===t){o=null;break}if(i=o.sibling,i!==null){i.return=o.return,o=i;break}o=o.return}i=o}Qe(e,t,a.children,r),t=t.child}return t;case 9:return a=t.type,n=t.pendingProps.children,Wr(t,r),a=vt(a),n=n(a),t.flags|=1,Qe(e,t,n,r),t.child;case 14:return n=t.type,a=xt(n,t.pendingProps),a=xt(n.type,a),Ys(e,t,n,a,r);case 15:return Cd(e,t,t.type,t.pendingProps,r);case 17:return n=t.type,a=t.pendingProps,a=t.elementType===n?a:xt(n,a),Oi(e,t),t.tag=1,at(n)?(e=!0,qi(t)):e=!1,Wr(t,r),gd(t,n,a),yl(t,n,a,r),_l(null,t,n,!0,e,r);case 19:return Ed(e,t,r);case 22:return _d(e,t,r)}throw Error("Unknown unit of work tag ("+t.tag+"). This error is likely caused by a bug in React. Please file an issue.")};function Bd(e,t){return au(e,t)}function Tg(e,t,r,n){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Mt(e,t,r,n){return new Tg(e,t,r,n)}function Pu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Ng(e){if(typeof e=="function")return Pu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===nu)return 11;if(e===iu)return 14}return 2}function nr(e,t){var r=e.alternate;return r===null?(r=Mt(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function Ni(e,t,r,n,a,i){var o=2;if(n=e,typeof e=="function")Pu(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case Fr:return _r(r.children,a,i,t);case ru:o=8,a|=8;break;case ul:return e=Mt(12,r,t,a|2),e.elementType=ul,e.lanes=i,e;case sl:return e=Mt(13,r,t,a),e.elementType=sl,e.lanes=i,e;case cl:return e=Mt(19,r,t,a),e.elementType=cl,e.lanes=i,e;case $f:return pa(r,a,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Af:o=10;break e;case Ff:o=9;break e;case nu:o=11;break e;case iu:o=14;break e;case Yt:o=16,n=null;break e}throw Error("Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: "+((e==null?e:typeof e)+"."))}return t=Mt(o,r,t,a),t.elementType=e,t.type=n,t.lanes=i,t}function _r(e,t,r,n){return e=Mt(7,e,n,t),e.lanes=r,e}function pa(e,t,r,n){return e=Mt(22,e,n,t),e.elementType=$f,e.lanes=r,e.stateNode={isHidden:!1},e}function so(e,t,r){return e=Mt(6,e,null,t),e.lanes=r,e}function co(e,t,r){return t=Mt(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ig(e,t,r,n,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ga(0),this.expirationTimes=Ga(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ga(0),this.identifierPrefix=n,this.onRecoverableError=a}function Dg(e,t,r,n,a,i,o){return e=new Ig(e,t,!1,i,o),t===1?(t=1,n===!0&&(t|=8)):t=0,n=Mt(3,null,null,t),e.current=n,n.stateNode=e,n.memoizedState={element:null,isDehydrated:!1,cache:null,transitions:null,pendingSuspenseBoundaries:null},fu(n),e}function fo(e,t,r,n){var a=t.current,i=_t(),o=Ur(a);e:if(r){r=r._reactInternals;t:{if(la(r)!==r||r.tag!==1)throw Error("Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.");var l=r;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(at(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(l!==null);throw Error("Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.")}if(r.tag===1){var u=r.type;if(at(u)){r=Hf(r,u,l);break e}}r=l}else r=ar;return t.context===null?t.context=r:t.pendingContext=r,t=er(i,o),t.payload={element:e},n=n===void 0?null:n,n!==null&&(t.callback=n),e=xr(a,t,o),e!==null&&(rr(e,a,o,i),bi(e,a,o)),o}function Mg(){return null}var Rg=Lf.unstable_act,kg={createNodeMock:function(){return null}};function Ii(e){if(e.isHidden)return null;switch(e.tag){case"TEXT":return e.text;case"INSTANCE":var t=e.props,r=["children"];if(t==null)t={};else{var n={},a=Object.keys(t),i;for(i=0;iRl(r).length)break;return Tu(r)}r=r.return}return null}},{key:"children",get:function(){return Rl(this._currentFiber())}}]),e}();function Di(e,t,r){var n=r?r.deep:!0,a=[];return t(e)&&(a.push(e),!n)||e.children.forEach(function(i){typeof i!="string"&&a.push.apply(a,Di(i,t,r))}),a}function ho(e,t){if(e.length===1)return e[0];throw Error((e.length===0?"No instances found ":"Expected 1 but found "+e.length+" instances ")+t)}function jg(e){console.error(e)}var po=new WeakMap;function Tu(e){var t=po.get(e);return t===void 0&&e.alternate!==null&&(t=po.get(e.alternate)),t===void 0&&(t=new Lg(e),po.set(e,t)),t}var xn={findFiberByHostInstance:function(){throw Error("TestRenderer does not support findFiberByHostInstance()")},bundleType:0,version:"18.3.1",rendererPackageName:"react-test-renderer"},Ag={bundleType:xn.bundleType,version:xn.version,rendererPackageName:xn.rendererPackageName,rendererConfig:xn.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:or.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=Bf(e),e=e!==null?zf(e):null,e===null?null:e.stateNode},findFiberByHostInstance:xn.findFiberByHostInstance||Mg,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var fi=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!fi.isDisabled&&fi.supportsFiber)try{ua=fi.inject(Ag),Rt=fi}catch{}}Fn._Scheduler=jf;Fn.act=Rg;Fn.create=function(e,t){var r=kg.createNodeMock,n=!1,a=!1;typeof t=="object"&&t!==null&&(typeof t.createNodeMock=="function"&&(r=t.createNodeMock),t.unstable_isConcurrent===!0&&(n=!0),t.unstable_strictMode===!0&&(a=!0));var i={children:[],createNodeMock:r,tag:"CONTAINER"},o=Dg(i,n?1:0,null,a,null,"",jg);if(o==null)throw Error("something went wrong");return fo(e,o,null,null),e={_Scheduler:jf,root:void 0,toJSON:function(){if(o==null||o.current==null||i==null||i.children.length===0)return null;if(i.children.length===1)return Ii(i.children[0]);if(i.children.length===2&&i.children[0].isHidden===!0&&i.children[1].isHidden===!1)return Ii(i.children[1]);var l=null;if(i.children&&i.children.length)for(var u=0;u":"attribute: {"+n+"}, parent: <"+this.parent.name+">"}isEqualNode(n){return!(n.namespaceURI!==this.namespaceURI||n.prefix!==this.prefix||n.localName!==this.localName||n.value!==this.value)}}return Object.defineProperty(t.prototype,"nodeType",{get:function(){return this.type}}),Object.defineProperty(t.prototype,"ownerElement",{get:function(){return this.parent}}),Object.defineProperty(t.prototype,"textContent",{get:function(){return this.value},set:function(r){return this.value=r||""}}),Object.defineProperty(t.prototype,"namespaceURI",{get:function(){return""}}),Object.defineProperty(t.prototype,"prefix",{get:function(){return""}}),Object.defineProperty(t.prototype,"localName",{get:function(){return this.name}}),Object.defineProperty(t.prototype,"specified",{get:function(){return!0}}),t}.call(this)}.call(le)),bo.exports}var So={exports:{}},sc;function Nu(){return sc||(sc=1,function(){So.exports=function(){class e{constructor(r){this.nodes=r}clone(){return this.nodes=null}getNamedItem(r){return this.nodes[r]}setNamedItem(r){var n;return n=this.nodes[r.nodeName],this.nodes[r.nodeName]=r,n||null}removeNamedItem(r){var n;return n=this.nodes[r],delete this.nodes[r],n||null}item(r){return this.nodes[Object.keys(this.nodes)[r]]||null}getNamedItemNS(r,n){throw new Error("This DOM method is not implemented.")}setNamedItemNS(r){throw new Error("This DOM method is not implemented.")}removeNamedItemNS(r,n){throw new Error("This DOM method is not implemented.")}}return Object.defineProperty(e.prototype,"length",{get:function(){return Object.keys(this.nodes).length||0}}),e}.call(this)}.call(le)),So.exports}var cc;function Iu(){return cc||(cc=1,function(){var e,t,r,n,a,i,o,l={}.hasOwnProperty;({isObject:o,isFunction:i,getValue:a}=Xt()),n=gt(),e=Ne(),t=Ud(),r=Nu(),_o.exports=function(){class u extends n{constructor(c,d,h){var E,S,M,T;if(super(c),d==null)throw new Error("Missing element name. "+this.debugInfo());if(this.name=this.stringify.name(d),this.type=e.Element,this.attribs={},this.schemaTypeInfo=null,h!=null&&this.attribute(h),c.type===e.Document&&(this.isRoot=!0,this.documentObject=c,c.rootObject=this,c.children)){for(T=c.children,S=0,M=T.length;S=E;d=0<=E?++h:--h)if(!this.attribs[d].isEqualNode(c.attribs[d]))return!1;return!0}}return Object.defineProperty(u.prototype,"tagName",{get:function(){return this.name}}),Object.defineProperty(u.prototype,"namespaceURI",{get:function(){return""}}),Object.defineProperty(u.prototype,"prefix",{get:function(){return""}}),Object.defineProperty(u.prototype,"localName",{get:function(){return this.name}}),Object.defineProperty(u.prototype,"id",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(u.prototype,"className",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(u.prototype,"classList",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(u.prototype,"attributes",{get:function(){return(!this.attributeMap||!this.attributeMap.nodes)&&(this.attributeMap=new r(this.attribs)),this.attributeMap}}),u}.call(this)}.call(le)),_o.exports}var Eo={exports:{}},Oo={exports:{}},fc;function va(){return fc||(fc=1,function(){var e;e=gt(),Oo.exports=function(){class t extends e{constructor(n){super(n),this.value=""}clone(){return Object.create(this)}substringData(n,a){throw new Error("This DOM method is not implemented."+this.debugInfo())}appendData(n){throw new Error("This DOM method is not implemented."+this.debugInfo())}insertData(n,a){throw new Error("This DOM method is not implemented."+this.debugInfo())}deleteData(n,a){throw new Error("This DOM method is not implemented."+this.debugInfo())}replaceData(n,a,i){throw new Error("This DOM method is not implemented."+this.debugInfo())}isEqualNode(n){return!(!super.isEqualNode(n)||n.data!==this.data)}}return Object.defineProperty(t.prototype,"data",{get:function(){return this.value},set:function(r){return this.value=r||""}}),Object.defineProperty(t.prototype,"length",{get:function(){return this.value.length}}),Object.defineProperty(t.prototype,"textContent",{get:function(){return this.value},set:function(r){return this.value=r||""}}),t}.call(this)}.call(le)),Oo.exports}var dc;function Du(){return dc||(dc=1,function(){var e,t;e=Ne(),t=va(),Eo.exports=class extends t{constructor(n,a){if(super(n),a==null)throw new Error("Missing CDATA text. "+this.debugInfo());this.name="#cdata-section",this.type=e.CData,this.value=this.stringify.cdata(a)}clone(){return Object.create(this)}toString(n){return this.options.writer.cdata(this,this.options.writer.filterOptions(n))}}}.call(le)),Eo.exports}var Po={exports:{}},hc;function Mu(){return hc||(hc=1,function(){var e,t;e=Ne(),t=va(),Po.exports=class extends t{constructor(n,a){if(super(n),a==null)throw new Error("Missing comment text. "+this.debugInfo());this.name="#comment",this.type=e.Comment,this.value=this.stringify.comment(a)}clone(){return Object.create(this)}toString(n){return this.options.writer.comment(this,this.options.writer.filterOptions(n))}}}.call(le)),Po.exports}var To={exports:{}},pc;function Ru(){return pc||(pc=1,function(){var e,t,r;({isObject:r}=Xt()),t=gt(),e=Ne(),To.exports=class extends t{constructor(a,i,o,l){super(a),r(i)&&({version:i,encoding:o,standalone:l}=i),i||(i="1.0"),this.type=e.Declaration,this.version=this.stringify.xmlVersion(i),o!=null&&(this.encoding=this.stringify.xmlEncoding(o)),l!=null&&(this.standalone=this.stringify.xmlStandalone(l))}toString(a){return this.options.writer.declaration(this,this.options.writer.filterOptions(a))}}}.call(le)),To.exports}var No={exports:{}},Io={exports:{}},vc;function ku(){return vc||(vc=1,function(){var e,t;t=gt(),e=Ne(),Io.exports=class extends t{constructor(n,a,i,o,l,u){if(super(n),a==null)throw new Error("Missing DTD element name. "+this.debugInfo());if(i==null)throw new Error("Missing DTD attribute name. "+this.debugInfo(a));if(!o)throw new Error("Missing DTD attribute type. "+this.debugInfo(a));if(!l)throw new Error("Missing DTD attribute default. "+this.debugInfo(a));if(l.indexOf("#")!==0&&(l="#"+l),!l.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/))throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. "+this.debugInfo(a));if(u&&!l.match(/^(#FIXED|#DEFAULT)$/))throw new Error("Default value only applies to #FIXED or #DEFAULT. "+this.debugInfo(a));this.elementName=this.stringify.name(a),this.type=e.AttributeDeclaration,this.attributeName=this.stringify.name(i),this.attributeType=this.stringify.dtdAttType(o),u&&(this.defaultValue=this.stringify.dtdAttDefault(u)),this.defaultValueType=l}toString(n){return this.options.writer.dtdAttList(this,this.options.writer.filterOptions(n))}}}.call(le)),Io.exports}var Do={exports:{}},mc;function Lu(){return mc||(mc=1,function(){var e,t,r;({isObject:r}=Xt()),t=gt(),e=Ne(),Do.exports=function(){class n extends t{constructor(i,o,l,u){if(super(i),l==null)throw new Error("Missing DTD entity name. "+this.debugInfo(l));if(u==null)throw new Error("Missing DTD entity value. "+this.debugInfo(l));if(this.pe=!!o,this.name=this.stringify.name(l),this.type=e.EntityDeclaration,!r(u))this.value=this.stringify.dtdEntityValue(u),this.internal=!0;else{if(!u.pubID&&!u.sysID)throw new Error("Public and/or system identifiers are required for an external entity. "+this.debugInfo(l));if(u.pubID&&!u.sysID)throw new Error("System identifier is required for a public external entity. "+this.debugInfo(l));if(this.internal=!1,u.pubID!=null&&(this.pubID=this.stringify.dtdPubID(u.pubID)),u.sysID!=null&&(this.sysID=this.stringify.dtdSysID(u.sysID)),u.nData!=null&&(this.nData=this.stringify.dtdNData(u.nData)),this.pe&&this.nData)throw new Error("Notation declaration is not allowed in a parameter entity. "+this.debugInfo(l))}}toString(i){return this.options.writer.dtdEntity(this,this.options.writer.filterOptions(i))}}return Object.defineProperty(n.prototype,"publicId",{get:function(){return this.pubID}}),Object.defineProperty(n.prototype,"systemId",{get:function(){return this.sysID}}),Object.defineProperty(n.prototype,"notationName",{get:function(){return this.nData||null}}),Object.defineProperty(n.prototype,"inputEncoding",{get:function(){return null}}),Object.defineProperty(n.prototype,"xmlEncoding",{get:function(){return null}}),Object.defineProperty(n.prototype,"xmlVersion",{get:function(){return null}}),n}.call(this)}.call(le)),Do.exports}var Mo={exports:{}},gc;function ju(){return gc||(gc=1,function(){var e,t;t=gt(),e=Ne(),Mo.exports=class extends t{constructor(n,a,i){if(super(n),a==null)throw new Error("Missing DTD element name. "+this.debugInfo());i||(i="(#PCDATA)"),Array.isArray(i)&&(i="("+i.join(",")+")"),this.name=this.stringify.name(a),this.type=e.ElementDeclaration,this.value=this.stringify.dtdElementValue(i)}toString(n){return this.options.writer.dtdElement(this,this.options.writer.filterOptions(n))}}}.call(le)),Mo.exports}var Ro={exports:{}},yc;function Au(){return yc||(yc=1,function(){var e,t;t=gt(),e=Ne(),Ro.exports=function(){class r extends t{constructor(a,i,o){if(super(a),i==null)throw new Error("Missing DTD notation name. "+this.debugInfo(i));if(!o.pubID&&!o.sysID)throw new Error("Public or system identifiers are required for an external entity. "+this.debugInfo(i));this.name=this.stringify.name(i),this.type=e.NotationDeclaration,o.pubID!=null&&(this.pubID=this.stringify.dtdPubID(o.pubID)),o.sysID!=null&&(this.sysID=this.stringify.dtdSysID(o.sysID))}toString(a){return this.options.writer.dtdNotation(this,this.options.writer.filterOptions(a))}}return Object.defineProperty(r.prototype,"publicId",{get:function(){return this.pubID}}),Object.defineProperty(r.prototype,"systemId",{get:function(){return this.sysID}}),r}.call(this)}.call(le)),Ro.exports}var xc;function Fu(){return xc||(xc=1,function(){var e,t,r,n,a,i,o,l;({isObject:l}=Xt()),o=gt(),e=Ne(),t=ku(),n=Lu(),r=ju(),a=Au(),i=Nu(),No.exports=function(){class u extends o{constructor(c,d,h){var E,S,M,T;if(super(c),this.type=e.DocType,c.children){for(T=c.children,S=0,M=T.length;S":(C=this.parent)!=null&&C.name?"node: <"+f+">, parent: <"+this.parent.name+">":"node: <"+f+">"}ele(f,p,C){return this.element(f,p,C)}nod(f,p,C){return this.node(f,p,C)}txt(f){return this.text(f)}dat(f){return this.cdata(f)}com(f){return this.comment(f)}ins(f,p){return this.instruction(f,p)}doc(){return this.document()}dec(f,p,C){return this.declaration(f,p,C)}e(f,p,C){return this.element(f,p,C)}n(f,p,C){return this.node(f,p,C)}t(f){return this.text(f)}d(f){return this.cdata(f)}c(f){return this.comment(f)}r(f){return this.raw(f)}i(f,p){return this.instruction(f,p)}u(){return this.up()}importXMLBuilder(f){return this.importDocument(f)}attribute(f,p){throw new Error("attribute() applies to element nodes only.")}att(f,p){return this.attribute(f,p)}a(f,p){return this.attribute(f,p)}removeAttribute(f){throw new Error("attribute() applies to element nodes only.")}replaceChild(f,p){throw new Error("This DOM method is not implemented."+this.debugInfo())}removeChild(f){throw new Error("This DOM method is not implemented."+this.debugInfo())}appendChild(f){throw new Error("This DOM method is not implemented."+this.debugInfo())}hasChildNodes(){return this.children.length!==0}cloneNode(f){throw new Error("This DOM method is not implemented."+this.debugInfo())}normalize(){throw new Error("This DOM method is not implemented."+this.debugInfo())}isSupported(f,p){return!0}hasAttributes(){return this.attribs.length!==0}compareDocumentPosition(f){var p,C;return p=this,p===f?0:this.document()!==f.document()?(C=e.Disconnected|e.ImplementationSpecific,Math.random()<.5?C|=e.Preceding:C|=e.Following,C):p.isAncestor(f)?e.Contains|e.Preceding:p.isDescendant(f)?e.Contains|e.Following:p.isPreceding(f)?e.Preceding:e.Following}isSameNode(f){throw new Error("This DOM method is not implemented."+this.debugInfo())}lookupPrefix(f){throw new Error("This DOM method is not implemented."+this.debugInfo())}isDefaultNamespace(f){throw new Error("This DOM method is not implemented."+this.debugInfo())}lookupNamespaceURI(f){throw new Error("This DOM method is not implemented."+this.debugInfo())}isEqualNode(f){var p,C,b;if(f.nodeType!==this.nodeType||f.children.length!==this.children.length)return!1;for(p=C=0,b=this.children.length-1;0<=b?C<=b:C>=b;p=0<=b?++C:--C)if(!this.children[p].isEqualNode(f.children[p]))return!1;return!0}getFeature(f,p){throw new Error("This DOM method is not implemented."+this.debugInfo())}setUserData(f,p,C){throw new Error("This DOM method is not implemented."+this.debugInfo())}getUserData(f){throw new Error("This DOM method is not implemented."+this.debugInfo())}contains(f){return f?f===this||this.isDescendant(f):!1}isDescendant(f){var p,C,b,v,y;for(y=this.children,b=0,v=y.length;bC}treePosition(f){var p,C;return C=0,p=!1,this.foreachTreeNode(this.document(),function(b){if(C++,!p&&b===f)return p=!0}),p?C:-1}foreachTreeNode(f,p){var C,b,v,y,O;for(f||(f=this.document()),y=f.children,b=0,v=y.length;b","]]]]>"),this.assertLegalChar(n))}comment(n){if(this.options.noValidation)return n;if(n=""+n||"",n.match(/--/))throw new Error("Comment text cannot contain double-hypen: "+n);return this.assertLegalChar(n)}raw(n){return this.options.noValidation?n:""+n||""}attValue(n){return this.options.noValidation?n:this.assertLegalChar(this.attEscape(n=""+n||""))}insTarget(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}insValue(n){if(this.options.noValidation)return n;if(n=""+n||"",n.match(/\?>/))throw new Error("Invalid processing instruction value: "+n);return this.assertLegalChar(n)}xmlVersion(n){if(this.options.noValidation)return n;if(n=""+n||"",!n.match(/1\.[0-9]+/))throw new Error("Invalid version number: "+n);return n}xmlEncoding(n){if(this.options.noValidation)return n;if(n=""+n||"",!n.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/))throw new Error("Invalid encoding: "+n);return this.assertLegalChar(n)}xmlStandalone(n){return this.options.noValidation?n:n?"yes":"no"}dtdPubID(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdSysID(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdElementValue(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdAttType(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdAttDefault(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdEntityValue(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}dtdNData(n){return this.options.noValidation?n:this.assertLegalChar(""+n||"")}assertLegalChar(n){var a,i;if(this.options.noValidation)return n;if(this.options.version==="1.0"){if(a=/[\0-\x08\x0B\f\x0E-\x1F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,this.options.invalidCharReplacement!==void 0)n=n.replace(a,this.options.invalidCharReplacement);else if(i=n.match(a))throw new Error(`Invalid character in string: ${n} at index ${i.index}`)}else if(this.options.version==="1.1"){if(a=/[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,this.options.invalidCharReplacement!==void 0)n=n.replace(a,this.options.invalidCharReplacement);else if(i=n.match(a))throw new Error(`Invalid character in string: ${n} at index ${i.index}`)}return n}assertLegalName(n){var a;if(this.options.noValidation)return n;if(n=this.assertLegalChar(n),a=/^([:A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])([\x2D\.0-:A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])*$/,!n.match(a))throw new Error(`Invalid character in name: ${n}`);return n}textEscape(n){var a;return this.options.noValidation?n:(a=this.options.noDoubleEncoding?/(?!&(lt|gt|amp|apos|quot);)&/g:/&/g,n.replace(a,"&").replace(//g,">").replace(/\r/g," "))}attEscape(n){var a;return this.options.noValidation?n:(a=this.options.noDoubleEncoding?/(?!&(lt|gt|amp|apos|quot);)&/g:/&/g,n.replace(a,"&").replace(/0)?new Array(u).join(o.indent):""}endline(i,o,l){return!o.pretty||o.suppressPrettyCount?"":o.newline}attribute(i,o,l){var u;return this.openAttribute(i,o,l),o.pretty&&o.width>0?u=i.name+'="'+i.value+'"':u=" "+i.name+'="'+i.value+'"',this.closeAttribute(i,o,l),u}cdata(i,o,l){var u;return this.openNode(i,o,l),o.state=t.OpenTag,u=this.indent(i,o,l)+""+this.endline(i,o,l),o.state=t.None,this.closeNode(i,o,l),u}comment(i,o,l){var u;return this.openNode(i,o,l),o.state=t.OpenTag,u=this.indent(i,o,l)+""+this.endline(i,o,l),o.state=t.None,this.closeNode(i,o,l),u}declaration(i,o,l){var u;return this.openNode(i,o,l),o.state=t.OpenTag,u=this.indent(i,o,l)+"",u+=this.endline(i,o,l),o.state=t.None,this.closeNode(i,o,l),u}docType(i,o,l){var u,s,c,d,h;if(l||(l=0),this.openNode(i,o,l),o.state=t.OpenTag,d=this.indent(i,o,l),d+="0){for(d+=" [",d+=this.endline(i,o,l),o.state=t.InsideTag,h=i.children,s=0,c=h.length;s",d+=this.endline(i,o,l),o.state=t.None,this.closeNode(i,o,l),d}element(i,o,l){var u,s,c,d,h,E,S,M,T,_,g,x,f,p,C,b,v,y,O;if(l||(l=0),x=!1,this.openNode(i,o,l),o.state=t.OpenTag,f=this.indent(i,o,l)+"<"+i.name,o.pretty&&o.width>0){M=f.length,C=i.attribs;for(g in C)n.call(C,g)&&(u=C[g],p=this.attribute(u,o,l),s=p.length,M+s>o.width?(O=this.indent(i,o,l+1)+p,f+=this.endline(i,o,l)+O,M=O.length):(O=" "+p,f+=O,M+=O.length))}else{b=i.attribs;for(g in b)n.call(b,g)&&(u=b[g],f+=this.attribute(u,o,l))}if(d=i.children.length,h=d===0?null:i.children[0],d===0||i.children.every(function(k){return(k.type===e.Text||k.type===e.Raw||k.type===e.CData)&&k.value===""}))o.allowEmpty?(f+=">",o.state=t.CloseTag,f+=""+this.endline(i,o,l)):(o.state=t.CloseTag,f+=o.spaceBeforeSlash+"/>"+this.endline(i,o,l));else if(o.pretty&&d===1&&(h.type===e.Text||h.type===e.Raw||h.type===e.CData)&&h.value!=null)f+=">",o.state=t.InsideTag,o.suppressPrettyCount++,x=!0,f+=this.writeChildNode(h,o,l+1),o.suppressPrettyCount--,x=!1,o.state=t.CloseTag,f+=""+this.endline(i,o,l);else{if(o.dontPrettyTextNodes){for(v=i.children,E=0,T=v.length;E"+this.endline(i,o,l),o.state=t.InsideTag,y=i.children,S=0,_=y.length;S<_;S++)c=y[S],f+=this.writeChildNode(c,o,l+1);o.state=t.CloseTag,f+=this.indent(i,o,l)+"",x&&o.suppressPrettyCount--,f+=this.endline(i,o,l),o.state=t.None}return this.closeNode(i,o,l),f}writeChildNode(i,o,l){switch(i.type){case e.CData:return this.cdata(i,o,l);case e.Comment:return this.comment(i,o,l);case e.Element:return this.element(i,o,l);case e.Raw:return this.raw(i,o,l);case e.Text:return this.text(i,o,l);case e.ProcessingInstruction:return this.processingInstruction(i,o,l);case e.Dummy:return"";case e.Declaration:return this.declaration(i,o,l);case e.DocType:return this.docType(i,o,l);case e.AttributeDeclaration:return this.dtdAttList(i,o,l);case e.ElementDeclaration:return this.dtdElement(i,o,l);case e.EntityDeclaration:return this.dtdEntity(i,o,l);case e.NotationDeclaration:return this.dtdNotation(i,o,l);default:throw new Error("Unknown XML node type: "+i.constructor.name)}}processingInstruction(i,o,l){var u;return this.openNode(i,o,l),o.state=t.OpenTag,u=this.indent(i,o,l)+"",u+=this.endline(i,o,l),o.state=t.None,this.closeNode(i,o,l),u}raw(i,o,l){var u;return this.openNode(i,o,l),o.state=t.OpenTag,u=this.indent(i,o,l),o.state=t.InsideTag,u+=i.value,o.state=t.CloseTag,u+=this.endline(i,o,l),o.state=t.None,this.closeNode(i,o,l),u}text(i,o,l){var u;return this.openNode(i,o,l),o.state=t.OpenTag,u=this.indent(i,o,l),o.state=t.InsideTag,u+=i.value,o.state=t.CloseTag,u+=this.endline(i,o,l),o.state=t.None,this.closeNode(i,o,l),u}dtdAttList(i,o,l){var u;return this.openNode(i,o,l),o.state=t.OpenTag,u=this.indent(i,o,l)+""+this.endline(i,o,l),o.state=t.None,this.closeNode(i,o,l),u}dtdElement(i,o,l){var u;return this.openNode(i,o,l),o.state=t.OpenTag,u=this.indent(i,o,l)+""+this.endline(i,o,l),o.state=t.None,this.closeNode(i,o,l),u}dtdEntity(i,o,l){var u;return this.openNode(i,o,l),o.state=t.OpenTag,u=this.indent(i,o,l)+""+this.endline(i,o,l),o.state=t.None,this.closeNode(i,o,l),u}dtdNotation(i,o,l){var u;return this.openNode(i,o,l),o.state=t.OpenTag,u=this.indent(i,o,l)+""+this.endline(i,o,l),o.state=t.None,this.closeNode(i,o,l),u}openNode(i,o,l){}closeNode(i,o,l){}openAttribute(i,o,l){}closeAttribute(i,o,l){}}}.call(le)),qo.exports}var Ic;function qu(){return Ic||(Ic=1,function(){var e;e=Hd(),zo.exports=class extends e{constructor(r){super(r)}document(r,n){var a,i,o,l,u;for(n=this.filterOptions(n),l="",u=r.children,i=0,o=u.length;i=0;)this.up();return this.onEnd()}openCurrent(){if(this.currentNode)return this.currentNode.children=!0,this.openNode(this.currentNode)}openNode(v){var y,O,k,L;if(!v.isOpen){if(!this.root&&this.currentLevel===0&&v.type===e.Element&&(this.root=v),O="",v.type===e.Element){this.writerOptions.state=t.OpenTag,O=this.writer.indent(v,this.writerOptions,this.currentLevel)+"<"+v.name,L=v.attribs;for(k in L)C.call(L,k)&&(y=L[k],O+=this.writer.attribute(y,this.writerOptions,this.currentLevel));O+=(v.children?">":"/>")+this.writer.endline(v,this.writerOptions,this.currentLevel),this.writerOptions.state=t.InsideTag}else this.writerOptions.state=t.OpenTag,O=this.writer.indent(v,this.writerOptions,this.currentLevel)+""),O+=this.writer.endline(v,this.writerOptions,this.currentLevel);return this.onData(O,this.currentLevel),v.isOpen=!0}}closeNode(v){var y;if(!v.isClosed)return y="",this.writerOptions.state=t.CloseTag,v.type===e.Element?y=this.writer.indent(v,this.writerOptions,this.currentLevel)+""+this.writer.endline(v,this.writerOptions,this.currentLevel):y=this.writer.indent(v,this.writerOptions,this.currentLevel)+"]>"+this.writer.endline(v,this.writerOptions,this.currentLevel),this.writerOptions.state=t.None,this.onData(y,this.currentLevel),v.isClosed=!0}onData(v,y){return this.documentStarted=!0,this.onDataCallback(v,y+1)}onEnd(){return this.documentCompleted=!0,this.onEndCallback()}debugInfo(v){return v==null?"":"node: <"+v+">"}ele(){return this.element(...arguments)}nod(v,y,O){return this.node(v,y,O)}txt(v){return this.text(v)}dat(v){return this.cdata(v)}com(v){return this.comment(v)}ins(v,y){return this.instruction(v,y)}dec(v,y,O){return this.declaration(v,y,O)}dtd(v,y,O){return this.doctype(v,y,O)}e(v,y,O){return this.element(v,y,O)}n(v,y,O){return this.node(v,y,O)}t(v){return this.text(v)}d(v){return this.cdata(v)}c(v){return this.comment(v)}r(v){return this.raw(v)}i(v,y){return this.instruction(v,y)}att(){return this.currentNode&&this.currentNode.type===e.DocType?this.attList(...arguments):this.attribute(...arguments)}a(){return this.currentNode&&this.currentNode.type===e.DocType?this.attList(...arguments):this.attribute(...arguments)}ent(v,y){return this.entity(v,y)}pent(v,y){return this.pEntity(v,y)}not(v,y){return this.notation(v,y)}}}.call(le)),Uo.exports}var Xo={exports:{}},Rc;function Vg(){return Rc||(Rc=1,function(){var e,t,r,n={}.hasOwnProperty;e=Ne(),r=Hd(),t=ma(),Xo.exports=class extends r{constructor(i,o){super(o),this.stream=i}endline(i,o,l){return i.isLastRootNode&&o.state===t.CloseTag?"":super.endline(i,o,l)}document(i,o){var l,u,s,c,d,h,E,S,M;for(E=i.children,u=s=0,d=E.length;s0){for(this.stream.write(" ["),this.stream.write(this.endline(i,o,l)),o.state=t.InsideTag,d=i.children,s=0,c=d.length;s"),this.stream.write(this.endline(i,o,l)),o.state=t.None,this.closeNode(i,o,l)}element(i,o,l){var u,s,c,d,h,E,S,M,T,_,g,x,f,p,C;if(l||(l=0),this.openNode(i,o,l),o.state=t.OpenTag,_=this.indent(i,o,l)+"<"+i.name,o.pretty&&o.width>0){S=_.length,x=i.attribs;for(T in x)n.call(x,T)&&(u=x[T],g=this.attribute(u,o,l),s=g.length,S+s>o.width?(C=this.indent(i,o,l+1)+g,_+=this.endline(i,o,l)+C,S=C.length):(C=" "+g,_+=C,S+=C.length))}else{f=i.attribs;for(T in f)n.call(f,T)&&(u=f[T],_+=this.attribute(u,o,l))}if(this.stream.write(_),d=i.children.length,h=d===0?null:i.children[0],d===0||i.children.every(function(b){return(b.type===e.Text||b.type===e.Raw||b.type===e.CData)&&b.value===""}))o.allowEmpty?(this.stream.write(">"),o.state=t.CloseTag,this.stream.write("")):(o.state=t.CloseTag,this.stream.write(o.spaceBeforeSlash+"/>"));else if(o.pretty&&d===1&&(h.type===e.Text||h.type===e.Raw||h.type===e.CData)&&h.value!=null)this.stream.write(">"),o.state=t.InsideTag,o.suppressPrettyCount++,this.writeChildNode(h,o,l+1),o.suppressPrettyCount--,o.state=t.CloseTag,this.stream.write("");else{for(this.stream.write(">"+this.endline(i,o,l)),o.state=t.InsideTag,p=i.children,E=0,M=p.length;E")}return this.stream.write(this.endline(i,o,l)),o.state=t.None,this.closeNode(i,o,l)}processingInstruction(i,o,l){return this.stream.write(super.processingInstruction(i,o,l))}raw(i,o,l){return this.stream.write(super.raw(i,o,l))}text(i,o,l){return this.stream.write(super.text(i,o,l))}dtdAttList(i,o,l){return this.stream.write(super.dtdAttList(i,o,l))}dtdElement(i,o,l){return this.stream.write(super.dtdElement(i,o,l))}dtdEntity(i,o,l){return this.stream.write(super.dtdEntity(i,o,l))}dtdNotation(i,o,l){return this.stream.write(super.dtdNotation(i,o,l))}}}.call(le)),Xo.exports}(function(){var e,t,r,n,a,i,o,l,u;({assign:l,isFunction:u}=Xt()),r=Wd(),n=Yd(),a=Xg(),o=qu(),i=Vg(),e=Ne(),t=ma(),Vt.create=function(s,c,d,h){var E,S;if(s==null)throw new Error("Root element needs a name.");return h=l({},c,d,h),E=new n(h),S=E.element(s),h.headless||(E.declaration(h),(h.pubID!=null||h.sysID!=null)&&E.dtd(h)),S},Vt.begin=function(s,c,d){return u(s)&&([c,d]=[s,c],s={}),c?new a(s,c,d):new n(s)},Vt.stringWriter=function(s){return new o(s)},Vt.streamWriter=function(s,c){return new i(s,c)},Vt.implementation=new r,Vt.nodeType=e,Vt.writerState=t}).call(le);const Kd=(e,t,r=!1)=>{const{type:n,props:a,children:i}=t,o=i||[],l=o[0];if(o.length===1&&typeof l=="string"){e.ele(n,a,l);return}let u=null;r?Object.keys(a).map(s=>{e.att(s,a[s])}):u=e.ele(n,a),o.forEach(s=>{if(typeof s=="string")throw new Error("Invaild XML");Kd(u||e,s)})},Hg=e=>{const t=$g.create(e).toJSON();if(!t)throw new Error("Element is invalid");const r=Vt.create(t.type);return Kd(r,t,!0),r.end({pretty:!0}),r.toString({pretty:!0})};class GC{title;pageSize;unitSize;staffLayout;paperOptions;headers;voiceStaves;score;workTitle="";partBuilders=[];constructor(t){Object.assign(this,t);const r=this.voiceStaves;for(const[n,a]of this.partTemplate.entries()){const i=this.ensurePartBuilder(n,a);for(const o of a.map(l=>r[l]))for(const[l,u]of o.voices.entries())for(const[s,c]of u.measures.entries())i.ensureMeasureBuilder(s).addVoice({...c,voiceIndexOfStaff:l})}}get partTemplate(){return this.staffLayout.partGroups.map(t=>t.range[0]===t.range[1]?[t.range[0]]:t.range)}ensurePartBuilder(t,r){for(;this.partBuilders.length<=t;){const n=new Yg({parent:this,template:r});this.partBuilders.push(n)}return this.partBuilders[t]}createPartListElement(){return H.jsx("part-list",{children:this.partBuilders.map(t=>H.jsx("score-part",{id:t.id,children:H.jsx("part-name",{"print-object":"no",children:t.name})}))})}toJSX(){const t=new Date;return`${t.getFullYear()}${String(t.getMonth()+1).padStart(2,"0")}${String(t.getDate()).padStart(2,"0")}`,H.jsxs("score-partwise",{version:"4.0",children:[H.jsx("work",{children:H.jsx("work-title",{children:this.workTitle})}),H.jsx("movement-title",{children:this.workTitle}),H.jsx("defaults",{children:H.jsxs("scaling",{children:[H.jsx("millimeters",{children:"8"}),H.jsx("tenths",{children:km})]})}),H.jsx("part-list",{children:this.partBuilders.map(r=>H.jsx("score-part",{id:r.id,children:H.jsx("part-name",{"print-object":"no",children:"MusicXML Part"})}))}),this.partBuilders.map(r=>r.toJSX())]})}toString(){return` - -${Hg(this.toJSX())} -`}}class Yg{parent;name;measureBuilders=[];staffContexts=[];template;get id(){return`P${this.parent.partBuilders.indexOf(this)+1}`}get stavesCount(){return this.template.length}constructor(t){Object.assign(this,t)}ensureStaffContext(t){for(;this.staffContexts.length<=t;){const r=new Gg({parent:this,index:t});this.staffContexts.push(r)}return this.staffContexts[t]}ensureMeasureBuilder(t){for(;this.measureBuilders.length<=t;){const r=new Kg({parent:this});this.measureBuilders.push(r)}return this.measureBuilders[t]}toJSX(){return H.jsx("part",{id:this.id,children:this.measureBuilders.map((t,r)=>t.toJSX())})}}class Kg{parent;voiceBuilders=[];beamCount=0;beamState;get index(){return this.parent.measureBuilders.indexOf(this)}get score(){return this.parent.parent.score}constructor(t){Object.assign(this,t)}addVoice(t){const r=new Qg({parent:this,voice:t});this.voiceBuilders.push(r),t.contextedTerms.filter(i=>i.type===fm.Clef).forEach(i=>{const o={[ee.ClefC]:"C",[ee.ClefF]:"F",[ee.ClefG]:"G"}[i.tokenType];o||console.error("unknown Clef",i.tokenType);const l=this.parent.ensureStaffContext(i.staff);l.addClef(new Qd({parent:l,measureIndex:this.index,tick:i.tick,number:i.staff-this.parent.template[0],sign:o,line:3-i.y})),l.addKey(new Gd({parent:l,measureIndex:this.index,fifths:t.keySignature})),l.addTime(new Jd({parent:l,measureIndex:this.index,beats:t.timeSignature.numerator,beatType:t.timeSignature.denominator,timeSigNumeric:t.timeSigNumeric}))});const n={[ee.OctaveShift8va]:8,[ee.OctaveShift8vb]:-8,[ee.OctaveShift0]:0},a=Object.keys(n);t.contextedTerms.forEach(i=>{a.includes(i.tokenType)&&this.parent.ensureStaffContext(i.staff).addOctaveShiftTerm(i,this.index)})}toJSX(){const t=this.score.pages.reduce((r,n)=>[...r,...n.systems.reduce((a,i)=>[...a,...i.measureBars],[])],[]);return this.beamCount=0,H.jsxs("measure",{number:this.index+1,width:Math.round(t[this.index]*10),children:[this.index===0&&H.jsx(H.Fragment,{children:this.parent.staffContexts.map(r=>{var n;return r.clefBuilders.length>0?H.jsx("attributes",{children:(n=r.clefBuilders)==null?void 0:n[0].toJSX()}):null})}),this.voiceBuilders.reduce((r,n,a)=>{var i,o;return r.push(...n.toJSX()),(o=(i=this.voiceBuilders[a+1])==null?void 0:i.toJSX)!=null&&o.call(i)&&r.push(H.jsx("backup",{children:H.jsx("duration",{children:n.voice.duration})})),r},[])]})}}class Qg{parent;voice;get index(){return this.parent.voiceBuilders.indexOf(this)}constructor(t){Object.assign(this,t)}toJSX(){const t=[],r={[ee.AccNatural]:0,[ee.AccSharp]:1,[ee.AccDoublesharp]:2,[ee.AccFlat]:-1,[ee.AccFlatflat]:-1,[ee.KeyNatural]:0,[ee.KeySharp]:1,[ee.KeyFlat]:-1},n=Object.keys(r),a=this.voice.contextedTerms.reduce((o,l)=>{if(n.includes(l.tokenType)){const u=o.findIndex(s=>s.x===l.x&&s.y===l.y);u>-1?o.splice(u,1):o.push(l)}return o},[]),i=Object.entries(this.voice.tickMap).map(([o,l])=>[Number(o),l]).sort(([o],[l])=>o-l);return i.forEach(([o,l])=>{const u=a.filter(s=>s.tick===o);u.length>0&&u.forEach(s=>{var d;const c=(d=l.ys)==null?void 0:d.findIndex(h=>h===s.y);c>-1&&(l.pitches[c].accidental=r[s.tokenType])})}),i.forEach(([o,l],u)=>{var c,d,h,E,S;const s=this.parent.parent.ensureStaffContext(l.staff||0);if(l instanceof dm){const M=s.lookupDivisions(this.parent.index),T=s.lookupStaves(this.parent.index),_=s.lookupClef(this.parent.index,+o),g=s.lookupKey(this.parent.index),x=s.lookupTime(this.parent.index),f=[M,g,x,T,_].filter(Boolean).map(N=>N.toJSX());u===0&&f.length>0&&t.push(H.jsx("attributes",{children:f}));const p=[],C=[];C.push(...new ey(l.accessories).toJSX()||[]),C.length>0&&p.push(H.jsx("technical",{children:C}));const b=[];l.accessories.some(N=>N.type===ee.ScriptStaccato)&&b.push(H.jsx("staccato",{})),l.accessories.some(N=>N.type===ee.ScriptSforzato)&&b.push(H.jsx("accent",{})),l.accessories.some(N=>N.type===ee.ScriptStaccatissimo)&&b.push(H.jsx("spiccato",{})),l.accessories.some(N=>N.type===ee.ScriptMarcato)&&b.push(H.jsx("strong-accent",{})),l.accessories.some(N=>N.type===ee.ScriptTenuto)&&b.push(H.jsx("tenuto",{})),b.length>0&&p.push(H.jsx("articulations",{children:b}));const v=l.accessories.find(N=>N.type===ee.ScriptFermata);v&&p.push(H.jsx("fermata",{type:{[Ht.Up]:"upright",[Ht.Down]:"inverted"}[v.direction]})),l.accessories.some(N=>N.type===ee.SlurBegin)&&l.accessories.filter(N=>N.type===ee.SlurBegin).forEach(N=>{p.push(H.jsx("slur",{"default-x":(l.x+N.x).toFixed(2),placement:{[Ht.Up]:"above",[Ht.Down]:"below"}[N.direction],type:"start"}))}),l.accessories.some(N=>N.type===ee.SlurEnd)&&l.accessories.filter(N=>N.type===ee.SlurEnd).forEach(N=>{p.push(H.jsx("slur",{"default-x":(l.x+N.x).toFixed(2),number:"1",placement:{[Ht.Up]:"above",[Ht.Down]:"below"}[N.direction],type:"stop"}))}),l.accessories.some(N=>N.type===ee.TieBegin)&&l.accessories.filter(N=>N.type===ee.TieBegin).forEach(N=>{p.push(H.jsx("tied",{type:"start"}))}),l.accessories.some(N=>N.type===ee.TieEnd)&&l.accessories.filter(N=>N.type===ee.TieEnd).forEach(N=>{p.push(H.jsx("tied",{type:"stop"}))});const y=[];l.accessories.some(N=>N.type===ee.ScriptTurn)&&y.push(H.jsx("turn",{})),l.accessories.some(N=>N.type===ee.ScriptTrill)&&y.push(H.jsx("trill-mark",{})),l.accessories.some(N=>N.type===ee.ScriptMordent)&&y.push(H.jsx("mordent",{})),l.accessories.some(N=>N.type===ee.ScriptPortato)&&y.push(H.jsx("inverted-mordent",{})),y.length>0&&p.push(H.jsx("ornaments",{children:y}));const O=Rm(l.division);if(this.index===0){const N=(d=(c=s.lookupOctaveShift(this.parent.index))==null?void 0:c.getJSX)==null?void 0:d.call(c,l.tick);N&&t.push(N)}if(l.pitches){const N=l.pitches.length>1;(h=l.pitches)==null||h.forEach((B,F)=>{const{alter:K,step:q,octave:$}=Mm(B),j={u:"up",d:"down"}[l.stemDirection];if(!this.voice.empty){let U=null;switch(l.beam){case"Open":U=H.jsx("beam",{number:"1",children:"begin"}),this.parent.beamState=l.beam;break;case"Close":U=H.jsx("beam",{number:"1",children:"end"}),this.parent.beamCount+=1,this.parent.beamState=l.beam;break;default:this.parent.beamState==="Open"&&(U=H.jsx("beam",{number:"1",children:"continue"}));break}const Y=l.staff-this.parent.parent.template[0]+1;t.push(H.jsxs("note",{children:[l.grace&&H.jsx("grace",{"steal-time-following":l.duration}),N&&F!==0&&H.jsx("chord",{}),!l.rest&&H.jsxs("pitch",{children:[H.jsx("step",{children:q}),K!==0&&H.jsx("alter",{children:K}),H.jsx("octave",{children:$})]}),l.rest==="r"&&H.jsxs("rest",{children:[H.jsx("display-step",{children:q}),H.jsx("display-octave",{children:$})]}),l.rest==="R"&&H.jsxs("rest",{measure:"yes",children:[H.jsx("display-step",{children:q}),H.jsx("display-octave",{children:$})]}),l.grace?null:H.jsx("duration",{children:l.duration}),H.jsx("voice",{children:this.index+1}),H.jsx("type",{children:O}),Array(l.dots).fill(null).map(()=>H.jsx("dot",{})),new ny(B.accidental).toJSX(),l.timeWarp&&new ty(l.timeWarp).toJSX(),j?H.jsx("stem",{children:j}):null,H.jsx("staff",{children:Y}),U,F===0?p.length>0&&H.jsx("notations",{children:p}):null]}))}})}if(this.index===0&&u===i.length-1){const N=s.getCurrentTime(this.parent.index);if(N){const B=(S=(E=s.lookupOctaveShift(this.parent.index))==null?void 0:E.getJSX)==null?void 0:S.call(E,If*N.beatType/4*N.beats);B&&t.push(B)}}const k=Math.max(...s.clefBuilders.map(N=>N.tick)),L=Math.max(...Object.keys(this.voice.tickMap).map(N=>+N));if(k>=L){const N=s.lookupClef(this.parent.index,k);N&&t.push(H.jsx("attributes",{children:N.toJSX()}))}}}),t}}class Gg{parent;index;divisionsBuilder=new Jg({value:If});clefBuilders=[];keyBuilders=[];timeBuilders=[];octave;tied;beamCount=0;octaveShiftBuilders=[];constructor(t){Object.assign(this,t)}lookupDivisions(t){return t===0?this.divisionsBuilder:null}lookupStaves(t){return t===0?new Zg({value:this.parent.stavesCount}):null}addClef(t){this.lookupClef(t.measureIndex,t.tick)||this.clefBuilders.length>0&&Qd.equals(this.clefBuilders[this.clefBuilders.length-1],t)||this.clefBuilders.push(t)}lookupClef(t,r){const n=this.clefBuilders.filter(a=>a.measureIndex===t&&a.tick===r);return n.length>0?n[0]:null}addKey(t){this.lookupKey(t.measureIndex)||this.keyBuilders.length>0&&Gd.equals(this.keyBuilders[this.keyBuilders.length-1],t)||this.keyBuilders.push(t)}lookupKey(t){const r=this.keyBuilders.filter(n=>n.measureIndex===t);return r.length>0?r[0]:null}addTime(t){this.lookupTime(t.measureIndex)||this.timeBuilders.length>0&&Jd.equals(this.timeBuilders[this.timeBuilders.length-1],t)||this.timeBuilders.push(t)}lookupTime(t){const r=this.timeBuilders.filter(n=>n.measureIndex===t);return r.length>0?r[0]:null}getCurrentTime(t){const r=this.timeBuilders.filter(n=>n.measureIndex<=t);return r.sort((n,a)=>n.measureIndex-a.measureIndex),r[r.length-1]}addOctaveShiftTerm(t,r){let n=this.octaveShiftBuilders.find(a=>a.measureIndex===r);n||(n=new iy({parent:this,measureIndex:r}),this.octaveShiftBuilders.push(n)),n.addTerm(t)}lookupOctaveShift(t){const r=this.octaveShiftBuilders.filter(n=>n.measureIndex===t);return r.length>0?r[0]:null}}class Qd{parent;measureIndex;tick;number;sign;line;size="full";afterBarline=!0;additional=!1;constructor(t){Object.assign(this,t)}static equals(t,r){return t&&r&&t.number===r.number&&t.sign===r.sign&&t.line===r.line&&t.size===r.size}toJSX(){return H.jsxs("clef",{number:this.number+1,size:this.size,additional:this.additional?"yes":"no","after-barline":this.afterBarline?"yes":"no",children:[H.jsx("sign",{children:this.sign}),H.jsx("line",{children:this.line})]})}}class Gd{parent;measureIndex;fifths;mode;constructor(t){Object.assign(this,t)}static equals(t,r){return t&&r&&t.fifths===r.fifths&&t.mode===r.mode}toJSX(){return H.jsxs("key",{children:[H.jsx("fifths",{children:this.fifths}),this.mode?H.jsx("mode",{children:this.mode}):null]})}}class Jd{parent;measureIndex;beats;beatType;timeSigNumeric;constructor(t){Object.assign(this,t)}static equals(t,r){return t&&r&&t.beats===r.beats&&t.beatType===r.beatType}toJSX(){const t={};return this.beats===2&&this.beatType===2&&(t.symbol="cut"),this.beats===4&&this.beatType===4&&(t.symbol="common"),H.jsxs("time",{...t,children:[H.jsx("beats",{children:this.beats}),H.jsx("beat-type",{children:this.beatType})]})}}class Jg{value;constructor(t){Object.assign(this,t)}toJSX(){return H.jsx("divisions",{children:this.value})}}class Zg{value;constructor(t){Object.assign(this,t)}toJSX(){return H.jsx("staves",{children:this.value})}}const kc={[ee.Zero]:0,[ee.One]:1,[ee.Two]:2,[ee.Three]:3,[ee.Four]:4,[ee.Five]:5,[ee.Six]:6,[ee.Seven]:7,[ee.Eight]:8,[ee.Nine]:9};class ey{value;placement;data;constructor(t){this.data=t}toJSX(){const t=Object.keys(kc),r=this.data.filter(n=>t.includes(n.type));return r.length>0?r.map(n=>H.jsx("fingering",{placement:{[Ht.Up]:"above",[Ht.Down]:"below"}[n.direction],children:kc[n.type]})):null}}class ty{timeWarp;constructor(t){this.timeWarp=t}toJSX(){return H.jsxs("time-modification",{children:[H.jsx("actual-notes",{children:this.timeWarp.denominator}),H.jsx("normal-notes",{children:this.timeWarp.numerator})]})}}const ry={"-2":"flat-flat","-1":"flat",0:"natural",1:"sharp",2:"double-sharp"};class ny{alter;constructor(t){this.alter=t}toJSX(){return typeof this.alter=="number"?H.jsx("accidental",{children:ry[this.alter]}):null}}class iy{parent;measureIndex;number;terms=[];constructor(t){Object.assign(this,t)}addTerm(t){this.terms.find(r=>r.tick===t.tick)||this.terms.push(t)}getJSX(t){const r=this.terms.find(a=>a.tick===t);if(!r)return null;let n="up";switch(r.tokenType){case ee.OctaveShift8vb:n="up";break;case ee.OctaveShift8va:n="down";break;case ee.OctaveShift0:n="stop";break}return H.jsxs("direction",{children:[H.jsx("direction-type",{children:H.jsx("octave-shift",{size:"8",type:n,number:"1"})}),H.jsx("staff",{children:this.parent.parent.template.indexOf(this.parent.index)+1})]})}validate(){if(this.terms.length===0)return!0;this.terms.sort((n,a)=>n.tick-a.tick);const t=[],r=[];for(let n of this.terms)[ee.OctaveShift8va,ee.OctaveShift8vb].includes(n.tokenType)&&r.push(n),ee.OctaveShift0===n.tokenType&&(r.push(n),t.push([...r]),r.length=0);return t.some(n=>n.length!==2)||r.length===1?(console.error("八度记号配对错误"),!1):!0}toJSX(){}}var Zd={exports:{}};(function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(r){for(var n=1;n"u"&&r(3);var d=Promise;function h(m,P){P&&m.then(function(w){P(null,w)},function(w){P(w)})}function E(m,P,w){typeof P=="function"&&m.then(P),typeof w=="function"&&m.catch(w)}function S(m){return typeof m!="string"&&(console.warn(m+" used as a key, but it is not a string."),m=String(m)),m}function M(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var T="local-forage-detect-blob-support",_=void 0,g={},x=Object.prototype.toString,f="readonly",p="readwrite";function C(m){for(var P=m.length,w=new ArrayBuffer(P),D=new Uint8Array(w),R=0;R=43)}}).catch(function(){return!1})}function v(m){return typeof _=="boolean"?d.resolve(_):b(m).then(function(P){return _=P,_})}function y(m){var P=g[m.name],w={};w.promise=new d(function(D,R){w.resolve=D,w.reject=R}),P.deferredOperations.push(w),P.dbReady?P.dbReady=P.dbReady.then(function(){return w.promise}):P.dbReady=w.promise}function O(m){var P=g[m.name],w=P.deferredOperations.pop();if(w)return w.resolve(),w.promise}function k(m,P){var w=g[m.name],D=w.deferredOperations.pop();if(D)return D.reject(P),D.promise}function L(m,P){return new d(function(w,D){if(g[m.name]=g[m.name]||G(),m.db)if(P)y(m),m.db.close();else return w(m.db);var R=[m.name];P&&R.push(m.version);var I=u.open.apply(u,R);P&&(I.onupgradeneeded=function(A){var z=I.result;try{z.createObjectStore(m.storeName),A.oldVersion<=1&&z.createObjectStore(T)}catch(W){if(W.name==="ConstraintError")console.warn('The database "'+m.name+'" has been upgraded from version '+A.oldVersion+" to version "+A.newVersion+', but the storage "'+m.storeName+'" already exists.');else throw W}}),I.onerror=function(A){A.preventDefault(),D(I.error)},I.onsuccess=function(){var A=I.result;A.onversionchange=function(z){z.target.close()},w(A),O(m)}})}function N(m){return L(m,!1)}function B(m){return L(m,!0)}function F(m,P){if(!m.db)return!0;var w=!m.db.objectStoreNames.contains(m.storeName),D=m.versionm.db.version;if(D&&(m.version!==P&&console.warn('The database "'+m.name+`" can't be downgraded from version `+m.db.version+" to version "+m.version+"."),m.version=m.db.version),R||w){if(w){var I=m.db.version+1;I>m.version&&(m.version=I)}return!0}return!1}function K(m){return new d(function(P,w){var D=new FileReader;D.onerror=w,D.onloadend=function(R){var I=btoa(R.target.result||"");P({__local_forage_encoded_blob:!0,data:I,type:m.type})},D.readAsBinaryString(m)})}function q(m){var P=C(atob(m.data));return c([P],{type:m.type})}function $(m){return m&&m.__local_forage_encoded_blob}function j(m){var P=this,w=P._initReady().then(function(){var D=g[P._dbInfo.name];if(D&&D.dbReady)return D.dbReady});return E(w,m,m),w}function U(m){y(m);for(var P=g[m.name],w=P.forages,D=0;D0&&(!m.db||I.name==="InvalidStateError"||I.name==="NotFoundError"))return d.resolve().then(function(){if(!m.db||I.name==="NotFoundError"&&!m.db.objectStoreNames.contains(m.storeName)&&m.version<=m.db.version)return m.db&&(m.version=m.db.version+1),B(m)}).then(function(){return U(m).then(function(){Y(m,P,w,D-1)})}).catch(w);w(I)}}function G(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function Z(m){var P=this,w={db:null};if(m)for(var D in m)w[D]=m[D];var R=g[w.name];R||(R=G(),g[w.name]=R),R.forages.push(P),P._initReady||(P._initReady=P.ready,P.ready=j);var I=[];function A(){return d.resolve()}for(var z=0;z>4,V[R++]=(A&15)<<4|z>>2,V[R++]=(z&3)<<6|W&63;return X}function Mr(m){var P=new Uint8Array(m),w="",D;for(D=0;D>2],w+=oe[(P[D]&3)<<4|P[D+1]>>4],w+=oe[(P[D+1]&15)<<2|P[D+2]>>6],w+=oe[P[D+2]&63];return P.length%3===2?w=w.substring(0,w.length-1)+"=":P.length%3===1&&(w=w.substring(0,w.length-2)+"=="),w}function qa(m,P){var w="";if(m&&(w=fn.call(m)),m&&(w==="[object ArrayBuffer]"||m.buffer&&fn.call(m.buffer)==="[object ArrayBuffer]")){var D,R=ot;m instanceof ArrayBuffer?(D=m,R+=dr):(D=m.buffer,w==="[object Int8Array]"?R+=on:w==="[object Uint8Array]"?R+=Ot:w==="[object Uint8ClampedArray]"?R+=ln:w==="[object Int16Array]"?R+=Wn:w==="[object Uint16Array]"?R+=Ir:w==="[object Int32Array]"?R+=un:w==="[object Uint32Array]"?R+=sn:w==="[object Float32Array]"?R+=Dr:w==="[object Float64Array]"?R+=Un:P(new Error("Failed to get type for BinaryArray"))),P(R+Mr(D))}else if(w==="[object Blob]"){var I=new FileReader;I.onload=function(){var A=se+m.type+"~"+Mr(this.result);P(ot+an+A)},I.readAsArrayBuffer(m)}else try{P(JSON.stringify(m))}catch(A){console.error("Couldn't convert value into a JSON string: ",m),P(null,A)}}function hr(m){if(m.substring(0,Et)!==ot)return JSON.parse(m);var P=m.substring(cn),w=m.substring(Et,cn),D;if(w===an&&Fe.test(P)){var R=P.match(Fe);D=R[1],P=P.substring(R[0].length)}var I=At(P);switch(w){case dr:return I;case an:return c([I],{type:D});case on:return new Int8Array(I);case Ot:return new Uint8Array(I);case ln:return new Uint8ClampedArray(I);case Wn:return new Int16Array(I);case Ir:return new Uint16Array(I);case un:return new Int32Array(I);case sn:return new Uint32Array(I);case Dr:return new Float32Array(I);case Un:return new Float64Array(I);default:throw new Error("Unkown type: "+w)}}var Rr={serialize:qa,deserialize:hr,stringToBuffer:At,bufferToString:Mr};function $e(m,P,w,D){m.executeSql("CREATE TABLE IF NOT EXISTS "+P.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],w,D)}function Xn(m){var P=this,w={db:null};if(m)for(var D in m)w[D]=typeof m[D]!="string"?m[D].toString():m[D];var R=new d(function(I,A){try{w.db=openDatabase(w.name,String(w.version),w.description,w.size)}catch(z){return A(z)}w.db.transaction(function(z){$e(z,w,function(){P._dbInfo=w,I()},function(W,X){A(X)})},A)});return w.serializer=Rr,R}function yt(m,P,w,D,R,I){m.executeSql(w,D,R,function(A,z){z.code===z.SYNTAX_ERR?A.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[P.storeName],function(W,X){X.rows.length?I(W,z):$e(W,P,function(){W.executeSql(w,D,R,I)},I)},I):I(A,z)},I)}function Wa(m,P){var w=this;m=S(m);var D=new d(function(R,I){w.ready().then(function(){var A=w._dbInfo;A.db.transaction(function(z){yt(z,A,"SELECT * FROM "+A.storeName+" WHERE key = ? LIMIT 1",[m],function(W,X){var V=X.rows.length?X.rows.item(0).value:null;V&&(V=A.serializer.deserialize(V)),R(V)},function(W,X){I(X)})})}).catch(I)});return h(D,P),D}function Ua(m,P){var w=this,D=new d(function(R,I){w.ready().then(function(){var A=w._dbInfo;A.db.transaction(function(z){yt(z,A,"SELECT * FROM "+A.storeName,[],function(W,X){for(var V=X.rows,Q=V.length,ie=0;ie0){A(Vn.apply(R,[m,W,w,D-1]));return}z(ie)}})})}).catch(z)});return h(I,w),I}function Hn(m,P,w){return Vn.apply(this,[m,P,w,1])}function Yn(m,P){var w=this;m=S(m);var D=new d(function(R,I){w.ready().then(function(){var A=w._dbInfo;A.db.transaction(function(z){yt(z,A,"DELETE FROM "+A.storeName+" WHERE key = ?",[m],function(){R()},function(W,X){I(X)})})}).catch(I)});return h(D,P),D}function Xa(m){var P=this,w=new d(function(D,R){P.ready().then(function(){var I=P._dbInfo;I.db.transaction(function(A){yt(A,I,"DELETE FROM "+I.storeName,[],function(){D()},function(z,W){R(W)})})}).catch(R)});return h(w,m),w}function dn(m){var P=this,w=new d(function(D,R){P.ready().then(function(){var I=P._dbInfo;I.db.transaction(function(A){yt(A,I,"SELECT COUNT(key) as c FROM "+I.storeName,[],function(z,W){var X=W.rows.item(0).c;D(X)},function(z,W){R(W)})})}).catch(R)});return h(w,m),w}function Kn(m,P){var w=this,D=new d(function(R,I){w.ready().then(function(){var A=w._dbInfo;A.db.transaction(function(z){yt(z,A,"SELECT key FROM "+A.storeName+" WHERE id = ? LIMIT 1",[m+1],function(W,X){var V=X.rows.length?X.rows.item(0).key:null;R(V)},function(W,X){I(X)})})}).catch(I)});return h(D,P),D}function Qn(m){var P=this,w=new d(function(D,R){P.ready().then(function(){var I=P._dbInfo;I.db.transaction(function(A){yt(A,I,"SELECT key FROM "+I.storeName,[],function(z,W){for(var X=[],V=0;V '__WebKitDatabaseInfoTable__'",[],function(R,I){for(var A=[],z=0;z0}function xv(m){var P=this,w={};if(m)for(var D in m)w[D]=m[D];return w.keyPrefix=Lr(m,P._defaultConfig),yv()?(P._dbInfo=w,w.serializer=Rr,d.resolve()):d.reject()}function Cv(m){var P=this,w=P.ready().then(function(){for(var D=P._dbInfo.keyPrefix,R=localStorage.length-1;R>=0;R--){var I=localStorage.key(R);I.indexOf(D)===0&&localStorage.removeItem(I)}});return h(w,m),w}function _v(m,P){var w=this;m=S(m);var D=w.ready().then(function(){var R=w._dbInfo,I=localStorage.getItem(R.keyPrefix+m);return I&&(I=R.serializer.deserialize(I)),I});return h(D,P),D}function wv(m,P){var w=this,D=w.ready().then(function(){for(var R=w._dbInfo,I=R.keyPrefix,A=I.length,z=localStorage.length,W=1,X=0;X=0;A--){var z=localStorage.key(A);z.indexOf(I)===0&&localStorage.removeItem(z)}}):R=d.reject("Invalid arguments"),h(R,P),R}var Nv={_driver:"localStorageWrapper",_initStorage:xv,_support:kr(),iterate:wv,getItem:_v,setItem:Pv,removeItem:Ov,clear:Cv,length:Ev,key:bv,keys:Sv,dropInstance:Tv},Iv=function(P,w){return P===w||typeof P=="number"&&typeof w=="number"&&isNaN(P)&&isNaN(w)},Dv=function(P,w){for(var D=P.length,R=0;R"u"?"undefined":i(w))==="object"){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var D in w){if(D==="storeName"&&(w[D]=w[D].replace(/\W/g,"_")),D==="version"&&typeof w[D]!="number")return new Error("Database version must be a number.");this._config[D]=w[D]}return"driver"in w&&w.driver?this.setDriver(this._config.driver):!0}else return typeof w=="string"?this._config[w]:this._config},m.prototype.defineDriver=function(w,D,R){var I=new d(function(A,z){try{var W=w._driver,X=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!w._driver){z(X);return}for(var V=Va.concat("_initStorage"),Q=0,ie=V.length;Q{const{id:c,result:d,error:h}=s.data,E=n.get(c);if(E&&(n.delete(c),h?E.reject(new Error(h)):E.resolve(d)),i.length>0){const S=i.shift();u.postMessage(S)}else a.push(u)},u.onerror=s=>{console.error("[solveStaffGroup worker error]",s)},e.push(u),u}function l(...u){return new Promise((s,c)=>{const d=r++;n.set(d,{resolve:s,reject:c});const h={id:d,args:u};let E=a.pop();!E&&e.lengthu.terminate()),e=[],a.length=0,i.length=0,n.clear()}}}class sy{store;constructor(){this.store=ly.createInstance({name:"solution-store"})}getBatch(t){return Promise.all(t.map(r=>this.store.getItem(r)))}get(t){return this.store.getItem(t)}set(t,r){return this.store.setItem(t,r)}remove(t){return this.store.removeItem(t)}}class e1{localStore=new sy;async getBatch(t){const r=await ei.post("/api/solutions/batchGet",{data:{nameList:t}});return Promise.all(r.map((n,a)=>n||this.localStore.get(t[a])))}async get(t){return await ei.post("/api/solutions/batchGet",{data:{nameList:[t]}}).then(n=>n[0])||this.localStore.get(t)}set(t,r){return ei.post("/api/solutions/set",{data:{name:t,value:r}})}remove(t){return ei.post("/api/solutions/delete",{data:{name:t}})}}const t1=async(e,{forceUpdate:t=!1,readonly:r=!1,onlyFetchCache:n=!1,solutionStore:a=null,onProgress:i,policy:o="equations",quota:l})=>{var E;if(e.assemble(),(E=e.spartito)!=null&&E.regulated)return;const u=e.spartito||e.makeSpartito(),s=u.measures.filter(S=>!S.regulated),c=s.length;let d=0;if(i==null||i(0),!t){const S=await(a==null?void 0:a.getBatch(s.map(M=>M.regulationHash)))??[];s.forEach((M,T)=>{const _=S[T];_&&M.applySolution(_),i==null||i(Math.ceil(d++/c*100))})}if(n)return;const h=u.measures.filter(S=>!S.regulated);if(h.length>0){const{solveStaffGroup:S,terminate:M}=uy();await Promise.all(h.map(async T=>{var g;const _=T.regulationHash;await T.regulate({policy:o,quota:l||Math.min((T.events.length+1)*16,200),solver:S}),r||a==null||a.set(_,{...T.asSolution(),priority:-((g=T.solutionStat)==null?void 0:g.loss)}),i==null||i(Math.ceil(d++/c*100))})),M()}i==null||i(100)};var oh={},lh={exports:{}};(function(e){var t=we.default;function r(n,a){if(typeof WeakMap=="function")var i=new WeakMap,o=new WeakMap;return(e.exports=r=function(u,s){if(!s&&u&&u.__esModule)return u;var c,d,h={__proto__:null,default:u};if(u===null||t(u)!="object"&&typeof u!="function")return h;if(c=s?o:i){if(c.has(u))return c.get(u);c.set(u,h)}for(var E in u)E!=="default"&&{}.hasOwnProperty.call(u,E)&&((d=(c=Object.defineProperty)&&Object.getOwnPropertyDescriptor(u,E))&&(d.get||d.set)?c(h,E,d):h[E]=u[E]);return h},e.exports.__esModule=!0,e.exports.default=e.exports)(n,a)}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports})(lh);var be=lh.exports,uh={exports:{}};(function(e){function t(r){return r&&r.__esModule?r:{default:r}}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(uh);var J=uh.exports,sh={exports:{}},ch={exports:{}},fh={exports:{}};(function(e){function t(r,n){(n==null||n>r.length)&&(n=r.length);for(var a=0,i=Array(n);a0&&arguments[0]!==void 0?arguments[0]:{},t=e.mark;return t?t.startsWith("data-")?t:"data-".concat(t):wy}function ya(e){if(e.attachTo)return e.attachTo;var t=document.querySelector("head");return t||document.body}function by(e){return e==="queue"?"prependQueue":e?"prepend":"append"}function Yu(e){return Array.from((na.get(e)||e).children).filter(function(t){return t.tagName==="STYLE"})}function Ku(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!(0,Cy.default)())return null;var r=t.csp,n=t.prepend,a=t.priority,i=a===void 0?0:a,o=by(n),l=o==="prependQueue",u=document.createElement("style");u.setAttribute($c,o),l&&i&&u.setAttribute(Bc,"".concat(i)),r!=null&&r.nonce&&(u.nonce=r==null?void 0:r.nonce),u.innerHTML=e;var s=ya(t),c=s.firstChild;if(n){if(l){var d=(t.styles||Yu(s)).filter(function(h){if(!["prepend","prependQueue"].includes(h.getAttribute($c)))return!1;var E=Number(h.getAttribute(Bc)||0);return i>=E});if(d.length)return s.insertBefore(u,d[d.length-1].nextSibling),u}s.insertBefore(u,c)}else s.appendChild(u);return u}function Dh(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=ya(t);return(t.styles||Yu(r)).find(function(n){return n.getAttribute(Ih(t))===e})}function Sy(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=Dh(e,t);if(r){var n=ya(t);n.removeChild(r)}}function Ey(e,t){var r=na.get(e);if(!r||!(0,_y.default)(document,r)){var n=Ku("",t),a=n.parentNode;na.set(e,a),e.removeChild(n)}}function Oy(){na.clear()}function Py(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=ya(r),a=Yu(n),i=(0,Fc.default)((0,Fc.default)({},r),{},{styles:a});Ey(n,i);var o=Dh(t,i);if(o){var l,u;if((l=i.csp)!==null&&l!==void 0&&l.nonce&&o.nonce!==((u=i.csp)===null||u===void 0?void 0:u.nonce)){var s;o.nonce=(s=i.csp)===null||s===void 0?void 0:s.nonce}return o.innerHTML!==e&&(o.innerHTML=e),o}var c=Ku(e,i);return c.setAttribute(Ih(i),t),c}var zc;function Qu(){if(zc)return Ye;zc=1;var e=J,t=we;Object.defineProperty(Ye,"__esModule",{value:!0}),Ye.generate=M,Ye.getSecondaryColor=T,Ye.iconStyles=void 0,Ye.isIconDefinition=E,Ye.normalizeAttrs=S,Ye.normalizeTwoToneColors=_,Ye.useInsertStyles=Ye.svgBaseProps=void 0,Ye.warning=h;var r=e(He),n=e(we),a=Eh,i=d(re),o=e(ut),l=sr,u=e(Zr),s=e(lm);function c(x){if(typeof WeakMap!="function")return null;var f=new WeakMap,p=new WeakMap;return(c=function(b){return b?p:f})(x)}function d(x,f){if(!f&&x&&x.__esModule)return x;if(x===null||t(x)!="object"&&typeof x!="function")return{default:x};var p=c(f);if(p&&p.has(x))return p.get(x);var C={__proto__:null},b=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var v in x)if(v!=="default"&&{}.hasOwnProperty.call(x,v)){var y=b?Object.getOwnPropertyDescriptor(x,v):null;y&&(y.get||y.set)?Object.defineProperty(C,v,y):C[v]=x[v]}return C.default=x,p&&p.set(x,C),C}function h(x,f){(0,o.default)(x,"[@ant-design/icons] ".concat(f))}function E(x){return(0,n.default)(x)==="object"&&typeof x.name=="string"&&typeof x.theme=="string"&&((0,n.default)(x.icon)==="object"||typeof x.icon=="function")}function S(){var x=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.keys(x).reduce(function(f,p){var C=x[p];switch(p){case"class":f.className=C,delete f.class;break;default:delete f[p],f[(0,s.default)(p)]=C}return f},{})}function M(x,f,p){return p?i.default.createElement(x.tag,(0,r.default)((0,r.default)({key:f},S(x.attrs)),p),(x.children||[]).map(function(C,b){return M(C,"".concat(f,"-").concat(x.tag,"-").concat(b))})):i.default.createElement(x.tag,(0,r.default)({key:f},S(x.attrs)),(x.children||[]).map(function(C,b){return M(C,"".concat(f,"-").concat(x.tag,"-").concat(b))}))}function T(x){return(0,a.generate)(x)[0]}function _(x){return x?Array.isArray(x)?x:[x]:[]}Ye.svgBaseProps={width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true",focusable:"false"};var g=Ye.iconStyles=` -.anticon { - display: inline-flex; - alignItems: center; - color: inherit; - font-style: normal; - line-height: 0; - text-align: center; - text-transform: none; - vertical-align: -0.125em; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.anticon > * { - line-height: 1; -} - -.anticon svg { - display: inline-block; -} - -.anticon::before { - display: none; -} - -.anticon .anticon-icon { - display: block; -} - -.anticon[tabindex] { - cursor: pointer; -} - -.anticon-spin::before, -.anticon-spin { - display: inline-block; - -webkit-animation: loadingCircle 1s infinite linear; - animation: loadingCircle 1s infinite linear; -} - -@-webkit-keyframes loadingCircle { - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@keyframes loadingCircle { - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -`;return Ye.useInsertStyles=function(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:g,p=(0,i.useContext)(u.default),C=p.csp;(0,i.useEffect)(function(){(0,l.updateCSS)(f,"@ant-design-icons",{prepend:!0,csp:C})},[])},Ye}var qc;function Mh(){if(qc)return _n;qc=1;var e=J;Object.defineProperty(_n,"__esModule",{value:!0}),_n.default=void 0;var t=e(Sh()),r=e(He),n=Qu(),a=["icon","className","onClick","style","primaryColor","secondaryColor"],i={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1};function o(s){var c=s.primaryColor,d=s.secondaryColor;i.primaryColor=c,i.secondaryColor=d||(0,n.getSecondaryColor)(c),i.calculated=!!d}function l(){return(0,r.default)({},i)}var u=function(c){var d=c.icon,h=c.className,E=c.onClick,S=c.style,M=c.primaryColor,T=c.secondaryColor,_=(0,t.default)(c,a),g=i;if(M&&(g={primaryColor:M,secondaryColor:T||(0,n.getSecondaryColor)(M)}),(0,n.useInsertStyles)(),(0,n.warning)((0,n.isIconDefinition)(d),"icon should be icon definiton, but got ".concat(d)),!(0,n.isIconDefinition)(d))return null;var x=d;return x&&typeof x.icon=="function"&&(x=(0,r.default)((0,r.default)({},x),{},{icon:x.icon(g.primaryColor,g.secondaryColor)})),(0,n.generate)(x.icon,"svg-".concat(x.name),(0,r.default)({className:h,onClick:E,style:S,"data-icon":x.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},_))};return u.displayName="IconReact",u.getTwoToneColors=l,u.setTwoToneColors=o,_n.default=u,_n}var wn={},Wc;function Ty(){if(Wc)return wn;Wc=1;var e=J;Object.defineProperty(wn,"__esModule",{value:!0}),wn.getTwoToneColor=i,wn.setTwoToneColor=a;var t=e(ur),r=e(Mh()),n=Qu();function a(o){var l=(0,n.normalizeTwoToneColors)(o),u=(0,t.default)(l,2),s=u[0],c=u[1];return r.default.setTwoToneColors({primaryColor:s,secondaryColor:c})}function i(){var o=r.default.getTwoToneColors();return o.calculated?[o.primaryColor,o.secondaryColor]:o.primaryColor}return wn}var Uc;function jt(){if(Uc)return Cn;Uc=1;var e=J,t=we;Object.defineProperty(Cn,"__esModule",{value:!0}),Cn.default=void 0;var r=e(He),n=e(ur),a=e(bt),i=e(Sh()),o=S(re),l=e(Wt),u=e(Zr),s=e(Mh()),c=Ty(),d=Qu(),h=["className","icon","spin","rotate","tabIndex","onClick","twoToneColor"];function E(T){if(typeof WeakMap!="function")return null;var _=new WeakMap,g=new WeakMap;return(E=function(f){return f?g:_})(T)}function S(T,_){if(!_&&T&&T.__esModule)return T;if(T===null||t(T)!="object"&&typeof T!="function")return{default:T};var g=E(_);if(g&&g.has(T))return g.get(T);var x={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var p in T)if(p!=="default"&&{}.hasOwnProperty.call(T,p)){var C=f?Object.getOwnPropertyDescriptor(T,p):null;C&&(C.get||C.set)?Object.defineProperty(x,p,C):x[p]=T[p]}return x.default=T,g&&g.set(T,x),x}(0,c.setTwoToneColor)("#1890ff");var M=o.forwardRef(function(T,_){var g=T.className,x=T.icon,f=T.spin,p=T.rotate,C=T.tabIndex,b=T.onClick,v=T.twoToneColor,y=(0,i.default)(T,h),O=o.useContext(u.default),k=O.prefixCls,L=k===void 0?"anticon":k,N=O.rootClassName,B=(0,l.default)(N,L,(0,a.default)((0,a.default)({},"".concat(L,"-").concat(x.name),!!x.name),"".concat(L,"-spin"),!!f||x.name==="loading"),g),F=C;F===void 0&&b&&(F=-1);var K=p?{msTransform:"rotate(".concat(p,"deg)"),transform:"rotate(".concat(p,"deg)")}:void 0,q=(0,d.normalizeTwoToneColors)(v),$=(0,n.default)(q,2),j=$[0],U=$[1];return o.createElement("span",(0,r.default)((0,r.default)({role:"img","aria-label":x.name},y),{},{ref:_,tabIndex:F,onClick:b,className:B}),o.createElement(s.default,{icon:x,primaryColor:j,secondaryColor:U,style:K}))});return M.displayName="AntdIcon",M.getTwoToneColor=c.getTwoToneColor,M.setTwoToneColor=c.setTwoToneColor,Cn.default=M,Cn}var Gu=J,Ny=we;Object.defineProperty(ga,"__esModule",{value:!0});ga.default=void 0;var Xc=Gu(He),Rh=My(re),Iy=Gu(dy()),Dy=Gu(jt());function kh(e){if(typeof WeakMap!="function")return null;var t=new WeakMap,r=new WeakMap;return(kh=function(a){return a?r:t})(e)}function My(e,t){if(!t&&e&&e.__esModule)return e;if(e===null||Ny(e)!="object"&&typeof e!="function")return{default:e};var r=kh(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(i!=="default"&&{}.hasOwnProperty.call(e,i)){var o=a?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(n,i,o):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}var Ry=function(t,r){return Rh.createElement(Dy.default,(0,Xc.default)((0,Xc.default)({},t),{},{ref:r,icon:Iy.default}))},ky=Rh.forwardRef(Ry);ga.default=ky;(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(ga);function n(i){return i&&i.__esModule?i:{default:i}}var a=r;t.default=a,e.exports=a})(kl,kl.exports);var Lh=kl.exports,jl={exports:{}},xa={},hi={},Vc;function Ly(){if(Vc)return hi;Vc=1,Object.defineProperty(hi,"__esModule",{value:!0});var e={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm0 76c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm128.01 198.83c.03 0 .05.01.09.06l45.02 45.01a.2.2 0 01.05.09.12.12 0 010 .07c0 .02-.01.04-.05.08L557.25 512l127.87 127.86a.27.27 0 01.05.06v.02a.12.12 0 010 .07c0 .03-.01.05-.05.09l-45.02 45.02a.2.2 0 01-.09.05.12.12 0 01-.07 0c-.02 0-.04-.01-.08-.05L512 557.25 384.14 685.12c-.04.04-.06.05-.08.05a.12.12 0 01-.07 0c-.03 0-.05-.01-.09-.05l-45.02-45.02a.2.2 0 01-.05-.09.12.12 0 010-.07c0-.02.01-.04.06-.08L466.75 512 338.88 384.14a.27.27 0 01-.05-.06l-.01-.02a.12.12 0 010-.07c0-.03.01-.05.05-.09l45.02-45.02a.2.2 0 01.09-.05.12.12 0 01.07 0c.02 0 .04.01.08.06L512 466.75l127.86-127.86c.04-.05.06-.06.08-.06a.12.12 0 01.07 0z"}}]},name:"close-circle",theme:"outlined"};return hi.default=e,hi}var Ju=J,jy=we;Object.defineProperty(xa,"__esModule",{value:!0});xa.default=void 0;var Hc=Ju(He),jh=$y(re),Ay=Ju(Ly()),Fy=Ju(jt());function Ah(e){if(typeof WeakMap!="function")return null;var t=new WeakMap,r=new WeakMap;return(Ah=function(a){return a?r:t})(e)}function $y(e,t){if(!t&&e&&e.__esModule)return e;if(e===null||jy(e)!="object"&&typeof e!="function")return{default:e};var r=Ah(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(i!=="default"&&{}.hasOwnProperty.call(e,i)){var o=a?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(n,i,o):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}var By=function(t,r){return jh.createElement(Fy.default,(0,Hc.default)((0,Hc.default)({},t),{},{ref:r,icon:Ay.default}))},zy=jh.forwardRef(By);xa.default=zy;(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(xa);function n(i){return i&&i.__esModule?i:{default:i}}var a=r;t.default=a,e.exports=a})(jl,jl.exports);var Fh=jl.exports,Al={exports:{}},Ca={},pi={},Yc;function qy(){if(Yc)return pi;Yc=1,Object.defineProperty(pi,"__esModule",{value:!0});var e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z"}}]},name:"exclamation-circle",theme:"outlined"};return pi.default=e,pi}var Zu=J,Wy=we;Object.defineProperty(Ca,"__esModule",{value:!0});Ca.default=void 0;var Kc=Zu(He),$h=Vy(re),Uy=Zu(qy()),Xy=Zu(jt());function Bh(e){if(typeof WeakMap!="function")return null;var t=new WeakMap,r=new WeakMap;return(Bh=function(a){return a?r:t})(e)}function Vy(e,t){if(!t&&e&&e.__esModule)return e;if(e===null||Wy(e)!="object"&&typeof e!="function")return{default:e};var r=Bh(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(i!=="default"&&{}.hasOwnProperty.call(e,i)){var o=a?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(n,i,o):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}var Hy=function(t,r){return $h.createElement(Xy.default,(0,Kc.default)((0,Kc.default)({},t),{},{ref:r,icon:Uy.default}))},Yy=$h.forwardRef(Hy);Ca.default=Yy;(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(Ca);function n(i){return i&&i.__esModule?i:{default:i}}var a=r;t.default=a,e.exports=a})(Al,Al.exports);var zh=Al.exports,Fl={exports:{}},_a={},vi={},Qc;function Ky(){if(Qc)return vi;Qc=1,Object.defineProperty(vi,"__esModule",{value:!0});var e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"}}]},name:"info-circle",theme:"outlined"};return vi.default=e,vi}var es=J,Qy=we;Object.defineProperty(_a,"__esModule",{value:!0});_a.default=void 0;var Gc=es(He),qh=Zy(re),Gy=es(Ky()),Jy=es(jt());function Wh(e){if(typeof WeakMap!="function")return null;var t=new WeakMap,r=new WeakMap;return(Wh=function(a){return a?r:t})(e)}function Zy(e,t){if(!t&&e&&e.__esModule)return e;if(e===null||Qy(e)!="object"&&typeof e!="function")return{default:e};var r=Wh(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(i!=="default"&&{}.hasOwnProperty.call(e,i)){var o=a?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(n,i,o):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n}var e0=function(t,r){return qh.createElement(Jy.default,(0,Gc.default)((0,Gc.default)({},t),{},{ref:r,icon:Gy.default}))},t0=qh.forwardRef(e0);_a.default=t0;(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(_a);function n(i){return i&&i.__esModule?i:{default:i}}var a=r;t.default=a,e.exports=a})(Fl,Fl.exports);var Uh=Fl.exports,tn={},Xh={exports:{}},Vh={exports:{}};(function(e){function t(r,n){this.v=r,this.k=n}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(Vh);var Hh=Vh.exports,Yh={exports:{}},Kh={exports:{}};(function(e){function t(r,n,a,i){var o=Object.defineProperty;try{o({},"",{})}catch{o=0}e.exports=t=function(u,s,c,d){function h(E,S){t(u,E,function(M){return this._invoke(E,S,M)})}s?o?o(u,s,{value:c,enumerable:!d,configurable:!d,writable:!d}):u[s]=c:(h("next",0),h("throw",1),h("return",2))},e.exports.__esModule=!0,e.exports.default=e.exports,t(r,n,a,i)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(Kh);var Qh=Kh.exports;(function(e){var t=Qh;function r(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var n,a,i=typeof Symbol=="function"?Symbol:{},o=i.iterator||"@@iterator",l=i.toStringTag||"@@toStringTag";function u(T,_,g,x){var f=_&&_.prototype instanceof c?_:c,p=Object.create(f.prototype);return t(p,"_invoke",function(C,b,v){var y,O,k,L=0,N=v||[],B=!1,F={p:0,n:0,v:n,a:K,f:K.bind(n,4),d:function($,j){return y=$,O=0,k=n,F.n=j,s}};function K(q,$){for(O=q,k=$,a=0;!B&&L&&!j&&a3?(j=G===$)&&(k=U[(O=U[4])?5:(O=3,3)],U[4]=U[5]=n):U[0]<=Y&&((j=q<2&&Y$||$>G)&&(U[4]=q,U[5]=$,F.n=G,O=0))}if(j||q>1)return s;throw B=!0,$}return function(q,$,j){if(L>1)throw TypeError("Generator is already running");for(B&&$===1&&K($,j),O=$,k=j;(a=O<2?n:k)||!B;){y||(O?O<3?(O>1&&(F.n=-1),K(O,k)):F.n=k:F.v=k);try{if(L=2,y){if(O||(q="next"),a=y[q]){if(!(a=a.call(y,k)))throw TypeError("iterator result is not an object");if(!a.done)return a;k=a.value,O<2&&(O=0)}else O===1&&(a=y.return)&&a.call(y),O<2&&(k=TypeError("The iterator does not provide a '"+q+"' method"),O=1);y=n}else if((a=(B=F.n<0)?k:C.call(b,F))!==s)break}catch(U){y=n,O=1,k=U}finally{L=1}}return{value:a,done:B}}}(T,g,x),!0),p}var s={};function c(){}function d(){}function h(){}a=Object.getPrototypeOf;var E=[][o]?a(a([][o]())):(t(a={},o,function(){return this}),a),S=h.prototype=c.prototype=Object.create(E);function M(T){return Object.setPrototypeOf?Object.setPrototypeOf(T,h):(T.__proto__=h,t(T,l,"GeneratorFunction")),T.prototype=Object.create(S),T}return d.prototype=h,t(S,"constructor",h),t(h,"constructor",d),d.displayName="GeneratorFunction",t(h,l,"GeneratorFunction"),t(S),t(S,l,"Generator"),t(S,o,function(){return this}),t(S,"toString",function(){return"[object Generator]"}),(e.exports=r=function(){return{w:u,m:M}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports})(Yh);var Gh=Yh.exports,Jh={exports:{}},Zh={exports:{}},ep={exports:{}};(function(e){var t=Hh,r=Qh;function n(a,i){function o(u,s,c,d){try{var h=a[u](s),E=h.value;return E instanceof t?i.resolve(E.v).then(function(S){o("next",S,c,d)},function(S){o("throw",S,c,d)}):i.resolve(E).then(function(S){h.value=S,c(h)},function(S){return o("throw",S,c,d)})}catch(S){d(S)}}var l;this.next||(r(n.prototype),r(n.prototype,typeof Symbol=="function"&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),r(this,"_invoke",function(u,s,c){function d(){return new i(function(h,E){o(u,c,h,E)})}return l=l?l.then(d,d):d()},!0)}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports})(ep);var tp=ep.exports;(function(e){var t=Gh,r=tp;function n(a,i,o,l,u){return new r(t().w(a,i,o,l),u||Promise)}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports})(Zh);var rp=Zh.exports;(function(e){var t=rp;function r(n,a,i,o,l){var u=t(n,a,i,o,l);return u.next().then(function(s){return s.done?s.value:u.next()})}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports})(Jh);var r0=Jh.exports,np={exports:{}};(function(e){function t(r){var n=Object(r),a=[];for(var i in n)a.unshift(i);return function o(){for(;a.length;)if((i=a.pop())in n)return o.value=i,o.done=!1,o;return o.done=!0,o}}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(np);var n0=np.exports,ip={exports:{}};(function(e){var t=we.default;function r(n){if(n!=null){var a=n[typeof Symbol=="function"&&Symbol.iterator||"@@iterator"],i=0;if(a)return a.call(n);if(typeof n.next=="function")return n;if(!isNaN(n.length))return{next:function(){return n&&i>=n.length&&(n=void 0),{value:n&&n[i++],done:!n}}}}throw new TypeError(t(n)+" is not iterable")}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports})(ip);var i0=ip.exports;(function(e){var t=Hh,r=Gh,n=r0,a=rp,i=tp,o=n0,l=i0;function u(){var s=r(),c=s.m(u),d=(Object.getPrototypeOf?Object.getPrototypeOf(c):c.__proto__).constructor;function h(M){var T=typeof M=="function"&&M.constructor;return!!T&&(T===d||(T.displayName||T.name)==="GeneratorFunction")}var E={throw:1,return:2,break:3,continue:3};function S(M){var T,_;return function(g){T||(T={stop:function(){return _(g.a,2)},catch:function(){return g.v},abrupt:function(f,p){return _(g.a,E[f],p)},delegateYield:function(f,p,C){return T.resultName=p,_(g.d,l(f),C)},finish:function(f){return _(g.f,f)}},_=function(f,p,C){g.p=T.prev,g.n=T.next;try{return f(p,C)}finally{T.next=g.n}}),T.resultName&&(T[T.resultName]=g.v,T.resultName=void 0),T.sent=g.v,T.next=g.n;try{return M.call(this,T)}finally{g.p=T.prev,g.n=T.next}}}return(e.exports=u=function(){return{wrap:function(_,g,x,f){return s.w(S(_),g,x,f&&f.reverse())},isGeneratorFunction:h,mark:s.m,awrap:function(_,g){return new t(_,g)},AsyncIterator:i,async:function(_,g,x,f,p){return(h(g)?a:n)(S(_),g,x,f,p)},keys:o,values:l}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=u,e.exports.__esModule=!0,e.exports.default=e.exports})(Xh);var ap=Xh.exports,op={exports:{}};(function(e){function t(n,a,i,o,l,u,s){try{var c=n[u](s),d=c.value}catch(h){return void i(h)}c.done?a(d):Promise.resolve(d).then(o,l)}function r(n){return function(){var a=this,i=arguments;return new Promise(function(o,l){var u=n.apply(a,i);function s(d){t(u,o,l,s,c,"next",d)}function c(d){t(u,o,l,s,c,"throw",d)}s(void 0)})}}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports})(op);var a0=op.exports,o0=be.default,wa=J.default;Object.defineProperty(tn,"__esModule",{value:!0});tn._r=v0;tn._u=x0;tn.render=m0;tn.unmount=C0;var ia=wa(ap),lp=wa(a0),l0=wa(we),u0=wa(He),s0=o0(Sf),zn=(0,u0.default)({},s0),c0=zn.version,Yo=zn.render,f0=zn.unmountComponentAtNode,ba;try{var d0=Number((c0||"").split(".")[0]);d0>=18&&(ba=zn.createRoot)}catch{}function Jc(e){var t=zn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;t&&(0,l0.default)(t)==="object"&&(t.usingClientEntryPoint=e)}var aa="__rc_react_root__";function h0(e,t){Jc(!0);var r=t[aa]||ba(t);Jc(!1),r.render(e),t[aa]=r}function p0(e,t){Yo==null||Yo(e,t)}function v0(e,t){}function m0(e,t){if(ba){h0(e,t);return}p0(e,t)}function g0(e){return $l.apply(this,arguments)}function $l(){return $l=(0,lp.default)((0,ia.default)().mark(function e(t){return(0,ia.default)().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",Promise.resolve().then(function(){var a;(a=t[aa])===null||a===void 0||a.unmount(),delete t[aa]}));case 1:case"end":return n.stop()}},e)})),$l.apply(this,arguments)}function y0(e){f0(e)}function x0(e){}function C0(e){return Bl.apply(this,arguments)}function Bl(){return Bl=(0,lp.default)((0,ia.default)().mark(function e(t){return(0,ia.default)().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:if(ba===void 0){n.next=2;break}return n.abrupt("return",g0(t));case 2:y0(t);case 3:case"end":return n.stop()}},e)})),Bl.apply(this,arguments)}var Ko={},Sa={},_0=be.default;Object.defineProperty(Sa,"__esModule",{value:!0});Sa.default=b0;var w0=_0(re);function b0(e,t,r){var n=w0.useRef({});return(!("value"in n.current)||r(n.current.condition,t))&&(n.current.value=e(),n.current.condition=t),n.current.value}var Ea={},up={exports:{}};(function(e){var t=Ch,r=ph,n=Wu,a=bh;function i(o){return t(o)||r(o)||n(o)||a()}e.exports=i,e.exports.__esModule=!0,e.exports.default=e.exports})(up);var S0=up.exports,ts={};Object.defineProperty(ts,"__esModule",{value:!0});ts.default=E0;function E0(e,t){for(var r=e,n=0;n3&&arguments[3]!==void 0?arguments[3]:!1;return t.length&&n&&r===void 0&&!(0,zl.default)(e,t.slice(0,-1))?e:fp(e,t,r,n)}function T0(e){return(0,sp.default)(e)==="object"&&e!==null&&Object.getPrototypeOf(e)===Object.prototype}function Zc(e){return Array.isArray(e)?[]:{}}var N0=typeof Reflect>"u"?Object.keys:Reflect.ownKeys;function I0(){for(var e=arguments.length,t=new Array(e),r=0;r1&&arguments[1]!==void 0?arguments[1]:x,U=arguments.length>2&&arguments[2]!==void 0?arguments[2]:f,Y;switch($){case"top":Y={left:"50%",transform:"translateX(-50%)",right:"auto",top:j,bottom:"auto"};break;case"topLeft":Y={left:0,top:j,bottom:"auto"};break;case"topRight":Y={right:0,top:j,bottom:"auto"};break;case"bottom":Y={left:"50%",transform:"translateX(-50%)",right:"auto",top:"auto",bottom:U};break;case"bottomLeft":Y={left:0,top:"auto",bottom:U};break;default:Y={right:0,top:"auto",bottom:U};break}return Y}function N($,j){var U=$.placement,Y=U===void 0?C:U,G=$.top,Z=$.bottom,ne=$.getContainer,ae=ne===void 0?b:ne,me=$.prefixCls,pe=(0,S.globalConfig)(),ue=pe.getPrefixCls,ce=pe.getIconPrefixCls,xe=ue("notification",me||p),Le=ce(),Ce="".concat(xe,"-").concat(Y),ze=_[Ce];if(ze){Promise.resolve(ze).then(function(oe){j({prefixCls:"".concat(xe,"-notice"),iconPrefixCls:Le,instance:oe})});return}var ge=(0,d.default)("".concat(xe,"-").concat(Y),(0,i.default)({},"".concat(xe,"-rtl"),y===!0));_[Ce]=new Promise(function(oe){h.default.newInstance({prefixCls:xe,className:ge,style:L(Y,G,Z),getContainer:ae,maxCount:O},function(se){oe(se),j({prefixCls:"".concat(xe,"-notice"),iconPrefixCls:Le,instance:se})})})}var B={success:o.default,info:c.default,error:l.default,warning:s.default};function F($,j,U){var Y=$.duration,G=$.icon,Z=$.type,ne=$.description,ae=$.message,me=$.btn,pe=$.onClose,ue=$.onClick,ce=$.key,xe=$.style,Le=$.className,Ce=$.closeIcon,ze=Ce===void 0?v:Ce,ge=$.props,oe=Y===void 0?g:Y,se=null;G?se=E.createElement("span",{className:"".concat(j,"-icon")},$.icon):Z&&(se=E.createElement(B[Z]||null,{className:"".concat(j,"-icon ").concat(j,"-icon-").concat(Z)}));var Fe=typeof ze>"u"?E.createElement("span",{className:"".concat(j,"-close-x")},E.createElement(u.default,{className:"".concat(j,"-close-icon")})):ze,ot=!ne&&se?E.createElement("span",{className:"".concat(j,"-message-single-line-auto-margin")}):null;return{content:E.createElement(S.default,{iconPrefixCls:U},E.createElement("div",{className:se?"".concat(j,"-with-icon"):"",role:"alert"},se,E.createElement("div",{className:"".concat(j,"-message")},ot,ae),E.createElement("div",{className:"".concat(j,"-description")},ne),me?E.createElement("span",{className:"".concat(j,"-btn")},me):null)),duration:oe,closable:!0,closeIcon:Fe,onClose:pe,onClick:ue,key:ce,style:xe||{},className:(0,d.default)(Le,(0,i.default)({},"".concat(j,"-").concat(Z),!!Z)),props:ge}}function K($){N($,function(j){var U=j.prefixCls,Y=j.iconPrefixCls,G=j.instance;G.notice(F($,U,Y))})}var q={open:K,close:function(j){Object.keys(_).forEach(function(U){return Promise.resolve(_[U]).then(function(Y){Y.removeNotice(j)})})},config:k,destroy:function(){Object.keys(_).forEach(function(j){Promise.resolve(_[j]).then(function(U){U.destroy()}),delete _[j]})}};["success","info","warning","error"].forEach(function($){q[$]=function(j){return q.open((0,a.default)((0,a.default)({},j),{type:$}))}}),q.warn=q.warning,q.useNotification=(0,M.default)(N,F),e.getInstance=function(j){return T(void 0,void 0,void 0,(0,n.default)().mark(function U(){return(0,n.default)().wrap(function(G){for(;;)switch(G.prev=G.next){case 0:return G.abrupt("return",null);case 1:case"end":return G.stop()}},U)}))},e.default=q}(Zo)),Zo}var Or={},Bx=be.default,zx=J.default;Object.defineProperty(Or,"__esModule",{value:!0});Or.ConfigContext=Or.ConfigConsumer=void 0;Or.withConfigConsumer=Vx;var qx=zx(Ie),Yl=Bx(re),Wx=function(t,r){return r||(t?"ant-".concat(t):"ant")},Ux=Or.ConfigContext=Yl.createContext({getPrefixCls:Wx}),Xx=Or.ConfigConsumer=Ux.Consumer;function Vx(e){return function(r){var n=function(o){return Yl.createElement(Xx,null,function(l){var u=e.prefixCls,s=l.getPrefixCls,c=o.prefixCls,d=s(u,c);return Yl.createElement(r,(0,qx.default)({},l,o,{prefixCls:d}))})},a=r.constructor;return a&&a.displayName||r.name,n}}var Aa={};const Hx=Jr(Sm);var Kp=J.default;Object.defineProperty(Aa,"__esModule",{value:!0});Aa.getStyle=Qp;Aa.registerTheme=Gx;var Cf=Eh,tl=Hx,Yx=Kp(en),Kx=sr;Kp(cr);var Qx="-ant-".concat(Date.now(),"-").concat(Math.random());function Qp(e,t){var r={},n=function(c,d){var h=c.clone();return h=(d==null?void 0:d(h))||h,h.toRgbString()},a=function(c,d){var h=new tl.TinyColor(c),E=(0,Cf.generate)(h.toRgbString());r["".concat(d,"-color")]=n(h),r["".concat(d,"-color-disabled")]=E[1],r["".concat(d,"-color-hover")]=E[4],r["".concat(d,"-color-active")]=E[6],r["".concat(d,"-color-outline")]=h.clone().setAlpha(.2).toRgbString(),r["".concat(d,"-color-deprecated-bg")]=E[0],r["".concat(d,"-color-deprecated-border")]=E[2]};if(t.primaryColor){a(t.primaryColor,"primary");var i=new tl.TinyColor(t.primaryColor),o=(0,Cf.generate)(i.toRgbString());o.forEach(function(s,c){r["primary-".concat(c+1)]=s}),r["primary-color-deprecated-l-35"]=n(i,function(s){return s.lighten(35)}),r["primary-color-deprecated-l-20"]=n(i,function(s){return s.lighten(20)}),r["primary-color-deprecated-t-20"]=n(i,function(s){return s.tint(20)}),r["primary-color-deprecated-t-50"]=n(i,function(s){return s.tint(50)}),r["primary-color-deprecated-f-12"]=n(i,function(s){return s.setAlpha(s.getAlpha()*.12)});var l=new tl.TinyColor(o[0]);r["primary-color-active-deprecated-f-30"]=n(l,function(s){return s.setAlpha(s.getAlpha()*.3)}),r["primary-color-active-deprecated-d-02"]=n(l,function(s){return s.darken(2)})}t.successColor&&a(t.successColor,"success"),t.warningColor&&a(t.warningColor,"warning"),t.errorColor&&a(t.errorColor,"error"),t.infoColor&&a(t.infoColor,"info");var u=Object.keys(r).map(function(s){return"--".concat(e,"-").concat(s,": ").concat(r[s],";")});return` - :root { - `.concat(u.join(` -`),` - } - `).trim()}function Gx(e,t){var r=Qp(e,t);(0,Yx.default)()&&(0,Kx.updateCSS)(r,"".concat(Qx,"-dynamic-theme"))}var hs={};(function(e){var t=be.default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.DisabledContextProvider=void 0;var r=t(re),n=r.createContext(!1);e.DisabledContextProvider=function(i){var o=i.children,l=i.disabled,u=r.useContext(n);return r.createElement(n.Provider,{value:l??u},o)},e.default=n})(hs);var ps={};(function(e){var t=be.default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.SizeContextProvider=void 0;var r=t(re),n=r.createContext(void 0);e.SizeContextProvider=function(i){var o=i.children,l=i.size;return r.createElement(n.Consumer,null,function(u){return r.createElement(n.Provider,{value:l||u},o)})},e.default=n})(ps);var _f;function St(){return _f||(_f=1,function(e){var t=be.default,r=J.default;Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"ConfigConsumer",{enumerable:!0,get:function(){return S.ConfigConsumer}}),Object.defineProperty(e,"ConfigContext",{enumerable:!0,get:function(){return S.ConfigContext}}),e.globalConfig=e.defaultPrefixCls=e.defaultIconPrefixCls=e.default=e.configConsumerProps=void 0;var n=r(Ie),a=r(Zr),i=r(Sa),o=t(re),l=Ea,u=r(dp),s=t(hp),c=r(as),d=r(Oa),h=r(Xp()),E=r($x()),S=Or,M=Aa,T=hs,_=t(ps);e.configConsumerProps=["getTargetContainer","getPopupContainer","rootPrefixCls","getPrefixCls","renderEmpty","csp","autoInsertSpaceInButton","locale","pageHeader"];var g=["getTargetContainer","getPopupContainer","renderEmpty","pageHeader","input","pagination","form"],x=e.defaultPrefixCls="ant",f=e.defaultIconPrefixCls="anticon",p,C;function b(){return p||x}function v(){return C||f}var y=function(N){var B=N.prefixCls,F=N.iconPrefixCls,K=N.theme;B!==void 0&&(p=B),F!==void 0&&(C=F),K&&(0,M.registerTheme)(b(),K)};e.globalConfig=function(){return{getPrefixCls:function(B,F){return F||(B?"".concat(b(),"-").concat(B):b())},getIconPrefixCls:v,getRootPrefixCls:function(B,F){return B||p||(F&&F.includes("-")?F.replace(/^(.*)-[^-]*$/,"$1"):b())}}};var O=function(N){var B=N.children,F=N.csp,K=N.autoInsertSpaceInButton,q=N.form,$=N.locale,j=N.componentSize,U=N.direction,Y=N.space,G=N.virtual,Z=N.dropdownMatchSelectWidth,ne=N.legacyLocale,ae=N.parentContext,me=N.iconPrefixCls,pe=N.componentDisabled,ue=o.useCallback(function(ge,oe){var se=N.prefixCls;if(oe)return oe;var Fe=se||ae.getPrefixCls("");return ge?"".concat(Fe,"-").concat(ge):Fe},[ae.getPrefixCls,N.prefixCls]),ce=(0,n.default)((0,n.default)({},ae),{csp:F,autoInsertSpaceInButton:K,locale:$||ne,direction:U,space:Y,virtual:G,dropdownMatchSelectWidth:Z,getPrefixCls:ue});g.forEach(function(ge){var oe=N[ge];oe&&(ce[ge]=oe)});var xe=(0,i.default)(function(){return ce},ce,function(ge,oe){var se=Object.keys(ge),Fe=Object.keys(oe);return se.length!==Fe.length||se.some(function(ot){return ge[ot]!==oe[ot]})}),Le=o.useMemo(function(){return{prefixCls:me,csp:F}},[me,F]),Ce=B,ze=o.useMemo(function(){var ge,oe,se,Fe;return(0,l.merge)(((ge=d.default.Form)===null||ge===void 0?void 0:ge.defaultValidateMessages)||{},((se=(oe=xe.locale)===null||oe===void 0?void 0:oe.Form)===null||se===void 0?void 0:se.defaultValidateMessages)||{},((Fe=xe.form)===null||Fe===void 0?void 0:Fe.validateMessages)||{},(q==null?void 0:q.validateMessages)||{})},[xe,q==null?void 0:q.validateMessages]);return Object.keys(ze).length>0&&(Ce=o.createElement(u.default.Provider,{value:ze},B)),$&&(Ce=o.createElement(s.default,{locale:$,_ANT_MARK__:s.ANT_MARK},Ce)),(me||F)&&(Ce=o.createElement(a.default.Provider,{value:Le},Ce)),j&&(Ce=o.createElement(_.SizeContextProvider,{size:j},Ce)),pe!==void 0&&(Ce=o.createElement(T.DisabledContextProvider,{disabled:pe},Ce)),o.createElement(S.ConfigContext.Provider,{value:xe},Ce)},k=function(N){return o.useEffect(function(){N.direction&&(h.default.config({rtl:N.direction==="rtl"}),E.default.config({rtl:N.direction==="rtl"}))},[N.direction]),o.createElement(c.default,null,function(B,F,K){return o.createElement(S.ConfigConsumer,null,function(q){return o.createElement(O,(0,n.default)({parentContext:q,legacyLocale:K},N))})})};k.ConfigContext=S.ConfigContext,k.SizeContext=_.default,k.config=y,e.default=k}(Ko)),Ko}var Gp={},Jp={},vs={},Jx=be.default,Zx=J.default;Object.defineProperty(vs,"__esModule",{value:!0});vs.default=tC;var eC=Zx(ur),rl=Jx(re);function tC(e){var t=rl.useRef(!1),r=rl.useState(e),n=(0,eC.default)(r,2),a=n[0],i=n[1];rl.useEffect(function(){return t.current=!1,function(){t.current=!0}},[]);function o(l,u){u&&t.current||i(l)}return[a,o]}var ms={},Fa={},$a={};Object.defineProperty($a,"__esModule",{value:!0});$a.default=rC;function rC(e,t){var r=Object.assign({},e);return Array.isArray(t)&&t.forEach(function(n){delete r[n]}),r}var gs={},ys={},Ba={},nC=J.default;Object.defineProperty(Ba,"__esModule",{value:!0});Ba.default=uC;var iC=nC(we),aC=Symbol.for("react.element"),oC=Symbol.for("react.transitional.element"),lC=Symbol.for("react.fragment");function uC(e){return e&&(0,iC.default)(e)==="object"&&(e.$$typeof===aC||e.$$typeof===oC)&&e.type===lC}var Zp=J.default;Object.defineProperty(ys,"__esModule",{value:!0});ys.default=Kl;var sC=Zp(Ba),cC=Zp(re);function Kl(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=[];return cC.default.Children.forEach(e,function(n){n==null&&!t.keepEmpty||(Array.isArray(n)?r=r.concat(Kl(n)):(0,sC.default)(n)&&n.props?r=r.concat(Kl(n.props.children,t)):r.push(n))}),r}(function(e){var t=be.default,r=J.default;Object.defineProperty(e,"__esModule",{value:!0}),e.useCompactItemContext=e.default=e.SpaceCompactItemContext=e.NoCompactStyle=void 0;var n=r(Ie),a=r(bt),i=r(Wt),o=r(ys),l=t(re),u=St(),s=function(E,S){var M={};for(var T in E)Object.prototype.hasOwnProperty.call(E,T)&&S.indexOf(T)<0&&(M[T]=E[T]);if(E!=null&&typeof Object.getOwnPropertySymbols=="function")for(var _=0,T=Object.getOwnPropertySymbols(E);_=19)return!0;var a=(0,nl.isMemo)(t)?t.type.type:t.type;return!(typeof a=="function"&&!((r=a.prototype)!==null&&r!==void 0&&r.render)&&a.$$typeof!==nl.ForwardRef||typeof t=="function"&&!((n=t.prototype)!==null&&n!==void 0&&n.render)&&t.$$typeof!==nl.ForwardRef)};function _s(e){return(0,nv.isValidElement)(e)&&!(0,mC.default)(e)}Ze.supportNodeRef=function(t){return _s(t)&&CC(t)};Ze.getNodeRef=function(t){if(t&&_s(t)){var r=t;return r.props.propertyIsEnumerable("ref")?r.props.ref:r.ref}return null};var iv={},za={};Object.defineProperty(za,"__esModule",{value:!0});za.default=void 0;var av=function(t){return+setTimeout(t,16)},ov=function(t){return clearTimeout(t)};typeof window<"u"&&"requestAnimationFrame"in window&&(av=function(t){return window.requestAnimationFrame(t)},ov=function(t){return window.cancelAnimationFrame(t)});var wf=0,ws=new Map;function lv(e){ws.delete(e)}var uv=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;wf+=1;var n=wf;function a(i){if(i===0)lv(n),t();else{var o=av(function(){a(i-1)});ws.set(n,o)}}return a(r),n};uv.cancel=function(e){var t=ws.get(e);return lv(e),ov(t)};za.default=uv;(function(e){var t=J.default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=i;var r=t(za),n=0,a={};function i(o){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,u=n++,s=l;function c(){s-=1,s<=0?(o(),delete a[u]):a[u]=(0,r.default)(c)}return a[u]=(0,r.default)(c),u}i.cancel=function(l){l!==void 0&&(r.default.cancel(a[l]),delete a[l])},i.ids=a})(iv);(function(e){var t=be.default,r=J.default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=r(Dp),a=r(Rp),i=r(Wp),o=r(Bp),l=r(Fp),u=r(fs),s=r(jp),c=sr,d=Ze,h=t(re),E=St(),S=r(iv),M=fr;function T(C,b,v){return b=(0,l.default)(b),(0,i.default)(C,(0,o.default)()?Reflect.construct(b,v||[],(0,l.default)(C).constructor):b.apply(C,v))}var _;function g(C){return!C||C.offsetParent===null||C.hidden}function x(C){return C instanceof Document?C.body:Array.from(C.childNodes).find(function(b){return(b==null?void 0:b.nodeType)===Node.ELEMENT_NODE})}function f(C){var b=(C||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/);return b&&b[1]&&b[2]&&b[3]?!(b[1]===b[2]&&b[2]===b[3]):!0}var p=function(C){(0,s.default)(b,C);function b(){var v;return(0,n.default)(this,b),v=T(this,b,arguments),v.containerRef=h.createRef(),v.animationStart=!1,v.destroyed=!1,v.onClick=function(y,O){var k,L,N=v.props,B=N.insertExtraNode,F=N.disabled;if(!(F||!y||g(y)||y.className.includes("-leave"))){v.extraNode=document.createElement("div");var K=(0,u.default)(v),q=K.extraNode,$=v.context.getPrefixCls;q.className="".concat($(""),"-click-animating-node");var j=v.getAttributeName();if(y.setAttribute(j,"true"),O&&O!=="#fff"&&O!=="#ffffff"&&O!=="rgb(255, 255, 255)"&&O!=="rgba(255, 255, 255, 1)"&&f(O)&&!/rgba\((?:\d*, ){3}0\)/.test(O)&&O!=="transparent"){q.style.borderColor=O;var U=((k=y.getRootNode)===null||k===void 0?void 0:k.call(y))||y.ownerDocument,Y=(L=x(U))!==null&&L!==void 0?L:U;_=(0,c.updateCSS)(` - [`.concat($(""),"-click-animating-without-extra-node='true']::after, .").concat($(""),`-click-animating-node { - --antd-wave-shadow-color: `).concat(O,`; - }`),"antd-wave",{csp:v.csp,attachTo:Y})}B&&y.appendChild(q),["transition","animation"].forEach(function(G){y.addEventListener("".concat(G,"start"),v.onTransitionStart),y.addEventListener("".concat(G,"end"),v.onTransitionEnd)})}},v.onTransitionStart=function(y){if(!v.destroyed){var O=v.containerRef.current;!y||y.target!==O||v.animationStart||v.resetEffect(O)}},v.onTransitionEnd=function(y){!y||y.animationName!=="fadeEffect"||v.resetEffect(y.target)},v.bindAnimationEvent=function(y){if(!(!y||!y.getAttribute||y.getAttribute("disabled")||y.className.includes("disabled"))){var O=function(L){if(!(L.target.tagName==="INPUT"||g(L.target))){v.resetEffect(y);var N=getComputedStyle(y).getPropertyValue("border-top-color")||getComputedStyle(y).getPropertyValue("border-color")||getComputedStyle(y).getPropertyValue("background-color");v.clickWaveTimeoutId=window.setTimeout(function(){return v.onClick(y,N)},0),S.default.cancel(v.animationStartId),v.animationStart=!0,v.animationStartId=(0,S.default)(function(){v.animationStart=!1},10)}};return y.addEventListener("click",O,!0),{cancel:function(){y.removeEventListener("click",O,!0)}}}},v.renderWave=function(y){var O=y.csp,k=v.props.children;if(v.csp=O,!h.isValidElement(k))return k;var L=v.containerRef;return(0,d.supportRef)(k)&&(L=(0,d.composeRef)(k.ref,v.containerRef)),(0,M.cloneElement)(k,{ref:L})},v}return(0,a.default)(b,[{key:"componentDidMount",value:function(){this.destroyed=!1;var y=this.containerRef.current;!y||y.nodeType!==1||(this.instance=this.bindAnimationEvent(y))}},{key:"componentWillUnmount",value:function(){this.instance&&this.instance.cancel(),this.clickWaveTimeoutId&&clearTimeout(this.clickWaveTimeoutId),this.destroyed=!0}},{key:"getAttributeName",value:function(){var y=this.context.getPrefixCls,O=this.props.insertExtraNode;return O?"".concat(y(""),"-click-animating"):"".concat(y(""),"-click-animating-without-extra-node")}},{key:"resetEffect",value:function(y){var O=this;if(!(!y||y===this.extraNode||!(y instanceof Element))){var k=this.props.insertExtraNode,L=this.getAttributeName();y.setAttribute(L,"false"),_&&(_.innerHTML=""),k&&this.extraNode&&y.contains(this.extraNode)&&y.removeChild(this.extraNode),["transition","animation"].forEach(function(N){y.removeEventListener("".concat(N,"start"),O.onTransitionStart),y.removeEventListener("".concat(N,"end"),O.onTransitionEnd)})}}},{key:"render",value:function(){return h.createElement(E.ConfigConsumer,null,this.renderWave)}}]),b}(h.Component);p.contextType=E.ConfigContext,e.default=p})(rv);var sv={};(function(e){var t=be.default,r=J.default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.GroupSizeContext=void 0;var n=r(Ie),a=r(bt),i=r(Wt),o=t(re),l=St();r(cr);var u=function(d,h){var E={};for(var S in d)Object.prototype.hasOwnProperty.call(d,S)&&h.indexOf(S)<0&&(E[S]=d[S]);if(d!=null&&typeof Object.getOwnPropertySymbols=="function")for(var M=0,S=Object.getOwnPropertySymbols(d);M{document.fonts.ready.then(()=>{u(document.fonts.check("40px Emmentaler-26"))})},[]);const c=Object.keys(l);return e.jsxs("div",{className:"font-test-page",children:[e.jsxs("div",{className:"font-test-header",children:[e.jsx("h1",{children:"Emmentaler-26 Font Glyphs"}),e.jsxs("div",{className:"font-test-status",children:["Font status: ",e.jsx("span",{className:o?"loaded":"not-loaded",children:o?"Loaded":"Not loaded"}),e.jsxs("span",{className:"glyph-count",children:[Object.values(l).reduce((s,n)=>s+n.length,0)," glyphs"]})]}),e.jsxs("div",{className:"font-test-controls",children:[e.jsx("input",{type:"text",placeholder:"Filter glyphs...",value:E,onChange:s=>h(s.target.value)}),e.jsxs("label",{children:["Size:",e.jsx("input",{type:"range",min:20,max:80,value:r,onChange:s=>m(Number(s.target.value))}),r,"px"]})]}),e.jsx("div",{className:"font-test-toc",children:c.map(s=>e.jsxs("a",{href:`#cat-${s}`,children:[i[s]||s," (",l[s].length,")"]},s))})]}),c.map(s=>{const n=l[s].filter(([a,t])=>!E||a.toLowerCase().includes(E.toLowerCase())||t.toLowerCase().includes(E.toLowerCase()));return n.length===0?null:e.jsxs("div",{id:`cat-${s}`,className:"font-test-category",children:[e.jsxs("h2",{children:[i[s]||s," ",e.jsxs("span",{children:["(",n.length,")"]})]}),e.jsx("div",{className:"glyph-grid",children:n.map(([a,t])=>e.jsxs("div",{className:"glyph-cell",title:a,children:[e.jsx("div",{className:"glyph-render",style:{fontSize:r},children:e.jsx("i",{className:`emmentaler glyph-${a}`})}),e.jsx("div",{className:"glyph-unicode",style:{fontSize:r},children:String.fromCodePoint(parseInt(t,16))}),e.jsx("div",{className:"glyph-name",children:a}),e.jsxs("div",{className:"glyph-code",children:["U+",t]})]},`${a}-${t}`))})]},s)})]})}export{f as default}; +import{r as d,j as e}from"./umi-2135699e.js";const l={rests:[["rests-0","E000"],["rests-1","E001"],["rests-0o","E002"],["rests-1o","E003"],["rests-M3","E004"],["rests-M2","E005"],["rests-M1","E006"],["rests-M1o","E007"],["rests-2","E008"],["rests-2classical","E009"],["rests-2z","E00A"],["rests-3","E00B"],["rests-4","E00C"],["rests-5","E00D"],["rests-6","E00E"],["rests-7","E00F"],["rests-8","E010"],["rests-9","E011"],["rests-10","E012"],["rests-M3neomensural","E144"],["rests-M2neomensural","E145"],["rests-M1neomensural","E146"],["rests-0neomensural","E147"],["rests-1neomensural","E148"],["rests-2neomensural","E149"],["rests-3neomensural","E14A"],["rests-4neomensural","E14B"],["rests-M3mensural","E14C"],["rests-M2mensural","E14D"],["rests-M1mensural","E14E"],["rests-0mensural","E14F"],["rests-1mensural","E150"],["rests-2mensural","E151"],["rests-3mensural","E152"],["rests-4mensural","E153"]],accidentals:[["accidentals-sharp","E013"],["accidentals-sharp-arrowup","E014"],["accidentals-sharp-arrowdown","E015"],["accidentals-sharp-arrowboth","E016"],["accidentals-sharp-slashslash-stem","E017"],["accidentals-sharp-slashslashslash-stemstem","E018"],["accidentals-sharp-slashslashslash-stem","E019"],["accidentals-sharp-slash-stem","E01A"],["accidentals-sharp-slashslash-stemstemstem","E01B"],["accidentals-doublesharp","E01C"],["accidentals-natural","E01D"],["accidentals-natural-arrowup","E01E"],["accidentals-natural-arrowdown","E01F"],["accidentals-natural-arrowboth","E020"],["accidentals-flat","E021"],["accidentals-flat-arrowup","E022"],["accidentals-flat-arrowdown","E023"],["accidentals-flat-arrowboth","E024"],["accidentals-flat-slash","E025"],["accidentals-flat-slashslash","E026"],["accidentals-mirroredflat-flat","E027"],["accidentals-mirroredflat","E028"],["accidentals-mirroredflat-backslash","E029"],["accidentals-flatflat","E02A"],["accidentals-flatflat-slash","E02B"],["accidentals-rightparen","E02C"],["accidentals-leftparen","E02D"],["accidentals-medicaeaM1","E194"],["accidentals-vaticanaM1","E195"],["accidentals-vaticana0","E196"],["accidentals-mensural1","E197"],["accidentals-mensuralM1","E198"],["accidentals-hufnagelM1","E199"],["accidentals-kievan1","E19A"],["accidentals-kievanM1","E19B"]],arrowheads:[["arrowheads-open-01","E02E"],["arrowheads-open-0M1","E02F"],["arrowheads-open-11","E030"],["arrowheads-open-1M1","E031"],["arrowheads-close-01","E032"],["arrowheads-close-0M1","E033"],["arrowheads-close-11","E034"],["arrowheads-close-1M1","E035"]],dot:[["dot","E036"]],scripts:[["scripts-ufermata","E037"],["scripts-dfermata","E038"],["scripts-uhenzeshortfermata","E039"],["scripts-dhenzeshortfermata","E03A"],["scripts-uhenzelongfermata","E03B"],["scripts-dhenzelongfermata","E03C"],["scripts-ushortfermata","E03D"],["scripts-dshortfermata","E03E"],["scripts-uveryshortfermata","E03F"],["scripts-dveryshortfermata","E040"],["scripts-ulongfermata","E041"],["scripts-dlongfermata","E042"],["scripts-uverylongfermata","E043"],["scripts-dverylongfermata","E044"],["scripts-thumb","E045"],["scripts-sforzato","E046"],["scripts-espr","E047"],["scripts-staccato","E048"],["scripts-ustaccatissimo","E049"],["scripts-dstaccatissimo","E04A"],["scripts-tenuto","E04B"],["scripts-uportato","E04C"],["scripts-dportato","E04D"],["scripts-umarcato","E04E"],["scripts-dmarcato","E04F"],["scripts-open","E050"],["scripts-halfopen","E051"],["scripts-halfopenvertical","E052"],["scripts-stopped","E053"],["scripts-upbow","E054"],["scripts-downbow","E055"],["scripts-reverseturn","E056"],["scripts-turn","E057"],["scripts-slashturn","E058"],["scripts-haydnturn","E059"],["scripts-trill","E05A"],["scripts-upedalheel","E05B"],["scripts-dpedalheel","E05C"],["scripts-upedaltoe","E05D"],["scripts-dpedaltoe","E05E"],["scripts-flageolet","E05F"],["scripts-segno","E060"],["scripts-varsegno","E061"],["scripts-coda","E062"],["scripts-varcoda","E063"],["scripts-rcomma","E064"],["scripts-lcomma","E065"],["scripts-rvarcomma","E066"],["scripts-lvarcomma","E067"],["scripts-arpeggio","E068"],["scripts-trill_element","E069"],["scripts-arpeggio-arrow-M1","E06A"],["scripts-arpeggio-arrow-1","E06B"],["scripts-trillelement","E06C"],["scripts-prall","E06D"],["scripts-mordent","E06E"],["scripts-prallprall","E06F"],["scripts-prallmordent","E070"],["scripts-upprall","E071"],["scripts-upmordent","E072"],["scripts-prallup","E073"],["scripts-downprall","E074"],["scripts-downmordent","E075"],["scripts-pralldown","E076"],["scripts-lineprall","E077"],["scripts-caesura-curved","E078"],["scripts-caesura-straight","E079"],["scripts-tickmark","E07A"],["scripts-snappizzicato","E07B"],["scripts-ictus","E1CA"],["scripts-uaccentus","E1CB"],["scripts-daccentus","E1CC"],["scripts-usemicirculus","E1CD"],["scripts-dsemicirculus","E1CE"],["scripts-circulus","E1CF"],["scripts-augmentum","E1D0"],["scripts-usignumcongruentiae","E1D1"],["scripts-dsignumcongruentiae","E1D2"],["scripts-barline-kievan","E1D3"]],clefs:[["clefs-C","E07C"],["clefs-C_change","E07D"],["clefs-varC","E07E"],["clefs-varC_change","E07F"],["clefs-F","E080"],["clefs-F_change","E081"],["clefs-G","E082"],["clefs-G_change","E083"],["clefs-GG","E084"],["clefs-GG_change","E085"],["clefs-tenorG","E086"],["clefs-tenorG_change","E087"],["clefs-percussion","E088"],["clefs-percussion_change","E089"],["clefs-varpercussion","E08A"],["clefs-varpercussion_change","E08B"],["clefs-tab","E08C"],["clefs-tab_change","E08D"],["clefs-vaticana-do","E154"],["clefs-vaticana-do_change","E155"],["clefs-vaticana-fa","E156"],["clefs-vaticana-fa_change","E157"],["clefs-medicaea-do","E158"],["clefs-medicaea-do_change","E159"],["clefs-medicaea-fa","E15A"],["clefs-medicaea-fa_change","E15B"],["clefs-neomensural-c","E15C"],["clefs-neomensural-c_change","E15D"],["clefs-petrucci-c1","E15E"],["clefs-petrucci-c1_change","E15F"],["clefs-petrucci-c2","E160"],["clefs-petrucci-c2_change","E161"],["clefs-petrucci-c3","E162"],["clefs-petrucci-c3_change","E163"],["clefs-petrucci-c4","E164"],["clefs-petrucci-c4_change","E165"],["clefs-petrucci-c5","E166"],["clefs-petrucci-c5_change","E167"],["clefs-mensural-c","E168"],["clefs-mensural-c_change","E169"],["clefs-blackmensural-c","E16A"],["clefs-blackmensural-c_change","E16B"],["clefs-petrucci-f","E16C"],["clefs-petrucci-f_change","E16D"],["clefs-mensural-f","E16E"],["clefs-mensural-f_change","E16F"],["clefs-petrucci-g","E170"],["clefs-petrucci-g_change","E171"],["clefs-mensural-g","E172"],["clefs-mensural-g_change","E173"],["clefs-hufnagel-do","E174"],["clefs-hufnagel-do_change","E175"],["clefs-hufnagel-fa","E176"],["clefs-hufnagel-fa_change","E177"],["clefs-hufnagel-do-fa","E178"],["clefs-hufnagel-do-fa_change","E179"],["clefs-kievan-do","E17A"],["clefs-kievan-do_change","E17B"]],timesig:[["timesig-C44","E08E"],["timesig-C22","E08F"],["timesig-mensural44","E1B4"],["timesig-mensural22","E1B5"],["timesig-mensural32","E1B6"],["timesig-mensural64","E1B7"],["timesig-mensural94","E1B8"],["timesig-mensural34","E1B9"],["timesig-mensural68","E1BA"],["timesig-mensural98","E1BB"],["timesig-mensural48","E1BC"],["timesig-mensural68alt","E1BD"],["timesig-mensural24","E1BE"],["timesig-neomensural44","E1BF"],["timesig-neomensural22","E1C0"],["timesig-neomensural32","E1C1"],["timesig-neomensural64","E1C2"],["timesig-neomensural94","E1C3"],["timesig-neomensural34","E1C4"],["timesig-neomensural68","E1C5"],["timesig-neomensural98","E1C6"],["timesig-neomensural48","E1C7"],["timesig-neomensural68alt","E1C8"],["timesig-neomensural24","E1C9"]],pedal:[["pedal-star","E090"],["pedal-M","E091"],["pedal--","E092"],["pedal-P","E093"],["pedal-d","E094"],["pedal-e","E095"],["pedal-Ped","E096"]],brackettips:[["brackettips-up","E097"],["brackettips-down","E098"]],accordion:[["accordion-discant","E099"],["accordion-dot","E09A"],["accordion-freebass","E09B"],["accordion-stdbass","E09C"],["accordion-bayanbass","E09D"],["accordion-oldEE","E09E"],["accordion-push","E09F"],["accordion-pull","E0A0"]],ties:[["ties-lyric-short","E0A1"],["ties-lyric-default","E0A2"]],noteheads:[["noteheads-uM2","E0A3"],["noteheads-dM2","E0A4"],["noteheads-sM1","E0A5"],["noteheads-sM1double","E0A6"],["noteheads-s0","E0A7"],["noteheads-s1","E0A8"],["noteheads-s2","E0A9"],["noteheads-s0diamond","E0AA"],["noteheads-s1diamond","E0AB"],["noteheads-s2diamond","E0AC"],["noteheads-s0triangle","E0AD"],["noteheads-d1triangle","E0AE"],["noteheads-u1triangle","E0AF"],["noteheads-u2triangle","E0B0"],["noteheads-d2triangle","E0B1"],["noteheads-s0slash","E0B2"],["noteheads-s1slash","E0B3"],["noteheads-s2slash","E0B4"],["noteheads-s0cross","E0B5"],["noteheads-s1cross","E0B6"],["noteheads-s2cross","E0B7"],["noteheads-s2xcircle","E0B8"],["noteheads-s0do","E0B9"],["noteheads-d1do","E0BA"],["noteheads-u1do","E0BB"],["noteheads-d2do","E0BC"],["noteheads-u2do","E0BD"],["noteheads-s0doThin","E0BE"],["noteheads-d1doThin","E0BF"],["noteheads-u1doThin","E0C0"],["noteheads-d2doThin","E0C1"],["noteheads-u2doThin","E0C2"],["noteheads-s0re","E0C3"],["noteheads-u1re","E0C4"],["noteheads-d1re","E0C5"],["noteheads-u2re","E0C6"],["noteheads-d2re","E0C7"],["noteheads-s0reThin","E0C8"],["noteheads-u1reThin","E0C9"],["noteheads-d1reThin","E0CA"],["noteheads-u2reThin","E0CB"],["noteheads-d2reThin","E0CC"],["noteheads-s0mi","E0CD"],["noteheads-s1mi","E0CE"],["noteheads-s2mi","E0CF"],["noteheads-s0miMirror","E0D0"],["noteheads-s1miMirror","E0D1"],["noteheads-s2miMirror","E0D2"],["noteheads-s0miThin","E0D3"],["noteheads-s1miThin","E0D4"],["noteheads-s2miThin","E0D5"],["noteheads-u0fa","E0D6"],["noteheads-d0fa","E0D7"],["noteheads-u1fa","E0D8"],["noteheads-d1fa","E0D9"],["noteheads-u2fa","E0DA"],["noteheads-d2fa","E0DB"],["noteheads-u0faThin","E0DC"],["noteheads-d0faThin","E0DD"],["noteheads-u1faThin","E0DE"],["noteheads-d1faThin","E0DF"],["noteheads-u2faThin","E0E0"],["noteheads-d2faThin","E0E1"],["noteheads-s0sol","E0E2"],["noteheads-s1sol","E0E3"],["noteheads-s2sol","E0E4"],["noteheads-s0la","E0E5"],["noteheads-s1la","E0E6"],["noteheads-s2la","E0E7"],["noteheads-s0laThin","E0E8"],["noteheads-s1laThin","E0E9"],["noteheads-s2laThin","E0EA"],["noteheads-s0ti","E0EB"],["noteheads-u1ti","E0EC"],["noteheads-d1ti","E0ED"],["noteheads-u2ti","E0EE"],["noteheads-d2ti","E0EF"],["noteheads-s0tiThin","E0F0"],["noteheads-u1tiThin","E0F1"],["noteheads-d1tiThin","E0F2"],["noteheads-u2tiThin","E0F3"],["noteheads-d2tiThin","E0F4"],["noteheads-u0doFunk","E0F5"],["noteheads-d0doFunk","E0F6"],["noteheads-u1doFunk","E0F7"],["noteheads-d1doFunk","E0F8"],["noteheads-u2doFunk","E0F9"],["noteheads-d2doFunk","E0FA"],["noteheads-u0reFunk","E0FB"],["noteheads-d0reFunk","E0FC"],["noteheads-u1reFunk","E0FD"],["noteheads-d1reFunk","E0FE"],["noteheads-u2reFunk","E0FF"],["noteheads-d2reFunk","E100"],["noteheads-u0miFunk","E101"],["noteheads-d0miFunk","E102"],["noteheads-u1miFunk","E103"],["noteheads-d1miFunk","E104"],["noteheads-s2miFunk","E105"],["noteheads-u0faFunk","E106"],["noteheads-d0faFunk","E107"],["noteheads-u1faFunk","E108"],["noteheads-d1faFunk","E109"],["noteheads-u2faFunk","E10A"],["noteheads-d2faFunk","E10B"],["noteheads-s0solFunk","E10C"],["noteheads-s1solFunk","E10D"],["noteheads-s2solFunk","E10E"],["noteheads-s0laFunk","E10F"],["noteheads-s1laFunk","E110"],["noteheads-s2laFunk","E111"],["noteheads-u0tiFunk","E112"],["noteheads-d0tiFunk","E113"],["noteheads-u1tiFunk","E114"],["noteheads-d1tiFunk","E115"],["noteheads-u2tiFunk","E116"],["noteheads-d2tiFunk","E117"],["noteheads-s0doWalker","E118"],["noteheads-u1doWalker","E119"],["noteheads-d1doWalker","E11A"],["noteheads-u2doWalker","E11B"],["noteheads-d2doWalker","E11C"],["noteheads-s0reWalker","E11D"],["noteheads-u1reWalker","E11E"],["noteheads-d1reWalker","E11F"],["noteheads-u2reWalker","E120"],["noteheads-d2reWalker","E121"],["noteheads-s0miWalker","E122"],["noteheads-s1miWalker","E123"],["noteheads-s2miWalker","E124"],["noteheads-s0faWalker","E125"],["noteheads-u1faWalker","E126"],["noteheads-d1faWalker","E127"],["noteheads-u2faWalker","E128"],["noteheads-d2faWalker","E129"],["noteheads-s0laWalker","E12A"],["noteheads-s1laWalker","E12B"],["noteheads-s2laWalker","E12C"],["noteheads-s0tiWalker","E12D"],["noteheads-u1tiWalker","E12E"],["noteheads-d1tiWalker","E12F"],["noteheads-u2tiWalker","E130"],["noteheads-d2tiWalker","E131"],["noteheads-uM3neomensural","E1D6"],["noteheads-dM3neomensural","E1D7"],["noteheads-uM2neomensural","E1D8"],["noteheads-dM2neomensural","E1D9"],["noteheads-sM1neomensural","E1DA"],["noteheads-urM3neomensural","E1DB"],["noteheads-drM3neomensural","E1DC"],["noteheads-urM2neomensural","E1DD"],["noteheads-drM2neomensural","E1DE"],["noteheads-srM1neomensural","E1DF"],["noteheads-s0neomensural","E1E0"],["noteheads-s1neomensural","E1E1"],["noteheads-s2neomensural","E1E2"],["noteheads-s0harmonic","E1E3"],["noteheads-s2harmonic","E1E4"],["noteheads-uM3mensural","E1E5"],["noteheads-dM3mensural","E1E6"],["noteheads-sM3ligmensural","E1E7"],["noteheads-uM2mensural","E1E8"],["noteheads-dM2mensural","E1E9"],["noteheads-sM2ligmensural","E1EA"],["noteheads-sM1mensural","E1EB"],["noteheads-urM3mensural","E1EC"],["noteheads-drM3mensural","E1ED"],["noteheads-srM3ligmensural","E1EE"],["noteheads-urM2mensural","E1EF"],["noteheads-drM2mensural","E1F0"],["noteheads-srM2ligmensural","E1F1"],["noteheads-srM1mensural","E1F2"],["noteheads-uM3semimensural","E1F3"],["noteheads-dM3semimensural","E1F4"],["noteheads-sM3semiligmensural","E1F5"],["noteheads-uM2semimensural","E1F6"],["noteheads-dM2semimensural","E1F7"],["noteheads-sM2semiligmensural","E1F8"],["noteheads-sM1semimensural","E1F9"],["noteheads-urM3semimensural","E1FA"],["noteheads-drM3semimensural","E1FB"],["noteheads-srM3semiligmensural","E1FC"],["noteheads-urM2semimensural","E1FD"],["noteheads-drM2semimensural","E1FE"],["noteheads-srM2semiligmensural","E1FF"],["noteheads-srM1semimensural","E200"],["noteheads-uM3blackmensural","E201"],["noteheads-dM3blackmensural","E202"],["noteheads-sM3blackligmensural","E203"],["noteheads-uM2blackmensural","E204"],["noteheads-dM2blackmensural","E205"],["noteheads-sM2blackligmensural","E206"],["noteheads-sM1blackmensural","E207"],["noteheads-s0mensural","E208"],["noteheads-s1mensural","E209"],["noteheads-s2mensural","E20A"],["noteheads-s0blackmensural","E20B"],["noteheads-s0petrucci","E20C"],["noteheads-s1petrucci","E20D"],["noteheads-s2petrucci","E20E"],["noteheads-s0blackpetrucci","E20F"],["noteheads-s1blackpetrucci","E210"],["noteheads-s2blackpetrucci","E211"],["noteheads-svaticana-punctum","E212"],["noteheads-svaticana-punctum-cavum","E213"],["noteheads-svaticana-linea-punctum","E214"],["noteheads-svaticana-linea-punctum-cavum","E215"],["noteheads-svaticana-inclinatum","E216"],["noteheads-svaticana-lpes","E217"],["noteheads-svaticana-vlpes","E218"],["noteheads-svaticana-upes","E219"],["noteheads-svaticana-vupes","E21A"],["noteheads-svaticana-plica","E21B"],["noteheads-svaticana-vplica","E21C"],["noteheads-svaticana-epiphonus","E21D"],["noteheads-svaticana-vepiphonus","E21E"],["noteheads-svaticana-reverse-plica","E21F"],["noteheads-svaticana-reverse-vplica","E220"],["noteheads-svaticana-inner-cephalicus","E221"],["noteheads-svaticana-cephalicus","E222"],["noteheads-svaticana-quilisma","E223"],["noteheads-ssolesmes-incl-parvum","E224"],["noteheads-ssolesmes-auct-asc","E225"],["noteheads-ssolesmes-auct-desc","E226"],["noteheads-ssolesmes-incl-auctum","E227"],["noteheads-ssolesmes-stropha","E228"],["noteheads-ssolesmes-stropha-aucta","E229"],["noteheads-ssolesmes-oriscus","E22A"],["noteheads-smedicaea-inclinatum","E22B"],["noteheads-smedicaea-punctum","E22C"],["noteheads-smedicaea-rvirga","E22D"],["noteheads-smedicaea-virga","E22E"],["noteheads-shufnagel-punctum","E22F"],["noteheads-shufnagel-virga","E230"],["noteheads-shufnagel-lpes","E231"],["noteheads-sM2kievan","E232"],["noteheads-sM1kievan","E233"],["noteheads-s0kievan","E234"],["noteheads-d2kievan","E235"],["noteheads-u2kievan","E236"],["noteheads-s1kievan","E237"],["noteheads-sr1kievan","E238"],["noteheads-d3kievan","E239"],["noteheads-u3kievan","E23A"]],flags:[["flags-u3","E132"],["flags-u4","E133"],["flags-u5","E134"],["flags-u6","E135"],["flags-u7","E136"],["flags-u8","E137"],["flags-u9","E138"],["flags-u10","E139"],["flags-d3","E13A"],["flags-d4","E13B"],["flags-d5","E13C"],["flags-d6","E13D"],["flags-d7","E13E"],["flags-d8","E13F"],["flags-d9","E140"],["flags-d10","E141"],["flags-ugrace","E142"],["flags-dgrace","E143"],["flags-mensuralu03","E19C"],["flags-mensuralu13","E19D"],["flags-mensuralu23","E19E"],["flags-mensurald03","E19F"],["flags-mensurald13","E1A0"],["flags-mensurald23","E1A1"],["flags-mensuralu04","E1A2"],["flags-mensuralu14","E1A3"],["flags-mensuralu24","E1A4"],["flags-mensurald04","E1A5"],["flags-mensurald14","E1A6"],["flags-mensurald24","E1A7"],["flags-mensuralu05","E1A8"],["flags-mensuralu15","E1A9"],["flags-mensuralu25","E1AA"],["flags-mensurald05","E1AB"],["flags-mensurald15","E1AC"],["flags-mensurald25","E1AD"],["flags-mensuralu06","E1AE"],["flags-mensuralu16","E1AF"],["flags-mensuralu26","E1B0"],["flags-mensurald06","E1B1"],["flags-mensurald16","E1B2"],["flags-mensurald26","E1B3"]],custodes:[["custodes-hufnagel-u0","E17C"],["custodes-hufnagel-u1","E17D"],["custodes-hufnagel-u2","E17E"],["custodes-hufnagel-d0","E17F"],["custodes-hufnagel-d1","E180"],["custodes-hufnagel-d2","E181"],["custodes-medicaea-u0","E182"],["custodes-medicaea-u1","E183"],["custodes-medicaea-u2","E184"],["custodes-medicaea-d0","E185"],["custodes-medicaea-d1","E186"],["custodes-medicaea-d2","E187"],["custodes-vaticana-u0","E188"],["custodes-vaticana-u1","E189"],["custodes-vaticana-u2","E18A"],["custodes-vaticana-d0","E18B"],["custodes-vaticana-d1","E18C"],["custodes-vaticana-d2","E18D"],["custodes-mensural-u0","E18E"],["custodes-mensural-u1","E18F"],["custodes-mensural-u2","E190"],["custodes-mensural-d0","E191"],["custodes-mensural-d1","E192"],["custodes-mensural-d2","E193"]],dots:[["dots-dotvaticana","E1D4"],["dots-dotkievan","E1D5"]]},i={rests:"Rests",accidentals:"Accidentals",arrowheads:"Arrowheads",dot:"Dot",scripts:"Scripts & Articulations",clefs:"Clefs",timesig:"Time Signatures",pedal:"Pedal",brackettips:"Bracket Tips",accordion:"Accordion",ties:"Ties",noteheads:"Noteheads",flags:"Flags",custodes:"Custodes",dots:"Dots"};function f(){const[o,u]=d.useState(!1),[E,h]=d.useState(""),[r,m]=d.useState(40);d.useEffect(()=>{document.fonts.ready.then(()=>{u(document.fonts.check("40px Emmentaler-26"))})},[]);const c=Object.keys(l);return e.jsxs("div",{className:"font-test-page",children:[e.jsxs("div",{className:"font-test-header",children:[e.jsx("h1",{children:"Emmentaler-26 Font Glyphs"}),e.jsxs("div",{className:"font-test-status",children:["Font status: ",e.jsx("span",{className:o?"loaded":"not-loaded",children:o?"Loaded":"Not loaded"}),e.jsxs("span",{className:"glyph-count",children:[Object.values(l).reduce((s,n)=>s+n.length,0)," glyphs"]})]}),e.jsxs("div",{className:"font-test-controls",children:[e.jsx("input",{type:"text",placeholder:"Filter glyphs...",value:E,onChange:s=>h(s.target.value)}),e.jsxs("label",{children:["Size:",e.jsx("input",{type:"range",min:20,max:80,value:r,onChange:s=>m(Number(s.target.value))}),r,"px"]})]}),e.jsx("div",{className:"font-test-toc",children:c.map(s=>e.jsxs("a",{href:`#cat-${s}`,children:[i[s]||s," (",l[s].length,")"]},s))})]}),c.map(s=>{const n=l[s].filter(([a,t])=>!E||a.toLowerCase().includes(E.toLowerCase())||t.toLowerCase().includes(E.toLowerCase()));return n.length===0?null:e.jsxs("div",{id:`cat-${s}`,className:"font-test-category",children:[e.jsxs("h2",{children:[i[s]||s," ",e.jsxs("span",{children:["(",n.length,")"]})]}),e.jsx("div",{className:"glyph-grid",children:n.map(([a,t])=>e.jsxs("div",{className:"glyph-cell",title:a,children:[e.jsx("div",{className:"glyph-render",style:{fontSize:r},children:e.jsx("i",{className:`emmentaler glyph-${a}`})}),e.jsx("div",{className:"glyph-unicode",style:{fontSize:r},children:String.fromCodePoint(parseInt(t,16))}),e.jsx("div",{className:"glyph-name",children:a}),e.jsxs("div",{className:"glyph-code",children:["U+",t]})]},`${a}-${t}`))})]},s)})]})}export{f as default}; diff --git a/dist/assets/gauge-aae36b83.js b/dist/assets/gauge-ab1f0653.js similarity index 82% rename from dist/assets/gauge-aae36b83.js rename to dist/assets/gauge-ab1f0653.js index bfa345e6b1c5f461d4922db5dc8334515a3c2257..61524f51469e19eb79c86c1ede9191e4bfac4ce5 100644 --- a/dist/assets/gauge-aae36b83.js +++ b/dist/assets/gauge-ab1f0653.js @@ -1 +1 @@ -import{r as e,j as r}from"./umi-d55575d8.js";import{G as d}from"./gaugeRendererGL-41abf4c6.js";const a=[["source1.png","gauge1.png"],["source2.png","gauge2.png"]];function l(){const n=e.useRef(),t=e.useRef(),s=e.useRef(),[c,o]=e.useState(),[u,g]=e.useState(0);return e.useEffect(()=>{o(new d({source:n.current,gauge:t.current,canvas:s.current}))},[n.current,t.current,s.current]),r.jsxs("div",{children:[r.jsx("img",{ref:n,src:`/test.local/${a[u][0]}`}),r.jsx("img",{ref:t,src:`/test.local/${a[u][1]}`}),r.jsx("canvas",{ref:s}),r.jsx("button",{onClick:()=>g((u+1)%a.length),children:"change"}),r.jsx("button",{onClick:()=>{c.updateMaterial({width:t.current.width}),c.updateGeometry(),c.render()},children:"render"})]})}export{l as default}; +import{r as e,j as r}from"./umi-2135699e.js";import{G as d}from"./gaugeRendererGL-9dc55e03.js";const a=[["source1.png","gauge1.png"],["source2.png","gauge2.png"]];function l(){const n=e.useRef(),t=e.useRef(),s=e.useRef(),[c,o]=e.useState(),[u,g]=e.useState(0);return e.useEffect(()=>{o(new d({source:n.current,gauge:t.current,canvas:s.current}))},[n.current,t.current,s.current]),r.jsxs("div",{children:[r.jsx("img",{ref:n,src:`/test.local/${a[u][0]}`}),r.jsx("img",{ref:t,src:`/test.local/${a[u][1]}`}),r.jsx("canvas",{ref:s}),r.jsx("button",{onClick:()=>g((u+1)%a.length),children:"change"}),r.jsx("button",{onClick:()=>{c.updateMaterial({width:t.current.width}),c.updateGeometry(),c.render()},children:"render"})]})}export{l as default}; diff --git a/dist/assets/gaugeRendererGL-41abf4c6.js b/dist/assets/gaugeRendererGL-41abf4c6.js deleted file mode 100644 index 4fedb7152d752719af6d12cfd3dc7f22312780fa..0000000000000000000000000000000000000000 --- a/dist/assets/gaugeRendererGL-41abf4c6.js +++ /dev/null @@ -1,82 +0,0 @@ -const U=`//#version 300 es -//#define attribute in -//#define varying out -//#define texture2D texture - -precision highp float; -precision highp int; - -#define HIGH_PRECISION -#define SHADER_NAME MeshBasicMaterial -#define VERTEX_TEXTURES -#define USE_MAP -#define USE_UV -#define BONE_TEXTURE -#define DOUBLE_SIDED -uniform mat4 modelViewMatrix; -uniform mat4 projectionMatrix; -uniform vec3 cameraPosition; - -attribute vec3 position; -attribute vec3 normal; -attribute vec2 uv; - -#ifdef USE_UV - varying vec2 vUv; - uniform mat3 uvTransform; -#endif - -void main() { -#ifdef USE_UV - vUv = ( uvTransform * vec3( uv, 1 ) ).xy; -#endif - - vec3 transformed = vec3( position ); - - vec4 mvPosition = vec4( transformed, 1.0 ); - mvPosition = modelViewMatrix * mvPosition; - gl_Position = projectionMatrix * mvPosition; -} -`,x=`//#version 300 es -//#define varying in -//out highp vec4 pc_fragColor; -//#define gl_FragColor pc_fragColor -//#define texture2D texture - -precision highp float; -precision highp int; - -#define HIGH_PRECISION -#define SHADER_NAME MeshBasicMaterial -#define USE_MAP -#define USE_UV -#define DOUBLE_SIDED -uniform vec3 cameraPosition; - -vec4 LinearToLinear( in vec4 value ) { - return value; -} -vec4 mapTexelToLinear( vec4 value ) { return LinearToLinear( value ); } - -uniform vec3 diffuse; -uniform float opacity; - -#if defined( USE_UV ) - varying vec2 vUv; -#endif -#ifdef USE_MAP - uniform sampler2D map; -#endif - - -void main() { - vec4 diffuseColor = vec4( diffuse, opacity ); -#ifdef USE_MAP - vec4 texelColor = texture2D( map, vUv ); - texelColor = mapTexelToLinear( texelColor ); - diffuseColor *= texelColor; -#endif - - gl_FragColor = diffuseColor; -} -`,l=p=>p.flat(1);class S{sourceElem;gaugeElem;canvas;context;program;texture;pos;uv;ib;primitiveCount;width=256;height=192;constructor(t){if(this.sourceElem=t.source,this.gaugeElem=t.gauge,this.canvas=t.canvas,Number.isFinite(t.height)&&(this.height=t.height),this.context=this.canvas.getContext("webgl2",{antialias:!0,depth:!1}),!this.context){console.warn("WebGL2 is not available, GaugeRenderer disabled.");return}const e=this.context;e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT),e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT),this.program=e.createProgram();const a=e.createShader(e.VERTEX_SHADER);e.shaderSource(a,U),e.compileShader(a);const h=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(h,x),e.compileShader(h),e.attachShader(this.program,a),e.attachShader(this.program,h),e.linkProgram(this.program);const m=e.getProgramInfoLog(this.program);m&&console.warn("program log:",m);const c=e.getShaderInfoLog(a);c&&console.warn("vs log:",c);const f=e.getShaderInfoLog(h);f&&console.warn("fs log:",f),e.deleteShader(a),e.deleteShader(h);const{name:s}=e.getActiveUniform(this.program,0),g=e.getUniformLocation(this.program,s),{name:E}=e.getActiveUniform(this.program,1),d=e.getUniformLocation(this.program,E),{name:u}=e.getActiveUniform(this.program,2),o=e.getUniformLocation(this.program,u),{name:r}=e.getActiveUniform(this.program,3),i=e.getUniformLocation(this.program,r),{name:v}=e.getActiveUniform(this.program,4),n=e.getUniformLocation(this.program,v),{name:T}=e.getActiveUniform(this.program,5),R=e.getUniformLocation(this.program,T);e.useProgram(this.program),e.uniformMatrix4fv(d,!1,new Float32Array([.0026385225355625153,0,0,0,0,-.010416666977107525,0,0,0,0,-.20202019810676575,0,0,0,-1.0202020406723022,1])),e.uniformMatrix4fv(g,!1,new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,-1,1])),e.uniformMatrix3fv(o,!1,new Float32Array([1,0,0,0,1,0,0,0,1])),e.uniform3f(i,1,1,1),e.uniform1f(n,1),e.uniform1i(R,0),this.texture=e.createTexture(),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,this.texture),e.pixelStorei(37440,!0),e.pixelStorei(37441,!1),e.pixelStorei(e.UNPACK_ALIGNMENT,4),e.pixelStorei(37443,0),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR_MIPMAP_LINEAR),e.disable(e.CULL_FACE),e.depthMask(!0),e.colorMask(!0,!0,!0,!0),e.disable(e.STENCIL_TEST),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SAMPLE_ALPHA_TO_COVERAGE),this.pos=e.createBuffer(),this.uv=e.createBuffer(),this.ib=e.createBuffer();const A=e.getAttribLocation(this.program,"position"),_=e.getAttribLocation(this.program,"uv");e.enableVertexAttribArray(A),e.bindBuffer(e.ARRAY_BUFFER,this.pos),e.vertexAttribPointer(A,3,e.FLOAT,!1,0,0),e.enableVertexAttribArray(_),e.bindBuffer(e.ARRAY_BUFFER,this.uv),e.vertexAttribPointer(_,2,e.FLOAT,!1,0,0)}updateMaterial({width:t=null}={}){if(!this.context)return;const e=this.context;if(this.sourceElem.naturalWidth!==this.width||this.sourceElem.naturalHeight!==this.height){Number.isFinite(t)?this.width=t:this.width=Math.round(this.height*this.sourceElem.naturalWidth/this.sourceElem.naturalHeight),this.canvas.width=this.width,this.canvas.height=this.height,e.viewport(0,0,this.width,this.height);const a=e.getUniformLocation(this.program,"projectionMatrix");e.uniformMatrix4fv(a,!1,new Float32Array([2/this.width,0,0,0,0,-2/this.height,0,0,0,0,-.20202019810676575,0,0,0,-1.0202020406723022,1]))}e.bindTexture(e.TEXTURE_2D,this.texture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA8,e.RGBA,e.UNSIGNED_BYTE,this.sourceElem),e.generateMipmap(e.TEXTURE_2D)}updateGeometry(t=null){if(!this.context)return;const{naturalWidth:e,naturalHeight:a}=this.gaugeElem,m=new OffscreenCanvas(e,a).getContext("2d");m.drawImage(this.gaugeElem,0,0);const{data:c}=m.getImageData(0,0,e,a),f=this.width/e;t=Math.round(Number.isFinite(t)?t:a/2),t=Math.max(0,Math.min(a-1,t));const s=Array(a).fill(null).map((r,i)=>Array(e).fill(null).map((v,n)=>({uv:[(n+.5)/e,1-(i+.5)/a],position:[(n-e/2)*f,(c[(i*e+n)*4]+c[(i*e+n)*4+2]/256-128)/f,0]})));for(let r=t;r>0;--r)for(let i=0;ir.uv)),E=l(l(s).map(r=>r.position)),d=Array(a-1).fill(null).map((r,i)=>Array(e-1).fill(null).map((v,n)=>[i*e+n,i*e+n+1,(i+1)*e+n,(i+1)*e+n,(i+1)*e+n+1,i*e+n+1])),u=l(l(d)),o=this.context;o.bindBuffer(o.ARRAY_BUFFER,this.pos),o.bufferData(o.ARRAY_BUFFER,new Float32Array(E),o.STATIC_DRAW),o.bindBuffer(o.ARRAY_BUFFER,this.uv),o.bufferData(o.ARRAY_BUFFER,new Float32Array(g),o.STATIC_DRAW),o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,this.ib),o.bufferData(o.ELEMENT_ARRAY_BUFFER,new Uint32Array(u),o.STATIC_DRAW),this.primitiveCount=u.length}render(){if(!this.context)return"";const t=this.context;return t.clearColor(1,1,1,0),t.clear(t.COLOR_BUFFER_BIT),t.drawElements(t.TRIANGLES,this.primitiveCount,t.UNSIGNED_INT,0),this.canvas.toDataURL()}getBlob(){return new Promise(t=>this.canvas.toBlob(t,"image/png"))}}export{S as G}; diff --git a/dist/assets/gaugeRendererGL-9dc55e03.js b/dist/assets/gaugeRendererGL-9dc55e03.js new file mode 100644 index 0000000000000000000000000000000000000000..4e794a9cc805379dc2682757b20d7645ae9ffa14 --- /dev/null +++ b/dist/assets/gaugeRendererGL-9dc55e03.js @@ -0,0 +1,82 @@ +const U=`//#version 300 es +//#define attribute in +//#define varying out +//#define texture2D texture + +precision highp float; +precision highp int; + +#define HIGH_PRECISION +#define SHADER_NAME MeshBasicMaterial +#define VERTEX_TEXTURES +#define USE_MAP +#define USE_UV +#define BONE_TEXTURE +#define DOUBLE_SIDED +uniform mat4 modelViewMatrix; +uniform mat4 projectionMatrix; +uniform vec3 cameraPosition; + +attribute vec3 position; +attribute vec3 normal; +attribute vec2 uv; + +#ifdef USE_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif + +void main() { +#ifdef USE_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; +#endif + + vec3 transformed = vec3( position ); + + vec4 mvPosition = vec4( transformed, 1.0 ); + mvPosition = modelViewMatrix * mvPosition; + gl_Position = projectionMatrix * mvPosition; +} +`,S=`//#version 300 es +//#define varying in +//out highp vec4 pc_fragColor; +//#define gl_FragColor pc_fragColor +//#define texture2D texture + +precision highp float; +precision highp int; + +#define HIGH_PRECISION +#define SHADER_NAME MeshBasicMaterial +#define USE_MAP +#define USE_UV +#define DOUBLE_SIDED +uniform vec3 cameraPosition; + +vec4 LinearToLinear( in vec4 value ) { + return value; +} +vec4 mapTexelToLinear( vec4 value ) { return LinearToLinear( value ); } + +uniform vec3 diffuse; +uniform float opacity; + +#if defined( USE_UV ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif + + +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); +#ifdef USE_MAP + vec4 texelColor = texture2D( map, vUv ); + texelColor = mapTexelToLinear( texelColor ); + diffuseColor *= texelColor; +#endif + + gl_FragColor = diffuseColor; +} +`,m=p=>p.flat(1);class x{sourceElem;gaugeElem;canvas;context;program;texture;pos;uv;ib;primitiveCount;width=256;height=192;constructor(t){this.sourceElem=t.source,this.gaugeElem=t.gauge,this.canvas=t.canvas,Number.isFinite(t.height)&&(this.height=t.height),this.context=this.canvas.getContext("webgl2",{antialias:!0,depth:!1});const e=this.context;window.gl=e,e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT),e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT),this.program=e.createProgram();const a=e.createShader(e.VERTEX_SHADER);e.shaderSource(a,U),e.compileShader(a);const h=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(h,S),e.compileShader(h),e.attachShader(this.program,a),e.attachShader(this.program,h),e.linkProgram(this.program);const l=e.getProgramInfoLog(this.program);l&&console.warn("program log:",l);const c=e.getShaderInfoLog(a);c&&console.warn("vs log:",c);const f=e.getShaderInfoLog(h);f&&console.warn("fs log:",f),e.deleteShader(a),e.deleteShader(h);const{name:s}=e.getActiveUniform(this.program,0),g=e.getUniformLocation(this.program,s),{name:E}=e.getActiveUniform(this.program,1),d=e.getUniformLocation(this.program,E),{name:u}=e.getActiveUniform(this.program,2),o=e.getUniformLocation(this.program,u),{name:r}=e.getActiveUniform(this.program,3),i=e.getUniformLocation(this.program,r),{name:v}=e.getActiveUniform(this.program,4),n=e.getUniformLocation(this.program,v),{name:T}=e.getActiveUniform(this.program,5),R=e.getUniformLocation(this.program,T);e.useProgram(this.program),e.uniformMatrix4fv(d,!1,new Float32Array([.0026385225355625153,0,0,0,0,-.010416666977107525,0,0,0,0,-.20202019810676575,0,0,0,-1.0202020406723022,1])),e.uniformMatrix4fv(g,!1,new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,-1,1])),e.uniformMatrix3fv(o,!1,new Float32Array([1,0,0,0,1,0,0,0,1])),e.uniform3f(i,1,1,1),e.uniform1f(n,1),e.uniform1i(R,0),this.texture=e.createTexture(),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,this.texture),e.pixelStorei(37440,!0),e.pixelStorei(37441,!1),e.pixelStorei(e.UNPACK_ALIGNMENT,4),e.pixelStorei(37443,0),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR_MIPMAP_LINEAR),e.disable(e.CULL_FACE),e.depthMask(!0),e.colorMask(!0,!0,!0,!0),e.disable(e.STENCIL_TEST),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SAMPLE_ALPHA_TO_COVERAGE),this.pos=e.createBuffer(),this.uv=e.createBuffer(),this.ib=e.createBuffer();const A=e.getAttribLocation(this.program,"position"),_=e.getAttribLocation(this.program,"uv");e.enableVertexAttribArray(A),e.bindBuffer(e.ARRAY_BUFFER,this.pos),e.vertexAttribPointer(A,3,e.FLOAT,!1,0,0),e.enableVertexAttribArray(_),e.bindBuffer(e.ARRAY_BUFFER,this.uv),e.vertexAttribPointer(_,2,e.FLOAT,!1,0,0)}updateMaterial({width:t=null}={}){const e=this.context;if(this.sourceElem.naturalWidth!==this.width||this.sourceElem.naturalHeight!==this.height){Number.isFinite(t)?this.width=t:this.width=Math.round(this.height*this.sourceElem.naturalWidth/this.sourceElem.naturalHeight),this.canvas.width=this.width,this.canvas.height=this.height,e.viewport(0,0,this.width,this.height);const a=e.getUniformLocation(this.program,"projectionMatrix");e.uniformMatrix4fv(a,!1,new Float32Array([2/this.width,0,0,0,0,-2/this.height,0,0,0,0,-.20202019810676575,0,0,0,-1.0202020406723022,1]))}e.bindTexture(e.TEXTURE_2D,this.texture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA8,e.RGBA,e.UNSIGNED_BYTE,this.sourceElem),e.generateMipmap(e.TEXTURE_2D)}updateGeometry(t=null){const{naturalWidth:e,naturalHeight:a}=this.gaugeElem,l=new OffscreenCanvas(e,a).getContext("2d");l.drawImage(this.gaugeElem,0,0);const{data:c}=l.getImageData(0,0,e,a),f=this.width/e;t=Math.round(Number.isFinite(t)?t:a/2),t=Math.max(0,Math.min(a-1,t));const s=Array(a).fill(null).map((r,i)=>Array(e).fill(null).map((v,n)=>({uv:[(n+.5)/e,1-(i+.5)/a],position:[(n-e/2)*f,(c[(i*e+n)*4]+c[(i*e+n)*4+2]/256-128)/f,0]})));for(let r=t;r>0;--r)for(let i=0;ir.uv)),E=m(m(s).map(r=>r.position)),d=Array(a-1).fill(null).map((r,i)=>Array(e-1).fill(null).map((v,n)=>[i*e+n,i*e+n+1,(i+1)*e+n,(i+1)*e+n,(i+1)*e+n+1,i*e+n+1])),u=m(m(d)),o=this.context;o.bindBuffer(o.ARRAY_BUFFER,this.pos),o.bufferData(o.ARRAY_BUFFER,new Float32Array(E),o.STATIC_DRAW),o.bindBuffer(o.ARRAY_BUFFER,this.uv),o.bufferData(o.ARRAY_BUFFER,new Float32Array(g),o.STATIC_DRAW),o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,this.ib),o.bufferData(o.ELEMENT_ARRAY_BUFFER,new Uint32Array(u),o.STATIC_DRAW),this.primitiveCount=u.length}render(){const t=this.context;return t.clearColor(1,1,1,0),t.clear(t.COLOR_BUFFER_BIT),t.drawElements(t.TRIANGLES,this.primitiveCount,t.UNSIGNED_INT,0),this.canvas.toDataURL()}getBlob(){return new Promise(t=>this.canvas.toBlob(t,"image/png"))}}export{x as G}; diff --git a/dist/assets/index-054c816b.js b/dist/assets/index-054c816b.js new file mode 100644 index 0000000000000000000000000000000000000000..eb43e0459c2d3fe512198204746cd2b5c11db1ce --- /dev/null +++ b/dist/assets/index-054c816b.js @@ -0,0 +1 @@ +import{r as i,R as ze,_ as C,e as Ge,j as w}from"./umi-2135699e.js";import{M as xt}from"./index-ca8300a2.js";import{S as bt}from"./index-abee73dc.js";import{I as K,u as St,m as Ct,P as Et}from"./tiny-invariant-23ba74ad.js";import{D as ot,A as Rt,r as kt}from"./confirm-345857b8.js";import{o as Ke,q as Pt,y as Mt,x as Ut,P as Ft,r as st,s as it,I as Lt,J as He,K as Dt}from"./index-22b5485d.js";import{A as Ue,f as se,a5 as jt,V as lt,a6 as ct,U as ut,_ as ye,T as dt,Z as $t,c as X,b as T,aJ as Ot,aK as De,O as ft,a as Me,C as Ve,d as pt,b2 as Tt,e as Je,N as Xe,L as Ze,aa as Nt,ab as At,af as Bt,m as zt,H as Ht,r as _t}from"./_setToString-038b76d7.js";import{J as Vt,z as qt,T as Wt,M as Yt,d as Gt,u as Kt,b as mt,R as Jt,C as Qe,L as Xt,S as et}from"./util-e99b60d9.js";import{B as je}from"./button-eb671c5b.js";import{P as Zt,D as Qt,S as en}from"./index-c4a8d365.js";import{D as tn}from"./DeleteOutlined-1f8a2958.js";import"./index-61307b6b.js";import"./jszip.min-f3ba6370.js";import"./index-eb226363.js";var nn={icon:function(e,a){return{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M534 352V136H232v752h560V394H576a42 42 0 01-42-42z",fill:a}},{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0042 42h216v494z",fill:e}}]}},name:"file",theme:"twotone"};const an=nn;var rn=function(e,a){return i.createElement(Ue,se(se({},e),{},{ref:a,icon:an}))},on=i.forwardRef(rn);const sn=on;var ln={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0060.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z"}}]},name:"inbox",theme:"outlined"};const cn=ln;var un=function(e,a){return i.createElement(Ue,se(se({},e),{},{ref:a,icon:cn}))},dn=i.forwardRef(un);const fn=dn;var pn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z"}}]},name:"paper-clip",theme:"outlined"};const mn=pn;var vn=function(e,a){return i.createElement(Ue,se(se({},e),{},{ref:a,icon:mn}))},hn=i.forwardRef(vn);const gn=hn;var wn={icon:function(e,a){return{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2z",fill:e}},{tag:"path",attrs:{d:"M424.6 765.8l-150.1-178L136 752.1V792h752v-30.4L658.1 489z",fill:a}},{tag:"path",attrs:{d:"M136 652.7l132.4-157c3.2-3.8 9-3.8 12.2 0l144 170.7L652 396.8c3.2-3.8 9-3.8 12.2 0L888 662.2V232H136v420.7zM304 280a88 88 0 110 176 88 88 0 010-176z",fill:a}},{tag:"path",attrs:{d:"M276 368a28 28 0 1056 0 28 28 0 10-56 0z",fill:a}},{tag:"path",attrs:{d:"M304 456a88 88 0 100-176 88 88 0 000 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z",fill:e}}]}},name:"picture",theme:"twotone"};const yn=wn;var In=function(e,a){return i.createElement(Ue,se(se({},e),{},{ref:a,icon:yn}))},xn=i.forwardRef(In);const bn=xn;var Sn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"upload",theme:"outlined"};const Cn=Sn;var En=function(e,a){return i.createElement(Ue,se(se({},e),{},{ref:a,icon:Cn}))},Rn=i.forwardRef(En);const kn=Rn;function Pn(t,e){var a="cannot ".concat(t.method," ").concat(t.action," ").concat(e.status,"'"),n=new Error(a);return n.status=e.status,n.method=t.method,n.url=t.action,n}function tt(t){var e=t.responseText||t.response;if(!e)return e;try{return JSON.parse(e)}catch{return e}}function Mn(t){var e=new XMLHttpRequest;t.onProgress&&e.upload&&(e.upload.onprogress=function(l){l.total>0&&(l.percent=l.loaded/l.total*100),t.onProgress(l)});var a=new FormData;t.data&&Object.keys(t.data).forEach(function(o){var l=t.data[o];if(Array.isArray(l)){l.forEach(function(s){a.append("".concat(o,"[]"),s)});return}a.append(o,l)}),t.file instanceof Blob?a.append(t.filename,t.file,t.file.name):a.append(t.filename,t.file),e.onerror=function(l){t.onError(l)},e.onload=function(){return e.status<200||e.status>=300?t.onError(Pn(t,e),tt(e)):t.onSuccess(tt(e),e)},e.open(t.method,t.action,!0),t.withCredentials&&"withCredentials"in e&&(e.withCredentials=!0);var n=t.headers||{};return n["X-Requested-With"]!==null&&e.setRequestHeader("X-Requested-With","XMLHttpRequest"),Object.keys(n).forEach(function(o){n[o]!==null&&e.setRequestHeader(o,n[o])}),e.send(a),{abort:function(){e.abort()}}}var Un=+new Date,Fn=0;function Te(){return"rc-upload-".concat(Un,"-").concat(++Fn)}const Ne=function(t,e){if(t&&e){var a=Array.isArray(e)?e:e.split(","),n=t.name||"",o=t.type||"",l=o.replace(/\/.*$/,"");return a.some(function(s){var r=s.trim();if(/^\*(\/\*)?$/.test(s))return!0;if(r.charAt(0)==="."){var p=n.toLowerCase(),c=r.toLowerCase(),d=[c];return(c===".jpg"||c===".jpeg")&&(d=[".jpg",".jpeg"]),d.some(function(f){return p.endsWith(f)})}return/\/\*$/.test(r)?l===r.replace(/\/.*$/,""):o===r?!0:/^\w+$/.test(r)?(jt(!1,"Upload takes an invalidate 'accept' type '".concat(r,"'.Skip for check.")),!0):!1})}return!0};function Ln(t,e){var a=t.createReader(),n=[];function o(){a.readEntries(function(l){var s=Array.prototype.slice.apply(l);n=n.concat(s);var r=!s.length;r?e(n):o()})}o()}var Dn=function(e,a,n){var o=function l(s,r){s&&(s.path=r||"",s.isFile?s.file(function(p){n(p)&&(s.fullPath&&!p.webkitRelativePath&&(Object.defineProperties(p,{webkitRelativePath:{writable:!0}}),p.webkitRelativePath=s.fullPath.replace(/^\//,""),Object.defineProperties(p,{webkitRelativePath:{writable:!1}})),a([p]))}):s.isDirectory&&Ln(s,function(p){p.forEach(function(c){l(c,"".concat(r).concat(s.name,"/"))})}))};e.forEach(function(l){o(l.webkitGetAsEntry())})},jn=["component","prefixCls","className","disabled","id","style","multiple","accept","capture","children","directory","openFileDialogOnClick","onMouseEnter","onMouseLeave"],$n=function(t){lt(a,t);var e=ct(a);function a(){var n;ut(this,a);for(var o=arguments.length,l=new Array(o),s=0;s0&&arguments[0]!==void 0?arguments[0]:"",a=e.split("/"),n=a[a.length-1],o=n.split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(o)||[""])[0]},vt=function(e){return e.indexOf("image/")===0},Nn=function(e){if(e.type&&!e.thumbUrl)return vt(e.type);var a=e.thumbUrl||e.url||"",n=Tn(a);return/^data:image\//.test(a)||/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico|heic|heif)$/i.test(n)?!0:!(/^data:/.test(a)||n)},ve=200;function An(t){return new Promise(function(e){if(!t.type||!vt(t.type)){e("");return}var a=document.createElement("canvas");a.width=ve,a.height=ve,a.style.cssText="position: fixed; left: 0; top: 0; width: ".concat(ve,"px; height: ").concat(ve,"px; z-index: 9999; display: none;"),document.body.appendChild(a);var n=a.getContext("2d"),o=new Image;if(o.onload=function(){var r=o.width,p=o.height,c=ve,d=ve,f=0,u=0;r>p?(d=p*(ve/r),u=-(d-c)/2):(c=r*(ve/p),f=-(c-d)/2),n.drawImage(o,f,u,c,d);var v=a.toDataURL();document.body.removeChild(a),window.URL.revokeObjectURL(o.src),e(v)},o.crossOrigin="anonymous",t.type.startsWith("image/svg+xml")){var l=new FileReader;l.onload=function(){l.result&&(o.src=l.result)},l.readAsDataURL(t)}else if(t.type.startsWith("image/gif")){var s=new FileReader;s.onload=function(){s.result&&e(s.result)},s.readAsDataURL(t)}else o.src=window.URL.createObjectURL(t)})}var Bn=i.forwardRef(function(t,e){var a=t.prefixCls,n=t.className,o=t.style,l=t.locale,s=t.listType,r=t.file,p=t.items,c=t.progress,d=t.iconRender,f=t.actionIconRender,u=t.itemRender,v=t.isImgUrl,h=t.showPreviewIcon,y=t.showRemoveIcon,R=t.showDownloadIcon,U=t.previewIcon,D=t.removeIcon,$=t.downloadIcon,P=t.onPreview,m=t.onDownload,A=t.onClose,M,_,Q=r.status,ie=i.useState(Q),ee=Me(ie,2),b=ee[0],B=ee[1];i.useEffect(function(){Q!=="removed"&&B(Q)},[Q]);var O=i.useState(!1),Z=Me(O,2),te=Z[0],le=Z[1],V=i.useRef(null);i.useEffect(function(){return V.current=setTimeout(function(){le(!0)},300),function(){V.current&&clearTimeout(V.current)}},[]);var ce="".concat(a,"-span"),S=d(r),J=i.createElement("div",{className:"".concat(a,"-text-icon")},S);if(s==="picture"||s==="picture-card")if(b==="uploading"||!r.thumbUrl&&!r.url){var Ie=X(T(T({},"".concat(a,"-list-item-thumbnail"),!0),"".concat(a,"-list-item-file"),b!=="uploading"));J=i.createElement("div",{className:Ie},S)}else{var ne=v!=null&&v(r)?i.createElement("img",{src:r.thumbUrl||r.url,alt:r.name,className:"".concat(a,"-list-item-image"),crossOrigin:r.crossOrigin}):S,Ee=X(T(T({},"".concat(a,"-list-item-thumbnail"),!0),"".concat(a,"-list-item-file"),v&&!v(r)));J=i.createElement("a",{className:Ee,onClick:function(k){return P(r,k)},href:r.url||r.thumbUrl,target:"_blank",rel:"noopener noreferrer"},ne)}var xe=X(T(T(T({},"".concat(a,"-list-item"),!0),"".concat(a,"-list-item-").concat(b),!0),"".concat(a,"-list-item-list-type-").concat(s),!0)),z=typeof r.linkProps=="string"?JSON.parse(r.linkProps):r.linkProps,he=y?f((typeof D=="function"?D(r):D)||i.createElement(tn,null),function(){return A(r)},a,l.removeFile):null,be=R&&b==="done"?f((typeof $=="function"?$(r):$)||i.createElement(ot,null),function(){return m(r)},a,l.downloadFile):null,ge=s!=="picture-card"&&i.createElement("span",{key:"download-delete",className:X("".concat(a,"-list-item-card-actions"),{picture:s==="picture"})},be,he),oe=X("".concat(a,"-list-item-name")),Re=r.url?[i.createElement("a",C({key:"view",target:"_blank",rel:"noopener noreferrer",className:oe,title:r.name},z,{href:r.url,onClick:function(k){return P(r,k)}}),r.name),ge]:[i.createElement("span",{key:"view",className:oe,onClick:function(k){return P(r,k)},title:r.name},r.name),ge],pe={pointerEvents:"none",opacity:.5},ue=h?i.createElement("a",{href:r.url||r.thumbUrl,target:"_blank",rel:"noopener noreferrer",style:r.url||r.thumbUrl?void 0:pe,onClick:function(k){return P(r,k)},title:l.previewFile},typeof U=="function"?U(r):U||i.createElement(qt,null)):null,me=s==="picture-card"&&b!=="uploading"&&i.createElement("span",{className:"".concat(a,"-list-item-actions")},ue,b==="done"&&be,he),E;r.response&&typeof r.response=="string"?E=r.response:E=((M=r.error)===null||M===void 0?void 0:M.statusText)||((_=r.error)===null||_===void 0?void 0:_.message)||l.uploadError;var x=i.createElement("span",{className:ce},J,Re),H=i.useContext(Ve),q=H.getPrefixCls,ae=q(),de=i.createElement("div",{className:xe},i.createElement("div",{className:"".concat(a,"-list-item-info")},x),me,te&&i.createElement(pt,{motionName:"".concat(ae,"-fade"),visible:b==="uploading",motionDeadline:2e3},function(re){var k=re.className,we="percent"in r?i.createElement(Zt,C({},c,{type:"line",percent:r.percent})):null;return i.createElement("div",{className:X("".concat(a,"-list-item-progress"),k)},we)})),Se=X("".concat(a,"-list-").concat(s,"-container"),n),Ce=b==="error"?i.createElement(Wt,{title:E,getPopupContainer:function(k){return k.parentNode}},de):de;return i.createElement("div",{className:Se,style:o,ref:e},u?u(Ce,r,p,{download:m.bind(null,r),preview:P.bind(null,r),remove:A.bind(null,r)}):Ce)});const zn=Bn;var $e=C({},Yt);delete $e.onAppearEnd;delete $e.onEnterEnd;delete $e.onLeaveEnd;var Hn=function(e,a){var n=e.listType,o=n===void 0?"text":n,l=e.previewFile,s=l===void 0?An:l,r=e.onPreview,p=e.onDownload,c=e.onRemove,d=e.locale,f=e.iconRender,u=e.isImageUrl,v=u===void 0?Nn:u,h=e.prefixCls,y=e.items,R=y===void 0?[]:y,U=e.showPreviewIcon,D=U===void 0?!0:U,$=e.showRemoveIcon,P=$===void 0?!0:$,m=e.showDownloadIcon,A=m===void 0?!1:m,M=e.removeIcon,_=e.previewIcon,Q=e.downloadIcon,ie=e.progress,ee=ie===void 0?{strokeWidth:2,showInfo:!1}:ie,b=e.appendAction,B=e.appendActionVisible,O=B===void 0?!0:B,Z=e.itemRender,te=e.disabled,le=Gt(),V=i.useState(!1),ce=Me(V,2),S=ce[0],J=ce[1];i.useEffect(function(){o!=="picture"&&o!=="picture-card"||(R||[]).forEach(function(E){typeof document>"u"||typeof window>"u"||!window.FileReader||!window.File||!(E.originFileObj instanceof File||E.originFileObj instanceof Blob)||E.thumbUrl!==void 0||(E.thumbUrl="",s&&s(E.originFileObj).then(function(x){E.thumbUrl=x||"",le()}))})},[o,R,s]),i.useEffect(function(){J(!0)},[]);var Ie=function(x,H){if(r)return H==null||H.preventDefault(),r(x)},ne=function(x){typeof p=="function"?p(x):x.url&&window.open(x.url)},Ee=function(x){c==null||c(x)},xe=function(x){if(f)return f(x,o);var H=x.status==="uploading",q=v&&v(x)?i.createElement(bn,null):i.createElement(sn,null),ae=H?i.createElement(Ze,null):i.createElement(gn,null);return o==="picture"?ae=H?i.createElement(Ze,null):q:o==="picture-card"&&(ae=H?d.uploading:q),ae},z=function(x,H,q,ae){var de={type:"text",size:"small",title:ae,disabled:te,onClick:function(re){H(),Xe(x)&&x.props.onClick&&x.props.onClick(re)},className:"".concat(q,"-list-item-card-actions-btn")};if(Xe(x)){var Se=Je(x,C(C({},x.props),{onClick:function(){}}));return i.createElement(je,C({},de,{icon:Se}))}return i.createElement(je,C({},de),i.createElement("span",null,x))};i.useImperativeHandle(a,function(){return{handlePreview:Ie,handleDownload:ne}});var he=i.useContext(Ve),be=he.getPrefixCls,ge=he.direction,oe=be("upload",h),Re=X(T(T(T({},"".concat(oe,"-list"),!0),"".concat(oe,"-list-").concat(o),!0),"".concat(oe,"-list-rtl"),ge==="rtl")),pe=ye(R.map(function(E){return{key:E.uid,file:E}})),ue=o==="picture-card"?"animate-inline":"animate",me={motionDeadline:2e3,motionName:"".concat(oe,"-").concat(ue),keys:pe,motionAppear:S};return o!=="picture-card"&&(me=C(C({},$e),me)),i.createElement("div",{className:Re},i.createElement(Tt,C({},me,{component:!1}),function(E){var x=E.key,H=E.file,q=E.className,ae=E.style;return i.createElement(zn,{key:x,locale:d,prefixCls:oe,className:q,style:ae,file:H,items:R,progress:ee,listType:o,isImgUrl:v,showPreviewIcon:D,showRemoveIcon:P,showDownloadIcon:A,removeIcon:M,previewIcon:_,downloadIcon:Q,iconRender:xe,actionIconRender:z,itemRender:Z,onPreview:Ie,onDownload:ne,onClose:Ee})}),b&&i.createElement(pt,C({},me,{visible:O,forceRender:!0}),function(E){var x=E.className,H=E.style;return Je(b,function(q){return{className:X(q.className,x),style:C(C(C({},H),{pointerEvents:x?"none":void 0}),q.style)}})}))},_n=i.forwardRef(Hn);const Vn=_n;var qn=globalThis&&globalThis.__awaiter||function(t,e,a,n){function o(l){return l instanceof a?l:new a(function(s){s(l)})}return new(a||(a=Promise))(function(l,s){function r(d){try{c(n.next(d))}catch(f){s(f)}}function p(d){try{c(n.throw(d))}catch(f){s(f)}}function c(d){d.done?l(d.value):o(d.value).then(r,p)}c((n=n.apply(t,e||[])).next())})},Pe="__LIST_IGNORE_".concat(Date.now(),"__"),Wn=function(e,a){var n=e.fileList,o=e.defaultFileList,l=e.onRemove,s=e.showUploadList,r=s===void 0?!0:s,p=e.listType,c=p===void 0?"text":p,d=e.onPreview,f=e.onDownload,u=e.onChange,v=e.onDrop,h=e.previewFile,y=e.disabled,R=e.locale,U=e.iconRender,D=e.isImageUrl,$=e.progress,P=e.prefixCls,m=e.className,A=e.type,M=A===void 0?"select":A,_=e.children,Q=e.style,ie=e.itemRender,ee=e.maxCount,b=e.data,B=b===void 0?{}:b,O=e.multiple,Z=O===void 0?!1:O,te=e.action,le=te===void 0?"":te,V=e.accept,ce=V===void 0?"":V,S=e.supportServerRender,J=S===void 0?!0:S,Ie=i.useContext(Nt),ne=y??Ie,Ee=Kt(o||[],{value:n,postState:function(I){return I??[]}}),xe=Me(Ee,2),z=xe[0],he=xe[1],be=i.useState("drop"),ge=Me(be,2),oe=ge[0],Re=ge[1],pe=i.useRef(null);i.useMemo(function(){var W=Date.now();(n||[]).forEach(function(I,L){!I.uid&&!Object.isFrozen(I)&&(I.uid="__AUTO__".concat(W,"_").concat(L,"__"))})},[n]);var ue=function(I,L,N){var g=ye(L);ee===1?g=g.slice(-1):ee&&(g=g.slice(0,ee)),Ge.flushSync(function(){he(g)});var F={file:I,fileList:g};N&&(F.event=N),Ge.flushSync(function(){u==null||u(F)})},me=function(I,L){return qn(void 0,void 0,void 0,De().mark(function N(){var g,F,Y,G;return De().wrap(function(j){for(;;)switch(j.prev=j.next){case 0:if(g=e.beforeUpload,F=e.transformFile,Y=I,!g){j.next=13;break}return j.next=5,g(I,L);case 5:if(G=j.sent,G!==!1){j.next=8;break}return j.abrupt("return",!1);case 8:if(delete I[Pe],G!==Pe){j.next=12;break}return Object.defineProperty(I,Pe,{value:!0,configurable:!0}),j.abrupt("return",!1);case 12:ft(G)==="object"&&G&&(Y=G);case 13:if(!F){j.next=17;break}return j.next=16,F(Y);case 16:Y=j.sent;case 17:return j.abrupt("return",Y);case 18:case"end":return j.stop()}},N)}))},E=function(I){var L=I.filter(function(F){return!F.file[Pe]});if(L.length){var N=L.map(function(F){return Fe(F.file)}),g=ye(z);N.forEach(function(F){g=Le(F,g)}),N.forEach(function(F,Y){var G=F;if(L[Y].parsedFile)F.status="uploading";else{var fe=F.originFileObj,j;try{j=new File([fe],fe.name,{type:fe.type})}catch{j=new Blob([fe],{type:fe.type}),j.name=fe.name,j.lastModifiedDate=new Date,j.lastModified=new Date().getTime()}j.uid=F.uid,G=j}ue(G,g)})}},x=function(I,L,N){try{typeof I=="string"&&(I=JSON.parse(I))}catch{}if(Be(L,z)){var g=Fe(L);g.status="done",g.percent=100,g.response=I,g.xhr=N;var F=Le(g,z);ue(g,F)}},H=function(I,L){if(Be(L,z)){var N=Fe(L);N.status="uploading",N.percent=I.percent;var g=Le(N,z);ue(N,g,I)}},q=function(I,L,N){if(Be(N,z)){var g=Fe(N);g.error=I,g.response=L,g.status="error";var F=Le(g,z);ue(g,F)}},ae=function(I){var L;Promise.resolve(typeof l=="function"?l(I):l).then(function(N){var g;if(N!==!1){var F=On(I,z);F&&(L=C(C({},I),{status:"removed"}),z==null||z.forEach(function(Y){var G=L.uid!==void 0?"uid":"name";Y[G]===L[G]&&!Object.isFrozen(Y)&&(Y.status="removed")}),(g=pe.current)===null||g===void 0||g.abort(L),ue(L,F))}})},de=function(I){Re(I.type),I.type==="drop"&&(v==null||v(I))};i.useImperativeHandle(a,function(){return{onBatchStart:E,onSuccess:x,onProgress:H,onError:q,fileList:z,upload:pe.current}});var Se=i.useContext(Ve),Ce=Se.getPrefixCls,re=Se.direction,k=Ce("upload",P),we=C(C({onBatchStart:E,onError:q,onProgress:H,onSuccess:x},e),{data:B,multiple:Z,action:le,accept:ce,supportServerRender:J,prefixCls:k,disabled:ne,beforeUpload:me,onChange:void 0});delete we.className,delete we.style,(!_||ne)&&delete we.id;var Oe=function(I,L){return r?i.createElement(At,{componentName:"Upload",defaultLocale:Bt.Upload},function(N){var g=typeof r=="boolean"?{}:r,F=g.showRemoveIcon,Y=g.showPreviewIcon,G=g.showDownloadIcon,fe=g.removeIcon,j=g.previewIcon,Ye=g.downloadIcon;return i.createElement(Vn,{prefixCls:k,listType:c,items:z,previewFile:h,onPreview:d,onDownload:f,onRemove:ae,showRemoveIcon:!ne&&F,showPreviewIcon:Y,showDownloadIcon:G,removeIcon:fe,previewIcon:j,downloadIcon:Ye,iconRender:U,locale:C(C({},N),R),isImageUrl:D,progress:$,appendAction:I,appendActionVisible:L,itemRender:ie,disabled:ne})}):I};if(M==="drag"){var wt=X(k,T(T(T(T(T({},"".concat(k,"-drag"),!0),"".concat(k,"-drag-uploading"),z.some(function(W){return W.status==="uploading"})),"".concat(k,"-drag-hover"),oe==="dragover"),"".concat(k,"-disabled"),ne),"".concat(k,"-rtl"),re==="rtl"),m);return i.createElement("span",null,i.createElement("div",{className:wt,onDrop:de,onDragOver:de,onDragLeave:de,style:Q},i.createElement(_e,C({},we,{ref:pe,className:"".concat(k,"-btn")}),i.createElement("div",{className:"".concat(k,"-drag-container")},_))),Oe())}var yt=X(k,T(T(T(T({},"".concat(k,"-select"),!0),"".concat(k,"-select-").concat(c),!0),"".concat(k,"-disabled"),ne),"".concat(k,"-rtl"),re==="rtl")),It=function(I){return i.createElement("div",{className:yt,style:I},i.createElement(_e,C({},we,{ref:pe})))},We=It(_?void 0:{display:"none"});return c==="picture-card"?i.createElement("span",{className:X("".concat(k,"-picture-card-wrapper"),m)},Oe(We,!!_)):i.createElement("span",{className:m},We,Oe())},Yn=i.forwardRef(Wn);const ht=Yn;var Gn=globalThis&&globalThis.__rest||function(t,e){var a={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(a[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,n=Object.getOwnPropertySymbols(t);oo<0)||a>=1)return ke.error;try{if(t.hasIllEvent||a>.36)return ke.ill}catch{}return ke.normal}function ea(t){return t?Zn[t.status]??"":""}const ta=i.memo(({stand:t,spartito:e,issueMeasures:a,onMeasureClick:n,selectedMeasureIndex:o})=>{if(!t||t.systems.length===0)return null;const l=2,s=t.maxWidth+l*2,r=t.totalHeight+l*2,p=e==null?void 0:e.measures,c=i.useMemo(()=>{const d=new Map;if(a)for(const f of a)d.set(f.measureIndex,f);return d},[a]);return w.jsx("svg",{className:"spartito-stand",viewBox:`${-l} ${-l} ${s} ${r}`,style:{width:"100%",height:"auto"},children:t.systems.map(d=>{const f=d.staffImages.length>0?d.staffImages[0].position.y:0;return w.jsxs("g",{transform:`translate(0, ${d.y})`,children:[d.staffImages.map((u,v)=>w.jsx("image",{href:u.url,x:u.position.x,y:u.position.y,width:u.position.width,height:u.position.height,preserveAspectRatio:"none"},v)),d.measures.map(u=>{const v=u.measureIndex===o,h=p==null?void 0:p[u.measureIndex],y=c.get(u.measureIndex),R=Qn(h,y),U=h&&h.regulationHash!=h.regulationHash0,D=f-1;return w.jsxs("g",{onClick:()=>n(u.measureIndex),children:[w.jsx("rect",{className:`spartito-measure-rect ${v?"selected":""}`,x:u.left,y:0,width:u.right-u.left,height:d.height}),w.jsxs("text",{className:"spartito-measure-index",x:u.left+.5,y:D,fontSize:2.6,fontWeight:"bold",fill:R,children:[ea(y),u.measureIndex+1,y!=null&&y.annotator?w.jsx("tspan",{dy:"-1",fontSize:"1.6px",fill:"DodgerBlue",children:"★"}):null,U?w.jsx("tspan",{y:D-.8,fontSize:"2px",children:"⚠"}):null]})]},u.measureIndex)})]},d.systemIndex)})})}),nt=5;function at(t){var l;const e=new Map;for(const s of t.measures){const r=s.position.systemIndex;e.has(r)||e.set(r,[]),e.get(r).push(s)}const a=[];let n=0;const o=Array.from(e.keys()).sort((s,r)=>s-r);for(const s of o){const r=e.get(s),p=r[0],c=p.backgroundImages||[];let d=0,f=0;if(c.length>0)f=Math.min(...c.map(y=>y.position.y)),d=Math.max(...c.map(y=>y.position.y+y.position.height))-f;else if((l=p.position.staffYs)!=null&&l.length){const h=p.position.staffYs;d=h[h.length-1]-h[0]+24}const u=c.map(h=>({...h,position:{...h.position,y:h.position.y-f}})),v=Math.max(...r.map(h=>h.position.right));a.push({systemIndex:s,y:n,height:d,width:v,staffImages:u,measures:r.map(h=>({measureIndex:h.measureIndex,left:h.position.left,right:h.position.right}))}),n+=d+nt}return{systems:a,totalHeight:n-(a.length>0?nt:0),maxWidth:Math.max(...a.map(s=>s.width),0)}}function na(t){var p;const e=new Map;for(const c of t.measures){const d=c.position.systemIndex;e.has(d)||e.set(d,[]),e.get(d).push(c)}const n=Array.from(e.keys()).sort((c,d)=>c-d).map(c=>{const d=e.get(c),f=d[0],u=f.backgroundImages||[],v=Math.max(...d.map(m=>m.position.right)),h=u.filter(m=>m.original!==!1),y=f.position.staffYs||[],R=y.length||t.stavesCount||0,U=d.map(m=>m.position.right);let D,$,P;return h.length>=R&&R>0?P=h.map(m=>new Ke({backgroundImage:m.url,imagePosition:m.position,top:0,height:m.position.height,staffY:m.position.y+m.position.height/2,maskImage:null,measureCount:d.length})):h.length>0&&R>h.length&&(D=h[0].url,$=h[0].position,y.length>=R&&(P=y.map((m,A)=>new Ke({top:m-10/2,height:10,staffY:10/2,maskImage:null,measureBars:U})))),new Pt({stavesCount:(P==null?void 0:P.length)||R||t.stavesCount,staves:(P==null?void 0:P.length)>0?P:void 0,backgroundImage:D,imagePosition:$,width:v,left:0,top:0,measureCount:d.length,measureBars:U,semantics:[],sidBlackList:[],sidWhiteList:[]})}),o=new Mt({width:794,height:1122,systems:n,semantics:[]}),l=new Ut({title:"Spartito",pages:[o],staffLayoutCode:((p=t.staffGroups)==null?void 0:p.map(c=>c.length>1?`{${c.map(()=>"-").join("")}}`:"-").join(","))||"",settings:{enabledGauge:!1,pageLayoutMethod:Ft.ByLines,semanticConfidenceThreshold:1}}),s=l.staffLayout,r=s.standaloneGroups.map(c=>c.map(d=>s.staffIds.indexOf(d)));return t.staffGroups=r,t.measures.forEach(c=>c.staffGroups=r),l.spartito=t,l.patches=[],l}const{Header:aa,Content:ra}=mt,{Dragger:oa}=gt,sa=async t=>{let e=null;try{const a=await Ht();e=a==null?void 0:a.omrDomain}catch{}for(const a of t.measures)if(a.backgroundImages)for(const n of a.backgroundImages)n.url.startsWith("md5:")&&(n.url=`/uploads/${n.url.replace("md5:","")}`)},rt=t=>{const e=[];for(const a of t.measures){if(!a.regulated)continue;const n=Lt(a);(!n||n.error||!n.fine)&&e.push({scoreId:null,status:n!=null&&n.error?K.Fatal:K.Issue,measureIndex:a.measureIndex,hash:a.regulationHash0,lastUpdate:null,measure:new He(a)})}return e},ia=async(t,e,a)=>{if(!a)return t;try{const n=await _t.get(`/api/scores/${a}/issueMeasures`,{params:{limit:1e3}}),o=n==null?void 0:n.rows;if(console.log("[spartito] fetchAndMerge: scoreId=%s, resp=%o, fetched=%d, localIssues=%d",a,n,(o==null?void 0:o.length)??0,t.length),!(o!=null&&o.length))return t;const l=new Map;for(const f of o)f.hash&&l.set(f.hash,f);const s=new Map;for(const[f,u]of l)u.measure&&s.set(f,st(u.measure,it));const r=(f,u)=>{var y;const v=s.get(f);if(!v)return;const h=(y=e.measures[u])==null?void 0:y.backgroundImages;e.measures[u]=new Dt(v),h&&(e.measures[u].backgroundImages=h)},p=new Set,c=t.map(f=>{const u=f.hash?l.get(f.hash):null;return u?(p.add(f.hash),r(f.hash,f.measureIndex),{...f,status:u.status,annotator:u.annotator,lastUpdate:u.lastUpdate,id:u.id,measure:new He(e.measures[f.measureIndex])}):f}),d=new Set(c.map(f=>f.measureIndex));for(const[f,u]of l)if(!p.has(f))for(const v of e.measures)v.regulationHash0===f&&!d.has(v.measureIndex)&&(r(f,v.measureIndex),c.push({scoreId:u.scoreId,status:u.status,measureIndex:v.measureIndex,hash:u.hash,lastUpdate:u.lastUpdate,measure:new He(e.measures[v.measureIndex]),annotator:u.annotator,id:u.id}),d.add(v.measureIndex));return console.log("[spartito] merged:",c.map(f=>`m${f.measureIndex}:status=${f.status},ann=${f.annotator||"-"}`)),c}catch(n){return console.warn("Failed to fetch annotations for score:",n),t}},ba=()=>{var _,Q,ie,ee;const[t,e]=i.useState(null),[a,n]=i.useState(null),[o,l]=i.useState(null),[s,r]=St(),[[p,c],[d,f],u]=Ct(),[v,h]=i.useState("mask"),y=i.useRef(!1),R=i.useMemo(()=>(o==null?void 0:o.replace(/\.spartito\.json$/i,"").replace(/\.json$/i,""))||null,[o]),U=i.useMemo(()=>({edit:!0,id:R}),[R]),D=i.useMemo(()=>new Rt,[]),$=i.useCallback(async b=>{try{const B=await b.text(),O=st(B,it);await sa(O);const Z=rt(O),te=b.name.replace(/\.spartito\.json$/i,"").replace(/\.json$/i,""),le=await ia(Z,O,te),V=na(O);await kt(V,{solutionStore:D,onlyFetchCache:!0}),y.current=!0,r(V),e(O),n(at(O)),c(le),f(null),l(b.name)}catch(B){console.error("Failed to load spartito:",B),zt.error(`Failed to load spartito: ${B.message}`)}return!1},[D]);i.useEffect(()=>{var b,B;if(y.current){y.current=!1;return}((B=(b=s==null?void 0:s.spartito)==null?void 0:b.measures)==null?void 0:B.length)>0&&o&&(e(s.spartito),n(at(s.spartito)),c(O=>{const Z=new Map,te=new Map;if(O)for(const S of O)S.hash&&!Z.has(S.hash)&&Z.set(S.hash,S),te.set(S.measureIndex,S);const le=rt(s.spartito),V=new Set,ce=le.map(S=>{V.add(S.measureIndex);const J=te.get(S.measureIndex)||(S.hash?Z.get(S.hash):null);return J?{...S,status:J.status,annotator:J.annotator,id:J.id,lastUpdate:J.lastUpdate}:S});if(O)for(const S of O)!V.has(S.measureIndex)&&(S.annotator||S.status===K.Solved||S.status===K.Discard||S.id)&&(ce.push(S),V.add(S.measureIndex));return ce}))},[s]);const P=i.useCallback(b=>{f(b)},[]),m=i.useCallback(()=>{f(null)},[]),A=i.useCallback(()=>{if(!(s!=null&&s.spartito))return;const b=JSON.stringify(s.spartito.toJSON(),null," "),B=new Blob([b],{type:"application/json"}),O=document.createElement("a");O.href=URL.createObjectURL(B),O.download=(o==null?void 0:o.replace(".json","-annotated.json"))||"annotated.spartito.json",O.click()},[s,o]),M=i.useMemo(()=>{if(!(p!=null&&p.length))return null;const b={issue:0,fatal:0,solved:0};for(const B of p)B.status===K.Issue?b.issue++:B.status===K.Fatal?b.fatal++:B.status===K.Solved&&b.solved++;return b},[p]);return w.jsxs(Et.Provider,{value:U,children:[w.jsx("svg",{width:"0",height:"0",style:{position:"absolute",visibility:"hidden"},children:w.jsx(bt,{})}),w.jsxs(mt,{className:"spartito-page",children:[w.jsx(aa,{className:"spartito-header",children:w.jsxs(Jt,{style:{width:"100%",display:"flex",justifyContent:"space-between"},gutter:16,children:[w.jsxs(Qe,{style:{display:"flex",alignItems:"center"},children:[w.jsx(Xt,{to:"/",className:"spartito-logo",children:"STARRY"}),w.jsx("span",{style:{fontSize:14,color:"#666"},children:o||"Spartito"})]}),t&&w.jsx(Qe,{style:{display:"flex",alignItems:"center"},children:w.jsxs(et,{size:16,children:[w.jsxs("span",{style:{fontSize:13,color:"#999"},children:[t.measures.length," measures",M&&M.issue>0&&` · ${M.issue} issue`,M&&M.fatal>0&&` · ${M.fatal} fatal`,M&&M.solved>0&&` · ${M.solved} solved`]}),w.jsx(je,{size:"small",icon:w.jsx(ot,{}),onClick:A,children:"Download"}),w.jsx(gt,{accept:".json",showUploadList:!1,beforeUpload:$,children:w.jsx(je,{size:"small",icon:w.jsx(kn,{}),children:"Re-upload"})})]})})]})}),w.jsx(ra,{className:"spartito-content",children:t?w.jsx(ta,{stand:a,spartito:t,issueMeasures:p,onMeasureClick:P,selectedMeasureIndex:d}):w.jsx("div",{style:{padding:48,maxWidth:600,margin:"80px auto 0"},children:w.jsxs(oa,{accept:".json",showUploadList:!1,beforeUpload:$,children:[w.jsx("p",{className:"ant-upload-drag-icon",children:w.jsx(fn,{})}),w.jsx("p",{className:"ant-upload-text",children:"Click or drag a .spartito.json file"})]})})}),((Q=(_=s.spartito)==null?void 0:_.measures)==null?void 0:Q.length)>0&&w.jsx(Qt,{title:u?w.jsxs(et,{size:20,children:[w.jsxs("div",{children:["Measure #",u.measureIndex+1]}),(ee=(ie=u.measure.basics)==null?void 0:ie[0])!=null&&ee.timeSignature?w.jsxs("div",{style:{display:"inline-flex",flexDirection:"column",alignItems:"center",lineHeight:1.1,fontWeight:"bold"},children:[w.jsx("span",{children:u.measure.basics[0].timeSignature.numerator}),w.jsx("span",{children:u.measure.basics[0].timeSignature.denominator})]}):null,w.jsx(en,{checked:v==="mask",onChange:()=>h(v==="mask"?"origin":"mask"),checkedChildren:"Background",unCheckedChildren:"Original"})]}):null,open:!!u,closable:!0,destroyOnClose:!0,footer:null,mask:!0,width:"98vw",onClose:m,children:u?w.jsx(xt,{bgMode:v,style:{width:"300px"},score:s,record:u,onClose:m}):null})]})]})};export{ba as default}; diff --git a/dist/assets/index-11d8c807.css b/dist/assets/index-11d8c807.css new file mode 100644 index 0000000000000000000000000000000000000000..9f1dc144e791e30e46f03cef8580fa0f6579bc6e --- /dev/null +++ b/dist/assets/index-11d8c807.css @@ -0,0 +1 @@ +.playground{min-height:100vh;display:flex;flex-direction:column;background-color:#eee}.playground.hover{background-color:#efe}.header{flex:0 0 4em;box-shadow:0 0 4px #0004;background-color:#fff;position:sticky;z-index:100;width:100%;height:auto!important;display:flex}.header.admin{background-color:#fafad2}.header.admin .logo:after{content:"#";position:relative;top:-.5em;font-size:70%}.header.edit{background-color:gold}.logo{font-size:26px;font-weight:700;margin-right:20px;color:#000}.logo:hover{text-decoration:none}.updateTime{font-size:80%}.glyphItem{width:50px;height:50px;border:1px solid #999;display:block;float:left}.zoomControl{position:fixed;right:20px;bottom:0;width:100px;height:40px;z-index:10;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.percentText{width:40px;text-align:center;cursor:pointer}.titleInput{width:200px;height:36px;position:relative}.titleInput input{height:100%}.uploadItem{position:relative;padding:10px}.uploadItem img{position:absolute;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.uploadActionsLayer{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;display:flex;justify-content:center;align-items:center}.uploadActionsLayer:hover{opacity:1;background-color:#00000080;z-index:10}.sourceImageList{width:100%;overflow-x:scroll}.playControlBtn{color:#999;font-size:26px;vertical-align:middle}.playControlBtn:hover,.playControlBtnActive{color:#1b9aee}.marking-body{position:relative;width:100%;display:flex;justify-content:space-between;align-items:stretch;background:linear-gradient(90deg,#fff6f6 0%,#fff 50%,#f6fff6 100%);border-top:4px solid #111;border-bottom:4px solid #111;-webkit-user-select:none;-moz-user-select:none;user-select:none}.marking-col{display:flex;flex-direction:column;align-items:stretch;flex:1;flex-shrink:0;overflow-x:scroll;white-space:nowrap}.marking-col::-webkit-scrollbar{display:none}.marking-col:last-child>div{border-left:4px solid #111}.marking-col:first-child>div{border-right:4px solid #111}.with-coord{position:relative;line-height:0;display:inline-block;outline:1px solid rgba(153,153,153,.33);cursor:pointer}.with-coord:hover,.with-coord.active{background-color:#dedee380}.with-coord.white{background-color:#edffe8}.with-coord.black{background-color:#ffe8e8}.with-coord:before{content:"";display:block;position:absolute;left:0;top:50%;width:100%;height:0;border-bottom:1px dashed rgba(70,130,180,.35);transform:translateY(-50%)}.with-coord:after{content:"";display:block;position:absolute;left:50%;top:0;width:0;height:100%;border-right:1px dashed rgba(70,130,180,.35);transform:translate(-50%)}.zoom-box{position:fixed;top:65px;left:0;width:20vw;height:20vw;background-color:#efefefaa;box-shadow:0 0 5px 5px #0000001a;pointer-events:none;font-size:160%}.zoom-box .id{font-size:60%}.marking-tag{background-color:#dedee3;box-shadow:0 1px #9e9e9e inset;flex-shrink:0;cursor:pointer}.marking-tag.checked{background-color:#e6fafd;font-weight:700}.staffTplRow{width:100%;padding-left:10px;cursor:pointer}.staffTplRow:hover{background-color:#efefef}.staffTplRow.current{background-color:#fba5;font-weight:700}.ReactCrop{position:relative;display:inline-block;cursor:crosshair;overflow:hidden;max-width:100%}.ReactCrop:focus{outline:none}.ReactCrop--disabled,.ReactCrop--locked{cursor:inherit}.ReactCrop__image{display:block;max-width:100%;-ms-touch-action:none;touch-action:none}.ReactCrop__crop-selection{position:absolute;top:0;left:0;-webkit-transform:translate3d(0,0,0);transform:translateZ(0);-webkit-box-sizing:border-box;box-sizing:border-box;cursor:move;-webkit-box-shadow:0 0 0 9999em rgba(0,0,0,.5);box-shadow:0 0 0 9999em #00000080;-ms-touch-action:none;touch-action:none;border:1px solid;border-image-source:url(data:image/gif;base64,R0lGODlhCgAKAJECAAAAAP///////wAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OEI5RDc5MTFDNkE2MTFFM0JCMDZEODI2QTI4MzJBOTIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OEI5RDc5MTBDNkE2MTFFM0JCMDZEODI2QTI4MzJBOTIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuZGlkOjAyODAxMTc0MDcyMDY4MTE4MDgzQzNDMjA5MzREQ0ZDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAyODAxMTc0MDcyMDY4MTE4MDgzQzNDMjA5MzREQ0ZDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoAAgAsAAAAAAoACgAAAhWEERkn7W3ei7KlagMWF/dKgYeyGAUAIfkEBQoAAgAsAAAAAAoACgAAAg+UYwLJ7RnQm7QmsCyVKhUAIfkEBQoAAgAsAAAAAAoACgAAAhCUYgLJHdiinNSAVfOEKoUCACH5BAUKAAIALAAAAAAKAAoAAAIRVISAdusPo3RAzYtjaMIaUQAAIfkEBQoAAgAsAAAAAAoACgAAAg+MDiem7Q8bSLFaG5il6xQAIfkEBQoAAgAsAAAAAAoACgAAAg+UYRLJ7QnQm7SmsCyVKhUAIfkEBQoAAgAsAAAAAAoACgAAAhCUYBLJDdiinNSEVfOEKoECACH5BAUKAAIALAAAAAAKAAoAAAIRFISBdusPo3RBzYsjaMIaUQAAOw==);border-image-slice:1;border-image-repeat:repeat}.ReactCrop--disabled .ReactCrop__crop-selection{cursor:inherit}.ReactCrop--circular-crop .ReactCrop__crop-selection{border-radius:50%;-webkit-box-shadow:0px 0px 1px 1px white,0 0 0 9999em rgba(0,0,0,.5);box-shadow:0 0 1px 1px #fff,0 0 0 9999em #00000080}.ReactCrop--invisible-crop .ReactCrop__crop-selection{display:none}.ReactCrop__rule-of-thirds-vt:before,.ReactCrop__rule-of-thirds-vt:after,.ReactCrop__rule-of-thirds-hz:before,.ReactCrop__rule-of-thirds-hz:after{content:"";display:block;position:absolute;background-color:#fff6}.ReactCrop__rule-of-thirds-vt:before,.ReactCrop__rule-of-thirds-vt:after{width:1px;height:100%}.ReactCrop__rule-of-thirds-vt:before{left:33.3333%;left:calc(100% / 3)}.ReactCrop__rule-of-thirds-vt:after{left:66.6666%;left:calc(100% / 3 * 2)}.ReactCrop__rule-of-thirds-hz:before,.ReactCrop__rule-of-thirds-hz:after{width:100%;height:1px}.ReactCrop__rule-of-thirds-hz:before{top:33.3333%;top:calc(100% / 3)}.ReactCrop__rule-of-thirds-hz:after{top:66.6666%;top:calc(100% / 3 * 2)}.ReactCrop__drag-handle{position:absolute}.ReactCrop__drag-handle:after{position:absolute;content:"";display:block;width:10px;height:10px;background-color:#0003;border:1px solid rgba(255,255,255,.7);-webkit-box-sizing:border-box;box-sizing:border-box;outline:1px solid transparent}.ReactCrop .ord-nw{top:0;left:0;margin-top:-5px;margin-left:-5px;cursor:nw-resize}.ReactCrop .ord-nw:after{top:0;left:0}.ReactCrop .ord-n{top:0;left:50%;margin-top:-5px;margin-left:-5px;cursor:n-resize}.ReactCrop .ord-n:after{top:0}.ReactCrop .ord-ne{top:0;right:0;margin-top:-5px;margin-right:-5px;cursor:ne-resize}.ReactCrop .ord-ne:after{top:0;right:0}.ReactCrop .ord-e{top:50%;right:0;margin-top:-5px;margin-right:-5px;cursor:e-resize}.ReactCrop .ord-e:after{right:0}.ReactCrop .ord-se{bottom:0;right:0;margin-bottom:-5px;margin-right:-5px;cursor:se-resize}.ReactCrop .ord-se:after{bottom:0;right:0}.ReactCrop .ord-s{bottom:0;left:50%;margin-bottom:-5px;margin-left:-5px;cursor:s-resize}.ReactCrop .ord-s:after{bottom:0}.ReactCrop .ord-sw{bottom:0;left:0;margin-bottom:-5px;margin-left:-5px;cursor:sw-resize}.ReactCrop .ord-sw:after{bottom:0;left:0}.ReactCrop .ord-w{top:50%;left:0;margin-top:-5px;margin-left:-5px;cursor:w-resize}.ReactCrop .ord-w:after{left:0}.ReactCrop__disabled .ReactCrop__drag-handle{cursor:inherit}.ReactCrop__drag-bar{position:absolute}.ReactCrop__drag-bar.ord-n{top:0;left:0;width:100%;height:6px;margin-top:-3px}.ReactCrop__drag-bar.ord-e{right:0;top:0;width:6px;height:100%;margin-right:-3px}.ReactCrop__drag-bar.ord-s{bottom:0;left:0;width:100%;height:6px;margin-bottom:-3px}.ReactCrop__drag-bar.ord-w{top:0;left:0;width:6px;height:100%;margin-left:-3px}.ReactCrop--new-crop .ReactCrop__drag-bar,.ReactCrop--new-crop .ReactCrop__drag-handle,.ReactCrop--fixed-aspect .ReactCrop__drag-bar,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-n,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-e,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-s,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-w{display:none}@media (pointer: coarse){.ReactCrop .ord-n,.ReactCrop .ord-e,.ReactCrop .ord-s,.ReactCrop .ord-w{display:none}.ReactCrop__drag-handle{width:24px;height:24px}}.page{width:100%;height:100%;display:inline-block;position:absolute;top:0;left:0;background-repeat:no-repeat;background-size:contain;pointer-events:auto;overflow:hidden}.page .corner-number{position:absolute;color:#06ac;font-size:14px;font-weight:700;left:.2em;top:-1.2em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.page .bottom-controls{position:absolute;left:1em;bottom:1em}.page .bottom-controls>span{display:inline-block;border:1px solid #ccc;font-size:32px;font-weight:700;padding:.4em;border-radius:.4em;cursor:pointer;color:#777}.page .bottom-controls>span+span{margin-left:1em}.page .bottom-controls>span i{display:inline-block;margin:0 .2em}.page .new-system{width:2.4em;color:#ccc;position:relative}.page .new-system:after{content:"+";font-size:40px;position:absolute;left:70%;top:50%;transform:translate(-50%,-50%)}.page .graph{width:100%}.page .graph .staff-lines line,.page .graph .measure-bars line{stroke:#000;stroke-width:.1}.page .graph .staff-lines{pointer-events:none}.page .graph image.background{pointer-events:none;opacity:.3}.page .graph.original image.background{opacity:1}.page .graph .connection{stroke:#000;stroke-width:.1}.page .graph .measure .pad{fill:transparent}.page .graph .measure .pad.highlight{fill:#00ff0021}.page .graph .measure .pad.issue{fill:#d8f43615}.page .graph .measure .pad.ill{fill:#f4b8362a}.page .graph .measure .pad.error{fill:#f443362a}.page .graph .measure:hover .pad,.page .graph .measure.focus .pad{fill:#00ff0021}.page .graph .measure:hover .pad.error,.page .graph .measure.focus .pad.error{fill:#f4433659}.page .graph .measure .chord-rect{fill:#cfca;stroke:#cfc;stroke-width:.1}.page .graph .pan-handle{cursor:move}.page .graph .pan-handle use{fill:#fff;stroke:#0006}.page .graph .pan-handle.holding use{fill:#fdd;stroke:transparent}.page .graph .measure-bar .pan-handle{cursor:col-resize}.page .graph .remove{cursor:pointer}.page .graph .remove use{stroke:#777;fill:transparent}.page .graph .remove:hover use{stroke:red}.page .graph .locator use{stroke:transparent}.page .graph .cursor-token{pointer-events:none}.page .graph .cursor-token use{fill:#0004}.page .graph .cursor-token.active use{fill:#04c}.page .graph .token{-webkit-user-select:none;-moz-user-select:none;user-select:none;color:#4682b4}.page .graph .token .remove{display:none}.page .graph .token.non-glyph{color:#00c2}.page .graph .token.octave-shift{font-weight:700;color:#8a2be2}.page .graph .token.highlight use{color:#f44336}.page .graph .token text.Title{font-weight:700;fill:#333}.page .graph .token text.Author{fill:#355}.page .graph .token text.TempoNumeral{fill:#050;fill-opacity:.2}.page .graph .token text.TempoNumeral:hover{fill-opacity:1}.page .graph .token text.annotated{fill:orange;font-style:italic}.page .graph .anti.tokens .token{color:#fff}.page .graph .semantic[data-semantic-index="1"]{fill:#e62019}.page .graph .semantic[data-semantic-index="2"]{fill:#e62719}.page .graph .semantic[data-semantic-index="3"]{fill:#e62e19}.page .graph .semantic[data-semantic-index="4"]{fill:#e63519}.page .graph .semantic[data-semantic-index="5"]{fill:#e63b19}.page .graph .semantic[data-semantic-index="6"]{fill:#e64219}.page .graph .semantic[data-semantic-index="7"]{fill:#e64919}.page .graph .semantic[data-semantic-index="8"]{fill:#e65019}.page .graph .semantic[data-semantic-index="9"]{fill:#e65719}.page .graph .semantic[data-semantic-index="10"]{fill:#e65e19}.page .graph .semantic[data-semantic-index="11"]{fill:#e66419}.page .graph .semantic[data-semantic-index="12"]{fill:#e66b19}.page .graph .semantic[data-semantic-index="13"]{fill:#e67219}.page .graph .semantic[data-semantic-index="14"]{fill:#e67919}.page .graph .semantic[data-semantic-index="15"]{fill:#e68019}.page .graph .semantic[data-semantic-index="16"]{fill:#e68619}.page .graph .semantic[data-semantic-index="17"]{fill:#e68d19}.page .graph .semantic[data-semantic-index="18"]{fill:#e69419}.page .graph .semantic[data-semantic-index="19"]{fill:#e69b19}.page .graph .semantic[data-semantic-index="20"]{fill:#e6a219}.page .graph .semantic[data-semantic-index="21"]{fill:#e6a819}.page .graph .semantic[data-semantic-index="22"]{fill:#e6af19}.page .graph .semantic[data-semantic-index="23"]{fill:#e6b619}.page .graph .semantic[data-semantic-index="24"]{fill:#e6bd19}.page .graph .semantic[data-semantic-index="25"]{fill:#e6c419}.page .graph .semantic[data-semantic-index="26"]{fill:#e6ca19}.page .graph .semantic[data-semantic-index="27"]{fill:#e6d119}.page .graph .semantic[data-semantic-index="28"]{fill:#e6d819}.page .graph .semantic[data-semantic-index="29"]{fill:#e6df19}.page .graph .semantic[data-semantic-index="30"]{fill:#e5e619}.page .graph .semantic[data-semantic-index="31"]{fill:#dfe619}.page .graph .semantic[data-semantic-index="32"]{fill:#d8e619}.page .graph .semantic[data-semantic-index="33"]{fill:#d1e619}.page .graph .semantic[data-semantic-index="34"]{fill:#cae619}.page .graph .semantic[data-semantic-index="35"]{fill:#c3e619}.page .graph .semantic[data-semantic-index="36"]{fill:#bde619}.page .graph .semantic[data-semantic-index="37"]{fill:#b6e619}.page .graph .semantic[data-semantic-index="38"]{fill:#afe619}.page .graph .semantic[data-semantic-index="39"]{fill:#a8e619}.page .graph .semantic[data-semantic-index="40"]{fill:#a1e619}.page .graph .semantic[data-semantic-index="41"]{fill:#9be619}.page .graph .semantic[data-semantic-index="42"]{fill:#94e619}.page .graph .semantic[data-semantic-index="43"]{fill:#8de619}.page .graph .semantic[data-semantic-index="44"]{fill:#86e619}.page .graph .semantic[data-semantic-index="45"]{fill:#80e619}.page .graph .semantic[data-semantic-index="46"]{fill:#79e619}.page .graph .semantic[data-semantic-index="47"]{fill:#72e619}.page .graph .semantic[data-semantic-index="48"]{fill:#6be619}.page .graph .semantic[data-semantic-index="49"]{fill:#64e619}.page .graph .semantic[data-semantic-index="50"]{fill:#5de619}.page .graph .semantic[data-semantic-index="51"]{fill:#57e619}.page .graph .semantic[data-semantic-index="52"]{fill:#50e619}.page .graph .semantic[data-semantic-index="53"]{fill:#49e619}.page .graph .semantic[data-semantic-index="54"]{fill:#42e619}.page .graph .semantic[data-semantic-index="55"]{fill:#3ce619}.page .graph .semantic[data-semantic-index="56"]{fill:#35e619}.page .graph .semantic[data-semantic-index="57"]{fill:#2ee619}.page .graph .semantic[data-semantic-index="58"]{fill:#27e619}.page .graph .semantic[data-semantic-index="59"]{fill:#20e619}.page .graph .semantic[data-semantic-index="60"]{fill:#19e619}.page .graph .semantic[data-semantic-index="61"]{fill:#19e620}.page .graph .semantic[data-semantic-index="62"]{fill:#19e627}.page .graph .semantic[data-semantic-index="63"]{fill:#19e62e}.page .graph .semantic[data-semantic-index="64"]{fill:#19e635}.page .graph .semantic[data-semantic-index="65"]{fill:#19e63c}.page .graph .semantic[data-semantic-index="66"]{fill:#19e642}.page .graph .semantic[data-semantic-index="67"]{fill:#19e649}.page .graph .semantic[data-semantic-index="68"]{fill:#19e650}.page .graph .semantic[data-semantic-index="69"]{fill:#19e657}.page .graph .semantic[data-semantic-index="70"]{fill:#19e65e}.page .graph .semantic[data-semantic-index="71"]{fill:#19e664}.page .graph .semantic[data-semantic-index="72"]{fill:#19e66b}.page .graph .semantic[data-semantic-index="73"]{fill:#19e672}.page .graph .semantic[data-semantic-index="74"]{fill:#19e679}.page .graph .semantic[data-semantic-index="75"]{fill:#19e680}.page .graph .semantic[data-semantic-index="76"]{fill:#19e686}.page .graph .semantic[data-semantic-index="77"]{fill:#19e68d}.page .graph .semantic[data-semantic-index="78"]{fill:#19e694}.page .graph .semantic[data-semantic-index="79"]{fill:#19e69b}.page .graph .semantic[data-semantic-index="80"]{fill:#19e6a2}.page .graph .semantic[data-semantic-index="81"]{fill:#19e6a8}.page .graph .semantic[data-semantic-index="82"]{fill:#19e6af}.page .graph .semantic[data-semantic-index="83"]{fill:#19e6b6}.page .graph .semantic[data-semantic-index="84"]{fill:#19e6bd}.page .graph .semantic[data-semantic-index="85"]{fill:#19e6c4}.page .graph .semantic[data-semantic-index="86"]{fill:#19e6ca}.page .graph .semantic[data-semantic-index="87"]{fill:#19e6d1}.page .graph .semantic[data-semantic-index="88"]{fill:#19e6d8}.page .graph .semantic[data-semantic-index="89"]{fill:#19e6df}.page .graph .semantic[data-semantic-index="90"]{fill:#19e5e6}.page .graph .semantic[data-semantic-index="91"]{fill:#19dfe6}.page .graph .semantic[data-semantic-index="92"]{fill:#19d8e6}.page .graph .semantic[data-semantic-index="93"]{fill:#19d1e6}.page .graph .semantic[data-semantic-index="94"]{fill:#19cae6}.page .graph .semantic[data-semantic-index="95"]{fill:#19c3e6}.page .graph .semantic[data-semantic-index="96"]{fill:#19bde6}.page .graph .semantic[data-semantic-index="97"]{fill:#19b6e6}.page .graph .semantic[data-semantic-index="98"]{fill:#19afe6}.page .graph .semantic[data-semantic-index="99"]{fill:#19a8e6}.page .graph .semantic[data-semantic-index="100"]{fill:#19a1e6}.page .graph .semantic circle{r:.2}.page .graph .semantic circle:hover{r:.5}.page .graph .semantic circle,.page .graph .semantic rect{fill:currentColor;fill-opacity:.6}.page .graph .semantic.highlight circle,.page .graph .semantic.highlight rect{fill-opacity:.8;r:.3}.page .graph .semantic.moving{opacity:.5}.page .graph .semantic.strong circle,.page .graph .semantic.strong rect{fill-opacity:.8;r:.4!important;stroke:orange;stroke-width:.2}.page .graph .semantic.strong g polygon{transform:scale(1.5)}.page .graph .semantic.strong g rect{stroke-width:.8;stroke:orange}.page .graph .semantic.vline circle{display:none}.page .graph .system .staves{pointer-events:none}.page .graph .system .controls text{font-size:2px;cursor:pointer;fill-opacity:.3}.page .graph .system .controls text.active{stroke:green;stroke-width:.16}.page .graph .system.focus .staff.focus .background{opacity:.6}.page .graph .system .staff.focus .semantic circle{r:.36}.page .graph .system .staff.focus .semantic:hover circle{r:.5}.page .graph .system .staff.moving{cursor:crosshair;-webkit-user-select:none;-moz-user-select:none;user-select:none}.page>.remove{position:absolute;right:0;top:0;transform:translate(100%,-80%);background:white;border-radius:.5em;width:1em;height:1em;text-align:center;opacity:.1}.page>.remove:hover{opacity:1;color:red;font-weight:700}.page .notePlayOn{color:#97ff1e!important}.ant-dropdown-menu{transform:translate(25px)}.staff-layout line{stroke:#000;stroke-width:.1}.staff-rect rect{fill:#f003}.staff-rect line{stroke:#0003}.staff-rect.active rect{fill:transparent}.staff-rect.active line{stroke:#000}.staff-layout-measure-bar{stroke-width:.1}.staff-layout-measure-bar.dashed{stroke-dasharray:.3 .3}.staff-layout-measure-bar.blank{stroke-width:0!important}.brackets-area{fill:transparent;cursor:pointer}.brackets-area:hover{fill:#0002}.tick-line{pointer-events:none}.tick-line rect,.tick-line path{fill:#0d46639c!important}.tick-line .fraction text{font-size:1.2px;font-weight:700}.tick-line .integer{font-size:1px}.staff-lines line,.measure-bars line{stroke:#000;stroke-width:.1}.bp3-omnibar{filter:blur(0);opacity:1;background-color:#fff;border-radius:3px;box-shadow:0 0 0 1px #10161a1a,0 4px 8px #10161a33,0 18px 46px 6px #10161a33;left:calc(50% - 250px);top:20vh;width:500px;z-index:21}.bp3-omnibar.bp3-overlay-enter,.bp3-omnibar.bp3-overlay-appear{filter:blur(20px);opacity:.2}.bp3-omnibar.bp3-overlay-enter-active,.bp3-omnibar.bp3-overlay-appear-active{filter:blur(0);opacity:1;transition-delay:0;transition-duration:.2s;transition-property:filter,opacity;transition-timing-function:cubic-bezier(.4,1,.75,.9)}.bp3-omnibar.bp3-overlay-exit{filter:blur(0);opacity:1}.bp3-omnibar.bp3-overlay-exit-active{filter:blur(20px);opacity:.2;transition-delay:0;transition-duration:.2s;transition-property:filter,opacity;transition-timing-function:cubic-bezier(.4,1,.75,.9)}.bp3-omnibar .bp3-input{background-color:transparent;border-radius:0}.bp3-omnibar .bp3-input,.bp3-omnibar .bp3-input:focus{box-shadow:none}.bp3-omnibar .bp3-menu{background-color:transparent;border-radius:0;box-shadow:inset 0 1px #10161a26;max-height:calc(60vh - 40px);overflow:auto}.bp3-omnibar .bp3-menu:empty{display:none}.bp3-dark .bp3-omnibar,.bp3-omnibar.bp3-dark{background-color:#30404d;box-shadow:0 0 0 1px #10161a33,0 4px 8px #10161a66,0 18px 46px 6px #10161a66}.bp3-omnibar-overlay .bp3-overlay-backdrop{background-color:#10161a33}.bp3-multi-select{min-width:150px}.bp3-multi-select-popover .bp3-menu{max-height:300px;max-width:400px;overflow:auto}.bp3-select-popover.bp3-select-match-target-width{width:100%}.bp3-select-popover.bp3-select-match-target-width .bp3-menu{max-width:none;min-width:0}.bp3-select-popover .bp3-popover-content{padding:5px}.bp3-select-popover .bp3-input-group{margin-bottom:0}.bp3-select-popover .bp3-menu{max-height:300px;max-width:400px;overflow:auto;padding:0}.bp3-select-popover .bp3-menu:not(:first-child){padding-top:5px}._semanticSelectItem_12toc_1{width:100%;color:#000;border-top:1px solid currentColor;border-left:1px solid currentColor;border-right:1px solid currentColor;display:flex;align-items:center}._semanticSelectItem_12toc_1:hover{background-color:#efefef}._semanticSelectItem_12toc_1:last-child{border-bottom:1px solid currentColor}._semanticSelectItem_12toc_1 svg{display:inline-block}._semanticSelectItemActive_12toc_19{background-color:#607d8b}.ReactCrop--disabled{width:100%}.ReactCrop--disabled .ReactCrop__crop-selection{border:none}.ReactCrop__image{width:100%}.ReactCrop{position:relative;display:inline-block;max-width:none}.hud{position:absolute;left:0;top:0;width:100%;height:100%}.hud .system{outline:1px solid steelblue;background-color:#4683b417}.hud .system.active{background-color:#4682b43d}.hud .system.loading{pointer-events:none;background-color:#4caf5033}.hud .stave{outline:1px rgba(210,72,72,.85) solid;background-color:#ff00001a}.hud .stave.active{background-color:#ff00004d}.hud .stave .index{position:absolute;left:-20px;top:50%;transform:translateY(-50%);color:#d24848d9;font-weight:700}.pageNum{position:absolute;bottom:0;left:50%;transform:translate(-50%,100%);font-size:16px;color:#333}.pageNum:after{content:close-quote}.menu-item{display:flex;align-items:center;min-width:100px}.menu-item .emmentaler{display:inline-block;font-size:30px;height:30px;width:20px}.menu-item .name{display:inline-block;width:150px;height:30px}.menu-item .confidence{color:#999;font-size:80%}.menu-item .whitelist .name,.menu-item .blacklist .name{font-weight:700}.menu-item .whitelist .name{color:green}.menu-item .blacklist .name{text-decoration:line-through;color:red}.pointer-events-none{pointer-events:none} diff --git a/dist/assets/index-16c0d1b2.js b/dist/assets/index-16c0d1b2.js deleted file mode 100644 index 191510845878004a0995ca3bc1bcd5855d368836..0000000000000000000000000000000000000000 --- a/dist/assets/index-16c0d1b2.js +++ /dev/null @@ -1 +0,0 @@ -import{r as A,_ as H,g as Z,u as _,j as i,h as w}from"./umi-d55575d8.js";import{u as G,a as O,q,L as k,P as V,Q as X,b as S,S as W,c as $}from"./index-ef09616c.js";import{T as ee,S as te,P as R}from"./Tags-d90bdcf5.js";import{w as L,_ as ae,a as ie,C as se,c as Y,b as ne,o as re,d as oe,e as le,u as ce,f as z,r as T,n as U,m as de}from"./_setToString-2991057b.js";import{s as ge,V as Ae,g as ue,I as M,D as me,P as he}from"./Table-2648cf63.js";import{B as J}from"./button-95279f00.js";import{u as Ee}from"./useDebounce-e3ca8075.js";import"./index-a803403e.js";function fe(a){var e,o=function(l){return function(){e=null,a.apply(void 0,ae(l))}},n=function(){if(e==null){for(var l=arguments.length,d=new Array(l),u=0;uC)}),r=function(){var x=e.target,C=x||v,I=C();u.current=O(I,"scroll",function(b){f(b)}),f({target:I})};A.useEffect(function(){return r(),function(){u.current&&u.current.remove(),f.cancel()}},[e.target]);var B=function(x){var C=e.onClick,I=e.target,b=e.duration,D=b===void 0?450:b;ge(0,{getContainer:I||v,duration:D}),typeof C=="function"&&C(x)},y=A.useContext(se),p=y.getPrefixCls,N=y.direction,j=e.prefixCls,s=e.className,t=s===void 0?"":s,c=p("back-top",j),g=p(),Q=Y(c,ne({},"".concat(c,"-rtl"),N==="rtl"),t),m=re(e,["prefixCls","className","children","visibilityHeight","target","visible"]);return A.createElement("div",H({},m,{className:Q,onClick:B,ref:d}),A.createElement(Qe,{prefixCls:c,rootPrefixCls:g,visible:h},e.children))};const Be=A.memo(ve),ye=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],xe=["B","kiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],Ce=["b","kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],Ie=["b","kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],K=(a,e,o)=>{let n=a;return typeof e=="string"||Array.isArray(e)?n=a.toLocaleString(e,o):(e===!0||o!==void 0)&&(n=a.toLocaleString(void 0,o)),n};var Se=(a,e)=>{if(!Number.isFinite(a))throw new TypeError(`Expected a finite number, got ${typeof a}: ${a}`);e=Object.assign({bits:!1,binary:!1},e);const o=e.bits?e.binary?Ie:Ce:e.binary?xe:ye;if(e.signed&&a===0)return` 0 ${o[0]}`;const n=a<0,h=n?"-":e.signed?"+":"";n&&(a=-a);let l;if(e.minimumFractionDigits!==void 0&&(l={minimumFractionDigits:e.minimumFractionDigits}),e.maximumFractionDigits!==void 0&&(l=Object.assign({maximumFractionDigits:e.maximumFractionDigits},l)),a<1){const f=K(a,e.locale,l);return h+f+" "+o[0]}const d=Math.min(Math.floor(e.binary?Math.log(a)/Math.log(1024):Math.log10(a)/3),o.length-1);a/=Math.pow(e.binary?1024:1e3,d),l||(a=a.toPrecision(3));const u=K(Number(a),e.locale,l),v=o[d];return h+u+" "+v};const pe=Z(Se);const Ne="_title_jd9ry_1",je="_header_jd9ry_4",be="_logo_jd9ry_14",we="_imageFastPreview_jd9ry_18",Te="_list_jd9ry_53",P={title:Ne,header:je,logo:be,imageFastPreview:we,"site-tag-plus":"_site-tag-plus_jd9ry_34","ant-table-row":"_ant-table-row_jd9ry_38","ant-tag":"_ant-tag_jd9ry_44",delete:"_delete_jd9ry_47","score-tags":"_score-tags_jd9ry_50",list:Te},Me=i.jsx("svg",{style:{width:"1.4em",height:"1.4em",margin:"0 10px"},viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"200",height:"200",children:i.jsx("path",{d:"M960 1024H64a64 64 0 0 1-64-64V64a64 64 0 0 1 64-64h896a64 64 0 0 1 64 64v896a64 64 0 0 1-64 64z m0-896a64 64 0 0 0-64-64H128a64 64 0 0 0-64 64v768a64 64 0 0 0 64 64h768a64 64 0 0 0 64-64V128z m-128 640h-128a64 64 0 0 1 0-128h64V576h-64a64 64 0 0 1 0-128h64V384h-64a64 64 0 0 1 0-128h128a64 64 0 0 1 64 64v384a64 64 0 0 1-64 64z m-320-128a64 64 0 0 1 0 128H384a64 64 0 0 1-64-64V512a64 64 0 0 1 64-64h64V384H384a64 64 0 0 1 0-128h128a64 64 0 0 1 64 64v192a64 64 0 0 1-64 64H448v64h64z m-320 128a64 64 0 0 1-64-64V320a64 64 0 0 1 128 0v384a64 64 0 0 1-64 64z"})}),Je=i.jsxs("svg",{style:{width:"1.5em",height:"1.5em",margin:"0 10px"},viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"200",height:"200",children:[i.jsx("path",{d:"M428.62 383.7l193.23-45.33v-31.94l-193.23 45.48zM374.7 656c-10.23-8.15-25.15-13.26-41.74-13.26-16.59 0-31.52 5.11-42.02 13.26-8.85 7.19-14.65 16.59-14.65 26.54 0 10.23 5.8 19.63 14.65 26.82 10.5 8.15 25.44 12.99 42.02 12.99 16.59 0 31.51-4.84 41.74-12.99 9.26-7.19 14.93-16.59 14.93-26.82 0.01-9.95-5.67-19.35-14.93-26.54zM607.2 602.65v-0.14c-10.5-8.15-25.44-13.14-42.02-13.14-16.59 0-31.51 4.98-42.02 13.14-8.85 7.05-14.65 16.59-14.65 26.68 0 9.95 5.8 19.49 14.65 26.54 10.52 8.29 25.44 13.26 42.02 13.26 16.59 0 31.52-4.97 42.02-13.26 8.85-6.78 14.38-16.32 14.65-25.99v-0.96c-0.14-9.97-5.8-19.22-14.65-26.13z",fill:"#000000"}),i.jsx("path",{d:"M512 64C264.58 64 64 264.58 64 512s200.58 448 448 448 448-200.58 448-448S759.42 64 512 64z m148.83 565.19v0.82c-0.28 22.26-11.61 42.3-29.85 56.4-17.14 13.55-40.37 21.56-65.8 21.56s-48.79-8.01-65.93-21.29c-18.39-14.51-29.72-34.69-29.72-57.49 0-22.67 11.34-42.86 29.72-57.23 17.14-13.4 40.35-21.57 65.93-21.57 21.02 0 40.64 5.68 56.67 15.34V362.27l-193.23 45.48V683.64c-0.28 22.13-11.75 42.03-29.87 56.41-17.14 13.26-40.35 21.43-65.79 21.43-25.43 0-48.79-8.17-65.8-21.43-18.51-14.65-29.99-34.69-29.99-57.51 0-22.39 11.48-42.84 29.99-57.23 17.01-13.26 40.37-21.29 65.8-21.29 21 0 40.78 5.53 56.67 15.07V333.94l0.27-0.68v-0.28l0.14-0.27V332.02l0.14-0.28 0.14-0.27v-0.55h0.13l0.14-0.7v-0.28c0.41-0.96 0.98-2.06 1.53-2.9v-0.27l0.27-0.14v-0.28l0.28-0.13 0.13-0.57 0.28-0.27 0.55-0.55v-0.55h0.28l0.13-0.28 0.28-0.27 0.27-0.14v-0.14l0.28-0.27 1.1-0.84v-0.27h0.14l0.41-0.28 0.14-0.27h0.14l0.82-0.84 0.28-0.14 0.27-0.14v-0.13l0.28-0.14 0.82-0.41v-0.14l0.69-0.41h0.14c0.84-0.42 1.66-0.7 2.63-0.98 0.82-0.55 1.78-0.82 2.9-0.82l230.83-54.32c10.23-2.35 20.18 3.6 23.23 13.26v0.28c0.82 2.07 1.1 4.15 1.1 6.49v346.11z",fill:"#000000"})]});function Ye(){var N,j;const a=ce(),e=A.useRef(),[o,n]=A.useState(null),h=A.useRef(null),[l,d]=A.useState([]),[u,v]=z(async()=>await T.get("/api/tags"),[]),f=_(),r=A.useMemo(()=>{try{const s=q.parse(f.search),t=JSON.parse(decodeURIComponent(s.search))||{};return F(t)}catch{return{}}},[f.search]);A.useEffect(()=>{v()},[]);const[B,y]=z(async()=>{var s;try{const t=await T("/api/musicSets",{params:{total:(s=B.value)==null?void 0:s.total,limit:50,offset:0,...r}});return{data:t.rows,success:!0,total:t.count}}catch(t){console.error(t)}return{data:void 0,success:!1}},[r]);Ee(()=>{y()},1e3,[r]);const p=[{title:a.formatMessage({id:"home.column.preview"}),dataIndex:"content",width:54,hideInSearch:!0,render:(s,t,c)=>i.jsx(M,{width:40,height:40,preview:!1,onMouseEnter:()=>{var Q,m;const g=(m=(Q=t.content)==null?void 0:Q.images)==null?void 0:m[0];n(g?{...g,url:U(g.url)}:null)},onMouseLeave:()=>n(null),onClick:()=>{n(null),d(t.content.images.map(g=>U(g.url)))},style:{cursor:"pointer"},src:"data:image/png;base64,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"})},{title:a.formatMessage({id:"home.column.name"}),dataIndex:"name",sorter:!0,initialValue:r.search,sortOrder:r.sortedBy==="name"&&r.sortedType?{asc:"ascend",desc:"descend"}[r.sortedType]:null,render:(s,t,c)=>i.jsx(k,{style:{display:"flex"},to:`/${{stave:"playground",simple:"numbered"}[t.type]}/${t.id}`,children:`${t.name||a.formatMessage({id:"common.untitled"})}`})},{title:a.formatMessage({id:"home.column.type"}),dataIndex:"type",width:"6em",sorter:!0,initialValue:r.search,sortOrder:r.sortedBy==="type"&&r.sortedType?{asc:"ascend",desc:"descend"}[r.sortedType]:null,render:(s,t,c)=>({stave:Je,simple:Me})[t.type]},{title:i.jsx(ee,{}),dataIndex:"tagIdList",width:"2em",valueType:"select",filters:!0,hideInSearch:!0,filteredValue:(r==null?void 0:r.tagIdList)||[],valueEnum:()=>{var s;return((s=u.value)==null?void 0:s.reduce((t,c)=>({...t,[c.id]:{text:c.name||" "}}),{}))||{}},render:(s,t,c)=>i.jsx(te,{preview:!0,id:t.id,tagList:t.tagList,onChange:g=>{console.log("tags",g),t.tagList=g}},t.id)},{title:a.formatMessage({id:"home.column.pages"}),render:(s,t)=>{var c,g;return(g=(c=t.content)==null?void 0:c.images)==null?void 0:g.length},width:"4em",align:"center",hideInSearch:!0},{title:a.formatMessage({id:"home.column.size"}),width:"6em",render:(s,t)=>{var c,g,Q;return((c=t.content)==null?void 0:c.images)&&pe((Q=(g=t.content)==null?void 0:g.images)==null?void 0:Q.reduce((m,E)=>m+((E==null?void 0:E.size)??0),0))},align:"center",hideInSearch:!0},{title:a.formatMessage({id:"home.column.lastUpdate"}),width:"12em",dataIndex:"lastUpdateAt",sorter:!0,sortOrder:r.sortedBy==="lastUpdateAt"&&r.sortedType?{asc:"ascend",desc:"descend"}[r.sortedType]:null,hideInSearch:!0},{title:a.formatMessage({id:"home.column.actions"}),width:"4em",hideInSearch:!0,render:(s,t,c)=>[(!t.tagList||!t.tagList.length)&&i.jsx(V,{title:a.formatMessage({id:"home.confirmDelete"}),okText:a.formatMessage({id:"common.confirm"}),cancelText:a.formatMessage({id:"common.cancel"}),icon:i.jsx(X,{}),onConfirm:async()=>{await T.delete(`/api/musicSets/${t.id}`)&&(de.success(a.formatMessage({id:"home.deleteSuccess"})),await y())},children:i.jsx(J,{className:"delete",type:"link",children:i.jsx(me,{})})},"delete")]}];return i.jsxs(S,{children:[i.jsx(S.Header,{className:P.header,children:i.jsxs(W,{children:[i.jsx(k,{className:P.logo,to:"/",children:"STARRY✨"}),i.jsxs(J,{onClick:()=>{w.push("/playground")},children:[i.jsx(R,{}),a.formatMessage({id:"home.createStave"})]}),i.jsxs(J,{onClick:()=>{w.push("/numbered")},children:[i.jsx(R,{}),a.formatMessage({id:"home.createNumbered"})]}),i.jsx($,{})]})}),i.jsx(S,{style:{minHeight:"100vh"},children:i.jsx(S.Content,{style:{padding:"0 50px 50px",marginTop:"104px",width:"unset"},children:i.jsx(he,{loading:B.loading,dataSource:(N=B.value)==null?void 0:N.data,style:{maxWidth:"100em",margin:"0 auto"},actionRef:e,formRef:h,columns:p,search:{filterType:"light"},size:"small",options:{density:!1,reload:y},pagination:{total:(j=B.value)==null?void 0:j.total,pageSize:50,current:+r.offset/+r.limit+1||1},onChange:(s,t,c,g)=>{var E;const Q={ascend:"asc",descend:"desc"}[c.order],m={...r,offset:(s.current-1)*s.pageSize,limit:s.pageSize,tagIdList:t.tagIdList,search:r.search};c.order?(m.sortedBy=c.field,m.sortedType=Q):(m.sortedBy=null,m.sortedType=null),((E=t.tagIdList)==null?void 0:E.length)>0?m.tagIdList=t.tagIdList:m.tagIdList=null,console.log("onChange"),w.push({search:`search=${encodeURIComponent(JSON.stringify(F(m)))}`})},beforeSearchSubmit:s=>{const t={...r,search:s.name};console.log("beforeSearchSubmit",t),w.push({search:Object.values(t).filter(Boolean).length>0?`search=${encodeURIComponent(JSON.stringify(t))}`:""})},rowKey:"id"})})}),i.jsx(S.Footer,{style:{textAlign:"center"},children:a.formatMessage({id:"common.footer"})}),o&&i.jsx("div",{className:P.imageFastPreview,children:i.jsx("img",{src:o.url,style:{objectFit:"contain",objectPosition:"center",maxHeight:"100%",maxWidth:"100%",backgroundColor:"#ffffff",boxShadow:"0 0 10px 0px rgba(0,0,0,0.5)"},alt:""})}),i.jsx(Be,{}),i.jsx(M.PreviewGroup,{preview:{open:l.length>0,destroyOnClose:!0,onOpenChange:s=>{s||d([])}},children:l.map((s,t)=>i.jsx(M,{wrapperStyle:{fontSize:"12px"},height:40,src:s},t))})]})}function F(a){return Object.entries(a).reduce((e,[o,n])=>{var l,d;return(o==="tagIdList"&&((d=(l=n==null?void 0:n.filter)==null?void 0:l.call(n,u=>/^\d+$/.test(String(n))))==null?void 0:d.length)>0||n)&&(e[o]=n),e},{})}export{Ye as default}; diff --git a/dist/assets/index-22b5485d.js b/dist/assets/index-22b5485d.js new file mode 100644 index 0000000000000000000000000000000000000000..bd3c501dbf4863faa748930ee15686d32a36aec1 --- /dev/null +++ b/dist/assets/index-22b5485d.js @@ -0,0 +1,45 @@ +import{g as getDefaultExportFromCjs,c as commonjsGlobal,i as commonjsRequire}from"./umi-2135699e.js";import{aU as _assignValue,bL as _castPath,az as _isIndex,aO as isObject_1,aS as _toKey,aP as _baseGet,aQ as hasIn_1,aq as _Symbol,ay as isArguments_1,at as isArray_1,as as _arrayPush,aW as _overRest,aX as _setToString,S as require$$5}from"./_setToString-038b76d7.js";var assignValue=_assignValue,castPath$1=_castPath,isIndex=_isIndex,isObject=isObject_1,toKey=_toKey;function baseSet$1(s,n,i,r){if(!isObject(s))return s;n=castPath$1(n,s);for(var a=-1,c=n.length,l=c-1,d=s;d!=null&&++a0&&i(d)?n>1?baseFlatten$1(d,n-1,i,r,a):arrayPush(a,d):r||(a[a.length]=d)}return a}var _baseFlatten=baseFlatten$1,baseFlatten=_baseFlatten;function flatten$1(s){var n=s==null?0:s.length;return n?baseFlatten(s,1):[]}var flatten_1=flatten$1,flatten=flatten_1,overRest=_overRest,setToString=_setToString;function flatRest$1(s){return setToString(overRest(s,void 0,flatten),s+"")}var _flatRest=flatRest$1,basePick=_basePick,flatRest=_flatRest,pick=flatRest(function(s,n){return s==null?{}:basePick(s,n)}),pick_1=pick;const pick$1=getDefaultExportFromCjs(pick_1);var musicWidgetsBrowser_umd={exports:{}};(function(s,n){(function(r,a){s.exports=a()})(typeof self<"u"?self:commonjsGlobal,function(){return function(i){var r={};function a(c){if(r[c])return r[c].exports;var l=r[c]={i:c,l:!1,exports:{}};return i[c].call(l.exports,l,l.exports,a),l.l=!0,l.exports}return a.m=i,a.c=r,a.d=function(c,l,d){a.o(c,l)||Object.defineProperty(c,l,{enumerable:!0,get:d})},a.r=function(c){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})},a.t=function(c,l){if(l&1&&(c=a(c)),l&8||l&4&&typeof c=="object"&&c&&c.__esModule)return c;var d=Object.create(null);if(a.r(d),Object.defineProperty(d,"default",{enumerable:!0,value:c}),l&2&&typeof c!="string")for(var u in c)a.d(d,u,function(p){return c[p]}.bind(null,u));return d},a.n=function(c){var l=c&&c.__esModule?function(){return c.default}:function(){return c};return a.d(l,"a",l),l},a.o=function(c,l){return Object.prototype.hasOwnProperty.call(c,l)},a.p="",a(a.s="fae3")}({"0241":function(i,r,a){const c=a("b37a"),l=a("33e9"),u=800*.24,p=m=>Math.tanh(m/u),f=function(m,T,{softIndexFactor:S=1}={}){T=Number(T);const M=m[T];if(T>0){const C=m[T-1];console.assert(M.start!=null,"note.start is null",M),console.assert(C.start!=null,"lastNote.start is null",C),M.deltaSi=p((M.start-C.start)*S),M.softIndex=C.softIndex+M.deltaSi,console.assert(!Number.isNaN(M.deltaSi),"note.deltaSi is NaN.",M.start,C.start)}else M.softIndex=0,M.deltaSi=0},g=function(m,T,S=c.zero()){m.matches=[];const M=T.pitchMap[m.pitch];if(M)for(const C of M){const k=new c(m,C);S&&k.evaluatePrev(S),m.matches.push(k)}},y=function(m,{softIndexFactor:T=1}={}){for(let S=0;Snew Promise(u=>requestAnimationFrame(u));class d{constructor(p,{cacheSpan:f=600,onMidi:g,onPlayFinish:y,onTurnCursor:x}={}){this.cacheSpan=f,this.onMidi=g,this.onPlayFinish=y,this.onTurnCursor=x;let m;p.notes&&Number.isFinite(p.endTime)?m=p:m=c.parseMidi(p),this.notation=m,this.events=m.events,this.isPlaying=!1,this.progressTime=0,this.startTime=performance.now(),this.duration=m.endTime,this.cursorTurnDelta=0,console.assert(m.tempos&&m.tempos.length,"[MidiPlayer] invalid notation, tempos is empty.")}dispose(){this.isPlaying=!1,this.progressTime=0}get progressTicks(){return this.notation.timeToTicks(this.progressTime)}set progressTicks(p){this.progressTime=this.notation.ticksToTime(p),this.onTurnCursor&&this.onTurnCursor(this.progressTime)}async play({nextFrame:p=l}={}){this.progressTime>=this.duration&&(this.progressTime=0);let f=performance.now();this.startTime=f-this.progressTime,this.isPlaying=!0;let g=this.events.findIndex(y=>y.time>=f-this.startTime);for(;this.isPlaying;){for(;gthis.progressTime+this.cacheSpan)break;y.data.type==="channel"&&this.startTime+y.time>=f&&this.onMidi&&this.onMidi(y.data,this.startTime+y.time)}if(await p(),!this.isPlaying)break;if(this.cursorTurnDelta!==0){const y=this.cursorTurnDelta<0;if(this.startTime-=this.cursorTurnDelta,this.cursorTurnDelta=0,y)for(;g>0;--g){const x=this.events[g].time;if(this.startTime+xthis.duration&&(this.isPlaying=!1,this.onPlayFinish&&this.onPlayFinish())}}pause(){this.isPlaying=!1}turnCursor(p){this.isPlaying?this.cursorTurnDelta+=p-this.progressTime:this.progressTime=p,this.onTurnCursor&&this.onTurnCursor(p)}}i.exports=d},"2ef0":function(i,r,a){(function(c,l){var d;/** +* @license +* Lodash +* Copyright OpenJS Foundation and other contributors +* Released under MIT license +* Based on Underscore.js 1.8.3 +* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +*/(function(){var u,p="4.17.21",f=200,g="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",y="Expected a function",x="Invalid `variable` option passed into `_.template`",m="__lodash_hash_undefined__",T=500,S="__lodash_placeholder__",M=1,C=2,k=4,w=1,_=2,b=1,N=2,L=4,R=8,q=16,H=32,Z=64,Y=128,nt=256,z=512,ot=30,G="...",B=800,O=16,U=1,j=2,X=3,rt=1/0,lt=9007199254740991,Tt=17976931348623157e292,Q=0/0,ct=4294967295,it=ct-1,at=ct>>>1,pt=[["ary",Y],["bind",b],["bindKey",N],["curry",R],["curryRight",q],["flip",z],["partial",H],["partialRight",Z],["rearg",nt]],dt="[object Arguments]",ft="[object Array]",Dt="[object AsyncFunction]",It="[object Boolean]",Gt="[object Date]",Kt="[object DOMException]",le="[object Error]",se="[object Function]",Ki="[object GeneratorFunction]",ve="[object Map]",gn="[object Number]",Ao="[object Null]",Ne="[object Object]",$i="[object Promise]",Mo="[object Proxy]",yn="[object RegExp]",xe="[object Set]",Sn="[object String]",Fn="[object Symbol]",No="[object Undefined]",vn="[object WeakMap]",wo="[object WeakSet]",xn="[object ArrayBuffer]",en="[object DataView]",Ms="[object Float32Array]",Ns="[object Float64Array]",ws="[object Int8Array]",Is="[object Int16Array]",Cs="[object Int32Array]",Os="[object Uint8Array]",Rs="[object Uint8ClampedArray]",Ds="[object Uint16Array]",Bs="[object Uint32Array]",Io=/\b__p \+= '';/g,Co=/\b(__p \+=) '' \+/g,Oo=/(__e\(.*?\)|\b__t\)) \+\n'';/g,zi=/&(?:amp|lt|gt|quot|#39);/g,Ji=/[&<>"']/g,Ro=RegExp(zi.source),Do=RegExp(Ji.source),Bo=/<%-([\s\S]+?)%>/g,Po=/<%([\s\S]+?)%>/g,Zi=/<%=([\s\S]+?)%>/g,Fo=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Lo=/^\w*$/,Ho=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ps=/[\\^$.*+?()[\]{}|]/g,Wo=RegExp(Ps.source),Fs=/^\s+/,Uo=/\s/,qo=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Go=/\{\n\/\* \[wrapped with (.+)\] \*/,Vo=/,? & /,Yo=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Xo=/[()=,{}\[\]\/\s]/,Ko=/\\(\\)?/g,$o=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ji=/\w*$/,zo=/^[-+]0x[0-9a-f]+$/i,Jo=/^0b[01]+$/i,Zo=/^\[object .+?Constructor\]$/,jo=/^0o[0-7]+$/i,Qo=/^(?:0|[1-9]\d*)$/,tc=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ln=/($^)/,ec=/['\n\r\u2028\u2029\\]/g,Hn="\\ud800-\\udfff",nc="\\u0300-\\u036f",sc="\\ufe20-\\ufe2f",ic="\\u20d0-\\u20ff",Qi=nc+sc+ic,tr="\\u2700-\\u27bf",er="a-z\\xdf-\\xf6\\xf8-\\xff",rc="\\xac\\xb1\\xd7\\xf7",ac="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",oc="\\u2000-\\u206f",cc=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",nr="A-Z\\xc0-\\xd6\\xd8-\\xde",sr="\\ufe0e\\ufe0f",ir=rc+ac+oc+cc,Ls="['’]",uc="["+Hn+"]",rr="["+ir+"]",Wn="["+Qi+"]",ar="\\d+",lc="["+tr+"]",or="["+er+"]",cr="[^"+Hn+ir+ar+tr+er+nr+"]",Hs="\\ud83c[\\udffb-\\udfff]",fc="(?:"+Wn+"|"+Hs+")",ur="[^"+Hn+"]",Ws="(?:\\ud83c[\\udde6-\\uddff]){2}",Us="[\\ud800-\\udbff][\\udc00-\\udfff]",nn="["+nr+"]",lr="\\u200d",fr="(?:"+or+"|"+cr+")",hc="(?:"+nn+"|"+cr+")",hr="(?:"+Ls+"(?:d|ll|m|re|s|t|ve))?",dr="(?:"+Ls+"(?:D|LL|M|RE|S|T|VE))?",pr=fc+"?",mr="["+sr+"]?",dc="(?:"+lr+"(?:"+[ur,Ws,Us].join("|")+")"+mr+pr+")*",pc="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",mc="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",gr=mr+pr+dc,gc="(?:"+[lc,Ws,Us].join("|")+")"+gr,yc="(?:"+[ur+Wn+"?",Wn,Ws,Us,uc].join("|")+")",Sc=RegExp(Ls,"g"),vc=RegExp(Wn,"g"),qs=RegExp(Hs+"(?="+Hs+")|"+yc+gr,"g"),xc=RegExp([nn+"?"+or+"+"+hr+"(?="+[rr,nn,"$"].join("|")+")",hc+"+"+dr+"(?="+[rr,nn+fr,"$"].join("|")+")",nn+"?"+fr+"+"+hr,nn+"+"+dr,mc,pc,ar,gc].join("|"),"g"),Tc=RegExp("["+lr+Hn+Qi+sr+"]"),_c=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ec=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],bc=-1,Bt={};Bt[Ms]=Bt[Ns]=Bt[ws]=Bt[Is]=Bt[Cs]=Bt[Os]=Bt[Rs]=Bt[Ds]=Bt[Bs]=!0,Bt[dt]=Bt[ft]=Bt[xn]=Bt[It]=Bt[en]=Bt[Gt]=Bt[le]=Bt[se]=Bt[ve]=Bt[gn]=Bt[Ne]=Bt[yn]=Bt[xe]=Bt[Sn]=Bt[vn]=!1;var Rt={};Rt[dt]=Rt[ft]=Rt[xn]=Rt[en]=Rt[It]=Rt[Gt]=Rt[Ms]=Rt[Ns]=Rt[ws]=Rt[Is]=Rt[Cs]=Rt[ve]=Rt[gn]=Rt[Ne]=Rt[yn]=Rt[xe]=Rt[Sn]=Rt[Fn]=Rt[Os]=Rt[Rs]=Rt[Ds]=Rt[Bs]=!0,Rt[le]=Rt[se]=Rt[vn]=!1;var kc={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},Ac={"&":"&","<":"<",">":">",'"':""","'":"'"},Mc={"&":"&","<":"<",">":">",""":'"',"'":"'"},Nc={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},wc=parseFloat,Ic=parseInt,yr=typeof c=="object"&&c&&c.Object===Object&&c,Cc=typeof self=="object"&&self&&self.Object===Object&&self,Yt=yr||Cc||Function("return this")(),Sr=r&&!r.nodeType&&r,Tn=Sr&&typeof l=="object"&&l&&!l.nodeType&&l,vr=Tn&&Tn.exports===Sr,Gs=vr&&yr.process,fe=function(){try{var P=Tn&&Tn.require&&Tn.require("util").types;return P||Gs&&Gs.binding&&Gs.binding("util")}catch{}}(),xr=fe&&fe.isArrayBuffer,Tr=fe&&fe.isDate,_r=fe&&fe.isMap,Er=fe&&fe.isRegExp,br=fe&&fe.isSet,kr=fe&&fe.isTypedArray;function ie(P,V,W){switch(W.length){case 0:return P.call(V);case 1:return P.call(V,W[0]);case 2:return P.call(V,W[0],W[1]);case 3:return P.call(V,W[0],W[1],W[2])}return P.apply(V,W)}function Oc(P,V,W,ht){for(var vt=-1,Nt=P==null?0:P.length;++vt-1}function Vs(P,V,W){for(var ht=-1,vt=P==null?0:P.length;++ht-1;);return W}function Rr(P,V){for(var W=P.length;W--&&sn(V,P[W],0)>-1;);return W}function Uc(P,V){for(var W=P.length,ht=0;W--;)P[W]===V&&++ht;return ht}var qc=$s(kc),Gc=$s(Ac);function Vc(P){return"\\"+Nc[P]}function Yc(P,V){return P==null?u:P[V]}function rn(P){return Tc.test(P)}function Xc(P){return _c.test(P)}function Kc(P){for(var V,W=[];!(V=P.next()).done;)W.push(V.value);return W}function js(P){var V=-1,W=Array(P.size);return P.forEach(function(ht,vt){W[++V]=[vt,ht]}),W}function Dr(P,V){return function(W){return P(V(W))}}function We(P,V){for(var W=-1,ht=P.length,vt=0,Nt=[];++W-1}function Du(t,e){var o=this.__data__,h=rs(o,t);return h<0?(++this.size,o.push([t,e])):o[h][1]=e,this}we.prototype.clear=Iu,we.prototype.delete=Cu,we.prototype.get=Ou,we.prototype.has=Ru,we.prototype.set=Du;function Ie(t){var e=-1,o=t==null?0:t.length;for(this.clear();++e=e?t:e)),t}function me(t,e,o,h,v,A){var I,D=e&M,F=e&C,K=e&k;if(o&&(I=v?o(t,h,v,A):o(t)),I!==u)return I;if(!Ft(t))return t;var $=xt(t);if($){if(I=Ll(t),!D)return Qt(t,I)}else{var J=zt(t),ut=J==se||J==Ki;if(Xe(t))return ga(t,D);if(J==Ne||J==dt||ut&&!v){if(I=F||ut?{}:Ba(t),!D)return F?Ml(t,Ju(I,t)):Al(t,Xr(I,t))}else{if(!Rt[J])return v?t:{};I=Hl(t,J,D)}}A||(A=new _e);var mt=A.get(t);if(mt)return mt;A.set(t,I),lo(t)?t.forEach(function(St){I.add(me(St,e,o,St,t,A))}):co(t)&&t.forEach(function(St,kt){I.set(kt,me(St,e,o,kt,t,A))});var yt=K?F?bi:Ei:F?ee:Vt,Et=$?u:yt(t);return he(Et||t,function(St,kt){Et&&(kt=St,St=t[kt]),Nn(I,kt,me(St,e,o,kt,t,A))}),I}function Zu(t){var e=Vt(t);return function(o){return Kr(o,t,e)}}function Kr(t,e,o){var h=o.length;if(t==null)return!h;for(t=Ot(t);h--;){var v=o[h],A=e[v],I=t[v];if(I===u&&!(v in t)||!A(I))return!1}return!0}function $r(t,e,o){if(typeof t!="function")throw new de(y);return Bn(function(){t.apply(u,o)},e)}function wn(t,e,o,h){var v=-1,A=Un,I=!0,D=t.length,F=[],K=e.length;if(!D)return F;o&&(e=Pt(e,re(o))),h?(A=Vs,I=!1):e.length>=f&&(A=_n,I=!1,e=new ze(e));t:for(;++vv?0:v+o),h=h===u||h>v?v:_t(h),h<0&&(h+=v),h=o>h?0:ho(h);o0&&o(D)?e>1?Xt(D,e-1,o,h,v):He(v,D):h||(v[v.length]=D)}return v}var ri=_a(),Zr=_a(!0);function ke(t,e){return t&&ri(t,e,Vt)}function ai(t,e){return t&&Zr(t,e,Vt)}function os(t,e){return Le(e,function(o){return Be(t[o])})}function Ze(t,e){e=Ve(e,t);for(var o=0,h=e.length;t!=null&&oe}function tl(t,e){return t!=null&&Ct.call(t,e)}function el(t,e){return t!=null&&e in Ot(t)}function nl(t,e,o){return t>=$t(e,o)&&t=120&&$.length>=120)?new ze(I&&$):u}$=t[0];var J=-1,ut=D[0];t:for(;++J-1;)D!==t&&jn.call(D,F,1),jn.call(t,F,1);return t}function ca(t,e){for(var o=t?e.length:0,h=o-1;o--;){var v=e[o];if(o==h||v!==A){var A=v;De(v)?jn.call(t,v,1):gi(t,v)}}return t}function di(t,e){return t+es(qr()*(e-t+1))}function ml(t,e,o,h){for(var v=-1,A=qt(ts((e-t)/(o||1)),0),I=W(A);A--;)I[h?A:++v]=t,t+=o;return I}function pi(t,e){var o="";if(!t||e<1||e>lt)return o;do e%2&&(o+=t),e=es(e/2),e&&(t+=t);while(e);return o}function bt(t,e){return Ci(La(t,e,ne),t+"")}function gl(t){return Yr(mn(t))}function yl(t,e){var o=mn(t);return Ss(o,Je(e,0,o.length))}function On(t,e,o,h){if(!Ft(t))return t;e=Ve(e,t);for(var v=-1,A=e.length,I=A-1,D=t;D!=null&&++vv?0:v+e),o=o>v?v:o,o<0&&(o+=v),v=e>o?0:o-e>>>0,e>>>=0;for(var A=W(v);++h>>1,I=t[A];I!==null&&!oe(I)&&(o?I<=e:I=f){var K=e?null:Cl(t);if(K)return Gn(K);I=!1,v=_n,F=new ze}else F=e?[]:D;t:for(;++h=h?t:ge(t,e,o)}var ma=cu||function(t){return Yt.clearTimeout(t)};function ga(t,e){if(e)return t.slice();var o=t.length,h=Fr?Fr(o):new t.constructor(o);return t.copy(h),h}function xi(t){var e=new t.constructor(t.byteLength);return new Jn(e).set(new Jn(t)),e}function _l(t,e){var o=e?xi(t.buffer):t.buffer;return new t.constructor(o,t.byteOffset,t.byteLength)}function El(t){var e=new t.constructor(t.source,ji.exec(t));return e.lastIndex=t.lastIndex,e}function bl(t){return Mn?Ot(Mn.call(t)):{}}function ya(t,e){var o=e?xi(t.buffer):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}function Sa(t,e){if(t!==e){var o=t!==u,h=t===null,v=t===t,A=oe(t),I=e!==u,D=e===null,F=e===e,K=oe(e);if(!D&&!K&&!A&&t>e||A&&I&&F&&!D&&!K||h&&I&&F||!o&&F||!v)return 1;if(!h&&!A&&!K&&t=D)return F;var K=o[h];return F*(K=="desc"?-1:1)}}return t.index-e.index}function va(t,e,o,h){for(var v=-1,A=t.length,I=o.length,D=-1,F=e.length,K=qt(A-I,0),$=W(F+K),J=!h;++D1?o[v-1]:u,I=v>2?o[2]:u;for(A=t.length>3&&typeof A=="function"?(v--,A):u,I&&Zt(o[0],o[1],I)&&(A=v<3?u:A,v=1),e=Ot(e);++h-1?v[A?e[I]:I]:u}}function ka(t){return Re(function(e){var o=e.length,h=o,v=pe.prototype.thru;for(t&&e.reverse();h--;){var A=e[h];if(typeof A!="function")throw new de(y);if(v&&!I&&gs(A)=="wrapper")var I=new pe([],!0)}for(h=I?h:o;++h1&&Mt.reverse(),$&&FD))return!1;var K=A.get(t),$=A.get(e);if(K&&$)return K==e&&$==t;var J=-1,ut=!0,mt=o&_?new ze:u;for(A.set(t,e),A.set(e,t);++J1?"& ":"")+e[h],e=e.join(o>2?", ":" "),t.replace(qo,`{ +/* [wrapped with `+e+`] */ +`)}function Ul(t){return xt(t)||tn(t)||!!(Wr&&t&&t[Wr])}function De(t,e){var o=typeof t;return e=e??lt,!!e&&(o=="number"||o!="symbol"&&Qo.test(t))&&t>-1&&t%1==0&&t0){if(++e>=B)return arguments[0]}else e=0;return t.apply(u,arguments)}}function Ss(t,e){var o=-1,h=t.length,v=h-1;for(e=e===u?h:e;++o1?t[e-1]:u;return o=typeof o=="function"?(t.pop(),o):u,Ja(t,o)});function Za(t){var e=E(t);return e.__chain__=!0,e}function Qf(t,e){return e(t),t}function vs(t,e){return e(t)}var th=Re(function(t){var e=t.length,o=e?t[0]:0,h=this.__wrapped__,v=function(A){return ii(A,t)};return e>1||this.__actions__.length||!(h instanceof At)||!De(o)?this.thru(v):(h=h.slice(o,+o+(e?1:0)),h.__actions__.push({func:vs,args:[v],thisArg:u}),new pe(h,this.__chain__).thru(function(A){return e&&!A.length&&A.push(u),A}))});function eh(){return Za(this)}function nh(){return new pe(this.value(),this.__chain__)}function sh(){this.__values__===u&&(this.__values__=fo(this.value()));var t=this.__index__>=this.__values__.length,e=t?u:this.__values__[this.__index__++];return{done:t,value:e}}function ih(){return this}function rh(t){for(var e,o=this;o instanceof is;){var h=Va(o);h.__index__=0,h.__values__=u,e?v.__wrapped__=h:e=h;var v=h;o=o.__wrapped__}return v.__wrapped__=t,e}function ah(){var t=this.__wrapped__;if(t instanceof At){var e=t;return this.__actions__.length&&(e=new At(this)),e=e.reverse(),e.__actions__.push({func:vs,args:[Oi],thisArg:u}),new pe(e,this.__chain__)}return this.thru(Oi)}function oh(){return da(this.__wrapped__,this.__actions__)}var ch=fs(function(t,e,o){Ct.call(t,o)?++t[o]:Ce(t,o,1)});function uh(t,e,o){var h=xt(t)?Ar:ju;return o&&Zt(t,e,o)&&(e=u),h(t,gt(e,3))}function lh(t,e){var o=xt(t)?Le:Jr;return o(t,gt(e,3))}var fh=ba(Ya),hh=ba(Xa);function dh(t,e){return Xt(xs(t,e),1)}function ph(t,e){return Xt(xs(t,e),rt)}function mh(t,e,o){return o=o===u?1:_t(o),Xt(xs(t,e),o)}function ja(t,e){var o=xt(t)?he:qe;return o(t,gt(e,3))}function Qa(t,e){var o=xt(t)?Rc:zr;return o(t,gt(e,3))}var gh=fs(function(t,e,o){Ct.call(t,o)?t[o].push(e):Ce(t,o,[e])});function yh(t,e,o,h){t=te(t)?t:mn(t),o=o&&!h?_t(o):0;var v=t.length;return o<0&&(o=qt(v+o,0)),ks(t)?o<=v&&t.indexOf(e,o)>-1:!!v&&sn(t,e,o)>-1}var Sh=bt(function(t,e,o){var h=-1,v=typeof e=="function",A=te(t)?W(t.length):[];return qe(t,function(I){A[++h]=v?ie(e,I,o):In(I,e,o)}),A}),vh=fs(function(t,e,o){Ce(t,o,e)});function xs(t,e){var o=xt(t)?Pt:na;return o(t,gt(e,3))}function xh(t,e,o,h){return t==null?[]:(xt(e)||(e=e==null?[]:[e]),o=h?u:o,xt(o)||(o=o==null?[]:[o]),aa(t,e,o))}var Th=fs(function(t,e,o){t[o?0:1].push(e)},function(){return[[],[]]});function _h(t,e,o){var h=xt(t)?Ys:Ir,v=arguments.length<3;return h(t,gt(e,4),o,v,qe)}function Eh(t,e,o){var h=xt(t)?Dc:Ir,v=arguments.length<3;return h(t,gt(e,4),o,v,zr)}function bh(t,e){var o=xt(t)?Le:Jr;return o(t,Es(gt(e,3)))}function kh(t){var e=xt(t)?Yr:gl;return e(t)}function Ah(t,e,o){(o?Zt(t,e,o):e===u)?e=1:e=_t(e);var h=xt(t)?Ku:yl;return h(t,e)}function Mh(t){var e=xt(t)?$u:vl;return e(t)}function Nh(t){if(t==null)return 0;if(te(t))return ks(t)?an(t):t.length;var e=zt(t);return e==ve||e==xe?t.size:li(t).length}function wh(t,e,o){var h=xt(t)?Xs:xl;return o&&Zt(t,e,o)&&(e=u),h(t,gt(e,3))}var Ih=bt(function(t,e){if(t==null)return[];var o=e.length;return o>1&&Zt(t,e[0],e[1])?e=[]:o>2&&Zt(e[0],e[1],e[2])&&(e=[e[0]]),aa(t,Xt(e,1),[])}),Ts=uu||function(){return Yt.Date.now()};function Ch(t,e){if(typeof e!="function")throw new de(y);return t=_t(t),function(){if(--t<1)return e.apply(this,arguments)}}function to(t,e,o){return e=o?u:e,e=t&&e==null?t.length:e,Oe(t,Y,u,u,u,u,e)}function eo(t,e){var o;if(typeof e!="function")throw new de(y);return t=_t(t),function(){return--t>0&&(o=e.apply(this,arguments)),t<=1&&(e=u),o}}var Di=bt(function(t,e,o){var h=b;if(o.length){var v=We(o,dn(Di));h|=H}return Oe(t,h,e,o,v)}),no=bt(function(t,e,o){var h=b|N;if(o.length){var v=We(o,dn(no));h|=H}return Oe(e,h,t,o,v)});function so(t,e,o){e=o?u:e;var h=Oe(t,R,u,u,u,u,u,e);return h.placeholder=so.placeholder,h}function io(t,e,o){e=o?u:e;var h=Oe(t,q,u,u,u,u,u,e);return h.placeholder=io.placeholder,h}function ro(t,e,o){var h,v,A,I,D,F,K=0,$=!1,J=!1,ut=!0;if(typeof t!="function")throw new de(y);e=Se(e)||0,Ft(o)&&($=!!o.leading,J="maxWait"in o,A=J?qt(Se(o.maxWait)||0,e):A,ut="trailing"in o?!!o.trailing:ut);function mt(Wt){var be=h,Fe=v;return h=v=u,K=Wt,I=t.apply(Fe,be),I}function yt(Wt){return K=Wt,D=Bn(kt,e),$?mt(Wt):I}function Et(Wt){var be=Wt-F,Fe=Wt-K,ko=e-be;return J?$t(ko,A-Fe):ko}function St(Wt){var be=Wt-F,Fe=Wt-K;return F===u||be>=e||be<0||J&&Fe>=A}function kt(){var Wt=Ts();if(St(Wt))return Mt(Wt);D=Bn(kt,Et(Wt))}function Mt(Wt){return D=u,ut&&h?mt(Wt):(h=v=u,I)}function ce(){D!==u&&ma(D),K=0,h=F=v=D=u}function jt(){return D===u?I:Mt(Ts())}function ue(){var Wt=Ts(),be=St(Wt);if(h=arguments,v=this,F=Wt,be){if(D===u)return yt(F);if(J)return ma(D),D=Bn(kt,e),mt(F)}return D===u&&(D=Bn(kt,e)),I}return ue.cancel=ce,ue.flush=jt,ue}var Oh=bt(function(t,e){return $r(t,1,e)}),Rh=bt(function(t,e,o){return $r(t,Se(e)||0,o)});function Dh(t){return Oe(t,z)}function _s(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new de(y);var o=function(){var h=arguments,v=e?e.apply(this,h):h[0],A=o.cache;if(A.has(v))return A.get(v);var I=t.apply(this,h);return o.cache=A.set(v,I)||A,I};return o.cache=new(_s.Cache||Ie),o}_s.Cache=Ie;function Es(t){if(typeof t!="function")throw new de(y);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function Bh(t){return eo(2,t)}var Ph=Tl(function(t,e){e=e.length==1&&xt(e[0])?Pt(e[0],re(gt())):Pt(Xt(e,1),re(gt()));var o=e.length;return bt(function(h){for(var v=-1,A=$t(h.length,o);++v=e}),tn=Qr(function(){return arguments}())?Qr:function(t){return Lt(t)&&Ct.call(t,"callee")&&!Hr.call(t,"callee")},xt=W.isArray,Zh=xr?re(xr):il;function te(t){return t!=null&&bs(t.length)&&!Be(t)}function Ht(t){return Lt(t)&&te(t)}function jh(t){return t===!0||t===!1||Lt(t)&&Jt(t)==It}var Xe=fu||Xi,Qh=Tr?re(Tr):rl;function td(t){return Lt(t)&&t.nodeType===1&&!Pn(t)}function ed(t){if(t==null)return!0;if(te(t)&&(xt(t)||typeof t=="string"||typeof t.splice=="function"||Xe(t)||pn(t)||tn(t)))return!t.length;var e=zt(t);if(e==ve||e==xe)return!t.size;if(Dn(t))return!li(t).length;for(var o in t)if(Ct.call(t,o))return!1;return!0}function nd(t,e){return Cn(t,e)}function sd(t,e,o){o=typeof o=="function"?o:u;var h=o?o(t,e):u;return h===u?Cn(t,e,u,o):!!h}function Pi(t){if(!Lt(t))return!1;var e=Jt(t);return e==le||e==Kt||typeof t.message=="string"&&typeof t.name=="string"&&!Pn(t)}function id(t){return typeof t=="number"&&Ur(t)}function Be(t){if(!Ft(t))return!1;var e=Jt(t);return e==se||e==Ki||e==Dt||e==Mo}function oo(t){return typeof t=="number"&&t==_t(t)}function bs(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=lt}function Ft(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}function Lt(t){return t!=null&&typeof t=="object"}var co=_r?re(_r):ol;function rd(t,e){return t===e||ui(t,e,Ai(e))}function ad(t,e,o){return o=typeof o=="function"?o:u,ui(t,e,Ai(e),o)}function od(t){return uo(t)&&t!=+t}function cd(t){if(Vl(t))throw new vt(g);return ta(t)}function ud(t){return t===null}function ld(t){return t==null}function uo(t){return typeof t=="number"||Lt(t)&&Jt(t)==gn}function Pn(t){if(!Lt(t)||Jt(t)!=Ne)return!1;var e=Zn(t);if(e===null)return!0;var o=Ct.call(e,"constructor")&&e.constructor;return typeof o=="function"&&o instanceof o&&Kn.call(o)==ru}var Fi=Er?re(Er):cl;function fd(t){return oo(t)&&t>=-lt&&t<=lt}var lo=br?re(br):ul;function ks(t){return typeof t=="string"||!xt(t)&&Lt(t)&&Jt(t)==Sn}function oe(t){return typeof t=="symbol"||Lt(t)&&Jt(t)==Fn}var pn=kr?re(kr):ll;function hd(t){return t===u}function dd(t){return Lt(t)&&zt(t)==vn}function pd(t){return Lt(t)&&Jt(t)==wo}var md=ms(fi),gd=ms(function(t,e){return t<=e});function fo(t){if(!t)return[];if(te(t))return ks(t)?Te(t):Qt(t);if(En&&t[En])return Kc(t[En]());var e=zt(t),o=e==ve?js:e==xe?Gn:mn;return o(t)}function Pe(t){if(!t)return t===0?t:0;if(t=Se(t),t===rt||t===-rt){var e=t<0?-1:1;return e*Tt}return t===t?t:0}function _t(t){var e=Pe(t),o=e%1;return e===e?o?e-o:e:0}function ho(t){return t?Je(_t(t),0,ct):0}function Se(t){if(typeof t=="number")return t;if(oe(t))return Q;if(Ft(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Ft(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=Cr(t);var o=Jo.test(t);return o||jo.test(t)?Ic(t.slice(2),o?2:8):zo.test(t)?Q:+t}function po(t){return Ae(t,ee(t))}function yd(t){return t?Je(_t(t),-lt,lt):t===0?t:0}function wt(t){return t==null?"":ae(t)}var Sd=fn(function(t,e){if(Dn(e)||te(e)){Ae(e,Vt(e),t);return}for(var o in e)Ct.call(e,o)&&Nn(t,o,e[o])}),mo=fn(function(t,e){Ae(e,ee(e),t)}),As=fn(function(t,e,o,h){Ae(e,ee(e),t,h)}),vd=fn(function(t,e,o,h){Ae(e,Vt(e),t,h)}),xd=Re(ii);function Td(t,e){var o=ln(t);return e==null?o:Xr(o,e)}var _d=bt(function(t,e){t=Ot(t);var o=-1,h=e.length,v=h>2?e[2]:u;for(v&&Zt(e[0],e[1],v)&&(h=1);++o1),A}),Ae(t,bi(t),o),h&&(o=me(o,M|C|k,Ol));for(var v=e.length;v--;)gi(o,e[v]);return o});function Wd(t,e){return yo(t,Es(gt(e)))}var Ud=Re(function(t,e){return t==null?{}:dl(t,e)});function yo(t,e){if(t==null)return{};var o=Pt(bi(t),function(h){return[h]});return e=gt(e),oa(t,o,function(h,v){return e(h,v[0])})}function qd(t,e,o){e=Ve(e,t);var h=-1,v=e.length;for(v||(v=1,t=u);++he){var h=t;t=e,e=h}if(o||t%1||e%1){var v=qr();return $t(t+v*(e-t+wc("1e-"+((v+"").length-1))),e)}return di(t,e)}var Qd=hn(function(t,e,o){return e=e.toLowerCase(),t+(o?xo(e):e)});function xo(t){return Wi(wt(t).toLowerCase())}function To(t){return t=wt(t),t&&t.replace(tc,qc).replace(vc,"")}function tp(t,e,o){t=wt(t),e=ae(e);var h=t.length;o=o===u?h:Je(_t(o),0,h);var v=o;return o-=e.length,o>=0&&t.slice(o,v)==e}function ep(t){return t=wt(t),t&&Do.test(t)?t.replace(Ji,Gc):t}function np(t){return t=wt(t),t&&Wo.test(t)?t.replace(Ps,"\\$&"):t}var sp=hn(function(t,e,o){return t+(o?"-":"")+e.toLowerCase()}),ip=hn(function(t,e,o){return t+(o?" ":"")+e.toLowerCase()}),rp=Ea("toLowerCase");function ap(t,e,o){t=wt(t),e=_t(e);var h=e?an(t):0;if(!e||h>=e)return t;var v=(e-h)/2;return ps(es(v),o)+t+ps(ts(v),o)}function op(t,e,o){t=wt(t),e=_t(e);var h=e?an(t):0;return e&&h>>0,o?(t=wt(t),t&&(typeof e=="string"||e!=null&&!Fi(e))&&(e=ae(e),!e&&rn(t))?Ye(Te(t),0,o):t.split(e,o)):[]}var pp=hn(function(t,e,o){return t+(o?" ":"")+Wi(e)});function mp(t,e,o){return t=wt(t),o=o==null?0:Je(_t(o),0,t.length),e=ae(e),t.slice(o,o+e.length)==e}function gp(t,e,o){var h=E.templateSettings;o&&Zt(t,e,o)&&(e=u),t=wt(t),e=As({},e,h,Ia);var v=As({},e.imports,h.imports,Ia),A=Vt(v),I=Zs(v,A),D,F,K=0,$=e.interpolate||Ln,J="__p += '",ut=Qs((e.escape||Ln).source+"|"+$.source+"|"+($===Zi?$o:Ln).source+"|"+(e.evaluate||Ln).source+"|$","g"),mt="//# sourceURL="+(Ct.call(e,"sourceURL")?(e.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++bc+"]")+` +`;t.replace(ut,function(St,kt,Mt,ce,jt,ue){return Mt||(Mt=ce),J+=t.slice(K,ue).replace(ec,Vc),kt&&(D=!0,J+=`' + +__e(`+kt+`) + +'`),jt&&(F=!0,J+=`'; +`+jt+`; +__p += '`),Mt&&(J+=`' + +((__t = (`+Mt+`)) == null ? '' : __t) + +'`),K=ue+St.length,St}),J+=`'; +`;var yt=Ct.call(e,"variable")&&e.variable;if(!yt)J=`with (obj) { +`+J+` +} +`;else if(Xo.test(yt))throw new vt(x);J=(F?J.replace(Io,""):J).replace(Co,"$1").replace(Oo,"$1;"),J="function("+(yt||"obj")+`) { +`+(yt?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(D?", __e = _.escape":"")+(F?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+J+`return __p +}`;var Et=Eo(function(){return Nt(A,mt+"return "+J).apply(u,I)});if(Et.source=J,Pi(Et))throw Et;return Et}function yp(t){return wt(t).toLowerCase()}function Sp(t){return wt(t).toUpperCase()}function vp(t,e,o){if(t=wt(t),t&&(o||e===u))return Cr(t);if(!t||!(e=ae(e)))return t;var h=Te(t),v=Te(e),A=Or(h,v),I=Rr(h,v)+1;return Ye(h,A,I).join("")}function xp(t,e,o){if(t=wt(t),t&&(o||e===u))return t.slice(0,Br(t)+1);if(!t||!(e=ae(e)))return t;var h=Te(t),v=Rr(h,Te(e))+1;return Ye(h,0,v).join("")}function Tp(t,e,o){if(t=wt(t),t&&(o||e===u))return t.replace(Fs,"");if(!t||!(e=ae(e)))return t;var h=Te(t),v=Or(h,Te(e));return Ye(h,v).join("")}function _p(t,e){var o=ot,h=G;if(Ft(e)){var v="separator"in e?e.separator:v;o="length"in e?_t(e.length):o,h="omission"in e?ae(e.omission):h}t=wt(t);var A=t.length;if(rn(t)){var I=Te(t);A=I.length}if(o>=A)return t;var D=o-an(h);if(D<1)return h;var F=I?Ye(I,0,D).join(""):t.slice(0,D);if(v===u)return F+h;if(I&&(D+=F.length-D),Fi(v)){if(t.slice(D).search(v)){var K,$=F;for(v.global||(v=Qs(v.source,wt(ji.exec(v))+"g")),v.lastIndex=0;K=v.exec($);)var J=K.index;F=F.slice(0,J===u?D:J)}}else if(t.indexOf(ae(v),D)!=D){var ut=F.lastIndexOf(v);ut>-1&&(F=F.slice(0,ut))}return F+h}function Ep(t){return t=wt(t),t&&Ro.test(t)?t.replace(zi,Zc):t}var bp=hn(function(t,e,o){return t+(o?" ":"")+e.toUpperCase()}),Wi=Ea("toUpperCase");function _o(t,e,o){return t=wt(t),e=o?u:e,e===u?Xc(t)?tu(t):Fc(t):t.match(e)||[]}var Eo=bt(function(t,e){try{return ie(t,u,e)}catch(o){return Pi(o)?o:new vt(o)}}),kp=Re(function(t,e){return he(e,function(o){o=Me(o),Ce(t,o,Di(t[o],t))}),t});function Ap(t){var e=t==null?0:t.length,o=gt();return t=e?Pt(t,function(h){if(typeof h[1]!="function")throw new de(y);return[o(h[0]),h[1]]}):[],bt(function(h){for(var v=-1;++vlt)return[];var o=ct,h=$t(t,ct);e=gt(e),t-=ct;for(var v=Js(h,e);++o0||e<0)?new At(o):(t<0?o=o.takeRight(-t):t&&(o=o.drop(t)),e!==u&&(e=_t(e),o=e<0?o.dropRight(-e):o.take(e-t)),o)},At.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},At.prototype.toArray=function(){return this.take(ct)},ke(At.prototype,function(t,e){var o=/^(?:filter|find|map|reject)|While$/.test(e),h=/^(?:head|last)$/.test(e),v=E[h?"take"+(e=="last"?"Right":""):e],A=h||/^find/.test(e);v&&(E.prototype[e]=function(){var I=this.__wrapped__,D=h?[1]:arguments,F=I instanceof At,K=D[0],$=F||xt(I),J=function(kt){var Mt=v.apply(E,He([kt],D));return h&&ut?Mt[0]:Mt};$&&o&&typeof K=="function"&&K.length!=1&&(F=$=!1);var ut=this.__chain__,mt=!!this.__actions__.length,yt=A&&!ut,Et=F&&!mt;if(!A&&$){I=Et?I:new At(this);var St=t.apply(I,D);return St.__actions__.push({func:vs,args:[J],thisArg:u}),new pe(St,ut)}return yt&&Et?t.apply(this,D):(St=this.thru(J),yt?h?St.value()[0]:St.value():St)})}),he(["pop","push","shift","sort","splice","unshift"],function(t){var e=Yn[t],o=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",h=/^(?:pop|shift)$/.test(t);E.prototype[t]=function(){var v=arguments;if(h&&!this.__chain__){var A=this.value();return e.apply(xt(A)?A:[],v)}return this[o](function(I){return e.apply(xt(I)?I:[],v)})}}),ke(At.prototype,function(t,e){var o=E[e];if(o){var h=o.name+"";Ct.call(un,h)||(un[h]=[]),un[h].push({name:e,func:o})}}),un[hs(u,N).name]=[{name:"wrapper",func:u}],At.prototype.clone=_u,At.prototype.reverse=Eu,At.prototype.value=bu,E.prototype.at=th,E.prototype.chain=eh,E.prototype.commit=nh,E.prototype.next=sh,E.prototype.plant=rh,E.prototype.reverse=ah,E.prototype.toJSON=E.prototype.valueOf=E.prototype.value=oh,E.prototype.first=E.prototype.head,En&&(E.prototype[En]=ih),E},Vn=eu();Yt._=Vn,d=function(){return Vn}.call(r,a,r,l),d!==u&&(l.exports=d)}).call(this)}).call(this,a("c8ba"),a("62e4")(i))},"33e9":function(i,r,a){const c=a("4620"),l=a("b37a");class d{constructor(p,f,g={}){this.criterion=p,this.sample=f,this.getCursorOffset=g.getCursorOffset||(()=>null),this.outOfPage=g.outOfPage,this.bestNode=null,this.fineCursor=null,this.breakingSI=f.notes.length-1,this.zeroNode=l.zero(),this.zeroNode.offset=this.getCursorOffset()||0,this.relocationThreshold=g.relocationThreshold||c.RelocationThreshold}step(p){const f=this.sample.notes[p];if(f.matches.length>0){f.matches.forEach(m=>{m.evaluatePrev(this.zeroNode);for(let T=p-1;T>=Math.max(this.breakingSI+1,p-c.SkipDeep);--T){const S=this.sample.notes[T];console.assert(S,"prevNote is null:",T,p,this.sample.notes),S.matches.forEach(M=>{const C=m.offset-M.offset;C<2/c.LagOffsetCost&&C>-2/c.LeadOffsetCost&&m.evaluatePrev(M)})}if(m.prior=m.totalCost>1.99?-1:m.priorByOffset(this.zeroNode.offset),m.prior>0&&this.outOfPage){const T=this.criterion.notes[m.ci].startTick;this.outOfPage(T)&&(m.prior-=.7)}}),f.matches.sort((m,T)=>T.prior-m.prior),this.cursors=f.matches;let g=null;const y=this.nullSteps(p),x=this.cursors[0];x&&x.totalCost<1&&(x.prior>0||x.totalCost<.4&&Math.log(Math.max(y*x.value,.001))>this.relocationThreshold)&&(this.zeroNode.offset=x.offset,g=x,(!this.bestNode||x.value>this.bestNode.value)&&(this.bestNode=x)),g?this.fineCursor=g:this.resetCursor(p,{breaking:!1})||(this.zeroNode.offset+=f.deltaSi*Math.tanh(y),console.assert(!Number.isNaN(this.zeroNode.offset),"zeroNode.offset is NaN.",f.deltaSi,y))}else this.cursors=[]}path({fromIndex:p=0,toIndex:f=this.sample.notes.length-1}={}){const g=[];let y=null;for(let x=f;x>=p;){const m=this.sample.notes[x];if(!m.matches.length||m.matches[0].prior<-.01||m.matches[0].totalCost>=1){g[x]=-1,--x;continue}y!=null&&(m.matches.forEach(S=>S.backPrior=S.totalCost<1.99?S.priorByOffset(y):-1),m.matches.sort((S,M)=>M.backPrior-S.backPrior));const T=m.matches[0];T.path.forEach((S,M)=>g[M]=S),y=T.root.offset,x=T.rootSi-1}return console.assert(g.length==f+1,"path length error:",g,p,f+1,this.sample.notes.length,this.sample.notes.length?this.sample.notes[this.sample.notes.length-1].index:null),g}nullSteps(p){return p-(this.fineCursor?this.fineCursor.si:-1)-1}resetCursor(p,{breaking:f=!0}={}){f&&(this.breakingSI=p);const g=this.getCursorOffset();return g!=null?(this.zeroNode.offset=g,this.zeroNode.si=p,this.fineCursor=null,console.assert(!Number.isNaN(this.zeroNode.offset),"zeroNode.offset is NaN.",g),!0):!1}get relocationTendency(){const p=this.cursors&&this.cursors[0];if(!p)return null;const f=this.nullSteps(p.si);return f<=0?0:Math.log(Math.max(f*p.value,.001))/this.relocationThreshold}}i.exports=d},"3b0d":function(i,r){i.exports=class{constructor(){this.buffer=""}write(c){this.buffer+=c}writeInt32(c){this.buffer+=String.fromCharCode(c>>24&255)+String.fromCharCode(c>>16&255)+String.fromCharCode(c>>8&255)+String.fromCharCode(c&255)}writeInt16(c){this.buffer+=String.fromCharCode(c>>8&255)+String.fromCharCode(c&255)}writeInt8(c){this.buffer+=String.fromCharCode(c&255)}writeVarInt(c){if(c<0)throw new Error("OStream.writeVarInt minus number: "+c);const l=c&127;c>>=7;let d=String.fromCharCode(l);for(;c;){const u=c&127;c>>=7,d=String.fromCharCode(u|128)+d}this.buffer+=d}getBuffer(){return this.buffer}getArrayBuffer(){return Uint8Array.from(this.buffer.split("").map(c=>c.charCodeAt(0))).buffer}}},"3b97":function(i,r){const a=(d,{timeWarp:u=1}={})=>{const p=[];let f=120;const g=d.header.ticksPerBeat;for(let S=0;S0&&(M=x.ticksToEvent/g/(f/60)),x.event.type=="meta"&&x.event.subtype=="setTempo"&&(f=6e7/x.event.microsecondsPerBeat);const C=M*1e3*u||0;m.push([x,C]),x=y()}if(x=y())for(;x;)S()}return T(),m},c=d=>{const u=new Map;return d.filter(([{event:p,ticksToEvent:f}])=>{if(f>0&&u.clear(),p.type!=="channel")return!0;const g=`${p.subtype}|${p.channel}|${p.noteNumber}`;return u.get(g)?!1:(u.set(g,p),!0)})},l=d=>{const u=new Map,p=new Map,f=[];let g=-1;return d.forEach(([{event:y,ticksToEvent:x}],m)=>{if(x>0&&(g=m),y.type!=="channel")return;const T=`${y.channel}|${y.noteNumber}`;switch(y.subtype){case"noteOn":u.get(T)?p.set(T,g):u.set(T,g);break;case"noteOff":p.get(T)?(f.push([p.get(T),m]),p.delete(T)):u.delete(T);break}}),f.forEach((y,x)=>{for(let m=x-1;m>=0;--m){const T=f[m];if(T[1]T[0]&&++y[0]}}),f.forEach(([y,x])=>{if(x>=d.length-1||y<0)return;const m=d[x],T=d[x+1],S=d[y];if(!S[0].ticksToEvent){console.warn("invalid front index:",y,x,S);return}const M=S[1]/S[0].ticksToEvent;T[1]+=m[1],T[0].ticksToEvent+=m[0].ticksToEvent,m[0].ticksToEvent=S[0].ticksToEvent-1,S[0].ticksToEvent=1,m[1]=m[0].ticksToEvent*M,S[1]=S[0].ticksToEvent*M,d.splice(x,1),d.splice(y,0,m)}),d};i.exports={midiToSequence:a,trimSequence:c,fixOverlapNotes:l}},4620:function(i,r){i.exports={CostStepAttenuation:.6,SkipDeep:3,PriorDistanceSigmoidFactor:.1,PriorValueSigmoidFactor:.12,SkipCost:.5,LagOffsetCost:1,LeadOffsetCost:1.6,ZeroOffsetCost:.58,RelocationThreshold:6}},"4a2c":function(i,r,a){const c=a("3b0d");i.exports=function({header:d,tracks:u}){function p(x,m,T){console.assert(m.length===4,"chunk id must be 4 byte"),x.write(m),x.writeInt32(T.length),x.write(T)}function f(x,m){if(m.subtype!=="unknown")switch(x.writeVarInt(m.deltaTime),m.type){case"meta":switch(x.writeInt8(255),m.subtype){case"sequenceNumber":x.writeInt8(0),x.writeVarInt(2),x.writeInt16(m.number);break;case"text":x.writeInt8(1),x.writeVarInt(m.text.length),x.write(m.text);break;case"copyrightNotice":x.writeInt8(2),x.writeVarInt(m.text.length),x.write(m.text);break;case"trackName":x.writeInt8(3),x.writeVarInt(m.text.length),x.write(m.text);break;case"instrumentName":x.writeInt8(4),x.writeVarInt(m.text.length),x.write(m.text);break;case"lyrics":x.writeInt8(5),x.writeVarInt(m.text.length),x.write(m.text);break;case"marker":x.writeInt8(6),x.writeVarInt(m.text.length),x.write(m.text);break;case"cuePoint":x.writeInt8(7),x.writeVarInt(m.text.length),x.write(m.text);break;case"midiChannelPrefix":x.writeInt8(32),x.writeVarInt(1),x.writeInt8(m.channel);break;case"endOfTrack":x.writeInt8(47),x.writeVarInt(0);break;case"setTempo":x.writeInt8(81),x.writeVarInt(3),x.writeInt8(m.microsecondsPerBeat>>16&255),x.writeInt8(m.microsecondsPerBeat>>8&255),x.writeInt8(m.microsecondsPerBeat&255);break;case"smpteOffset":x.writeInt8(84),x.writeVarInt(5);var T={24:0,25:32,29:64,30:96}[m.frameRate];x.writeInt8(m.hour|T),x.writeInt8(m.min),x.writeInt8(m.sec),x.writeInt8(m.frame),x.writeInt8(m.subframe);break;case"timeSignature":x.writeInt8(88),x.writeVarInt(4),x.writeInt8(m.numerator),x.writeInt8(Math.log2(m.denominator)),x.writeInt8(m.metronome),x.writeInt8(m.thirtyseconds);break;case"keySignature":x.writeInt8(89),x.writeVarInt(2),x.writeInt8(m.key),x.writeInt8(m.scale);break;case"sequencerSpecific":x.writeInt8(127),x.writeVarInt(m.data.length),x.write(m.data);break;default:throw new Error("unhandled event subtype:"+m.subtype)}break;case"sysEx":x.writeInt8(240),x.writeVarInt(m.data.length),x.write(m.data);break;case"dividedSysEx":x.writeInt8(247),x.writeVarInt(m.data.length),x.write(m.data);break;case"channel":switch(m.subtype){case"noteOn":x.writeInt8(144|m.channel),x.writeInt8(m.noteNumber),x.writeInt8(m.velocity);break;case"noteOff":x.writeInt8(128|m.channel),x.writeInt8(m.noteNumber),x.writeInt8(m.velocity?m.velocity:0);break;case"noteAftertouch":x.writeInt8(160|m.channel),x.writeInt8(m.noteNumber),x.writeInt8(m.amount);break;case"controller":x.writeInt8(176|m.channel),x.writeInt8(m.controllerType),x.writeInt8(m.value);break;case"programChange":x.writeInt8(192|m.channel),x.writeInt8(m.programNumber);break;case"channelAftertouch":x.writeInt8(208|m.channel),x.writeInt8(m.amount);break;case"pitchBend":x.writeInt8(224|m.channel),x.writeInt8(m.value&255),x.writeInt8(m.value>>7&255);break;default:throw new Error("unhandled event subtype:"+m.subtype)}break;default:throw new Error("unhandled event type:"+m.type)}}const g=new c,y=new c;y.writeInt16(d.formatType),y.writeInt16(u.length),y.writeInt16(d.ticksPerBeat),p(g,"MThd",y.getBuffer());for(let x=0;x=this.array.length}read(c){const l=this.array.slice(this.position,this.position+c);return this.position+=c,l}readString(c){return Array.from(this.read(c)).map(d=>String.fromCharCode(d)).join("")}readInt32(){const c=(this.array[this.position]<<24)+(this.array[this.position+1]<<16)+(this.array[this.position+2]<<8)+this.array[this.position+3];return this.position+=4,c}readInt16(){const c=(this.array[this.position]<<8)+this.array[this.position+1];return this.position+=2,c}readInt8(c){let l=this.array[this.position];return c&&l>127&&(l-=256),this.position+=1,l}readVarInt(){let c=0;for(;;){const l=this.readInt8();if(l&128)c+=l&127,c<<=7;else return c+l}}}},"62e4":function(i,r){i.exports=function(a){return a.webpackPolyfill||(a.deprecate=function(){},a.paths=[],a.children||(a.children=[]),Object.defineProperty(a,"loaded",{enumerable:!0,get:function(){return a.l}}),Object.defineProperty(a,"id",{enumerable:!0,get:function(){return a.i}}),a.webpackPolyfill=1),a}},8875:function(i,r,a){var c,l,d;(function(u,p){l=[],c=p,d=typeof c=="function"?c.apply(r,l):c,d!==void 0&&(i.exports=d)})(typeof self<"u"?self:this,function(){function u(){if(document.currentScript)return document.currentScript;try{throw new Error}catch(w){var p=/.*at [^(]*\((.*):(.+):(.+)\)$/ig,f=/@([^@]*):(\d+):(\d+)\s*$/ig,g=p.exec(w.stack)||f.exec(w.stack),y=g&&g[1]||!1,x=g&&g[2]||!1,m=document.location.href.replace(document.location.hash,""),T,S,M,C=document.getElementsByTagName("script");y===m&&(T=document.documentElement.outerHTML,S=new RegExp("(?:[^\\n]+?\\n){0,"+(x-2)+"}[^<]* - - + +
diff --git a/seed-data.sql.gz b/seed-data.sql.gz index 712379f746f194f01e1ed219dc5a0dc116b0d950..f4d97af79128917cc5ac233262c976998addbef3 100644 --- a/seed-data.sql.gz +++ b/seed-data.sql.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e4723bddf2dad036a8f29cf64bcde20b5109ae2bff65d9275d64860a7dc5886 -size 4193792 +oid sha256:8c499af0a7c5a416081d23e06fdf4a61517a3b82513c3d0cb7160592903a8d9a +size 63430331 diff --git a/seed-uploads.tar.gz b/seed-uploads.tar.gz index 82873b96f8716574bb5d9da054e15fa97a6c0b0e..8b4ff6360ef54bc223d1e7f1b98dd3bd22020f84 100644 --- a/seed-uploads.tar.gz +++ b/seed-uploads.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c45caa90ca7a0f34916f2873280492aac981fc9b62d12746110466ffef27108f -size 17651268 +oid sha256:28c65e8bf575fa51c14b19a0172e8dc58b6bdb4ba6f16b967269ed5859c09fa9 +size 39579933